第三章 数据链路层
①本层功能&对应协议(提供的服务&对应设备)
数据链路层的功能:数据链路层是在物理层和网络层之间的协议,提供相邻节点之间的可靠传输。
对应协议:PPP协议(点对点信道)、CSMA/CD协议(广播信道)
提供的服务:即可提供可靠服务,也可提供不可靠服务。
现在互联网就采取区别对待的方法 :
对于通信质量良好的有线传输链路, 数据链路层协议不使用确认和重传机制,即不要求数据链路 层向上提供可靠传输的服务。如果在数据链路层传输数据时出现了差错并且需要进行改正, 那么 改正差错的任务就由上层协议(例如,运输层的TCP协议 )来完成。
对于通信质量较差的无线传输链路,数据链路层协议使用确认和重传机制,数据链路层向上提供可 靠传输的服务。
对应的设备:网桥或桥接器,以及交换机。
加强记忆:
②三个基本问题,以及各自的含义和实现方式
数据链路层协议有许多种,但有三个基本问题则是共同的。这三个基本问题是: 封装成帧 、 透明传输和差错检测 。
(1)封装成帧:
封装 成帧( framing)就是在一段数据的前后分别添加首部和尾部 , 这样就构成 了 一个帧。
接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记 ,从收到的比特流中识别帧的开始和结束。
显然 ,为了帧的传输效率,应当使帧的数据部分长度尽可能地大于首部和尾部的长度。 但是,每一 种链路层协议都规定了所能传送的帧的数据部分长度上限最大传送单元MTU。
实现方式:当数据是由可打印的ASCII码组成的文本文件时,帧定界可以使用特殊的帧定界符。控制字符SOH( Start Of Header)放在一 帧的最前面,表示帧的首部开始 。另 一个控制字符 EOT (En d Of Tran smi s sion)表示帧的结束。请注意 ,SOH 和 EOT 都是控制字符的名称。 它们的十六进制编码分别是 01( 二 进制是 00000001 ) 和 04(二进制是 00000100)。 SOH( 或 EOT ) 并是
S, 0, H(或 E, 0, T ) 三个字符。
(2)透明传输
由于帧的开始和结束的标记使用专门指明的控制字符,因此,所传输的数据中的任何8比特的组合一定不允许和用作帧定界的控制字符的比特编码一样,否则就会出现帧定界的错误。
透明传输,说明不管从键盘上输入什么字符都可以放在含帧定界符的帧中传输过去。对所传送的数据来说, 这些数据就 “ 看不见 “ 数据链路层有什么妨碍数据传输的东 西。或者说, 数据链路层对这些数据来说是透明的。
实现方法:发送端的数据链路层在数据中出现控制字符“ SOH ” 或 “ EOT " 的前面插入一个转义字 符 “ ESC " (其 十 六 进制 编 码 是 lB , 二 进制是00011011)。而在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。 这种方法称为字节填充(byte stuffing)或字符填充( character stuffing)。如果转义字符也出现在数据当中,那么解决方法仍然是在转义字符的前面插入一个转义字符。因 此,当接收端收到连续的两个转义字符时,就删除其中前面的一个。
(3)查错检测:
为了保证数据传输的可靠性,在计算机网 络传输数据时,必须采用各种差错检测措施。这里的差错是指“比特差错”。
实现方式:
将要传输的数据M进行循环冗余检验CRC,将得到的余数作为冗余码拼接在M的后面发送出去。这种为了进行检错而添加的冗余码常称为帧检验序列FCS ( Frame Check Sequen ce)。
③循环冗余检验CRC的计算(用于生成帧校验序列FCS)
步骤:
1. 确定生成多项式
事先约定好一个二进制多项式作为生成多项式,例如CRC-8对应的生成多项式为 x^8+x^2+x^1+x^0,其二进制表示为100000111。
2. 数据处理
- 假设要发送的数据为M,先确定生成多项式的次数(最高次幂)r。
- 然后在数据M的末尾添加r个0。比如上式选用的CRC-8,次数为16,就在M后面添加16个0,得到新的数据M’。
3. 进行除法运算
新数据M'当作被除数,将生成多项式的二进制表现形式当作除数,进行模2除法(每一次的新得的商都与当前被除数的首位相同,被除数与除数相异为1,相同为0。得出来的结果去首位加末位)。
4. 得到余数
经过上述除法运算后,最终得到的余数R(比除数少一位)就是CRC校验码。例如,若生成多项式是CRC-16,那么余数R有15个比特。
补充:接收端如何判断收到的数据是否可靠?
将得到的FCS与除数进行模2除法,若余数为0,则证明数据可靠;反之,不可靠。
④独占链路协议&共享链路协议
独占链路协议
在数据通信过程中,一条链路在某一时刻通常只允许一对节点进行通信的协议。下面将详细介绍 PPP 协议作为独占链路协议的相关情况:
PPP协议应满足的需求:
(1)简单:对数据链路层的帧,不需要纠错,不需要序号,也不需要流星控制。接收方每收到一
个帧,就进行CRC检验。如果CRC 检验正确,就收下这个帧;反之 ,就丢弃这个帧,其他什么也不做。
(2)封装成帧:这是前面提到的数据链路层协议都有的三个基本问题之一。PPP协议必须规定特 殊的字符作为帧定界符(即标志一个帧的开始和结束的字符),以 便使接收端从收到的比特流能 准确地找出帧的开始和结束位置。
(3)透明性: 同上哦,PPP协议必须保证数据传输的透明性。
(4)多种网络层协议:PPP协议必须能够在同一 条物理链路上同时支持多种网络层协议(如 IP和IPX 等)的运行。
(5)多种类型链路:除了要支持多种网络层的协议外,PPP还必须能够在多种类型的链路上行。
(6)差错检测:PPP协议必须能够对接收端收到的帧进行检测, 并立即丢弃有差错的帧。
(7)检测连接状态:PPP协议必须具有一种机制能够及时(不超过几分钟 ) 自动检测出链路是 否处于正常工作状态。
(8)最大传输单元:MTU最大数值
(9)网络层地址协商:PPP协议必须提供一种机制使通信的两个网络层(例如,两个IP 层)的实体能够通过协商知道或能够配置彼此的网络层地址。
(10)数据压缩协商:
PPP协议必须提供 一种方法来协商使用数据压缩算法。但 PPP协议并不要求将数据压缩算法进行标准化。
PPP协议的帧格式
1.各字段的意义
PPP 帧的首部和尾部分别为四个字段和两个字段。
首部的第一个字段和尾部的第二个字段(其实就是帧头和帧尾)都是标志字段 F( Flag), 规定为 Ox7E( 十六进制的7E的二进制表示是01111110 )。标志字段表示一个帧的开始或结束。因此标志字段就是 PPP 帧的定界符。
信息字段的长度是可变的,不超过1500字节。
尾部中的第一个字段(2字节)是使用CRC的帧检验序列FCS。
PPP首部的第四个字段是2字节的协议字段。当协议字段为0x0021时,PPP帧的信息字段就是IP数据报。
信息字段的长度是可变的,不超过1500字节。
尾部中的第一个字段(2字节)是使用CRC的帧检验序列FCS。
2.字节填充
转义字符:0x7D
1) 将信息字段中出现的每一个0x7E字节转变为2字节序列(0x7D, 0x5E)。
2) 若信息字段中出现一个0x7D的字节(即出现了和转义字符一样的比特组合),则将0x7D转变为2字节序列(0x7D, 0x5D)。
3) 若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。例如,出现0x03(在控制字符中是“传输结束”ETX)就要把它转变为2字节序列(0x7D, 0x23)。
3.零字节填充
共享链路协议
共享链路协议是指在数据通信网络中,多个设备可以共同使用同一条物理链路来进行数据传输的协议。下面将详细介绍 以太网协议作为共享链路协议的相关情况:
CSMA/CD协议的要点(半双工通信)
(1)载波监听
就是"边发送边监听"。载波监听就是不管在想要发送数据之前,还是在发送数据之中,每个站都必须不停地检测信道。
(2)冲突检测
在发送前检测信道,是为了避免冲突。如果检测出已经有其他站在发送,则本站就暂时不要发送数据。在发送中检测信道,是为了及时发现如果有其他站也在发送,就立即中断本站的发送。这就称为碰撞检测。
(3)二进制指数退避
这种算法让发生碰撞的站在停止发送数据后,不是等待信道变为空闲后就立即再发送数据,而是退避一个随机的时间。为了尽可能减小重传时再次发生冲突的概率,退避算法有如下具体的规定:
1.基本退避时间为争用期2r,具体的争用期时间是51.2μs。对于10 Mbit/s以太网,争用期内可发送512比特,即64字节。也可以说争用期是512比特时间。
2.从离散的整数集合[0, I, ..., (2^k-1)]中随机取出一个数,记为r。重传应推后的时间就是r倍的争用期。上面的参数K按下面的公式(3-1)计算:
k = Min[重传次数,10]
可见当重传次数不超过10时,参数K等于重传次数;但当重传次数超过10时,K就不再增大而一直等于10。
3.当重传达16次仍不能成功时(这表明同时打算发送数据的站太多,以致连续发生冲突),则丢弃该帧,并向高层报告。
(4)多点随机接入
是说明这是总线型网络 ,许多计算机以多点接入的方式连接在一根总线上。
*****⑤以太网协议工作原理
载波监听,冲突检测,二进制指数退避
⑥数据帧最大帧长、最短帧长分别是多少,设置意义何在?
数据帧的最大帧长是1500字节,最短帧长是64字节。
设置最大帧长的意义:
(一)避免接收方缓冲区溢出
当发送方发送的帧过长时,就可能导致接收方的缓冲区无法容纳这么长的帧,从而出现缓冲区溢出的情况,进而导致数据丢失或处理出错。
(二)适配网络设备处理能力
不同的网络设备(如交换机、路由器等)在处理数据帧时,其内部的硬件和软件处理机制都有一定的限制。通过设置最大帧长,使得网络设备所接收到的帧都在其能够有效处理的范围内,保证了网络设备的正常运行和数据的顺畅传输。
(三)保证网络传输效率
设置最大帧长可以让各个设备发送的数据帧长度相对均衡,避免出现某个设备长时间独占传输链路的情况,从而提高整个网络的传输效率。
设置最短帧长的意义:
某个站发送了一个很短的帧,但在发送完毕(太短了没检测出来)之前并没有检测出碰撞。假设这个帧在继续向前传播到达目的站之前和别的站发送的帧发生了碰撞,因而目的站将收到有错误的帧(当然会把它丢弃)。可是发送站却不知道这个帧发生了碰撞,因而不会重传这个帧。因此,以太网规定了一个最短帧长64字节,即512比特。如果要发送的数据非常少,那么必须加入一些填充字节,使帧长不小于64字节。
⑦冲突域&广播域
冲突域的个数看交换机的连线的个数,广播域的个数看路由器的连线的个数。
⑧Hub、交换机、Router在哪层工作
Hub(集线器):物理层
交换机:数据链路层
Router(路由器):网络层
⑨交换机(网桥)的自学习&转发算法
网桥对收到的帧根据其MAC帧的目的地址进行转发和过滤。而交换机实际上是一个多端口的网桥,以太网交换机的每个端口都直接与一个单台主机或另一个以太网交换机相连,并且一般都工作在全双工方式。以太网交换机还具有并行性,即能同时连通多对端口,使多对主机能同时通信(而网桥只能一次分析和转发一个帧)。相互通信的主机都独占传输媒体,无碰撞地传输数据。
以太网交换机是一种即插即用设备,其内部的帧交换表(又称为地址表)是通过自学习算法自动地逐渐建立起来的。
原谅我不想打字了~~~~~
标签:协议,字节,希仁,第三,计算机网络,PPP,链路,数据,链路层 From: https://blog.csdn.net/2301_80301697/article/details/143995690