第19章 TCP的交互数据流

19.1 引言

  • 约50%的TCP报文段包含交互数据
  • 约90%的交互数据小于10字节
  • 本章以Rlogin为例

19.2 交互式输入

Rlogin连接中,每个按键产生4个报文段:

  1. 按键(客户→服务器)
  2. 确认(服务器→客户)
  3. 回显(服务器→客户)
  4. 回显确认(客户→服务器)

第2和第3报文段可合并(延迟确认)。

19.3 经受时延的确认

  • 延迟最多200ms
  • 如果数据在延迟期间到达,可捎带确认
  • 定时器每200ms溢出一次

19.4 Nagle算法

规则

  • 最多一个未被确认的小分组
  • 确认到达后才能发送下一个

关闭Nagle算法

  • TCP_NODELAY 选项
  • 用于X窗口系统等实时应用

示例

  • 功能键产生多字节序列
  • Nagle算法可能引起时延
  • 关闭后可显著改善响应

19.5 窗口大小通告

  • 通告窗口大小受接收缓存限制
  • 可通过 SO_RCVBUF 修改

19.6 小结

交互数据使用小报文段。延迟确认和Nagle算法减少报文段数量。