IP协议报文
一.IP协议报头结构

二.IP协议报头拆解
1.4位版本
实际上只有两个取值,分别是4和6,4代表的是IPv4,6代表的是IPv6。
2.4位首部长度
IP协议报头的长度也是边长的,单位是*4,这里表示的大小为0~15,当数值为15时,报头长度位60,和TCP一样。
3.8位服务类型TOS
8位服务类型TOS:3位优先权字段已经弃用,4位TOS字段和1位保留字段(必须置为0)。4位TOS字段分别表示:最小延时,最大吞吐量,最高可靠性,最小成本,这四者互相冲突,只能选择一个,对于ssh/telnet这样的应用程序,最小延时比较重要,对于ftp这样的程序,最大吞吐量比较重要。
i.最小延时:数据从A到B消耗的时间最短。
ii.最大吞吐量:数据从A到B单位时间内,传输的数据量最多。
iii.最高可靠性:IP协议并不会像TCP那样有严格的可靠性机制,但是IP一些机制也会影响到丢包的概率。
iv.最小成本:设备上减少消耗。
4.16位总长度
IP数据报的总长度:16位总长度相当于2个字节,一个数据包最大才64KB,但是并不是说IP数据报只能传64KB的数据,它也能传输大的数据,因为IP协议内置了拆包组包的机制,会自动把大的数据包拆成多个IP数据报来携带数据,在接收方拼接。
5.拆包组包的属性
i.16位标识:IP协议会自动拆包,同一个载荷的数据会被分成多份,交给多个IP数据报来携带,并且多个IP数据报之间,16位标识是相同的。
ii.3位标志:只有2个有效,还有一个保留位。其中一个表示这个包是否需要组包(是否是拆包的一部分),另一个表示当前包是否为组包中的最后一个单位。
iii.13位片偏移:决定组包时数据报的位置。(防止后发先至)
6.八位生存时间(TTL)
8位生存空间这个指的是一个IP数据包最久存活的时间,但是这个不是按时间来进行计算的,而是通过路由器转发的次数来进行计算(经过交换机不会扣次数),而TTL是有转发次数的限制的,当发送一个IP数据报的时候会有一个TTL的初始值(32,64,128...),数据每经过一个路由器都会减少TTL的值,当TTL的值为0的时候,这个数据报就会被丢弃。
7.八位协议
IP数据报中的载荷,载荷通过携带不同传输层协议的数据包,类似于TCP/UDP的端口号。
8.16位首部校验和
验证传输过程中IP报头是否发生错误,不管IP的载荷,载荷部分TCP/UDP都有自己的校验和。
9.32位IP地址
IP地址是32位的,但是不方便人为观察,便通过点分十进制来进行化简,一共有三个点,每个部分是一个字节,大小不超过255:类似于192.192.192.192这种(乱写的)
IP地址是唯一的,IP是32位大小,可以表示的范围是0~42亿9千万,但是如今的互联网发展迅速,这个大小已经无法满足现在的需求了。
三.解决IP地址不够的方法
1.动态分配地址
当一个设备上网的时候,才会对它进行地址的分配,当该设备上网的时候,就不再进行地址的分配,对于IP地址不够用的解决只能算是权宜之计。
2.NAT(网络地址转换)
i.公网和私网IP
IP地址被分为两大类,第一种是公网IP/外网IP,第二种就是私网IP/内网IP。公网IP是不能重复的只能有一个,而私网IP可以在不同的局域网内中重复。
私网IP / 内网IP 的IP一般都是这几个类型:10.* / 172.16~172.31.* / 192.168.*(学会区分)
其他的就是公网IP / 外网IP
ii.NAT的工作原理
NAT的作用:一个设备在上网的时候,IP数据报的IP地址,就会被NAT(通常是路由器)自动进行修改。
1.同一个局域网中,主机A访问主机B,不会涉及到NAT机制。
2.公网上的设备A,访问公网上的设备B,不会涉及到NAT。
3.一个局域网中的主机A,访问另一个局域网中的主机B,NAT机制中,不允许有这样的访问。
4.局域网内部的设备A,访问公网上的设备B,NAT机制会生效,并且NAT就是为了解决这个问题。
iii.NAT的工作过程
1.当我使用我的电脑发送IP数据报给卫星这个应用程序的时候,其中NAT会将我的IP数据报的IP地址自动发生改变,并把IP数据报发送给卫星这个应用程序:
2.当卫星这个应用程序接收到了我的电脑发送的IP数据报时,再将它的IP数据报传回给我的电脑上,并且通过NAT机制来进行:
3.如果有多个设备访问运营商路由器,并且给同一个服务器发送IP数据报,此时NAT机制会有映射关系:
需要注意的是,如果A主机和B主机的端口号在很小的概率下,两者的端口号相同了,那么在运营商IP地址记录映射关系的时候,生成的新端口号会不同。在网络通信中,不仅仅只有IP信息是关键信息,端口号也是关键信息,端口号本身的作用就是区分同一个主机上的不同的应用程序,但在NAT中可以就可以用于区分不同主机上的不同的应用程序。
iv:NAT的缺点
NAT机制的缺点在于网络环境过于复杂,替换过程中,需要维护每一层路由器的映射关系,每次转发数据,都需要查询映射关系等等,开销比较大。
3.使用IPv6
可以根本上解决地址不沟通的问题,因为IPv6是使用了128位16个字节表示IP地址,而IPv4使用的是32位4个字节来表示IP地址的,这个差距是非常大的,因为IPv6是2*128,而IPv4是2*32。
但是IPv6之所以没被普及,是因为使用IPv6需要使用新的设备,这样需要花很多钱,可是替换之后并不会有什么显著的提升,所以很多设备还是继续使用IPv4。而NAT机制只需要给路由器更新升级软件就可以,硬件不需要更换,成本更低。
IPv6的内网:
相关文章:

IP协议报文
一.IP协议报头结构 二.IP协议报头拆解 1.4位版本 实际上只有两个取值,分别是4和6,4代表的是IPv4,6代表的是IPv6。 2.4位首部长度 IP协议报头的长度也是边长的,单位是*4,这里表示的大小为0~15,当数值为1…...
【分布式微服务云原生】掌握分布式缓存:Redis与Memcached的深入解析与实战指南
掌握分布式缓存:Redis与Memcached的深入解析与实战指南 摘要: 本文深入探讨了分布式缓存在现代分布式系统中的重要性,详细分析了Redis和Memcached两种主流的分布式缓存解决方案的原理和使用场景。文章不仅提供了核心技术的深入解析ÿ…...

计算机毕业设计 基于Python的智能文献管理系统的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档
🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…...
如何查看NVIDIA Container Toolkit是否配置成功
要确认 NVIDIA Container Toolkit 是否已成功配置,可以按照以下步骤进行检查: 1.检查 NVIDIA 驱动程序 首先,确保你的系统已经正确安装了 NVIDIA 驱动程序,并且可以识别你的 GPU。你可以使用 nvidia-smi 命令来进行检查…...

python全栈学习记录(二十一)类的继承、派生、组合
类的继承、派生、组合 文章目录 类的继承、派生、组合一、类的继承二、派生三、组合 一、类的继承 继承是一种新建类的方式,新建的类称为子类,被继承的类称为父类。 继承的特性是:子类会遗传父类的属性(继承是类与类之间的关系&a…...
Go语言实现长连接并发框架 - 任务执行流
文章目录 前言接口结构体接口实现项目地址最后 前言 你好,我是醉墨居士,上篇博客中我们实现了客户端的请求的实现,接下来我们要去实现对请求任务的处理,我们需要定义任务执行的流程 接口 trait/task.go type TaskFunc interfa…...

Flutter与原生代码通信
文章目录 1. 知识回顾2. 示例代码3. 经验总结我们在上一章回中介绍了通道相关的内容,本章回中将介绍其中的一种通道:MethodChannnel.闲话休提,让我们一起Talk Flutter吧。 1. 知识回顾 我们在上一章回中介绍了通道的概念和作用,并且提到了通道有不同的类型,本章回将其中一…...

每日读则推(三)
n.(事件的)发生地点,(活动的)场所 n.雄性大园丁鸟 n.多细枝的,苗条的 v.放大,扩大(声音);增强,加强 Male great bowerbirds build twiggy concert venues that amplify their raucous songs and n.园丁鸟 …...

Android Studio | 无法识别Icons.Default.Spa中的Spa
编写底部导航栏,涉及到Spa部分出现报红: 解决办法:在build.gradle.kts中引入图标依赖 dependencies {implementation "androidx.compose.material:material-icons-extended:<version>" }...

SKD4(note上)
微软提供了图形的界面API,叫GDI 如果你想画某个窗口,你必须拿到此窗口的HDC #include <windows.h> #include<tchar.h> #include <stdio.h> #include <strsafe.h> #include <string>/*鼠标消息 * 键盘消息 * Onkeydown * …...
rabbitmq----数据管理模块
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 交换机数据管理管理的字段持久化管理类内存管理类申明交换机删除交换机获取指定交换机 队列数据管理管理的字段持久化管理类内存管理类申明/删除/获取指定队列获取所…...
【人工智能深度学习应用】妙笔API最佳实践
AI妙笔是一款以文本创作为主、多模态为辅的生成式创作大模型产品,专门为传媒、政务等特定的行业和组织提供行业化的内容创作辅助。它具备深度的行业知识,能够生成高质量的专业内容,能覆盖各行业常见的文体类型,写作文体丰富多样&a…...

SOMEIP_ETS_150: SD_Send_triggerEventUINT8Multicast_Eventgroup_6
测试目的: 验证DUT在Tester订阅事件组后,能够响应Tester触发的triggerEventUINT8Multicast方法,并将TestEventUINT8Multicast事件发送到订阅请求中端点选项指定的IP地址和端口。 描述 本测试用例旨在确保DUT能够正确处理事件组的订阅请求&…...

【EXCEL数据处理】000009 案列 EXCEL单元格数字格式。文本型数字格式和常规型数字格式的区别
前言:哈喽,大家好,今天给大家分享一篇文章!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 【EXCEL数据处理】000009 案列 EXCEL单元格数字格式。文本型数字格式和…...

Vxe UI vue vxe-table vxe-text-ellipsis 如何实现单元格多行文本超出、多行文本溢出省略
Vxe UI vue vxe-table 如何实现单元格多行文本超出、多行文本溢出省略 代码 配合 vxe-text-ellipsis 组件实现多行文本溢出省略 <template><div><vxe-grid v-bind"gridOptions"><template #defaultAddress"{ row }"><vxe-te…...
FFmpeg源码:avio_feof函数分析
AVIOContext结构体和其相关的函数分析: FFmpeg源码:avio_r8、avio_rl16、avio_rl24、avio_rl32、avio_rl64函数分析 FFmpeg源码:read_packet_wrapper、fill_buffer函数分析 FFmpeg源码:avio_read函数分析 FFmpeg源码ÿ…...

各省-城镇化率(2001-2022年)
数据收集各省-城镇化率(2001-2022年).zip资源-CSDN文库https://download.csdn.net/download/2401_84585615/89465885 相关指标: 包括省份、年份、年末总人口数(万人)、年末城镇人口数(万人)、城镇化率等。 数据集构建: 数据集通…...

飞创龙门双驱XYZ直线模组高精度应用实例
飞创龙门双驱XYZ直线模组集超精密定位、高动态响应和灵活配置于一体,适用于电子制造行业(点胶、组装、检测)、半导体圆晶加工、芯片封装、激光切割、激光焊接、数控机床、精密检测及科研实验等,满足高精度、高动态的三维定位需求&…...

Prompt 初级版:构建高效对话的基础指南
Prompt 初级版:构建高效对话的基础指南 文章目录 Prompt 初级版:构建高效对话的基础指南一 “标准”提示二 角色提示三 多范例提示四 组合提示五 规范化提示 本文介绍了提示词的基础概念与不同类型,帮助用户更好地理解如何在对话中构建有效的…...

餐饮重点企业在AI领域的布局,看方大的AI实践
大家好,我是Shelly,一个专注于输出AI工具和科技前沿内容的AI应用教练,体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具,拥抱AI时代的到来。 AI已经被应用在餐饮餐厨行业的哪些方面&am…...

第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...

C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...

C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...