图解IP数据报格式

article/2025/9/16 0:03:15

IP数据报格式详解

在这里插入图片描述




IP数据报的首部格式及其内容是实现IP协议的主要功能的基础,因此我们有必要搞清楚这部分的内容。


一个IP数据报由20字节的固定部分最大40字节的可变部分组成。

固定部分:指每个IP数据报首部都必须包含的部分。

可变部分:范围(0-40字节),增加IP数据报的功能,

IP数据报的首部常常以32bit(4字节)为单位进行描述。

版本字段:占4位。表示IP协议的版本。通信双方使用的IP协议的版本必须一致,目前广泛使用的IP协议版本号为4(即IPv4)。


首部长度字段:占4位。表示IP数据报首部的长度。该字段的取值以4字节为单位。范围(5-10)。

■ 最小十进制取值为5,表示IP数据报首部只有20字节固定部分。

■ 最大十进制取值为10,表示IP数据报首部包含20字节固定部分和最大40字节的可变部分。

可选字段:长度从1-40字节不等。用来支持排错、测量以及安全措施。

可选字段增加了IP数据报的功能,但这同时也使IP数据报的首部长度变成可变的。这就增加了每个路由器处理IP数据报的开销。实际很少使用。

填充字段:确保首部长度为4字节的整数倍,使用全0来填充。首部长度=4的倍数=固定部分[20]+可变字段[1,40]。当可变部分不等于4的整数倍时,就用0来填充以达到4的整数倍。

总长度:占16位。IP数据报的总长度(首部+数据载荷)。以字节为单位。最大取值为65535(2^16)。


区分服务:占8位。用来获得更好的服务。利用该字段的不同数值可提供不同等级的服务质量。只有在使用区分服务时,该字段才起作用。一般不使用。

【举例】
在这里插入图片描述假设首部二进制(4字节为单位)=0101
首部长度=0101*4=20字节
假设总长度=0000001111111100=1020字节
数据载荷长度=总长度-首部长度=1020-20=1000字节


标识,标志,片偏移共同用于IP数据报分片。

在这里插入图片描述

标识:占16个位。属于同一个数据报的个分片数据报属于具有相同的标识。

标志:占3位,个比特含义如下:

DF位:1表示不允许分片;0表示允许分片。

MF位:1表示“后面还有分片”,0表示“这是最后一个分片”

保留位:必须为0;

片偏移:占13位,以8字节为单位。指分片数据报的数据载荷部分偏移其首地址数据报位置有多少个单位(8字节为1个单位);

【举例】对IPv4数据报进行分片

在这里插入图片描述


分片后的表格:

总长度标识MFDF片偏移
原始数据报3800+2012345000
分片1数据报1400+2012345100/8
分片2数据报1400+2012345101400/8
分片3数据报1400+2012345002800/8

现在假定分片2的IP数据报经过某个网络时还需要再进行分片。其中一个分片成800个字节,另一个分片为600个字节。分片结束后给每个分片添加首部使之成为IP数据报。

总长度标识MFDF片偏移
原始数据报3800+2012345000
分片2的分片1数据报800+2012345101400/8
分片2的分片2数据报600+2012345102200/8

生存时间TTL:占8位。最初以秒为单位,最大生存周期为255秒。现在以“跳数”为单位,路由器转发IP数据报的时候,将IP数据报首部中的该字段的值减1,若不为0就转发,否则就丢弃。

【举例】生成时间TTL字段的作用——防止IP数据报在网络中永久兜圈。
在这里插入图片描述
为了简单只给出了每个路由表中由人工配置的静态路由条目。假设在人工配置静态路由条目时错将R3配成了R1这会导致去往网络N2的IP数据报错误地转发给路由器R1。

  1. 假设某个IP数据报从网络N1发往网络N2,该IP数据报到达R1后,进行查表转发。
  2. 发现匹配的路由条目,下一跳指示转发给R2,于是R1将数据报转发给R2。
  3. 发现了匹配的路由条目,下一跳指示转发给R1。于是R2将数据报转发给R1。
  4. 很显然,形成了路由环路(套娃)。若无TTL字段,IP数据报将在路由环路中永久兜圈。

协议字段:占8位。指明IPv4数据报的数据部分是何种协议数据单元。

常用的一些协议和相应的协议字段值如下。

协议名称ICMPIGMPTCPUDPIPv6OSPF
协议字段值126174189

【举例】
在这里插入图片描述


首部校验和:占16位。用来检测首部在传输的过程中是否出现差错,比如CRC检验码简单,称为因特网检验和。

源IP地址和目的IP地址:各占32比特。用来填写发送该IP数据报的源主机的IP地址和接收该IP数据报的目的主机的IP地址。


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

相关文章

计算机网络---IP数据报

(一)IP数据报格式 TCP/IP协议栈 IP数据报格式: 版本:IP协议的版本号 IPv4/IPv6 首部长度:单位是4B,最小为5,以4字节为单位 固定部分20B 区分服务:指示期望获得哪种类型的…

【IP协议(一)】——IP数据报格式及其含义,IP数据报的切分

💂 个人主页:努力学习的少年🤟 版权: 本文由【努力学习的少年】原创、在CSDN首发、需要转载请联系博主💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 🚀 IP数据报格式 版本:占4位,指…

IP数据报的首部

IP数据报的首部 注:IP数据报的格式,能够说明IP协议都具有什么功能。 1. IP数据报首部——固定部分 1.1 版本 占4位,指IP协议的版本。通信双方使用的IP协议的版本必须一致。IP协议版本号为4(即IPv4),IP协议版本号为6(即IPv6)…

计算机网络——IP数据报分析

目录 🛴一、IP数据报简介 🛹二、Wireshark抓包分析 🛴一、IP数据报简介 版本:占4比特,表示IP协议的版本。通信双发使用的IP版本必须一致 首部长度:占4比特,表示IP数据报首部的长度。该字段的取…

IP数据报格式详解

IP协议提供不可靠无连接的数据报传输服务,IP层提供的服务是通过IP层对数据报的封装与拆封来实现的。IP数据报的格式分为报头区和数据区两大部分,其中报头区是为了正确传输高层数据而加的各种控制信息,数据区包括高层协议需要传输的数据。 IP…

网络层——IP数据报详解

IP数据报格式 各个字段的分析: 版本 4位    指IP协议的版本,通信双方使用的IP协议版本必须保持一致。主要用两个版本IPV4、IPV6首部长度 4位   4位表示的最大十进制数是15。注意,首部长度字段所表示数的单位是32位(也就是4个…

IP数据报

文章目录 前言一、IP数据报的格式1.IP数据报2.数据报中各个字段的意义 二、ICMP(Internet控制报文协议)1.报文格式2.常见应用 三、ARP协议四、路由表 前言 在前面的学习中我们学习了数据的封装和解封装,了解了封装是从发送端由上向下一层一层…

IPv4数据报的首部格式

版本:占4比特,表示IP协议的版本,通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4 首部长度占4比特,表示IP数据报首部的长度。该字段的取值以4字节为单位。最小十进制取值为5,表示IP数据报首部只有…

EXE4J 错误提醒 Pleasedefine EXE4J_JAVA_HOME to point to an installes 64-bit JDK or JRE

EXE4J 错误提醒 Please define EXE4J_JAVA_HOME to point to an installed 64-bit JDK or JRE 首先查看上一步的提醒,这里显示支持的版本为最小1.8到最大11,而我环境变量配置为13,版本过高 解决办法 1、添加符合版本的jdk 2、升级exe4j …

首次使用exe4j遇见的问题

exe4j安装注册: https://www.cnblogs.com/jepson6669/p/9211208.html 问题一、安装exe4j 问题和解决方法描述: 大概是这个意思,安装这个exe4j需要jvm,你的电脑上要有jdk和jre,并且这个jdk版本必须是1.8~11之间的64…

exe4j下载和使用(超详细)

1、下载exe4j 链接: 点击下载 提取码: b3cy 1.1、安装步骤就不说了,按照提示一步一步进行即可 2、这里使用的jar包是maven项目打包出来的jar PS:注意 这里针对的是maven项目打包成的jar,如果是普通Java项目打包成的jar 请参考别的文章2.1…

exe4j 打包 jar 文件为 exe 文件(GUI程序)

exe4j 打包 jar 文件为 exe 文件(GUI程序) 1、资源分享2、把项目打包成 exe 文件2.1 把项目打包成 jar 包(用 fatjar 打包项目)(1) 把 net.sf.fjep.fatjar_0.0.32.jar 包放入 eclipse\plugins 目录下(2) 完成第一步后,…

exe4j打成的exe文件运行时弹窗this executable was created with an evaluation version of exe4j问题解决

其实这是因为没有激活造成的,激活码网上很多,这里给一个L-g782dn2d-1f1yqxx1rv1sqd 点击welcome页的右下角的License, Name和Company随便输,然后输入激活码确认就可以了

exe4j下载安装

exe4j下载安装 exe4j下载exe4j安装exe4j激活exe4j使用 exe4j下载 exe4j下载地址 1.点击exe4j下载地址 2.点击Setup Executable (55 MB) ZIP Archive (75 MB) 进行下载 exe4j安装 1.双击 exe4j_windows-x64_7_0.exe开始安装 2.点击运行按钮 3.点击Next按钮 4.选择 I ac…

exe4j打包问题解决方案

在我们想要打包java文件时候,由于编译版本与运行环境的问题困扰我们许久:java.lang.UnsupportedClassVersionError: Os/Os 已由 Java 运行时的更新版本(类文件版本 56.0)编译,此版本的 Java 运行时仅识别最高 52.0 的类…

exe4j中,报错:This executable was created with an evaluation version of exe4j

运行exe4j工具打包好的.exe文件,报错:This executable was created with an evaluation version of exe4j 由于是新下载安装的exe4j工具,没有进行注册!所以导致报这个错! 在使用exe4j时,如果exe4j没有注册…

SpringBoot 2.x 使用 exe4j 打包成 exe 可执行文件(附带启动传参)

1.下载安装exe4j 官网地址: exe4j Download 2.注册exe4j 启动exe4j后 点击右下角 Change License 填写用户名公司与注册码 ​​​​​​​ 注册码列表自行百度 3.准备打包文件 创建一个文件夹 文件夹内包含 整个jdk 项目jar包 ico图标 4.运行exe4j开始打包 步骤一 …

exe4j完成Java转exe 自带jre

当用户电脑上没有安装Java环境时,我(们)交付程序时,还需要提交一份jre exe4j支持选择自带的jre;但是好像不支持选择精简的jre,会导致生成的exe不能正常运行 知道怎样用精简jre转exe的朋友请留言…orz,我之前提到了怎…

exe4j打包工具使用

前言:用于将eclipse中的项目打包成.exe形式。 eclipse中的项目打包成jar形式:eclipse项目右键–>Export–>java–>Runnable JAR file–>Next→Export destination(选择jar包导出路径),Library handing(选择第三项 Copy…&#xf…

利用 exe4j 将 JAR 包制成免安装 JDK 的 EXE 文件

利用 exe4j 将 JAR 包制成免安装 JDK 的 EXE 文件 exe4j 的工作原理EXE 制作教程 将 JAR 包制成能在 Windows 上直接运行的 EXE 文件,是很多 Java 爱好者喜欢做的事情。虽然这不是对 JAR 包的商业用法,不过很多人都希望能学以致用,而不仅仅是…