計算機網絡:(八)網絡層(中)IP層轉發分組的過程與網際控制報文協議 ICMP

計算機網絡:(八)網絡層(中)IP層轉發分組的過程與網際控制報文協議 ICMP

  • 前言
  • 一、IP層轉發分組的過程
    • 第一步:接收數據包并解封裝
    • 第二步:提取目標 IP 地址
    • 第三步:查詢路由表
    • 第四步:封裝并轉發至下一跳
    • 第五步:逐跳轉發直至目標
  • 二、劃分子網和構造超網
    • 2.1 劃分子網
    • 2.2 使用子網時分組的轉發
    • 2.3 無分類編址 CIDR(構造超網)
  • 三、網際控制報文協議 ICMP
    • 3.1 ICMP 是什么?
    • 3.2 ICMP 報文的種類
    • 3.3 ICMP 的應用舉例
    • 3.4 總結


前言

  • 前面我們已經講解了網絡層的重要概念及網際協議(IP);
  • 接下來,我們繼續講解 IP 層的分組轉發過程與網際控制報文協議(ICMP)
    在這里插入圖片描述

我的個人主頁,歡迎來閱讀我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的計算機網絡專欄,歡迎來閱讀
https://blog.csdn.net/2402_83322742/category_12909527.html


一、IP層轉發分組的過程

在這里插入圖片描述

第一步:接收數據包并解封裝

  • 當一個數據包(分組)到達路由器時,就像快遞送到了分揀中心。
  • 路由器首先會拆開最外層的 “包裝”(也就是數據鏈路層的頭部),露出里面的 IP 地址信息 —— 這就像看清了快遞單上的收件人地址。?

第二步:提取目標 IP 地址

路由器會重點盯著數據包里的 “目標 IP 地址”,就像分揀員看快遞單上的收件城市。

比如目標 IP 是 “192.168.1.100”,路由器要解決的問題是:“這個地址該往哪個方向送?”?

第三步:查詢路由表

在這里插入圖片描述

  • 路由器里有一張 “路由表”,相當于一本 “全國快遞網點對照表”
  • 表里記錄著不同 IP 地址段對應的 “最近中轉站”(專業叫 “下一跳”)。

比如表中可能寫著 “所有以 192.168.1 開頭的地址,都先送到隔壁的 10.0.0.1 路由器”。?

如果目標 IP 在表里能找到精確匹配的記錄,路由器就直接按記錄走;如果沒找到精確匹配,就找 “最像的”(比如同一網段的模糊匹配);

  • 要是實在沒頭緒,就會送到 “默認中轉站”(相當于寄往陌生城市時先送到省會分揀中心)。?

第四步:封裝并轉發至下一跳

  • 確定好下一跳后,路由器會給數據包重新打包 —— 加上新的 “數據鏈路層頭部”(就像給快遞換一個寫著下一中轉站地址的面單),然后通過對應的網線或無線信號發送出去。?

第五步:逐跳轉發直至目標

  • 這個過程會在每個途經的路由器上重復:接收、看目標 IP、查路由表、送往下一站
  • 就像快遞從市級分揀中心到區級網點,再到小區驛站,最終送到收件人手里。?

簡單說,IP 層轉發分組的核心就是:“看地址→查路線→找下家→送出去”。正是這一步步的接力,才讓我們發的消息、刷的視頻能準確傳到目的地

二、劃分子網和構造超網

2.1 劃分子網

為什么需要子網劃分?

  • 早期的IP地址(如A、B、C類)是固定大小的,比如C類網絡包含254個主機地址。
  • 但實際中,很多網絡不需要這么多地址,直接使用會導致地址浪費
  • 例如,一個公司有100臺電腦,直接分配一個C類網絡(254個地址)就會浪費154個地址。
    子網劃分的核心思想:將一個大網絡拆分成多個小網絡(子網),每個子網的大小可以根據需求靈活調整。
    在這里插入圖片描述

如何劃分子網?

  1. 子網掩碼的作用:子網掩碼是一個32位的二進制數,其中連續的1代表網絡部分,0代表主機部分。例如,C類網絡的默認子網掩碼是255.255.255.0(即/24),表示前24位是網絡部分,后8位是主機部分。
  2. 借位操作:從主機部分“借”若干位作為子網號。例如,一個C類網絡192.168.1.0/24,如果借2位主機位,子網掩碼變為255.255.255.192(即/26),可劃分出4個子網,每個子網有62個可用主機地址(2?-2=62)。
  3. 計算方法
    • 子網數 = 2^借位數
    • 每個子網的主機數 = 2^(剩余主機位數) - 2(減去網絡地址和廣播地址)

例子
某公司需要劃分3個子網,每個子網最多39臺主機。選擇C類網絡192.168.1.0/24,借2位主機位:

  • 子網數 = 22=4(滿足需求)
  • 每個子網主機數 = 2?-2=62(滿足39臺)
  • 子網掩碼變為255.255.255.192(即/26
  • 子網范圍:
    • 第一個子網:192.168.1.0/26(可用地址:192.168.1.1~192.168.1.62)
    • 第二個子網:192.168.1.64/26(可用地址:192.168.1.65~192.168.1.126)
    • 依此類推。

2.2 使用子網時分組的轉發

路由器如何找到目標子網?
當數據包到達路由器時,路由器會執行以下步驟:

  1. 提取目的IP地址:例如,目的IP是192.168.1.100,子網掩碼是255.255.255.192(即/26)。
  2. 計算網絡地址:將IP地址和子網掩碼進行邏輯與運算
    • 192.168.1.10011000000.10101000.00000001.01100100
    • 255.255.255.19211111111.11111111.11111111.11000000
    • 與運算結果:11000000.10101000.00000001.01000000192.168.1.64/26,即該IP屬于192.168.1.64/26子網。
  3. 查找路由表:路由器根據計算出的網絡地址,在路由表中找到對應的下一跳地址,將數據包轉發到目標子網。

轉發表結構
路由器的轉發表通常包含以下信息:

  • 網絡地址:子網的網絡地址(如192.168.1.0/24)。
  • 子網掩碼:用于匹配IP地址的掩碼(如255.255.255.0)。
  • 下一跳地址:數據包應轉發到的下一個路由器或直接連接的設備。

例子
假設有兩個子網192.168.1.0/26192.168.1.64/26,路由器收到一個目的IP為192.168.1.100的數據包。通過與運算確定其屬于192.168.1.64/26子網,路由器將數據包轉發到該子網的網關。

2.3 無分類編址 CIDR(構造超網)

CIDR的背景
傳統的A、B、C類地址和子網劃分仍存在地址浪費和路由表膨脹的問題。例如,一個需要4000臺主機的網絡,若分配16個C類網絡(每個254臺),路由器需要維護16條路由條目。CIDR通過聚合地址塊解決這一問題。
在這里插入圖片描述

CIDR的核心思想

  • 取消分類地址:不再固定網絡位和主機位的長度,而是用斜線記法(如192.168.0.0/22)表示網絡前綴的長度。
  • 構造超網:將多個連續的小網絡合并成一個大網絡(超網),減少路由表條目。

如何構造超網?

  1. 連續地址塊:待合并的網絡必須是連續的。例如,192.168.0.0/24192.168.1.0/24192.168.2.0/24192.168.3.0/24這四個C類網絡是連續的。
  2. 合并規則:將子網掩碼向左移動(減少網絡位),直到所有網絡的前綴相同。例如,這四個C類網絡的二進制前綴如下:
    • 192.168.0.011000000.10101000.00000000.00000000
    • 192.168.1.011000000.10101000.00000001.00000000
    • 192.168.2.011000000.10101000.00000010.00000000
    • 192.168.3.011000000.10101000.00000011.00000000
      前22位相同,因此合并后的超網為192.168.0.0/22,子網掩碼為255.255.252.0
  3. 地址范圍:超網包含的地址范圍是192.168.0.0192.168.3.255,共1024個地址(21?)。

CIDR的優勢

  • 減少路由表條目:例如,16個C類網絡合并成一個超網后,路由表只需一條記錄。
  • 靈活分配地址:可根據實際需求分配任意大小的地址塊,減少浪費。

三、網際控制報文協議 ICMP

3.1 ICMP 是什么?

ICMP(Internet Control Message Protocol)是網絡層的“交通警察”,負責在 IP 主機、路由器之間傳遞控制消息。它的核心作用是報告網絡錯誤診斷網絡狀態,例如:

  • 當你訪問網站失敗時,ICMP 會告訴你“目標不可達”;
  • 當網絡擁堵導致數據包丟失時,ICMP 會提醒發送方降低速率。

ICMP 報文被封裝在 IP 數據包中傳輸,就像快遞里的“附言紙條”,專門傳遞與運輸過程相關的反饋信息。
在這里插入圖片描述

3.2 ICMP 報文的種類

ICMP 報文分為兩大類:差錯報告報文查詢報文

一、差錯報告報文(報告問題)
這類報文用于通知發送方數據傳輸中出現的問題,常見類型包括:

  1. 目的不可達(Type 3)

    • 當路由器或主機無法將數據包送達目標時,會發送此報文。例如:
      • 網絡不可達:目標網絡不存在或路由配置錯誤;
      • 主機不可達:目標 IP 對應的設備未開機或未聯網;
      • 端口不可達:目標端口被防火墻屏蔽(常見于 UDP 應用)。
    • 例子:你用手機訪問某 APP 時,若服務器端口被封禁,手機會收到“端口不可達”的 ICMP 報文。
  2. 超時(Type 11)

    • 當數據包的生存時間(TTL)耗盡(如路由環路導致數據包無限循環),或分片重組超時(數據包分片未按時到達)時,路由器會發送此報文。
    • 例子:如果網絡中存在環路,數據包在路由器之間來回轉發,TTL 減為 0 后會觸發超時報文。
  3. 參數問題(Type 12)

    • 當 IP 頭部字段錯誤(如錯誤的協議字段)時,路由器或主機丟棄數據包并發送此報文。
  4. 重定向(Type 5)

    • 路由器發現源主機選擇的路由路徑不是最優時,會發送此報文,指導主機使用更優路徑。
    • 例子:當你連接到 Wi-Fi 時,路由器可能通過重定向報文告訴你下次應直接訪問網關。

二、查詢報文(主動詢問)
這類報文用于主動獲取網絡信息,常見類型包括:

  1. 回顯請求/應答(Type 8/0)

    • 回顯請求:主機或路由器向目標發送詢問,測試對方是否可達;
    • 回顯應答:目標收到請求后返回應答,確認自己存活。
    • 例子ping 命令就是基于此報文,通過發送回顯請求并接收應答,判斷網絡連通性。
  2. 時間戳請求/應答(Type 13/14)

    • 用于測量網絡往返時間(RTT),同步主機時鐘。發送方記錄發送時間,接收方記錄接收和返回時間,通過計算差值評估網絡延遲。
  3. 地址掩碼請求/應答(Type 17/18)

    • 主機可通過此報文向路由器查詢子網掩碼,動態獲取網絡配置信息。

3.3 ICMP 的應用舉例

ICMP 是網絡診斷的核心工具,以下是兩個最典型的應用:
在這里插入圖片描述

一、Ping:測試網絡連通性

  • 原理:發送 ICMP 回顯請求報文,等待目標返回回顯應答。
  • 流程
    1. 你在電腦上輸入 ping www.baidu.com,電腦會發送一個 ICMP 回顯請求;
    2. 百度服務器收到后返回回顯應答;
    3. 若收到應答,說明網絡連通,反之則可能存在故障(如防火墻攔截或線路中斷)。
  • 輸出解讀
    • Reply from X.X.X.X: bytes=32 time<1ms TTL=64:連通正常,延遲低;
    • Request timed out:無響應,可能目標不可達或被過濾。

二、Traceroute(Windows 中為 Tracert):追蹤網絡路徑

  • 原理:發送一系列 TTL 遞增的數據包,利用 ICMP 超時報文和端口不可達報文,確定數據包經過的路由器路徑。
  • 流程
    1. 第一個數據包 TTL=1,到達第一個路由器時 TTL 減為 0,路由器返回超時報文,記錄其 IP;
    2. 第二個數據包 TTL=2,到達第二個路由器時 TTL 減為 0,返回超時報文,記錄第二個 IP;
    3. 重復此過程,直到數據包到達目標主機。若目標主機端口未開放,會返回端口不可達報文,流程終止。
  • 例子
    Tracing route to www.baidu.com [180.97.33.107]  
    over a maximum of 30 hops:  
    1    1 ms    1 ms    1 ms  192.168.1.1  
    2    3 ms    2 ms    2 ms  10.0.0.1  
    ...  
    10   12 ms   10 ms   11 ms  180.97.33.107  
    
    輸出顯示數據包經過的路由器 IP 及延遲,幫助定位網絡故障點。

3.4 總結

  • ICMP 的作用
    • 差錯報告:如“目標不可達”“超時”,幫助排查網絡錯誤;
    • 查詢診斷:如 pingtraceroute,測試連通性和路徑追蹤。
  • 重要性
    ICMP 是網絡的“神經系統”,雖然它不直接傳輸數據,但通過反饋控制信息,確保了 IP 協議的高效運行。掌握 ICMP 的原理和工具(如 ping),是網絡運維和故障排查的基礎技能。

通過 ICMP,我們能像“網絡醫生”一樣,快速定位網絡問題,讓數據傳輸更加可靠。


以上就是本篇博客的全部內容,下一篇繼續進入網絡層的學習。

我的個人主頁,歡迎來閱讀我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的計算機網絡專欄,歡迎來閱讀
https://blog.csdn.net/2402_83322742/category_12909527.html

如果您覺得內容對您有幫助,歡迎點贊收藏,您的支持是我創作的最大動力!

在這里插入圖片描述

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

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

相關文章

Python爬蟲實戰:研究concurrent-futures庫相關技術

1. 引言 1.1 研究背景與意義 網絡爬蟲作為互聯網數據采集的重要工具,在信息檢索、輿情分析、學術研究等領域具有廣泛應用。隨著互聯網數據量的爆炸式增長,傳統單線程爬蟲的效率已難以滿足需求,并發爬蟲技術成為研究熱點。 1.2 相關工作 現有爬蟲框架如 Scrapy、Beautifu…

Neo4j 框架 初步簡單使用(基礎增刪改查)

Neo4j 是一個高性能的、開源的圖數據庫。它將數據存儲為圖結構&#xff0c;其中節點表示實體&#xff0c;邊表示實體之間的關系。這種圖數據模型非常適合處理復雜的關系型數據&#xff0c;能夠高效地進行關系查詢和遍歷。 Neo4j 的主要特性包括&#xff1a; 強大的圖查詢語言 C…

【iOS】鎖[特殊字符]

文章目錄前言1??什么是鎖&#x1f512;&#xff1f;1.1 基本概念1.2 鎖的分類2??OC 中的常用鎖2.1 OSSpinLock&#xff08;已棄用&#xff09;&#xff1a;“自旋鎖”的經典代表為什么盡量在開發中不使用自旋鎖自旋鎖的本質缺陷&#xff1a;忙等待&#xff08;Busy Waiting…

在easyui中如何設置自帶的彈窗,有輸入框

這個就是帶input的確認彈框&#xff08;$.messager.prompt&#xff09;// 使用prompt并添加placeholder提示 $.messager.prompt(確認, 確定要將事故記錄標記為 statusText 嗎&#xff1f;, function(r) {if (r) {// r 包含用戶輸入的內容var remark r.trim();// 驗證輸入不為…

Android-API調用學習總結

一、Postman檢查API接口是否支持1.“HTTP Request” 來創建一個新的請求。——請求構建界面&#xff0c;這是你進行所有 API 調用的地方。2.設置請求方法和 URL&#xff1a;選擇請求方法&#xff1a; 在 URL 輸入框左側&#xff0c;有一個下拉菜單。點擊它&#xff0c;選擇你想…

《計算機網絡》實驗報告一 常用網絡命令

目 錄 1、實驗目的 2、實驗環境 3、實驗內容 3.1 ping基本用法 3.2 ifconfig/ipconfig基本用法 3.3 traceroute/tracert基本用法 3.4 arp基本用法 3.5 netstat基本用法 4、實驗結果與分析 4.1 ping命令的基本用法 4.2 ifconfig/ipconfig命令的基本用法 4.3 tracer…

MySQL深度理解-深入理解MySQL索引底層數據結構與算法

1.引言在項目中會遇到各種各樣的慢查詢的問題&#xff0c;對于千萬級的表&#xff0c;如果使用比較笨的查詢方式&#xff0c;查詢一條SQL可能需要幾秒甚至幾十秒&#xff0c;如果將索引設置的比較合理&#xff0c;可以將查詢變得仍然非常快。2.索引的本質索引&#xff1a;幫助M…

Django母嬰商城項目實踐(九)- 商品列表頁模塊

9、商品列表頁模塊 1、業務邏輯 商品模塊分為:商品列表頁 和 商品詳情頁 商品列表頁將所有商品按照一定的規則排序展示,用于可以從銷量、價格、上架時間和收藏數量設置商品的排序方式,并且在商品左側設置分類列表,選擇某一個分類可以篩選出對應的商品信息。 商品列表頁…

8、STM32每個系列的區別

1、F1和F4的系列的區別 F1采用Crotex M3內核&#xff0c;F4采用Crotex M4內核。F4比F1的主頻高。F4具有浮點數運算單元&#xff0c;F1沒有浮點單元。F4的具備增強的DSP指令集。F407的執行16位DSP指令的時間只有F1的30%~70%。F4執行32位DSP指令的時間只有F1的25% ~ 60%。F1內部S…

DeepSPV:一種從2D超聲圖像中估算3D脾臟體積的深度學習流程|文獻速遞-醫學影像算法文獻分享

Title題目DeepSPV: A deep learning pipeline for 3D spleen volume estimation from 2Dultrasound imagesDeepSPV&#xff1a;一種從2D超聲圖像中估算3D脾臟體積的深度學習流程01文獻速遞介紹1.1 臨床背景 脾腫大指脾臟增大&#xff0c;是多種潛在疾病的重要臨床指標&#x…

病歷數智化3分鐘:AI重構醫院數據價值鏈

一、方案概述本方案針對某省醫聯體醫院病例數據管理需求&#xff0c;通過AI技術實現病歷數字化→信息結構化→數據應用化的全流程改造。系統采用雙端協同架構&#xff1a; - 普通用戶端&#xff1a;為一線醫護人員提供病歷拍攝、AI識別修正、安全上傳功能 - 管理員后臺&#…

CSS+JavaScript 禁用瀏覽器復制功能的幾種方法

&#x1f6e1;? 禁用瀏覽器復制功能完整指南 網頁中禁用用戶的復制功能&#xff0c;包括 CSS 方法、JavaScript 方法、綜合解決方案以及實際應用場景。適用于需要保護內容版權、防止惡意爬取或提升用戶體驗的場景。 &#x1f4cb; 目錄 &#x1f680; 快速開始&#x1f3a8…

Java 虛擬線程在高并發微服務中的實戰經驗分享

Java 虛擬線程在高并發微服務中的實戰經驗分享 虛擬線程&#xff08;Virtual Threads&#xff09;作為Java 19引入的預覽特性&#xff0c;為我們在高并發微服務場景下提供了一種更輕量、易用的并發模型。本文結合真實生產環境&#xff0c;講述在Spring Boot微服務中引入和使用虛…

《拆解WebRTC:NAT穿透的探測邏輯與中繼方案》

WebRTC以其無需插件的便捷性&#xff0c;成為連接全球用戶的隱形橋梁。但很少有人知曉&#xff0c;每一次流暢的視頻對話背后&#xff0c;都藏著一場與網絡邊界的無聲博弈——NAT&#xff0c;這個為緩解IPv4地址枯竭而生的技術&#xff0c;既是網絡安全的屏障&#xff0c;也是端…

前端開發 React 組件優化

1. 使用 React.memo 進行組件優化問題&#xff1a;當父組件重新渲染時&#xff0c;子組件也會重新渲染&#xff0c;即使它的 props 沒有變化。解決方案&#xff1a;使用 React.memo 包裹子組件&#xff0c;讓其只在 props 變化時才重新渲染。示例場景&#xff1a;展示一個顯示計…

變頻器實習DAY12

目錄變頻器實習DAY12一、繼續&#xff0c;柔性平臺測試&#xff01;上午 王工Modbus新功能測試下午 柔性平臺繼續按照說明書再測一遍附加的小知識點中國貍花貓.git文件附學習參考網址歡迎大家有問題評論交流 (* ^ ω ^)變頻器實習DAY12 一、繼續&#xff0c;柔性平臺測試&…

Redis--多路復用

&#x1f9e9; 一、什么是“客戶端連接”&#xff1f;所謂 客戶端連接 Redis&#xff0c;指的是&#xff1a;一個程序&#xff08;客戶端&#xff09;通過網絡連接到 Redis 服務端&#xff08;比如 127.0.0.1:6379&#xff09;&#xff0c;建立一個 TCP 連接&#xff0c;雙方可…

數組——初識數據結構

一維數組數組的創建數組是一種相同類型元素的集合數組的創建方式C99 中引入了變長數組的概念&#xff0c;變長數組支持數組的大小使用變量來指定明顯這里的vs2019不支持變長數組數組初始化和不完全初始化第二個數組就是典型的不完全初始化&#xff0c;開辟了10個空間&#xff0…

技術速遞|使用 Semantic Kernel 與 A2A 協議構建多智能體解決方案

作者&#xff1a;盧建暉 - 微軟高級云技術布道師 翻譯/排版&#xff1a;Alan Wang 在快速發展的 AI 應用開發領域&#xff0c;能夠協調多個智能體已成為構建復雜企業級解決方案的關鍵。雖然單個 AI 智能體擅長特定任務&#xff0c;但復雜的業務場景往往需要跨平臺、跨框架甚至跨…

前端跨域請求原理及實踐

在前端開發中&#xff0c;"跨域"是一個繞不開的話題。當我們的頁面嘗試從一個域名請求另一個域名的資源時&#xff0c;瀏覽器往往會拋出類似Access to fetch at xxx from origin xxx has been blocked by CORS policy的錯誤。下面將深入探討跨域請求的底層原理&#…