| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 数据链路层 -> 正文阅读 |
|
[网络协议]数据链路层 |
目录 第三章? ? 数据链路层?局域网属于数据链路层的范围,在本章中我们研究的是在同一局域网中,分组怎样从一台主机传送到另一台主机。 数据链路层使用的信道主要有以下两种类型: (1)点对点信道:这种信道使用一对一的点对点通信方式 (2)广播信道:这种信道使用一对多的广播通信方式 本章最主要的内容是:
下面看一下两台主机进行通信时数据链路层所处的地位: ?数据从主机H1传送到主机H2需要在路径中的各节点的协议栈向上和向下流动多次,如图中的浅灰色箭头表示。 然而当我们专门研究数据链路层问题时,在许多情况下我们可以只关心在协议栈中水平方向的个数据链路层。于是,当主机H1向主机H2发送数据时,我们可以想象数据就是在数据链路层从左向右水平方向传送。如下图的粗箭头所示: ?其中,这四段不同的链路层可能采用不同的数据链路协议。 3.1 数据链路层的几个共同问题本节重点讨论使用点对点信道的数据链路层的一些基本问题。 3.11 数据链路和帧首先明确“链路”和“数据链路”的基本概念 所谓链路就是从一个节点到相邻节点的一段物理线路(有线或无线),而中间没有任何的交换节点 数据链路则是另一个概念,我们知道当数据在信道上传输时,除了需要一条物理线路外,还需要一些必要的通信协议来控制这些数据的传输。若把实现这些协议的软件和硬件加到链路上,就构成了数据链路。现在最常用的方法是使用网络适配器来实现这些协议。
为了把主要精力放在点对点信道通信上,可以采用如下图所示的三层模型,不管在哪一段链路上的通信(主机和路由器之间或者两个路由器之间),我们都看成节点和节点的通信,而每个节点只有三层——网络层,数据链路层和物理层。? 点对点信道的数据链路层在进行通信时的主要步骤如下: (1)节点A的数据链路层在吧网络层交下来的IP数据报添加首部和尾部封装成帧。 (2)节点A吧封装好的帧发送给节点B的数据链路层。 (3)若节点B的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报交给上面的网络层,否则丢弃掉这个帧。 数据链路层不必考虑物理层如何实现比特传输的细节。我们甚至可以更简单的设想好像是沿着两个数据链路层之间的水平方向吧帧直接发送给对方。 3.1.2? ? 三个基本问题这三个基本问题是:封装成帧,透明传输,差错检测。下面分别讨论这三个基本问题 1.封装成帧 封装成帧就是在一段的数据的前后分别添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。 我们知道,分组的一个重要概念是:所有在互联网上传送的数据都以分组(即IP数据报)为传送单位。网络层的IP数据报传送到数据链路层就成为帧的数据部分。在帧的数据部分的前面和后面分别添加上首部和尾部,构成了一个完整的帧。这样的帧就是数据链路层的数据传送单元。 一个帧的帧长等于帧的数据部分长度加上帧的首部和帧的尾部长度。首部和尾部的一个重要作用就是进行帧定界。此外,首部和尾部还包括许多必要的控制信息。在发送帧时,是从帧的首部开始发送的。显然,为了提高帧的传输效率,应当使帧的数据部分长度尽可能的大于首部和尾部的长度。但是,每一种链路层协议都规定了所能传送的帧的数据部分长度上限——最大传送单元MTU(Maximum Transfer Unit). ?各种数据链路层协议对帧的首部和尾部的格式有明确的规定。当数据是可由可打印的ASCLL码组成的文本文件时,帧界定可以使用特殊的帧定界符。如下图所示,控制字符SOH(Start Of Header)放在帧的最前面,表示帧的首部开始。另一个控制字符EOT表示帧的结束。 假定发送端在尚未发送完一个帧时就突然出了故障,由于使用了帧界定符,接收端就知道前面收到的数据?是一个不完整的帧,必须丢弃。于是从头开始发送刚才未发送完成的帧。 2.透明传输 透明指的是:某一个实际存在的事物看起来却好像不存在一样。“在数据链路层透明传送数据”表示无论什么样的比特组合的数据,都能够按照原样没有差错的通过这个数据链路层。 当传送的帧是用文本文件组成的帧时,其数据部分不会有SOH或EOT这样的帧界定控制字符。由此可见,这样的传输就是透明的,即不管从键盘上输入什么字符都可以放在这样的帧中传输过去。 但当数据部分是非ASCLL码的文本文件时,情况就不同了。如果数据中的某个字节的二进制代码恰好和SOH或EOT这种控制字符一样的话,数据链路层就会错误的找到帧的边界,把部分帧收下,而把剩下的数据丢掉。 ?显然,这种情况就不是透明传输。 为了解决透明传输问题,具体方法是: 字节填充(或字符填充):在数据中出现控制字符SOH或EOT的前面插入一个转义字符ESC。而在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。 如果转义字符也出现在数据当中,那么解决方法依然是在转义字符的前面插入一个转义字符。因此,当接收端收到连续的两个转义字符时,就删除前面的一个。 3.差错检测 现实情况下,比特在传输的过程中可能会产生差错:1变0,0变1.这就叫做:比特差错。在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率。误码率和信噪比有很大的关系,如果设法提高信噪比,就可以使误码率减小。但是误码率不可能降到0.因此,为了保证数据传输的可能性,必须采用各种差错检测的方法。目前在数据链路层广泛使用了循环冗余检验的检错技术。 下面简述循环冗余检验的原理:
冗余码是如何得到的呢?简单的说:用二进制的模二运算进行2的n次方乘M的运算,这相当于在M后面添加n个0.得到的(k+n)位的数除以收发双方事先商定的长度为(n+1)位的除数P,得出商是Q而余数是R,这个余数R就作为冗余码拼接在M的后面发送出去。冗余码常称为:帧检验序列FCS(Frame Check Sequence). 在接收端对收到的每一帧经过CRC检验之后,有以下两种情况: (1)若得出的余数R=0,则判定这个帧没有差错,就接受。 (2)若余数R≠0,则判定这个帧有差错,就丢弃。
?最后再强调一下,在数据链路层若仅仅使用循环冗余检验CRC差错检测技术,则只能做到对帧的无差错接收。属于不可靠传输。 所谓可靠传输,指的是:数据链路层的发送端发送什么,在接收端就收到什么。 如果要实现可靠传输,需要在CRC基础上,增加帧编号,确认和重传机制 传输差错可分为两大类:一种是前面说过的最基本的比特差错,而另一类就是收到的帧并没有出现比特差错,但却出现了帧丢失,帧重复,帧失序。由此我们知道了“无比特差错”和“无传输差错”并不是同样的概念。 3.2? ? 点对点协议PPP对于点对点的链路,点对点协议ppp则是目前使用的最广泛的数据链路层协议。 3.2.1? ? PPP协议的特点互联网用户通常都要连接到某个ISP才能接入到互联网。PPP协议就是用户计算机和ISP进行通信时所使用的数据链路层协议。 1.PPP协议应满足的需求? (1)简单 :接收方每收到一个帧,就进行CRC检验。如CRC检验正确,就收下这个帧;反正,就丢弃这个帧,其他什么也不做。 (2)封装成帧:PPP协议必须规定特殊的字符作为帧定界符,以便使接收端从收到的比特流中能够准确地找出帧开始和结束的位置。 (3)透明性:PPP协议必须保证数据传输的透明性。这就是说,如果数据中碰巧出现了和帧定界符一样的比特组合时,就要采取有效的措施来解决这个问题。 (4)多种网络层协议:PPP协议必须能够在同一条物理链路上同时支持多种网络层协议的运行 (5)多种类型链路 :PPP协议必须能够在多类型的链路上运行。 (6)差错检测?:PPP协议必须能够对接收端收到的帧进行检测,并立即丢弃有差错的帧 (7)检测连接状态:PPP协议必须有一种机制能够及时自动检测出链路是否处于正常工作状态。 (8)最大传送单元:PPP协议必须对每一种类型的点对点链路设置最大传送单元MTU的标准默认值。 (9)网络层地址协商:PPP协议必须提供一种机制使通信的两个网络层的实体能够通过协商知道或能够配置彼此的网络层地址。 (10)数据压缩协商?:PPP协议必须提供一种方法来协商使用数据压缩算法。但并不要求该算法进行标准化。 2.PPP协议的组成 PPP协议由三部分组成 (1)一个将IP数据报封装到串行链路的方法。 (2)一个用来建立,配置和测试数据链路连接的链路控制协议LCP。 (3)一套网络控制协议NCP,其中每一个协议支持不同的网络层协议。 3.2.2? ? PPP协议的帧格式1.各字段的意义 PPP帧的首部和尾部分别为四个字段和两个字段。 ?首部的第一个字段和尾部的第一个字段都是标志字段,规定为0x7E。标志字段表示一个帧的开始和结束。首部中的地址字段A规定为0xFF,控制字段C规定为0x03。PPP首部的第四个字段是2字节的协议字段。信息字段的长度是可变的,不超过1500字节。尾部中的第一个字段是使用CRC的帧检验序列FCS。 2.字节填充 当信息段中出现和标志字段一样的比特组合时,就必须采用一些措施使这种形式上和标志字段一样的比特组合不出现在信息字段中。 当PPP使用异步传输(逐个字符地传送)时,它把转义符定义为0x7D,并使用字节填充,具体填充方法为: (1)把信息字段中出现的每一个0x7E字节转变成2字节序列(0x7D,0x5E) (2)若信息字段中出现一个0x7D的字节,则把0x7D转变成为2字节序列(0x7D,0x5D) (3)若信息字段中出现ASCLL码的控制字符,则在该字符前面要加入一个0x7D字节,同时把该字符的编码加以改变。 3.零比特填充 当PPP使用同步传输(一连串的比特连续传送)时,PPP协议采用零比特填充方法来实现透明传输。具体做法是: 在发送端,先扫描整个信息字段,只要发现有5个连续的1,则立即填入一个0.接收端在收到一个帧时,先找到标志字段F以确定一个帧的边界,接着再用硬件对其中的比特流进行扫描。每当发现连续的5个1时,就把这5个连续1后的一个0删除,以还原成原来的比特信息流。这样就保证了透明传输。 3.2.3? ? PPP协议的工作状态PPP链路一开始是怎样被初始化的? 当用户拨号接入ISP后,就建立了一条从用户个人电脑到ISP的物理连接。这时,用户个人电脑向ISP发送一系列的链路控制协议LCP分组,以便建立LCP连接。这些分组及其响应选择了将要使用的一些PPP参数。接着还要进行网络层配置,网络控制层协议NCP给新接入的用户个人电脑分配一个临时的IP地址。当用户通信完毕时,NCP释放网络层连接,收回原来分配出去的IP地址。接着,LCP释放数据链路层连接。最后释放的是物理层的连接。 上面的过程可用如下图来表示: ?上图右方的灰色方框给出了对PPP协议的几个状态的说明。从设备之间无链路开始,到先建立物理链路,再建立链路控制协议LCP链路。经过鉴别后再建立网络控制协议NCP链路,然后才能交换数据。由此可见,PPP协议已不是纯粹的数据链路层的协议,它还包含了物理层和网络层的内容 3.3? ? 使用广播信道的数据链路层广播信道可以进行一对多的通信。下面要讨论的局域网使用的就是广播信道。 3.3.1? ? 局域网的数据链路层局域网最主要的特点是:网络为一个单位所拥有,且地理范围和站点数目均有限。 局域网具有如下的一些优点: (1)具有广播功能,从一个站点可很方便地访问全网。 (2)便于系统的拓展和逐渐地演变,各设备的位置可灵活调整和改变。 (3)提高了系统的可靠性,可用性和生存性。 局域网可按网络拓扑进行分类: (a)是星形网,由于集线器的出现和双绞线大量用于局域网中,星型以太网以及多级星型以太网获得了非常广泛的应用。 (b)是环形网 (c)是总线网 ?现在以太网已成为了局域网的同义词。 局域网可使用多种传输媒介,其中,双绞线以成为局域网中的主流传输媒介。 必须指出,局域网工作的层次跨越了数据链路层和物理层。 共享信道要着重考虑的一个问题就是如何使众多用户能够合理而方便的共享通信媒体资源。这在技术上有两种方法: (1)静态划分信道。如频分复用,时分复用,波分复用和码分复用等。用户只要分配到了信道就不会和其他用户发生冲突。但这种划分信道的方法代价较高,不适用于局域网的使用。 (2)动态媒体接入控制,它又称为多点接入,其特点是信道并非在用户通信时固定分配给用户。这里又分为以下两类:
属于随机接入的以太网将被重点讨论 1.以太网的两个主要标准 为了使数据链路层能更好的适应多种局域网标准,IEEE 802 委员会就把局域网的数据链路层拆成了两个子层,即逻辑链路控制LLC子层和媒体接入控制MAC子层。与接入到传输媒体有关的内容都放在MAC子层,而LLC子层则与传输媒体无关,不管何种传输媒体和MAC子层的局域网对LLC子层来说都是透明的。 目前,LLC的作用已经消失了,很多厂商生产的适配器上就仅装有MAC协议而没有LLC协议。 2.适配器的作用? 计算机与外界局域网的连接是通过适配器。 适配器与局域网之间的通信是通过电缆或者双绞线以串行方式进行的,而适配器和计算机之间的通信是通过计算机主板上的I/O总线以并行方式进行的。因此,适配器的一个重要功能就是要进行数据串行传输和并行传输的转换。适配器还要能实现以太网协议 3.3.2? ? CSMA/CD协议总线的特点是:当一台计算机发送数据时,总线上的所有计算机都能检测到这个数据,这种就是广播通信方式。 但我们并不总是要在局域网上进行一对多的广播通信。为了在总线上实现一对一的通信,可以使每一台计算机的适配器都拥有一个与其他适配器都不同的地址。当 数据帧中的目的地址与适配器ROM中存放的硬件地址一致时,该适配器才能接受到这个数据帧。否则就丢弃。 为了通信方便,以太网采取了以下两种措施: 第一,采用较为灵活的无连接方式,即不必先建立连接就可以直接发送数据。优点是:使以太网工作以来非常简单。 第二,以太网发送的数据都使用曼切斯特编码的信号。优点是:保证了在每一个比特的正中间出现一次电压的转换,而接收端就利用这种电压的转换很方便的把位同步信号提取出来。缺点是:它所占的频带宽度比原始的基带信号增加了一倍。 CSMA/CD协议的要点:“多点接入,载波接听,碰撞检测” |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 4:54:20- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |