IP报文格式、IPv6概述
IPv4报文格式
IPv4报文首部长度至少为20字节(没有可选字段和填充的情况下),下面来逐一介绍首部各个字段的含义
- Version版本:表示采用哪一种具体的IP协议,对于IPv4来说该字段就填充4以表示,如果是IPv6就填充6
- IHL首部长度:如果IP首部中出现了可选字段和填充,那么首部的长度是不固定的,需要根据该字段中的数值来表示首部的真实长度
- TOS区分服务:表明服务质量,通过填充不同的数来改变最低延迟、最大吞吐、最大安全等权值,不过该字段在IPv4中一般都不被使用,原因在于TOS控制增加了太多复杂度难以维护
- Total Length总长度:表明IP报文的总长度,如果想要得到正文部分的长度,只要将总长度(Total Length)减去首部长度(IHL)即可得到
- Identification标识:用于分片重组,属于同一IP包的分片标识字段是相同的值,报文接受主机可以凭借该字段对分片进行重组
- Flags标志:有3比特组成,第1位不使用恒定为0;第2位标识此IP报文是否允许被分片(0允许1拒绝),该位在确定路径MTU时有用;第3位标志IP在第2位为1时才有用,表示是否为最后一个分片(0是1非)
- Fragment Offset片偏移:接受主机收到属于同一IP包的分片时,需要对其进行按序重组后才能向上交付,片偏移字段中记录了当前正文数据在完整数据正文中的偏移量
- TTL生存时间:IP报文在网络中是有传输时间限制的,如果在范围之内没有到达目标,这个报文就被路由器丢弃不在转发(每经过一个路由器TTL减1,至0丢弃)
- Protocol协议:指示上层采用的协议种类,是UDP填17,TCP填6
- Header CheckSum首部校验和:用于检查报文有没有发生错误,如有则丢弃
- SA源地址 DA目标地址:发送报文的主机IP和接受报文的主机IP
- Option可选字段:可以设置安全级别、源路径、路径记录、时间戳等信息(一般不用)
- Padding填充:如果IP报文具有可选字段,需要将首部长度调整为32的倍数
IPv6(仅作了解)
IPv6必要性
IP v6用以解决IP v4绝对数量不足的问题,一个IPv6的地址为16字节,其能够表示的范围远远大于IPv4。遗憾的是IPv6和IPv4不兼容,从IPv4过渡到IPv6是一项艰巨的任务
IPv6地址结构
IPv6地址以16比特为一组的点分十六进制表示,如FEDC:BA98:7654:3210:FEDC:BA98:7854:3211,与IPv4类似的也分为网络标识和主机标识
IPv6特点
- IP地址扩大与路由控制表的聚合
- 性能提升:首部采用固定40字节,无需首部校验码,不需要做分片处理
- 即插即用:没有DHCP服务器也能自动分配IP地址
- 安全性更高
- 多播、Mobile IP成为扩展功能
IPv6报文格式
- Version:填充6
- 通信量类:等价于IP v4的TOS
- 流标号:用于服务质量控制
- 有效载荷长度:正文长度(不包括首部,因为首部固定40B)
- 下一个首部:指示上层协议类型
- 跳数限制:等价于TTL
- 源地址目标地址:发送报文的主机IP和接受报文的主机IP
IP分片与重组
由于不同数据链路所支持的最大传输单元MTU不一致,当IP报文长度超过MTU时,需要将一个报文拆分为小于MTU的报文分批次传输,当这些分片到目标主机时被重组(注:分片由路由器完成,但重组必须由目标主机来完成)
分片的弊端很明显:就是增加了路由器负担和数据包丢包的概率,如果由一个分片丢失,那么整个IP报文全部作废,即使已经收到了其他分片,此时就需要发送端重传(需要可靠传输时),无疑提高了时间成本,因此需要通过一定的算法尽可能的减少分片
路径MTU
路径MTU是指从发送主机到目标主机之间不需要分片时的最大MTU大小(路径中存在的所有数据链路中最小的MTU),如果每一次发送的报文长度小于路径MTU,节点路由器就不需要分片操作,分片操作只会由发送主机进行(减少路由器压力)
**如何确定路径MTU:**通过试探性发送完整数据包给下一跳节点,下一跳节点会返回其所管理的网段的MTU,迭代操作直至发送主机不在收到MTU告知时就可以确定路径MTU
如果上层采用的是可靠传输TCP,那么通过MTU可以计算出MSS(最大段长度)的值,使得传输层每一次交给网络层的报文长度一定是小于MTU的,这样连发送主机都不用进行分片操作了。
相关文章:

IP报文格式、IPv6概述
IPv4报文格式 IPv4报文首部长度至少为20字节(没有可选字段和填充的情况下),下面来逐一介绍首部各个字段的含义 Version版本:表示采用哪一种具体的IP协议,对于IPv4来说该字段就填充4以表示,如果是IPv6就填充6IHL首部长度ÿ…...
学习记录:js算法(六十七):任务调度器
文章目录 任务调度器思路一思路二 任务调度器 给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表,用字母 A 到 Z 表示,以及一个冷却时间 n。每个周期或时间间隔允许完成一项任务。任务可以按任何顺序完成,但有一个限制:两个…...

5分钟8图:Cursor如何让编程效率提升5倍?
5分钟8图,看Cursor如何革新AI编程? 作为一名AI编程的实践者,我很高兴为大家介绍Cursor - 一款基于VSCode的创新型集成开发环境(IDE),它巧妙地融合了先进的AI技术,为编程工作带来前所未有的便利。让我们通过多个图表深入了解Cursor的特性和工作流程。 Cursor的核心…...

车载实操:一对一实操学习、CANoe实操学习、推荐就业机会、就业技术支持、协助面试辅导
FOTA模块中OTA的知识点:1.测试过程中发现哪几类问题? 可能就是一个单键的ecu,比如升了一个门的ecu,他的升了之后就关不上,还有就是升级组合ecu的时候,c屏上不显示进度条。 2.在做ota测试的过程中ÿ…...

PACT 在微服务架构中的用途
在微服务架构盛行的今天,如何确保各个微服务之间的交互正确且稳定成为了一个关键问题。PACT(一种契约测试工具)在这个领域发挥着重要的作用。那么,PACT 在微服务架构中的用途到底是什么呢? 一、微服务架构的挑战 微服…...

LeetCode 3200.三角形的最大高度:枚举
【LetMeFly】3200.三角形的最大高度:枚举 力扣题目链接:https://leetcode.cn/problems/maximum-height-of-a-triangle/ 给你两个整数 red 和 blue,分别表示红色球和蓝色球的数量。你需要使用这些球来组成一个三角形,满足第 1 行…...

ssm基于java的招聘系统设计与开发+vue
系统包含:源码论文 所用技术:SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习,获取源码请私聊我 需要定制请私聊 目 录 第1章 绪论 1 1.1 课题背景 1 1.2 课题意义 1 1.3 研究内容 1 第2章 开发环境与技术 3 2.1 Java语言…...

【网络原理】TCP/IP五层网络模型之网络层-----IP协议详解,建议收藏!!
💐个人主页:初晴~ 📚相关专栏:计算机网络那些事 前几篇文章中我们深入研究了TCP协议,因为TCP协议在我们日常开发中的使用频率非常高。而相比之下,IP协议与我们普通程序员关系就没那么近了。一般是专门开发…...
三次握手与四次挥手
一、三次握手 AB之间 都会发送一个syn - ack。 A 先发 syn ,B收到 。 A: 什么都不知道 B:知道A可以发送。 B发送syn-ack,A收到 。 A: 知道B可以收也可以发 , B知道A可以发送。 A发送ack,B收到。 A : 知道B可以收也可以发 , B知道A…...
awk命令学习记录
awk命令 awk命令 表示将一行数据按特定分割符分割成多列,而从而选取特定列数的数据,默认分割符为空格,连接符默认也是空格 // 1. 更换分割符 awk -F : 1.txt // 1.txt为你的文件名 // 2. 打印多列 awk {print $1,$2} // $0为整行ÿ…...
科大讯飞嵌入式面试题及参考答案
平衡二叉树和普通二叉树的区别 平衡二叉树是一种特殊的二叉树,与普通二叉树相比有以下显著区别: 一、定义与结构 普通二叉树:二叉树是每个节点最多有两个子树的树结构。它没有特定的平衡要求,节点的分布可能比较随机。例如&#x…...
C Lua5.4.6 SDK开发库
下载 .lua执行 #include "lua.h" #include "lualib.h" #include "lauxlib.h"static int luaopen_ui(lua_State *L) {static const struct luaL_Reg lib_f[] = {{"saveFile", saveFile},{"loadFile", loadFile},{NULL, NULL…...
无线网卡知识的学习-- wireless基础知识(cfg80211)
1. 基本概念 mac80211 :这是最底层的模块,与hardware offloading 关联最多。 mac80211 的工作是给出硬件的所有功能与硬件进行交互。(Kernel态) cfg80211:是设备和用户之间的桥梁,cfg80211的工作则是观察跟踪wlan设备的实际状态. (Kernel态) nl80211: 介于用户空间与内核…...
Next.js 学习 - 路由系统(Routing)
Next.js 的路由系统基于文件系统,这意味着文件和文件夹的结构决定了 URL 路径。相较于传统的 React 应用中的路由配置,Next.js 的文件路由系统非常简洁和自动化。下面是对 Next.js 路由的详细介绍。 1. 目录结构 在 Next.js 13 中,app 目录…...

Unity XR PICO 手势交互 Demo APK
效果展示 用手抓取物体,调整物体位置和大小等 亲测pico4 企业版可用, 其他设备待测试 下载链接: 我标记的不收费 https://download.csdn.net/download/qq_35030499/89879333...

EM算法学习
1.EM算法的介绍 可以发现:计算出θA和θB的值的前提是知道A、B币种的抛掷情况。 所以我们需要使用EM算法:求出每轮选择硬币种类的概率 2.EM算法执行过程: 第一步:首先初始化设置一组PA和PB证明的值。然后通过最大似然估计得到每…...

019_基于python+django食品销售数据分析系统2024_4032ydxt
目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍:CodeMentor毕业设计领航者、全网关注者30W群落,InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者,博客领航之星、开发者头条/腾讯云/AW…...

C语言笔记(数据的存储篇)
目录 1.数据类型的详细介绍 2.整型在内存中的存储:原码、反码、补码 3.大小端字节序介绍及判断 4.浮点型的内存中的存储解析 1.数据类型的详细介绍 下述是内置类型: char // 字符数据类型 short // 短整型 int // 整型 long …...
wsl: 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理的解决方法
前言 开头先讲讲wsl2启用代理的必要性,一般来说,会用wsl的都是开发者,那么就避免不了从网络上下载软件和应用,但是由于众所周知的原因,你使用apt,wget等工具下载国外网站的东西时,下载速度就会…...

CSS 居中那些事
一、父子元素高度确定 简单粗暴, 直接通过设置合适的 padding 或 margin 实现居中 <style>.p {padding: 20px 0;background: rgba(255, 0, 0, 0.1);}.c {width: 40px;height: 20px;background: blue;} </style> <div class"p"><div class"…...

网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...

Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...

LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...