「网络原理」IP 协议
🎇个人主页:Ice_Sugar_7
🎇所属专栏:计网
🎇欢迎点赞收藏加关注哦!
IP 协议
- 🍉报头结构
- 🍉地址管理
- 🍌动态分配 IP 地址
- 🍌NAT 机制(网络地址映射)
- 🍌IPv6
- 路由选择
🍉报头结构
TCP/IP 协议族是整个网络体系中最核心的协议,类似于 TCP,IP 所包含的内容也很复杂
IP 协议主要完成两方面的工作
- 地址管理:使用一套地址体系来描述互联网上每个设备所处的位置
- 路由选择:为一个数据包规划如何从网络中某个地址传输到另一个地址
先来认识一下 IP 协议报头

“16 位总长度” 描述了一个 IP 数据报的长度(包括报头和载荷),虽然 IP 自身有长度限制,但是 IP 也提供了拆包和组包这样的操作,所以载荷很大也没关系,因为在 IP 这一层会自动拆成多个 IP 数据报,每个数据报携带一部分载荷
拆包后该如何组包呢?这就涉及到下面三个属性


🍉地址管理
设定 IP 地址的目的就是为了区分网络上不同的设备。但是 IP 地址本质是一个 32 位整数,由于网络设备越来越多,IP 地址不够用就成了上世纪 90 年代一个非常严峻的问题
对于这个问题,有三种解决方案
🍌动态分配 IP 地址
因为全世界的设备不是同时上网,所以就只给正在上网的设备分配一个 IP 地址就 ok 了。不过这并没有从根本解决问题
🍌NAT 机制(网络地址映射)
IP 地址分为两类
- 私网 IP / 局域网 IP
形如 10.,172.16-172.31.,192.168.* 的地址都是私网 IP - 公网 IP / 广域网 IP
不是局域网的 IP 就是公网 IP
公网上的设备对应的公网 IP 都必须是唯一的;但是私网上 / 局域网上的设备,它们使用私网 IP,只要保证在当前局域网内部的 IP 不重复就 ok 了,不同局域网之间的 IP 是允许重复的
这个设定就会带来一些限制:
- 公网设备可以直接访问其他公网设备
- 同一局域网中的不同设备之间可以相互访问
- 不同局域网中的设备之间不能访问
- 局域网设备如果要访问公网设备,那就需要先对局域网 IP 进行转换
- 公网设备不能主动访问局域网设备
这里第四点需要单独拎出来说一下
为了方便解释,这里就只考虑主机经过一个路由器之后就可以把数据转入公网,最终到达服务器,如下图:

所以发送数据报的流程如下:

上述的替换过程,本质上是让一个公网 IP 能够对应到多个设备,从而节省 IP 地址
路由器在 NAT 的时候会把这次通信的相关信息记录下来,比如源 IP、目的 IP。
如果局域网各个设备访问的服务器互不相同,那么路由器就可以通过服务器 IP 来区分是哪个设备,只需通过查表就可以把目的 IP 还原为之前的局域网 IP
如果访问的是同个服务器,可以通过端口号来区分,如下图,目的 IP 都是 5.6.7.8:

端口号可以用来区分同一主机的不同进程,也可以区分不同主机的不同进程,因为客户端的端口号是系统随机分配的,两台主机之间的端口大概率不同。路由器收到响应之后就可以查询传输层中的目的端口,看这里的端口是 2000 还是 3000,从而确定要把响应转发给哪个客户端
不过也有巧合,比如局域网中两台设备的端口恰好相同,那么此时路由器就会对端口号进行映射:

比如对于第一个客户端:

🍌IPv6
IPv4 使用 4 个字节表示 IP 地址,取值范围为 0 - 2^32;而 IPv6 使用 16 个字节表示,范围为 0 - 2^128。通过增加 IP 地址的个数,从根本上解决问题。但是 IPv6 的报头结构和 IPv4 不兼容,引入 IPv6 就意味着当前的网络设备(路由器等)就需要更换为支持 IPv6 的设备
路由选择
路由选择就是路线规划,但是由于网络结构很复杂,每个路由器都无法掌握全局的信息,只了解一部分局部信息,因此路由器规划出来的路线,只是一个局部的最优解(听起来类似贪心)
每个路由器对网络环境(与它相邻的设备情况)有一定的了解,这样它就可以根据数据报中的目的 IP,告诉数据报下一步应该往哪个方向走
其中的原理为:路由器内部有一个数据结构——路由表,它记录目的 IP 的网段和对应的网络接口(就是从路由器哪个口出),但由于路由器只了解局部的情况,所以数据报的目的 IP 在路由表中很可能不存在,此时路由表中的特殊表项(又称下一跳)就发挥了作用,它指向一个默认的网络接口,这个接口通常指向更上层的路由器
相关文章:
「网络原理」IP 协议
🎇个人主页:Ice_Sugar_7 🎇所属专栏:计网 🎇欢迎点赞收藏加关注哦! IP 协议 🍉报头结构🍉地址管理🍌动态分配 IP 地址🍌NAT 机制(网络地址映射&am…...
电商平台生活用品销售数据分析与应用
摘 要 在当前互联网飞速发展的时代,计算机应用给我们的工作生活带来了极大的便利。如今我们的生活离不开电商平台,其随之而来的是各种各样的销售数据与消费者信息,这些数据和信息的分析应用成为了当前互联网领域研究的重要部分。 本论文以基…...
FastAdmin数据库设计规范
FastAdmin数据库设计规范,官方文档上也有,仅仅是为了我自己做一次笔记增加记忆强度 表名和字段名全小写,只允许出现a-z和_这几种字符,且不能有拼音,只能为英文单词存储引擎统一使用innodb引擎字符集统一使用utf8mb4,排序规则使用…...
基于MATLAB仿真LFM线性调频信号
基于MATLAB仿真LFM线性调频信号 目录 前言 一、LFM信号简介 二、LFM信号基本原理 三、LFM信号仿真 四、代码 总结 前言 仿真中的接收信号,有时为了简单会直接用一个正弦波代替,但实际中接收到的信号极少是点频信号,一般都是PSK信号、OF…...
互联网的盈利模式
1. 广告收入 展示广告:通过在网站或应用上展示横幅广告、视频广告等,按点击次数(CPC)或展示次数(CPM)收费。搜索广告:通过搜索引擎上的关键词竞价广告,按点击次数收费。社交媒体广告…...
什么是距离选通型水下三维激光扫描仪?(下)
距离选通激光水下成像的发展 距离选通激光成像技术始于上世纪60年代,受制于高性能脉冲激光器和选通成像器件发展的制约,激光距离选通成像技术在随后的二十年发展缓慢,直到20世纪90年代,随着硬件技术的不断成熟,该技术…...
计算机网络(谢希仁第六版)| 课后习题与答案 | 物理层 | 题目知识点详细分析
计算机网络(谢希仁第六版)课后习题与答案 物理层 博客只对老师给的重点进行整理,完整的课后习题答案见Gitee下载:《计算机网络教程(第6版)(微课版)》习题答案 2-5 请画出数据流1 0 1…...
安卓安装linux + .net环境
安装Termux 到下面地址获取apk安装包 https://github.com/termux/termux-app 安装ssh ~ $ pkg install openssl ~ $ pkg install openssh查看用户名 ~ $ whoami ssh u0_a390修改当前用户密码 passwd 启动ssh sshd 安装 proot-distro pkg install proot-distro 列出能装的lin…...
ES6 新增Set 和 Map 两种数据结构
ES6 新增了 Set 和 Map 这两种数据结构,它们为 JavaScript 提供了更强大和灵活的数据处理能力。下面详细介绍一下 Set 和 Map 的特性和用法: Set Set 是一种类似于数组的数据结构,但是成员的值都是唯一的,没有重复的值。 特性&…...
【学一点儿前端】单页面点击前进或后退按钮导致的内存泄露问题(history.listen监听器清除)
今天测试分配了一个比较奇怪的问题,在单页面应用中,反复点击“上一步”和“下一步”按钮时,界面表现出逐渐变得卡顿。为分析这一问题,我用Chrome的性能监控工具进行了浏览器性能录制。结果显示,每次点击“上一步”按钮…...
vue跳转页面 如果登录了直接跳转 没有登录登录完以后直接跳转,使用vuex管理登录状态
在Vue.js中,如果你需要在用户登录后重定向到他们原本想要访问的页面,你可以使用Vue Router的beforeEach守卫来实现这个功能。以下是实现这一需求的步骤: 存储目标路由:在用户被重定向到登录页面之前,存储他们想要访问的…...
渗透测试-若依框架的杀猪交易所系统管理后台
前言 这次是带着摸鱼的情况下简单的写一篇文章,由于我喜欢探究黑灰产业,所以偶尔机遇下找到了一个加密H币的交易所S猪盘,我记得印象是上年的时候就打过这一个同样的站,然后我是通过指纹查找其它的一些站,那个站已经关…...
【免费】中国电子学会2024年03月份青少年软件编程Python等级考试试卷一级真题(含答案)
2024-03 Python一级真题 分数:100 题数:37 测试时长:60min 一、单选题(共25题,共50分) 1. 下列哪个命令,可以将2024转换成2024 呢?( A)(2分) A.str(2024) B.int(2024) C.fl…...
深入了解RTMP推流技术:视频汇聚EasyCVR低延迟与高稳定性分析
RTMP(Real Time Messaging Protocol)视频推流技术,作为音视频传输领域的关键技术之一,已经在直播、视频会议、在线教育等多个场景中得到了广泛应用。RTMP以其独特的优势,为实时音视频传输提供了高效、稳定的解决方案。…...
containerd手动配置容器网络
containerd手动配置容器网络 机器详情nerdctl启动一个不带网络的容器获取容器ID、PID与network namespace路径准备bridge插件的执行配置文件通过下面的命令调用bridge插件准备tuning插件文件执行下面的命令调用tuning插件准备portmap插件文件执行下面的命令调用portmap插件删除…...
数据迁移到 Django 模型表:详尽指南
数据迁移是许多应用程序开发过程中必不可少的一部分。在这篇文章中,我们将详细分析和总结如何通过一个定制的 Django 管理命令,将数据从 MySQL 数据库迁移到 Django 模型表中。这种方法可以确保数据在多个数据库之间有效且安全地迁移,同时避免…...
代码随想三刷二叉树篇4
代码随想三刷二叉树篇4 617. 合并二叉树题目代码 700. 二叉搜索树中的搜索题目代码 98. 验证二叉搜索树题目代码 530. 二叉搜索树的最小绝对差题目代码 501. 二叉搜索树中的众数题目代码 236. 二叉树的最近公共祖先题目代码 617. 合并二叉树 题目 链接 代码 /*** Definitio…...
『大模型笔记』如何让小型语言模型发挥作用!
如何让小型语言模型发挥作用! 文章目录 一. 如何让小型语言模型发挥作用!不可能的可能性小模型的潜力创新方法与突破实践与验证过滤系统与数据质量小模型的逐步改进信息理论蒸馏方法(新工作InfoSum)总结与展望Infini-Gram与N-gram模型的新时代后缀数组与高速计算二. 参考文献…...
jnp.diag
jnp.diag 是 JAX 库中用于创建对角矩阵或提取对角线元素的函数。具体功能取决于输入的形状: 当输入是一维数组时,jnp.diag 创建一个以该数组为对角线元素的对角矩阵。当输入是二维数组时,jnp.diag 提取并返回对角线元素。 函数签名 jnp.di…...
bert文本分类微调笔记
Bert实现文本分类微调Demo import random from collections import namedtuple 有四种文本需要做分类,请使用bert处理这个分类问题 # 使用namedtuple定义一个类别(Category),包含两个字段:名称(name)和样例(samples) Category namedtuple(Ca…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...
【C++】纯虚函数类外可以写实现吗?
1. 答案 先说答案,可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...
【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?
FTP(File Transfer Protocol)本身是一个基于 TCP 的协议,理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况,主要原因包括: ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...
