数据链路层的三个基本问题

数据链路层简单模型

在这里插入图片描述
数据链路层给要传送的数据加上帧头帧尾,加上

基本概念

链路

  • 一条点到点的物理线路段,中间没有任何其他的交换节点
  • 一条链路只是一条通路的组成部分

数据链路

  • 是除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路
  • 组成:帧 帧头 帧尾 物理层地址 校验值

三个基本问题

封装成帧

  • 就是在一段数据的前后分别天界首部和尾部,然后就构成了一个帧。确定帧的界限
  • 首部和尾部的一个重要作用就是进行帧定界
  • 为了提高帧的传输效率,应当使帧的数据部分长度尽量大于首部和尾部的长度。最大传输单元MTU(Maximum Transfer Unit):帧数据部分长度上限

透明传输
       当传送的帧是用文本文件组成的帧时(文本文件中的字都是从键盘上输入的),其数据部分显然不会出现像SOH或EOT这样的帧定界控制字符。可见不管从键盘上输入什么字符都可以放在这样的帧中传输过去,因此这样的传输就是透明传输。
       但当数据部分是非ASCII码的文本文件时(如二进制代码的计算机程序或者图像等),情况就不同了。如果数据中的某个字节的二进制代码恰好和SOH或EOT这种控制字符一样,数据链路层就会错误地“找到帧的边界”,把部分帧收下(误以为是个完整的帧),而把剩下的那部分数据丢弃(这部分找不到帧定界控制字符SOH)。这种情况就不是透明传输,因为当遇到书中碰巧出现字符“EOT”时就传不过去了,而其后面的数据因找不到“SOH”被接收端当做无效帧而丢弃。但实际上数据中出现的字符“EOT”并非控制字符而仅仅是二进制数据00000100 。
在这里插入图片描述
使用字节填充法或字符填充来解决透明传输问题:在控制字符SOH、EOT的前面插入一个转义字符ESC(其十六进制编码是1B,二进制是00011011)。而接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。

差错控制
传输过程中可能会产生比特差错:1变为0,0变为1,在一段时间内,传输错误的比特占所传输比特总数的比率叫误码率(BER)
解决:

  • 使用循环冗余检验(CRC)和帧检验序列(FCS)

参考

https://www.bilibili.com/video/BV1Hx411D7rn

发布了12 篇原创文章 · 获赞 3 · 访问量 407

猜你喜欢

转载自blog.csdn.net/Hobo_hua/article/details/105448170