2 低速串行链路上的TCPIP头部压缩( 二 )


人指出你已经错误地配置了你的系统,它现在不可操作 。
5.2选择最大传输单元(MTU)
从第二章的讨论中我们看到,似乎很有必要对有可能存在交互式流量和多个活动连
接的链路的数据包的最大长度(MTU)进行限制 。(以保持竞争该链路的不同连接得到
良好的交互响应) 。一个很自然的问题是“这会对吞吐量产生多少影响?”回答是它不会
影响 。
图8显示了使用(实线表示)和不使用头部压缩(虚线表示)的MTU与吞吐量的关
系(注35) 。点划线(垂直方向)显示了2400,9600和19200bps的200ms数据包所对应的
MTU 。注重假如使用头部压缩,2400bps的链路还有合理的响应时间并有合理的吞吐量
(83%)(注36) 。
图9显示了链路效率随着链路速度上升时的关系,假设总是选用200ms的MTU(注
37) 。性能曲线的拐点大约为2400bps 。速度小于该点时,效率对速度(或者MTU,因为
两者线性相关)的微小变化很敏感,好的效率以牺牲好的响应时间来作为代价 。速度高
于2400bps,曲线平滑,效率与速度和MTU相对无关 。也就是说,同时得到较好的响应
时间和较高的链路效率是可能的 。
为了说明问题,注重对于一条9600bps链路使用头部压缩,MTU超过200字节将不
会带来任何好处:假如MTU提高到576,平均延迟提高188%,而吞吐量才提高了3%(从
96%-99%) 。

注34:仅答应一个槽将可能使压缩器的代码更复杂 。实现应该尽量避免仅提供一个槽,并且
假如协商仅用一个槽,压缩器实现可以禁止(disable)压缩 。
注35:竖轴是链路速度的百分比 。例如,“95”表示链路带宽的95%分给了用户数据,也就
是说,在9600bps的链路上用户将看到数据传输的速率为9120bps 。在计算相对吞吐量时包
含了封装时加到TCP/IP的压缩头部的链路层(帧)的四个字节 。采用200ms的数据包是假设
链路是异步的,每个字符使用10个比特(8个数据位,1个开始,1个停止,无奇偶校验) 。
注36.但是,2400bps链路所要求的40字节的TCPMSS可能强迫检查(stress-test)你的TCP
实现 。
注37.对于一个典型的异步链路来说,为200ms 。MTU仅是链路速度的0.02倍(以位/秒为单
位) 。
Jacobson[Page20]
RFC1144CompressingTCP/IPHeadersFebruary1990
5.3与数据压缩的交互
自20世纪80年代以来,快速、有效的数据压缩算法如Lempel-Ziv(参考文献[7])以
及其程序如BerkeleyUnix中的compress程序,得到广泛的应用 。在使用低速线路或距离
很长的线路时,通常在发送数据前对数据进行压缩 。对于拨号连接,压缩一般在modem
中进行,而独立于通信主机 。由一些很有趣的问题是:(1)假如给定一个很好的数据压缩
器,头部压缩是否还有必要?(2)头部压缩能与数据压缩一起发生作用?(3)数据压缩是
在头部压缩之前还是之后进行?(注38)
为了研究(1),对典型的telnet对话中用户一方出现的446个TCP/IP包进行Lempel-Ziv
压缩 。因为数据包由击键获得,大多数数据包仅包含一个字节的数据再加上40字节的头
部 。也就是说,该实验本质上对TCP/IP头部进行L-Z压缩的结果进行了评估(measured) 。
压缩率(未压缩数据与压缩后数据之比)为2.6 。换句话说,头部平均从40字节减少到16字

注38:问题的答案是,对于想跳过本章其余部分的读者,分别回答"yes","no"或者"either" 。
Jacobson[Page21]
RFC1144CompressingTCP/IPHeadersFebruary1990
节 。虽然这是个很好的压缩,但距离对相同数据进行头部压缩所产生的具有良好响应时

推荐阅读