TCP ACK 混淆

网络工程 tcp 联网
2022-02-15 09:51:28

在主机和服务器之间建立 SYN ACK 连接后发送数据包时,现在可以在主机和服务器之间发送数据包。有时,有一个窗口大小可以通过在接收到段后发送的 ACK 来确定。

假设窗口大小为 100,发送方可以发送 100 个段,然后才能收到 ACK。但是如果第 50 段沿线丢失,会发生什么?

我在某处读到 1-49 和 51-100 被发送,但随后接收方 ACK 为 50,发送方重新发送 1 个段号为 50 的段。我还在某处读到,例如,假设发送方的窗口大小为 3 ,我的发送方发送段 1,2,3,接收方 ACKS 为 4。下一个窗口必须是 4,5,6。

假设 4 没有被发送,接收方再次 ACKS 4,整个段被再次发送,这与之前的想法相冲突。我在想在发送 4 的 ACK 之前发送 5-6,然后在 5-6 之后发送第 4 段。

哪个想法是对的?

1个回答

如果线段 50 沿线丢失会怎样?

接收器既可以

  • 只需等待重新传输(当发送者的未确认段的计时器到期时,它会自动重新发送)
  • 为 50(下一个预期的段)发送重复的 ACK(DUPACK)以提示更快的重传

接收器还可以选择性地确认(SACK)51-100,以避免重传成功接收的段。如果没有选择性 ACK,发送方会重传 50-100。

请注意,TCP 没有客户端/服务器概念。有两台主机,每台主机都可以发送和接收。客户端和服务器只存在于应用层。