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.rhkb.cn/news/383673.html

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

相关文章

聚焦保险行业客户经营现状,概述神策数据 CJO 解决方案

触点红利时代,企业的经营需求从「深度的用户行为分析」转变为「个性化、全渠道一致的客户体验」。客户旅程编排(Customer Journey Orchestration,简称 CJO)从体验出发,关注客户需求、感受和满意度,能够帮助…

JavaWeb笔记_JSTL标签库JavaEE三层架构案例

一.JSTL标签库 1.1 JSTL概述 JSTL(jsp standard tag library):JSP标准标签库,它是针对EL表达式一个扩展,通过JSTL标签库与EL表达式结合可以完成更强大的功能 JSTL它是一种标签语言,JSTL不是JSP内置标签 JSTL标签库主要包含: ****核心标签 格式化标签 …

Windows本地启动Redis

找到本地redis目录 输入cmd,然后输入redis-server.exe redis.windows.conf,默认端口为6379 再新打开一个cmd,输入redis-cli.exe -p 6379 -a (你在redis.windows.conf中设置的密码)

.NET程序集编辑器/调试器 dnSpy 使用介绍

原文链接:https://www.cnblogs.com/zhaotianff/p/17352882.html dnSpy dnSpy是一个.NET程序集调试器和编辑器。它可以用它来编辑和调试程序集,即使在没有源码的情况下。 主要功能: 调试.NET和Unity程序集 编辑.NET和Unity程序集 项目地…

25.x86游戏实战-理解发包流程

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 工具下载: 链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…

IOS微软语音转文本,lame压缩音频

在IOS开发中,用微软进行语音转文本操作,并将录音文件压缩后返回 项目中遇到了利用微软SDK进行实时录音转文本操作,如果操作失败,那么就利用原始音频文件通过网络请求操作,最终这份文件上传到阿里云保存,考…

Golang学习笔记20240725,Go语言基础语法

第一个Go程序 package mainimport "fmt"func main() {fmt.Println("hello world") }运行方式1: go run main.go运行方式2: go build .\hello_go.exe运行方式3:goland右键运行 字符串拼接 使用加号可以对字符串进行…

基于微信小程序的校园警务系统/校园安全管理系统/校园出入管理系统

摘要 伴随着社会以及科学技术的发展,小程序已经渗透在人们的身边,小程序慢慢的变成了人们的生活必不可少的一部分,紧接着网络飞速的发展,小程序这一名词已不陌生,越来越多的学校机构等都会定制一款属于自己个性化的小程…

UML通信图建模技术及应用例

新书速览|《UML 2.5基础、建模与设计实践》 在对系统的动态行为进行建模时,通信图常被用于按组织结构对控制流进行建模。与顺序图一样,一个单独的通信图只能显示一个控制流。 使用通信图建模时可以遵循如下策略: (1&#xff09…

Centos 8 配置网络源

备份当前的软件源配置文件: sudo cp -a /etc/yum.repos.d /etc/yum.repos.d.bak 清理原有的 yum 仓库配置信息: sudo rm -f /etc/yum.repos.d/*.repo 获取阿里云的 CentOS 8 源配置: sudo curl -o /etc/yum.repos.d/CentOS-Base.repo ht…

错误解决 error CS0117: ‘Buffer‘ does not contain a definition for ‘BlockCopy‘

Unity 2022.3.9f1 导入 Runtime OBJ Importer 后出现: error CS0117: ‘Buffer’ does not contain a definition for ‘BlockCopy’ 解决办法: 源代码: int DDS_HEADER_SIZE 128; byte[] dxtBytes new byte[ddsBytes.Length - DDS_HEAD…

【Vue实战教程】之Vue工程化项目详解

Vue工程化项目 随着多年的发展,前端越来越模块化、组件化、工程化,这是前端发展的大趋势。webpack是目前用于构建前端工程化项目的主流工具之一,也正变得越来越重要。本章节我们来详细讲解一下如何使用webpack搭建Vue工程化项目。 1 使用we…

Axure Web端元件库:从Quick UI到500+组件的飞跃

在快速变化的数字世界中,产品设计不仅仅是功能的堆砌,更是用户体验的精心雕琢。原型设计作为产品开发过程中的关键环节,其重要性不言而喻。Axure,作为业界领先的原型设计工具,凭借其强大的交互设计和丰富的功能&#x…

智慧工地视频汇聚管理平台:打造现代化工程管理的全新视界

一、方案背景 科技高速发展的今天,工地施工已发生翻天覆地的变化,传统工地管理模式很容易造成工地管理混乱、安全事故、数据延迟等问题,人力资源的不足也进一步加剧了监管不到位的局面,严重影响了施工进度质量和安全。 视频监控…

外行对自动驾驶汽车的一些想法-2024-

起源 前段时间有关于自动驾驶汽车的讨论,现在热度终于快过去了。 (⊙﹏⊙) 其实,完全不用担心自动驾驶取代人类。 引用 这是一篇24年4月的报道。 上图为引用,可以看到打工人的忙碌。 2023 一个热爱自动驾驶但妥妥外行之人的思考-2023-C…

mac怎样清理photoshop垃圾的方法 ps清理缓存和垃圾 苹果电脑暂存盘已满怎么清理

很多使用过ps,尤其是Adobe全家桶的小伙伴会发现,这些软件占用缓存很多,而且随着使用时间的增长,缓存也会越多,并不会自动清理。那么mac系统怎么清理ps暂存盘呢?mac又该怎么最高效清理磁盘空间呢&#xff1f…

芯片的计算能力由什么决定

芯片的计算能力由什么决定 芯片的计算能力由多个因素决定。 包括但不限于: 架构设计: 芯片的架构设计决定了其计算单元的数量和类型,以及它们之间的连接方式和通信方式。不同的架构可以提供不同的计算能力和性能。处理器速度: 处…

快速安装torch-gpu和Tensorflow-gpu(自用,Ubuntu)

要更详细的教程可以参考Tensorflow PyTorch 安装(CPU GPU 版本),这里是有基础之后的快速安装。 一、Pytorch 安装 conda create -n torch_env python3.10.13 conda activate torch_env conda install cudatoolkit11.8 -c nvidia pip ins…

LeetCode_122(买卖股票的最佳时机)

public int maxProfit(int[] prices) {int ans 0;//int prices[] {7,1,5,3,6,4};for(int i1;i<prices.length;i){ansMath.max(0,prices[i]-prices[i-1]);}return ans;}

DevExpress WinForms自动表单布局,创建高度可定制用户体验(二)

使用DevExpress WinForms的表单布局组件可以创建高度可定制的应用程序用户体验&#xff0c;从自动安排UI控件到按比例调整大小&#xff0c;DevExpress布局和数据布局控件都可以让您消除与基于像素表单设计相关的麻烦。 P.S&#xff1a;DevExpress WinForms拥有180组件和UI库&a…