TCP/IP之一:網絡結構與網絡接口層

TCP/IP的層次結構如圖1所示,是一個四層結構,各層的核心協議都已經包含在途中,

需要指出的是:

(1)ICMP雖然是放在網絡層,但是ICMP也是需要先封裝成IP數據包再交給網絡接口層的,同理,ARP和RARP也得先由網絡接口層封裝成幀,再在物理鏈路上傳輸。

(2)各層網絡協議之間只要接口固定,彼此之間就可以互相通信,各層協議內部實現是自由的,最能體驗這一點的是網絡層與網絡接口層,雖然一般網絡層都是運行IP等協議,但是網絡接口層確往往有多種選擇,比如以太網、令牌總線、令牌環網、FDDI等。

(3)處於互聯網中的所有運用TCP/IP進行網絡通信的主機操作系統都實現了TCP/IP協議棧,這樣,當處理網絡中的兩臺主機想彼此通信時,其數據傳輸過程如圖2所示。

wps_clip_image-21743

圖1

wps_clip_image-29487

圖2

圖2中的應用層數據途徑各層網絡協議傳輸過程如圖3所示,數據由上望下傳輸時,每一層都會在上層傳下來的數據前面加個首部,以太網不僅僅加首部,還加尾部。圖3中的應用層首部是可選的,可有可無,視應用程序需求而定。在接收端數據由下往上傳輸,各層會一次取下自己的首部及尾部。

wps_clip_image-29702

圖3

以上是TCP/IP網絡的總體結構及數據傳輸模型,接着我們逐層學習各層的協議,我們由下往上,從底層出發。

網絡接口層負責封裝數據在物理鏈路上傳輸,屏蔽了物理傳輸的細節,它一方面從網絡層拿數據,然後封裝發送出去;另一方面是接收數據提交給網絡層。

總結而言,它主要是爲網絡層的IP服務的。

網絡接口層中最爲著名,應用最爲廣泛的是以太網,以太網幀格式如下:

幀頭8

目的地址6

源地址6

類型域2

數據域46-1500

CRC4

對於以太網的幀格式,需要注意一下幾點:

(1)各種圖中數字說明的是各字段的字節數,如幀頭8表示幀頭佔8個字節。

(2)各字段的說明:幀頭用於同步接收機,並且標識一幀的開始;接下來是目的地址和源地址分別6字節;類型域2個字節,類型域說明數據域放的是哪種類型的數據,ARP,RARP還是IP? 因爲這三種數據都需要封裝成以太網幀在物理鏈路上傳輸,也就是說以太網幀不僅僅是爲IP服務的,還爲ARP和RARP服務;然後是數據域,數據域的大小由46字節到1500字節,這個取值範圍在(3)中說明;最後是4字節的CRC循環冗餘校驗,對校驗碼感興趣的讀者可以參考相關信道編碼的書籍,如果不想深究,只要知道通過這個校驗碼我們就可以判斷出數據有誤出錯就行了,這個CRC校驗是針對數據域的。

(3)數據域之所以有46-1500這樣一個範圍,是有原因的。之所以有46的最小長度限制,主要是由於CSMA/CD協議的需要,具體參考http://blog.csdn.net/ericming200409/archive/2010/06/06/5650542.aspx ;之所以有1500的上限限制是比較好理解的,因爲如果幀太大的話,一個主機佔用鏈路時間太長,帶來不好的用戶體驗。

(4)由於數據域有了上限和下限的限制,這就引發了一個問題,網絡層傳下來的數據少於46字節怎麼辦?或者多於1500字節又怎麼辦?事實上,ARP和RARP的數據域是28字節,是比46字節少的。對於大於1500字節的數據包,IP層是需要進行IP分片的,這等到網絡層的時候再仔細介紹;對於少於46字節的數據包,採用的辦法是填充0。

(5)MTU:即最大傳輸單元,是網絡接口層的重要概念之一,在以太網中其大小往往就是我們剛剛所說的1500字節。在linux中可以通過命令ifconfig或者netstat的查看主機的所有接口及其MTU。

(6)在用ifconfig或者netstat的查看主機的所有接口及其MTU的時候,我們會發現LO接口,即環回接口,環回接口也是運行在網絡接口層,它負責處理髮送給本機的數據,發送給網絡上其它主機的數據由以太網驅動程序負責發送。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章