1. 程式人生 > >TCP/IP協議-封裝和分用

TCP/IP協議-封裝和分用

資料進入協議棧時的封裝過程

在這裡插入圖片描述

由於TCPUDPICMPIGMP都要向IP傳送資料,因此IP必須在生成的IP首部中加入某種標識,以表明資料屬於哪一層。為此, IP在首部中存入一個長度為8 bit的數值,稱作協議域1表示為ICMP協議,2表示為IGMP協議,6表示為TCP協議,17表示為UDP協議。

許多應用程式都可以使用 TCPUDP來傳送資料。運輸層協議在生成報文首部時要存入一個應用程式的識別符號。 TCPUDP都用一個16 bit的埠號來表示不同的應用程式。TCPUDP把源埠號和目的埠號分別存入報文首部中。
網路介面分別要傳送和接收 IP

ARPRARP資料,因此也必須在乙太網的幀首部中加入某種形式的標識,以指明生成資料的網路層協議。為此,乙太網的幀首部也有一個 16 bit的幀型別域。

分用

當目的主機收到一個乙太網資料幀時,資料就開始從協議棧中由底向上升,同時去掉各層協議加上的報文首部。每層協議盒都要去檢查報文首部中的協議標識,以確定接收資料的上層協議。這個過程稱作分用(Demultiplexing),圖1 - 8顯示了該過程是如何發生的。
在這裡插入圖片描述

  • 為協議ICMPIGMP定位一直是一件很棘手的事情。在圖1 - 4中(本人部落格:TCP/IP協議-分層),把它們與IP放在同一層上,那是因為事實上它們是IP的附屬協議。但是在這裡,我們又把它們放在IP
    層的上面,這是因為ICMPIGMP報文都被封裝在IP資料報中。
  • 對於ARPRARP,在這裡把它們放在乙太網裝置驅動程式的上方,這是因為它們和IP資料報一樣,都有各自的乙太網資料幀型別。但我們又把ARPRARP作為乙太網裝置驅動程式的一部分,放在 IP層的下面,其原因在邏輯上是合理的

參考書籍:《TCP/IP詳解卷1-協議》