文章目录
数据链路层
功能
- 封装成帧
- 透明传输
- 差错检测
封装成帧
- 帧是数据链路层数据的基本单位
- 发送端在网络层的一段数据前后添加特定标记形成“帧”
- 接收端根据前后特定标记识别出“帧”
- 帧首部和尾部是特定的控制字符(特定比特流)
SOH: 00000001 (首部)
EOT: 00000100 (尾部)
问题:数据里面恰好有这些比特流咋办?
- 透明传输来解决
透明传输
- “透明”在计算机领域是非常重要的一个术语
- 透明传输“即是控制字符在帧数据中,但是要当做不存在的去处理”
假设在帧数据中存在一个尾部控制字符,那在接收端就会解析出错误的帧
透明传输通过在数据报中的控制字符添加转义字符的方式,来解决这一问题
差错检测
- 物理层只管传输比特流,无法控制是否出错
- 数据链路层负责起“差错监测”的工作
方法
- 奇偶校验码
- 循环冗余校验码CRC
奇偶校验码
- 假设传输数据为00110010,通过计算获得数据为奇数,在数据后添加一个1的比特位,假设传输数据为00111010,通过计算获得数据为偶数,在数据后添加一个0的比特位,通过接收到数据后计算结果是否与增加的比特位相同来校验数据是否出错
- 但是此方法有一定的局限性,假设传输数据为00110010,增加比特位1,数据传输错误,第三位变为0,计算后对比发现错误,假设3,4位都传输错误,计算后对比没有发现错误
循环冗余校验码CRC
- 一种根据传输或保存的数据而产生固定位数校验码的方法
- 检测数据传输或者保存后可能出现的错误
- 生成的数字计算出来并且附加到数据后面
- CRC的错误检测能力与位串的阶数有关
模“2”除法
- 模“2”除法是二进制下的除法
- 与算术除法类似,但除法不借位,实际是“异或”操作
- 例子
- 二进制的异或操作
- 模“2”除法
- 二进制的异或操作
过程
-
选定一个用于校验的多项式G(x),并在数据尾部添加r个0
-
将添加r个0后的数据,使用模“2”除法除以多项式的位串
-
得到的余数填充在原数据r个0的位置得到可校验的位串
-
例子
1.例子1:使用CRC计算101001的可校验位串- 第一步(选定一个用于校验的多项式G(x),并在数据尾部添加r个0 ):
选定如图的多项式G(x),多项式二进制位串为1101,最高阶为3
- 第一步(选定一个用于校验的多项式G(x),并在数据尾部添加r个0 ):
-
在数据的尾部添加3个0
-
第二步(将添加r个0后的数据,使用模“2”除法除以多项式的位串):
- 对添加零的数据对多项式二进制位串1101进行模“2”除法,余数应该为001,图片上计算错误
- 对添加零的数据对多项式二进制位串1101进行模“2”除法,余数应该为001,图片上计算错误
-
第三步(生成的数字计算出来并且附加到数据后面):
接收端接收的数据除以G(x)的位串,根据余数判断出错
MTU(最大传输单元MTU(Maximum Transmission Unit))
- 数据链路层的数据帧也不是无限大的
- 数据帧过大或过小都会影响传输的效率
- 以太网MTU一般为1500字节
路径MTU
- 路径MTU由链路中MTU的最小值决定
以太网协议
- 以太网(Ethernet)是一种使用广泛的局域网技术
- 以太网是一种应用于数据链路层的协议
- 使用以太网可以完成相邻设备的数据帧传输
MAC地址
- MAC地址(物理地址、硬件地址)
- 每一个设备都拥有唯一的MAC地址
- MAC地址共48位,使用十六进制表示(30-B4-9E-ED-85-CA)
以太网协议
数据格式
- 如图为以太网协议,数字代表每一个属性所占的字节数
- 如果为网络层IP数据
- ARP请求应答
- RARP请求应答数据
MAC地址表
- 地址表为MAC地址与硬件接口的映射表
- 例子
假设A数据需要传递给C,连接方式如图,MAC地址表如图
- A通过网卡发出数据帧
- 数据帧到达路由器,路由器取出前6字节
- 路由器匹配MAC地址表,找到对应的网络接口
- 假设MAC地址表中没有C的硬件接口信息
- E检查MAC地址表,发现没有C的信息
- E将收到来自B、C的回应,并将地址记录
- 路由器往该网络接口发送数据帧
问题
- 数据链路层只负责相邻物理节点传输,假设如图网络拓扑,A怎么跨设备
传输数据到C?- 网络层解决的问题
- 网络层解决的问题