当前位置: 首页 > news >正文

Java EE(17)——网络原理——IP数据报结构IP协议解析(简述)

一.IP数据报结构

在这里插入图片描述
(1)版本:指明协议的版本,IPv4就是4,IPv6就是6
(2)首部长度:单位是4字节,表示IP报头的长度范围是20~60字节
(3)8位区分服务:实际上只有4位TOS有效,分别是最小延时,最大吞吐量,最高可靠性,最小成本
(4)总长度:报头+数据部分。IP数据报最大长度为2^16字节,也就是64KB
(5)生存时间:单位是次数,防止数据在网络上无限转发,8个比特位表示IP数据报最多能在网络上转发128次
在这里插入图片描述
由上图可知,从我这里到美国政府官网IP数据报也仅仅转发了18次,所以8位生存时间完全够用
(6)协议:表示在传输层使用什么协议,UDP还是TCP还是其他?
(7)校验和:只针对IP报头进行校验,因为IP载荷部分有UDP/TCP进行校验
(8)源地址:发送方的IP地址
(9)目的地址:接收方的IP地址
(10)可选字段:主要是拓展功能,最大长度是40字节
(11)填充:保证IP报头的长度是4的整数倍

问题一:16位标识,3位标志,13位片偏移分别有什么用?

IP数据报最终是会传递给数据链路层再封装,但是由于物理条件的影响,数据链路层的载荷最大能携带1500(MTU)字节。虽然IP数据报载荷最大能携带64KB的数据,但由于下层的限制,必须在网络层进行拆分,数据到达接收方的时候再组装。而拆分和组装的过程就需要用到标识,标志,片偏移这三个字段
(1)16位标识:唯一标识一个IP数据报。同一个数据报的标识是一样的,便于区分哪些分区属于同一个数据报
(2)3位标志

  1.  第一位:保留位,必须为0(暂时用不到这个保留位,所以先设为0,方便以后使用)
    
  2.  第二位:如果为1,表示该数据报禁止分片。当IP载荷超过MTU时就会丢弃该数据报,并且返回ICMP错误信息给源主机(发送方)
    
  3.  第三位:如果为1,表示该数据报不是最后一个分片,最后一个分片为0
    

(3)13位片偏移: 指示当前分片在原数据报中的位置(以8字节为单位)

二.IP协议解析

2.1地址管理

IP地址是32位比特位,通常用点分十进制表示,比如(192.168.1.1)。IP地址一共有2^32个,大概是43亿个,看似是一个比较庞大的数字。但随着科技的发展,现在的智能家电也需要分配IP地址,这就导致IP地址逐渐不够用了,那么如何解决这一问题,有以下几个策略

2.1.1 动态分配IP地址

只给接入网络的设备分配IP地址,该设备每次接入互联网分配到的IP地址不一定是一样的,这样就避免IP地址一直绑定在某个设备上

2.1.2 NAT机制

将IP地址分为公网IP和私网IP,公网上的IP必须是唯一存在的,但是不同私网中可以存在相同的IP
在这里插入图片描述
基于以上的设定,必须要做出以下限制:
1.公网设备访问公网设备,无限制
2.局域网设备访问局域网设备(同一局域网),也没啥问题
3.局域网设备访问局域网设备(不同局域网),不允许
4.局域网设备访问公网设备,需要将局域网设备的私网IP替换为公网IP
5.公网设备访问局域网设备,不允许主动访问
在这里插入图片描述

2.2网段划分

IP地址由网络号+主机号组成
网络号:用于标识一个特定的网络,确定数据包应该被发送到哪个网络
主机号:用于区分同一网络中的不同设备
网络号的长度取决于IP地址的类型子网掩码

在这里插入图片描述
A类:0.0.0.0到127.255.255.255
B类:128.0.0.0到191.255.255.255
C类:192.0.0.0到223.255.255.255
D类:224.0.0.0到239.255.255.255
E类:240.0.0.0到247.255.255.255
但是按照上述规则来划分网络号和主机号有很大弊端
以B类地址为例,一个IP地址可以容纳2^16(六万多)主机,在现实情况中一个子网很难有拥有这么多主机,导致大量IP地址被浪费掉。面对IP地址本来就不够用的趋势,就有了新的划分方案

子网掩码

格式:也是32位比特位,通常使用点分十进制的形式表示

作用:子网掩码用于划分IP地址的网络部分和主机部分。例如,一个常见的子网掩码11111111.11111111.11111111.00000000(255.255.255.0)表示前24位是网络号,后8位是主机号
通俗来讲,从左到右(从高位到低位),1的个数就是网络号的个数,0的个数就是主机号的个数。将IP地址和子网掩码进行&运算,计算结果就是网络号

特殊的IP地址

(1)将IP地址中的主机号全设置为0,就变成了网络号,表示当前主机,该IP地址**不能分配**给某个主机
(2)将IP地址中的主机号全设置为1,就变成了广播地址。用于在网络中所有设备发送信息
(3)127.*地址用于本机环回测试,通常使用127.0.0.1

2.2路由选择

作用:路由器根据数据包的目的IP地址,选择一条合适的路径将数据包转发到下一个路由器,最终到达目的地
路由表:路由器内部维护的一张表,记录了到达不同网络或主机的路径信息。路由表包含目的地址网络掩码下一跳IP地址输出接口等信息

相关文章:

Java EE(17)——网络原理——IP数据报结构IP协议解析(简述)

一.IP数据报结构 (1)版本:指明协议的版本,IPv4就是4,IPv6就是6 (2)首部长度:单位是4字节,表示IP报头的长度范围是20~60字节 (3)8位区分服务:实际上只有4位TOS有效,分别是最小延时,最…...

Pycharm运行时报“Empty suite”,可能是忽略了这个问题

问题:使用Pycharm运行testcases目录下的.py文件,报“Empty suite”,没有找到测试项。 排查过python解释器、pytest框架安装等等,依然报这个错,依然没找到,最后终端运行: pytest test_demo.py&a…...

Linux快速安装docker和docker-componse步骤

在 CentOS 7 上安装 Docker 和 Docker Compose 的步骤如下: 1. 安装 Docker 1.1. 更新系统 首先,确保你的系统是最新版本: sudo yum update -y1.2. 安装必要的包 安装 yum-utils,这是管理 YUM 源的工具: sudo yu…...

OP2177运算放大器:高性能模拟信号处理的关键元件

在现代电子系统中,模拟信号处理至关重要,运算放大器作为模拟电路的核心部件,其性能优劣直接影响系统的整体表现。OP2177 是一款具有卓越性能的运算放大器,在众多领域有着广泛应用。以下将结合相关资料,对 OP2177 进行全…...

paddle ocr

paddle ocr paddle ocr笔记准备工作referenceto onnx文本检测文本检测文字识别 paddle ocr笔记 准备工作 下载字典ppocr_keys_v1.txt,下标从1开始模型转换 reference paddlepaddle to onnx 下载模型,或者直接使用python跑一下并且把本地模型拿过来…...

通过动态获取项目的上下文路径来确保请求的 URL 兼容两种启动方式(IDEA 启动和 Tomcat 部署)下都能正确解析

背景 因为在不同的启动环境下,获取上下文路径的方式需要有所调整。在 IDEA 中运行时,路径是基于当前页面的 URL(如 index.html),而在 Tomcat 部署时,它是基于项目上下文路径(如 ssm-project&am…...

Spring Boot 整合 ElasticJob 分布式任务调度教程

精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 Spring Boot 整合 ElasticJob 分布式任务调度教程 一、ElasticJob 简介 ElasticJob 是当当网开源的分布式任务调度解决方案,支持: …...

Django项目之订单管理part6(message组件和组合搜索组件)

一.前言 我们前面讲的差不多了,接着上节课讲,今天要来做一个撤单要求,我们可以用ajax请求,但是我这里介绍最后一个知识点,message组件,但是我会把两种方式都讲出来的,讲完这个就开始讲我们最重…...

[MySql] 多表关系, 多表查询

一. 多表关系 1.1 一对多 例如: 员工 - 部门表 (一个部门可以有多个员工) 并且在多的一方增加一个字段关联一的一方的主键. 外键约束: 物理外键 (使用 foreign key 定义外键关联另一张表的主键) 缺点: 影响增删改效率; 仅用于单节点, 不适用与集群; 易引发死锁, 性能低; …...

Open GL ES ->GLSurfaceView在正交投影下的图片旋转、缩放、位移

XML文件 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:o…...

一文详解QT环境搭建:Windows使用CLion配置QT开发环境

在当今的软件开发领域&#xff0c;跨平台应用的需求日益增长&#xff0c;Qt作为一款流行的C图形用户界面库&#xff0c;因其强大的功能和易用性而备受开发者青睐。与此同时&#xff0c;CLion作为一款专为C/C打造的强大IDE&#xff0c;提供了丰富的特性和高效的编码体验。本文将…...

MSTP和链路聚合

MSTP 802.1S --- MSTP --- 多生成树协议 --- 就是在RSTP基础上&#xff0c;再针对链路利用率低问题进行优化&#xff0c;可以和RSTP以及STP向下兼容。 实例 --- Instance --- 可以理解为一个V LAN或者多个VALN的集合。一个交换网络可以针对一个实例创建一棵树&#xff0c;起到…...

每天学一个 Linux 命令(8):ls

大家好,欢迎来到《每天掌握一个Linux命令》系列。在这个系列中,我们将逐步学习并熟练掌握Linux命令,今天,我们要学习的命令是ls。 01 什么是ls命令 在Linux系统中,ls命令是“list”的缩写,其英文全称为“list directory contents”,即“列出目录内容”。该命令非常实用…...

交换机、路由器、VLAN、单臂路由、三层交换、STP

华为模拟安装 1.依次安装wincap 2.wireshark 3.virtual box 4.ensp 一、设置 1.virtual box设置 2.计算机防火墙允许以上程序 3.eNSP设置 路由器&#xff1a;AR2240 交换机&#xff1a;S5700、CE12800 防火墙USG6000V 交换机 一、交换机工作原理 1、回顾 二层交换机…...

算法 | 2024最新算法:斑翠鸟优化算法原理,公式,应用,算法改进研究综述,matlab代码

基于斑翠鸟优化算法的原理、应用及改进研究综述 一、算法原理 斑翠鸟优化算法(Pied Kingfisher Optimizer, PKO)是2024年由Bouaouda等人提出的一种新型仿生智能优化算法,其灵感来源于斑翠鸟的捕食行为与共生关系。算法通过模拟斑翠鸟的栖息悬停、潜水捕鱼及与其他生物的共生…...

六十天Linux从0到项目搭建(第二十二天)(pipe、管道四种场景)

1 关于 pipe 系统调用的解析 int pipe(int pipefd[2]) 是 Unix/Linux 系统中用于创建匿名管道的系统调用。以下是关于管道特点的详细解释&#xff1a; 输出型参数 pipefd[2] 是输出型参数&#xff0c;调用成功后&#xff1a; pipefd[0] 存放管道的读取端文件描述符 pipefd[1…...

数据安全与网络安全——问答复习

目录 1、请简要分析勒索软件攻击的原理,并给出技术防护⽅案。 勒索软件攻击原理: 技术防护⽅案 2、举例数据安全问题 数据泄露 数据篡改 数据丢失 3、如何应对数据安全问题 技术层⾯ 管理层⾯ 4、软件漏洞 产⽣原因&#xff1a; 缓冲区溢出漏洞&#xff1a; 注⼊漏…...

ESP-01模块连接手机热点问题及解决方法

在使用ESP-01模块连接手机热点时&#xff0c;可能会遇到一些问题。本文将详细介绍如何解决这些问题&#xff0c;并分享最终通过将WiFi切换到2.4GHz成功解决问题的经验。 一、问题描述 在尝试使用ESP-01模块连接手机热点时&#xff0c;遇到了连接失败的问题。以下是操作过程中…...

go中锁的入门到进阶使用

Go 并发编程&#xff1a;从入门到精通的锁机制 引言&#xff1a;为什么需要锁&#xff1f; Go 语言以其天生支持并发的特性深受开发者喜爱&#xff0c;但并发带来的问题也不容小觑&#xff0c;比如数据竞争、并发安全等。如果多个 Goroutine 访问同一个变量&#xff0c;没有做…...

JS判断对象是否为空的方法

在 JavaScript 中&#xff0c;判断一个对象是否为空对象&#xff08;即没有自身可枚举属性&#xff09;&#xff0c;可以通过以下方法实现&#xff1a; 方法 1&#xff1a;使用 Object.keys() javascript function isEmptyObject(obj) {// 确保是普通对象&#xff08;排除 n…...

idea导入tomcat的jar

概述 对于老项目&#xff0c;未使用 Maven/Gradle 管理依赖的&#xff0c;在需要编译 Servlet/JSP 代码时&#xff0c;需要手动添加 Tomcat JAR 依赖&#xff08;如 servlet-api.jar&#xff09;方能进行编绎。 步骤&#xff1a; 1、找到 Tomcat 的 JAR 文件 进入 Tomcat 安…...

Linux 下安装和使用 Jupyter Notebook

Jupyter Notebook / Lab 是 Python 开发和数据分析中不可或缺的工具。为了避免环境污染&#xff0c;推荐使用虚拟环境方式安装并启动它。本教程将教你如何&#xff1a; 安装 Python、pip、venv使用虚拟环境安装 Jupyter汉化安装实用插件设置登录密码启动并远程访问编写一个一键…...

【Ubuntu常用命令】

1.将本地服务器文件或文件夹传输到远程服务器 文件 scp /data/a.txt administrator10.60.51.20:/home/administrator/ 文件夹 scp -r /data/ administrator10.60.51.20:/home/administrator/ 2.从远程服务器传输文件到本地服务器 scp administrator10.60.51.20:/data/a.txt /h…...

UR机械臂sim2real推荐包

推荐一个和ur机械臂配套的interface&#xff1a; ur_rtde Universal Robots RTDE C Interface — ur_rtde 1.6.0 documentation 也欢迎大家提供新想法和bug...

HTTP协议深度解析详解

HTTP协议深度解析详解 一、HTTP协议基础架构 1.1 请求响应模型 #mermaid-svg-pAGwQipduFJRm11I {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-pAGwQipduFJRm11I .error-icon{fill:#552222;}#mermaid-svg-pAGwQipd…...

算法学习第十七天:LRU缓存与布隆过滤器

LRU缓存与布隆过滤器 目录 LRU缓存 基本概念实现原理C代码实现 布隆过滤器 基本概念实现原理C代码实现 LRU缓存 基本概念 LRU&#xff08;Least Recently Used&#xff09;&#xff1a;最近最少使用策略&#xff0c;当缓存空间不足时&#xff0c;淘汰最久未被访问的数据。…...

html中img标签直接使用border-radius时会图片进行了遮挡

前言 该问题是我写完项目之后&#xff0c;UI走查发现的问题&#xff0c;虽然我也发现了问题&#xff0c;但是改起来&#xff0c;不好改&#xff0c;就耽搁了。后面UI还是要求要改。一直找不到解决方案&#xff0c;歪打正着通过MDN官网偶然看到的clip-path属性。 需求 一个图…...

【Keepalived】Keepalived-2.3.3明确结束对CentOS 7的支持

2025年3月30日&#xff0c;官方发布了Keepalived的最新版&#xff0c;版本号&#xff1a;2.3.3 而2024年11月3日发布的2.3.2版本&#xff0c;在CentOS 7.9上编译的时候&#xff0c;就出现了报错&#xff0c;但是在Alma Linux 8.10上&#xff0c;则可以成功编译安装&#xff0c…...

Docker学习--容器生命周期管理相关命令--docker pause/unpause 命令

docker pause 命令的作用&#xff1a; 用于暂停一个或多个容器中的所有进程。 语法&#xff1a; docker pause CONTAINER [CONTAINER…]&#xff08;要操作的容器的名称&#xff0c;可以同时操作多个&#xff09;。 实例&#xff1a; ①暂停一个容器及其所有进程&#xff1a;…...

【Zabbix技术系列文章】第④篇——Zabbix 数据可视化

在当今数字化运维时代&#xff0c;面对海量的监控数据&#xff0c;如何从中快速获取有价值的信息至关重要。Zabbix 的数据可视化功能为我们提供了直观、高效的解决方案&#xff0c;它能将复杂的监控数据转化为清晰易懂的图表和仪表盘&#xff0c;助力运维人员迅速发现问题、分析…...

R CSV 文件处理指南

R CSV 文件处理指南 引言 CSV&#xff08;逗号分隔值&#xff09;文件是一种常见的文件格式&#xff0c;它以纯文本形式存储表格数据。在R语言中&#xff0c;CSV文件处理是非常基础且重要的技能。本文将详细介绍如何在R中读取、处理和导出CSV文件&#xff0c;并探讨一些高级技…...

在Git仓库的Readme上增加目录页

一般在编写Readme时想要增加像文章那样的目录&#xff0c;方便快速跳转&#xff0c;但是Markdown语法并没有提供这样的方法&#xff0c;但是可以通过超链接结合锚点的方式来实现&#xff0c;如下图是我之前一个项目里写的Readme&#xff1a; 例如有下面几个Readme内容&#xff…...

[特殊字符]《多商户家政系统技术解析:SpringBoot+MyBatisPlus+UniApp高效实战指南》

&#x1f6e0;️ 引言&#xff1a;多商户家政系统的技术挑战与价值 在数字化时代&#xff0c;家政行业逐渐向线上迁移&#xff0c;从传统的线下预约转向平台化管理。多商户家政系统具备复杂的角色体系&#xff0c;包括&#xff1a; &#x1f6ce;️ 商户端&#xff1a;管理订单…...

请求Header(Request Headers)详解

请求Header&#xff08;Request Headers&#xff09;详解 HTTP请求Header是HTTP请求消息的重要组成部分&#xff0c;用于在客户端和服务器之间传递附加信息。这些信息帮助服务器理解客户端的环境、偏好和请求的具体内容&#xff0c;从而能够返回更合适的响应。以下是对请求Hea…...

深度求索:开源革命下的AI普惠之路

引言&#xff1a;AI领域的破局者 2025年&#xff0c;全球AI领域因一家中国公司的崛起而震动。杭州深度求索&#xff08;DeepSeek&#xff09;推出的V3大模型以6710亿参数、14.8万亿token训练数据量&#xff0c;在数学竞赛、代码生成等专业领域超越多数国际竞品&#xff0c;其每…...

XSS 攻击(详细)

目录 引言 一、XSS 攻击简介 二、XSS 攻击类型 1.反射型 XSS 2.存储型 XSS 3.基于 DOM 的 XSS 4.Self - XSS 三、XSS 攻击技巧 1.基本变形 2.事件处理程序 3.JS 伪协议 4.编码绕过 5.绕过长度限制 6.使用标签 四、XSS 攻击工具与平台 1.XSS 攻击平台 2.BEEF 五…...

使用Redis实现轻量级消息队列

使用消息中间件如RabbitMQ或kafka虽然好&#xff0c;但也给服务器带来很大的内存开销&#xff0c;当系统的业务量&#xff0c;并发量不高时&#xff0c;考虑到服务器和维护成本&#xff0c;可考虑使用Redis实现一个轻量级的消息队列&#xff0c;实现事件监听的效果。下面介绍下…...

13届省赛python A组:10.数的拆分

题目1 数的拆分 给定 T 个正整数 ai&#xff0c;分别问每个 ai 能否表示为 x 1 y 1 ⋅ x 2 y 2 x1^{y1}⋅x2^{y2} x1y1⋅x2y2 的形式&#xff0c;其中 x1,x2 为正整数&#xff0c;y1,y2 为大于等于 2 的正整数。 输入格式 输入第一行包含一个整数 T 表示询问次数。 接下来…...

【Android Studio】下载安装过程(详细)

目录 一、前期准备 JDK下载安装 二、下载安装 下载 安装 启动 一、前期准备 JDK下载安装 详细的安装过程请移步我的另一篇博客jdk17详细安装步骤_jdk17安装教程详细-CSDN博客 cmd打开命令行&#xff0c;输入java -version验证&#xff0c;可以看到此处我安装的是java23。…...

【RAGFlow】ubuntu22部署ragflow(v0.17.2)

按照官方手册部署&#xff1a; https://ragflow.io/docs/v0.17.2/ 部署环境&#xff1a; CPU: 4核memory&#xff1a; 16gGPU: T4(vGPU)Disk: 20g 1. 配置国内docker-ce源 https://mirrors.tuna.tsinghua.edu.cn/help/docker-ce/ 用清华源&#xff0c;要不然下载速度感人 …...

Easysearch 如何短暂维护 Data 节点

之前介绍过如何移除 Data 节点&#xff0c;那么如果只是短暂停止一个 Data 节点进行维护&#xff0c;之后再次加入集群&#xff0c;是否也需要按照移除节点的步骤进行操作呢&#xff1f;我们先梳理下核心原理。 核心原理 我们先看看节点离开集群之后集群是怎样处理的。当节点…...

【cocos creator 3.x】3Dui创建,模型遮挡ui效果

官方文档&#xff1a;https://docs.cocos.com/creator/3.8/manual/zh/ui-system/components/editor/ui-model.html 1、3Dui创建 创建label&#xff0c;默认会添加canvas根节点和2dCamera 将Camera删除&#xff0c;canvas上组建去除cc.Canvas&#xff0c;cc.widget&#xff0…...

UE5学习笔记 FPS游戏制作32 主菜单,暂停游戏,显示鼠标指针

文章目录 一主菜单搭建UI显示主菜单时&#xff0c;暂停游戏&#xff0c;显示鼠标绑定按钮 二 打开主菜单 一主菜单 搭建UI 添加一个MainUi的控件 添加一个返回游戏的按钮和一个退出游戏的按钮 修改一下样式&#xff0c;放中间 显示主菜单时&#xff0c;暂停游戏&#xff0…...

有哪些开源的视频生成模型

1. 阿里巴巴通义万相2.1&#xff08;WanX 2.1&#xff09; 技术架构&#xff1a;基于Diffusion Transformer&#xff08;DiT&#xff09;架构&#xff0c;结合自研的高效变分自编码器&#xff08;VAE&#xff09;和Flow Matching训练方案&#xff0c;支持时空上下文建模。参数…...

基于Spring Boot的家庭理财系统app的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

SQLAlchemy系列教程:事件驱动的数据库交互

在现代Web应用开发中&#xff0c;数据库交互往往需要超越简单的CRUD操作。当用户注册成功后自动发送欢迎邮件&#xff1f;在订单创建时同步库存数据&#xff1f;这些场景都需要监听数据库状态变化并触发相应逻辑。SQLAlchemy的事件系统为此提供了优雅的解决方案。 本文将深入解…...

linux基本命令(2)--进程命令PS

其实吧, 在linux命令下 输入man ps也可以&#xff0c;一行行拖下去也是看到解析的。退出不看的时候记得按q哦 基本介绍 国际惯例介绍下这个命令的用途。 在Linux下ps命令是用于查看系统上运行的进程的最基本的命令之一。它提供了当前进程的同时&#xff0c;如用户ID&#xf…...

android adb 查看设备传感器

Android ADB 查看设备传感器的使用技巧 在Android开发中&#xff0c;了解设备的传感器是非常重要的一步。不论是开发健康应用、游戏&#xff0c;还是任何需要感知用户环境的应用&#xff0c;传感器的使用都离不开对其数据的获取。Android Debug Bridge&#xff08;ADB&#xf…...

Verilog HDL 100道面试题及参考答案

目录 Verilog HDL 的四种基本逻辑值是什么? 关键字 reg 和 wire 的主要区别是什么? 解释阻塞赋值(=)与非阻塞赋值(<=)的区别,并举例说明。 如何声明一个双向端口(inout)? 位拼接操作符是什么?举例说明其用法。 拼接信号和常量 拼接常量和信号 重复拼接 以…...

Java基础-26-多态-认识多态

在Java编程中&#xff0c;多态&#xff08;Polymorphism&#xff09; 是面向对象编程的核心概念之一。通过多态&#xff0c;我们可以编写更加灵活、可扩展的代码。本文将详细介绍什么是多态、如何实现多态&#xff0c;并通过具体的例子来帮助你更好地理解这一重要概念。 一、什…...