TCP/IP網路模型

阿弱發表於2023-05-08

TCP/IP協議:因特網互聯協議,由網路層的IP協議和TCP協議組成,Internet最基本的協議、Internet國際網際網路絡的基礎。

##分層模型

為了減少網路設計的複雜性,大多數網路都採用了分層結構。在相同的網路中,處於第N層的機器之間使用第N層的協議進行通訊。

TCP/IP網路模型

TCP/IP網路模型

不同機器中包含的對應層的實體叫做對等程式。在對等程式利用協議進行通訊時,並不是直接將資料從一臺機器的第N層傳送到另一臺機器的第N層,而是每一層都把資料連同本層的控制資訊打包交給它的下一層,它的下層把這些內容看做資料,再加上它一層的控制資訊交給更下一層,以此類推,直到最下層的物理介質,由它進行實際的通訊。每層定義的資料結構以及提供上層的服務被稱為協議,層和協議的集合被稱為網路體系結構。

##TCP協議

TCP/IP網路模型

TCP提供了一種面向連線的可靠的位元組流傳輸層服務,將應用層資料封裝成報文段,傳送資料後啟動定時器做超時重發,另一端對接收到的資料進行確認,對資料進行排序和校驗,丟棄重複和無效資料;並提供端到端的流量控制。

每個TCP段都包含源埠號和目的埠號,用於尋找傳送端和接收端應用程式,加上IP首部的源IP和目的IP就可以唯一確定一個TCP連線。

序號用來標識TCP傳送端向TCP接收端傳送的位元組流,表示這個報文段中第一個資料位元組,如果將位元組流看作在兩個應用程式間的單向流動,則TCP用序號對每個位元組進行計數,序號是32bit的無符號數,超過後從0開始。

確認序號則是傳送確認的一端所期望收到的下一個序號,是上次成功收到的位元組序號加1,只有ACK標誌為1時確認序號欄位才有效。

TCP為應用層提供全雙工服務,即資料能在兩個方向上進行獨立地傳輸,因此連線的每一端必須保持各自方向上的傳輸資料序號。

首部長度是首部中32bit的數目。需要這個值是因為選項欄位的長度是可變的。這個欄位佔4個bit,因此TCP的首部的最大長度是15 * 4 = 60 個位元組。

TCP中有6個位元標誌,URG=緊急指標有效;ACK=確認序號有效;PSH=接收方應該儘快將這個報文交給應用層;RST=重建連線;SYN=同步序號用來發起一個連線;FIN=傳送端完成傳送任務

連線的每一端都可以通過宣告視窗大小來指明當前可接收的位元組數,來實現對傳送方的流量控制。

校驗和覆蓋TCP整個報文段:TCP首部和TCP資料。強制性欄位,由傳送端計算和儲存,並由接收端進行驗證。

只有當URG標誌為1時緊急指標才有效。緊急指標是一個正向的偏移量,和序號欄位中的值相加表示緊急資料最後一個位元組的序號。

最常見的可選欄位是最大報文大小,MSS(Maximum Segment Size),每個連線方都在通訊的第一個報文段(SYN標誌)指明這個選項,表示本端所能接收的最大長度的報文段。

三次握手

TCP/IP網路模型

TCP建立連線的過程需要雙方進行三次通訊,其目的是為了同步資訊,如指定連線伺服器的埠號,雙方的初始序列號。由於通道是不可靠的,為了保證資料傳輸的可靠性,就需要在建立連線時就雙方的初始序列號達成一致,以便於在後續的資料傳輸中對收到的資料進行確認。

第一次握手,連線發起方A傳送A端的序列號;
第二次握手,連線接收方B確認並返回B的序列號;
第三次握手,A端確認收到B端迴應的資訊;

缺少第三次握手則就無法確認連線發起端是否收到接收端的資訊,因此為了保證資料傳輸的可靠性,必須經過三次握手。

四次握手

TCP/IP網路模型

TCP連線的關閉需要四次通訊,因為TCP連線是全雙工(資料在兩個方向能同時傳遞),所以每個方向必須進行單獨的關閉。一方完成了它的資料傳送任務後可以傳送FIN來終止這個方向的連線,當一方收到FIN後,應該通知應用層另一端已經終止了那個方向的資料傳送,但仍然可以繼續傳送資料。

第一次握手,發起方A傳送FIN,說明A端已經傳送完資料,終止了這個方向資料傳送;
第二次握手,接收方B傳送ACK,說明B端已經接收完A傳送的資料;
第三次握手,接收方B傳送FIN,說明B端也已經傳送完資料,並終止了這個方向的資料傳送;
第四次握手,發起方A傳送ACK,確認A端已經接收完B傳送的資料;

TIME_WAIT

為什麼TIME_WAIT狀態需要經過2MSL(最大報文段生存時間)才能返回到CLOSE狀態?

  • 為了保證傳送的最後一個ACK報文段能夠到達B端
  • 防止“已失效的連線請求報文段”出現在新連線中。在傳送完最後一個ACK報文段後,再經過實踐2MSL,就可以使連線內所產生的所有報文段,都從網路中消失。這樣就可以使下一個新的連線中不會出現舊的報文段

TCP狀態轉換

TCP/IP網路模型

相關文章