Waking-Up icon indicating copy to clipboard operation
Waking-Up copied to clipboard

计算机网络-“第三次握手中,如果客户端的ACK未送达服务器”表述有误吧?

Open imbant opened this issue 4 years ago • 8 comments

文中说如果服务端没收到第二次握手的 ACK,此时客户端发送数据,服务端会以 RST 回应 但根据这个回答,作者的观点是此时服务端收到客户端的数据,会自然切换到 established 状态,且接收数据。在评论中作者回答了原因是:

除了第一个SYN报文,其它报文都需要有ACK。

因此服务端能收到数据 + ACK number。 请问原文说服务端会以 RST 回应有相关证据吗?

imbant avatar Mar 25 '20 02:03 imbant

https://blog.csdn.net/gochenguowei/article/details/79649997

wolverinn avatar Mar 25 '20 08:03 wolverinn

https://blog.csdn.net/gochenguowei/article/details/79649997

我之前说的有些模糊,分两种情况吧:

  • 服务端在预设的时间内没有收到 ACK,则根据超时重传机制,重新发送 ACK/SYN,此时服务端还在 SYN RECEIVED 状态。 这时收到客户端的报文,由于报文中带有 ACK,所以状态转为 ESTABLISHED
  • 上边的超时重传机制依然超时,则服务端发送 RST,并转为 CLOSE 状态。如果这个状态下还能收到客户端的报文,也发送 RST 报文。这次的 RST 就是原文中以RST回应的报文。

imbant avatar Mar 25 '20 08:03 imbant

就是说,server需要是CLOSED之后才会以RST应答client发的报文,而在server超时重传的过程中如果client发送其他报文(非ACK),那么server会以差错报文应答?

wolverinn avatar Mar 25 '20 09:03 wolverinn

对的。

imbant avatar Mar 25 '20 09:03 imbant

能问一下这个图片是哪本书上面的吗?

wolverinn avatar Mar 25 '20 09:03 wolverinn

谢谢,原文已经改成更精确的版本了

wolverinn avatar Mar 25 '20 09:03 wolverinn

能问一下这个图片是哪本书上面的吗?

应该是这本《TCP/IP协议族》,搜一下吧

imbant avatar Mar 25 '20 12:03 imbant

https://github.com/wolverinn/Waking-Up/commit/c75dd175c628e371c177ff5b468ecd5752428d2b#r38086995

imbant avatar Mar 27 '20 08:03 imbant