TCP三次握手(通俗易懂)

一--導讀緩存

  前不久中國和外國RPEC協議的簽定,標誌着東亞自貿區的創建成功。如今韓國和日本要作貿易。日本一直監聽着韓國總統的一舉一動,但他又不會主動。(服務器的監聽狀態)只是被動的等着韓國總統先開口。首先韓國總統發送信息給日本。信息內容爲「安倍兄,我想和你作點小生意,我發500臺三星手機給你」。安倍收到以後回覆:「我是安倍小文啊,收到你的消息了,我要500+1臺三星,並且我以50輛汽車做爲對等交換」。韓國總統收到安倍會話,並回復:「安倍兄,你的消息我已收到,我給你發500+1臺手機,但你也得給我發50+1輛汽車」。因爲韓國小,船也小,只能分批次去運這些手機,而且安排相應的人員去管理當前發送兩個國家都有本身的接收人員和發送人員去管理這些貨物 。而且若是這些手機在路上不當心被搶了或者丟了。韓國都得從新讓專門的人去發送手機臺數和接收汽車輛數。服務器

TCP服務器的傳輸控制塊:spa

 

指向發送和接收緩存的指針(管發和收的人)
指向重傳隊列的指針(從新發送的人)
當前的發送和接收序號(管如今發多少和收多少的人)指針

 

 

二---TCP鏈接要解決的三個問題blog

TCP的鏈接創建主要解決如下三個問題:
1--使TCP雙方可以知道對方的存在
2--使TCP雙方可以協商一些參數(如最大窗口值,是否使用窗口擴大選項和時間戳選項以及服務質量)
3--使TCP雙方可以對運輸實體資源(如緩存大小,鏈接表中的項目等)進行分配。隊列

 

三---圖解TCP三次握手進程

 

 

圖中資源

SYN:同步序列編號(Synchronize Sequence Numbers)。是TCP/IP創建鏈接時使用的握手信號
同步位SYN=1,代表這是一個TCP鏈接請求報文段(至關於導讀中的「安倍」)。同步

seq=x(至關於導讀中的「500臺三星」),做爲TCP客戶進程選擇的初始字號,(請求

注意:TCP規定的SYN被設置爲1的報文段不能攜帶數據,但要消耗一個序號)。(也就是韓國總統沒有說到500,可是他說了一句話)

第一個ACK=1(至關於導讀中的「小文啊,收到你的消息了」)。

seq=y (至關於導讀中的50輛汽車)

ack=x+1(至關於導讀中的500+1)。

第二個ACK=1(至關於導讀中的「安倍兄,你的消息我已收到」)

seq=x+1(我給你發500+1臺三星

ack=y+1(但你得給我發50+1臺汽車

 

四--可否只有兩次握手?

答案確定是不能。看下圖

紅線部分爲一個遲到的鏈接請求,而且重傳計時器結束了他尚未到達,因而發生重傳(黑線)。

若只有兩次握手,當遲到的到達後,接收方收到了,而後就按規矩創建鏈接,安排專人(資源)去等待發送方發送數據。可是發送方已經重傳過了,他並不知道這個遲到的請求到達了(他也覺得重傳過了就不會再有重複請求到達),因而接收方就這樣傻傻的等待。

三次握手能防止已失效的鏈接請求報文段忽然又傳到TCP服務器,致使錯誤,浪費資源。

相關文章
相關標籤/搜索