计算机网络第三章知识摘要
使用点对点信道的数据链路层
五层协议的体系结构
链路层负责将网络层交下来的IP数据包组装成帧,在两个相邻节点间的链路上透明的传输帧。
透明:不管所传数据是什么样的比特组合,都应当能够在链路上传送。当所传数据中的比特组合恰巧与某一个控制信息完全一样时,就必须采取适当的措施,使收方不会将这样的数据误认为是某种控制信息。这样才能保证数据链路层的传输是透明的。
使用信道:
数据链路层使用的信道主要有两种类型:
- 点对点信道:使用一对一的点对点通信方式
- 广播信道:一对多的通信方式,需要使用专用的共享信道协议来协调主机的数据发送
数据链路与帧
链路
链路是一条无源的点到点的物理线路段,中间没有任何交换结点
数据链路
除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些硬件与软件加到链路上,就构成了数据链路。
现在最常用的方法是使用适配器来实现这些协议的硬件和软件
数据链路层的三个基本问题
封装成帧
封装成帧就是在一段数据的前后分别添加首部和尾部,构成了一个帧。
帧是数据链路层传输的基本单位
高中学过生物的都知道,DNA的表达是需要进行转录与翻译的,而每段基因的开头都会有一个启动子表明要在这里开始转录,帧的首部就是这样一个道理。在一段数据的开头加入首部表明这是一段数据的开始。首部和尾部的一个重要作用就是进行帧定界。
每一种数据链路层都规定了数据部分的长度上限——最大传送单元MTU
透明传输
在帧定界时,使用EOT字段(二进制为0000 0100)作为一个帧的结束,在接收端识别到这个字段时,将会停止接收。但是如果在数据内容中,恰好出现了一段二进制字段,符合0000 0100,那么这段数据就会被认为是EOH,接收端便会停止接收,而后面的内容会被当作无效帧被丢弃。
解决方法
- 发送端的数据链路层在数据中出现SOH、EOT的前面插入一个转义字符“ESC”
- 字节填充/字符填充:接收端的数据链路层在将数据送往网络层之前删除插入的转义字符
- 如果转义字符也出现在数据内容中,则在转义字符前加入转义字符,当识别到两个转义字符时删除前面的一个。
差错检测
传输过程中因为物理信道的原因可能会导致0变成1或1变成0
误码率
在一段时间内,错误传输的比特数占所传输的比特总数称为误码率,误码率与信噪比有很大关系。为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用差错检测措施
循环冗余检验CRC
- 在发送端,先将数据划分为组,在一组的数据M后面添加供差错检验的n位冗余码一起发送
- 用二进制的模二运算进行2n乘M运算,相当于在M的后面添加n个0
- 将得到的(k+n)位数除以事先选定好的长度为(n+1)的除数P,得出余数是R,余数比除数少一位,即R是n位。
计算举例:
k = 6,M = 101001.
设n = 3,除数 P = 1101,
被除数就是2nM = 101001000
模二运算的结果就是商Q = 110101,R = 001
发送的数据就是:2nM + R =101001001
接受端对收到的每一帧进行CRC校验,用生成多项式表示CRC的除数
如G(X) = X3+X2+1表示1101
注意: 仅使用CRC校验技术只能做到无差错接受,要做到
可靠传输
(发送什么就收到什么)就必须加上确认
和重传
机制