Java 使用比特塞满错误检测技术
数据被封装在数据链路层的帧中并通过网络发送。比特填充是一种错误检测技术。
使用的理念非常简单。每个帧以一个特殊的位模式 “01111110 “开始和结束,这是一个标志字节。每当发送方的数据链路层在数据中遇到五个连续的1时,它就会自动在流出的比特流中塞入一个0比特。该位塞入类似于字节塞入,即在数据中的标志字节之前,将一个转义字节塞入正在进行的字符流中。
当接收器看到五个连续的1比特,然后是一个0比特,它会自动染指(删除)0比特。位填充对发送方和接收方计算机的网络层来说是完全透明的。
有了位填充,两个帧之间的边界可以通过标志模式毫不含糊地识别。因此,如果接收方失去了它所处的位置,它所要做的就是扫描输入的标志序列,因为它们只能出现在帧的边界,而不是在数据中。
举例说明:
发送方(客户端):
用户输入一个二进制数据作为输入。
输入数据。
0000001
数据被塞入并被发送到接收方进行解塞。
这里服务器是接收方。
填充在客户端的数据:011111100000001111110
发送到服务器进行解压缩
接收方(服务器):
接收方收到塞满的数据。
来自客户端的填充数据:011111100000001011110
接收方必须从发送方解开输入的数据,得到用户输入的原始数据。
用户输入的原始数据。
解压缩的数据。
0000001
以下是上述逻辑的代码实现。
在发送方(客户端)
在接收方(服务器方)
输入和输出如上图所示。