Networking 如果由于接收器处的段损坏而导致段丢失,TCP如何区分;s侧还是由于拥挤?

Networking 如果由于接收器处的段损坏而导致段丢失,TCP如何区分;s侧还是由于拥挤?,networking,tcp,network-programming,ip-protocol,transport-layer-protocol,Networking,Tcp,Network Programming,Ip Protocol,Transport Layer Protocol,我有一个疑问,我无法找到发送方是如何区分段丢失的-如果它是由于损坏而丢失的,或者是由于网络拥塞而丢失的?TCP可以通过在TCP报头中提供不同的标志来区分相关连接的当前状态 例如,TCP连接中最常见的标准化握手是: SYN, SYN-ACK, 确认 也被称为三方握手。如果数据包在传输过程中丢失,发送方将能够意识到它需要重新发送数据包,因为它不会从接收方接收ACK Aka,发送方将发送一个“SYN”,并等待“ACK”标志。如果一个没有出现,不用担心,发送者将重新发送SYN 无论这意味着数据包爆炸了,

我有一个疑问,我无法找到发送方是如何区分段丢失的-如果它是由于损坏而丢失的,或者是由于网络拥塞而丢失的?

TCP可以通过在TCP报头中提供不同的标志来区分相关连接的当前状态

例如,TCP连接中最常见的标准化握手是:

SYN, SYN-ACK, 确认

也被称为三方握手。如果数据包在传输过程中丢失,发送方将能够意识到它需要重新发送数据包,因为它不会从接收方接收ACK

Aka,发送方将发送一个“SYN”,并等待“ACK”标志。如果一个没有出现,不用担心,发送者将重新发送SYN

无论这意味着数据包爆炸了,朝着一个奇怪的方向飞去了,还是像你说的那样被破坏了,TCP根本不在乎。TCP只关心一件事,即从接收方获取ACK标志。这是因为TCP固有地信任TCP/IP网络层模型的较低级别负责连接期间的错误处理。错误通常出现在第2层(数据链路层,在TCP工作的传输层之下),在该层有一些时髦的算法来管理数据包错误,例如帧检查序列/前向错误纠正(最重要的是,网络层中的IPv4同样位于传输层之下,它有自己的报头校验和,以确保报头也不会出错!)

然而,拥塞是另一回事。有很多算法可以确保拥塞不会影响连接过程中的数据包流。两大算法是TCP拥塞窗口和TCP慢速启动,它们相互协同工作。我建议阅读这些算法的操作,因为这个主题太大了,不能在这个帖子中提及,但长话短说,它们让连接认识到流量是否拥挤,并有适当的响应

关于这个主题的文章是阅读它的好地方:


希望这能澄清您的问题!

发件人怎么可能知道?无论如何,这会有什么不同?发件人仍然需要重新发送。