“我是喲喲吼說科技,專注于數(shù)據(jù)網(wǎng)絡(luò)的回答,歡迎大家與我交流數(shù)據(jù)網(wǎng)絡(luò)的問題”
何為三次握手?
三次握手就是客戶端與服務(wù)器端建立TCP連接時需要發(fā)送3個包進(jìn)行連接的確認(rèn),在三次握手完成后即可建立連接。那么具體的每次握手都發(fā)送什么信息呢?
1、第一次握手??蛻舳税l(fā)送請求報文,標(biāo)志位SYN設(shè)置為1,隨機產(chǎn)生seq值為x,客戶端進(jìn)入SYN_SENT狀態(tài),等待服務(wù)器端的回應(yīng)。
2、第二次握手。服務(wù)器端接收到請求報文,將SYN和ACK都設(shè)置為1,ack為x+1,隨機產(chǎn)生seq值為y,然后將數(shù)據(jù)包發(fā)送給客戶端進(jìn)行確認(rèn),服務(wù)器端進(jìn)入SYN_RCVD狀態(tài)。
3、第三次握手??蛻舳耸盏交貞?yīng)的數(shù)據(jù)包后,確認(rèn)ack是否為x+1,以及ACK是否為1,若正確,則將ACK設(shè)置為1,ack為y+1,然后將數(shù)據(jù)發(fā)送給服務(wù)器端。服務(wù)器端在接受到數(shù)據(jù)后檢查ack是否為y+1,ACK是否為1,若正確則正確建立連接,雙方均進(jìn)入ESTAB-LISHED狀態(tài),完成三次握手。
若是用簡單的語言來描述的話,可以根據(jù)書本上經(jīng)典的“兩軍通信”來理解。
背景為山的兩頭為紅軍和藍(lán)軍,山上為白軍,紅軍和藍(lán)軍都不是白軍的對手,若想要打敗白軍必須一起行動才可以,這時兩軍需要通信進(jìn)行溝通了:
1、紅軍派人過去告訴藍(lán)軍明天中午12點進(jìn)攻;
2、藍(lán)軍接受到通知并同意以后,派人告訴紅軍已收到指令,并同意該時間進(jìn)攻;
3、紅軍收到通知后,會再次派人告訴藍(lán)軍自己已經(jīng)收到回應(yīng),決定明天中午12點進(jìn)攻。
這三次過程后,紅軍和藍(lán)軍就會在第二天中午12點發(fā)起進(jìn)攻。這就可以簡單的理解為三次握手。
請大家多多關(guān)注我,探討其它問題。
聯(lián)系客服