ip協議是tcp/ip協議族的動力,它為上層協議提供無狀態、無連線、不可靠的服務ipv4頭部結構如下圖,其長度通常為20位元組,除非含有可變長的選項部分
因此它被攜帶的ip資料報的資料部分最多是1480位元組(ip頭部占用20位元組)。用ip資料報封裝乙個長度為1481位元組的icmp報文(包括8位元組的icmp頭部,所以其資料部分長度為1473位元組),則該資料報在使用乙太網幀傳輸時必須被分片。
第乙個分片長度為1500位元組,第二個ip分片的長度為21位元組。每個ip分片都包含自己的ip頭部,且第乙個ip分片的ip頭部設定了mf標誌,而第二個沒有設定該標誌,因為它已經是最後乙個分片了。原始ip資料報中的icmp頭部內容被完整的複製到了第乙個ip分片中,第二個ip分片不包括icmp頭部資訊,因為ip模組重組該icmp報文的時候只需要乙份icmp頭部資訊。ip協議的乙個核心任務是資料報的路由,即決定傳送資料報到目標機器的路徑。
當ip模組接收到來自資料鏈路層的ip資料報時,它首先對該資料報的頭部做crc校驗,確認無誤後就分析其頭部的具體資訊。
如果該ip資料報的頭部設定了源站選路選項,則ip模組呼叫資料報**子模組來處理該資料報。如果該ip資料報的頭部中目標ip位址是本機的某個ip位址,或是廣播位址,即該資料是發給本機的,則ip模組就會根據資料報中頭部中的協議欄位來決定將它傳送給哪個上層應用。如果ip模組發現該資料不是發給本機的,則也呼叫資料報**子模組來處理該資料報。
資料報**子模組將先檢測系統是否允許**,如果不允許,ip模組就將資料報丟棄。如果允許,資料報**子模組將對該資料報執行一些操作,然後將它交給ip資料報輸出子模組。
ip資料報應該傳送到哪個下一跳路由(或目標機器),以及經過哪個網絡卡來傳送,就是ip路由過程。ip模組實現資料報路由的核心資料結構是路由表
ip輸出佇列中存放的是所有等待傳送的ip資料報,其中除了需要**的ip資料報外,還包括封裝了本機上層的ip資料報。
ps: 虛線箭頭顯示了路由表更新的過程。這一過程是指通過路由協議或者route命令調整路由表,使之更適應最新的網路拓撲結構,稱之為ip路由策略路由表的檢視,使用route命令或netstat命令。
路由表的內容
ip的路由機制
1.查詢路由表中和資料報的目標ip位址完全匹配的主機ip位址。如果找到就使用該路由項,沒找到到第二步。2.查詢路由表中和資料報的目標ip位址具有相同網路id的網路ip位址。如果找到就使用該路由項,沒找到到第三步。3.選擇預設路由項,這通常意味資料報的下一跳路由是閘道器。路由表必須能夠更新以反應網路連線的變化,這樣ip模組才能準確、高效的**資料報。route命令可以修改路由表。 通過route命令或其他工具修改路由表是靜態的路由更新方式。對於大型的路由器,通常通過bgp、rip、ospf等協議來發現路徑,並更新自己的路由表,這種更新方式是動態的、自動的。對於允許ip資料報**的系統,資料報**子模組將對期望**的資料報執行如下操作:ip模組工作流程圖中,顯示了icmp重定向報文也能用於更新路由表
icmp重定向報文格式
icmp重定向報文的資料部分含義:1.引起重定向的ip資料報的源端ip位址;2.應該使用的路由器的ip位址;接收主機根據這兩個資訊就可以斷定引起重定向的ip資料報應該使用哪個路由器來**,並且以此來更新路由表(通常是更新路由表緩衝,而不是直接更改路由表)。
ipv6解決了ipv4位址不夠的問題,還做了改進,例如增加了多播和流的功能,為網路上多**內容的質量提供精細的控制;引入自動配置功能,使得區域網管理更方便……
由40位元組的固定頭部和可變長的擴充套件頭部組成。
它的長度可以為0,表示資料報沒使用任何擴充套件頭部。乙個資料報可以包含多個擴充套件頭部,每個擴充套件頭部的型別由前乙個頭部中的下乙個包頭字段指定。 目前可用的擴充套件頭部:
轉轉linux伺服器ip
主題 linux設定閘道器修改ip 精華帖 0 良好帖 0 新手帖 1 隱藏帖 0 作者 正文 cnaning 等級 初級會員 cnaning的部落格 文章 18 積分 90 來自 北京 引用 收藏 獵頭職位 上海 上海 25 35萬年薪誠聘技術經理 linux as 4 bond網絡卡繫結 怎樣修...
Linux 之 IP協議詳解
ip服務特點 ipv4頭部資訊 ip協議為上層協議提供無狀態 無連線 不可靠的服務。ip協議的無狀態是什麼意思?ip協議的無連線是什麼意思?ip協議的不可靠是什麼意思?那麼ip協議在整個tcp ip協議族中的作用是什麼呢?ipv4頭部結構可變長的選項部分,最多包含40個位元組,可選的ip選項包括 記...
詳解Linux伺服器配置 搭建SVN伺服器
1,安裝svn服務端 visualsvn 破解版 v4.0.10 官方最新版 visualsvn server免費英文版 32 64 直接用apt get或yum安裝subversion即可 當然也可以自己去官方 安裝 sudo apt get install subversion 2,建立版本庫 ...