1.请看图
2.四次挥手
**如图
seq 报文的序列号
ack 确认序号
SYN 同步序号,用于建立连接过程
ACK 确认序号标志(0-忽略)(1-有效)
FIN finish标志 用于释放连接(1-让对方关闭连接)
2MSL
A在第四次挥手时,B没收到A发送的ACK包
此时B执行第三次挥手逻辑,重发FIN包
那么在2MSL的时间内,A就还能在执行第四次挥手逻辑,给B返回ACK包
#查看服务器各种状态的连接数量
$ netstat -n | awk ‘/^tcp/{++S[$NF]}END{for(a in S) print a,S[a]}’
2.1.第一次挥手
A 主动向 B 发送一个 FIN报文段,让B关闭连接
然后 A处于等待状态
2.2.第二次挥手
B 收到 FIN报文段后,B给A发送一个 ACK报文段
然后 B处于等待关闭状态
2.3.第三次挥手
B 主动向 A 发送一个 FIN+ACK 报文段,让A关闭连接
此时 B处于等待关闭状态
2.4.第四次挥手
A收到 FIN+ACK 报文段后, A给B发送一个 ACK报文段,让B关闭连接
然后 A经过2MSL时间后关闭
B收到报文段后立即关闭
3.为什么需要四次挥手
因为TCP建立的连接是全双工,所以需要双方互相通知对方关闭,即
1.发送FIN通知对方,让对方关闭
2.接收对方的ACK,然后关闭自己
《TCP详解》
《TCP的三次握手详解》
.........