(考研湖科大教书匠计算机网络)第四章网络层-第七节: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…...
整理了Windows(7—11)官方镜像下载链接和各版本区别介绍
原文《整理了Windows(7—11)官方镜像下载链接和各版本区别介绍》 引言 在安装或重装Windows系统时,使用微软官网提供的正版ISO镜像可以保证系统完整性和安全更新,避免使用第三方盗版镜像带来的恶意软件、广告风险。 本期汇总了微…...

干泵,干式螺杆真空泵
干式真空泵: 无油干式机械真空泵(又简称干式机械泵)是指泵能从大气压力下开始抽气,又能将被抽气体直接排到大气中去,泵腔内无油或其他工作介质,而且泵的极限压力与油封式真空泵同等量级或者接近的机械真空泵…...

【Java Web】速通HTML
参考笔记: JavaWeb 速通HTML_java html页面-CSDN博客 目录 一、前言 1.网页组成 1 结构 2 表现 3 行为 2.HTML入门 1 基本介绍 2 基本结构 3. HTML标签 1 基本说明 2 注意事项 4. HTML概念名词解释 二、HTML常用标签汇总 + 案例演示 1. 字体标签 font (1)定义 (2)案例 2…...
《算力觉醒!ONNX Runtime + DirectML如何点燃Windows ARM设备的AI引擎》
ONNX Runtime是一个跨平台的高性能推理引擎,它就像是一位精通多种语言的翻译官,能够无缝运行来自不同深度学习框架转化为ONNX格式的模型。这种兼容性打破了框架之间的隔阂,让开发者可以将更多的精力投入到模型的优化和应用中。 从内部机制来…...
Webhook入门
主要参考资料: 深入解析 Webhook:从原理到实践的全面指南: https://blog.csdn.net/weixin_43114209/article/details/144250750 目录 简介Webhook 与传统 API 调用的区别与轮询 (Polling) 的对比典型工作流程 简介 简单来说,Webhook 是一种“…...
广州邮科高频开关电源:以创新科技赋能通信能源绿色未来
在数字化浪潮席卷全球的当下,通信网络作为信息社会的基石,其稳定运行对电源系统的可靠性、效率及智能化水平提出了更高要求。作为国内通信电源领域的领军企业,广州邮科凭借其自主研发的高频开关电源技术,以高效节能、智能管控、绿…...

制作一款打飞机游戏63:自动保存
1.编辑器的自动保存实现 目标:将自动保存功能扩展到所有编辑器,包括脑编辑器、模式编辑器、敌人编辑器和动画/精灵编辑器。实现方式: 代码复制:将关卡编辑器中的自动保存代码复制到其他编辑器中。标记数据变更&a…...
C语言操作Kafka
Kafka服务 Kafka的快速入门 文档很详细,基本上几步就可以搭建一个Kafka测试环境。 下载Kafka的二进制包,然后解压。 wget https://www.apache.org/dyn/closer.cgi?path/kafka/4.0.0/kafka_2.13-4.0.0.tgz tar -xzf kafka_2.13-4.0.0.tgz cd kafka_2.…...

视觉分析开发范例:Puppeteer截图+计算机视觉动态定位
一、选型背景:传统爬虫已无力应对的视觉挑战 在现代互联网环境中,尤其是小红书、抖音、B站等视觉驱动型平台,传统基于 HTML 的爬虫已经难以满足精准数据采集需求: 内容加载由 JS 动态触发,难以直接解析 HTML…...

使用Python,OpenCV,Tesseract-OCR对自己的运动数据图片进行识别及分析,并使用Matplotlib绘制配速图出来
使用Python,OpenCV,Tesseract-OCR对自己的运动数据图片进行识别及分析,并使用Matplotlib绘制配速图出来 1. 效果图2. 源码3. 全量源码及运动图片资源参考主要分为 目录下图片解析及读取;拼九宫格图片出来,可以自由配置(m*n)取决于自己有多少张运动图片遍历图片并进行运动…...