IP数据报结构详解:从基础到进阶

目录

IP数据报的格式

IP数据报首部的固定部分

IP数据报首部的可变部分

实例分析:数据报的分片

生存时间(TTL)与协议

首部检验和

总结


在网络通信中,IP数据报是至关重要的基本单元。本文将带您深入了解IP数据报的格式及其各个字段的功能。即使您是网络基础小白,也能通过本文掌握IP数据报的核心知识。

IP数据报的格式

IP数据报由首部数据部分组成。首部又分为固定部分可变部分。图4-19展示了IP数据报的完整格式。

从上表中可以看出,IP数据报的首部字段非常关键,它们定义了数据报的各种属性和行为。接下来我们将详细解释每个字段的作用。

IP数据报首部的固定部分

固定部分共20字节,是所有IP数据报必须具有的。下面介绍固定部分各字段的意义:

  1. 版本:占4位,指IP的版本。当前使用广泛的是IPv4。IPv6是下一代互联网协议,虽然有许多改进,但IPv4仍然占据主导地位。
  2. 首部长度:占4位,表示首部长度的单位是32位(4字节)。最常用的长度是20字节,不使用选项时为0101。
  3. 区分服务:占8位,用来获得更好的服务。目前大多数情况下不使用,但在一些对服务质量要求较高的应用中,区分服务字段可以帮助实现流量优先级管理。
  4. 总长度:占16位,表示首部和数据部分的总长度。最大长度为65535字节,这是由于16位字段的最大值为2^16-1。
  5. 标识:占16位,用于标识数据报。在分片传输中,所有分片具有相同的标识值。这有助于接收端将所有分片重新组装成完整的数据报。
  6. 标志:占3位,目前仅2位有意义。MF(More Fragment)表示是否有后续分片,DF(Don't Fragment)表示是否允许分片。
  7. 片偏移:占13位,表示每个分片在原始数据报中的相对位置。以8字节为单位。
  8. 生存时间(TTL) :占8位,防止数据报在网络中无限制地传输。每经过一个路由器减少1,当为0时丢弃。
  9. 协议:占8位,指示数据报携带的数据来自何种协议。如TCP(6)、UDP(17)等。
  10. 首部检验和:占16位,仅检验首部,目的是确保首部在传输中未被损坏。
  11. 源地址:占32位,表示数据报的发送地址。
  12. 目的地址:占32位,表示数据报的接收地址。
IP数据报首部的可变部分

可变部分是选项字段,用于支持排错、测量及安全措施。选项字段长度可变,最长为40字节。IPv6取消了这一部分,使首部长度固定,以提高处理效率。

实例分析:数据报的分片

当数据报长度超过网络所容许的MTU时,需将数据报分片。以下为一个分片的具体例子:

原数据报总长度为3820字节,数据部分为3800字节。为了适应网络的MTU,需要将数据报分片,每个分片的长度不超过1420字节。分片结果如下:

  • 数据报片1:总长度1420字节,片偏移0
  • 数据报片2:总长度1420字节,片偏移175
  • 数据报片3:总长度1020字节,片偏移350

表4-5 IP数据报首部中与分片有关的字段值

数据报片

总长度

标识

MF

DF

片偏移

原始数据报

3820

12345

0

0

0

数据报片1

1420

12345

1

0

0

数据报片2

1420

12345

1

0

175

数据报片3

1020

12345

0

0

350

假设数据报片2经过某个网络时还需再进行分片,则分为数据报片2-1(携带数据800字节)和数据报片2-2(携带数据600字节)。其字段值如下:

  • 数据报片2-1:总长度820字节,标识12345,MF=1,片偏移175
  • 数据报片2-2:总长度620字节,标识12345,MF=0,片偏移275

这样,接收端就能根据标识和片偏移字段正确地将数据报重新组装。

注意:IP 数据报在传送中可能被多次分片,但分片的数据报仅在目的主机才被重装为原来的数据报

生存时间(TTL)与协议

TTL字段的设计初衷是防止数据报在网络中无限制传输。每经过一个路由器,TTL值减1。当TTL值减为0时,数据报被丢弃。这有效避免了因路由错误导致的数据报在网络中兜圈子。

协议字段指示数据报携带的数据来自何种协议。常见的协议及其字段值如下:

例如,如果协议字段值为6,表示数据报携带的是TCP数据。

首部检验和

首部检验和用于校验数据报首部是否在传输中被损坏。其计算方法如下:

  1. 将首部分为若干16位字。
  1. 将检验和字段置零。
  1. 用反码算术运算将所有16位字相加。
  1. 将结果的反码写入检验和字段。

接收端收到数据报后,重新计算首部检验和。若结果为0,表示首部未被损坏,否则丢弃数据报。

总结

本文介绍了IP数据报的格式及各字段的功能。从首部的固定部分到可变部分,再到具体的分片例子,希望您能对IP数据报有一个全面的了解。通过具体实例的分析,相信即使是网络基础小白也能明白IP数据报的基本结构和功能。

如果您有任何问题或建议,请在评论区留言。我们非常重视您的反馈,以便不断优化内容。感谢阅读!

延伸阅读:如果您对IP数据报的更详细技术细节感兴趣,建议参考RFC791文档。


希望这篇简洁明了的文章能帮助您更好地理解IP数据报的结构和功能。请多多分享和点赞,让更多人受益!

图文来源:《计算机网络教程》第六版微课版

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/49553.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python】使用抓包Fiddler软件,网络查询 遇到“您的连接不是私密连接”的问题的解决方法

使用Fiddler抓包软件很久,忽然发现网络使用有问题,一点开浏览器就会出现类似下面的页面: 检查了网络情况发现不是网络的问题,也排除了封号的可能。发现只要把抓包软件Fiddler关闭以后就没问题了,就知道问题是出在软件…

国产光电耦合器2024年的机遇与挑战

随着科技的飞速发展,2024年对于国产光电耦合器行业来说,无疑是充满机遇与挑战的一年。本文将深入探讨该行业在技术创新、市场竞争、5G时代、新兴应用领域和国际市场拓展方面的现状及未来前景。 技术创新的黄金期 物联网和人工智能技术的迅猛发展&#x…

Java之集合底层-数据结构

Java集合之数据结构 1 概述 数据结构是计算机科学中研究数据组织、存储和操作的一门学科。它涉及了如何组织和存储数据以及如何设计和实现不同的数据操作算法和技术。常见的据结构有线性数据结构(含数组、链表、栈和队列等),非线性数据结构…

医学多模态:多模态知识增强全幻灯病理基础模型

A Multimodal Knowledge-enhanced Whole-slide Pathology Foundation Model 目录 摘要介绍结果2.1 mSTAR概述2.2 病理幻灯片分类用于诊断和治疗mSTAR改善了幻灯片级诊断任务mSTAR改善了分子预测2.3 病理生存分析预测mSTAR 提高了癌症生存预测2.4 多模态能力mSTAR促进多模态融合…

睿考网:中级会计师考试各科分值是多少?

中级会计考试是会计领域的一个重要考核,考试题型包含多种:单选题、多选题、判断题、计算分析题和综合题。这些不同的题型不仅覆盖了广泛的知识点,而且各自的评分标准也是不一样的。为了帮助大家更全面地掌握各类题型的得分规则,睿…

解决:Nacos无法获取远程配置数据,导致项目启动各种配置异常

解决:Nacos无法获取远程配置数据,导致项目启动各种配置异常 一问题描述:1.项目pom依赖版本:2.bootstrap.yml配置信息3.远程配置:默认public命名空间4.启动报异常,显示没有配置数据源,实际远程已…

Mysql随记

对表mysql.user执行DML语句(数据操作语言),那么此时磁盘数据较新,需要手动执行flush privileges 语句来覆盖内存中的授权数据。其他的DDL(数据操作语言),DQL(数据查询语言),DCL(数据…

韦东山嵌入式linux系列-查询方式的按键驱动程序_编写框架

1 LED 驱动回顾 对于 LED, APP 调用 open 函数导致驱动程序的 led_open 函数被调用。在里面,把 GPIO 配置为输出引脚。安装驱动程序后并不意味着会使用对应的硬件,而 APP 要使用对应的硬件,必须先调用 open 函数。所以建议在驱动…

【Pytorch】cumsum的实现逻辑

本文只记录cumsum的实现逻辑的CUDA部分,也即底层调用了CUDA的什么实现算子。 void launch_cumsum_cuda_kernel(const TensorBase& result, const TensorBase& self, int64_t dim) {AT_DISPATCH_ALL_TYPES_AND_COMPLEX_AND2(ScalarType::Half, ScalarType::…

Adobe Character Animator (CH) 安装包软件下载

目录 一、软件简介 二、下载与安装 1. 下载 2. 安装 三、注意事项 1. 硬件要求 2. 兼容性 四、功能介绍 1. 实时面部捕捉 2. 实时语音同步 3. 动作捕捉 五、快捷键操作 CH 提供了一系列快捷键以方便用户快速操作。以下是一些常用的快捷键: 一、软件简介…

django电商用户消费数据分析系统-计算机毕业设计源码20891

摘 要 随着电子商务的快速发展,电商平台积累了大量的用户消费数据。为了更好地理解用户行为、优化商品结构和提升用户体验,本文设计并实现了一个基于Django框架的电商用户消费数据分析系统。 该系统包含后台首页、系统用户(管理员&#xf…

Ubuntu Grub引导优化

配置文件 sudo vim /etc/default/grub修改参数 引导菜单等待时间 GRUB_TIMEOUT3自动引导上次选择的系统 如果安装了双系统或多系统,可以考虑配置此参数。 # 此参数默认值为0,引导第一个引导项 GRUB_DEFAULTsaved# 此参数默认没有,需要手…

Hive分布式SQL计算平台

Hive分布式SQL计算平台 一、Hive 概述二、Hive架构三、Hive客户端 1、Hive有哪些客户端可以使用2、Hive第三方客户端 四、Hive使用语法 1、数据库操作2、内部表,外部表3、数据的导入与导出4、分区表5、分桶表6、复杂类型操作7、数据抽样8、Virtual Columns 虚拟列9…

构建数字堡垒:面对微软蓝屏事件的反思与前瞻

目录 引言事件回顾问题解析1、技术缺陷2、安全意识不足3、应急响应机制不健全 预防措施1、加强软件测试2、提升安全意识3、建立应急响应机制4、跨行业合作 未来展望1、人工智能与机器学习2、区块链技术3、法规与政策 结语 引言 2024年的微软蓝屏事件,无疑是对全球I…

Samtec技术科普小课堂 | 一文入门射频连接器~

【摘要/前言】 在本文中,我们将回到基础知识,了解一下什么是射频连接器。如果您是信号完整性专家,请点击阅读原文访问我们的网站视频,通过我们的网络研讨会视频了解教科书上可能找不到的知识。 如果您是电气工程领域的新手&#…

PHP 多线程和异步编程的常见陷阱

本文由 ChatMoney团队出品 在PHP开发中,多线程和异步编程是提高应用性能和响应速度的重要手段。然而,这些技术也带来了许多挑战和陷阱,如共享状态冲突、死锁、超时、资源泄漏以及调试困难等。本文将详细探讨这些陷阱,并提供相应的…

pycharm git 新建备忘

git 提交时出现如下错误: Committer identity unknown *** Please tell me who you are. Run git config --global user.email "youexample.com" git config --global user.name "Your Name" to set your accounts default identity. Omit…

SQL中的函数

目录 前言 一、系统内置函数 1、数学函数 2、日期和时间函数 3、聚合函数 4、字符串函数 二、自定义函数 1、标量函数的创建与调用 2、内嵌表值函数的创建与调用 3、多语句表值函数的创建与调用 前言 函数是由一个或多个 T-SQL 语句组成的子程序,可用于封…

浅谈监听器之聚合报告

浅谈监听器之聚合报告 “聚合报告”(Aggregate Report)是JMeter中最常用且功能强大的监听器之一,它提供了一种简洁而全面的方式来汇总和分析测试结果。本文档旨在深入解析聚合报告的特性和使用方法,帮助用户更好地理解和应用这一…

【Linux】条件变量及生产者消费者模型

为什么要将这两者放在一起进行呢? 主要是因为生产消费与条件变量关系密切,正好相辅相成。 目录 条件变量:条件变量的引出:条件变量的解释与接口:测试代码: 生产者消费者模型:概念:代…