为什么重传整个TCP / UDP数据包而不是仅仅丢失数据

问题描述 投票:0回答:1

所以,这可能是一个愚蠢的问题,但是据我了解,如果我正在通过TCP或UDP发送数据,如果组成该TCP / UDP数据包的任何IP数据包被丢弃,则整个TCP / UDP数据包将重新传输,但是我的问题是为什么我们不能仅发送丢失的数据部分。目前,我唯一的理由是,如果我们要为收到的每个IP数据包发送一个ACK,这将加剧网络拥塞。这是正确的还是有其他原因,当仅丢弃一个或几个IP数据包时,我们必须重新发送TCP / UDP数据包中的所有数据?

networking tcp udp router packet
1个回答
0
投票

TCP堆栈跟踪TCP段的调度和重传。每个TCP段都有一个序列号。 TCP堆栈跟踪TCP序列号,并且只能重新传输整个TCP段。

如果将TCP段分段为多个IP数据报,则TCP堆栈可能不知道这一点,因为它可能发生在中间主机上。但是,通常不会发生TCP段分段,因为TCP专门遵守MTU / MSS以避免TCP段fragmentation on IP level

© www.soinside.com 2019 - 2024. All rights reserved.