如何通俗的去理解TCP的三次握手?

張菲紅

“我是喲喲吼說科技,專注於數據網絡的回答,歡迎大家與我交流數據網絡的問題”

TCP協議採用三次握手的機制建立連接,提供穩定可靠的傳輸服務。


何為三次握手?

三次握手就是客戶端與服務器端建立TCP連接時需要發送3個包進行連接的確認,在三次握手完成後即可建立連接。那麼具體的每次握手都發送什麼信息呢?

1、第一次握手。客戶端發送請求報文,標誌位SYN設置為1,隨機產生seq值為x,客戶端進入SYN_SENT狀態,等待服務器端的回應。

2、第二次握手。服務器端接收到請求報文,將SYN和ACK都設置為1,ack為x+1,隨機產生seq值為y,然後將數據包發送給客戶端進行確認,服務器端進入SYN_RCVD狀態。

3、第三次握手。客戶端收到回應的數據包後,確認ack是否為x+1,以及ACK是否為1,若正確,則將ACK設置為1,ack為y+1,然後將數據發送給服務器端。服務器端在接受到數據後檢查ack是否為y+1,ACK是否為1,若正確則正確建立連接,雙方均進入ESTAB-LISHED狀態,完成三次握手。

若是用簡單的語言來描述的話,可以根據書本上經典的“兩軍通信”來理解。

背景為山的兩頭為紅軍和藍軍,山上為白軍,紅軍和藍軍都不是白軍的對手,若想要打敗白軍必須一起行動才可以,這時兩軍需要通信進行溝通了:

1、紅軍派人過去告訴藍軍明天中午12點進攻;

2、藍軍接受到通知並同意以後,派人告訴紅軍已收到指令,並同意該時間進攻;

3、紅軍收到通知後,會再次派人告訴藍軍自己已經收到回應,決定明天中午12點進攻。

這三次過程後,紅軍和藍軍就會在第二天中午12點發起進攻。這就可以簡單的理解為三次握手。

請大家多多關注我,探討其它問題。


喲喲吼說科技

TCP的三次握手很好理解,相當於這樣的場景:

A:你瞅啥?

B:瞅你咋地?

A:來,過來嘮嘮。

這不是開玩笑,這不是開玩笑,這不是開玩笑!

詳解TCP三次握手

第一步,A向B發送了一句“你瞅啥?”。這個時候:

A:不能確認B是否收到。

B:確定A能發消息。

第二步,B收到A的消息之後,回覆了一句“瞅你咋地?”。這個時候:

A:確認B能收到。

B:確認A能發消息,但是不確定A能不能收到消息。

第三步,A收到B的“瞅你咋地?”之後,發送了一句“來,過來嘮嘮。”。這個時候:

A:確認B能發能收。

B:確認A能發能收。

然後他們就開始愉快的“嘮嘮”。

TCP/UDP

除了TCP之外,我們還常聽到的是UDP,那麼他倆有啥區別呢?

TCP對應的是可靠性要求高的應用,從上面的解釋可以看出來,在真正通信之前要三次握手,是面向連接的;並且TCP利用序列號保證消息的有序性。

而UDP對應的則是可靠性要求低,但是流量大、速度快的應用;和TCP相比,UDP是無連接的並且可能是無序的。

TCP更重量,UDP更輕量,沒有高低之分,只是應用的場景不同。

希望我的回答可以幫助到你!


分享到:


相關文章: