防火墙有关iptables的知识点
基本概念
什么是防火墙
在计算中,防火墙是基于预定安全规则来监视和控制传入和传出网络流量的网络安全系统。该计算机流入流出的所有网络通信均要经过此防火墙。防火墙对流经它的网络通信进行扫描,这样能够过滤掉一些攻击,以免其在目标计算机上被执行。防火墙还可以关闭不使用的端口。而且它还能禁止特定端口的流出通信,封锁特洛伊木马。最后,它可以禁止来自特殊站点的访问,从而防止来自不明入侵者的所有通信
防火墙分为硬件防火墙和软件防火墙,他们的优缺点
**硬件防火墙:**拥有经过特别设计的硬件及芯片,性能高、成本高(当然硬件防火墙也是有软件的,只不过有部分功能由硬件实现,所以硬件防火墙其实是硬件+软件的方式);
**软件防火墙:**应用软件处理逻辑运行于通用硬件平台之上的防火墙,性能比硬件防火墙低、成本低。
netfilter和iptables的关系
iptables中的五链四表
链的概念
iptables开启后,数据报文从进入服务器到出来会经过5道关卡,分别为prerouting(路游前),input(输入),output(输出),forward(转发),postrouting(路由后)
每一道关卡中有着一条条规则,数据报文必须按顺序一个一个匹配这些规则,这些规则串起来就像一条链,所以我们把这些关卡叫做“链”
INPUT链:当接收到防火墙本机地址的数据包(入站)时,应用此链中的规则;
OUTPUT链:当防火墙本机向外发送数据包(出站)时,应用此链中的规则;
FORWARD链:当接收到需要通过防火墙发送给其他地址的数据包(转发)时,应用此链中的规则;
PREROUTING链:(互联网进入局域网)在对数据包作路由选择之前,应用此链中的规则,如DNAT;
POSTROUTING链:(局域网出互联网)在对数据包作路由选择之后,应用此链中的规则,如SNAT。
其中中INPUT、OUTPUT链更多的应用在“主机防火墙”中,即主要针对服务器本机进出数据的安全控制;而FORWARD、PREROUTING、POSTROUTING链更多的应用在“网络防火墙”中,特别是防火墙服务器作为网关使用时的情况。
表的概念(主要熟记前两张表)
虽然每一条链上有多条规则,但有些规则的作用(功能)很相似,多条具有相同功能的规则合在一起就组成了一个“表”,iptables提供了四种“表”:
**filter表:主要用于对数据包进行过滤,根据具体的规则决定是否放行该数据包(如DROP、ACCEPT、REJECT、LOG),所谓的防火墙其实基本上是指这张表上的过滤规则,对应内核模块iptables_filter;
**nat表:network address translation,网络地址转换功能,主要用于修改数据包的IP地址、端口号等信息(网络地址转换,如SNAT、DNAT、MASQUERADE、REDIRECT)。属于一个流的包(因为包的大小限制导致数据可能会被分成多个数据包)只会经过这个表一次,如果第一个包被允许做NAT或Masqueraded,那么余下的包都会自动地被做相同的操作,也就是说,余下的包不会再通过这个表。对应内核模块iptables_nat;
**mangle表:拆解报文,做出修改,并重新封装,主要用于修改数据包的TOS(Type Of Service,服务类型)、TTL(Time To Live,生存周期)指以及为数据包设置Mark标记,以实现Qos(Quality Of Service,服务质量)调整以及策略路由等应用,由于需要相应的路由设备支持,因此应用并不广泛。对应内核模块iptables_mangle;
**raw表:是自1.2.9以后版本的iptables新增的表,主要用于决定数据包是否被状态跟踪机制处理,在匹配数据包时,raw表的规则要优先于其他表,对应内核模块iptables_raw。
我们最终定义的防火墙规则,都会添加到这四张表中的其中一张表中。
表链关系
5条链(即5个关卡)中,并不是每条链都能应用所有类型的表,事实上除了Ouptput链能同时有四种表,其他链都只有两种或三种表
规则的概念
iptables规则主要包含“条件,动作”,即匹配出什么条件(规则)后,执行相对应的 动作
匹配条件(即五元组)
S_IP:source ip,源ip
S_PORT:source port,源端口
D_IP: destination ip,目标ip
D_PORT: destination port,目标端口
TCP/UDP:第四层(传输层)协议
处理的动作
- **ACCEPT:**允许数据包通过;
- **DROP:**直接丢弃数据包,不回应任何信息,客户端只有当该链接超时后才会有反应;
- **REJECT:**拒绝数据包,会给客户端发送一个数据包被丢弃的响应的信息;
- **SNAT:**S指Source,源NAT(源地址转换)。在进入路由层面的route之后,出本地的网络栈之前,改写源地址,目标地址不变,并在本机建立NAT表项,当数据返回时,根据NAT表将目的地址数据改写为数据发送出去时候的源地址,并发送给主机。解决私网用户用同一个公网IP上网的问题;
- **MASQUERADE:**是SNAT的一种特殊形式,适用于动态的、临时会变的IP上;
- **DNAT:**D指Destination,目的NAT,解决私网服务端,接收公网请求的问题。和SNAT相反,IP包经过route之前,重新修改目标地址,源地址不变,在本机建立NAT表项,当数据返回时,根据NAT表将源地址修改为数据发送过来时的目标地址,并发给远程主机。可以隐藏后端服务器的真实地址;
- **REDIRECT:**在本机做端口映射;
- **LOG:**在
/var/log/messages
文件中记录日志信息,然后将数据包传递给下一条规则。
除去最后一个LOG,前3条规则匹配数据包后,该数据包不会再往下继续匹配了,所以编写的规则顺序极其关键。
DROP和REJECT执行的动作类似,区别在于,前者拒绝后不会给客户端响应数据包被丢弃,只有在连接超时后,客户端才会知道;后者会给客户端响应数据包被丢弃(个人观点,后者人性化点,那么要记住这个区别,可以从其本身的意思,drop是丢弃,顾名思义是直接扔掉,不打任何招呼,只有当事人后来才可能发现;reject是拒绝,那么这就需要双方当场就说明意思。所以说,这两者就类似于谈恋爱的俩人,男方或者女方给对方送花吧,想想就明白了。)
iptables的命令操作
service命令是用于启动Linux的进程的(参见[这里](https://www.xiebruce.top/782.html)),但在这里是例外,
service iptables start并没有启动一个进程,你无法用
ps aux | grep iptables的方式看到一个叫
iptables的进程,你只能用
service iptables status`去查看它的状态。
所以iptables其实不能叫“服务”,因为它并没有一个“守护进程”,其实iptables只是相当于一个客户端工具,真正的防火墙是Linux内核中的netfilter,由于netfilter是内核功能,用户无法直接操作,iptables这个工具是提供给用户设置过滤规则的,但最终这个过滤规则是由netfilter来执行的。
查询规则
常用选项
-L
: list的缩写,list我们通常翻译成列表,意思是列出每条链上的规则,因为多条规则就是一个列表,所以用-L
来表示。-L
后面还可以跟上5条链(POSTROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING)的其中一条链名,注意链名必须全大写,如查看“INPUT链”上的规则:iptables -L INPUT(不指定的话就是默认查看所有链上的所有规则列表)
- Chain INPUT: INPUT链上的规则,同理,后面的“Chain FORWARD”、“Chain OUTPUT”分别是FORWARD链和OUTPUT链上的规则;
- (policy ACCEPT): 表示默认策略是接受,即假如我没设置,那就是允许,只有我设置哪个不允许,才会不允许,示例中是安装iptables后的默认规则,由于默认是ACCEPT,你规则也设置为ACCEPT按道理来说是没什么意义的,因为你不设置也是ACCEPT呀,但事实上,是为了方便修改为REJECT/DROP等规则,说白了就是放在那,要设置的时候我们就可以直接修改;
- target: 英文意思是“目标”,但该列的值通常是动作,比如ACCEPT(接受)、REJECT(拒绝)等等,但它确实可以是“目标”。
-t
:前面-L
不是列出所有链的规则列表吗?为什么没有PREROUTING和POSTROUTING链呢?因为有默认参数-t
,t是table的缩写,意思是指定显示哪张“表”中的规则(前面说过iptables有四种表),iptables -L
其实就相当于iptables -t filter -L
,即相当于你查看的是“filter”表中的规则。而根据前面的讲解,filter表只可用于INPUT、FORWARD、OUTPUT三条链中,这就是为什么iptables -L
不显示PREROUTING链和POSTROUTING链的原因。
-n
: numeric的缩写,numeric意思是数字的,数值的,意思是指定源和目标地址、端口什么的都以数字/数值的方式显示,否则默认会以域名/主机名/程序名等显示,该选项一般与-L
合用,因为单独的-n
是没有用的(没有-L
列表都不显示,所以用-n
就没有意义了)。
-v
: 在Linux命令里,一般都是指“verbose”,这个词的意思是是“冗余的,啰嗦的”,即输出更加详细的信息
--line-numbers
: 如果你想列表有序号,可以加上该选项:iptables -nvL --line-numbers
添加规则
我们可以向某条链中的某个表的最前面添加纪录(即“插入”,用到选项-I,即“insert”),同时也可以向某条链中的某个表的最后添加记录(即“追加”,用到选项-A,即“append”),在vi/vim
的命令模式下,按I
是在光标所行的行首插入,按A
是在光标所在行的行尾插入,跟这个在表头跟表尾插入非常像。
之所以有向前添加和向后添加,是因为如果前面规则的是丢弃或拒绝,那么后面的规则是不会起作用的;而如果前面的是接受后面的是丢弃或拒绝,则接受之后后面的丢弃或拒绝也是不会生效的。(这里要记住就是规则的执行是有先后顺序的)
例如,向INPUT链的filter表中添加一条规则:
iptables -t filter -I INPUT -s 192.168.2.22 -j DROP
-t
: 是指定插入到哪个表中,不写的话默认为“filter”表;-I
: 指定插入到哪条链中,并且会在该链指定表(在这里是filter表)中的最前面插入(I:Input),如果用-A
则是在最后插入(A:Append)。-s
: 匹配源ip,s: source,源。-j
: jump,跳转的意思,后面可指定跳转的target(目标),比如自定义的链,当然更多的是跳转到“action(动作)”中,比如ACCEPT、DROP、REJECT等等。- 整个意思,就是向iptables中的“INPUT”链(
-I INPUT
)的“filter”表(-t filter
)的最前面(-I
)添加一条记录,这次记录会匹配源地址为“192.168.2.22”的请求(-s 192.168.2.22
),并把该请求丢弃掉(-j DROP
)。
删除iptables中的记录
1、根据编号删除:**
前面说过,查询iptables规则列表时,添加--line-numbers
简写成--line
即可显示记录编号,我们现在就可以根据这个编号来删除了:
iptables -t filter -D INPUT 2
-t filter指定操作的表为filter表,
-D`表示delete,后面跟的两个参数,第一个是链名,第二个是要删除的规则的编号。
2、根据条件删除:**
iptables -t filter -D INPUT -s 10.37.129.2 -j DROP
删除INPUT链中的filter表中源地址为“10.37.129.2”并且动作为“DROP”的规则。
3、清空:**
-F
: flush的缩写,flush是“冲洗、冲掉”的意思,在这里是清空的意思,iptables -t filter -F INPUT
代表清空“INPUT”链中“filter”表中的所有规则,如果不指定链不指定表,即直接用iptables -F
,则清空所有链中所有表的规则。
修改规则
用“替换”来描述会更好一点,因为所谓的修改其实就是把整个规则替换成新的规则(因为用到一个选项-R,replace“替换”):
iptables -t filter -R INPUT 1 -s 10.37.129.3 -j ACCEPT
其中的-R
就是replace,即替换的意思,整句命令意思是从INPUT链中的filter表中替换编号为1的规则,编号1后面的-s 10.37.129.3 -j ACCEPT
就是要替换成的新规则。
修改策略(policy)😗*
iptables -P FORWARD DROP
-P
: policy,即策略。整个意思是把FORWARD链的默认规则设置为DROP,iptables [-t table] -P chain target
这个说明,表示可以根据不同的表,设置不同的限制
iptables -t raw -P OUTPUT ACCEPT
iptables -t filter -P OUTPUT DROP
-d
:destination,用于匹配报文的目标地址,可以同时指定多个ip(逗号隔开,逗号两侧都不允许有空格),也可指定ip段:
-p
:用于匹配报文的协议类型,可以匹配的协议类型tcp、udp、udplite、icmp、esp、ah、sctp等(centos7中还支持icmpv6、mh)
-i
:用于匹配报文是从哪个网卡接口流入本机的,由于匹配条件只是用于匹配报文流入的网卡,所以在OUTPUT链与POSTROUTING链中不能使用此选项
-o`:用于匹配报文将要从哪个网卡接口流出本机,于匹配条件只是用于匹配报文流出的网卡,所以在INPUT链与PREROUTING链中不能使用此选项
iptables的扩展模块
tcp扩展模块
-p tcp -m tcp --sport
用于匹配tcp协议报文的源端口,可以使用冒号指定一个连续的端口范围(-p protocol,
-m:match,指匹配的模块,很多人可能以为是module的缩写,其实是match的缩写,
–sport: source port);
-p tcp -m tcp --dport用于匹配tcp协议报文的目标端口,可以使用冒号指定一个连续的端口范围(
–dport 80:88)
iptables -t filter -I OUTPUT -d 192.168.1.146 -p tcp -m tcp --sport 22 -j REJECT
iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m tcp --dport 22:25 -j REJECT
iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m tcp --dport :22 -j REJECT
iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m tcp --dport 80: -j REJECT
iptables -t filter -I OUTPUT -d 192.168.1.146 -p tcp -m tcp ! --sport 22 -j ACCEPT
此外,tcp扩展模块还有-tcp-flags选项,它可以根据TCP头部的“标识位”来匹配。
multiport扩展模块
-p tcp -m multiport --sports
用于匹配报文的源端口,可以指定离散的多个端口号,端口之间用”逗号”隔开;
-p udp -m multiport --dports
用于匹配报文的目标端口,可以指定离散的多个端口号,端口之间用”逗号”隔开:
#示例如下
iptables -t filter -I OUTPUT -d 192.168.1.146 -p udp -m multiport --sports 137,138 -j REJECT
iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m multiport --dports 22,80 -j REJECT
iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m multiport ! --dports 22,80 -j REJECT
iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m multiport --dports 80:88 -j REJECT
iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m multiport --dports 22,80:88 -j REJECT
相关文章:

防火墙有关iptables的知识点
基本概念 什么是防火墙 在计算中,防火墙是基于预定安全规则来监视和控制传入和传出网络流量的网络安全系统。该计算机流入流出的所有网络通信均要经过此防火墙。防火墙对流经它的网络通信进行扫描,这样能够过滤掉一些攻击,以免其在目标计算机…...

路肩石水渠机在施工公路项目中工艺特点的匹配
新建公路路肩项目在目前公路项目中的技术手段和实现方式,大多数依靠机械设备来机械来进行,还有一部分通过人工传统的预制作业和安装模式来进行,两种工艺特点的对比来说对于补充完善建设手段和效果实现有很重要的意义. 其中采用了机械设备进行一次成型制作的过程,按照设计需求匹…...

JS 动态爱心(HTML+CSS+JS)
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...

钉钉配置事件订阅(Python)
钉钉配置事件订阅 0.需求分析 需要实现钉钉企业通讯录同步至企业微信通讯录,这就需要用到钉钉的事件与回调 1.配置应用 登陆开放平台 https://open-dev.dingtalk.com/去企业内部开发里面,先创建个应用,后面都借用这个应用来调接口 创建完…...
Linux-Udev机制
一:Udev概述 udev 是一个用户空间的设备管理器,用于为事件设置处理程序。作为守护进程, udev 接收的事件主要由 linux 内核生成,这些事件是外部设备产生的物理事件。总之, udev 探测外设和热插拔,将设备控制权传递给内核,例如加载内核模块或设备固件。udev 是一个用户空…...

ERP是什么?中小商户有必要用吗?秦丝、金蝶、管家婆哪家强?
ERP系统刚开始传入中国的时候,基本上只有超大型或大型企业有条件实施,不过最近几年随着小微企业、中小商户的信息化需求不断增长,ERP软件已慢慢被普遍使用。但是仍然有不少中小商户,还没搞清楚ERP到底是什么,看到大家都…...

pytorch离线安装
windows下离线安装pytorch,很多内网机,无法连接外网,只能下载whl文件进行离线安装下载pytorch,地址https://download.pytorch.org/whl/torch_stable.html我是windows,Python37,没有gpu,所以选择…...
数据结构-算法的时间复杂度(1.1)
目录 1. 算法效率 2. 时间复杂度 2.1 时间复杂度的概念 2.2 大O的渐进表示法 2.3 举例说明: 写在最后: 1. 算法效率 我们该如何判断一个算法的好坏? 衡量一个算法的好坏,是从时间和空间两个维度比较的, 而今天…...

Cygwin安装与Mingw
共同点:window下编译环境 区别:cygwin(gnu windows)模拟Linux编译环境, mingw模拟window编译环境,生成.exe可执行文件 目录 Cygwin安装 一、官网下载 二、双击安装 三、选择安装路径后,到连接方式如图 四、添加连…...

教育舆情监测方案有哪些,TOOM讲解教育舆情的应对与处理?
教育舆情方案是针对教育领域的舆情事件或问题而制定的应对方案。其主要目的是通过有效的信息收集、分析、处理和传播,帮助教育机构或相关组织及时掌握和应对公众舆论的发展趋势,维护良好的舆情形象和声誉,教育舆情监测方案有哪些,…...

c语言操作文件
1、文件缓冲区 文件缓冲区的目的:提高访问效率 提高磁盘使用寿命 刷新就是将当前缓冲区数据全部提交。 不刷新时,程序在崩溃时缓冲区内容无法输出(有些情形会带来错误) 文件缓冲区的四种刷新方式 行刷新(遇到换行符…...

【C语言】初识指针
目录 一、指针是什么 二、指针和指针类型 三、野指针 四、指针运算 五、指针和数组 六、二级指针 七、指针数组 一、指针是什么 指针就是内存地址,指针变量是用来存放内存地址的变量,在同一CPU构架下,不同类型的指针变量所占用的存储单元长度…...

FFMPEG自学一 音视频解封装
一、音视频包含哪些数据对于一个mp4文件我们可以通过音视频分析软件打开查看内部信息。从两图可以看出mp4文件一般包含 音频流 视频流等。对于上面的字段大致分析如下Format编码方式AVC现在大部分视频都是这种编码方式,即H264。CodecId编码器idavc1H264封装有2种格式…...

HoloLens 2 丨打包丨MRTK丨Unity丨新手教学
HoloLens 2打包流程制作前言开发工具介绍Visual Studio 2019MRTK插件或示例程序下载打包流程介绍Unity操作修改Visual Studio修改Hololens 修改Hololens 密码忘记总结前言 提示:今日功能介绍 使用 MRTK制作hololens 2的打包流程制作的新手教学。 开发工具介绍 这…...

AcWing语法基础课笔记 第四章 C++中的数组
第四章 C中的数组 程序 逻辑 数据,数组是存储数据的强而有力的手段。 ——闫学灿 一维数组 数组的定义 数组的定义方式和变量类似。 数组的初始化 在main函数内部,未初始化的数组中的元素是随机的。 访问数组元素 通过下标访问数…...
UTF小结
运行测试 编辑测试 运行模式:程序集Platform平台选择 Any Platforms编辑模式:程序集Platform平台选择 Editor 特性 Test、UnityTest特性:测试方法需要添加Test或UnityTest特性,测试方法是公有的SetUp、TearDown特性:…...

(考研湖科大教书匠计算机网络)第四章网络层-第六节3:开放最短路径优先OSPF的基本工作原理
获取pdf:密码7281专栏目录首页:【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一:OSPF概述(1)概述(2)细节阐述A:链路状态和代价B:问候分组和邻居表Cÿ…...

积水在线监测仪——积水点、易涝点水位监测设备
一、设备概述 积水在线监测仪是一款用于城市积水点、易涝点等场景的水位监测设备,设备采用电池供电,无需另外供电,安装方便,使用简单。可以时监测水点、易涝点水位情况,当水位数据超过阈值后触发告警上传,…...
DCMM认证机构
一、什么是DCMM DCMM认证,又称为数据管理能力成熟度评估,依据 都是GB/T -《数据管理能力成熟度评估模型》,这是我国首个数据管理领域的国家标准,由国家质量监督检验检疫总局、国家标准化管理委员会于年3月15日正式发布。DCMM认证…...
Golang基于文件魔数判断文件类型
本文介绍基于魔数判断文件类型,涉及文件查找读取内容、文件魔数、字节比较,最后还介绍函数参数的知识。 查找位置 File.Seek()函数可以设置偏移位置,为下一次读或写确定偏移量,具体起点有whence确定:0标识相对文件开始…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...

【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...

无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...

spring Security对RBAC及其ABAC的支持使用
RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型,它将权限分配给角色,再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...
智能职业发展系统:AI驱动的职业规划平台技术解析
智能职业发展系统:AI驱动的职业规划平台技术解析 引言:数字时代的职业革命 在当今瞬息万变的就业市场中,传统的职业规划方法已无法满足个人和企业的需求。据统计,全球每年有超过2亿人面临职业转型困境,而企业也因此遭…...