IP 报文格式详解(IPv4、IPv6)

article/2025/10/3 19:25:09

文章目录

  • 1 概述
  • 2 IP 报文格式
    • 2.1 IPv4
    • 2.2 IPv6
    • 2.3 两者区别
  • 3 网工软考真题

1 概述

IP 报文
IPv4:一直使用的协议
IPv6:新一代的协议。比 IPv4 更简洁、更高效

2 IP 报文格式

2.1 IPv4

在这里插入图片描述

中文名英文名长度 bit(位)解释
版本Version4IP 协议版本号,固定为 4
首部长度Internet Header Length, IHL44 字节 为单位,最小值 5(20Byte),最大值 15(60Byte)
服务类型Type of Service, TOS8几乎不用
总长度Total Length16整个数据报的长度, 2 16 − 1 = 65535 2^{16} -1 = 65535 2161=65535 字节,不过由于链路层的MTU限制
超过 1480 字节后就会被分片(以太帧MTU最大为 1500 - 固定首部 20)
标识Identification16报文的唯一标识
标志Flag3是否分片的标志。DF:Don’t Fragment;MF:More Fragment
DF=1:不能分片,DF=0:允许分片
MF=1:后面还有分片,MF=0:最后一个
片偏移Fragment Offset13分片在原分组中的相对位置,以 8个字节 为偏移单位
生存时间Time To Live,TTL8数据报可以经过的最多路由器数,每经一个,值减1,为0时丢弃该报文
协议Protocol8封装的协议类型
ICMP(1)、IGMP(2)、TCP(6)、UDP(17)
头部校验和Header CheckSum16仅校验数据报的首部,使用二进制反码求和
源地址Source Address32源 IP 地址
目的地址Destination Address32目标 IP 地址
可选项Options可变主要用于测试
填充Padding填充 0,确保首部长度为 4 字节的整数倍
数据Data报文数据部分

2.2 IPv6

在这里插入图片描述

中文名英文名长度 bit(位)解释
版本Version4IP 协议版本号,固定为 6
通信类型Traffic Class8类似于 IPv4 中的 服务类型(TOS)
流标签Flow Label20识别某些需要特别处理的分组
载荷长度Payload Length16类似于 IPv4 中的 总长度(Total Length),区别在于不含基本首部
下一头部Next Header8类似于 IPv4 中的 协议(Protocol)
跳数限制Hop Limit8类似于 IPv4 中的 生存时间(TTL)
源地址Source Address128源 IPv6 地址
目的地址Destination Address128目的 IPv6 地址
扩展首部Extension Header可变可选择继续使用 IPv4 中首部部分,详见下表
数据Data报文数据部分
先后顺序扩展首部说明
1逐跳选项针对路由器中的各种信息
2目标选项针对目标端的各种附加信息
3路由要访问的路由器列表
4分段数据报分段的管理
5认证验证发送方身份
6加密的安全负荷信息加密

2.3 两者区别

在这里插入图片描述

3 网工软考真题

【2022上半年 - 20】一个 IP 报文经过路由器处理后,若 TTL 字段值变为 0,则路由器会进行的操作是()
A.向IP报文的源地址发送一个出错信息,并继续转发该报文
B.向IP报文的源地址发送一个出错信息,并丢弃该报文
C.继续转发报文,在报文中做出标记
D.直接丢弃该IP报文,既不转发,也不发送错误信息

参考答案:B

【2022上半年 - 21】当 IP 报文从一个网络转发到另一个网络时,()
A.IP 地址 和 MAC 地址均发生改变
B.IP 地址改变,但 MAC 地址不变
C.MAC 地址改变,但 IP 地址不变
D.MAC 地址、IP 地址都不变

参考答案:C
IP报文从一个网络转发到另一个网络时,IP地址是不变的,而在链路层是一段链路一段链路转发的,MAC地址会改变

【2022上半年 - 32】以下关于 IPv6 与 Pv4 报文头区别比较的说法中,错误的是()
A.IPv4 的头部是变长的,IPv6 的头部是定长的
B.IPv6 与 IPv4 中均有"校验和"字段
C.IPv6 中的 HOP Limit 字段作用类似于 IPv4 中的 TTL 字段
D.IPv6 中的 Traffic Class 字段作用类似于 IPv4 中的 Tos 字段

参考答案:B

【2019下半年 - 23,24】IP数据报的分段和重装配要用到报文头部的报文ID、数据长度、段偏置值和M标志等四个字段,其中(23)的作用是指示每一分段在原报文中的位置:若某个段是原报个分段,其(24)值为“0”。
(23)A.段偏置值
   B.M标志
   C.报文ID
   D.数据长度
(24)A.段偏置值
   B.M标志
   C.报文ID
   D.数据长度

参考答案:23=A,24=B
片偏移:占13位。较长的分组在分片后,某片在原分组中的相对位置。相对于用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,每个分片的长度一定8字节的整数倍。
标志字段中的最低位记为mf。mf=1表示后面“还有分片”的数据报。mf=0表示这已是若干数据报片中的最后一个。

【2018下半年 - 65】IP数据报首部中IHL (Internet首部长度)字段的最小值为( )。
A.5
B.20
C.32
D.128

参考答案:A
最小值 5,最大值 15


http://chatgpt.dhexx.cn/article/bINuRT4C.shtml

相关文章

IP数据报格式

1、报文格式 前几篇总结过较多网络层的知识,ARP,ip地址、子网掩码等等。这次总结一下IP数据报的报文格式 IP数据报的格式能够说明IP协议都具有什么功能。在TCP/IP的标准中,各种数据格式常常以32位(4字节)为单位来描述…

IP报文格式详解

转载:https://www.cnblogs.com/zhangbing12304/p/11016921.html 下图为常见的IP报文格式表: 上面是IP的报文格式,接下来我们先说明各个字段的意义。然后,用Etheral软件转包分析IP的报文格式。 1.版本:ip报文中&#…

matlab fsolve 与fzero,fsolve / fzero:找不到解决方案,看似常规

您的系统设置方式,绘制它并观察其行为实际上很方便 . 我向你的函数进行了矢量化并绘制了 f(x) = MLNEfun(x)-x ,其中 MLNE(x) 的输出是 newA . 实际上,您对系统的固定点感兴趣 . 我观察到的是: 在A~3800处有一个奇点和一个根交叉 . 我们可以使用 fzero ,因为它是一个括号中…

matlab fsolve实例,转 Matlab非线性方程求解器fsolve总结(含实例)

this.p{ m:2, b:2, loftPermalink:, id:fks_080067080082080074080086083095085085082071082086082074092, blogTitle:转 Matlab非线性方程求解器fsolve总结(含实例), blogAbstract: fsolve是采用最小二乘法来求解非线性方程。它的一般求解方式为: XFSOLVE(FUN,X0,O…

MATLAB-fsolve函数帮助文档翻译与补充

fsolve 解非线性方程组 非线性系统解算器 解决指定的问题 F(x) 0对于x, F(x)是一个返回向量值的函数。 x是一个向量或者一个矩阵;看矩阵参数。 语法: x fsolve(fun,x0) x fsolve(fun,x0,options) x fsolve(problem) [x,fval] fsolve(___) [x,fval,exitfla…

[Matlab] fsolve函数隐藏输出

fsolve函数用于求解方程的解,第一参数是要求解的方程,方程形式是f(x)0,第二个参数是从哪个点开始迭代搜索。 比如: fsolve会输出两部分内容,第一部分是迭代的结果(是否找到根),第二部分是求解结果(如果没找…

matlab之fsolve方法求解复杂非线性方程常见问题(入门)

问题描述: 二十六道二次方程,共二十个未知数。 考虑了matlab中可用的各类算法,最后采用fsolve函数解该复杂非线性方程。 参考:非线性方程(组):MATLAB内置函数 solve, vpasolve, fsolve, fzero, roots [MATLAB] - Ge…

matlab fsolve()函数的使用

fsolve()函数通常用于数值求方程或方程组的解,更常用于求解非线性方程组。其基本结构如下:(可以在matlab命令页面输入help fsolve查询) fsolve()解决的方程形式为F(X)0; 用法为: X fsolve(FUN,X0,OPTIONS) 或者写为 […

仿射变换和透视变换详解

仿射变换和透视变换都是计算机视觉中重要的图像变换操作,然而也困扰了我很久,通过找寻很多资料总算大致弄明白了这两个变换。 仿射变换 旋转和平移都是仿射变换的特殊形式。 wiki详细解释: https://en.wikipedia.org/wiki/Affine_transformat…

Opencv_10 图像的透视变换

文章目录 一. 透视变换的原理二. 透视变换实现① 函数原型② 透视变换实现 三. 透视变换的案例 一. 透视变换的原理 透视变换(Perspective Transformation)是将图片投影到一个新的视平面(Viewing Plance),也称为投影映射(Projective Mapping).通用的变换公式为: 透视变换矩阵 …

【OpenCV】透视变换 仿射变换

目录 一:透视变换基本概念 二:透视变换工作原理 三:findHomography函数 四:warpPerspective函数 五:getPerspectiveTransform函数 一:透视变换基本概念 仿射变换(affine transform)与透视变换(perspec…

逆透视变换详解 及 代码实现(二)

根据 逆透视变换详解 及 代码实现(一)的原理 下面我用车上拍摄的车道图像,采用逆透视变换得到的图像,给出代码前我们先看下处理结果。 首先是原始图像: 下图为逆透视变换图像: 下面说具体的实现吧!! 一、…

透视变换的实现以及透视变换矩阵的构造

透视变换(Perspective Transformation)是什么,无需多说,但是一个非常惨痛的现实是如果你想知道怎么样才能在编程做,你只能得到一些调用opencv函数的文章,简直有病,谁不会调用函数,我搜索实现肯定是要找代码参考看下是怎么实现算法的,你调用函数还敢叫自己“实现”?那我…

图像处理之_仿射变换与透视变换

1. 仿射变换 1) 用途 旋转 (线性变换),平移 (向量加).缩放(线性变换),错切,反转 2) 方法 仿射变换是一种二维坐标到二维坐标之间的线性变换,它保持了二维图形的“平直性”(直线经过变换之后依然是直…

Matlab 透视变换 原理及其代码实现

一、透视变换内涵 透视变换本质:将一个图像投影到新的视平面 透视变换思路: 将二维坐标系转换为三维坐标系。 将三维坐标系投影到新的二维坐标系。 该过程属于非线性变换过程,一个菱形在经过非线性变换后得到一个四边形,但是…

art上的透视变换

透视变换 透视变换在比赛中非常重要,我们在地图识别与微调时用到了透视变换。 1. 微调上的使用 在车抵达目标板附件时,摄像头检测到目标板后,可以通过透视变换确定图片距车的位置。这里需要强调下,我们使用的透视变换与四轮使用…

透视变换(Perspective Transform)

**透视变换(Perspective Transform)**是将图片投影到一个新的视角或平面,变换公式如下。 在之前的章节中我们学习过仿射变换(affine transform) 可以看到,而射变换的变换矩阵是3x2的变换矩阵。和仿射变换不同的是,透视变换的变换矩阵是一个3…

仿射变换与透视变换区别

仿射变换 1) 用途 旋转 (线性变换),平移 (向量加).缩放(线性变换),错切,反转 2) 方法 仿射变换是一种二维坐标到二维坐标之间的线性变换,它保持了二维图形的“平直性”(直线经过变换之后依然是直线&…

用OpenCV进行透视变换

1. 引言 欢迎回来!今天我们将焦点聚焦在我在图像处理中最喜欢的话题之一——透视变换。使用该技术,可以灵活方便的实现各种各样好玩的特效。 闲话少说,我们直接开始吧! 2. 单应矩阵 我们首先展开对单应矩阵的深入研究。作为图…

透视变换矩阵详解

原文: OpenGLProjection Matrix (songho.ca) 看这篇文章主要是因为对learnopengl深度测试这一章的些许疑惑, 为什么在片段着色器中,存储的每一个fragment的深度值并不是线性分布?体现在想要显示出场景里面所有物体的深度值&#x…