【Linux網絡編程】IP協議格式,解包步驟

目錄

解析步驟

1.版本字段(大小:4比特位)

2.首部長度(大小:4比特位)(單位:4字節)

🍜細節解釋:

3.服務類型(大小:8比特位)

位TOS字段

4.數據報長度:總長度(大小:16比特)(單位:字節)

5.? ? ?16位標識(大小:16比特)

6.? ? ? 3位標記(大小:3比特)

第1位

第2位(不分片標志位)(DF:don’t fragment)

第3位(更多分片標志位)(MF:more fragments)

7.? ?13位片偏移(大小:13比特)(單位:8字節)

8.? ?8位生存時間(TTL)

9.? ?8位協議

10.? ?16位首部校驗和

11.? ?32位源IP,32位目的IP

12.數據區域


解析步驟

對于IP,每次先去看前二十個字節。也就是說這二十字節里面的東西是固定的,每個IP報頭都是如此,不會改變。

前二十個字節就包含除了選項部分(如果存在)數據區域。選項部分的大小,數據區域的大小是可以改變的。

然后選項的有無,數據區域的大小根據首部長度,數據報長度(總大小,單位字節)推算出來。

也就是下面的推算關系。

選項首部長度
數據區域大小數據報長度減去手部長度

1.版本字段(大小:4比特位)

IP的版本現在有IPv4還有IPv6。

所以這四位要么是4(二進制為:0100),要么是6(二進制為:0110)。

所以每個IP地址前面要么填0100(表示IPv4),要么填0110(表示IPv6)。

題外話:

雖然IPv6比IPv4要好,但是目前主要還是IPv4。

IPv6在我國發展的比較好,IPv4的主導是外國的,IPv4和操作系統有關,操作系統也是外國主導的。所以IPv4不可能迅速變更到IPv6。


2.首部長度(大小:4比特位)(單位:4字節)

首部長度主要是去看選項的,看有沒有選項,如果有選項,選項的大小又是多少?

首部長度------》選項有無,選項大小

🍜細節解釋:

首部長度是占四個比特位的,表示的范圍是0~15。但是最起碼報頭都有20字節,那么這是怎么表示的呢?

原來首部長度的的單位是4字節。

所以現在能表示的范圍就是0~15*4=60字節所以最大就能表示60字節了。

60字節,減去固定的20字節,那么選項的最大就是占40字節。(二進制首部長度:1111)

最起碼要20字節。(二進制首部長度:0101)


3.服務類型(大小:8比特位)

前3位是優先級字段,已經廢用。

然后就是4位TOS字段+最后一位保留字段。最后的保留字段被設置為0.

位TOS字段

🍛第1位:最小延遲。

🍛第2位:最大吞吐量。

🍛第3位:最高可靠性。

🍛第4位:最低成本。

上面的最小延遲,最高可靠性,最低成本基本都能理解。那就解釋一下最大吞吐量。

最大吞吐量是描述網絡狀態的。單位時間內傳輸的數據量。單位是比特/s,字節/s,或者每秒數據包數。


4.數據報長度:總長度(大小:16比特)(單位:字節)

這里的單位是字節,在報頭長度那里的單位是4字節。

最大能表示65,535字節(16位無符號整數的最大值)。

然后減去報頭的最大值(60字節),所以數據區域的最大值就是(65475字節)。

這個被設計就是來看數據區域有多大。因為會有很多個IP,有粘包問題。為了讓每個IP都能被正確解包,就要看數據區域有多大。


5.? ? ?16位標識(大小:16比特)

IP協議允許數據報進行分片。

在數據鏈路層,IP可能會被分片。去適應鏈路的最大傳輸單位(MTU)。

然后在對方網絡層的時候,要能合并,就要進行區分哪些時一起的,然后進行拼接。


6.? ? ? 3位標記(大小:3比特)

第1位

目前還沒有被使用,被設置為0。

第2位(不分片標志位)(DF:don’t fragment)

如果是1,就表示數據報不能進行分片。如果數據報超過了鏈路的最大傳輸單位(MTU),這時候就會給發送方反饋數據報過大的信息。

如果是0,就表示數據報能被分片。

第3位(更多分片標志位)(MF:more fragments)

如果是1,表示后面還有很多的分片。

如果是0,表示是這個數據報的最后一個分片。


7.? ?13位片偏移(大小:13比特)(單位:8字節)

當IP數據報進行分片以后,在對方IP進行合并的時候,就要知道這是該數據報的哪一個部分。應該拼接在哪里,從哪里開始拼接。

用偏移量也能達到這個目的。

13位偏移量的單位是8字節。所有每個都是8的整數倍。


8.? ?8位生存時間(TTL)

實現是一個計數器,當計數器值為0,就丟棄這個IP數據報。并向發送方回饋超時信息。

每次經過一個路由器,它的值就會減1。

這個設計避免了網絡環回的問題。因為如果網絡換回,數據報一直在路由器之間跳來跳去,一直沒有結束,也到不了目標主機。就會影響網絡。

WIndows系統一般設置為128.

Linux系統Unix一般設置為64.


9.? ?8位協議

它的作用就是來區分上層用的什么協議,TCP還是UDP還是ICMP。

TCP為6,UDP是17,ICMP(1)。


10.? ?16位首部校驗和

這個是看IP數據報頭在傳輸的過程中是否發送錯誤。

它是采用反碼求和的方式。如果對方把接受的報頭反碼求和,看是不是等于這個數,如果對得上,就基本是對的。

它的具體計算方式是:

每個16位比特為一組,然后反碼求和。


11.? ?32位源IP,32位目的IP

用來表示發生方的IP,和接受方的IP。

標識發送方和接收方。

這個也不難理解。有了源IP,目的IP,就能進行路徑選擇

  • A類0.0.0.0127.255.255.255):用于大型網絡。

  • B類128.0.0.0191.255.255.255):用于中型網絡。

  • C類192.0.0.0223.255.255.255):用于小型網絡。

  • D類224.0.0.0239.255.255.255):用于多播。

  • E類240.0.0.0255.255.255.255):保留用于未來使用


12.數據區域

用來攜帶上層的數據。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/70347.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70347.shtml
英文地址,請注明出處:http://en.pswp.cn/web/70347.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CSDN文章質量分查詢系統【贈python爬蟲、提分攻略】

CSDN文章質量分查詢系統 https://www.csdn.net/qc 點擊鏈接-----> CSDN文章質量分查詢系統 <------點擊鏈接 點擊鏈接-----> https://www.csdn.net/qc <------點擊鏈接 點擊鏈接-----> CSDN文章質量分查詢系統 <------點擊鏈接 點擊鏈…

HTML應用指南:利用GET請求獲取全國瀘溪河門店位置信息

隨著新零售業態的快速發展,門店位置信息的獲取變得越來越重要。作為新興烘焙品牌之一,瀘溪河自2013年在南京創立以來,一直堅持“健康美味,香飄世界”的企業使命,以匠人精神打造新中式糕點。為了更好地理解和利用這些數據,本篇文章將深入探討GET請求的實際應用,并展示如何…

如何在 React 中測試高階組件?

在 React 中測試高階組件可以采用多種策略&#xff0c;以下是常見的測試方法&#xff1a; 1. 測試高階組件返回的組件 高階組件本身是一個函數&#xff0c;它返回一個新的組件。因此&#xff0c;可以通過測試這個返回的組件來間接測試高階組件的功能。通常使用 Jest 作為測試…

R語言Stan貝葉斯空間條件自回歸CAR模型分析死亡率多維度數據可視化

全文鏈接&#xff1a;https://tecdat.cn/?p40424 在空間數據分析領域&#xff0c;準確的模型和有效的工具對于研究人員至關重要。本文為區域數據的貝葉斯模型分析提供了一套完整的工作流程&#xff0c;基于Stan這一先進的貝葉斯建模平臺構建&#xff0c;幫助客戶為空間分析帶來…

Casbin 權限管理介紹及在 Go 語言中的使用入門

引言 在現代軟件開發過程中&#xff0c;權限管理是一個至關重要的環節&#xff0c;它關系到系統的安全性和用戶體驗。Casbin 是一個強大的訪問控制庫&#xff0c;支持多種訪問控制模型&#xff0c;如 ACL&#xff08;訪問控制列表&#xff09;、RBAC&#xff08;基于角色的訪問…

快速入門——第三方組件element-ui

學習自嗶哩嗶哩上的“劉老師教編程”&#xff0c;具體學習的網站為&#xff1a;10.第三方組件element-ui_嗶哩嗶哩_bilibili&#xff0c;以下是看課后做的筆記&#xff0c;僅供參考。 第一節 組件間的傳值 組件可以有內部Data提供數據&#xff0c;也可由父組件通過prop方式傳…

【算法通關村 Day7】遞歸與二叉樹遍歷

遞歸與二叉樹遍歷青銅挑戰 理解遞歸 遞歸算法是指一個方法在其執行過程中調用自身。它通常用于將一個問題分解為更小的子問題&#xff0c;通過重復調用相同的方法來解決這些子問題&#xff0c;直到達到基準情況&#xff08;終止條件&#xff09;。 遞歸算法通常包括兩個主要…

樸素貝葉斯法

文章目錄 貝葉斯定理樸素貝葉斯法的學習與分類條件獨立假設樸素貝葉斯的后驗概率最大化準則樸素貝葉斯的基本公式 樸素貝葉斯法的參數估計極大似然估計 貝葉斯定理 前置知識&#xff1a;條件概率、全概率、貝葉斯公式 推薦視頻&#xff0c;看完視頻后搜索博客了解先驗概率、后…

《A++ 敏捷開發》- 20 從 AI 到最佳設計

“我們現在推行AIGC&#xff0c;服務端不需要UI交互設計的用AI自動產出代碼&#xff0c;你建議的結對編程、TDD等是否還適用&#xff1f;” 這兩年AI確實很火&#xff0c;是報紙、雜志的熱門話題。例如&#xff0c;HBR雜志從2024年9月至2025年二月份3期&#xff0c;里面有接近一…

GO系列-IO 文件操作

os io 判斷文件是否存在 func fileExist(filePath string) (bool, error) {_, err : os.Stat(filePath)if err nil {return true, nil}if os.IsNotExist(err) {return false, nil}return false, &CheckFileExistError{filePath} } 讀取文件內容 func readFileContext(…

rs485協議、電路詳解(保姆級)

起源 RS-485即Recommended Standard 485 協議的簡寫。1983年被電子工業協會(EIA)批準為一種通訊接口標準. 數據在通信雙方之間傳輸&#xff0c;本質是傳輸物理的電平&#xff0c;比方說傳輸5V的電壓 -1V的電壓信號&#xff0c;這些物理信號在傳輸過程中會受到很多干擾&#x…

JavaWeb-Tomcat服務器

文章目錄 Web服務器存在的意義關于Web服務器軟件Tomcat服務器簡介安裝Tomcat服務器Tomcat服務器源文件解析配置Tomcat的環境變量啟動Tomcat服務器一個最簡單的webapp(不涉及Java) Web服務器存在的意義 我們之前介紹過Web服務器進行通信的原理, 但是我們當時忘記了一點, 服務器…

【愚公系列】《Python網絡爬蟲從入門到精通》008-正則表達式基礎

標題詳情作者簡介愚公搬代碼頭銜華為云特約編輯,華為云云享專家,華為開發者專家,華為產品云測專家,CSDN博客專家,CSDN商業化專家,阿里云專家博主,阿里云簽約作者,騰訊云優秀博主,騰訊云內容共創官,掘金優秀博主,亞馬遜技領云博主,51CTO博客專家等。近期榮譽2022年度…

視覺分析之邊緣檢測算法

9.1 Roberts算子 Roberts算子又稱為交叉微分算法&#xff0c;是基于交叉差分的梯度算法&#xff0c;通過局部差分計算檢測邊緣線條。 常用來處理具有陡峭的低噪聲圖像&#xff0c;當圖像邊緣接近于正45度或負45度時&#xff0c;該算法處理效果更理想。 其缺點是對邊緣的定位…

DuodooBMS源碼解讀之 sale_change模塊

銷售變更模塊用戶使用手冊 一、模塊概述 本擴展模塊主要包含兩個主要的 Python 文件&#xff1a;sale_change/report/sale_change_report.py 和 sale_change/wizard/sale_change_download.py&#xff0c;提供了銷售變更報表查看和銷售變更單下載的功能。以下是詳細的使用說明…

OpenCV形態學操作

1.1. 形態學操作介紹 初識&#xff1a; 形態學操作是一種基于圖像形狀的處理方法&#xff0c;主要用于分析和處理圖像中的幾何結構。其核心是通過結構元素&#xff08;卷積核&#xff09;對圖像進行掃描和操作&#xff0c;從而改變圖像的形狀和特征。例如&#xff1a; 腐蝕&…

力扣算法-1

力扣算法 1 兩數之和 給定一個整數數組nums和一個整數目標值target&#xff0c;請你在數組中找出和為目標值target的那兩個整數&#xff0c;返回他們的數組下標。 &#xff08;1&#xff09;暴力枚舉 &#xff08;枚舉數組每一個數x&#xff0c;再尋找數組中是否存在 targe…

pyside6學習專欄(三):自定義QLabel標簽擴展類QLabelEx

標簽是界面設計中最常用的控件&#xff0c;本文演示了如何基于PySide6的QLabex控件類擴展定義QLabelEX類&#xff0c;以實現更少的編碼完成各種圖像、彩色文本、動畫的加載和顯示&#xff0c;豐富界面顯示 本示例演示了QLabel和其擴展類QLabelEx分別顯示文本、圖像、動畫的使用…

從0到1:固件分析

固件分析 0x01 固件提取 1、從廠商官網下載 例如D-link的固件&#xff1a; https://support.dlink.com/resource/products/ 2、代理或鏡像設備更新時的流量 發起中間人攻擊MITM #啟用IP轉發功能 echo 1 > /proc/sys/net/ipv4/ip_forward#配置iptables&#xff0c;將目…

使用 Spring Boot 和 Canal 實現 MySQL 數據庫同步

文章目錄 前言一、背景二、Canal 簡介三、主庫數據庫配置1.主庫配置2.創建 Canal 用戶并授予權限 四.配置 Canal Server1.Canal Server 配置文件2.啟動 Canal Server 五.開發 Spring Boot 客戶端1. 引入依賴2. 配置 Canal 客戶端3. 實現數據同步邏輯 六.啟動并測試七.注意事項八…