基于 Wireshark 分析 IP 協議

一、IP 協議

IP(Internet Protocol)協議是一種網絡層協議,它用于在計算機網絡中實現數據包的傳輸和路由。

IP協議的主要功能有:

1. 數據報格式:IP協議將待傳輸的數據分割成一個個數據包,每個數據包包含有源地址、目的地址、數據內容和其他控制信息。

2. 路由選擇:IP協議通過路由器將數據包從源地址傳輸到目的地址,路由器根據目的地址選擇最佳路徑進行傳輸。

3. 路由尋址:IP協議使用IP地址來標識網絡中的設備和主機,通過IP地址可以確定數據包的源地址和目的地址。

4. 分組傳輸:IP協議將數據包分割成較小的數據片段(分組),每個分組都包含了源地址和目的地址等信息,分組可以獨立傳輸,然后在目的地址重新組裝。

5. 數據包重傳:IP協議可以通過檢測丟失的數據包,并進行重傳,以確保數據的可靠性。

6. IP地址分配:IP協議管理和分配IP地址,確保網絡中的設備可以正確地發送和接收數據包。

IP協議是互聯網的核心協議之一,它通過將數據包從源地址傳輸到目的地址,實現了全球范圍內的數據交換和通信。同時,IP協議也為其他網絡協議提供了基礎,如TCP、UDP等傳輸層協議都是在IP協議之上運行的。

二、IPv4

2.1?IPv4 頭

IPv4頭部是IP協議中數據包的固定部分,它包含了一系列字段,用于傳輸和路由數據包。IPv4頭部的長度為20字節,可以擴展到最多60字節。

0                   1                   2                   30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version|  IHL  |Type of Service|          Total Length         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Identification        |Flags|      Fragment Offset    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Time to Live |    Protocol   |         Header Checksum       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Source IP Address                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Destination IP Address                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Options (if any)                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

IPv4頭部的字段包括:

1. 版本(Version):占4位,表示IP協議的版本,IPv4為4。

2. 首部長度(Header Length):占4位,表示IPv4頭部的長度,以4字節為單位。由于IPv4頭部長度是可變的,所以需要乘以4來得到實際的字節數。

3. 服務類型(Type of Service):占8位,用于指定IP包的服務質量,如優先級、延遲、吞吐量等。

4. 總長度(Total Length):占16位,表示整個IP包的長度,包括頭部和數據部分。

5. 標識(Identification):占16位,用于唯一標識每個IP數據包。

6. 標志(Flags):占3位,用于標識是否分片以及分片的處理。其中最后一位為“不分片標志”,表示是否允許數據包進行分片。

7. 片偏移(Fragment Offset):占13位,表示數據包在原始數據中的位置,用于重組分片。

8. 生存時間(Time to Live):占8位,表示數據包在網絡中允許經過的最大跳數,每經過一個路由器,該值減1,直到為0時被丟棄。

9. 協議(Protocol):占8位,表示上層協議的類型,如TCP、UDP、ICMP等。

10. 首部校驗和(Header Checksum):占16位,用于檢驗IPv4頭部的完整性。

11. 源IP地址(Source IP Address):占32位,表示數據包的源IP地址。

12. 目的IP地址(Destination IP Address):占32位,表示數據包的目的IP地址。

IPv4頭部之后是可選的選項字段,用于提供額外的信息或進行特定的處理,長度可變。

IPv4頭部的字段信息和標志位的設置對數據包的傳輸和路由起著關鍵作用,它們決定了數據包的優先級、分片處理、路由選擇等。通過這些字段,IPv4協議實現了數據包的可靠傳輸和全球范圍內的路由選擇。

抓包分析

2.2?IP 分片

IP分片是指將一個較大的IP數據包拆分成多個較小的IP數據片段進行傳輸的過程。這是由于互聯網中,不同網絡設備和鏈路對數據包的最大傳輸單元(MTU)有限制,如果數據包超過MTU,就需要將其分成適合MTU大小的片段進行傳輸。

IP分片涉及到兩個重要字段:標志(Flags)和片偏移(Fragment Offset)。

標志字段有3個位,包括:

- 最高位:保留位,始終設置為0。

- 第二位:不分片(DF,Don't Fragment)標志位,如果設置為1,表示數據包不允許分片。

- 第三位:更多分片(MF,More Fragments)標志位,如果設置為1,表示還有更多的分片。

片偏移字段占13位,表示數據片段在原始數據中的位置,以8字節為單位。

當一個數據包需要分片時,發送方將數據包分成適合MTU大小的片段,并設置標志和偏移字段。接收方在接收到這些片段后,根據標志和偏移字段進行重組,恢復原始的數據包。

重組過程包括以下步驟:

1. 接收方收到第一個片段時,它會檢查不分片標志(DF)是否設置為1。如果是,表示不允許分片,那么接收方會丟棄整個數據包,并發送ICMP“分片被禁止”消息給發送方。

2. 接收方根據標志和偏移字段,將收到的片段按照片偏移進行排序。片偏移為0的片段是原始數據包的第一個片段,其他片段按照片偏移的大小進行排序。

3. 接收方根據片偏移和片段的長度,將這些片段進行重組,恢復原始的數據包。

4. 如果還有更多的分片(MF標志設置為1),接收方會繼續等待后續的片段,直到收到最后一個片段(MF標志設置為0)。

5. 如果接收方在一定時間內沒有收到后續片段,它會丟棄已接收的片段,并發送ICMP“分片超時”消息給發送方。

IP分片可以確保大的數據包能夠在網絡中正確傳輸,但它也增加了網絡延遲和處理的復雜性。因此,在設計網絡應用時,盡量避免產生大的數據包,或者使用更高層的協議(如TCP)來處理分片和重組。

三、IPv6

3.1 IPv6 包結構

以下是一個簡化版的IPv6包結構表格,以及其中各個字段的含義解析:

字段名稱長度(bits)描述
版本4IP協議版本號,固定為6,代表IPv6
流量類別8用于QoS(服務質量)的傳輸類型域
流標簽20簡化5元組,實現基于網絡層流量識別
負載長度16IPv6負載的長度(不包括包頭)
下一個包頭8標識下一個包頭類型或上層協議類型
跳數限制8數據包在轉發過程中可以經過的最大路由器數
源地址128數據包發送方的地址
目的地址128數據包接收方的地址

IPv6包頭中的這些字段共同定義了IPv6數據包的格式和傳輸方式。

  • 版本字段:用于標識IP協議版本,IPv6的值為6。
  • 流量類別字段:提供關于數據包優先級和QoS需求的信息,以便網絡設備進行相應處理。
  • 流標簽字段:用于網絡流量識別,簡化路由選擇和其他網絡操作。
  • 負載長度字段:指示IPv6包頭后的數據長度,包括擴展頭和上層協議數據單元。
  • 下一個包頭字段:標識緊隨當前包頭之后的下一個包頭類型或上層協議類型,用于數據包處理過程中的解析和轉發。
  • 跳數限制字段:類似于IPv4的生存時間(TTL)字段,每經過一個路由器,該字段值減1,當值為0時,數據包將被丟棄,以防止數據包在網絡中無限循環。
  • 源地址和目的地址字段:分別標識數據包的發送方和接收方地址,采用128位的IPv6地址格式,提供更大的地址空間。

請注意,這只是一個簡化版的IPv6包頭結構表格,實際的IPv6包可能還包含擴展包頭和上層協議數據單元等部分。此外,IPv6包頭中的某些字段可能具有更復雜的結構和功能,需要根據具體的應用場景和協議規范進行深入了解。

3.2 鄰居請求

IPv6 不支持廣播流量,所以解析 ARP 時會用到另一種新協議

IPv6中的鄰居請求(Neighbor Solicitation,NS)是IPv6鄰居發現協議(Neighbor Discovery Protocol,NDP)中的一個重要消息類型。鄰居發現協議用于在IPv6中執行類似IPv4中ARP(地址解析協議)的功能,以及處理IPv6中的路由器發現和前綴重新編號等問題。

鄰居請求消息的主要作用包括:

  1. 地址解析:當一個IPv6節點想要知道某個IPv6地址對應的鏈路層地址(如MAC地址)時,它會發送一個鄰居請求消息。這個請求消息會廣播到本地鏈路上,詢問是否有節點擁有這個特定的IPv6地址。

  2. 鄰居可達性檢測:IPv6節點可以使用鄰居請求消息來檢測鄰居節點是否仍然可達。這通常是通過發送一個鄰居請求消息并等待相應的鄰居通告(Neighbor Advertisement,NA)消息來完成的。

  3. 重復地址檢測(DAD):當一個節點配置了一個新的IPv6地址時,它會發送鄰居請求消息來檢查該地址是否已經被網絡上的其他節點使用。如果收到鄰居通告消息,則說明該地址已經被使用,節點需要選擇一個新的地址。

鄰居請求消息的格式如下:

  • 類型:標識消息類型為鄰居請求。
  • 代碼:對于鄰居請求消息,此字段通常設置為0。
  • 校驗和:用于驗證消息的完整性。
  • 目標地址:節點想要解析其鏈路層地址的IPv6地址。
  • 選項:可以包含各種附加信息,如源鏈路層地址選項(用于在響應中包含發送方的鏈路層地址)。

當一個節點發送鄰居請求消息時,它會等待一段時間以接收可能的鄰居通告消息。如果沒有收到響應,或者響應表明目標地址不可用,節點會采取相應的操作,如重新配置地址或標記目標節點為不可達。

鄰居請求和鄰居通告消息一起,在IPv6中實現了地址解析、鄰居可達性檢測和重復地址檢測等關鍵功能,確保了IPv6網絡中的節點能夠高效、準確地發現和維護鄰居節點的信息。

如果對應請求報文

鄰居通告報文

關于 Flags 字段解釋:

  • Router?(設置): 這個標志位表明發送該消息的設備是一個路由器。在IPv6中,路由器會設置這個標志位,以便網絡中的其他節點能夠知道它們可以通過這個設備到達其他網絡。

  • Solicited?(設置): 這個標志位表示該消息是對之前的一個請求的直接響應。在鄰居發現過程中,當一個節點發送鄰居請求消息時,收到該請求的鄰居節點會在其響應的鄰居通告消息中設置Solicited標志位,以指示這是一個對請求的響應。

  • Override?(設置): 這個標志位用于處理地址解析中的沖突。當設備收到一個鄰居通告消息時,如果它已經有一個關于目標IPv6地址的緩存條目,并且該條目的鏈路層地址與通告中的不同,那么Override標志位決定了是否應該更新緩存中的鏈路層地址。如果Override標志位被設置,那么緩存中的條目將被更新為通告中的鏈路層地址。

  • Reserved?(值為0): 這個字段是保留字段,用于將來的擴展。當前其值被設置為0,表示沒有使用任何保留位。

3.3 IPv6 分片

在IPv6中,與IPv4不同,IPv6數據包的分片過程更加簡化,因為IPv6要求中間網絡設備(如路由器)必須支持最大傳輸單元(MTU)的路徑發現和通告,以確保數據包不需要進行分片。

IPv6頭部中沒有像IPv4中的分片字段(標志和片偏移),而是引入了"分片擴展頭部"(Fragment Header)來處理分片。

IPv6分片的過程如下:

1. 發送方根據所需的MTU大小,將數據包進行分片。

2. 發送方在原始IPv6頭部后添加一個或多個分片擴展頭部,每個分片擴展頭部對應一個分片。

3. 每個分片擴展頭部包含了分片的順序編號(Fragment Offset)和更多分片(MF)標志位。

4. 接收方通過檢查分片擴展頭部來確定是否存在分片,并按順序重組分片。

5. 接收方根據分片擴展頭部中的順序編號將分片按照正確的順序重組成原始數據包。

6. 如果還有更多分片,接收方會等待后續的分片,直到收到最后一個分片(MF標志位設置為0)。

7. 如果接收方在一定時間內沒有收到后續分片,它會丟棄已接收的分片,并且不會發送任何分片超時的消息。

需要注意的是,IPv6中的分片是端到端的,也就是說,只有發送方和接收方之間進行分片和重組,中間的路由器不會進行分片操作。這使得IPv6網絡中的路由器更加簡化,提高了路由器的性能和可擴展性。

由于IPv6中的分片是在端到端進行的,因此在設計網絡應用時,應該盡量避免產生大的IPv6數據包,以減少分片的需求,從而提高網絡性能和可靠性。

3.4 IPv6 轉換協議

IPv6轉換協議(IPv6 Transition Protocols)是一組協議和機制,用于實現IPv6和IPv4之間的互操作性和平滑過渡。這些協議和機制旨在幫助IPv4和IPv6網絡之間進行通信,并逐步過渡到純IPv6網絡。

以下是一些常見的IPv6轉換協議:

1. IPv6 over IPv4 Tunneling(IPv6通過IPv4隧道傳輸):
? ?- 6to4:將IPv6數據包封裝在IPv4數據包中,通過IPv4網絡進行傳輸,以實現IPv4到IPv6的通信。
? ?- ISATAP(Intra-Site Automatic Tunnel Addressing Protocol):通過IPv4網絡創建虛擬的IPv6鏈路,使IPv6主機能夠直接通信。
? ?- Teredo:通過UDP隧道在IPv4網絡上傳輸IPv6數據包,允許IPv6主機在IPv4網絡上進行全球IPv6連接。

2. IPv6 over IPv4 Translation(IPv6通過IPv4地址轉換):
? ?- NAT64(Network Address Translation 64):使用IPv6地址和IPv4地址之間的轉換,實現IPv6主機與IPv4主機之間的通信。
? ?- SIIT(Stateless IP/ICMP Translation):無狀態的IPv6和IPv4地址轉換技術,通過映射IPv6地址和IPv4地址來實現互操作性。

3. Dual Stack(雙棧):
? ?- 在支持IPv6的網絡設備上同時啟用IPv4和IPv6協議棧,以實現IPv4和IPv6之間的雙向通信。

4. IPv6/IPv4 Proxy(IPv6/IPv4代理):
? ?- 在IPv4環境中,代理服務器接收IPv6請求,并將其轉換為IPv4請求,并將IPv4響應轉換為IPv6響應,以實現IPv6和IPv4之間的通信。

這些IPv6轉換協議和機制提供了不同的方式來促進IPv4和IPv6之間的互通性和平滑過渡。它們可以在IPv4和IPv6之間提供中間解決方案,使得在網絡升級和過渡期間能夠繼續進行通信,并逐步遷移到純IPv6環境。

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

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

相關文章

[Markdown]是時候該學學使用markdown寫文章了

💕💕💕歡迎各位來到我的博客,今天我們的主題是markdown,你將在這里學習到最全的markdown知識💕💕💕 你還在使用富文本編輯器寫文檔或文章嗎? 你還在用word一點一點地進行…

算法訓練營day29

一、組合 參考鏈接77. 組合 - 力扣&#xff08;LeetCode&#xff09; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Deque; import java.util.List;public class Solution {public List<List<Integer>> combine (int n, int k) …

C語言----斐波那契數列

各位看官們好&#xff0c;當我寫了上一篇博客楊輝三角后&#xff0c;有一些看官叫我講一下斐波那契數列。對于這個大家應該是有了解的。最簡單的規律就是f(n)f(n-2)f(n-1)。就是當前是前兩項之和&#xff0c;然后下標1和0都是1.從第三項開始計算的。那么我們知道規律&#xff0…

選購洗地機有哪些技巧?2024洗地機全面解析,618洗地機綜合對比

洗地機作為人們生活中智能清潔工具的代表&#xff0c;它自帶清/污水箱&#xff0c;不用手洗滾刷&#xff0c;既可以吸塵也可以自動識別并清洗地板上的干濕垃圾和頑固污漬&#xff0c;它以多功能一體化的設計改善了家務清潔的效率和體驗。那么如何在眾多洗地機品牌中&#xff0c…

C#實現簡單音樂文件解析播放——Windows程序設計作業2

1. 作業內容 編寫一個C#程序&#xff0c;要求實現常見音樂文件的播放功能&#xff0c;具體要求如下&#xff1a; ????1). 播放MP3文件&#xff1a; 程序應能夠讀取MP3文件&#xff0c;并播放其中的音頻。 ????2). 播放OGG文件&#xff1a; 應能夠播放ogg文件。 ????…

阿里云Redis創建使用

說明&#xff1a;本文介紹如何使用阿里云Redis&#xff0c;包括開通、連接、使用&#xff1b; 開通 進入官網Redis產品頁&#xff0c;點擊免費試用&#xff08;白嫖&#xff09;&#xff1b; 選擇中間這個&#xff0c;云數據庫Redis版&#xff1b; 開通完成后&#xff0c;可在…

如何在Java項目中使用Spring Boot快速連接達夢數據庫(DM)

前言 在Java開發領域&#xff0c;Spring Boot憑借其簡潔快速的特性成為現代應用開發的首選框架。本文將詳細介紹如何在Spring Boot項目中整合JDBC以快速連接達夢數據庫(DM)&#xff0c;并提供一個簡單的示例來驗證連接是否成功。 一、環境準備與依賴配置 在開始之前&#xf…

零代碼平臺助力中國石化江蘇油田實現高效評價體系

概述&#xff1a; 中國石化集團江蘇石油勘探局有限公司面臨著評價體系依賴人工處理數據、計算繁瑣且容易出錯的挑戰。為解決這一問題&#xff0c;他們決定借助零代碼平臺明道云開發江蘇油田高質量發展經濟指標評價系統。該系統旨在實現原始數據批量導入與在線管理、權重及評分…

QT設計模式:建造者模式

基本概念 建造者模式是一種創建型設計模式&#xff0c;它允許你創建復雜對象的過程獨立于該對象的組成部分以及它們的組裝方式。這樣可以構造出不同的對象表示。 在建造者模式中&#xff0c;將創建對象的過程和對象的表示分離&#xff0c;通過一步步的構建&#xff0c;可以得…

FFmpeg常用API與示例(四)——過濾器實戰

1.filter 在多媒體處理中&#xff0c;filter 的意思是被編碼到輸出文件之前用來修改輸入文件內容的一個軟件工具。如&#xff1a;視頻翻轉&#xff0c;旋轉&#xff0c;縮放等。 語法&#xff1a;[input_link_label1]… filter_nameparameters [output_link_label1]… 1、視…

C++中調用python函數(VS2017+WIN10+Anaconda虛擬環境)

1.利用VS創建C空項目 step1 文件——新建——項目 step2 Visual C—— Windows桌面——Windows桌面向導 step3 選擇空項目 step4 源文件——新建項——添加 step5 Visual C——C文件&#xff08;.cpp&#xff09; 2.配置環境 Step1. 更換成Release與X64 Step2. 打開項目屬性&…

文本提取新技能:學會按行數批量提取,輕松應對各種需求

在數字化時代&#xff0c;文本處理成為我們日常生活和工作中不可或缺的一部分。無論是從網頁、文檔還是數據庫中提取信息&#xff0c;文本提取技能都顯得尤為重要。而按行數批量提取文本內容&#xff0c;更是文本處理中的一項高效且實用的技能。本文將介紹辦公提效工具如何按行…

在Spring Boot應用安裝SSL證書

目錄 前提條件 步驟一&#xff1a;下載SSL證書 步驟二&#xff1a;在Spring Boot安裝SSL證書 步驟三&#xff1a;驗證SSL證書是否安裝成功 前提條件 已通過數字證書管理服務控制臺簽發證書SSL證書綁定的域名已完成DNS解析&#xff0c;即您的域名與主機IP地址相互映射已在W…

ASP.NET學生信息管理系統

摘 要 本文介紹了在ASP.net環境下采用“自上而下地總體規劃&#xff0c;自下而上地應用開發”的策略開發一個管理信息系統的過程。通過分析某一學校學生管理的不足&#xff0c;創建了一套行之有效的計算機管理學生的方案。文章介紹了學生管理信息系統的系統分析部分&#xff0c…

微信投票源碼系統至尊版 吸粉變現功能二合一

源碼簡介 微信投票系統在營銷和社交互動中發揮著多方面的作用&#xff0c;它能夠提升用戶的參與度和品牌曝光度&#xff0c;還是一種有效的數據收集、營銷推廣和民主決策工具。 分享一款微信投票源碼系統至尊版&#xff0c;集吸粉變現功能二合一&#xff0c;全網獨家支持禮物…

已經安裝tensorflow,仍報錯No module named ‘tensorflow‘

在安裝某些python虛擬環境的教程文章中&#xff0c;經常看到有評論區說安裝了但是調用顯示無模塊&#xff0c;例如pytorch和tensorflow等等。 其實跟之前我寫過的一篇文章解決方法類似&#xff0c;就是python項目中需要應用哪個虛擬環境&#xff0c;這個項目的python解釋器就選…

企業網絡需求及適合的解決方案

近年來&#xff0c;企業網絡通信需求可謂五花八門&#xff0c;變幻莫測。它不僅為企業的生產、辦公、研發、銷售提供全面賦能&#xff0c;同時也讓企業業務規模變大成為了可能。 在當前的技術格局下&#xff0c;中大型企業常見的技術方案有很多&#xff0c;而同時也有各自不可替…

商務英語口語成人考級外語培訓之BECkao考級口語篇

在口語考試中&#xff0c;不管實際內容你能說出多少&#xff0c;但準備一些套話&#xff0c;至少還能撐撐場子你們說是不是&#xff1f; 內容闡述 描述事實 1.Im going to describe/present/explain/give you some information about... 2.Id like to say a few words about...…

德國儲能項目鋰電池儲能集裝箱突發火災:安全挑戰再引關注

2024年4月27日&#xff0c;德國尼爾莫爾商業區的一起鋰電池儲能集裝箱火災事件引起了全球關注。這起事故不僅導致兩名消防員在救援過程中受傷&#xff0c;更暴露了儲能系統在安全領域亟待解決的重要問題。 根據德國消防隊的出警記錄&#xff0c;火災發生在晚上9點前不久。消防人…

機器學習算法應用——神經網絡回歸任務、神經網絡分類任務

神經網絡回歸任務&#xff08;4-3&#xff09; 神經網絡回歸任務&#xff0c;通常指的是使用神經網絡模型進行回歸分析。回歸分析是一種統計學方法&#xff0c;用于研究一個或多個自變量&#xff08;預測變量&#xff09;與一個因變量&#xff08;響應變量&#xff09;之間的關…