計算機網絡學習(七)——IP

一、IP

在計算機網絡中,IP(Internet Protocol,網際協議)網絡層的核心協議,用于實現跨越不同網絡的數據包傳輸。IP 是 TCP/IP 協議族的核心部分,屬于網絡層協議,也是 Internet 賴以運作的基礎協議之一。

IP 協議負責:

  • 為設備分配唯一的IP地址
  • 封裝、傳輸和路由數據包;
  • 多個子網和網絡之間轉發數據,實現“盡力而為”的交付;
  • 提供無連接、不可靠的數據包傳輸服務。

IP 不保證數據可靠送達,它只負責把數據“盡力送到目標地址”。

核心特點:

特點說明
無連接不建立連接,直接發送數據包
不可靠不保證數據包送達、不重傳
盡力而為交付有可能丟包、重復或亂序
分包和重組超過 MTU 的數據會被分片
路由尋址支持通過路由器跨網絡轉發數據包

二、IP 協議的主要版本

協議版本簡稱說明
IPv4Internet Protocol version 4當前主流協議,32位地址
IPv6Internet Protocol version 6新一代協議,128位地址,解決 IPv4 地址耗盡問題

三、IP數據報文結構

參考書——計算機網絡 (第8版)- 謝希仁。

1. IPv4報文結構

IPv4 報文頭至少 20 字節,結構如下:
在這里插入圖片描述

  • 版本:占4位, 指協議IP的版本,對IPv4該字段是4。
  • 首部長度:占4位, 可表示的最大十進制數值是15。請注意,首部長度字段所表示數的單位是32位字長( 1個32位字長是4字節) 。
  • 區分服務:占8位, 用來獲得更好的服務。
  • 總長度:總長度指首部和數據之和的長度, 單位為字節。總長度字段為16位, 因此數據報的最大長度為 2 16 2^{16} 216 - 1 = 65535字節。
  • 標識(identifi cation) :占16位。IP 軟件在存儲器中維持一個計數器, 每產生一個數據報,計數器就加1 , 并將此值賦給標識字段。
  • 標志(flag): 占3位。
  • 片偏移:占13位。片偏移指出:較長的分組在分片后, 某片在原分組中的相對位置。
  • 生存時間:占8位, 生存時間字段常用的英文縮寫是TTL (Time To Live), 表明這是數據報在網絡中的壽命。
  • 協議:占8位, 協議字段指出此數據報攜帶的數據使用何種協議, 以便使目的主機的IP層知道應將數據部分上交給哪個協議進行處理。
  • 首部檢驗和:占16位。這個字段只檢驗數據報的首部, 但不包括數據部分。
  • 源地址:占32位。發送IP數據報的主機的IP地址。
  • 目的地址:占32位。接收IP數據報的主機的IP地址。

2. IPv6報文結構

IPv6 報文頭至少 40 字節,結構如下:
在這里插入圖片描述

  • 版本(version) :占4位。它指明了協議的版本, 對 IPv6 該字段是6。
  • 通信量類(traffic class) :占8 位。這是為了區分不同的 IPv6 數據報的類別或優先級, 和IPv4 的區分服務字段的作用相似。目前正在進行不同的通信量類性能的實驗。
  • 流標號(flow label) :占20位。IPv6 的一個新的機制是支持資源預分配, 并且允許路由器把每一個數據報與一個給定的資源分配相聯系。
  • 有效載荷長度(payload length) :占16位。它指明 IPv6 數據報除基本首部以外的字節數( 所有擴展首部都算在有效載荷之內) 。這個字段的最大值是64 KB (65535 字節)。
  • 下一個首部(next header) :占8位。它相當千 IPv4 的協議字段或可選字段。
  • 跳數限制( hop limit ) :占8位。用來防止數據報在網絡中無限期地存在。
  • 源地址:占128 位。是數據報的發送端的 IP 地址。
  • 目的地址:占128位。是數據報的接收端的 IP 地址。

四、IP 地址與子網

1. IP 地址分類(IPv4)

類別范圍用途
A1.0.0.0 - 126.0.0.0大型網絡
B128.0.0.0 - 191.255.0.0中型網絡
C192.0.0.0 - 223.255.255.0小型網絡
D224.0.0.0 - 239.255.255.255多播
E240.0.0.0 - 255.255.255.255實驗用途

IP地址分類圖示:
在這里插入圖片描述

2. 子網掩碼

子網掩碼(Subnet Mask) 是用于劃分網絡地址與主機地址的關鍵機制。
通過子網掩碼,我們可以判斷兩個 IP 地址是否屬于同一個子網,并支持將一個 IP 網絡進一步劃分成多個子網,優化地址使用與網絡管理。

工作原理(與運算):
子網掩碼通過與 IP 地址進行按位與(AND)運算來提取網絡地址:

IP:      192.168.1.10   → 11000000.10101000.00000001.00001010  
掩碼:    255.255.255.0  → 11111111.11111111.11111111.00000000  
網絡地址:             → 11000000.10101000.00000001.00000000 → 192.168.1.0

五、IP 的關鍵機制

1. 分片與重組

分片(Fragmentation)與重組(Reassembly)是 IP 協議在傳輸大型數據包時為適應不同網絡鏈路的最大傳輸單元(MTU)所采用的重要機制,主要在 IPv4 中使用。

  • 當 IP 數據包超過鏈路的最大傳輸單元(MTU)時,會被分片傳輸
  • 接收端將分片重組成原始數據;
  • 重組只在目的主機完成,中間路由器不重組

分片示例:
參考書——計算機網絡 (第8版)- 謝希仁。
在這里插入圖片描述

2. TTL(Time To Live)

  • 限制數據包在網絡中的“壽命”;
  • 每經過一個路由器,TTL 減 1;
  • TTL 為 0 時,數據包被丟棄,防止路由環路。

3. 路由與轉發

  • IP 依靠路由器將數據包從源主機傳送到目的主機;
  • 每個路由器根據目標IP地址和路由表決定下一跳

六、IPv4 vs IPv6

項目IPv4IPv6
地址長度32 位(4字節)128 位(16字節)
地址表示十進制,如 192.168.1.1十六進制,如 2001:0db8::1
地址數量約 43 億個2^128,幾乎無限
報文結構復雜,支持分片等簡化,無中間分片,效率更高
NAT 支持支持,常用于節省地址不再需要 NAT,端到端通信
安全性無內建安全,需借助IPSec內建支持 IPSec 安全機制

七、IP 與其他協議的關系

IP 協議本身不提供可靠性,它通過與其他協議配合完成通信:

層級協議作用
傳輸層TCP、UDP提供端到端通信(可靠或快速)
網絡層IP(本層)實現網絡間通信與尋址
鏈路層Ethernet、Wi-Fi 等實現局域網中的物理傳輸
輔助協議ICMP、ARP、DHCP支持控制、地址解析、配置等

八、典型應用

  • IP 是 Web、FTP、SSH、郵件等所有互聯網服務的基礎
  • 所有設備(服務器、路由器、PC、手機)都必須擁有 IP 地址;
  • IP 協議配合路由器和子網規劃,實現全球互聯網互通。

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

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

相關文章

【技術追蹤】ADDP:通過交替去噪擴散過程學習用于圖像識別和生成的通用表示(ICLR-2024)

擴散模型交替去噪:助力圖像識別與圖像生成~ 論文:ADDP: Learning General Representations for Image Recognition and Generation with Alternating Denoising Diffusion Process 代碼:https://github.com/ChangyaoTian/ADDP 0、摘要 圖像識…

在Linux上安裝Miniconda

在Linux上安裝Anaconda或Miniconda(輕量級版本) 選擇安裝版本 Anaconda: 包含200預裝包(如NumPy、Pandas、TensorFlow等),適合新手或需要完整科學計算環境的用戶。 安裝包較大(約500MB&#xff…

SRS流媒體服務器之RTC播放環境搭建

環境概述 srs版本 commit 44f0c36b61bc7c3a1d51cb60be0ec184c840f09d Author: winlin <winlinvip.126.com> Date: Wed Aug 2 10:34:41 2023 0800Release v4.0-r5, 4.0 release5, v4.0.271, 145574 lines. rtc.conf # WebRTC streaming config for SRS. # see full.…

清山垃圾的3個問題

與一群驢友進山&#xff0c;同步撿拾一路的垃圾&#xff1a;清山行動。 關于垃圾&#xff0c;大家提了3個問題。記錄于此&#xff0c;勤于思考&#xff1a;為什么&#xff0c;如何做 問題 - 山里的垃圾有哪些&#xff1f; - 垃圾是誰丟的&#xff1f; - 他們為…

redis集合類型

練習命令使用&#xff0c;具體如下&#xff1a; 練習無序集合類型命令 sadd smembers scard srem sinter sunion sdiff sismember srandmember spop 練習有序集合類型命令 無序集合中的每個元素都是不同的&#xff0c;且沒有順序 創建/追加/刪除/查看 127.0.0.1:6379>…

JAVA 包管理

一 、關鍵點 包聲明規則&#xff1a; 每個類首行的package聲明必須與文件路徑完全匹配com.example.math對應路徑com/example/mathorg.demo.greeting對應路徑org/demo/greeting 編譯參數&#xff1a; -d ./build&#xff1a;指定編譯輸出目錄編譯器會自動根據包聲明創建對應…

Linux中的文件系統和軟硬連接

磁盤的訪問方式 CHS&#xff08;柱面&#xff0c;磁頭&#xff0c;扇區&#xff09; 法&#xff08;磁盤硬件查找&#xff09;&#xff1a; 確定柱面&#xff08;C&#xff09; 磁頭臂移動到對應的柱面位置。例如&#xff0c;柱面號為 5&#xff0c;則磁頭移動到第 5 個磁道組…

whisper相關的開源項目 (asr)

基于 Whisper&#xff08;OpenAI 的開源語音識別模型&#xff09;的開源項目有很多&#xff0c;涵蓋了不同應用場景和優化方向。以下是一些值得關注的項目&#xff1a; 1. 核心工具 & 增強版 Whisper OpenAI Whisper 由 OpenAI 開源的通用語音識別模型&#xff0c;支持多語…

深入解析Spring Boot與JUnit 5集成測試的最佳實踐

深入解析Spring Boot與JUnit 5集成測試的最佳實踐 引言 在現代軟件開發中&#xff0c;單元測試和集成測試是確保代碼質量的重要手段。Spring Boot作為當前最流行的Java Web框架之一&#xff0c;提供了豐富的測試支持。而JUnit 5作為最新的JUnit版本&#xff0c;引入了許多新特…

gitlab占用內存 優化

優化 GitLab 配置 GitLab 的配置文件可以對內存使用進行優化。 以下是一些優化配置的方法&#xff1a; 1.1 調整 Unicorn&#xff08;或 Puma&#xff09;配置 GitLab 使用 Unicorn&#xff08;舊版&#xff09;或 Puma&#xff08;新版本&#xff09;作為其 Web 服務器。可以…

視覺語言模型(Vision-Language Model, VLM)的簡單介紹

目錄 1. 起源與歷史 2. 核心技術與原理 3. 優勢 4. 應用領域 5. 技術難點與挑戰 6. 學習方法與路徑 7. 未來發展方向 8. 總結 1. 起源與歷史 起源&#xff1a; 視覺語言模型&#xff08;VLM&#xff09;的起源可以追溯到多模態機器學習的研究。早期的計算機視覺&#…

關于PHP的詳細介紹,結合其核心特點、應用場景及2025年的技術發展趨勢,以清晰的結構呈現:

一、PHP的核心特點 動態腳本語言 語法靈活&#xff1a;支持過程式與面向對象編程&#xff0c;類似C/Java的語法結構&#xff0c;但動態類型特性更接近Python。即時編譯&#xff1a;PHP 8.x的JIT&#xff08;Just-In-Time&#xff09;編譯器顯著提升性能&#xff0c;尤其在數學…

MCP、MCPHub、A2A、AG-UI概述

MCP Model Context Protocol&#xff0c;模型上下文協議&#xff0c;Anthropic于2024年開源的標準協議&#xff0c;旨在統一AI模型與數據源的交互方式&#xff0c;提升數據訪問的便捷性和可靠性&#xff0c;提供標準化的工具調用、資源管理和提示詞功能。 MCP的基本定義&…

[學習]淺談C++異常處理(代碼示例)

淺談C異常處理 文章目錄 淺談C異常處理一、異常處理基礎1.異常的概念與作用2.C異常處理機制&#xff08;try、catch、throw&#xff09;3.基本語法示例 二、標準異常類1.常見標準異常類&#xff1a;2.自定義異常類的實現 三、異常安全與最佳實踐1. RAII&#xff08;資源獲取即初…

PHP學習筆記(十)

extends 一個類可以在聲明中用extends關鍵字繼承另一個類的方法和屬性。PHP不支持多重繼承&#xff0c;一個類只能繼承一個基類。 被繼承的方法和屬性可以通過同樣的名字重新聲明被覆蓋&#xff0c;但是如果父類定義或者常量時是使用類final&#xff0c;則不可被覆蓋&#xff…

rt-linux里的泛rtmutex鎖的調用鏈整體分析

一、背景 linux系統里有非常多的鎖種類&#xff0c;除了spinlock&#xff0c;mutex&#xff0c;rwlock&#xff0c;rwsem&#xff0c;還有rcu及順序鎖&#xff0c;這里面還有不少鎖變種&#xff0c;比如spinlock的帶bh或者irq字樣的lock/unlock&#xff0c;還有nmi里可以用的順…

LLM多平臺統一調用系統-LiteLLM概述

概述 在當今快速發展的AI領域&#xff0c;大語言模型(LLM)已成為技術創新的核心驅動力。然而&#xff0c;隨著市場上涌現出越來越多的LLM提供商&#xff08;如OpenAI、Anthropic、Google Gemini、AWS Bedrock等&#xff09;&#xff0c;開發者面臨著一個日益復雜的問題&#x…

C#實現MCP Client 與 LLM 連接,抓取網頁內容功能!

該專欄優先在飛書發布&#xff0c;歡迎收藏關注&#xff01; https://www.feishu.cn/community/article?id7507084665509904403 前面的課程&#xff0c;我們已經用C#實現了&#xff0c;自己的MCP Client。 下面我們一起來實現&#xff0c;MCP Client與LLM 對接。 一、添加依…

并發編程(6)

指令重排序 指令重排序是指在程序執行過程中&#xff0c;為了提高性能&#xff0c;編譯器或處理器會對指令的執行順序進行重新排列。 指令重排序導致可見性消失 在多線程環境下&#xff0c;每個線程都有自己的工作內存&#xff0c;線程對變量的操作是在工作內存中進行的&…

鴻蒙倉頡開發語言實戰教程:頁面跳轉和傳參

前兩天分別實現了商城應用的首頁和商品詳情頁面&#xff0c;今天要分享新的內容&#xff0c;就是這兩個頁面之間的相互跳轉和傳遞參數。 首先我們需要兩個頁面。如果你的項目中還沒有第二個頁面&#xff0c;可以右鍵cangjie文件夾新建倉頡文件&#xff1a; 新建的文件里面沒什…