数据链路和帧
链路:一个节点到相邻节点的一段物理线路(有线或无线),而中间没有其他的任何交换节点。
数据链路:加了通信协议来控制数据传输的物理链路。有些术语把数据链路也称为逻辑链路。
数据链路层的协议数据单元——帧
网络层协议数据单元——IP数据报(简称数据报、分组、包)
数据链路层
OSI(开放系统互连参考模型OSI/RM)把网络体系结构分为七层:分为物理层、数据链路层、网络层、运输层、应用层(会话层、表示层、应用层)。数据链路层就是把数据报封装成帧进行传输。数据链路层使用的信道主要有:
1)点对点信道。一对一的点通信方式。
2)广播信道。一对多的广播通信方式。局域网使用的就是这种。
三个基本问题
1)封装成帧:在一段数据(数据有上限,最大MTU)前后分别添加包括了许多必要控制信息的首部和尾部(利于进行帧定界),这就构成了一个帧。SOH(Start Of Header)和EOT(End Of Transmission)分别表示帧的开始和帧的结束,这是字符的名称。他们的十六进制编码分别是01(二进制00000001)和04(二进制00000100)。
解决的是:在发送帧出故障,被中断了。随后恢复时,可以通过帧定界判断是不是一个完整的帧,如果不是(只有首部开始符SOH,没有结束符EOT)必须丢弃。
2)透明传输:无论什么样的比特组合的数据,都能按照原样没有差错的通过这个数据链路层。
如果传送的数据中的某个字节的二进制代码恰好和SOH或EOT这种控制字符一样的,数据链路层就会错误的找到“帧的边界”,使数据传输出现错误。通过字符填充的方式解决。具体就是:发送端数据链路层在数据中的“SOH”和“EOT”前加一个转义字符“ESC”(十六进制 1B,二进制00011011),接收端数据链路层在把数据送往网络层之前删除这个插入的转义字符。
3)差错检测:比特差错,广泛使用循环冗余检验进行检验。传输差错(帧丢失,帧重复、帧失序)。 留个疑问,复习到运输层在进行解答。
这里借用了https://blog.csdn.net/MyxZxd/article/details/107694451的思维导图,因为我在看完学习视频之后还是很懵,一时间难以整理,这个思维导图真的让人豁然开朗,好东西就得分享。