【TCP/IP】5. IP 協議

5. IP 協議

  • 5. IP 協議
    • 5.1 概述
    • 5.2 IP 數據報格式
    • 5.3 無連接數據報傳輸
      • 5.3.1 首部校驗
      • 5.3.2 數據分片與重組
    • 5.4 IP 數據報選項
      • 5.4.1 選項格式
      • 5.4.2 選項類型
    • 5.5 IP 模塊的結構
    • 本章要點

5. IP 協議

5.1 概述

IP 協議是 TCP/IP 協議簇的核心協議,位于網絡層,提供不可靠、無連接的數據報服務,是實現網絡互聯的基礎。

  • 核心作用:通過 IP 地址統一物理地址,通過 IP 數據報統一物理數據幀,屏蔽底層網絡差異,向上層提供統一服務。
  • 相鄰協議:網絡層中,ARP、RARP 報文不封裝在 IP 數據報中,而 ICMP、IGMP、OSPF 數據需封裝在 IP 數據報中傳輸。
  • 特點:
    1. 點到點協議:數據傳輸的對等實體是相鄰設備(同一網絡)的對等層實體。
    2. 不可靠性:不保證傳輸可靠性,不進行數據差錯校驗和跟蹤,若需可靠傳輸需依賴上層 TCP 協議。
    3. 無連接性:數據報獨立傳輸,可能經不同路徑,可能無序到達。

5.2 IP 數據報格式

IP 數據報由首部數據兩部分組成,首部分為定長部分(20 字節)和變長部分(選項,最長 40 字節)。各字段詳細如下:

字段位數含義與細節
版本4標識 IP 協議版本,IPv4 為 4(二進制 0100),決定數據報格式。
首部長度4以 32 位(4 字節)為單位,指示首部總長度(定長 + 選項)。最小值為 5(20 字節,無選項),最大值為 15(60 字節,含 40 字節選項)。
服務類型(TOS)/ 區分業務字段8原 TOS 字段用于規定數據報處理方式(如優先級、延遲、吞吐量等);后改為區分業務字段: - 前 6 位:區分業務碼點(64 個編碼,對應不同業務); - 后 2 位:顯式擁塞通告(ECN,RFC 3168 定義),用于 TCP 擁塞控制: - 00:不支持 ECN; - 01/10:支持 ECN; - 11:路由器正經歷擁塞。
總長度16指示整個 IP 數據報的字節數(首部 + 數據),最大值為 65535 字節。數據長度 = 總長度 - 首部長度 ×4。
標識16信源機賦予數據報的唯一標識符(每次發送自動 + 1),用于分片重組時標識同一原始數據報。
標志3低 2 位有效,控制分片: - D 位(第 0 位):0 = 允許分片,1 = 不允許分片(若超過 MTU 則丟棄并報錯); - M 位(第 1 位):0 = 本片是最后一片,1 = 后續還有分片。
片偏移13以 8 字節為單位,指示本片數據在原始數據報數據區中的偏移量(用于重組時確定順序)。
生存時間(TTL)8限制數據報在網絡中的傳輸時間,每經過一個路由器減 1,值為 0 時丟棄數據報(防止環路)。常見初始值:Windows 為 128,Linux 為 64。
協議8指示數據字段封裝的上層協議,如: - 1=ICMP;6=TCP;17=UDP;89=OSPF。
首部校驗和16保證首部完整性,僅校驗首部(不校驗數據): - 發送方:將首部分為 16 位塊,校驗和字段設為 0,用 1 的補碼求和后求補,結果填入校驗和字段; - 接收方:重復計算,若結果為 0 則首部正確,否則丟棄。
源地址32數據報最初發送者的 IP 地址(32 位,點分十進制表示)。
目的地址32數據報最終接收者的 IP 地址(32 位,點分十進制表示)。
選項可變(≤40 字節)用于網絡控制和測試(如源路由、記錄路由、時間戳等),格式含選項碼、長度、數據(詳見 5.3)。
數據可變上層協議數據(如 TCP 報文段、UDP 數據報等),長度受總長度限制(≤65535 - 首部長度 ×4)。

5.3 無連接數據報傳輸

IP 數據報傳輸需處理首部校驗數據分片與重組路由選擇,核心是適應不同網絡的最大傳輸單元(MTU)。

5.3.1 首部校驗

  • 僅校驗首部:因首部字段在傳輸中可能變化(如 TTL、校驗和),需在相鄰設備間逐跳校驗;數據校驗由上層協議(如 TCP)負責。
  • 校驗過程:
    1. 發送方:將首部拆分為 16 位塊,校驗和字段設為 0,用 1 的補碼計算總和,再對結果求補,填入校驗和字段。
    2. 接收方:重復計算,若求和后求補結果為 0,則首部正確;否則丟棄數據報。

5.3.2 數據分片與重組

  • 背景:不同物理網絡的最大傳輸單元(MTU,物理幀可封裝的最大數據字節數)不同,數據報長度超過 MTU 時需分片。
  • 分片規則
    1. 每個分片需攜帶完整首部(與原數據報首部大部分相同,僅標志、總長度、片偏移不同)。
    2. 分片數據大小需為 8 字節的整數倍(最后一片除外),以保證片偏移可表示。
    3. 分片可在信源機或中間路由器進行,重組僅在信宿機進行。
  • 分片相關字段
    • 標識:所有分片的標識相同,用于關聯同一原始數據報。
    • 標志:M 位 = 1 表示非最后一片,M 位 = 0 表示最后一片。
    • 片偏移:指示本片在原始數據中的位置(如偏移 0 表示第 1 片,偏移 175 表示數據從 1400 字節開始)。
  • 重組過程
    1. 信宿機根據標識收集所有分片,按片偏移排序。
    2. 啟動重組定時器,超時未集齊所有分片則丟棄,并通過 ICMP 報告錯誤。
    3. 重組后的數據報首部恢復為原始格式(總長度為原始長度,標志和片偏移重置)。

5.4 IP 數據報選項

IP 選項是首部的變長部分(≤40 字節),用于網絡控制和測試,所有 IP 協議必須支持選項處理。

5.4.1 選項格式

每個選項由三部分組成:

  • 選項碼(8 位):含 3 個子字段:
    • 復制位(1 位):1 = 選項復制到所有分片,0 = 僅復制到第一個分片;
    • 選項類(2 位):00 = 路徑控制 / 測試,10 = 時間戳測試,01/11 未用;
    • 選項號(5 位):細分選項類型。
  • 選項長度(8 位):選項總長度(含選項碼、長度、數據),單字節選項無此字段。
  • 選項數據(可變):選項具體內容(如 IP 地址、時間戳等)。

5.4.2 選項類型

選項類選項號選項名功能與細節
0000000選項結束單字節選項,標識選項部分結束,用于填充使首部為 32 位整數倍。
0000001無操作單字節選項,作為填充(避免選項結束符過早出現)。
0000011寬松源路由信源指定路徑關鍵點,關鍵點之間可通過路由器自動選路: - 選項碼 = 131(復制位 = 1,類 = 00,號 = 00011); - 含指針(指示下一跳地址位置)和 IP 地址表(關鍵點列表)。
0000111記錄路由記錄數據報從信源到信宿經過的路由器 IP 地址: - 選項碼 = 7(復制位 = 0,類 = 00,號 = 00111); - 信源預分配地址空間,指針指向 next 可用位置,空間不足則停止記錄。
0001001嚴格源路由信源指定完整路徑,數據報必須嚴格按順序經過每一路由器: - 選項碼 = 137(復制位 = 1,類 = 00,號 = 01001); - 含指針和 IP 地址表(完整路徑),若無法按路徑傳輸則丟棄。
1000100時間戳記錄數據報經過路由器的當地時間(世界時間,千分之一秒為單位): - 選項碼 = 68(復制位 = 0,類 = 10,號 = 00100); - 含溢出(未記錄的時間戳數)、標志(控制格式:0 = 僅時間,1 = 時間 + 地址,3 = 僅指定地址時間)、時間戳列表。

5.5 IP 模塊的結構

IP 協議的核心功能包括封裝、分片重組、選項處理、路由選擇等,數據處理流程如下:

  • 上層數據(如 TCP/UDP)向下傳輸
    1. 封裝為 IP 數據報(添加首部字段)。
    2. 處理模塊判斷目的地址:若為環回地址(127.x.x.x)或本機 IP,則直接回傳上層;否則進入路由選擇。
    3. 路由選擇模塊確定下一跳接口,分片模塊根據接口 MTU 分片(若需),最終交給下層(數據鏈路層)發送。
  • 下層數據(數據鏈路層幀)向上傳輸
    1. 解封裝獲取 IP 數據報,進入 IP 處理模塊:校驗首部、處理選項、更新 TTL(減 1,若為 0 則丟棄)。
    2. 若本機是信宿機:根據協議字段將數據提交給對應上層協議(如 TCP/UDP/ICMP)。
    3. 若需轉發(本機是路由器):路由選擇模塊確定下一跳,分片模塊根據出口 MTU 分片(若需),交給下層發送。

本章要點

  • IP 是不可靠、無連接的數據報協議,提供盡力傳輸服務,通過 IP 地址和數據報統一底層差異。
  • IP 數據報首部含 20 字節定長部分和≤40 字節選項,關鍵字段包括版本、首部長度、總長度、標識、標志、片偏移、TTL、協議、校驗和、源 / 目的地址。
  • 分片由 MTU 觸發,依賴標識、標志、片偏移字段,重組僅在信宿機進行,超時未重組則丟棄。
  • 首部校驗和僅校驗首部,采用 1 的補碼算法,確保首部完整性。
  • IP 選項用于網絡控制和測試,包括源路由(嚴格 / 寬松)、記錄路由、時間戳等,需按格式處理。
  • IP 模塊負責數據報的封裝、分片重組、選項處理、路由選擇等,實現數據在網絡中的傳輸。

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

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

相關文章

Linux 服務器挖礦病毒深度處理與防護指南

在 Linux 服務器運維中,挖礦病毒是常見且危害較大的安全威脅。此類病毒通常會隱蔽占用大量 CPU 資源進行加密貨幣挖礦,導致服務器性能驟降、能耗激增,甚至被黑客遠程控制。本文將從病毒特征識別、應急處理流程、深度防護措施三個維度&#xf…

MySQL數據表設計 系統的營銷功能 優惠券、客戶使用優惠券的設計

系統的營銷功能營銷功能概述:系統的營銷功能主要是:市場活動管理、營銷自動化、銷售線索管理以及數據分析和報告等。?ToC?(Consumer):面向個人消費者,滿足日常消費需求。?優惠券的種類:ToC的…

讓 3 個線程串行的幾種方式

1、通過join()的方式 子線程調用join()的時候,主線程等待子線程執行完再執行。如果讓多個線程順序執行的話,那么需要他們按順序調用start()。/*** - 第一個迭代(i0):* 啟動線程t1 -> 然后調用t1.join()。* …

在 Vue 項目中關閉 ESLint 規則

在 Vue 2 項目中關閉 ESLint 規則有以下幾種方法,根據您的需求選擇合適的方式: 1. 完全禁用 ESLint 修改 vue.config.js(推薦) module.exports {// 關閉 ESLintlintOnSave: false }或修改 package.json {"scripts": {&…

電腦息屏工具,一鍵黑屏超方便

軟件介紹 今天為大家推薦一款實用的PC端屏幕管理工具——CloseDsp。這款"息屏小能手"能一鍵關閉顯示器,解決各種場景下的屏幕管理需求。 核心功能 CloseDsp最突出的特點是能瞬間關閉顯示器屏幕。只需點擊"關閉顯示器"按鈕,屏幕…

嵌入式調試LOG日志輸出(以STM32為例)

引言在嵌入式系統開發中,調試是貫穿整個生命周期的關鍵環節。與傳統PC端程序不同,嵌入式設備資源受限(如內存、存儲、處理器性能),且運行環境復雜(無顯示器、鍵盤),傳統的斷點調試或…

Zephyr的設備驅動模型

默認配置默認配置 boards/arm/nucleo_f401re/ ├── nucleo_f401re.dts ← 板卡設備樹主入口 ├── nucleo_f401re_defconfig ← 默認 Kconfig 配置 ├── board.cmake ← CMake 構建入口overlay1.新增加驅動需要修改對應板的設備樹文件&#xf…

Mysql字段沒有索引,通過where x = 3 for update是使用什么級別的鎖

沒有索引時,FOR UPDATE 會鎖住整個表 現在,你正在一本一本地翻看所有書,尋找“維修中”的書,并且你對管理員說:“在我清點和修改完之前,別人不能動這些書,也不能往這個范圍里加新書!…

TCP-與-UDP-協議詳解:原理、區別與應用場景全解析

TCP 與 UDP 協議詳解:原理、區別與應用場景全解析 在日常使用網絡的過程中,我們經常聽到 TCP 和 UDP 這兩個詞。你打開網頁、發送消息、觀看視頻,背后都在使用 TCP 或 UDP 進行數據傳輸。那么這兩個協議到底是怎么工作的?它們之間…

GitHub信息收集

目錄 簡介 一、入門搜索技巧 1. 基本關鍵詞搜索 2. 文件類型限定搜索 3. 用戶/組織定向搜索 二、精準定位技巧 1. 組合搜索條件 2. 排除干擾結果 3. 路徑限定搜索 三、防御建議 四、法律與道德提醒 簡介 GitHub作為全球最大的代碼托管平臺,存儲著數十億…

由 DB_FILES 參數導致的 dg 服務器無法同步問題

由 DB_FILES 參數導致的 dg 服務器無法同步問題 用戶反映,dg 服務器數據從昨晚(7月8日)開始停止同步。 連接服務器發現沒有 mrp 進程,并且 OPEN_MODE 參數也不正確。具體情況如下所示: SQL> select process, status…

Go語言泛型-泛型對代碼結構的優化

在Go語言中,Go泛型-泛型對代碼結構的優化部分主要探討了泛型如何幫助我們優化代碼結構、減少重復代碼,并提高代碼的可維護性、可讀性和復用性。以下是詳細內容: 一、引言 Go 1.18 引入了泛型,極大地提高了語言的靈活性。泛型使得我們可以編寫更加通用、可復用且類型安全的…

【1-快速上手】

文章目錄前言簡介什么是 Konva?安裝 Konva概述它是如何工作的?基本形狀樣式事件拖放濾鏡動畫選擇器序列化與反序列化性能前言 結合項目實際業務需求,在 Fabric、Konva 等圖形化框架中,我選擇了性能表現好的 Konva。首先去學習官方…

【LeetCode】209. 長度最小的子數組(前綴和 + 二分)

【LeetCode】209. 長度最小的子數組(前綴和 二分)題目描述前綴和二分優化前綴和總結二分總結題目描述 題目鏈接:【LeetCode】209. 長度最小的子數組(前綴和 二分) 給定一個含有 n 個整數的數組和一個整數 target。…

文件系統----底層架構

當我們談到文件系統的時候,最重要的點在于:文件的內容與屬性是如何存儲在磁盤中的?以及操作系統是如何精準定位到這些文件內容的?在談及文件的內核前,我們先來了解一下儲存文件的硬件-----硬盤一.理解硬件首先我們來看…

小程序開發平臺,自主開發小程序源碼系統,多端適配,帶完整的部署教程

溫馨提示:文末有資源獲取方式全開源與自主開發源碼完全開放:開發者可自由修改前端界面、后端邏輯及數據庫結構,支持深度定制(如調整用戶端交互流程、商家端管理功能等)。技術棧透明:基于主流技術&#xff0…

stp拓撲變化分類

Max Age 20sHellotime 2sForward delay 153、拓撲改變需要多長時間1)根橋故障:需要50秒(Max age2個forwarding delay)2)非直連鏈路:非直連故障在穩定的STP網絡,非根橋會定期收到來自根橋的BPDU報…

一、深度學習——神經網絡

一、神經網絡 1.神經網絡定義:人工神經網絡(Artificial Neural Network,ANN)也簡稱為神經網絡(NN),是一種模仿生物神經網絡結構和功能的計算模型。人腦可以看作是一個生物神經網絡,由…

【牛客算法】 小紅的奇偶抽取

文章目錄 一、題目介紹1.1 題目描述1.2 輸入描述1.3 輸出描述1.4 示例二、解題思路2.1 核心算法設計2.2 性能優化關鍵2.3 算法流程圖三、解法實現3.1 解法一:字符串分離法3.1.1 初級版本分析3.2 解法二:數學逐位構建法(推薦)3.2.1 優化版本分析四、總結與拓展4.1 關鍵優化技…

Maven 繼承:構建高效項目結構的利器

一、引言 Maven 是一個強大的項目管理工具,它通過標準化的項目結構和依賴管理極大地簡化了 Java 項目的開發流程。在 Maven 中,繼承是一種非常有用的功能,它允許我們創建一個父項目,其他子項目可以繼承這個父項目的配置信息&#…