TCP四次揮手

HR 『給我講講TCP鏈接的結束過程』
St 『呐尼 你不按常理出牌啊』
是的 我們都知道TCP建立連接的三次握手
鏈接結束要揮手的過程不是很清晰 是啊 爲了不至於被問的尷尬 還是要了解下揮手過程
TCP断开连接时 会有四次揮手過程
首先我們看一看TCP的報文首部

这里需要解释一下的是 4位首部长度这个字段 我们知道TCP报文首部长度一般为20个字节 四比特的数据只能表示0--15嘛 明显不够呀
找资料说是单位不同 这里表示首部中32bit字的数目 可表示15*32bit=60字节的首部 就是单位是4字节长度
揮手過程圖:

第一次揮手:客户端给服务器发送TCP包 用来关闭客户端到服务器的数据传送 将标志位FIN和ACK置为1 序号为X=1 确认序号为Z=1
第二次揮手:服务器收到FIN后 发回一个ACK(标志位ACK=1) 确认序号为收到的序号加1 即X=X+1=2 序号为收到的确认序号=Z
第三次揮手:服务器关闭与客户端的连接 发送一个FIN 标志位FIN和ACK置为1 序号为Y=1 确认序号为X=2
第四次揮手:客户端收到服务器发送的FIN之后 发回ACK确认(标志位ACK=1) 确认序号为收到的序号加1 即Y+1=2 序号为收到的确认序号X=2
莫名其妙的輸入法 簡繁不受控
「你还是一个人吗」
「难道我回变成一条狗吗」
「汪汪汪」