封裝
當應用程序用T C P傳送數據時,數據被送入協議棧中,然后逐個通過每一層直到被當作
一串比特流送入網絡。其中每一層對收到的數據都要增加一些首部信息(有時還要增加尾部
信息),該過程如圖1 - 7所示。T C P傳給I P的數據單元稱作T C P報文段或簡稱為T C P段(T C P
s e g m e n t)。I P傳給網絡接口層的數據單元稱作I P數據報(IP datagram)。通過以太網傳輸的比特
流稱作幀(Fr a m e )。
由於T C P、U D P、I C M P和I G M P都要向I P傳送數據,因此I P必須在
生成的I P首部中加入某種標識,以表明數據屬於哪一層。為此, I P在首部中存入一個長度為
8 b i t的數值,稱作協議域。1表示為I C M P協議, 2表示為I G M P協議, 6表示為T C P協議, 1 7表
示為U D P協議。
類似地,許多應用程序都可以使用T C P或U D P來傳送數據。運輸層協議在生成報文首部
時要存入一個應用程序的標識符。T C P和U D P都用一個1 6 b i t的端口號來表示不同的應用程序。
T C P和U D P把源端口號和目的端口號分別存入報文首部中。
網絡接口分別要發送和接收I P、A R P和R A R P數據,因此也必須在以太網的幀首部中加入
某種形式的標識,以指明生成數據的網絡層協議。為此,以太網的幀首部也有一個16 bit的幀
類型域。
分用
當目的主機收到一個以太網數據幀時,數據就開始從協議棧中由底向上升,同時去掉各
層協議加上的報文首部。每層協議盒都要去檢查報文首部中的協議標識,以確定接收數據的
上層協議。這個過程稱作分用( D e m u l t i p l e x i n g),圖1 - 8顯示了該過程是如何發生的。
為協議I C M P和I G M P定位一直是一件很棘手的事情。在圖1 - 4中,把它們與I P放在
同一層上,那是因為事實上它們是I P的附屬協議。但是在這里,我們又把它們放在I P層
的上面,這是因為ICMP和IGMP報文都被封裝在IP數據報中。
對於A R P和R A R P,我們也遇到類似的難題。在這里把它們放在以太網設備驅動程
序的上方,這是因為它們和I P數據報一樣,都有各自的以太網數據幀類型。但在圖2 - 4
中,我們又把A R P作為以太網設備驅動程序的一部分,放在I P層的下面,其原因在邏
輯上是合理的。
這些分層協議盒並不都是完美的。