第一次握手:建立連接時,客戶端向服務端發送SYN(同步序列編號),其中包含客戶端的初始序號seq(序列號)=x,並進入SYN_SENT(請求連接)狀態,等待服務器確認。
第二次握手:服務器收到請求后,必須確認客戶端的數據包,同時自己也發送一個SYN(同步序列編號)包,即SYN(同步序列編號)+ACK(確認字符)包,隨機產生一個自己的初始序號seq(序列號)=y,此時服務器進入SYN_RECV(接收到了客戶端的同步序列編號並且發送了確認字符)狀態。
第三次握手:客戶端收到服務器的SYN_ACK(同步序列編號+序列號)包,向服務器發送一個序列號(seq=x+1),確認號為ack(客戶端)=y+1,這個包發送完,客戶端和服務端進入ESTABLISHED(建立連接)狀態,完成三次握手。
SYN:同步序列編號
seq:序列號,報文段攜帶數據的第一個字節編號
ack:確認號,期望收到下一個字節的編號
ACK:確認字符
SYN_SENT:請求連接
SYN_RECV:接收到了客戶端的SYN並且發送了ACK
ESTABLISHED:建立連接