1. 程式人生 > >TCP/IP四層模型簡述

TCP/IP四層模型簡述

1、TCP/IP協議是由七層模型簡化成四層而來。

七層有底向上分別是:物理層、資料鏈路層、網路層、傳輸層、會話層、表示層、應用層。

簡化後的四層分別是:主機到網路層(位元)、網路層(資料幀)、傳輸層(資料包)、應用層(資料段)。

每一層對於上一層來講是透明的,上層只需要使用下層提供的介面,並不關心下層是如何實現的。

TCP/IP模型參考圖如下(圖為轉載):

HAHA

TCP/IP層次模型參考如下圖(圖為轉載):

HAHA

由圖可見,TCP/IP協議實際上關心的是網路層和傳輸層之間得傳輸。

2、資料傳輸

傳輸資料時,傳輸端,將資料段分成資料包,然後在把每一個數據包分成數幀塞到網路互聯層的資料幀中傳輸給對面。對面再將資料幀組合成資料包,最後解析成資料段供上層使用。

其中IP協議保證,資料幀可以從源主機傳輸到目標主機。在傳輸過程中採取某種策略以最優的方式達到目標主機。但並不保證到達的順序,本身是不可靠的,不面向連線的。這裡就需要上層的控制。

IP報文格式如下(圖為轉載):

HAHA

IP不提供傳送、接收、出錯等通知。
IP不提供“埠號”之類的標記來隔離發到目標IP地址的資料包。
IP不提供雙向通訊。
IP不會用任何方式對多個包排序或分組。

上層(傳輸層)定義了兩種不同的協議,即:傳輸控制協議TCP(transmission control protocol)和使用者資料報協議UDP(user datagram protocol)。

TCP是一種面向連線(雙向)的,安全的協議。連線時通過三次握手協議實現。TCP將源主機的資料有序無差錯的發往目標主機,同時可以通過在協議中新增對方緩衝區的大小,來達到控制流量的目的。

UDP是一種不可靠的,無連線的協議,穿透性比TCP協議強。穿透性由TTL決定,每穿透一層TTL減1。

追求安全、穩定或想控制流量的的時候可以使用TCP協議,如檔案傳輸FTP,超文字連結HTTP。

在資料量大、或者網路不穩定(TCP網路校驗耗時不適合網路差的時候)、或要求高穿透性的時候可以使用UDP協議。比如QQ聊天(QQ聊天的UDP協議,會有QQ伺服器加層控制保證資料可靠)。

TCP資料段格式如下:

H

   重點說下標誌位欄位,標誌位欄位中的AKG用來確認序號有效,連線和斷開時都要使用。SYN表示發起一個連線,FIN表示結束。

UDP資料欄位如下:

H

可以看出UDP和TCO都包含源埠號和目標埠號。

3、TCP的三次握手鍊接和四次握手釋放

TCP連線需要3次握手,白話解釋如下:客戶端高速伺服器我要連線了,然後發一個AKG過去,伺服器接到之後高速客戶端,我知道你想連線了,對AKG進行處理返回客戶端,然後客戶端收到後再高速伺服器,恩,我知道你知道我要連線了,再將AKG處理髮回伺服器。然後就可以進行通訊了。

詳情如下:

源主機發送一個同步標誌位(SYN)置1的TCP資料段。此段中同時標明初始序號(Initial Sequence Number,ISN)。ISN是一個隨時間變化的隨機值。  
目標主機發回確認資料段,此段中的同步標誌位(SYN)同樣被置1,且確認標誌位(ACK)也置1,同時在確認序號欄位表明目標主機期待收到源主機下一個資料段的序號(即表明前一個數據段已收到並且沒有錯誤)。此外,此段中還包含目標主機的段初始序號。  
源主機再回送一個數據段,同樣帶有遞增的傳送序號和確認序號。

TCP釋放需要4次握手,因為TCP/IP是雙工管道,雙方的讀寫都需要關閉,同時也是對稱的,雙方都可以先發起關閉。白話過程解釋如下:

分兩個階段。

一、客戶端先告訴伺服器,我要關啦,然後伺服器收到後,關閉自己的讀通道,然後告訴客戶端我接到你的請求了,客戶端收到後,關閉自己的寫通道。

二、然後客戶端再告訴伺服器,我知道你知道我想關閉了。伺服器收到後,關閉自己的讀通道。然後伺服器告訴客戶端我知道你知道我知道你想關閉了,客戶端收到後關閉自己的讀通道。

詳情如下:

  第一階段   客戶機發送完資料之後,向伺服器傳送一個FIN資料段,序列號為i;
    1.伺服器收到FIN(i)後,返回確認段ACK,序列號為i+1,關閉伺服器讀通道;
    2.客戶機收到ACK(i+1)後,關閉客戶機寫通道;
   (此時,客戶機仍能通過讀通道讀取伺服器的資料,伺服器仍能通過寫通道寫資料)
    第二階段 伺服器傳送完資料之後,向客戶機發送一個FIN資料段,序列號為j;
    3.客戶機收到FIN(j)後,返回確認段ACK,序列號為j+1,關閉客戶機讀通道;
    4.伺服器收到ACK(j+1)後,關閉伺服器寫通道。
這是標準的TCP關閉兩個階段,伺服器和客戶機都可以發起關閉,完全對稱。

參考如下:http://www.cnblogs.com/BlueTzar/articles/811160.html  四層模型

http://www.cnblogs.com/Jessy/p/3535612.html  三次/四次握手

http://blog.csdn.net/herbert5069/article/details/31358641 網路穿透TTL