(考研湖科大教书匠计算机网络)第四章网络层-第七节: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…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...

docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...

51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...