關(guān)于TCP的三次握手

1.幾個重要縮寫的解釋

ACK:acknowledgement,表示響應(yīng)

SYN:synchnorous,表示請求簡歷連接

FIN:Finished,表示結(jié)束連接

PSH:Push,表示有數(shù)據(jù)傳輸

RST:Rest,表示連接重置

URG:urgent,表示緊急

順序號:sequence number

確認(rèn)號:acknowledgement number?

2.三次握手過程


第一次握手:客戶端的TCP首先向服務(wù)器端的TCP發(fā)送一個特殊的TCP報文段。該報文段中不包含應(yīng)用層數(shù)據(jù)。但是在報文段首部中的一個標(biāo)志位SYN=1,該報文被稱為SYN報文段。另外,客戶會隨機(jī)地選擇一個初始序列號(client_isn),并將此編號置于SYN報文段中。該報文段被封裝成一個IP數(shù)據(jù)報中發(fā)送給服務(wù)器。SYN報文段:SYN=1,seq=client_isn

第二次握手:一旦SYN報文段的IP數(shù)據(jù)報到達(dá)服務(wù)器主機(jī),服務(wù)器會提取SYN報文段,為該TCP連接分配TCP緩存和變量,并向該客戶TCP發(fā)送允許連接的報文段。該報文段也不包含應(yīng)用層數(shù)據(jù)。包含三個重要的信息。首先SYN比特被置位1,其次,該TCP報文段首部的確認(rèn)信息被置位client_isn+1,最后,服務(wù)器選擇自己的初始序號(server_isn)。SYNACK報文段:SYN=1,ack=client_isn+1,seq=server_isn

第三次握手:在收到SYNACK報文段后,客戶也要給該連接分配緩存和變量。同時發(fā)送報文段。該報文段格式:SYN=0,seq=client_isn+1,ack=server_isn+1.

3.四次揮手過程(斷開連接)


client和server都可以斷開連接。下面以客戶斷開連接為例。

第一次:客戶端發(fā)送TCP報文段:FIN=1

第二次:服務(wù)端返回一個確認(rèn)報文段:ACK

第三次:服務(wù)端發(fā)送自己的終止報文段,F(xiàn)IN=1

第四次:客戶對服務(wù)器報文段進(jìn)行確認(rèn),ACK

4.客戶TCP經(jīng)歷的典型的TCP狀態(tài)序列


客戶TCP開始時處于CLOSED(關(guān)閉狀態(tài))??蛻舻膽?yīng)用程序發(fā)起一個新的TCP連接,發(fā)送一個SYN報文段。發(fā)送完報文段后,客戶進(jìn)入了SYN_SENT狀態(tài)(等待來自服務(wù)器TCP的對客戶所發(fā)報文段進(jìn)行確認(rèn)且SYN比特被置位1的一個報文段)。收到這樣一個報文段后,客戶進(jìn)入ESTABLISHED(已建立)狀態(tài)(TCP客戶就能發(fā)送和接受包含有效載荷數(shù)據(jù))。如果客戶端需要斷開連接??蛻舳税l(fā)送FIN=1報文段,并進(jìn)入FIN_WAIT_1狀態(tài)(等待一個來自服務(wù)端確認(rèn)的ACK=1)。當(dāng)他收到確認(rèn)后,客戶進(jìn)入FIN_WAIT_2狀態(tài)(等待來自服務(wù)器端的FIN=1報文),當(dāng)收到服務(wù)器端報文后,客戶進(jìn)入TIME_WAIT狀態(tài)。假定ACK丟失時,TIME_WAIT狀態(tài)使TCP客戶重新上傳最后確認(rèn)的報文。

5.服務(wù)端狀態(tài)序列


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容