计算机网络数据链路层
Posted WeaterMr
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络数据链路层相关的知识,希望对你有一定的参考价值。
概念
在一条链路上传输数据时,需要有对应的通信协议来控制数据的传输 ,不同类型的数据链路,所用的通信协议可能是不同的
数据链路层把网络层交下来的数据(网络层的PDU是IP数据报或叫分组,包)构成帧发送到链路上,以及把接受到的帧中的数据取出来并上交给网络层
- 广播信道:
CSMA/CD
协议(比如同轴电缆、集线器等组成的网络) - 点对点信道:
PPP
协议(比如2个路由器之间的信道)
数据链路层需要解决三个基本问题:
- 封装成帧
- 透明传输
- 差错检验
封装成帧
封装成帧 (framing) 就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧
帧
(Frame)的数据部分 :网络层传递下来的数据包(IP数据包,Packet
)- 最大传输单元
MTU
(Maximum Transfer Unit) :以太网的MTU为1500个字节
- 封装成帧目的:在互联网上传送的数据都以分组(IP数据报)为传送单位,而网络层的下一层是数据链路层,将分组加上首部和尾部就变成了帧。首部和尾部的一个重要作用就是
帧定界
(确定帧的界限),当然也包括一些重要的控制信息。 提高帧的传输效率
:数据部分(IP数据报)尽可能地大于首部和尾部的长度。
透明传输
所谓的透明传输是指在数据链路层传送的数据,都能够按照原样没有差错的通过这个数据链路层。也就是相当于数据链路层对于这些数据是透明的。
- 使用
SOH
(Start Of Header)作为帧开始符 - 使用
EOT
(End Of Transmission)作为帧结束符 - 数据部分一旦出现了SOH、EOT,就需要进行
转义
透明传输帧定界错误与冲突解决方案
解决方法:
字节填充 (byte stuffing) 或字符填充 (character stuffing)。在控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC” (其十六进制编码是 1B)。接收端在送往网络层之前删除插入的转义字符。 如果转义字符也出现在数据当中,这时在转义字符前面在插入一个转义字符ESC
。当接收端收到连续的两个转义字符时,就删除前面的一个。
差错检测
这里所说的“差错”是“比特差错”,1 可能会变成 0 而 0 也可能变成 1。 为了保证数据传输的可靠性,采用各种差错检测。
- 数据链路层帧,广泛使用了循环冗余检验
CRC
的检错技术。在数据后面添加上的冗余码称为帧检验序列FCS
(Frame Check Sequence)。FCS
是根据数据部分 + 首部计算得出的 CRC
检验,能够实现无比特差错的传输,但这还不是可靠传输(还需加入确认和重传的机制以防止帧丢失、帧重复和帧失序)。- 仅用
CRC
差错检测技术只能做到无差错接受 (accept)。“无比特差错”与“无传输差错”是不同的概念。 FCS
紧挨着帧结束符
CSMA/CD 协议
CSMA/CD(Carrier Sense Multiple Access with Collision Detectio)
-
载波侦听多路访问/冲突检测
-
使用了
CSMA/CD
的网络可以称为是以太网(Ethernet)
,它传输的是以太网帧 -
以太网帧的格式有:
Ethernet V2
标准、IEEE
的802.3标准 。使用最多的是:Ethernet V2
标准 -
为了能够检测正在发送的帧是否产生了冲突,以太网的帧至少要64字节
-
用交换机组建的网络,已经支持全双工通信,不需要再使用
CSMA/CD
,但它传输的帧依然是以太网帧 -
用交换机组建的网络,依然可以叫做
以太网
-
当数据部分的长度
小于46
字节时,数据链路层会在数据的后面加入字节填充,接收端会去掉。 -
以太网帧的
数据长度
:46-1500字节,以太网帧的长度
:64~1518字节(目标MAC +源MAC + 网络类型 + 数据 + FCS)
PPP协议
- Address字段:图中的值是0xFF,形同虚设,点到点信道不需要源MAC、目标MAC地址
- Control字段:图中的值是0x03,目前没有什么作用
- Protocol字段:内部用到的协议类型
- 帧开始符、帧结束符:0x7E
以上是关于计算机网络数据链路层的主要内容,如果未能解决你的问题,请参考以下文章
计算机网络(谢希仁 第七版) 第三章(数据链路层)-- 3.1 使用点对点信道的数据链路层(数据链路层概述 & 数据链路和帧 & 三个基本问题(封装成帧透明传输差错控制))