(考研湖科大教书匠计算机网络)第四章网络层-第七节: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…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...