【问题标题】:retransmission mechanism in TCP protocolTCP协议中的重传机制
【发布时间】:2013-04-01 12:16:26
【问题描述】:

有人能简单描述一下 TCP 中的重传机制吗? 我想知道在这种情况下它是如何处理的?

A 向 B 发送数据包:

  1. A 发送一个数据包。
  2. B 接收和发送 ack,但是这个 ack 丢失了。
  3. 超时并重新发送。

在这种情况下B会收到2个相同的数据包,B如何避免再次处理相同的数据包?

谢谢。

【问题讨论】:

标签: tcp ip


【解决方案1】:

每个数据包都有一个与之关联的序列号。随着数据的发送,序列号会增加数据包中原始数据的数量。您可以将序列号视为数据包中第一个字节与数据流开头的偏移量,尽管它可能不会,也可能不会从零开始。当 A 发送重试时,它将使用与第一次相同的序列号。 B 在接收数据时跟踪序列号,并且可以知道它之前已经看到过重试的序列号。如果它已经使(上层)客户端可以使用该数据,那么它知道它不应该再次这样做。

【讨论】:

  • 差不多。如果它之前已经接收到该数据,即使它只是在套接字接收缓冲区中并且尚未被应用程序读取,它也会被确认广告丢弃。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多