计算机网络:网络层 —— IPv4 数据报的首部格式

文章目录

      • IPv4数据报的首部格式
        • IPv4数据报分片
        • 生存时间 TTL字段
        • 协议字段
        • 首部检验和字段

IPv4数据报的首部格式

IPv4 数据报的首部格式及其内容是实现 IPv4 协议各种功能的基础。

TCP/IP 标准中,各种数据格式常常以32比特(即4字节)为单位来描述

![[IPv4数据报的首部格式.png]]

  • 固定部分:每个 IPv4 数据报都必须要包含的部分

  • 某些 IPv4 数据报的首部,除了包含 20 字节的固定部分,还包含一些可选的字段来增加 IPv4 数据报的功能

  • 版本:长度为 4 个比特,用来表示 IP 协议的版本,通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议的版本号为4(即IPv4)

  • 首部长度:长度为4个比特,该字段的取值以4字节为单位,用来表示IPv4数据报的首部长度(总是4的整数倍)。

    • 最小取值为二进制的 0101,即十进制的5,再乘以4字节单位,表示IPv4数据报首部只有20字节固定部分

    • 最大取值为二进制的 1111,即十进制的15,再乘以4字节单位,表示IPv4数据报首部包含20字节固定部分和最大40字节可变部分

  • 可选字段:长度从1字节到40字节不等,用来支持排错测量以及安全措施等功能。虽然可选字段增加了 IPv4 数据报的功能,但这同时也使得 IPv4 数据报的首部长度成为可变的,这就增加了因特网中每一个路由器处理 IPv4 数据报的开销。实际上,可选字段很少被使用

  • 填充:用来确保 IPv4 数据报的首部长度是4字节的整数倍,使用全0进行填充。当首部长度(20字节固定部分+可变部分)的长度不是 4字节 整数倍时,填充相应数量的全0字节,以确保 IPv4 数据报的首部长度是 4字节 的整数倍。

  • 区分服务长度为 8 个比特,用来获得更好的服务该字段在旧标准中叫作服务类型,但实际上一直没有被使用过。1998年,因特网工程任务组IETF把这个字段改名为区分服务。利用该字段的不同取值可提供不同等级的服务质量。只有在使用区分服务时该字段才起作用,一般情况下都不使用该字段

  • 总长度长度为16个比特,该字段的取值以字节为单位,用来表示IPv4数据报的长度(首部长度+数据载荷长度)。最大取值为二进制的 16 个比特1,即十进制的65535(很少传输这么长的IPv4数据报)

  • 源IP地址:长度为32比特,用来填写发送 IPv4 数据报的源主机的 IPv4 地址。

  • 目的IP地址:长度为32比特,用来填写接收 IPv4 数据报的目的主机的 IPv4 地址。

IPv4数据报分片

IPv4 数据报中的标识标志片偏移部分,共同用于IPv4数据报分片

![[IPv4数据报分片.png]]

当 IPv4 数据报长度超过 MTU(最大传输单元,Maximum Transmission Unit) 时,无法封装成帧,需要将原 IPv4 数据报分片为若干个更小的IPv4数据报,再将分片后的IPv4数据报封装成帧

  • 标识长度为 16 个比特,属于同一个IPv4数据报的各分片数据报应该具有相同的标识。IP 软件会维持一个计数器,每产生一个 IPv4 数据报,计数器值就加1,并将此值赋给标识字段。

  • 标志

    • 最低位(More Fragment,MF)

      • MF = 1,表示本分片后面还有分片
      • MF = 0,表示本分片后面没有分片
    • 中间位(Don’t Fragment,DF)

      • DF = 1,表示不允许分片
      • DF = 0,表示允许分片
    • 最高位为保留位,必须设置为0

  • 片偏移长度为13个比特,该字段的取值以8字节为单位,用来指出分片IPv4数据报的数据载荷偏移其在原IPv4数据报的位置有多远

某个 IPv4 数据报总长度为 3820 字节,采用 20 字节固定首部,根据数据链路层要求,需要将该 IPv4 数据报分片为长度不超过 1420 字节的数据报片:

![[IPv4数据报分片例.png]]

  1. 确定原始数据报的大小:原始 IPv4 数据报的总长度是 3820 字节。其中包括 20 字节的 IP 首部。

  2. 计算有效载荷的大小有效载荷的大小 = 总长度 - IP首部长度 = 3820 - 20 = 3800 字节。

  3. 确定每个分片的最大大小:根据题目要求,每个分片的大小不能超过 1420 字节。每个分片包含 20 字节的 IP 首部和最多 1400 字节的有效载荷。

  4. 计算所需的分片数量

    • 第一分片:从第 0 到第 1399 字节(共1400字节)
    • 第二分片:从第 1400 到第 2799 字节(共1400字节)
    • 第三分片:从第 2800 到第 3799 字节(共1000字节)
  5. 设置分片信息

    • 分片标识 (Identification):保持不变,设为 23333。

    • MF标志位 (More Fragments):除最后一个分片外的所有分片都设为1,表示还有更多分片。最后一个分片设为0。

    • DF标志位 (Don’t Fragment):所有分片都设为0,因为已经进行了分片操作。

    • 片偏移 (Fragment Offset):以8字节为单位,第一个分片为0,第二个分片为 1400 8 = 175 \frac{1400}8 = 175 81400=175 第三个分片为 2800 8 = 350 \frac{2800}8 = 350 82800=350

  6. 总结分片信息

分片编号总长度(字节)标识MFDF片偏移
120 + 140023333100
220 + 14002333310175
320 + 10002333300350

通过以上步骤,我们可以将原始的 3820 字节 IPv4 数据报成功地分成三个符合要求的分片。

生存时间 TTL字段

生存时间(Time To Live,TTL):长度为 8 个比特,最大取值为二进制的11111111,即十进制的 255。该字段的取值最初以秒为单位。因此,IPv4 数据报的最大生存时间最初为 255 秒。路由器转发 IPv4 数据报时,将其首部中该字段的值减去该数据报在路由器上所耗费的时间,若结果不为 0 就转发,否则就丢弃。

生存时间字段后来改为以“跳数”为单位路由器收到待转发的IPv4数据报时,将其首部中的该字段的值减1,若结果不为0就转发,否则就丢弃

生存时间字段可以防止被错误路由的IPv4数据报无限制地在因特网中兜圈

![[生存时间 TTL字段.png]]

协议字段

协议长度为8个比特,用来指明 IPv4 数据报的数据载荷是何种协议数据单元PDU

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

协议名称协议字段值
ICMP1
IGMP2
TCP6
UDP17
IPv641
OSPF89
首部检验和字段

首部检验和长度为16个比特,用于检测 IPv4 数据报在传输过程中其首部是否出现了差错。IPv4数据报每经过一个路由器,其首部中的某些字段的值(例如生存时间 TTL、标志以及片偏移等)都可能发生变化,因此路由器都要重新计算一下首部检验和。

首部检验和的计算方法:

![[首部检验和的计算方法.png]]

上述检验和的计算方法不仅用于IP协议,还用于运输层的用户数据报协议 UDP 和传输控制协议 TCP,常被称为因特网检验和(Internet Checksum)。这种检验和的检错性能虽然不如 CRC 循环冗余校验,但更易用软件实现。

首部检验和计算的重点在于二进制反码求和的运算,两个数进行二进制反码求和的运算规则是从低位到高位逐列进行计算:

  • 0 和 0 相加是 0
  • 0 和 1 相加是 1
  • 1 和 1 相加是 0,但要产生一个进位 1,加到下一列
  • 若最高位相加后产生进位,则最后得到的结果要加 1
  • 将最终结果取反码,得到检验和。

由于网际层并不向其高层提供可靠传输的服务,并且计算首部检验和是一项耗时的操作,因此在 IPv6 中,路由器不再计算首部检验和,从而更快转发IP数据报

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

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

相关文章

vue3学习记录-nextTick

vue3学习记录-nextTick 1. 案例场景2. 使用方法2.1 回调方式2.2 async&#xff0c;await 3.原理 1. 案例场景 聊天框实现输入内容&#xff0c;滚动条默认滚到最底部。 <template><div class"chat_box"><div class"chat_list" ref"chat…

Facebook群控策略详解

Facebook群控早在前几年就很火爆了&#xff0c;对于做Facebook营销或者电商的跨境选手来说&#xff0c;这是个不错的提高效率扩大增长的办法。具体来说&#xff0c;Facebook群控是一种通过同时管理多个Facebook账户进行自动化推广活动的方法&#xff0c;它可以实现自动发布帖子…

【私聊记录】最近在忙什么啊?听说你在学人工智能?

小舒&#xff1a;哎&#xff0c;你最近在忙什么啊&#xff1f; 小元&#xff1a;我在学习人工智能呢。 小舒&#xff1a;人工智能&#xff1f;难不难学啊&#xff1f; 小元&#xff1a;不难&#xff0c;找到正确的学习姿势就不难了&#xff01; 小舒&#xff1a;那你为什么想学…

BLE 协议之 L2CAP

目录 一、简介二、L2CAP Protocol 架构1、逻辑信道划分2、信道模式3、设计思想4、帧结构4.1 面向连接信道 B-frame4.2 无连接数据信道包 G-frame4.3 重传/流量控制/流传输模式下的面向连接的信道 S-frame、I-frame4.4 面向连接的通道分为 LE 信用流控模式和增强型信用流控模式 …

『 Linux 』网络传输层 - TCP(二)

文章目录 TCP六个标志位TCP的连接三次握手 四次挥手为什么是三次握手和四次挥手 重传机制 TCP六个标志位 在TCP协议报文的报头中存在一个用于标志TCP报文类型的标志位(不考虑保留标志位),这些标志位以比特位选项的方式存在,即对应标志位为0则表示为假,对应标志位为1则为真; SYN…

安科瑞AMB400分布式光纤测温系统解决方案--远程监控、预警,预防电气火灾

安科瑞戴婷 可找我Acrel-Fanny 安科瑞AMB400电缆分布式光纤测温具有多方面的特点和优势&#xff1a; 工作原理&#xff1a; 基于拉曼散射效应。激光器产生大功率的光脉冲&#xff0c;光在光纤中传播时会产生散射。携带有温度信息的拉曼散射光返回光路耦合器&#xff0c;耦…

Raspberry Pi 树莓派产品系列说明

系列文章目录 前言 随着我们产品线的不断扩展&#xff0c;要了解所有不同的 Raspberry Pi 板可能会让人感到困惑。以下是 Raspberry Pi 型号的高级分类&#xff0c;包括我们的旗舰系列、Zero 系列、计算模块系列和 Pico 微控制器。 Raspberry Pi 电脑分为几个不同的系列&#x…

电阻电容电感为什么通常是10、22、47这些数

电阻电容电感为什么通常是10、22、47这些数 优先数的来源优先数的优点&#xff1a;E24和E96的来源 我们在选择电阻时&#xff0c;经常看到的阻值是33Ohm&#xff0c;4.7KOhm&#xff0c;1KOhm&#xff0c;680Ohm.基本上是以这几个数字开头。 同时在选择电容时&#xff0c;经常看…

以「JIMUMETA元宇宙体验馆」为例,探讨有哪些元宇宙场景?

让我们以「JIMUMETA元宇宙体验馆」为例&#xff0c;深入探讨元宇宙场景中提供的产品与服务。该体验馆由视创云展精心打造&#xff0c;集成了企业主展馆、元宇宙虚拟活动分会场、品牌展示分会场、线上论坛会场以及会议室接待会客等多重功能&#xff0c;旨在全方位满足企业发布会…

在MacOS玩RPG游戏 - RPGViewerPlus

背景知识 由于我一直使用Mac电脑&#xff0c;所以一直对Mac如何玩RPGMV/RPGMZ游戏的方式有进一步的想法。 网上能给出的方案都是自行启动一个HTTP服务进行&#xff0c;进行服务加载。这个方法有效&#xff0c;但兼容性较差。涉及到自定义功能模块的游戏&#xff0c;都会有报错…

使用Scrapy框架爬取博客信息

随着网络的发展&#xff0c;越来越多有价值的信息存储在网络上。使用爬虫技术可以从这些信息源中提取出有用的数据。本文将介绍如何使用Python中的Scrapy框架来爬取博客站点上的文章标题、作者以及阅读数&#xff0c;并将其保存到JSON文件中。 一、项目背景 Scrapy是一个快速…

【Java Web】使用JDBC操作数据库(含代码示例)

文章目录 JDBC主要组成部分访问数据库步骤数据库交互StatementPreparedStatementSQL注入攻击 演示示例单查询多查询返回记录数 JDBC&#xff08;Java Database Connectivity&#xff09;是Java中用于执行SQL语句的标准API&#xff0c;它提供了一种统一的方式来访问各种关系型数…

[CUDA] atomic函数闭坑技巧

文章目录 1. 尽量减少atomic的使用频率2. 小心atomic的不规则读数 cuda atomic函数使用时的一些注意事项 1. 尽量减少atomic的使用频率 由于atomic会增加threads之间的同步性&#xff0c;所以在有选择性的atomic操作时&#xff0c;可以考虑用if(condition) atomic&#xff1b;…

开源全站第一个nextron项目--NextTalk:一款集成chatgpt的实时聊天工具

NextTalk 简介 该项目是一个基于Nextron(NextJSElectron)的桌面端实时聊天工具。 但由于使用了NextJS中的ssr及api route功能&#xff0c;该程序只能在开发环境运行。 关于生产版本&#xff1a;我将其网页端部分分离&#xff0c;并用Pake将其打包成桌面端&#xff0c;生产体…

河南高校大数据实验室建设案例分享

泰迪智能科技在与中国各地高校的合作中积累了丰富的经验&#xff0c;尤其是在大数据和人工智能领域。过去多年里与河南省内多所高校在大数据领域进行了积极的探索和建设&#xff0c;形成了一系列具有特色的大数据实验室。这些实验室不仅促进了高校内部的科研创新&#xff0c;也…

Kafka自动生产消息软件

点击下载《Kafka服务端(含Zookeeper)一键自启软件》 点击下载《kafka客户端生产者消费者kafka可视化工具&#xff08;可生产和消费消息&#xff09;》 点击下载《Kafka自动生产消息软件》 1. 前言 在软件开发过程中&#xff0c;Kafka常被用作消息队列来处理特定的业务功能。为…

龙迅#LT8668EX显示器图像处理芯片 适用于HDMI1.4+VGA转4PORT LVDS,支持4K30HZ分辨率,可做OSD菜单亮度调节!

1. 一般说明 LT8668EX 是 Lontium 的第二代 LCD 控制器&#xff0c;基于 ClearEdge 技术&#xff0c;支持 VGA 接口和 HDMI 接口&#xff0c;符合 HDMI 1.4 规范。它可以支持带 HDMI 接口的双模 DP。为了向后兼容&#xff0c;该 LCD 控制器还包括一个高性能模拟接口&#xff0…

分享SRC漏洞挖掘中js未授权漏洞挖掘的小技巧

文章目录 0x1 前言0x2 js未授权简介一、什么是未授权&#xff1f;二、常见的未授权访问漏洞三、js漏洞挖掘需要获取的几个信息四、如何挖掘五、浅谈 0x3浅谈 js未授权挖掘技巧一、常规js未授权挖掘二、浅谈交流 0x4 Findsomething应该怎样正确使用?问题一&#xff1a;findsome…

如何保护网站安全

1. 使用 Web 应用防火墙&#xff08;WAF&#xff09; 功能&#xff1a;WAF 可以实时检测和阻止 SQL 注入、跨站脚本&#xff08;XSS&#xff09;、文件包含等常见攻击。它通过分析 HTTP 流量来过滤恶意请求。 推荐&#xff1a;可以使用像 雷池社区版这样的 WAF&#xff0c;它提…

内感受性注意的电生理特征:频谱和源定位分析

摘要 对内感受信号的关注和有意识地处理能力被认为对最小自我、适应性自我调节和情感体验的发展&#xff0c;以及工具性和执行性认知功能的最佳表现至关重要。然而&#xff0c;尽管关于内感受推论解释的理论非常丰富&#xff0c;但实证证据仍然很少。在此基础上&#xff0c;本…