在研究TCP协议生命周期的时候,
有3个阶段:
- 建立连接
- 数据传输
- 连接移除
TCP 有 6 种标志类型:SYN、ACK、PSH、FIN、RST、URG。
TCP有4个定时器:
- 重传定时器
- 持续定时器
- 保活定时器
- Time_Wait 定时器
常规的 TCP 生命周期只有 SYN、ACK、FIN 3 个标志参与,对吧?
在 6 个 flogs 中,它们中的哪些使用了计时器,以及什么计时器?我知道 SYN,FIN 会使用,ACK 不会。PSH、RST、URG 怎么样?
在研究TCP协议生命周期的时候,
有3个阶段:
TCP 有 6 种标志类型:SYN、ACK、PSH、FIN、RST、URG。
TCP有4个定时器:
常规的 TCP 生命周期只有 SYN、ACK、FIN 3 个标志参与,对吧?
在 6 个 flogs 中,它们中的哪些使用了计时器,以及什么计时器?我知道 SYN,FIN 会使用,ACK 不会。PSH、RST、URG 怎么样?
我认为不可能将计时器与标志相关联。计时器与其中使用的发送/接收段操作相关联,而不是标志。
这是一个总结。此处提供了更完整的计时器摘要。
重传定时器
重传计时器与对等方的发送缓冲区中的一个段相关联(每个段都有自己的计时器)。一旦发送了该段,就会启动计时器。如果在收到 ACK 之前定时器超时,则重传段。没有使用特殊标志。
持续定时器
持久计时器用于所谓的“零窗口探测”。如果接收方有完整的接收缓冲区,它会发回一个将其窗口设置为零的数据包。这意味着发送方不能发送任何未来的数据包。
在这种情况下,发送方会定期向接收方发送空段(实际上数据包中有一个字节,但预计会被忽略)。目标是接收者发回它的窗口,发送者知道窗口是否仍然为零。请注意,通常发送方会从其他数据包的 ACK 中获知窗口大小。这是必要的,因为 ACK 可能会丢失。
零窗口探测不使用特殊标志。更多关于零窗口的信息可以在这里找到
保活定时器
用于在一段时间内未收到任何数据的连接上发送保持活动状态。更多关于保命的信息可以在这里找到。
Time_Wait 定时器
当对端在连接终止期间为第二个 FIN 发送 ACK 时,启动此计时器。对等方应该为该计时器的值(~2 分钟)保留连接数据,以防 ACK 丢失并应重新传输。
当这个定时器到期时,可以删除连接状态。不发送任何数据包。
PSH、RST、URG 不使用计时器——那没有意义。
请参阅此问答,了解 PSH 和 URG 的作用。RST 终止连接而不完成它。