Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
imbant opened this issue Mar 25, 2020 · 8 comments

Comments

@imbant
Copy link

imbant commented Mar 25, 2020

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

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

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

@wolverinn
Copy link
Owner

@imbant
Copy link
Author

imbant commented Mar 25, 2020

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

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

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


@wolverinn
Copy link
Owner

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

@imbant
Copy link
Author

imbant commented Mar 25, 2020

对的。

@wolverinn
Copy link
Owner

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

@wolverinn
Copy link
Owner

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

@imbant
Copy link
Author

imbant commented Mar 25, 2020

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

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

@imbant
Copy link
Author

imbant commented Mar 27, 2020

c75dd17#r38086995

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants