關於七層模型和四層模型可以參考這個:
因為四層模型用的比較多,這裡只拿四層模型來分析。
1、四層模型中的最下層是鏈路層,傳輸的是乙太網資料幀。主要有三種格式的乙太網資料幀。這裡暫時不做詳細分析
2、ip資料報格式
1)版本:ip協議版本號,ipv4版本這個值為4。ipv6這個值為6
2)頭長度:表示頭部的長度,單位是4位元組。比如這個數為5,表示ip頭部長度為20個位元組。所以我們也可以知道ip長度最大為4x15 = 60個位元組。
3)服務型別(tos):包含3位優先權(現已忽略)、4位的服務型別子欄位、1位保留位(必須位0)。
4)總長度:16位。以位元組位單位,包含頭部和資料部分總長度。最大可為65535個位元組
5)封包標識:用來標識乙個ip包,每傳送乙個此值會加1。
6)標誌與片偏移:
標誌:3位的標誌第一位不使用。第二位df(do not fragment)為1表示不分片。若超過最大傳輸單元則會被丟棄,並傳送乙個icmp差錯報文。第三為mf(more fragment)為1表示後面還有包。最後一片的mf為0.
片偏移:ip分片後每乙個分組都有自己的首部。但是片偏移不同.,通過片偏移接收端可以重新組裝ip包。
7)存活時間(ttl):time to live。 表示資料報最多可經過的路由器的數量。資料報每經過乙個路由器ttl會減一,直到為0就會被丟棄,並傳送icmp報文通知源主機。這樣可以防止資料報一直在網路中傳輸下去。
8)協議:表示ip層承載的是哪個高階協議。在封裝與分用過程中,協議棧知道該交由哪個層的協議處理。下面是對應值:
1-icmp,2-iigmp,6-tcp,7-udp
9)校驗和:保證資料頭部的完整性,但是不校驗資料部分。校驗方法是網際校驗和
因為上層的協議都有自己的校驗和,這裡不需要重複校驗
還有就是每經過乙個路由器頭部都會發生變化,但是資料部分不變。
只校驗頭部比較省時間。
3、封裝與分用
假設主機a傳送資料給主機b,一般流程是這樣:a應用層資料-》a的傳輸層-》a的網路層-》a的鏈路層 -》 網路上找到b,並傳送給b的鏈路層 -》 b的網路層 -》 b的傳輸層 -》 b的應用層。就是下面這幅圖:
應用程式用tcp傳輸資料的時候,資料被送入協議棧中,然後逐個通過每一層,直到最後到物理層資料轉換成位元流,送入網路。在這個過程中,每一層都會對要傳送的資料加一些首部資訊。
分用(解封(demultiplexing)):從下到上,將資料頭部進行拆開
從下網上時再逐一將對應層的頭部去掉,一層一層剝離。直到應用層。
分用就是剛好反過來。
還有一些更好的圖可以參考:
php支援的協議和封裝協議
note 用於描述乙個封裝協議的 url 語法僅支援 scheme 的語法。scheme 和 scheme 語法是不支援的。table of contents file 訪問本地檔案系統 http 訪問 http s ftp 訪問 ftp s urls php 訪問各個輸入 輸出流 i o stre...
網路程式設計的OSI協議和TCP IP協議
在網路發展中,人們為了規範網際網路的資訊互動,就必須遵守一種約定,從而引出了osi和tcp ip的協議。首先講一下osi協議,它是一種開放系統的互聯模式。有七層結構分別為應用層 表示層 會話層 傳輸層 網路層 資料鏈路層和物理層。它們每一層都有各自的一些協議。但是在後來的規劃中發現osi的模式太複雜...
常見的網路傳輸協議
協議名稱 描述ip協議 是將多個包交換網路連線起來,在源位址和目標位址之間傳輸資料報並對 資料報進行拆分和重組以適應不同的網路大小 tcp協議 transmission control protocal 傳輸控制協議 一種端對端的 可靠的 基於 ip 的傳輸層協議 特點 3 次握手建立連線 4 次揮...