TCP连接释放学习记录
2020-11-07 本文已影响0人
梧叶已秋声
关于释放过程中,《TCP IP详解卷1》和《计算机网络》中的seq和ack的值有点不太一致。可能是对应不同的场景?
最简单的说明是《计算机网络 自顶向下方法》中的解释,A向B发送FIN报文段,然后B返回一个ACK。B向A发送FIN报文段,然后A返回一个ACK。
然后等一段时间后就资源就被释放。
《计算机网络》中关于状态描述最全。



经典问题:为什么是4次挥手,不能合成3次?
出处:TCP三次挥手以及四次握手的理解
https://zhuanlan.zhihu.com/p/101609581
为什么连接的时候是三次挥手,关闭的时候却是四次挥手?
因为当服务器端收到客户端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当服务器端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉客户端,"你发的FIN报文我收到了"。只有等到我服务器端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。
参考链接:
TCP三次挥手以及四次握手的理解
《TCP IP详解卷1》
《计算机网络》
《计算机网络 自顶向下方法》