【计算机网络】数据链路层

【计算机网络】数据链路层

数据链路层的主要工作是将网络层传来的IP数据报封装成帧发送到链路上,再将接收到的帧中的IP数据报取出,发送给网络层。
整个传输的过程中存在三个基本问题:封装成帧、透明传输、差错校验。

封装成帧

数据链路层将网络层传来的IP数据报加上必要的首部和尾部构成帧,再将物理层传来的帧中的数据报取出传输给网络层。封装成帧就是在一段数据的前后分别添加首部和尾部。
首部和尾部中包含许多必要的控制信息。此外还能起到帧定界的作用。数据链路层在接收到物理层传来的比特流后,根据首部和尾部的标记,从比特流中识别到帧的开始和结束。

帧的开始和结束

ASCII码由7位组成,共有128个,键盘可打出的字符共有95个,不可打印的字符有33个,这33个字符不会出现在由文本文件组成的帧中。
字符SOH(二进制为00000001)放在帧的首部的最前面,标识帧的开始;字符EOT(二进制为00000100)放在帧的尾部的最后面,标识帧的结束。

透明传输

透明传输是指通过数据链路层传输了数据,就像没有通过过数据链路层一样。理解起来就是网络层传出的IP数据报,在经过了数据链路层的封装成帧和将帧中的数据部分取出的两个过程后,最终得到的IP数据报与传出时一致。

帧定界错误

如果一个帧的数据部分出现EOT控制字符,接收端的数据链路层在接收帧时就会错误的认为这个帧在出现第一个EOT字符时就已经结束,此时接受到的帧在去掉首部和尾部后得到的数据部分与最初传出的IP数据报不一致。

解决方法

发送端的数据链路层在发现数据部分存在SOH或EOT时会在这两个控制字符前加上转义字符ESC。接收端的数据链路层在将数据部分传给网络层前会将转义字符删除。

差错检测

奇偶校验

通过增加冗余码,约定整个校验码中1的个数,来校验数据传输是否有误。
两边约定,整个校验码中1的个数为奇数为奇校验,整个校验码中1的个数为偶数为偶校验。
(是否需要校验两边约定的数据呢?)

海明码

假设数据有m位,校验码有p位,校验码一共有2p2^p2p种取值,若想通过校验码指出任一位上发生的错误则需满足2p−1≥m+p2^p-1\geq m+p2p1m+p
一般将校验位放在从左到右第2n2^n2n(n=0,1……)位上
具体构造方式:
1.将位序(即1,2,……m+p)转为二进制,将信息码依次填充上;
2.1号校验码(位次为000001)与二进制的最后一位为1的位次对应的信息码为一组(A),2号校验位(位次为0000010)与二进制的倒数第二位为1的位次对应的信息码对应(B),3号校验位(位次为0000100)与二进制的倒数第三位为1的位次对应的信息码对应©,四号校验位(位次为0001000)与二进制的倒数第四位为1的位次对应的信息码对应(D)……
3.A、B、C、……各组信息码各自通过约定的奇校验或偶校验获得校验码的值,填充入对应位置,构成海明码。
校验方式:
将收到的海明码按二进制每一位对应关系分组(最终获取到A、B、C、D……),按约定的奇校验或偶校验进行校验,各组校验均为0则无错。

循环冗余检验

针对数据传输时可能会出现的比特差错,数据链路层广泛使用循环冗余检验技术。
简单来说,就是将要发送的数据分组后补n个0除以约定好的多项式,取余数拼接在数据分组后。
检错方式:接收到的数据除以约定好的多项式,余数不为0则存在错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值