網路層協議封裝

2021-10-12 08:24:57 字數 3784 閱讀 1018

常用的網路層協議有:ipv4、ipv6、arp、icmp

首先是網路層中的ipv4報頭就沒有在資料的最後有fcs校驗位了,但是有頭部的校驗位,這裡需要記住的是,協議中的每一層都有校驗的,這使得功能重複繁瑣了,所以在ipv6中將其取消了, ip報頭範圍為20-60位元組,其中具體的內容如下:

第一行:

版本號:該字段為4bit,表示ip報文的版本資訊,如果為0x4,表示為ipv4報文,如果為0x6,表示乙個ipv6報文。

首部長度:首部長度4個bit,但是表示的是20-60位元組,所以首部長度每加一表示多4位元組,最小取值為0101,表示20位元組,還需要注意的是ipv4報頭有20個位元組的固定大小,還有不定大小了選擇字段,能實現其他功能,但是這樣就會出現乙個問題,也就是說選項字段大小不定,那麼在表示首部長度時只要不是4位元組的倍數都無法表示,所以需要在必要時傢伙是哪個值為0的填充位元組,保證報文頭部為4位元組的倍數。

ds欄位:8bit,表示優先順序,其中的內容暫時不進行分析。

總長度字段:16bit,顧名思義,表示整個ip報文的長度,也就是頭部加上資料長度,減去頭部字段就是ip報文的資料字段的長度了。

flags:區分分片後的資料報,佔3bit,第一位為保留位,保持為 0,第二位df(不分片)位,表示是否為能進行分片,如果是1,表示不能進行分片,0表示可以進行分片,最後一位為mf(更多的分片)為,表示是不是最後的分片,如果是最後的分片,表示為0,不是最後的分片,表示為1,後面還有更多的分片。

片偏移:佔13位,表示分片報文離第原始報文頭部相離的長度(比如1600,表示這個分片離最初報文頭部有1600位元組,如果按照最大1500mtu來分片的話,第二個分片有120個位元組),第乙個分段的片偏移為零。有了片偏移和id欄位,我們就可以按照順序對分片的報文進行組裝了。這裡需要補充的是,分片只針對資料部分,不針對報文頭部,資料部分最多為1480位元組。

第四行:協議字段:1個位元組,表示上層的協議是是什麼,比如6為tcp,17為udp,89為ospf,另外icmp也有協議字段,為1,這個協議最終被劃分到了網路層中。

首部校驗和:16位元組,起乙個ip頭部的校驗作用。

第五行和第六行:

源目ip位址,各自佔32bit。

最後乙個字段:0-40位元組的選項和填充字段

可選項(options)是用來提供乙個餘地,以允許後續版本的協議中引入最初版本中沒有的資訊,以及避免為很少使用的資訊分配頭部位。可選項是變長的,每個可選項都以乙個位元組標明內容。有些可選項還跟著有一位元組的可選項長度字段,其後是乙個或多個資料位元組。可選項欄位的長度以4位元組計,現在已經定義了5個可選項,但並不是所有的路由器都支援5個可選項:

安全性選項說明資訊的安全程度。實際上,所有的路由器都忽略該欄位。

嚴格的源路由選擇選擇以一系列的ip位址方式,給出了從源到目的地的完整路徑。資料報必須嚴格地從這條路徑傳送。當路由選擇表崩潰時,系統管理員傳送緊急分組,或作時間測量時,該字段很有用。

松的源路由選擇選項要求分組遍及所列的路由器,而且以所指定的次序。但它可以在其間穿過其他的路由器。

最後,時間標記選項像記錄路由選項一樣,除了記錄32位的ip位址以外,每個路由器還要記錄乙個32位的時間標記。同樣地,這一選項可用來為路由選擇演算法查錯。

在ipv4報頭裡面,很多字段其實作用不大,比如頭校驗位,選項字段。為什麼沒有選項欄位呢,是因為很多路由器其實不會去看,但是又必須讀取了才會**,降低了效率。ipv6具體的內容如下:

第一行:

version:4bits 版本號 ipv6為6。

traffic class: 8 bits,傳輸類別,可用於源節點或轉寄路由器標識和區分ipv6包中的不同類別或優先順序;類似於實現ipv4的tos/diff。

flow label:20bits 流標籤,資料流不僅可以通過源目ip位址進行區別,還可以通過流標籤進行,資料流是指從某特定的源節點向某特定的目的節點傳送的資料報序列。當源節點希望中間的路由器對資料報進行一些特殊處理時,就可以使用資料流標籤,不支援資料流標籤的可以賦值為0;比如標記ftp等流量。

第二行:

payload length: 16bits unsigned integer, ipv6的載荷長度,首部以外的長度(包括擴充套件首部)。

hop limit:8bits unsigned integer,在每個傳輸此包的節點處減1,如果跳數限制減到0,就拋棄此包。

第三,四行:我們通過將需要實現的功能通過拓展報頭新增在ipv6報頭的後面,讓ipv6報文更加的靈活。

arp包括多種類別(普通arp、rarp、gratuitous arp、inarp),熟悉普通arp和免費arp即可。

普通arp:通過ip位址請求對方mac位址。

rarp:通過mac位址請求ip位址。

免費(無故)arp:改變自己的arp表項和位址重複檢查等,或者更新交換機的mac位址表(vrrp中)。

iarp:在幀中繼中使用,此技術基本已被淘汰。

普通,無故arp報文格式:

硬體型別字段:指明了傳送方想知道的硬體介面型別,乙太網的值為1;

協議型別字段:指明了傳送方提供的高層協議型別,ip為0800(16進製制);

操作字段:用來表示這個報文的型別,arp請求為1,arp響應為2,rarp請求為3,rarp響應為4;

用途:這種主機往往是無盤工作站,因此 rarp 協議目前已很少使用。

雖然封裝在ip位址之上,但是根據功能,一般被歸納為網路層協議。

型別:3 終點不可達、11 時間超過、12 引數問題、5 改變路由、8或0 回送請求或回答、13或14 時間戳請求或回答。

** : 進一步區分某種型別中的幾種不同情況。

檢驗和 : 用於檢驗整個icmp報文。但是ip首部檢驗和並不檢驗ip資料報的內容,因此不能保證經過傳輸的icmp報文不產生差錯。

icmp差錯報文:

終點不可達:型別=3,**0~15,首部,由路由器或者目的主機檢查後傳送差錯報告給初始源資料。即使沒有終點不可達差錯報文也不能代表資料報交付成功。

源點抑制:型別=4,缺乏流量控制和擁塞控制。當路由器或主機丟棄資料報時,向源資料埠傳送源點抑制差錯報文。該報文兩個作用:第一通知源點資料報已經丟棄,二通知源點慢點發資料。

超時:型別=11,解決多個路由表**現環路現象。每個資料報通過乙個路由器生存時間就-1,當生存時間為0時,就向源點傳送乙個超時差錯報告報文。如果報文的乙個分片超時也傳送差錯報告報文。

icmp 詢問報文:

回送請求與回答:型別8或0。回送請求與回答可以判定兩個主機之間是否可達,通常可以通過ping命令來實現。

時間戳請求與回答:確定ip資料報在這兩個機器之間來回所需的往返時間。

總結:通過型別和**字段組合了很多不同型別的icmp報文,具體如下圖所示:

網路協議 網路層

ip位址有32位,由位址型別 網路號和主機號3部分組成,每類位址中都有一段位址為私有ip位址段,由每個域網內自由分配 結構範圍 私有ip位址段 用途a類 0 7位網路號 24位主機號 0.0.0.0 127.255.255.255 10.0.0.0 10.255.255.255 一般用於大型網路 b...

網路層協議

主要解決問題 通過位於不同主機中的多個應用程序之間的通訊和協同工作來完成 應用層的許多協議都是基於客戶伺服器方式,描述的是程序之間服務和被服務的關係。dns出現原因 使用者與網際網路上的某台主機進行通訊時,需要知道主機的ip位址,但ip位址長達32位。所以使用網域名稱來記憶。dns是用於網域名稱和i...

網路協議層

osi七層協議 應用層表示層 會話層傳輸層 網路層資料鏈路層 物理層物理層 主要是基於電器特性傳送高低電壓 電訊號 高電壓對應數字1,低電壓對應數字0。由來 孤立的計算機之間要想通訊,必須接入internet,即計算機之間必須完成聯網。網路層 由來 有了ethernet mac位址 廣播的傳送方式,...