数据链路层——点对点信道

文章目录

    • 封装成帧
    • 透明传输
    • 差错检测
    • 传输差错

链路:从一个结点到相邻结点的一段物理线路(有线或无线),而中间没有任何其它的交换结点。
数据链路:把实现通信协议的软件和硬件加到链路上,就构成了数据链路。在线路上传输数据时,除了必须有一条物理线路时,还必须有一些必要的通信协议来控制这些控制的传输。

帧是点对点信道的数据链路层的协议数据单元。
数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据取出并交给网络层。

点对点信道的数据链路层进行通信的主要步骤

  • 结点A 的数据链路层把网络层交下来的 IP 数据报添加首部和尾部封装成帧
  • 结点 A 把封装好的帧发送给结点 B 的数据链路层
  • 若结点B 的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报交给上面的网络层,否则丢弃这个帧
    数据链路层——点对点信道_第1张图片

封装成帧

在一段数据(这个数据是从网络层下来的数据报)的前后分别添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
帧的首部和尾部的一个重要的作用就是进行帧定界。
帧的首部和尾部还包含了许多必要的控制信息。
最大传送单元MTU
每一种链路层协议都规定了所能传送的帧的数据部分长度上限。

数据链路层——点对点信道_第2张图片

当数据是由可打印的ASCII 码组成的文本文件时,帧定界可以使用特殊的帧定界符。
ASCII 码是7位编码,一共可组成128个不同的ASCII 码,其中可打印的有95个。
控制字符
SOH:放在一帧的最前面表示帧的首部开始,十六进制为01(00000001)
EOT:表示帧的结束,十六进制为04(00000100)
SOH(EOT)并不是S、O、H(E、O、T)三个字符
发送方
假设发送端在发送一个帧时突然出了故障,中断了发送,但随后又恢复了正常,于是又重新从头开始发送刚才未发送完的帧。
接收方
由于使用了帧界定符,接收端就知到前面收到的数据是个不完整的帧,必须丢弃,而后面收到的数据有明确的帧界定符,因此是一个完整的帧,应当收下。

透明传输

由于帧的开始和结束的标记使用专指明的控制字符,因此,所传输的数据中的任何的8比特的组合一定不允许和用作帧定界的控制字符的比特网编码一样,否则,就会出现帧定界错误。
数据链路层——点对点信道_第3张图片
透明传输
当传送的帧使用文本文件组成的帧时(文本文件中的字符都是从键盘上输入的),其数据部分显然不会出现像SOH或EOT这样的帧定界控制符,可见不管从键盘输入什么字符都可以放在这样的帧中传输过去,这样的传输就是透明传输。
在数据链路层的透明传输表示“无论什么样的比特组合的数据”,都能够按照原样没有差错地通过这个数据链路层

当数据时非ASCII 码的文本文件时(如二进制代码的计算机程序或图像),就不是透明传输了,就有可能出现帧定界错误。

字符填充
发送端的数据链路层在数据中出现控制字符“SOH“或“EOT”的前面插入一个专一字符“ESC”(十六进制编码是1B,二进制00011011),在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。
如果转义字符也出现在数据当中,仍然在转义字符前面插入一个转义字符。因此,当接收端收到连续的两个转义字符时,就删除其中前面的一个。
数据链路层——点对点信道_第4张图片

差错检测

误码率BER
传输错误的比特占所传输比特总数的比率称为误码率BER
设法提高信噪比,就可以使误码率减小。
循环冗余校验CRC
在发送端,先把数据划分为组,假设每组K个比特,先假设待传送的数据M=101001(K=6)。
CRC运算就是在数据M后面添加供差错检测用的n位冗余码,然后构成一个帧发送出去,一共发送K+n位。

n为冗余码的计算方法

  • 用二进制的魔模2运算进行2^n乘M的运算。(相当于在M后面加了n个0)
  • 得到的K+n位的数除以收发双方事先商定的长度为(n+1)位的除数P,得到的商是Q而余数是R(n位,比P少一位)
  • 这个R就作为n位冗余码,这种为了进行检错而添加的冗余码常称为帧检验序列FCS

接收端收到的数据以帧为单位进行CRC检验
把收到的每一个帧都除以相同的除数P(模2运算),然后检查得到的余数R。
无差错:余数R 为0,接收
误码:余数R为0 的概率非常小,就丢弃

发送端帧检验序列FCS的生成和接收端的CRC检验都是用硬件完成的,处理很迅速,因此并不会延误数据的传输

传输差错

传输差错分为两大类:一类是前面说的那种称为比特差错,另一位差错比较复杂,收到的帧没有出现比特差错,而是出现了帧丢失、帧重复、帧失序

CRC 检错仅仅能够解决比特差错,因此在CRC检错的基础上增加了帧编号、确认、重传机制

收到正确的帧就要向发送端发送确认,发送端在一定的期限若没有收到对方的确认,就认为出现了差错,就要进行重传,直到收到对方的确认位置

对于通信质量良好的有线传输链路,数据链路层协议不使用重传机制,即不要求数据链路层向上提供可靠传输的服务。如果在数据链路层传输数据时出现了差错并且需要进行改正,那么改正就由上层协议来完成。
对于通信质量差的无线传输链路,数据链路层协议使用确认和重传机制,数据链路层向上提供可靠传输的服务

可靠传输:数据链路层的发送端发送什么,在接收端就收到什么。

你可能感兴趣的:(计算机网络)