数据链路概念

来源:互联网 发布:淘宝生意参谋怎么订购 编辑:程序博客网 时间:2024/06/06 01:00

数据链路层使用的信道主要有两种类型:

点对点信道:这种信道使用一对一的点对点通信方式

广播通信:这种信道使用一对多的广播通信。广播信道上连接的主机比较多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。

 

链路就是从一个站点到相邻站点的一条物理线路.

数据链路就是两个站点上的硬件或者软件(如协议等)加上链路。

网络适配器是实现这些硬件和软件的设备,通常一般的适配器已经实现了数据链路层和物理层。

 

帧是点对点信道的数据链路层的协议数据单元。

 

数据链路层的三个基本问题

1.封装成帧

帧的数据部分最大长度就是MTU(Maximum Transfer Unit),

数据帧的长度=首部+数据(IP数据报)+尾部

首部就是01(00000001)  简称SOH(Start of header)

尾部就是04(00000100) 简称EOT(End of Transmission)

2.透明传输
如果传输的是文本文件,那么文本文件是不会出现01或者04的类似字符。

然后当我们传输的是图像文件或者EXE程序,就很有可能在数据部分出现01或者04字符。

解决方案:

在发送端的链路层,如果在数据部分发现SOH(01)或者EOT(04),那么就在该字符前面插入一个转义字符ESC(十六进制就是1B),

在接收端数据链路层然后去掉转义字符,这种方法叫做字符填充或字节填充。

如果转义字符也出现在数据部分,那么再插入一个转义字符即可。

3.差错检测

因为在传输过程中,会有噪声干扰,自然会造成比特差错(传输过程0变1,1变0),

循环冗余检错是数据链路层最广泛使用的数据检错技术。

就是在要发送的数据之后加上几位冗余码(n位)

现在假设数据M=101001,事先商定好长度为n+1的除数P,得到商是Q而余数是R(n位,比P少一位)。

现在假定P=1101 (n=3)  那么被除数就是2^n * M =101001000 (相当于在M后面添加了n个0)

用101001000除以1101 获得

Q =110101

R =001

所以要传给物理层的二进制数据就是101001001

这种为了检错而添加的冗余码叫做帧检验序列(Frame Chec Sequence)

 

在接收端把接收到的数据除以事先商量好的P,得到余数R.如果R为0则表示传输过程中,没有出现差错。

在数据链路层,FCS和CRC检验都是由硬件完成的,速度非常快。

 

用这种检验方法只能做到"无比特差错",而不能做到“无传输差错”

 

原创粉丝点击