小白日记:数据链路层概述

数据链路层要解决三个问题

封装成帧

帧就是数据链路层的数据的基本单位。
发送端会在网络层的一段数据前后添加特定的标记,添加完这段标记之后,这段数据就是帧了。
接收端会根据标记辨认出“帧”
这里需要注意的是,物理层不会管其他层的事情,比如“帧"什么的。他只管自己这层的事。这里就将各层级之间的互不相关以及解耦性表现得淋漓尽致。
封装成帧的步骤:
1网络层把IP的数据报传送给数据链路层。
2数据链路层接收到数据之后就会把获得的数据报看成是一个应该被制作成“帧”的一个数据,给他在头部添加一个帧头部,在尾部添加一个帧尾部。这就是一个数据帧了。
3数据帧在物理层的存在形式就是一串全是1和0的比特流。
帧首部和帧尾部也是比特流,首部是SOH:00000001,尾部是EOT:00000100。
那么问题就来了,要是数据里面也有这些数据该怎么办呢?

透明传输

透明是计算机里面的一个术语。对于数据链路层来说,物理层就是透明的,就是把事做了,但是你看不见跟雷锋似的。
即使控制字符在数据里,也当做不存在。就是将数据里面出现出现的SOH和EOT变的透明。
具体做法就是在控制字符前面加上ESC字符。这就可以将数据报里面的控制字符透明化了,如果数据里面出现了转义字符的话,那么我们就在他前面再加上一个转义字符,
双重ESC。就可以将数据里面的ESC透明化了。
在编程的时候\实际上就是转义字符,\n,\t就是控制字符,当我们在程序中想输出一个\时,就输入\\,想输出\\就输入\\\\。

差错检测

由于物理层只负责传输比特流,所以在他受到干扰的时候,他没有办法将这个错误检查出来。所以,数据链路层有检查物理层传输上来的比特流有没有错误的功能。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页