Waking-Up
Waking-Up copied to clipboard
计算机网络-“第三次握手中,如果客户端的ACK未送达服务器”表述有误吧?
文中说如果服务端没收到第二次握手的 ACK,此时客户端发送数据,服务端会以 RST 回应
但根据这个回答,作者的观点是此时服务端收到客户端的数据,会自然切换到 established
状态,且接收数据。在评论中作者回答了原因是:
除了第一个SYN报文,其它报文都需要有ACK。
因此服务端能收到数据 + ACK number。 请问原文说服务端会以 RST 回应有相关证据吗?
https://blog.csdn.net/gochenguowei/article/details/79649997
https://blog.csdn.net/gochenguowei/article/details/79649997
我之前说的有些模糊,分两种情况吧:
- 服务端在预设的时间内没有收到 ACK,则根据超时重传机制,重新发送 ACK/SYN,此时服务端还在
SYN RECEIVED
状态。 这时收到客户端的报文,由于报文中带有 ACK,所以状态转为ESTABLISHED
- 上边的超时重传机制依然超时,则服务端发送 RST,并转为
CLOSE
状态。如果这个状态下还能收到客户端的报文,也发送 RST 报文。这次的 RST 就是原文中以RST回应的报文。
就是说,server需要是CLOSED之后才会以RST应答client发的报文,而在server超时重传的过程中如果client发送其他报文(非ACK),那么server会以差错报文应答?
对的。
能问一下这个图片是哪本书上面的吗?
谢谢,原文已经改成更精确的版本了
能问一下这个图片是哪本书上面的吗?
应该是这本《TCP/IP协议族》,搜一下吧
https://github.com/wolverinn/Waking-Up/commit/c75dd175c628e371c177ff5b468ecd5752428d2b#r38086995