一、了解TCP報文段
Seq:序列號,占32位,用來標識從TCP源端向目的端發送的字節流,發起方發送數據時對此進行標記。
ACK(Acknowledgement):確認序號位,當該為1時,用於確認發送方的數據
窗口大小:用於說明本地可接收數據段的數目,窗口大小是可變的
SYN:同步序列號,TCP需要建立連接時將該值設為1
FIN:當TCP斷開連接時將該位置為1
ACK(Acknowledgement Number):確認序號,占32位,只有ACK標志位為1時,確認序號字段才有效,Ack=Seq+1
其他的可以參考:https://blog.csdn.net/mary19920410/article/details/58030147
二、TCP/IP三次握手
圖片中名詞的解釋:
CLOSED 初始(無連接)狀態。
LISTEN 偵聽狀態,等待遠程機器的連接請求。
SYN_SEND 在TCP三次握手中,主動連接端發送了SYN包后,進入SYN_SEND狀態,等待對方的ACK包。
SYN_RECV 在TCP三次握手中,主動連接端收到ACK包后,進入SYN_RECV狀態。
ESTABLISHED 完成TCP三次握手后,主動連接端進入ESTABLISHED狀態。此時,TCP連接已經建立,可以進行通信。
TCP三次握手的過程如下:
1. 客戶機1(主動連接端)發送一個SYN包給服務器2(被動連接端);
2. 服務器2(被動連接端)收到SYN包后,發送一個帶ACK和SYN標志的包給客戶機1(主動連接端);
3. 客戶機1(主動連接端)發送一個帶ACK標志的包給服務器2(被動連接端),握手動作完成。
三、TCP/IP四次揮手
圖片中名詞的解釋:
FIN_WAIT_1 在TCP四次斷開時,主動關閉端發送FIN包后,進入FIN_WAIT_1狀態。
FIN_WAIT_2 在TCP四次斷開時,主動關閉端收到ACK包后,進入FIN_WAIT_2狀態。
TIME_WAIT 在TCP四次斷開時,主動關閉端發送了ACK包之后,進入TIME_WAIT狀態。
CLOSE_WAIT 在TCP四次斷開時,被動關閉端收到FIN包后,進入CLOSE_WAIT狀態。
LAST_ACK 在TCP四次斷開時,被動關閉端發送FIN包后,進入LAST_ACK狀態,等待對方的ACK包。
TCP四次斷開的過程如下:
1. 客戶機1(主動連接端)發送一個FIN包給服務器2(被動連接端)請求斷開連接;
2. 服務器2(被動連接端)收到FIN包后,發送一個ACK包給客戶機1(主動連接端);
3. 服務器2(被動連接端)發送了ACK包后,再發送一個FIN包給客戶機1(主動連接端)確認斷開;
4. 客戶機1(主動連接端)收到FIN包后,發送一個ACK包,當服務器2(被動連接端)收到ACK包后,四次斷開動作完 成,連接斷開。



