器的尾部没有空间了 。这个比特位用来告诉解压缩方设置它自己的历史纪录指
针指向历史纪录缓冲器的开头 。
实现要点:
1.这暗示了每压缩发送了8192字节数据,这个比特位至少必须被设置一次 。
2.这也暗示了这个比特位可以在发送方的历史纪录缓冲器非空的情况设置 。在
压缩包中禁止初始化没有用来压缩数据的历史纪录 。
PallInformational[Page5]
RFC2118MPPCProtocolMarch1997
BitC
这个比特位(假如被设置)用来指明本包是压缩的 。
BitD
这个比特位必须被设置为0.
连续计数
连续计数用来保证包以正确顺序被发送,这样就不会有包被丢弃 。这个计数
从0开始,每次加1,从来不会减,也不会回环 。当所有比特位都是1时,
计数返回到0 。
压缩数据
压缩数据从协议域开始,例如,一个IP包(0021后接着是IP头部),压缩
方将首先尝试压缩0021协议域然后再压缩IP头 。
假如这个包包含头部压缩,预先使用头部压缩,之后,再应用MPPC压缩 。例如,
假如包内包含协议类型值002D,表明使用TCP/IP头部压缩,必须首先压缩协
议类型值002D,然后压缩那个已经被Van-Jacobsen算法压缩过的TCP/IP头
部 。
4.压缩和编码描述
压缩算法遍历生成的帧,输出明文(未压缩过的待发送字节)或者
Length-of-Match是从Offset指明的地方拷贝的字节数 。
举例来说,下面的字符串:
01234
012345678901234567890123456789012345678901234567890
forwhomthebelltolls,thebelltollsforthee.
压缩算法将产生:
forwhomthebelltolls,<16,15><40,4><19,3>e.
PallInformational[Page6]
RFC2118MPPCProtocolMarch1997
明文和批拷贝记号然后再使用MPPC编码方法编码 。
4.1明文编码
明文是未压缩过的待发送字节.假如明文的值小于十六进制80,就用本身值来
编码 。假如明文值大于十六进制7F,它被编码为两比特10,接着是字节的低
7位比特 。
例如:十六进制明文56编码为01010110
十六进制明文E7编码为101100111
4.2批拷贝编码
批拷贝表示压缩数据 。一个“批”有两个元素Offset和Length-of-Match 。
偏移量Offset在Length-of-Match之前被编码 。
4.2.1偏移量Offset编码
Offset值小于64被编码为四比特1111后跟着值的低6位比特 。
Offset值在64到320之间被编码为比特1110后跟着计算值(值-64)的
低8位比特 。
Offset值在320到8191之间被编码为比特110后跟着计算值(值-320)
的低13位比特 。
例子:偏移量值3编码为:1111000011
偏移量值128编码为:111001000000
偏移量值1024编码为:1100001011000000
4.2.2匹配长度Length-of-Match编码
长度值3编码为比特0 。
长度值从4到7编码为比特10后跟着值的低2位比特 。
长度值从8到15编码为比特110后跟着值的低3位比特 。
长度值从16到31编码为比特1110后跟着值的低4位比特 。
PallInformational[Page7]
RFC2118MPPCProtocolMarch1997
长度值从32到63编码为比特11110后跟着值的低5位比特 。
长度值从64到127编码为比特111110后跟着值的低6位比特 。
长度值从128到255编码为比特1111110后跟着值的低7位比特 。
长度值从256到511编码为比特11111110后跟着值的低8位比特 。
长度值从512到1023编码为比特111111110后跟着值的低9位比特 。
长度值从1024到2047编码为比特1111111110后跟着值的低10位比特 。
长度值从2048到4095编码为比特11111111110后跟着值的低11位比特 。
推荐阅读
- 陆上丝绸之路的起点是什么 著名的陆上丝绸之路的起点是什么
- 高温季节 规模猪场管理抓要点
- 多普达P800入手后的几点感受
- my700X的缺点
- 奶牛新生犊牛的护理要点
- E8用了一周 谈点感受
- 对步步高K168手机 我提出的优点和不足
- 母猪临产时的饲养管理要点浅析
- 冬季肉牛增膘管理要点
- 提点封顶什么意思