本文首发于稀土掘金。该平台的作者 逐光而行 也是本人。
参考书籍
- 《Computer Networks (the fifth edition) 》
前言
之前断断续续记录了一些概念、协议,在数据链路层走马观花游了一圈,只知局部,未窥全貌,现在是时候作一个总结了。
数据链路层在所有层中的地位作用
- 衔接物理层和网络层。将从物理层接收到的比特流转为帧流以供网络层使用。(指数据接收方的视角)
依据可靠性不同,可将其提供的服务分为三类,指标有是否连接和是否应答两种。依次为:
- 无连接无应答
- 有连接无应答
- 有连接有应答。
数据链路层的特性
- 成帧方法:分为字节计数、字节填充、字填充。
- 数据链路层可以提供错误检测和纠正、有重传机制、有流控制。
其中,滑动窗口机制可以整合错误控制和流控制,当窗口大小为1时,称为“停等协议”。
校验码
在本章中介绍了一些校验码,它们同样也可用于其它层,并且实际上更多用于其它层。
ARQ(Automatic Repeat reQuest)
有三类协议都属于自动重传请求协议,也用到了滑动窗口的概念。
设窗口大小为n
- 当n=1时,这称为停等协议。
- 当n为适当大小时,称为滑动窗口协议,并且有一个“捎带”的概念。
即:应答帧跟随下一个数据帧一起回传
- 回退n帧
即:一旦发生错误,接收方简单丢弃所有这之后的帧,并且不作应答,发送方会因超时而重传
- 选择性重传:
以下是一个例子:若接收方接收到的数据序号是1,3,4,5,当它接收到3时,发现序号2丢失,那么它会将之后的3,4,5存到缓冲区,并且向发送方发送负反馈,当重新接收到2后,再将在缓冲区的3,4,5补上。
PPP(point to point principle)是主要的数据链路层协议。