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 中,继承是一种非常有用的功能,它允许我们创建一个父项目,其他子项目可以继承这个父项目的配置信息&#…