第20章 TCP的成块数据流

20.1 引言

TCP使用滑动窗口协议,允许连续发送多个分组。

20.2 正常数据流

三种典型模式

  1. 每2个报文段确认一次
  2. 窗口填满时确认
  3. 快发送方→慢接收方

窗口更新

  • 接收方通告窗口为0
  • 发送方停止发送
  • 窗口更新报文段恢复发送

20.3 滑动窗口

窗口边沿移动

类型说明
合拢左边沿向右(数据被确认)
张开右边沿向右(窗口增大)
收缩右边沿向左(不推荐)

可用窗口 = 通告窗口 - 已发送未确认

20.4 窗口大小

默认窗口大小

系统默认窗口
4.2BSD2048
4.3BSD4096
Solaris 2.28192
4.4BSD16384

性能建议

  • 以太网上16384字节窗口提升40%吞吐量

20.5 PUSH标志

  • 通知接收方立即交付数据
  • 大多数API不提供设置方法
  • 伯克利实现:清空发送缓存时自动设置

20.6 慢启动

拥塞窗口(cwnd)

  • 初始值:1个报文段
  • 每收到ACK增加1个报文段(指数增长)
  • 实际发送上限 = min(cwnd, 通告窗口)

示例

  • 开始时发送1个报文段
  • 收到ACK后发送2个
  • 再收到ACK后发送4个

20.7 成块数据的吞吐量

带宽时延乘积

容量(bit) = 带宽(b/s) × 往返时间(s)

text

示例

网络带宽时延乘积
T1横跨美国11,580字节
T3横跨美国337,500字节

20.8 紧急方式

TCP紧急方式

  • URG标志置1
  • 紧急指针指向紧急数据的最后一个字节
  • 应用程序处于紧急模式

常见用途

  • Telnet中断键
  • FTP放弃传输

20.9 小结

TCP使用滑动窗口协议实现流量控制。慢启动避免网络拥塞。紧急方式提供通知机制。