使用点对点信道的数据链路层
数据链路层属于计算机网络的低层,主要使用:
- 点对点信道:一对一的点对点通信方式,点对点协议PPP
- 广播信道:一对多的广播通信方式,CSMA/CD协议
数据链路和帧
-
链路(link):从一个结点到相邻结点的一段物理线路(有线或无线),中间没有其它交换结点,链路只是一条完整通信路径的组成部分
-
数据链路(data link):通信时,除了必要的物理线路,还必须有通信协议来控制数据传输,将这些协议的硬件和软件加到链路上,就构成了数据链路
- 常用网络适配器来实现这些协议,一般的适配器包括了数据链路层和物理层的功能
-
帧(frame):数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中数据取出,并上交给网络层
-
点对点协议的数据链路层简化
- 点对点信道的数据链路层在进行通信时的主要步骤如下:
- 结点A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧
- 结点A把封装好的帧发送给结点B的数据链路层
- 若结点B的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报上交给网络层,否则丢弃此帧
三个基本问题
数据链路层协议有很多,但三个基本问题是共同的:封装成帧、透明传输、差错检测
封装成帧
-
用户主机有从应用层到物理层的全部5层,而交换机只有网络层、链路层、物理层3层
-
在互联网上传输数据的基本单位是分组(即网络层的IP数据报)
-
网络层的IP数据报送到数据链路层,便是帧是数据部分,根据不同协议加上帧头帧尾,构成完整的帧,这样的帧是数据链路层的数据传送单元
-
封装成帧(framing)就是将网络层传下来的IP数据报加上首部和尾部,接收端从物理层获得的比特流后,根据首部和尾部的标识,就能识别帧的开始和结束
-
首部和尾部的重要作用是进行帧定界,即确定帧的界限,此外还包括许多必要的控制信息
-
每一种链路层协议都规定了所能传送的帧的数据部分长度上限-最大传送单元MTU
- 当数据是由可打印的ASCII码组成的文本文件时,帧定界可以使用特殊的帧定界符
- SOH(start of header):放在帧的首部,表示帧的首部,十六进制编码为0x01
- EOT(end of transmission):放在帧的尾部,表示帧的结束,十六进制编码为0x04
- 当出现差错时,例如连续收到两次SOH,则第一次的EOT丢失了,认为这次传输失败,直接丢弃
透明传输
- 透明:某一个实际存在的事物,看起来却好像不存在一样
- 透明传输:无论什么样的比特组合,都能按照原样没有差错地通过这个数据链路层,或者说,数据链路层对于这些数据来说是透明的
- 由于帧头帧尾使用专门的控制字符,因此数据中不能有帧定界符,否则出现帧定界错误
- 为了解决透明传输问题,就必须使数据中的SOH、EOT在接收端不被解释为控制字符
- 在发送端,如果数据中出现SOH、EOT,则在前面插入转义字符ESC
- 在接收端,删除数据中出现的转义字符ESC
- 这种方式称为字节填充(byte stuffing)或字符填充(character stuffing)
- 如果转义字符也出现在数据中,那么在前面再插入一个转义字符
差错检测
- 为了保证数据传输的可靠性,在计算机网络传输数据时,必须采取各种差错检测措施
- 目前数据链路层广泛使用的是循环冗余校验CRC(Cyclic Redundancy Check)
- 在数据链路层要进行差错校验,数据必须按帧传输,每一帧加上冗余码FCS
- 仅仅使用CRC仅能做到无比特差错传输,但是不能实现可靠传输(无传输差错)
- 比特差错:传输过程出现1变0、0变1
- 传输差错:帧丢失、帧重复、帧失序
- 在通信质量较差的无线传输链路中,数据链路层使用确认和重传机制,向上提供可靠传输服务
- 在CRC基础上,增加帧编号、确认和重传机制
- 收到正确的帧,需要向发送方发送确认,发送方超时没有