计算机网络之数据链路层(一)

一.数据链路层简介 数据链路层属于计算机网络的低层。数据链路层使用的信道主要有以下两种类型。
(1)点对点信道。这种信道使用一对一的点对点通信方式。
(2)广播信道。这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上可以连接多个计算机,因此必须使用专用的共享信道协议来协调这些计算机的数据发送。
二.数据链路与帧 数据链路≠帧
链路(Link)就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点。在进行数据通信时,两台计算机之间的通信路径往往要经过许多这样的链路。可见链路只是一条路径的组成部分。
数据链路(Date Link)则是另一个概念。这是因为当需要在一条线路上传送数据时,除了必须有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
帧(Frame)——数据链路层的协议数据单元
数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据取出并上交给网络层。
三.封装成帧 数据链路层以帧为单位传输和处理数据。网络层的 IP 数据报必须向下传送到数据链路层,成为帧的数据部分,同时它的前面和后面分别添加上首部和尾部,封装成一个完整的帧。帧的长度等于帧的数据部分长度加上帧首部和帧尾部的长度。数据链路层必须使用物理层提供的服务来传输一个一个的帧。物理层將数据链路层交給的数据以比特流的形式在物理链路上传输。因此,数据链路层的接收方为了能以帧为单位处理接收的数据,必须正确识别每个帧的开始和结束,即进行帧定界。
此处我们假定flag为帧开始与结束标志。
例:flag123456789abcdefgflag
计算机网络之数据链路层(一)
文章图片

可是如果在所需要传输的数据中存在flag关键字,则会发生判断错误。
例:flag123456flagabcdefgflag
可以看到,除了本身头和尾部有‘flag’外中间的数据部分中也出现了一个‘flag’,定界就会发生错误。
为了解决上述发生的定界错误问题,实现‘透明传输’可以使用一种称为字节填充或字符填充的方法。该方法就是添加‘转义字符’的概念,在接收端的数据链路层对转义字符后面出现的标记字符不再解释为帧定界符,并且在将数据送往网络层之前删除这个插入的转义字符。此处以esc代表转义字符
例1:要发送的字符:flag123456flagabcdefgflag
添加转义字符后发送的字符:flag123456escflagabcdefgflag
接收端收到上述字符后删除转义字符:flag123456flagabcdefgflag此时原来中间的flag就会被正确的识别,而不是被当成关键字。
当物理链路提供的是面向比特的传输服务时,帧定界标志可以使用某个特殊的比特组合。
比特填充来实现透明传输:
PPP协议采用零比特填充法来说明比特填充。在发送端,先扫描整个信息字段(通常是用硬件实现,但也可用软件实现,只是速度会变慢。)该方法简单来说就是发现有5个连续的1,就在第五个1后面填入0。
例:原比特组合:0100111111001010
发送方在5个1之后填入一个0比特再发送:01001111101001010
接收方删去5个连续1之后的一个0得到原比特组合:0100111111001010
【计算机网络之数据链路层(一)】

    推荐阅读