tcp/ip參考模型分為哪幾層?

2020-11-25 15:01:27

tcp/ip參考模型分為4層,分別為:1、資料鏈路層,實現網路卡介面的網路驅動程式,以處理資料在物理媒介上的傳輸;2、網路層,實現封包的選路和轉發;3、傳輸層,為兩臺主機上的應用程式提供端到端的通訊;4、應用層,負責處理應用程式的邏輯。

TCP/IP協定族是一個四層協定系統,自底而上分別是資料鏈路層、網路層、傳輸層和應用層。每一層完成不同
的功能,且通過若干協定來實現,上層協定使用下層協定提供的服務。
在這裡插入圖片描述

資料鏈路層(網路介面層)

資料鏈路層實現了網路卡介面的網路驅動程式,以處理資料在物理媒介(比如乙太網、令牌環等)上的傳輸。

資料鏈路層兩個常用的協定是ARP協定(Address Resolve Protocol,地址解析協定)和RARP協定(ReverseAddress Resolve Protocol,逆地址解析協定)。它們實現了IP地址和機器實體地址(通常是MAC地址,乙太網、令牌環和802.11無線網路都使用MAC地址)之間的相互轉換。

網路層使用IP地址定址一臺機器,而資料鏈路層使用實體地址定址一臺機器,因此網路層必須先將目標機器的IP地址轉化成其實體地址,才能使用資料鏈路層提供的服務,這就是ARP協定的用途。

RARP協定僅用於網路上的某些無盤工作站。因為缺乏儲存裝置,無盤工作站無法記住自己的IP地址,但它們可以利用網路卡上的實體地址來向網
絡管理者(伺服器或網路管理軟體)查詢自身的IP地址。執行RARP服務的網路管理者通常存有該網路上所有機器的實體地址到IP地址的對映。

網路層

網路層實現封包的選路和轉發。
WAN(Wide Area Network,廣域網)通常使用眾多分級的路由器來連線分散的主機或LAN(Local Area Network,區域網),因此,通訊的兩臺主機一般不是直接相連的,而是通過多箇中間節點(路由器)連線的。網路層的任務就是選擇這些中間節點,以確定兩臺主機之間的通訊路徑。同時,網路層對上層協定隱藏了網路拓撲連線的細節,使得在傳輸層和網路應用程式看來,通訊的雙方是直接相連的。

網路層最核心的協定是IP協定(Internet Protocol,因特網協定)。IP協定根據封包的目的IP地址來決定如何投遞它。如果封包不能直接傳送給目標主機,那麼IP協定就為它尋找一個合適的下一跳(next hop)路由器,並將封包交付給該路由器來轉發。多次重複這一過程,封包最終到達目標主機,或者由於傳送失敗而被丟棄。可見,IP協定使用逐跳(hop by hop)的方式確定通訊路徑。

網路層另外一個重要的協定是ICMP協定(Internet Control Message Protocol,因特網控制報文協定)。它是IP協定的重要補充,主要用於檢測網路連線。
在這裡插入圖片描述

8位元型別欄位用於區分報文型別。它將ICMP報文分為兩大類
差錯報文,這類報文主要用來回應網路錯誤,比如目標不可到達(型別值為3)和重定向(型別值為5);
查詢報文,這類報文用來查詢網路資訊,比如ping程式就是使用ICMP報文檢視目標是否可到達(型別值為8)的。
有的ICMP報文還使用8位元程式碼欄位來進一步細分不同的條件。比如重定向報文使用程式碼值0表示對網路重定向,程式碼值1表示對主機重定向。
ICMP報文使用16位元校驗和欄位對整個報文(包括頭部和內容部分)進行迴圈冗餘校驗(Cyclic Redundancy Check,CRC),以檢驗報文在傳輸過程中是否損壞。不同的ICMP報文型別具有不同的正文內容。

傳輸層

傳輸層為兩臺主機上的應用程式提供端到端(end to end)的通訊。與網路層使用的逐跳通訊方式不同,傳輸層只關心通訊的起始端和目的端,而不在乎封包的中轉過程。

在這裡插入圖片描述

垂直的實線箭頭表示TCP/IP協定族各層之間的實體通訊(封包確實是沿著這些線路傳遞的),而水平的虛線箭頭表示邏輯通訊線路。該圖中還附帶描述了不同物理網路的連線方法。可見,
資料鏈路層(驅動程式)封裝了物理網路的電氣細節;網路層封裝了網路連線的細節;傳輸層則為應用程式封裝了一條端到端的邏輯通訊鏈路,它負責資料的收發、鏈路的超時重連等。

傳輸層協定:TCP協定、UDP協定。

  • TCP協定(Transmission Control Protocol,傳輸控制協定)為應用層提供可靠的、面向連線的和基於流(stream)的服務。TCP協定使用超時重傳、資料確認等方式來確保封包被正確地傳送至目的端,因此TCP服務是可靠的。使用TCP協定通訊的雙方必須先建立TCP連線,並在核心中為該連線維持一些必要的資料結構,比如連線的狀態、讀寫緩衝區,以及諸多定時器等。當通訊結束時,雙方必須關閉連線以釋放這些核心資料。TCP服務是基於流的。基於流的資料沒有邊界(長度)限制,它源源不斷地從通訊的一端流入另一端。傳送端可以逐個位元組地向資料流中寫入資料,接收端也可以逐個位元組地將它們讀出。

  • UDP協定(User Datagram Protocol,使用者資料包協定)則與TCP協定完全相反,它為應用層提供不可靠、無連線和基於資料包的服務。「不可靠」意味著UDP協定無法保證資料從傳送端正確地傳送到目的端。如果資料在中途丟失,或者目的端通過資料校驗發現資料錯誤而將其丟棄,則UDP協定只是單地通知應用程式傳送失敗。因此,使用UDP協定的應用程式通常要自己處理資料確認、超時重傳等邏輯。UDP協定是無連線的,即通訊雙方不保持一個長久的聯絡,因此應用程式每次傳送資料都要明確指定接收端的地址(IP地址等資訊)。基於資料包的服務,是相對基於流的服務而言的。每個UDP資料包都有一個長度,接收端必須以該長度為最小單位將其所有內容一次性讀出,否則資料將被截斷。

應用層

應用層負責處理應用程式的邏輯。
資料鏈路層、網路層和傳輸層負責處理網路通訊細節,這部分必須既穩定又高效,因此它們都在核心空間中實現。而應用層則在使用者空間實現,因為它負責處理眾多邏輯,比如檔案傳輸、名稱查詢和網路管理等。如果應用層也在核心中實現,則會使核心變得非常龐大。當然,也有少數伺服器程式是在核心中實現的,這樣程式碼就無須在使用者空間和核心空間來回切換(主要是資料的複製),極大地提高了工作效率。不過這種程式碼實現起來較複雜,不夠靈活,且不便於移植。

ping是應用程式,而不是協定,前面說過它利用ICMP報文檢測網路連線,是偵錯網路環境的必備工具。

telnet協定是一種遠端登入協定,它使我們能在本地完成遠端任務。

OSPF(Open Shortest Path First,開放最短路徑優先)協定是一種動態路由更新協定,用於路由器之間的通訊,以告知對方各自的路由資訊。

DNS(Domain Name Service,域名服務)協定提供機器域名到IP地址的轉換。

應用層協定(或程式)可能跳過傳輸層直接使用網路層提供的服務,比如ping程式和OSPF協定。應用層協定(或程式)通常既可以使用TCP服務,又可以使用UDP服務,比如DNS協定。我們可以通過/etc/services檔案檢視所有知名的應用層協定,以及它們都能使用哪些傳輸層服務。

五層協定背後的思想:上層遮蔽下層細節,只使用其提供的服務。高內聚低耦合,每一層專注於其功能,各層之間的關係依賴不大。

封包在每層有不同的格式,從上到下依次叫段,資料包,幀,資料從應用層通過協定棧向下傳遞,每經過一層加上對應層協定的報頭,最後封裝成幀傳送到傳輸媒介上,到達路由器或者目的主機剝掉頭部,交付給上層需要者。這一過程稱為封裝,傳輸,分離,分用。

以上就是tcp/ip參考模型分為哪幾層?的詳細內容,更多請關注TW511.COM其它相關文章!