数据链路层
概述
数据链路层研究内容:
同一个局域网中,分组怎样从 A A A主机送达 B B B主机,但不经过路由器
转发数据链路层使用信道的方式:
(1)点对点信道:
使用一对一
的点对点通信方式
(2)广播信道:
使用一对多
的广播通信方式
链路:
从一个结点
到相邻结点
的一段物理线路(有线或无线)
,中间没有任何其他的交换结点数据链路:
链路
+通信协议(软件+硬件)
帧:
数据链路层
的协议数据单元
- 数据链路层协议的基本问题:
封装成帧
、透明传输
、差错检测
- 封装成帧:
封装成帧:
在一段数据的前后分别添加首部
和尾部
,构成一个帧
帧长
=帧的数据部分长度
+帧首部长度
+帧尾部长度
首部和尾部的作用:
帧定界(确定帧的界限)
、控制
(1)帧界定:
接收端在收到物理层
上交的比特流后,可以从中识别帧的开始
和结束
最大传送单元MTU:
链路层协议规定的所能传送的帧的数据部分
长度上限
- 透明传输:
透明传输:
无论什么样的比特组合的数据,都能够按照原样没有差错地通过这个数据链路层
(1)帧的开始和结束的标记使用专门的控制字符
(2)所传输的数据
中任何8比特的组合一定不允许和用作帧定界
的控制字符的比特编码一样
(3)否则就会出现帧定界
的错误- 当传送的帧是由
文本文件
组成的帧时,其数据部分
显然不会出现像SOH
或EOT
这样的帧定界控制字符,即为透明传输
- 当数据部分是
非ASCII码文本
(二进制代码的计算机程序或图像)时,如果数据中的某个字节的二进制恰好和SOH
或EOT
这种控制字符一样,数据链路层就会错误地
找到了帧的边界
,把部分帧
收下,而把剩下的那部分数据丢弃(找不到帧定界控制字符SOH
)
- 字符填充: 解决
透明传输
的问题
(1)发送端
的数据链路层在数据中出现控制字符SOH
或EOT
的前面插入一个转义字符ESC
(2)接收端
的数据链路层在把数据送往网络层
之前删除
这个插入的转义字符
(3)若转义字符
也出现在数据当中,那么在转义字符
的前面插入一个转义字符
,当接收端收到连续的两个转义字符时,就删除其中前面的一个
- 差错检测:
传输差错的分类:
(1)比特差错:
1变成0
或0变成1
(2)收到的数据未出现比特差错
,但出现帧丢失
、帧重复
或帧失序
误码率(BER)
一段时间内,传送错误的比特
占所传输总数
的比率差错检测算法:
循环冗余校验码
- 循环冗余检验CRC:
基本概念:
(1)循环冗余校验CRC:
一种检错方法
(2)帧检验序列FCS:
为检测差错
而添加的数据后面的冗余码
(3)循环冗余校验CRC
≠ \neq =帧检验序列FCS
发送端:
(1)将数据分组,每组 k k k个比特现假定待传送的数据M = 101001(k = 6)。CRC运算就是在数据 M M M的后面添加供差错检验用的n位冗余码,然后构成一个帧发送出去,一共发送 ( k + n ) (k + n) (k+n)
- 用二进制的模2运算(用模2运算进行加法时不进位,减法和加法一样,按加法规则计算)进行 2 n 2^n 2n乘M的运算,这相当于在M后面添加 n n n个0。得到的 ( k + n ) (k+n) (k+n)位的数除以收发双方事先商定的长度为 ( n + 1 ) (n+1) (n+1)位的除数P,得出商是Q而余数是R( n n n位,比P少一位)
- 发送端