关于老师提到的超时断开
来源:4-5 TCP链接建立与断开

慕前端7365659
2020-06-29
建立连接的时候,老师说如果服务器没有进入established状态,客户端发送的数据包,会超时断开,但不应该是服务器没收到,不能发送ACK包,客户端收不到ACK包,然后超时重传吗?为什么这里是超时断开?非常好奇,希望可以得到老师解答。
写回答
1回答
-
ccmouse
2020-06-29
这里的“重传”是指TCP协议里规定的重传机制。在链接建立时期,协议并没有规定超时后应该如何“重传”
情况1:客户端第一个SYN,如果没有等到ACK,连接建立就失败了。系统(比如操作系统的TCP协议栈)当然会重新尝试发送新的SYN,并带上新的序号。但这在TCP的角度来说是一个新的链接了。如果超越了重传次数(系统可以配置),才会报错。
情况2:服务器端若收到SYN,返回SYN+ACK,但是没有等到客户端对这个ACK的ACK,系统也会重传SYN+ACK。但是如果超越了重传的次数(系统可以配置),会把这个链接断开。后续客户端发来的包,服务器有可能会回RST(Reset),让客户从头开始重新建立链接。
情况3:再往后,客户端收到了服务器的SYN+ACK,发送ACK,客户端即认为链接建立完成。后续就是TCP重传机制所涉及的规则了。注意这里这三次握手最后的ACK也可能服务器没有收到,这样从服务器端看其实就是上面情况2。
00
相似问题