- 论坛徽章:
- 0
|
TCP/IP协议详解中有这样一段 (十九章)
19.3 经受时延的确认
把从bsdi发送到 srv4的7个ACK标记为经受时延的 ACK。通常 TCP在接收到数据时并不 立即发送 ACK;相反,它推迟发送,以便将 ACK与需要沿该方向发送的数据一起发送(有时 称这种现象为数据捎带 ACK)。绝大多数实现采用的时延为 200 ms,也就是说, TCP将以最大200 ms 的时延等待是否有数据一起发送。
如果观察 bsdi接收到数据和发送 ACK之间的时间差,就会发现它们似乎是随机的: 123.5、65.6、109.0、132.2、42.0、140.3和195.8 ms 。相反,观察到发送 ACK的实际时间(从 0开始) 为: 139.9、539.3、940.1、1339.9、1739.9、1940.1和2140.1 ms (在图 19-3中用星号标出)。 这些时间之间的差则是200 ms 的整数倍,这里所发生的情况是因为 TCP使用了一个 200 ms 的 定时器,该定时器以相对于内核引导的 200 ms 固定时间溢出。由于将要确认的数据是随机到 达的(在时刻 16.4, 474.3, 831.1 等),TCP在内核的 200 ms 定时器的下一次溢出时得到通知。 这有可能是将来 1~200 ms 中的任何一刻。
这里面的时间“ 139.9、539.3、940.1、1339.9、1739.9、1940.1和2140.1 ms (在图 19-3中用星号标出)。 这些时间之间的差则是200 ms 的整数倍”是怎么计时的,200ms不是从收到数据后开始计时么,既然收到数据的时间是随机的那么每次发送ACK时间间隔为什么会是200ms的整数倍啊 求解释啊 |
|