概述
数据链路层
- 数据链路层
- 使用点对点(一对一)信道的数据链路层
- 三个基本问题
- 1.封装成帧
- 2.透明传输问题
- 3.差错控制(CRC循环冗余检验)
- 无比特差错
- 无传输差错
- 点对点协议(PPP协议)
- PPP协议的帧格式
- 标志字段
- 地址字段
- 控制字段
- 协议字段
- 透明传输问题(同步传输)
- 透明传输问题(异步传输)
数据链路层
数据链路层主要有两个功能 :帧编码和误差纠正控制
数据链路层使用的信道主要有一下两种类型:点对点信道(PPP协议)和广播信道。
使用点对点(一对一)信道的数据链路层
- 数据链路层传送的是帧,那么就要考虑三个基本的问题。
三个基本问题
1.封装成帧
- 在一段数据的前后分别添加首部和尾部,然后构成了一个帧,确定了帧的界限
2.透明传输问题
- 当数据是由可打印的ASCII码组成的文本文件时,帧的定界可以使用特殊的帧定界符
- SOH表示帧的首部开始
- EOT表示帧的结束
- 思考:但是如果数据中的某个字节的二进制代码恰好和 SOH 或EOT 一样,数据链路层会不会错误地“找到帧的边界”?
- 答案:会的,这就是透明传输问题。
- 怎么解决透明传输问题?
- 解决方法:字节填充 (byte stuffing)或字符填充(character stuffing)。
发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十六进制编码是 1B)。接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。 如果转义字符也出现在数据当中,那么应在转义字符前面插入一个转义字符 ESC。当接收端收到连续的两个转义字符时,就删除其中前面的一个。
3.差错控制(CRC循环冗余检验)
CRC循环冗余检验:将余数 R 作为冗余码拼接在数据 M 后面发送出去。到达接收端后,再把接收到的新帧除以(同样采用“模2除法”)这个选定的除数。因为在发送端发送数据帧之前就已通过附加一个数,做了“去余”处理(也就已经能整除了),所以结果应该是没有余数。如果有余数,则表明该帧在传输过程中出现了差错。
- 待传送的一组数据M = 101001(现在k =6)。我们在 M 的后面再添加供差错检测用的n位冗余码一起发送,这相当于在M后面添加n个。得到(k +n) 位的数除以事先选定好的长度为(n + 1) 位的除数P,得出商Q和余数R,余数 R 比除数P少1位,即 R是n位。将余数 R 作为冗余码拼接在数据 M 后面发送出去。
- 现在假设k=6,M=101001, n=3,除数P=1101.
(在数据后面添加上的冗余码称为帧检验序列FCS (Frame Check Sequence)) - 模2运算的结果是:商Q=110101,余数R=001。把余数R添加到M后边发出去即:101001001共k+n位
无比特差错
仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受 (accept)。“无差错接受”是指:“凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错”。
无传输差错
帧在传输过程中没有出现比特差错的基础上 未出现帧丢失、帧重复、帧失序的传输。按我的理解来说无传输差错就是可靠传输。
点对点协议(PPP协议)
PPP协议有三个组成部分
- 一个将 IP 数据报封装到串行链路的方法。
- 链路控制协议 LCP (Link Control Protocol)。
- 网络控制协议 NCP (Network ControlProtocol)。
PPP协议的帧格式
标志字段
- 标志字段 F = 0x7E (符号“0x”表示后面的字符是用十六进制表示。十六进制的 7E 的二进制表示是01111110)。
地址字段
- 地址字段 A 只置为 0xFF。地址字段实际上并不起作用。
控制字段
- 控制字段 C 通常置为 0x03。
协议字段
- PPP 有一个 2 个字节的协议字段。其值若为 0x0021,则信息字段就是 IP 数据报。若为 0x8021,则信息字段是网络控制数据。若为 0xC021,则信息字段是链路控制数据。若为 0xC023,则信息字段是鉴别数据。
透明传输问题(同步传输)
比特填充,也就是上边点对点的解决方法。
透明传输问题(异步传输)
- 字符填充:
- 将信息字段中出现的每一个 0x7E 字节转变成为2 字节序列 (0x7D, 0x5E)。
- 若信息字段中出现一个 0x7D 的字节, 则将其转
变成为 2 字节序列 (0x7D, 0x5D)。 - 若信息字段中出现 ASCII 码的控制字符(即数值小于 0x20 的字符),则在该字符前面要加入一个 0x7D 字节,同时将该字符的编码加以改变。
- 零比特填充
- 发送端,只要发现有 5 个连续 1,则立即填入一个 0。
- 接收端对帧中的比特流进行扫描。每当发现 5个连续1时,就把这 5 个连续 1 后的一个 0 删除。
- 此系列文章传送门
- 第二篇:使用广播信道(一对多)的数据链路层
- 第三篇:数据链路层的子层MAC层(图文详解)
卑微博主在线求赞,点个赞再走。
最后
以上就是奋斗茉莉为你收集整理的数据链路层 使用点对点(一对一)信道(图文详解)数据链路层的全部内容,希望文章能够帮你解决数据链路层 使用点对点(一对一)信道(图文详解)数据链路层所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复