网络层IP协议知识大梳理
全是通俗易懂的讲解,如果你本节之前的知识都掌握清楚,那就速速来看我的IP协议笔记吧~
自己写自己的八股!让未来的自己看懂! (全文手敲,受益良多)
网路基础3
网路层
TCP并没有把数据发到网路里面,只是提供了可靠性策略。而IP协议的本质工作才是,提供一种能力,将数据跨网路从A主机送到B主机!用户需要的是:提供一种能力,将数据可靠地跨网路从A主机送到B主机。所以TCP提供策略,IP提供能力!
1.前置知识
我们要传输数据,前提要对所有的主机进行标识,源IP和目的IP来标识源主机和目的
主机。IP地址=目标网路+目标主机。从A主机到B主机要经过许多路由器转发,根据IP地址先到达目标网路,然后再交给目标主机。构建网路的时候,为我们将来高速定位一台主机提供基础保证!!
2.IP协议的报头
宽度为0~31,4个字节,标准长度为20个字节。与TCP类似。
如何理解IP报头呢?本质就是结构体,填字段
问题1:报头和载荷如何分离?
报头标准长度有20字节,数据包括有http的报头,TCP的报头和用户数据,通过固定报头+自描述字段(4位首部长度(如果超过20字节就是选项的了),总长度(总长度-4位首部长度=数据))。 
TCP协议段格式:

TCP协议也有4位首部长度
都代表着:如果该位置的值是x,那么x*4就是真实报头。4位首部长度范围在【0000,1111】即0到15,因为至少有20字节,所以在【5,15】,所以真实报头大小为【20,60】
IP地址有2^32个,对于IP地址不足,有NAT,IPv6。
IP有自己总长度,而TCP没有。说明UDP,TCP最后都要把数据交给IP层,字节流服务也好,面向数据报也罢,将来在IP层发的都是数据报。所以TCP的字节流的概念,是TCP提供给应用层,应用层所关注到的概念。
8位生存时间:当把IP报文转发出去(路由器之间的转发)的时候,因为有一些原因(网络有bug之类),导致IP报文被一直转发
问题2:如何将有效载荷交付给上层?
答:8位协议:我们要把IP的有效载荷交给上层的哪个协议(TCP/UDP)
16位首部校验和:IP要对首部做校验,校验失败的首部直接丢弃,由发送方TCP直接传送。校验成功才可以向上交付
结论:socket: IP + port。端口号是给TCP去用的,IP 是给IP层去用的。 有目的IP地址和目的端口号,就可以向目标位置发送报文了。用源端口和目的端口填充TCP报头,用源IP地址和目的IP地址填充IP报头。
为什么要把点分十进制IP转为4字节IP?
因为IP报头的源IP地址和目的IP地址是4个字节,在真正路由的时候,根据目的IP地址来进行路径选择。在通信的时候,只工作在网络层,没有传输层 
网段划分(重要)


网络号和主机号很好理解
1. 路由器本质上也是特定一个子网的主机,也要配置IP地址
2. 路由器可以实现跨网段传发,至少要连接2个子网,相当于同时在2个子网。所以路由器一定要配置多个IP.(认为路由器有多张网卡就行了)
3. 路由器一般是一个子网中的第一个设备,一般它的IP地址都是:网络号. 1
4. 路由器的功能,IP报文的转发,但不仅仅如此~,还可以构建子网(局域网)
一开始因为ip地址只有32位,大概42亿多,是不够用的。
![]()
,分类划分法这种方法会存在IP地址严重浪费的问题。
针对这种情况提出了新的划分方案,称为CIDR(Classless Interdomain Routing):

子网掩码的特点:
子网掩码左侧为1,右侧为0.将IP地址与网络掩码 & 就可以得到网络号。因此我们可以提供调整子网掩码1的个数来调整网络IP中主机号的多少~
子网掩码在路由器里面配置的。

140.252.20.0 为网络号,140.252.20.255 为广播。这两个主机不用

子网掩码可以对IP 32位任意划分。 
子网掩码的书写: 
特殊的IP地址

IP地址的数量限制


动态内存分配IP地址,用的时候给你,不用的时候释放给别人用。相当于共享机制。
真正变革的技术IPv6:128位,即:2^128个IP地址
私有IP地址和公网IP地址


IP地址被划分为:公网IP 和 私有IP。
理解运营商和全球网络理解
我们是怎么上网的?
运营商的工作人员先让光纤入户,然后要有2个设备,一个是调制解调器(猫),第二个是家用路由器。路由器有俩套账号和密码,一套是交钱提供上网服务的(给运营商);一套是给路由器加密的(给自己),防止别人蹭网。国家 大力 发展互联网,加大了网络基础设施建设。之前流量费非常贵,现在流量费非常便宜了。目的是让更多的人入网,
全球互联网:
IP地址是一份很大的资源,从大区域进入小区域,最后到达目的主机。我们的网络被精心设计过的。
公网和私网有什么关系的?
当目的IP不在当前网时要通过路由器进行寻找,直到找到目的主机。然后该主机会将源IP地址和目的IP地址转换,导致原来的私有IP变成了目的IP地址。因为私有IP不能出现在公网上的,所以该数据就回不来了!!!
我们应该怎么解决这样的问题呢?
所以当IP地址要经历路由器的时候,将源IP地址替换成每一个路由器的WAN口IP,即报文的替换。所以私有IP地址不断被替换的过程,我们叫做NAT技术(主要解决IP地址不足的问题)
我们为什么要使用私有IP而不直接使用公用IP呢?
原因是到达底层的区域的时候,IP地址已经严重不足了,不能够满足如此多的数量。
所以公网IP用在庞大的路由器里面,例如:国家,省份,城市。而私网IP地址用在小区域里面,例如:西安内部的网络 全都用私网。
所以:互联网=公网+私网~

路由器可以构建子网,路由器有Lan口IP和WAN口IP。家用路由器理解上和运营商的路由器性质是类似的。
为什么私网有那么多的类型呢? 
如果子网覆盖得比较大,我们可以用第一种:10.*的可以有更多地址,其次是第二种,第三种。根据不同的情况选择不同的类型。
我们可以通过IP地址前几位,区分是在哪个区域,通过前面的数字就可以找到该IP的具体区域了。
大公司的IP是这样的(私有IP+公网IP)吗?
也是类似的
为什么要这样呢?原因是IP地址不足
路由
本地的主机也可以工作在网络层,也有掩码。查路由表的方式:拿着目标主机的IP & 掩码,如果结果等于目标网络,就通过该接口发出去。如果不等于就找下一个 
查路由表的结果:
1. 给你具体的下一跳
2. 路由器不清楚是去哪一跳,但是传入默认路由(告诉你别的可能知道的)一般是同网段的另一台路由器,所以目标IP不在目前内网中。默认路由是出口路由器,即通向另一个更大的网段。
3. 到达入口路由器
结论:因为IP=目标网络+目标主机,我们在进行转发的时候,我们先到达目标网络。

![]()
我们转发的目的地址为192.168.56.3,先拿其与掩码&,得到192.168.56.0,与第一行地址作对比,不同下一个。发现与第二个相同,就会跳向0 eth1.所以IP路由的过程,就是逐个查路由表的过程。
我们再来看看IP协议的报文
实际上,在一台主机中,报文并没有通过网络层直接发出去,而是继续交给了下一层协议(数据链路层)
,数据链路层(属于网卡的驱动层),不能一次发送过大的报文!所以要求上层不能给我交付过大的报文!这就是为什么TCP要发一个一个的报文,而不是全部都发过去。假如IP报文就是很大,就要求IP成进行分片转发。
IP不光要考虑分片,未来也要组装。
这行报头维护 IP的分片和组装字段。
16位标识:
不同的IP报文有不同的标识
3位标识(更多分片):
13位片偏移:目的要把之前发的片组装在一起
如何组装呢?
1. 确保将分片全部都聚在一起(相同的标识)
2. 通过片偏移进行排序(完成排序)
前置问题:你怎么知道一个IP是被分片了呢?
如果没有分片,片偏移=0,更多分片=0。当我们发现 片偏移!=0 或 更多分片==1 (就分片一个)就说明分片了!
如果分片丢失了呢?
1. 丢第一个 收到的众多被分片的报文中,没有一个片偏移为0,就说明是丢第一个
2. 丢中间 让报文的长度与报文的片偏移做比较,如果差了超过一个报文的长度就说明丢中间了
3. 丢最后一个 所有的报文中,在3位标记的第三个都标记为1,就说明是最后一个
我们不建议分片!可能增加丢包概率,在IP中如果任何分片丢失,都要进行重发。
分片过程用数据举例:
假如报文有3000字节,报头有20字节。我们要对它进行分片,前提:每个分片必须要带报头,因为报头有标识,更多分片,片偏移的字段,少了这些无法组装。我们先分1500,然后把20字节的报头和后面的1480数据组成新的1500字节的分片,最后还剩20字节,再和20字节结合,形成40字节的分片。
,然后再进行组装
请你帮我解释一下:
一个http请求,从服务器发出到你拿到响应的整个过程
从应用层request和response 谈,request和response都是数据要交给TCP,交给TCP就会面临可靠性,拥塞控制,流量控制,面向连接,丢包重传的问题,如果再想谈,TCP报文向下传到IP,又会涉及路由问题,分片问题。细节谈的越多越说明你越厉害~
下篇文章我将更新——数据链路层~期待你的关注👉【A charmer】

相关文章:
网络层IP协议知识大梳理
全是通俗易懂的讲解,如果你本节之前的知识都掌握清楚,那就速速来看我的IP协议笔记吧~ 自己写自己的八股!让未来的自己看懂! (全文手敲,受益良多) 网路基础3 网路层 TCP并没有把数据发到网路…...
【Web前端技术】第二节—HTML标签(上)
hello!好久不见—— 做出一个属于自己的网站! 云边有个稻草人-个人主页 Web前端技术—本篇文章所属专栏 目录 一、HTML 语法规范 1.1 基本语法概述 1.2 标签关系 二、HTML 基本结构标签 2.1 第一个 HTML 网页 2.2 基本结构标签总结 三、网页开发…...
1.Axum 与 Tokio:异步编程的完美结合
摘要 深入解析 Axum 核心架构与 Tokio 异步运行时的集成,掌握关键原理与实践技巧。 一、引言 在当今的软件开发领域,高并发和高性能是衡量一个系统优劣的重要指标。对于 Web 服务器而言,能够高效地处理大量并发请求是至关重要的。Rust 语言…...
08软件测试需求分析案例-删除用户
删除用户是后台管理菜单的一个功能模块,只有admin才有删除用户的权限。不可删除admin。 1.1 通读文档 通读需求规格说明书是提取信息,提出问题,输出具有逻辑、规则、流程的业务步骤。 信息:此功能应为用户提供确认删除的功能。…...
SDL基础
SDL SDL(Simple DirectMedia Layer)是一个开源的跨平台多媒体开发库,主要用于开发需要图形、音频和输入设备支持的应用程序。它使用C语言编写,提供了简单易用的API,**能够帮助开发者快速实现跨平台的多媒体功能。**SD…...
十三种通信接口芯片——《器件手册--通信接口芯片》
目录 通信接口芯片 简述 基本功能 常见类型 应用场景 详尽阐述 1 RS485/RS422芯片 1. RS485和RS422标准 2. 芯片功能 3. 典型芯片及特点 4. 应用场景 5. 设计注意事项 6. 选型建议 2 RS232芯片 1. RS232标准 2. 芯片功能 3. 典型芯片及特点 4. 应用场景 5. 设计注意事项 6…...
反转一个字符串
用数组栈实现 void Reverse(char *C, int len) {top -1;for(int i 0; i < len; i){push(C[i]);}for(int i 0; i < len; i){C[i] Top();pop();} } 全部函数 #include <stdio.h> #include <stdlib.h> #include <string.h>#define MAX_SIZE 101int …...
从GPT到Gemini 大模型进化史
从GPT到Gemini:大模型进化史 在过去的几年里,人工智能领域经历了翻天覆地的变化,其中最引人注目的莫过于大规模语言模型的发展。从最初的GPT系列到最近的Gemini,这些模型不仅在技术上取得了重大突破,还在实际应用中展…...
【限流算法】计数器、漏桶、令牌桶算法
1 计数器 使用计数器实现限流,可限制在指定时间间隔内请求数小于阈值的情况,但存在临界问题。如图1-17所示,假设每分钟系统限流500个请求,在XX:00:59时刻系统接收到500个请求,在XX:01:00时刻系统又接收到500个请求&am…...
秘密任务 2.0:如何利用 WebSockets + DTOs 设计实时操作
在之前的文章中,我们探讨了为什么 DTO 是提升 API 效率和安全性的秘密武器。现在,我们进入了一个全新的场景——我们将深入探讨如何通过 WebSockets DTOs 实现实时操作! Agent X 正在进行一项高风险的卧底任务。突然,总部更新了…...
RAII 技术详解
1. 核心概念 定义:RAII(Resource Acquisition Is Initialization,资源获取即初始化)是 C 中通过对象生命周期管理资源的核心机制,核心思想是将资源的获取与对象构造绑定、资源释放与对象析构绑定,确…...
Windows快速切换屏幕/桌面
windows自带的切屏 需要winctrl 小键盘左右键 但是! Windows使用还是键盘加鼠标舒服! 教程 安装autohotkey 代码 ~LWin & LButton::{SendInput "^#{Left}" ; 发送 Win Ctrl Left (切换到左侧虚拟桌面) } ; 使用花括号包裹命令&a…...
SpringAI+DeepSeek大模型应用开发——3 SpringAI简介
SpringAI整合了全球(主要是国外)的大多数大模型,而且对于大模型开发的三种技术架构都有比较好的封装和支持,开发起来非常方便; 不同的模型能够接收的输入类型、输出类型不一定相同。SpringAI根据模型的输入和输出类型…...
使用 Function 来编写策略模式:优雅而高效的设计模式实践
引言:为什么选择策略模式? 策略模式(Strategy Pattern)是行为设计模式中的经典之一,它允许我们定义一系列的算法或操作,并使得它们可以互换使用。策略模式的关键思想是将算法的实现与使用它们的上下文分离…...
Java字符串处理
Java字符串处理全解析:String、StringBuilder与StringBuffer 一、String类基础 1. String的本质 不可变对象:Java中的String对象一旦创建就不能修改底层实现:基于private final char value[]字符数组字符串池:JVM维护的特殊存储…...
JS实现RSA加密
目录 目标 环境 实现RSA加解密 计算RSA加密允许的最大字节长度 目标 使用JS实现RSA加密解密。计算RSA加密允许的最大字节长度。 环境 node-rsa 实现RSA加解密 const NodeRSA require(node-rsa);function getKey() {const keyLength512// 创建 RSA 密钥对const key new …...
MySQL GTID集合运算函数总结
MySQL GTID 有一些运算函数可以帮助我们在运维工作中提高运维效率。 1 GTID内置函数 MySQL 包含GTID_SUBSET、GTID_SUBTRACT、WAIT_FOR_EXECUTED_GTID_SET、WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS 4个内置函数,用于GTID集合的基本运算。 1.1 GTID_SUBSET(set1,set2) …...
从“链主”到“全链”:供应链数字化转型的底层逻辑
1. 制造业与供应链数字化转型的必然性 1.1. 核心概念与战略重要性 制造业的数字化转型,是利用新一代数字技术(如工业互联网、人工智能、大数据、云计算、边缘计算等)对制造业的整体价值链进行根本性重塑的过程。这不仅涉及技术的应用&#…...
学习笔记十五——rust柯里化,看不懂 `fn add(x) -> impl Fn(y)` 的同学点进来!
🧠 Rust 柯里化从零讲透:看不懂 fn add(x) -> impl Fn(y) 的同学点进来! 🍔 一、什么是柯里化?先用一个超好懂的生活比喻 假设你在点一个汉堡: 你说:我要点一个鸡腿汉堡! 店员…...
定制化突围:遨游防爆手机的差异化竞争策略
在石油、化工、矿山等危险作业场景中,随着工业智能化与安全生产需求的升级,行业竞争逐渐从单一产品性能的比拼转向场景化解决方案的深度较量。遨游通讯以九重防爆标准为技术底座,融合多模稳控系统与全景前瞻架构,开辟出"千行…...
【Java学习笔记】进制与进制转换
进制与进制转换 一、进制介绍 二进制:0、1,满 2 进 1,以 0b 或 0B 开头。 十进制:0-9,满 10 进 1。 八进制:0-7,满 8 进 1,以数字 0 开头表示。 十六进制:0-9 及 A(10…...
士兵乱斗(贪心)
问题 B: 士兵乱斗 - USCOJ...
【C++面向对象】封装(下):探索C++运算符重载设计精髓
🔥个人主页 🔥 😈所属专栏😈 每文一诗 💪🏼 年年岁岁花相似,岁岁年年人不同 —— 唐/刘希夷《代悲白头翁》 译文:年年岁岁繁花依旧,岁岁年年看花之人却不相同 目录 C运…...
JVM初探——走进类加载机制|三大特性 | 打破双亲委派SPI机制详解
目录 JVM是什么? 类加载机制 Class装载到JVM的过程 装载(load)——查找和导入class文件 链接(link)——验证、准备、解析 验证(verify)——保证加载类的正确性 准备(Prepare&…...
[图论]Kruskal
Kruskal 本质:贪心,对边进行操作。存储结构:边集数组。适用对象:可为负权图,可求最大生成树。核心思想:最短的边一定在最小生成树(MST)上,对最短的边进行贪心。算法流程:对全体边集…...
UML-饮料自助销售系统(无法找零)序列图
一、题目: 在饮料自动销售系统中,顾客选择想要的饮料。系统提示需要投入的金额,顾客从机器的前端钱币口投入钱币,钱币到达钱币记录仪,记录仪更新自己的选择。正常时记录仪通知分配器分发饮料到机器前端,但可…...
Nginx Http配置整理
一、nginx 配置参数: server {#SSL 默认访问端口号为 443listen 443 ssl;#请填写绑定证书的域名server_name cloud.tencent.com; #请填写证书文件的相对路径或绝对路径ssl_certificate cloud.tencent.com_bundle.crt; #请填写私钥文件的相对路径或绝对路径ssl_cer…...
爬虫利器SpiderTools谷歌插件教程v1.0.0!!!web端JavaScript环境检测!!!
SpiderTools谷歌插件教程v1.0.0 一、SpiderTools简介二、下载通道三、插件介绍四、插件使用五、工具函数使用 一、SpiderTools简介 SpiderTools主要用于检测和监控网页的JavaScript运行环境。该插件可以帮助开发者更好地查看网页运行环境,特别是在处理复杂的前端环…...
计算机视觉算法实战——基于YOLOv8的农田智能虫情测报灯害虫种类识别系统开发指南
✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ 一、智能虫情监测领域概述 1.1 农业虫害防治现状 全球每年因虫害造成的粮食损失达20%-40%,我…...
14-算法打卡-哈希表-基本概念-第十四天
1 基本概念 1.1 哈希表 百度百科解释: 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快…...

