数据链路层
简介:数据链路层的基本服务是将源自网络层来的数据可靠地传输到相邻结点的网络层。
1.组成部分:
- 结点:网络中的主机、路由器
- 链路:一条无源的点到点的物理线路段
- 通信协议:PPP协议、CSMA/CD协议
2.基本单元:帧
3.三个基本问题:封装成帧、透明传输、差错控制
1)封装成帧:在一段二进制数据的前后添加首部尾部,首部尾部有帧定界符。
首部:SOH,尾部:EOT (前提:由ASCII码组成的文本文件)
2)透明传输:需要实现帧同步(要能从接收到的二进制比特流中区分出帧的起始和终止)
那么这里会遇到一个问题,怎么从一堆二进制中识别出那个就是帧开始符,哪个是帧结束符。------>解决方法:字符填充
字符填充,用一个特定的字符做为转义字符ESC,当遇到ESC SOH这样的排列时候就把ESC删掉,遇到ESC ESC时候,也同样把ESC删掉这样就得到正确的数列了。注意!!前面的SOH,ESC时候
3)差错检测:
-
差错原因:全局性噪音、局部性噪声
全局性噪声–由线路本身的电气特性产生,是信道固有的
通过提高信噪比来减少或避免
局部性噪声–外界短暂原因 -
类型:位错、帧错 (帧丢失、帧重复、帧乱序)
-
检验方式:奇偶检验、CRC循环冗余检验
这里重点讲述CRC
*除数表示: 比如1101表达为
*被除数:比如要发送的数为101001,后面加上除数位数-1个0,即101001000
将相除之后的余数接到除数后面
校验:用新生成的数据 / 原先的除数,如果为0则传输正确,否则错误。
注意,这里只能做到无差错接受,不能做到无差错传输,不能做到可靠传输