计算机网络传输中IP数据报文格式详解并结合Wireshark深入分析
zhezhongyun 2025-05-11 19:39 32 浏览
我们说因为有了IP协议(Internet Protocol,互联网协议),因特网才得以迅速发展成为世界上最大的、开放的计算机通信网络。任何厂家生产的计算机系统,只要遵守 IP协议就可以与因特网互连互通。IP协议就是为计算机网络相互连接进行通信而设计的协议,在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。本文通过分析IP协议报文的格式,能够使大家明白为何IP协议能够在复杂的网络环境中将数据包发送到最终目的主机,从而实现主机与主机之间的通信。
IP报文格式
IP数据报的格式能够说明IP协议都具有什么功能,如下图所示,一个IP数据报由首部和数据两部分组成。首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的,但对于首部的长度来说,最长是60个字节,所以可选字段最长为40个字节。
IP数据报首部的固定部分中的各字段说明如下:
(1) 版本:占4位,指IP协议的版本。不同版本的协议格式或语义可能不同,但是双方通信使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4,即IPv4,其字段值就为0100。
(2) 首部长度:占4位,可表示最大十进制数值是15。请注意,一个位对应的是4个字节。因为IP首部的固定长度是20字节,因此首部长度字段的最小值是5(即二进制表示的首部长度是0101)。而当这四个位都为1最大值为15的时候就表示此时达到了首部的最大长度,即60字节。需要注意的是当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。因此IP数据报的数据部分永远在4字节的整数倍时开始,这样在实现IP协议时较为方便,通过首部长度可以知道数据部分是什么时候开始的。
(3) 服务类型:占8位,指定特殊的报文处理方式,用来获得更好的服务。在一般的情况下不使用这个字段,只有在有QoS差分服务要求时这个字段才起作用,实现网络流量优化。
QoS(Quality of Service,服务质量)是一种控制机制,它提供了针对不同用户或者不同数据流采用相应不同的优先级,或者是根据应用程序的要求,保证数据流的性能达到一定的水准。
(4) 总长度:占16位,指首部和数据部分之和的长度,单位为字节。因此数据报的最大长度为2^16-1=65535字节。然而实际上传送这样长的数据报在现实中是极少遇到的。
由于在IP层下面的每一种数据链路层协议都规定了一个数据帧中的数据字段的最大长度,这称为最大传送单元MTU (Maximum Transfer Unit),当一个IP数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层所规定的MTU值。例如,最常用的以太网就规定其MTU值是1500字节。若所传送的IP数据报长度超过数据链路层的MTU值时,就必须把过长的数据报进行分片处理。在进行分片时,数据报首部中的“总长度”字段是指分片后的每一个分片的首部长度与该分片的数据长度的总和。
(5) 标识:占16位,通过标识来给已经分片的IP数据报进行分组,保证最后分片之后的各数据报片能正确地重装成为原来的数据报。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报片的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
(6) 标志:占3位。目前只有两位有意义,第一位一般是0;中间的一位记为DF(Don't Fragment),意思是不能分片,只有DF值为0的时候才允许分片;最后的一位记为MF(More Fragment),表示后面还有无分片,当MF=1表示后面还有分片的数据报,当MF=0表示后面已无分片,这已是若干数据报片中的最后一个。
(7) 片偏移:占13位,标识某个分片在分组中的位置。片偏移指出较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对于用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位,这就是说,每个分片的长度一定是8字节的整数倍。
数据分片举例:
一数据报的总长度为3820字节,数据部分为3800字节(IP首部为固定20字节),需要分片传输。假设每片IP报文长度不超过1420字节。去掉固定首部长度20字节,每片报文数据部分长度不超过1400。于是分成3个数据报片,其数据部分长度分别为1400、1400、1000字节。原始数据报首部被复制为各数据报片的首部,只需要改变有关字段的值。下图给出分片后得出的结果。
下图表是本例中数据报首部与分片有关的字段中的数值,其中标识字段的值是任意给定的(12345)。具有相同标识的数据报片在目的站就可无误地重装成原来的数据报。
(8) 生存时间:占8位,生存时间字段常用的英文缩写是TTL(Time To Live),表明数据报在网络中的寿命。TTL的意义是指明数据报在互联网中至多可经过多少个路由器,因此其单位不是时间而是跳数。由发出数据报的源点设置这个字段,其目的是防止无法交付的数据报无限制地在互联网中兜圈子(例如从路由器R1转发到R2,再转发到R3,然后又转发到R1),因而白白消耗网络资源。路由器在每次转发数据报之前就把TTL值减1,由于只有八个位,所以能够在网络中经过的路由器的最大数值是255,若TTL值减小到零,就丢弃这个数据报,不再转发。
(9) 协议:占8位。协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个协议进行处理。例如协议字段为6表示上交给上层TCP协议进行处理。
常见的协议号:
(10) 首部检验和:占16位。这个字段只检验数据报的首部,不包括数据部分。在数据报传输过程中IP头中的某些字段可能发生改变(如生存时间、标志、片偏移等都可能发生变化),所以检验和要在每一个经过的路由器中进行校验和重新计算。利用二进制反码求和来进行校验,以此来决定是否丢弃数据报。若首部未发生任何变化,则此结果必为0,于是就保留这个数据报。否则即认为出差错,并将此数据报丢弃。
(11) 源地址:占32位,源IP地址。标识IP数据报的源端地址。
(12) 目的地址:占32位,目的IP地址。标识IP数据报的目的地址。
IP数据报首部的可变部分
IP数据报首部的可变部分就是一个选项字段,一般很少使用。选项字段用来支持排错、测量以及安全等措施,内容很丰富。此字段的长度可变,从1个字节到40个字节不等,取决于所选择的项目。某些选项项目只需要1个字节,它只包括1个字节的选项代码。而有些选项需要多个字节,这些选项一个个拼接起来,中间不需要有分隔符,最后用全0的填充字段补齐成为4字节的整数倍。
增加首部的可变部分是为了增加IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。实际上这些选项很少被使用。很多路由器都不考虑IP首部的可选字段,因此新的IP版本IPV6就把IP数据报的首部长度做成固定的。
Wireshark分析IP数据报头
之前我们已经通过Wireshark分析了以太网帧,详见该文《以太网数据帧结构详解并结合Wireshark工具深入分析》。现在我们进一步来分析一下通信过程中IP数据报头情况。如下图,可以看到该数据报是由主机192.168.1.107发往61.149.23.83的,点击展开Internet Protocol Version 4。
结合上面IP报文格式的介绍,那么现在我们对该IP数据报头各字段情况可以看得一目了然。
1.Vesion:版本。其值为0100=4。
2.Header Length:首部长度。其值为0101=5,表示该IP首部为固定长度20 bytes。
3.Differentiated Services Field:区分服务字段。其值为0x00=0,表示没有用到差分服务。
4.Total Length:总长度。可以看到该数据报的长度为83字节。
5.Identification:标识。其值为0x7be6=31718。
6.Flags:标志。其3位值都为0。
7.Fragment Offset:片偏移。其值为0。
8.Time to live:生存时间。其值为64。
9.Protocol:协议。其值为17,表示将数据部分交由上层UDP协议进行处理。
10.Header Checksum:首部检验和。
这里显示“validation disabled”(即禁止校验),这是因为有时校验和会由网卡计算,因此Wireshark抓到的本机发送的数据包的校验和都是错误的,这样检验校验和根本没有意义,所以Wireshark不自动做校验和的校验。
11.Source Address:源地址。这里可以看到源IP地址为192.168.1.107。
12.Destination Address:目的地址。这里可以看到目的IP地址为:61.149.23.83。
以上就是网络传输中IP数据报文的相关内容并结合Wireshark工具加以分析,关于更多网络知识可以加个关注,另外对Wireshark数据包分析感兴趣的同学可以订阅专栏内容~
相关推荐
- Chinese vice premier calls for multilateralism at Davos
-
DAVOS,Switzerland,Jan.21(Xinhua)--ChineseVicePremierDingXuexiangdeliveredaspeechatthe...
- 用C++ Qt手把手打造炫酷汽车仪表盘
-
一、项目背景与核心价值在车载HMI(人机交互界面)开发领域,虚拟仪表盘是智能座舱的核心组件。本项目基于C++Qt框架实现一个具备专业级效果的时速表模块,涵盖以下技术要点:Qt图形绘制核心机制(QPa...
- 系列专栏(八):JS的第七种基本类型Symbols
-
ES6作为新一代JavaScript标准,已正式与广大前端开发者见面。为了让大家对ES6的诸多新特性有更深入的了解,MozillaWeb开发者博客推出了《ES6InDepth》系列文章。CSDN...
- MFC界面开发工具BCG v31.1 - 增强功能区、工具箱功能
-
点击“了解更多”获取工具亲爱的BCGSoft用户,我们非常高兴地宣布BCGControlBarProfessionalforMFC和BCGSuiteforMFCv31.2正式发布!新版本支...
- 雅居乐上调出售吉隆坡项目保留金,预计亏损扩大至6.64亿元
-
1月2日,雅居乐集团(03383.HK)发布有关出售一家附属公司股权披露交易的补充公告。此前雅居乐集团曾公告,2023年11月8日(交易时段后),集团子公司AgileRealEstateDeve...
- Full text: Address by Vice Premier Ding Xuexiang's at World Economic Forum Annual Meeting 2025
-
DAVOS,Switzerland,Jan.21(Xinhua)--ChineseVicePremierDingXuexiangonTuesdaydeliveredasp...
- 手机性能好不好 GPU玄学曲线告诉你
-
前言各位在看测试者对手机进行评测时或许会见过“安卓玄学曲线”,所谓中的安卓玄学曲线真名为“ProfileGPURendering”。大多数情况下,在系统“开发者选项中被称为“GPU显示配置文件”或...
- 小迈科技 X Hologres:高可用的百亿级广告实时数仓建设
-
通过本文,我们将会介绍小迈科技如何通过Hologres搭建高可用的实时数仓。一、业务介绍小迈科技成立于2015年1月,是一家致力以数字化领先为优势,实现业务高质量自增长的移动互联网科技公司。始...
- vue3新特征和所有的属性,方法汇总及其对应源码分析
-
vue3新特征汇总与源码分析(备注:vue3使用typescript编写)何为应用?constapp=Vue.createApp({})app就是一个应用。应用的配置和应用的API就是app应用...
- China's stability redefines global trade in a volatile era
-
ContainersareunloadedatQingdaoPort,eastChina'sShandongProvince,December10,2024.[Photo/X...
- QML 实现图片帧渐隐渐显轮播
-
前言所谓图片帧渐隐渐显轮播就是,一组图片列表,当前图片逐渐改变透明度隐藏,同时下一张图片逐渐改变透明度显示,依次循环,达到渐隐渐显的效果,该效果常用于图片展示,相比左右自动切换的轮播方式来说,这种方式...
- 前端惊魂夜:我竟在CSS里写出了JavaScript?
-
凌晨两点,写字楼里只剩下我工位上的一盏孤灯。咖啡杯见底,屏幕的光映在疲惫的眼镜片上。为了实现一个极其复杂的动态渐变效果,我翻遍了MDN文档,试遍了所有已知的CSS技巧,却始终差那么一口气。“要是CSS...
- 10 个派上用场的 Flutter 小部件
-
尝试学习一门新语言可能会令人恐惧和厌烦。很多时候,我们希望我们知道早先存在的某些功能。在今天的文章中,我将告诉你我希望早点知道的最方便的颤振小部件。SpacerSpacer创建一个可调整的空白空...
- 让我的 Flutter 代码整洁 10 倍的 5 种
-
如果你曾在Flutter中使用过SingleTickerProviderStateMixin来制作动画,猜猜怎么着?你已经使用过Mixin了——恭喜你,你已经处于一段你甚至不知道的关...
- daisyUI - 主题漂亮、代码纯净!免费开源的 Tailwind CSS 组件库
-
漂亮有特色的CSS组件库,组件代码非常简洁,也支持深度定制主题、定制组件,可以搭配Vue/React等框架使用。关于daisyUIdaisyUI是一款极为流行的CSSUI组件库,...
- 一周热门
- 最近发表
-
- Chinese vice premier calls for multilateralism at Davos
- 用C++ Qt手把手打造炫酷汽车仪表盘
- 系列专栏(八):JS的第七种基本类型Symbols
- MFC界面开发工具BCG v31.1 - 增强功能区、工具箱功能
- 雅居乐上调出售吉隆坡项目保留金,预计亏损扩大至6.64亿元
- Full text: Address by Vice Premier Ding Xuexiang's at World Economic Forum Annual Meeting 2025
- 手机性能好不好 GPU玄学曲线告诉你
- 小迈科技 X Hologres:高可用的百亿级广告实时数仓建设
- vue3新特征和所有的属性,方法汇总及其对应源码分析
- China's stability redefines global trade in a volatile era
- 标签列表
-
- HTML 教程 (33)
- HTML 简介 (35)
- HTML 实例/测验 (32)
- HTML 测验 (32)
- JavaScript 和 HTML DOM 参考手册 (32)
- HTML 拓展阅读 (30)
- HTML文本框样式 (31)
- HTML滚动条样式 (34)
- HTML5 浏览器支持 (33)
- HTML5 新元素 (33)
- HTML5 WebSocket (30)
- HTML5 代码规范 (32)
- HTML5 标签 (717)
- HTML5 标签 (已废弃) (75)
- HTML5电子书 (32)
- HTML5开发工具 (34)
- HTML5小游戏源码 (34)
- HTML5模板下载 (30)
- HTTP 状态消息 (33)
- HTTP 方法:GET 对比 POST (33)
- 键盘快捷键 (35)
- 标签 (226)
- HTML button formtarget 属性 (30)
- opacity 属性 (32)
- transition 属性 (33)