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

发布时间:2022-07-04 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了计算机网络之数据链路层(一)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

一.数据链路层简介

        数据链路层属于计算机网络的低层。数据链路层使用的信道主要有以下两种类型。

                (1)点对点信道。这种信道使用一对一的点对点通信方式。

                  (2)   广播信道。这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上可以连接多个计算机,因此必须使用专用的共享信道协议来协调这些计算机的数据发送。

二.数据链路与帧

        数据链路≠帧

        链路(Link)就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点。在进行数据通信时,两台计算机之间的通信路径往往要经过许多这样的链路。可见链路只是一条路径的组成部分。

        数据链路(Date Link)则是另一个概念。这是因为当需要在一条线路上传送数据时,除了必须有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。

        帧(Frame)——数据链路层的协议数据单元

        数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据取出并上交给网络层。

三.封装成帧

        数据链路层以帧为单位传输和处理数据。网络层的 IP 数据报必须向下传送到数据链路层,成为帧的数据部分,同时它的前面和后面分别添加上首部和尾部,封装成一个完整的帧。帧的长度等于帧的数据部分长度加上帧首部和帧尾部的长度。数据链路层必须使用物理层提供的服务来传输一个一个的帧。物理层將数据链路层交給的数据以比特流的形式在物理链路上传输。因此,数据链路层的接收方为了能以帧为单位处理接收的数据,必须正确识别每个帧的开始和结束,即进行帧定界

此处我们假定flag为帧开始与结束标志

例F1a;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

脚本宝典总结

以上是脚本宝典为你收集整理的计算机网络之数据链路层(一)全部内容,希望文章能够帮你解决计算机网络之数据链路层(一)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。