(考研湖科大教书匠计算机网络)第四章网络层-第七节:IPv4数据报首部格式
- 获取pdf:密码7281
- 专栏目录首页:【专栏必读】考研湖科大教书匠计算机网络笔记导航
文章目录
- 一:IP数据报首部格式概述
- 二:各字段作用概述
- (1)版本
- (2)首部长度和可选字段
- (3)填充
- (4)区分服务
- (5)总长度
- A:概述
- B:首部长度和总长度字段区别
- (6)标识、标志和片偏移(用于IP数据报分片)
- A:IP数据报分片
- B:标识、标志和片偏移
- C:IP数据报分片例子
- (7)生存时间
- A:概述
- B:作用
- (8)协议
- (9)首部校验和
- (10)源IP地址和目的IP地址
- 三:总结
本节对应视频如下
- 【计算机网络微课堂(有字幕无背景音乐版)】:IPv4数据报首部格式
一:IP数据报首部格式概述
IP数据报首部格式:一个IP分组由首部和数据载荷两部分组成。IP数据报首部由固定部分(20B)和可变部分(最大40B)
- 固定部分:每个IP数据报首部所必须包含的部分
- 可变部分:用于增加IP数据报的功能
IP数据报常以32个比特为单位(4B)进行描述,也即下图中的每一行,其中每个小格子称之为字段(或域),每个字段或某些字段的组合用来表达IP协议的相关功能

二:各字段作用概述
(1)版本
版本:占4个比特,表示IP协议的版本,通信双方使用的IP协议版本必须一致。目前广泛使用的IP协议版本号为4,也即IPv4
(2)首部长度和可选字段
首部长度:占4个比特,表示IP数据报首部的长度,该字段取值以4B为单位
- 最小十进制取值为5,表示IP数据报首部只有20B的固定部分
- 最大十进制取值为15,表示IP数据报首部包含20B的固定部分和最大40B的可变部分
可选字段: 占1B到40B不等,用来支持排错、测量及安全等措施。可选字段增加了IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理IP数据报的开销。实际上可选字段很少被使用
(3)填充
填充: 用来确保首部长度应该是4B的整数倍,使用全0进行填充
(4)区分服务
区分服务: 占8个比特,用来获得更好的服务。该字段在旧标准中叫作服务类型,但实际上一直没有被使用过。1998年,因特网工程任务组IETF把这个字段改名为区分服务。利用该字段的不同数值可提供不同等级的服务质量。只有在使用区分服务时,该字段才起作用。一般情况下都不使用该字段
(5)总长度
A:概述
总长度: 占16个比特,用来表示IP数据报的总长度(首部+数据载荷)
- 最大取值为十进制的65535,以字节为单位。在实际应用中,很少会传输这么长的IP数据报文
B:首部长度和总长度字段区别
下图可说明首部长度字段和总长度字段的区别
- 首部长度:(0101)2×4=5×4=20B(0101)_{2}×4=5×4=20B(0101)2×4=5×4=20B
- 总长度:(0000001111111100)2=1020B(0000001111111100)_{2}=1020B(0000001111111100)2=1020B
- 数据载荷长度:1020−20=1000B1020-20=1000B1020−20=1000B


(6)标识、标志和片偏移(用于IP数据报分片)
A:IP数据报分片
IP数据报分片:如下图,网际层封装出的IP数据报将会在数据链路层封装成帧。每一种数据链路层协议都规定了帧的数据载荷的最大长度,称之为最大传输单元MTU(例如以太网数据链路层规定MTU值为1500B)。如果某个IP数据报总长度超过MTU时,将无法封装成帧,需要将原IP数据报分片为很小的IP数据报,再将各分片IP数据报封装成帧。而这里的标识、标志和片偏移三个字段共同用于IP数据报分片

B:标识、标志和片偏移
标识: 占16个比特,属于同一个数据报的各分片数据报应具有相同的标识。IP软件维持一个计数器,每产生一个数据报,计数器值+1,并将此值赋给标识字段
标志: 占3个比特,各比特含义如下
- DF位:
1:不允许分片0:允许分片
- MF位:
1:后面还有分片0:这是最后一个分片
- 保留位:必须设置为0
片偏移: 占13个比特,用于指出分片数据报的数据载荷部分偏移其在原数据报的位置有多少个单位,片偏移以8个字节为单位
C:IP数据报分片例子
如下图有一IP数据报,其首部为20B,数据载荷部分3800B,所以总长度为3820B。假设使用以太网传送该IP数据报,其MTU为1500B,显然无法封装3820B长的IP数据报,因此需要把该IP数据报分片为几个更小的IP数据报,每个长度不能大于1500B,然后再将每个分片IP数据报封装成一个以太网帧进行传输。为了更好地描述后续分片工作,这里我们将原IP数据报数据载荷部分的每一个字节都编上号,范围为0-3799

我们可将原IP数据报的数据载荷部分分为3个更小的分片
- 第一个分片:共1400字节,范围0-1399
- 第二个分片:共1400字节,范围1400-2799
- 第一个分片:共1000字节,范围2800-3799

分片结束后,给每个分片重新添加一个首部使之成为IP数据报,每个分片添加的首部自然不能完全相同,根据上面对标识、标志和片偏移字段的理解,可以填写下表
| 总长度 | 标识 | MF | DF | 片偏移 | |
|---|---|---|---|---|---|
| 原始数据报 | 3800+20 | 12345 | 0 | 0 | 0 |
| 分片1的数据报 | 1400+20 | 12345 | 1 | 0 | 0/8 |
| 分片2的数据报 | 1400+20 | 12345 | 1 | 0 | 1400/8 |
| 分片3的数据报 | 1000+20 | 12345 | 0 | 0 | 2800/00 |

假设分片2的IP数据报经过某个网络时还需要再进行分片,其中一个分片长度为800B,另一个分片长度为600B,分片结束后给每个分片添加一个首部使之称为IP数据报,填写下表如下
| 总长度 | 标识 | MF | DF | 片偏移 |
|---|---|---|---|---|
| 原始数据报 | 3800+20 | 12345 | 0 | 0 |
| 分片2的分片1数据报 | 800+20 | 12345 | 1 | 0 |
| 分片2的分片2数据报 | 600+20 | 12345 | 1 | 0 |
(7)生存时间
A:概述
生存时间:
- 占8比特,最初以秒为单位,最大生存周期为255秒;路由器转发IP数据报时,将IP数据报首部中的该字段的值减去IP数据报在本路由器上所耗费的时间,若不为0就转发,否则就丢弃
- 现在以“跳数”为单位,路由器转发IP数据报时,将IP数据报首部中的该字段的值减1,若不为0就转发,否则就丢弃
B:作用
生存时间字段的最大作用就是防止IP数据报在网络中永久兜圈
如下图,假设路由器R2路由表目的网络为N2的条目其下一跳被错误的配置成了R1(本来是R3),这会导致去往网络N2的IP数据报错误地转发给路由器R1

假设某个IP数据报从网络N1发往N2,该IP数据报达到R1后,R1进行查表转发,发现了匹配的路由条目,其下一条指示转发给R2,于是R1将该IP数据报转发给了R2。R2收到该IP数据报后,进行查表转发,发现了匹配的路由条目,其下一条指示转发给R1,于是R2将该IP数据报又转发回了R1。很显然,这形成了路由环路,如果没有生存时间字段,IP数据报将在此路由环路中永久兜圈

(8)协议
协议: 占8比特,指明IPv4数据报的数据部分是何种协议数据单元,常用的一些协议和相应协议字段的值如下表
| 协议名称 | ICMP | IGMP | TCP | UDP | IPv6 | OSPF |
|---|---|---|---|---|---|---|
| 协议字段值 | 1 | 2 | 6 | 17 | 41 | 89 |
(9)首部校验和
首部校验和: 占16个比特,用来检测首部在传输过程中是否出现差错。IP数据报每经过一个路由器,路由器都要重新计算首部检验和,因为某些字段(生存时间、标志、片偏移等)的取值可能发生变化。由于IP层本身并不提供可靠传输的服务,并且计算首部校验和是一项耗时的操作,因此在IPv6中,路由器不再计算首部校验和,从而更快转发IP数据报
(10)源IP地址和目的IP地址
源IP地址和目的IP地址: 各占32比特,用来填写发送该IP数据报的源主机的IP地址和接收该IP数据报的目的主机的IP地址
三:总结
| 字段名 | 长度 | 作用 |
|---|---|---|
| 版本 | 4个比特 | IP协议版本 |
| 首部长度 | 4个比特 | IP数据报首部长度 |
| 总长度 | 16个比特 | IP数据报总长度 |
| 标识 | 16个比特 | 同一个数据报各分片相同 |
| 标志 | 3个比特 | DF;MF;保留位 |
| 生存时间 | 8个比特 | 防止永久兜圈 |
| 协议 | 8个比特 | 何种协议数据单元 |
| 首部校验和 | 16个比特 | 检测差错 |
| 源IP地址 | 32个比特 | 源主机IP地址 |
| 目的IP地址 | 32个比特 | 目的主机IP地址 |
| 可选字段 | 0-40字节 | 支持排错、测量及安全等措施 |
相关文章:
(考研湖科大教书匠计算机网络)第四章网络层-第七节:IPv4数据报首部格式
获取pdf:密码7281专栏目录首页:【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一:IP数据报首部格式概述二:各字段作用概述(1)版本(2)首部长度和可选字段(3&am…...
每天10个前端小知识 【Day 18】
前端面试基础知识题 1.如何实现单行/多行文本溢出的省略样式? 在日常开发展示页面,如果一段文本的数量过长,受制于元素宽度的因素,有可能不能完全显示,为了提高用户的使用体验,这个时候就需要…...
【Java集合类】ArrayList
内部结构 ArrayList内部核心是一个Object数组elementDataObject数组的长度(length)视为ArrayList当前的容量(capacity)size对象表示ArrayList当前的元素个数 类上的重要注释 内部是Object数组 允许put null值,会自动扩容 size、…...
页面置换算法
页面置换算法 在进程运行过程中,若需要访问的物理块不在内存中,就需要通过一定的方式来将页面载入内存,而此时内存很可能已无空闲空间,因此就需要一定的算法来选择内存中要被置换的页面,这种算法就被称为页面置换算法…...
算法导论【在线算法】—The Ski-Rental Problem、The Lost Cow Problem、The Secretary Problem
算法导论【在线算法】The Ski-Rental Problem问题描述在线算法证明The Lost Cow Problem问题描述在线算法类似问题—寻宝藏The Secretary Problem问题描述在线算法The Best Possible kThe Ski-Rental Problem 问题描述 假设你正在上滑雪课。每节课结束后,你决定&a…...
linux 下怎样给pdf 文件加书签
linux 下怎样给pdf 文件加书签 对于没有书签的pdf文件,怎样给pdf加标签呢? 以方便阅读. 以前总是要借助windows下pdf 工具, 叫什么来者? 忘了 记得是编辑一个用tab表示目录级别的文本文件, 有一种直观的感觉,大目录下嵌套着小目录 ..., 然后导入到文件中 linux 下有没有这种…...
[软件工程导论(第六版)]第2章 可行性研究(课后习题详解)
文章目录1. 在软件开发的早期阶段为什么要进行可行性研究?应该从哪些方面研究目标系统的可行性?2. 为方便储户,某银行拟开发计算机储蓄系统。储户填写的存款单或取款单由业务员输入系统,如果是存款,系统记录存款人姓名…...
[软件工程导论(第六版)]第3章 需求分析(课后习题详解)
文章目录1. 为什么要进行需求分析?通常对软件系统有哪些需求?2. 怎样与用户有效地沟通以获取用户的真实需求?3. 银行计算机储蓄系统的工作过程大致如下:储户填写的存款单或取款单由业务员输入系统,如果是存款则系统记录…...
基于分布鲁棒联合机会约束的能源和储备调度(Matlab代码实现)
👨🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…...
ETL和数据建模
一、什么是ETL ETL是数据抽取(Extract)、转换(Transform)、加载(Load )的简写,它是将OLTP系统中的数据经过抽取,并将不同数据源的数据进行转换、整合,得出一致性的数据&…...
ccc-pytorch-回归问题(1)
文章目录1.简单回归实战:2.手写数据识别1.简单回归实战: 用 线性回归拟合二维平面中的100个点 公式:ywxbywxbywxb 损失函数:∑(yreally−y)2\sum(y_{really}-y)^2∑(yreally−y)2 迭代方法:梯度下降法,…...
【JAVA八股文】框架相关
框架相关1. Spring refresh 流程2. Spring bean 生命周期3. Spring bean 循环依赖解决 set 循环依赖的原理4. Spring 事务失效5. Spring MVC 执行流程6. Spring 注解7. SpringBoot 自动配置原理8. Spring 中的设计模式1. Spring refresh 流程 Spring refresh 概述 refresh 是…...
二叉树的相关列题!!
对于二叉树,很难,很难!笔者也是感觉很难!虽然能听懂课程,但是,对于大部分的练习题并不能做出来!所以感觉很尴尬!!因此,笔者经过先前的那篇博客,已…...
Java设计模式 - 原型模式
简介 原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直…...
深度学习中的 “Hello World“
Here’s an interesting fact—Each month, there are 186.000 Google searches for the keyword “deep learning.” 大家好✨,这里是bio🦖。每月有超18万的人使用谷歌搜索深度学习这一关键词,是什么让人们对深度学习如此感兴趣?接下来请跟随我来揭开深度学习的神秘面纱。…...
购买WMS系统前,有搞清楚与ERP仓库模块的区别吗
经常有朋友在后台询问我们关于WMS系统的问题,他们自己也有ERP系统,但是总觉得好像还差了点什么,不知道是什么。今天,我想通过本文,来向您简要地阐述ERP与WMS系统在仓储管理上的不同之处。 ERP仓库是以财务为导向的&…...
一文吃透 Spring 中的IOC和DI
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
分布式任务处理:XXL-JOB分布式任务调度框架
文章目录1.业务场景与任务调度2.任务调度的基本实现2.1 多线程方式实现2.2 Timer方式实现2.3 ScheduledExecutor方式实现2.4 第三方Quartz方式实现3.分布式任务调度4.XXL-JOB介绍5.搭建XXL-JOB —— 调度中心5.1 下载与查看XXL-JOB5.2 创建数据库表5.3 修改默认的配置信息5.4 启…...
【源码解析】Ribbon和Feign实现不同服务不同的配置
Ribbon服务实现不同服务,不同配置是通过RibbonClient和RibbonClients两个注解来实现的。RibbonClient注册的某个Client配置类。RibbonClients注册的全局默认配置类。 Feign实现不同服务,不同配置,是根据FeignClient来获取自定义的配置。 示…...
【webpack5】一些常见优化配置及原理介绍(二)
这里写目录标题介绍sourcemap定位报错热模块替换(或热替换,HMR)oneOf精准解析指定或排除编译开启缓存多进程打包移除未引用代码配置babel,减小代码体积代码分割(Code Split)介绍预获取/预加载(prefetch/pre…...
Qwen3-0.6B-FP8在计算机组成原理学习中的问答助手
Qwen3-0.6B-FP8在计算机组成原理学习中的问答助手 最近和几个计算机专业的学生聊天,发现他们普遍有个痛点:课本上的概念太抽象,遇到问题没人随时解答。像CPU流水线、缓存一致性这些内容,光看文字和图表,总觉得隔着一层…...
S32K144实战LIN总线:从硬件连接到协议栈的嵌入式实现
1. LIN总线与S32K144的硬件连接实战 第一次用S32K144做LIN总线开发时,我在硬件连接上踩过不少坑。记得当时因为收发器选型不当,导致信号波形畸变严重,整个项目卡了两周。现在就把这些实战经验总结给你,帮你避开这些"新手陷阱…...
效果实测:Phi-3-vision-128k-instruct处理Matlab仿真结果图的准确度
效果实测:Phi-3-vision-128k-instruct处理Matlab仿真结果图的准确度 1. 测试背景与目标 在工程仿真和科研工作中,Matlab生成的各类图表承载着关键数据信息。传统的人工分析不仅耗时,还容易因主观因素导致解读偏差。本次测试聚焦微软最新发布…...
从前向渲染到延迟渲染:为什么3A游戏都在用Deferred?
两种算账方式,两种命运从一个餐厅说起 你开了一家餐厅。100桌客人,10个厨师。 方式一:每桌每菜。 服务员端着第一桌的菜单走进厨房。"第一桌要红烧肉。"10个厨师一起做红烧肉。做完了。"第一桌还要糖醋鱼。"10个厨师一起…...
通义千问1.5-1.8B-Chat-GPTQ-Int4技术解析:Agent智能体架构设计与实现
通义千问1.5-1.8B-Chat-GPTQ-Int4技术解析:Agent智能体架构设计与实现 想象一下,你有一个不知疲倦、知识渊博的助手。你只需要告诉它“帮我策划一次周末家庭出游”,它就能自己上网查天气、找景点、算预算,甚至还能根据家人的喜好…...
空调集中智能控制系统方案:物联网自适应调节,打造智慧办公新体验
一、应用背景与核心痛点 在写字楼、商场、酒店、学校、医院、产业园区、连锁门店等各类大中型场所,空调是保障环境舒适、维持正常运营的核心基础设施,但传统空调管控模式存在诸多难以解决的痛点,严重影响运营效率、能耗成本与设备寿命&#x…...
Golang GORM 零值更新实战:从 Struct 到 Map 的解决方案
1. 为什么GORM会忽略零值更新? 这个问题困扰过不少刚接触GORM的开发者。想象一下这样的场景:你在开发一个学生成绩管理系统,需要将某个学生的分数从100分调整为0分。按照常规思路,你会把结构体中的Score字段设为0,然后…...
用CAMIL搞定WSI癌症检测:从SimCLR自监督到邻居约束注意力的实战拆解
CAMIL实战指南:从SimCLR自监督到邻居约束注意力的癌症检测全流程解析 当病理学家在显微镜下审视整张组织切片(WSI)时,他们的目光会不自觉地聚焦于肿瘤区域与周围组织的微妙互动——这种被称为"肿瘤微环境"的上下文关系&…...
PCB设计效率翻倍:用CATIA批量导出元器件2D轮廓的隐藏技巧
PCB设计效率革命:CATIA批量导出2D轮廓的工业级解决方案 在高速迭代的电子产品开发周期中,PCB工程师常常需要处理数百个器件的3D模型转换工作。传统单器件操作模式不仅耗时费力,更可能成为项目进度的瓶颈。CATIA作为航空与汽车行业的主流CAD工…...
Leather Dress Collection 模型微调入门:使用Ollama管理本地模型与数据
Leather Dress Collection 模型微调入门:使用Ollama管理本地模型与数据 你是不是也遇到过这种情况:网上那些通用的大模型,虽然功能强大,但回答总感觉差了点意思,不够贴合你的具体需求?比如,你想…...
