29.12实现求精为了加速TCP处理而进行的优化与UDP类似(23.12节)。应利用复制数据计算检验和,并避免在处理中多次遍历数据。你是否曾想过,复制数据计算检验和,能让TCP处理速度快如闪电?正如Dalton等人(1993)所讨论的那些修订措施。连接数增加时,对TCP PCB的线性搜索也成为一个处理瓶颈。如果你对此感兴趣,可以查看哈希表实现,McKenney和Dove(1992)就利用哈希表替代了线性搜索。 Partridge(1993)介绍了Van Jacobson开发的一个用于研究目的的协议实现,这个协议大大减少了TCP的输入处理。你是否好奇接收数据分组的处理过程?首先由IP进行处理(RISC系统中约有25条指令),之后由分用器(demultiplexer)寻找PCB(约10条指令),最后由TCP处理(约30条指令)。这30条指令完成了首部预测,并计算伪首部检验和。真是让人惊叹不已,如果数据报文段通过了首部预测,且应用进程正等待接收数据,则复制数据到应用进程缓存,计算TCP检验和并完成验证(一次遍历中完成数据复制和检验和计算)。你不禁要问,如果TCP首部预测失败呢?则执行TCP输入处理中较慢的路径。你想知道更多关于TCP优化的细节吗?可以看看TCP协议优化思路。
29.13首部压缩
下面介绍TCP首部压缩。尽管首部压缩不是TCP输入处理的一部分,但需要彻底了解TCP。你是否觉得TCP的输入处理已经足够复杂了呢?其实,首部压缩可以进一步提高效率。如果你对哈希表在这个过程中如何发挥作用感到好奇,可以参考这篇哈希表的实现。
暂无评论