数据链路层(一)-使用点对点信道的数据链路层
数据链路层属于计算机网络的底层,使用的信道主要有以下两种类型:
(1)点对点通信。这种通信使用一对一的点对点通信方式。
(2)广播通信。这种信道使用一对多的广播通信方式。
1 使用点对点信道的数据链路层
1.1 数据链路和帧
链路:就是从一个节点到相邻节点的一段物理链路(有线或者无线),而中间没有其他的交换节点。
数据链路:当需要一条线路上传送数据时,除了必须有一条物理线路外,还必须有有一些通信协议来控制这些数据的传输,把实现这些协议的硬件和软件加在链路上,就构成了数据链路。
帧:点对点通信的数据链路层的协议数据单元,数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据取出并交给网络层。
在点对点通信的数据链路层中,在通信时,主要有以下三步:
(1)节点A的数据链路层吧网络层交下来的IP数据包添加首部和尾部封装成帧;
(2)节点A把封装好的数据帧发送给节点B的数据链路层;
(3)若节点B的数据链路层接收到的帧无差错,则从接收到的帧中取出IP数据包交给上层网络层;否则丢弃这个帧。
1.2 封装成帧
在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。这样的帧是数据链路层的数据传输单元。一个针对长度等于帧的数据部分长度加上帧头和帧尾的长度。在帧的首部和尾部中包含有很多控制信息,如帧定界,用来确定帧的界限。
在发送数据帧时,是从帧首开始发送的,各种数据链路层协议对于帧首和帧尾的格式有明确的规定。同时,为了提高帧的传输效率,应当使帧的数据部分长度尽可能大于首部和胃部的长度,但是,每一种链路层协议都规定了所能传送的帧的数据部分长度上限--MTU,最大传送单元。
帧定界,可以使用特殊的帧定界符,当数据是可打印的ASCII码组成的文本文件时,控制字符SOH(strat of header)放在最前面,表示首部开始,另一个控制字符EOT(end of transmission)表示帧的结束。
1.3 透明传输
当传送的数据帧是用文本文件组成的帧时,其数据部分不会出现像SOH或者EOT这样的帧定界控制字符,所以不管从键盘上输入什么字符都可以放在这样的帧中传输过去,这样的传输就是透明传输。
当传送的数据帧是非ASCII码的文本文件时,某个数据的某个字节的二进制代码正好和SOH或EOT的一样,这样就会导致数据链路层错误地“找到帧边界”,收下部分帧(误认完整的帧),丢弃部分数据(找不到帧界定符SOH)。这就造成了非透明传输。
为了解决透明传输的问题,就必须将数据中可能出现的控制字符“SOH”和“EOT”在接收端不被解释为控制字符。
具体方法:发送端的数据链路层在数据中出现控制字符SOH或EOT的前面插入一个转义字符“ESC”。而在接收端的数据链路层在把数据送往网络层之前删除这个插入的转移字符。这种方法叫做字节填充或字符填充