【王道】3.2 组帧——字符计数法、首尾定界符法和零比特填充法

3.2 组帧

组帧指的是将网络层递交的分组按照一定规则封装成帧,这些需要解决帧定界、帧同步、透明传输等问题。首先要解决的事透明传输的问题。

3.2.1 字符计数法

字符计数法是指在帧头部使用一个计数字段来表明帧内字符数,存放着目的结点的数据链路层收到字节计数值的时候,就知道后面还有多少个字节数,从而确定帧结束的位置。这种方法的最大问题是如果计数字段出现错误,就会失去帧边界划分的依据,那么接收方就无法判断传输的结束位和下一帧的开始位置,从而导致后续的帧也失去边界,收发双方失去同步。

3.2.2 字符填充的首位定界符法

字符填充法使用特定字符来定界一帧的开始和结束。控制字符SOH放在最前面,表示帧首部的开始,控制字符EOT表示帧的结束。为了使信息为中出现的SOH和EOT不被误判为帧的首尾定界符,可以在信息中出现SOH和EOT的前面加一个特殊的转意字符ESC(ascii码为27)来加以区分,以实现数据的透明传输。

3.2.3 零比特填充的首位定界符法

零比特填充法允许数据帧包含任意个数的比特,也允许每个字符的编码包含任意个数的比特。它使用01111110来标识一帧的开始和结束,为了避免信息中的01111110被误判为首尾定界符,发送方的数据链路层会遍历信息位,在信息位中遇到连续的五个1的时候会在后面加多一个0;而接收方会做该过程的逆操作,在识别了帧的头部和尾部并提取出了其中的信息部分后,遍历信息部分,每遍历到第五个1的时候,自动删除后续的一个0。零比特填充法很容易通过硬件实现,性能优于字符填充法。

3.2.4 违规编码法

在物理层进行比特编码的时候,通常采用违规编码法。比如曼彻斯特编码中将数据比特1编码成“高-低”电平,将数据比特0编码成“低-高”电平,而“高-高”电平和“低-低”电平是违规的,没有规定意义的。可以用这些违规的编码来定界真的起始和终止。

你可能感兴趣的:(前端,缓存,服务器)