网络层协议之 IP 协议
IP 协议格式

4 位版本:此处的取值只有两个,4(IPv4)和 6(IPv6),即指定 IP 协议的版本。
4 位首部长度:描述了 IP 报头多长,IP 报头是变长的,因为报头中的选项部分是可有可无的,此处的单位也是 4 字节(IP头部的长度是多少个32bit,也就是 length * 4 的字节数。4bit表示最大的数字是15,因此IP头部最大长度是60字节)。
8 位服务类型:实际上只有 4 位是有效的,这四位中只能出现 1 位是 1,其余的都是 0,因此就表示 IP 协议的四种形态 / 四种工作模式:最小延时、最大吞吐量、最高可靠性、最小成本。
16 位总长度:描述了一个 IP 数据包的长度(头 + 载荷),16 位总长度意味着一个 IP 数据包最大只能支持 64KB,但是 IP 自身会支持对包的拆分和组装。虽然最大是 64KB,但实际情况进行拆分的单位往往比 64KB 小,这取决于数据链路层的情况。
16 位标识:同一个数据拆成的多个包的标识都是一样的。3 位标志:就是一个代表结束的标志。13 位片偏移:标识了多个包的先后顺序。这几个字段都是辅助拆包 / 组包提供的。
8 位生存时间:一个数据报在网络上能够传输的最大时间。这个时间的单位是 “次数”。一个数据报构造出来会有一个初始的 TTL 数值(比如 32、64),这个报每经过一个路由器转发,TTL-1,如果一直减到 0,还没有到达目标,那么就会认为这个报永远不会到达了,就会丢弃。
32 位源 IP 地址、32 位 目的 IP 地址:表示发送端和接收端。虽然此处的 IP 地址是 32 位整数,但是我们平时看到的是形如 192.168.1.1 这样的一串数字,这是使用三个 . 来把 4 个字节 32 位数字给分成四个部分,每个部分分别使用 0-255 来表示,这称为:点分十进制。
但是 32 位数字,只能表示 42亿9千万个数字,而全世界能上网的设备那么多,为了解决 IP 地址不够用的问题想出了以下方法:
1. 动态分配 IP 地址。把不在联网设备的地址分配给需要上网的设备。
2. NAT 网络地址转换,本质是使用一个 IP 代表一批设备。因此在 NAT 背景下,就把 IP 地址分成两大类:
a)内网 IP(私有 IP),形如:10.* 、172.16.* — 172.32.* 、192.168.*
b)外网 IP(公网 IP),除了上面的类型,剩下的就是公网 IP。并且公网 IP 必须是唯一的,但是私网 IP 可以在不同的局域网中重复出现。如果某个私网里面的设备想要访问公网的设备,就需要对应的 NAT 设备(路由器)把 IP 地址进行映射,从而完成网络访问;如果公网的设备无法直接访问私网的设备

此时,只要这个电脑是经过运营商路由器转发给服务器的,那么服务器看到的源 IP 都一样;如果此时是多个电脑同时访问同一个服务器, 服务器的响应就会发回给路由器,然后路由器再根据这些电脑不同的端口号来进行区别,决定发给哪个电脑。
3. IPv6,从根本上解决了 IP 不够用的问题(使用 16 个字节表示 IP 地址)。但是想支持 IPv6 就得更换路由器等设备,这就导致成本的上升,因此就没有广泛的到使用。所以主要还是采用上述两种办法结合。但是在我们国家,IPv6 在 2018 年的时候工信部已经大力推行,现在绝大多数设备都支持 IPv6,只是还没开启而已。
地址管理
IP 地址分为两个部分,网络号和主机号
网络号:标识网段。标识相互连接的两个网段具有不同的标识。
主机号:标识主机。统一网段内主机之间具有相同的网络号,但是必须有不同的主机号。

一个 IP 地址,为了区分网络号和主机号的界限,引申出了子网掩码。
此处的 255.255.255.0 就是子网掩码,左侧的都是 1,右侧的都是 0,1 的部分就描述了 IP 有多少位是网络号。网络号不一定是前三个字节,而是可以调整变化的。
特殊的 IP 地址
将IP地址中的主机地址全部设为0,就成为了网络号,代表这个局域网(192.168.1.0)
将IP地址中的主机地址全部设为1,就成为了广播地址,用于给同一个链路中相互连接的所有 主机发送数据包(192.168.1.255,使用 UDP 往这个地址上发送数据,整个局域网所有设备都能收到)
127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1(用于测试程序是否能正常工作)
主机号为 1,比如 192.168.0.1,一般是 “网关 IP”。网关就是类似于入口。
本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输), 对于开发网络通信的程序(即网络编程)而言,常见的开发方式都是本机到本机的网络通信。
路由选择
路由选择就是规划路径,核心就是边走边问。因为每个路由表都会保存一些周围设备的信息(路由表),所以每次有一个 IP 数据包经过路由器就会匹配路由表,看看下一步往哪走。如果有匹配的项,直接按照要求走;如果没有匹配的项,就会提供一个默认路径,即大体方向。每经过一个路由器,TTL-1,减到 0 还没到那么就会丢弃这个包。
相关文章:
网络层协议之 IP 协议
IP 协议格式 4 位版本:此处的取值只有两个,4(IPv4)和 6(IPv6),即指定 IP 协议的版本。 4 位首部长度:描述了 IP 报头多长,IP 报头是变长的,因为报头中的选项部…...
SpringBoot 实现对提供的接口进行 AES (加密,解密)
业务来源: 最近工作中,领导要求给别的项目组的小伙伴提供几个接口,要求对接口的参数进行解密操作,然后对返回的数据进行加密操作。 这时我想到了AES AES 是对称加密算法,优点:加密速度快;缺点…...
ASP.NET学生成绩管理系统
摘要 本系统依据开发要求主要应用于教育系统,完成对日常的教育工作中学生成绩档案的数字化管理。开发本系统可使学院教职员工减轻工作压力,比较系统地对教务、教学上的各项服务和信息进行管理,同时,可以减少劳动力的使用…...
谁考了第k名C++
题目描述 在一次考试中,每个学生的成绩都不相同,现知道了每个学生的学号和成绩,求考第k名学生的学号和成绩。(按成绩从大到小排列) 输入 第一行有两个整数,分别是学生的人数n(1≤n≤100&…...
多线服务器的优势有哪些?
服务器中包含着多线服务器、双线服务器和单线服务器等,其中多线服务器可以支持多个IP地址,今天小编就来带领大家一些来了解一下多线服务器的优势有哪些吧! 多线服务器是在一个互联网数据中心,通过特殊的技术手段将不同的多家网络接…...
vue + element-plus 开发中遇到的问题
1.问题之路由守卫 初写路由守卫,对于next()的理解不是很透彻,就想着都放行,不然看不到效果,结果控制台出现了警告,想着报黄的问题就不是问题,但仔细一看发现他说,如果再生产阶段就会失败&#x…...
使用java远程提交flink任务到yarn集群
使用java远程提交flink任务到yarn集群 背景 由于业务需要,使用命令行的方式提交flink任务比较麻烦,要么将后端任务部署到大数据集群,要么弄一个提交机,感觉都不是很离线。经过一些调研,发现可以实现远程的任务发布。…...
麻了!新增4.1分,CCF-C类,2区毕业神刊,被标记On Hold!
本周投稿推荐 SSCI • 2区社科类,3.0-4.0(社科均可) EI • 计算机工程类(接收广,录用极快) SCI&EI • 4区生物医学类,1.5-2.0(录用率99%) • 1区工程类&#…...
tomcat 的启动流程
tomcat 的启动流程 中 使用的Lifecycle 生命流程 。在这里还使用了设计模式中的模板模式(LifecycleBase 是一个模板类) init()方法 start() 方法 container 的处理...
YOLOv9全网最新改进系列::YOLOv9完美融合双卷积核(DualConv)来构建轻量级深度神经网络,目标检测模型有效涨点神器!!!
YOLOv9全网最新改进系列::YOLOv9完美融合双卷积核(DualConv)来构建轻量级深度神经网络,目标检测模型有效涨点神器!!! YOLOv9原文链接戳这里,原文全文翻译请关注B站Ai学术叫叫首er …...
PCIE协议-2-事务层规范-MEM/IO/CFG request rules
2.2.7 内存、I/O和配置请求规则 以下规则适用于所有内存、I/O和配置请求。每种类型的请求还有特定的额外规则。 所有内存、I/O和配置请求除了常见的头标字段外,还包括以下字段:requester ID[15:0]和Tag[9:0],形成事务ID。Last DW BE[3:0] a…...
jmeter分布式集群压测
目的:通过多台机器同时运行 性能压测 脚本,模拟更好的并发压力 简单点:就是一个人(控制机controler/调度机 master)做一个项目的时候,压力有点大,会导致结果不理想,这时候找几个人&a…...
美国加州正测试ChatGPT等生成式AI,在4大部门应用
5月11日,美联社消息,美国加州政府正在测试ChatGPT等生成式AI,应用在税收和收费管理部、交通部、公共卫生部以及卫生与公众服务部4大部门。 测试时间6个月,为其提供技术支持的一共有5家公司,分别是OpenAI、Anthropic、…...
【Kali Linux工具篇】wpscan的基本介绍与使用
介绍 WPScan是Kali Linux默认自带的一款漏洞扫描工具,它采用Ruby编写,能够扫描WordPress网站中的多种安全漏洞,其中包括主题漏洞、插件漏洞和WordPress本身的漏洞。最新版本WPScan的数据库中包含超过18000种插件漏洞和2600种主题漏洞&#x…...
C#算法之计数排序
算法释义:计数排序是一种非基于比较的排序算法,它不依赖于比较操作来确定元素的顺序,而是通过键值索引直接确定元素的输出位置。计数排序适用于一定范围内的整数排序。为什么说是一定范围之内呢?原因如下:计数排序的复…...
EasyExcel简单使用
EasyExcel简单使用 之前一直用的Apache POI来做数据的导入导出,但听说阿里的EasyExcel也拥有POI的功能的同时,在处理大数据量的导入导出的时候性能上比POI更好,所以就来尝试使用一下 导入Maven依赖: <dependency><…...
Notes客户端中的漫游功能
大家好,才是真的好。 故事,首先是从一个小图标开始的,很多人问我Domino公共通讯录中,个人文档前面有一个绿色小球图标,这是什么意思? 我的答案:这是Notes客户端中的漫游功能。 说到漫游&…...
为什么要内存对齐?
首先,我们介绍一下结构体内存对齐的规则: 1.第一个成员在与结构体偏移量为0的地址处。 2.其他成员变量要对其到某个数字(对齐数)的整数倍的地址处。 注:对齐数编译器默认的一个对齐数与该成员大小的较小值ÿ…...
23、Flink 的 Savepoints 详解
Savepoints 1.什么是 Savepoints Savepoint 是依据 Flink checkpointing 机制所创建的流作业执行状态的镜像,可以使用 Savepoint 进行 Flink 作业的停止、重启或更新。 Savepoint 由两部分组成:稳定存储(例如 HDFS,S3ÿ…...
【Unity】Unity项目转抖音小游戏(二)云数据库和云函数
业务需求,开始接触一下抖音小游戏相关的内容,开发过程中记录一下流程。 抖音云官方文档:https://developer.open-douyin.com/docs/resource/zh-CN/developer/tools/cloud/develop-guide/cloud-function-debug 1.开通抖音云环境 抖音云地址&a…...
Hudi 生产问题排障-乱序Upsert入湖数据丢失
一、背景与问题在大数据流式处理领域,乱序一直是一个无法越过的问题,如何正确处理乱序数据也是流式组件不断努力优化的方向,比如FLink提供的watermark机制(forBoundedOutOfOrderness/allowedLateness/sideOutputLateDataÿ…...
手把手教你用C语言解决Modbus TCP从站多主站连接的3个典型问题(含select使用避坑)
深度解析Modbus TCP从站多主站连接的三大实战难题与优化方案 在工业自动化领域,Modbus TCP协议因其简单可靠的特点被广泛应用于设备间通信。但当从站需要同时处理多个主站(如SCADA系统、HMI人机界面和测试工具)的连接请求时,开发者…...
Ollama+GPT-OSS-20B黄金组合:无需网络,随时可用的智能助手
OllamaGPT-OSS-20B黄金组合:无需网络,随时可用的智能助手 1. 为什么需要本地化AI助手 在当今AI技术快速发展的时代,云端AI服务虽然方便,但也存在诸多限制:网络依赖、隐私担忧、API费用高昂、响应延迟等问题。对于需要…...
DeepSeek-R1-Distill-Llama-8B行业落地:金融研报初稿生成与合规性校验辅助应用实践
DeepSeek-R1-Distill-Llama-8B行业落地:金融研报初稿生成与合规性校验辅助应用实践 1. 引言:金融分析师的新助手 如果你在金融行业工作,每天都要写各种研究报告,那你一定知道这个过程有多耗时耗力。从收集数据、分析趋势&#x…...
5分钟本地部署Asian Beauty Z-Image Turbo:零基础生成东方美学人像写真
5分钟本地部署Asian Beauty Z-Image Turbo:零基础生成东方美学人像写真 在数字内容创作蓬勃发展的今天,高质量人像图像的需求与日俱增。特别是对于东方审美风格的人像写真,传统拍摄方式成本高昂且效率低下。今天,我将带你快速部署…...
蓝桥杯二分算法通关指南:模板+真题+避坑,O(logn)秒杀大数据题
蓝桥杯二分算法通关指南:模板真题避坑,O(logn)秒杀大数据题 文章目录蓝桥杯二分算法通关指南:模板真题避坑,O(logn)秒杀大数据题一、蓝桥杯二分核心题型(精简必背)1. 二分查找(基础必考…...
MySQL后端开发核心知识点
一、存储引擎(只重点 InnoDB)MySQL 5.5 以后默认引擎是 InnoDB,也是现代企业项目唯一使用的引擎。InnoDB 特点:支持 事务支持 行级锁,并发性能好支持 外键(实际开发基本不用)基于 B 树索引结构依…...
大模型微调终极指南:从基础概念到实战技巧
前言 近年来,大语言模型(LLM)的爆发式发展正在深刻改变人工智能的格局。然而,如何将这些通用模型适配到特定领域和任务,成为了开发者面临的核心挑战。本文将系统性地梳理大模型后训练的核心方法,从监督微调…...
深入解析Dify中的RAG内容检索:Rerank模型与权重计算的实战对比
1. RAG内容检索的核心挑战与Rerank的价值 当你用Dify搭建一个智能问答系统时,最头疼的问题往往是:明明数据库里有正确答案,但系统总是返回一堆不相关的文档。这就像在图书馆用关键词搜索书籍,结果管理员给你搬来了整个书架——这时…...
Go语言的缓存策略与实现
Go语言的缓存策略与实现 1. 缓存简介 缓存是一种在计算机系统中用于提高数据访问速度的技术,它通过将频繁访问的数据存储在高速存储介质中,减少对慢速存储介质的访问,从而提高系统的响应速度和吞吐量。 缓存的优势 提高性能:缓存可…...
