0

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

A向B发送数据包:

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

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

谢谢。

4

1 回答 1

2

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

于 2013-04-01T03:38:13.793 回答