TCP三次握手
SYN(同步序列編號),ACK(確認字符),seq(序列號)
1.客戶端向服務端發送請求,報文首部帶SYN=1標誌,同時選擇初始序列號seq=x,客戶端進入SYN-SENT;
2.服務端收到請求報文後,發出確認字符ACK=1,SYN=1,確認號是ack=x+1,同時爲自己初始序列號seq=y,服務端進入SYN-RCVD;
3.客戶端收到確認後,再給服務端給出確認,確認報文是ACK=1,ack=y+1,客戶端的序列號seq=x+1,客戶端進入ESTABLISHED狀態;
4.服務端收到確認後,也進入ESTABLISHED狀態。
TCP四次斷開
FIN(關閉連接)
1.客戶端發出連接釋放報文,報文首部帶FIN=1標誌,序列號爲seq=u,客戶端進入FIN-WAIT-1狀態;
2.服務端收到釋放報文發出確認報文,ACK=1,ack=u+1,生成自己的序列號seq=v,服務器進入CLOSE-WAIT狀態;
3.客戶端收到服務端確認報文後,客戶端進入FIN-WAIT-2狀態,等待服務端發出連接釋放報文;
4.服務端將最後數據發完後,向客戶端發送連接釋放報文,FIN=1,ack=u+1,有可能還有數據沒有傳完,設置序列號爲seq=w,進入LAST-ACK(最後確認)狀態;
5.客戶端收到連接釋放報文後,發出確認,ACK=1,ack=w+1,自己序列號seq=u+1,客戶端進入TIME-WAIT狀態;
6.服務端收到客戶端發出的確認報文後,立即進入CLOSED狀態。