tcp/ip的層次結構如圖1所示,是乙個四層結構,各層的核心協議都已經包含在途中,
需要指出的是:
(1)icmp雖然是放在網路層,但是icmp也是需要先封裝成ip資料報再交給網路介面層的,同理,arp和rarp也得先由網路介面層封裝成幀,再在物理鏈路上傳輸。
(2)各層網路協議之間只要介面固定,彼此之間就可以互相通訊,各層協議內部實現是自由的,最能體驗這一點的是網路層與網路介面層,雖然一般網路層都是執行ip等協議,但是網路介面層確往往有多種選擇,比如乙太網、令牌匯流排、令牌環網、fddi等。
(3)處於網際網路中的所有運用tcp/ip進行網路通訊的主機作業系統都實現了tcp/ip協議棧,這樣,當處理網路中的兩台主機想彼此通訊時,其資料傳輸過程如圖2所示。
圖1 圖2中的應用層資料途徑各層網路協議傳輸過程如圖3所示,資料由上望下傳輸時,每一層都會在上層傳下來的資料前面加個首部,乙太網不僅僅加首部,還加尾部。圖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協議的需要,具體參考 ;之所以有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介面,即環迴介面,環迴介面也是執行在網路介面層,它負責處理傳送給本機的資料,傳送給網路上其它主機的資料由乙太網驅動程式負責傳送。
TCP IP 一 網路協議
網路協議就是 一套 通用規則,用來幫助定義複雜資料傳輸的過程。資料傳輸從一台計算機上的應用程式開始,通過計算機網路硬體,經過 傳輸介質到正確目的地,然後上傳到目的地計算機網路硬體,最後 到達負責接收的應用程式。tcp ip 協議定義了網路通訊過程,更重要的是,定義了資料單元 的格式和內容,以便接收計...
基本網路概念之一 網路
網路是幾乎可以實時相互傳送和接收資料的計算機和其他裝置的集合。網路的每台機器稱為乙個節點 node 大多數節點是計算機,但是印表機 路由器 網橋 閘道器 可口可樂機也都是節點。具有完備功能的計算機節點也稱為主機 host 這裡將節點一詞指代網路的所有裝置,用主機一詞表示通用的計算機節點。每個網路節點...
網路程式設計(一) 網路基礎之一
今天開始學習網路程式設計,當然還是要從網路基礎學起,首先我們來熟悉一下tcp ip模型與osi模型之間的對應關係 一.tcp ip四層模型 tcp ip是 一組協議的代名詞,它還包括許多協議,組成了tcp ip協議簇。tcp ip協議簇 分為四層,ip位於協議簇的第 二層 對應osi的第三層 tcp...