Linux网络服务之iptables防火墙工具

I P T A B L E S

  • 一、防火墙简介
    • 1.1 netfilter
    • 1.2 firewalld和iptables
  • 二、iptables工具简述
    • 2.1 定义
    • 2.2 三种报文流向
    • 2.3 iptables的表、链结构(非常重要)
      • 2.3.1 "四表" ----- 规则表
      • 2.3.2 "五链" ----- 规则链
  • 三、iptables配置
    • 3.1 基本语法
      • 3.1.1 管理选项部分
      • 3.1.2 匹配条件部分
      • 3.1.3 处理动作部分
    • 3.2 查看规则
    • 3.3 添加规则
    • 3.4 根据规则编号删除 清空 替换规则
      • 3.4.1 查看规则编号
      • 3.4.2 替换
      • 3.4.3 删除
      • 3.4.4 清空
    • 3.5 默认策略
      • 3.5.1 简介
      • 3.5.2 查看与配置
    • 3.6 基本匹配条件
    • 3.7 扩展匹配条件
      • 3.7.1 隐性
        • .1 端口匹配
        • .2 TCP标志匹配
        • .3 ICMP类型匹配
      • 3.7.2 显示扩展模块
        • .1 multiport扩展 多端口
        • .2 iprange扩展 IP范围
        • .3 mac扩展 MAC地址(一般不用)
        • .4 string扩展 字符串
        • .5 time模块
        • .6 connlimit扩展 连接数量
        • .7 state 连接状态(重要)
    • 4.1 SNAT
    • 4.2 DNAT
    • 4.3 配置实例
      • 1) 前置准备
        • .1 配置内网服务器
        • .2 配置外网服务器
        • .3 配置网关服务器
      • 2)使用SNAT,使内网能够访问外网
      • 3)使用DNAT,使外网能访问内网

一、防火墙简介

在这里插入图片描述

1.1 netfilter

Netfilter是一个Linux内核功能,用于在网络数据包从网络堆栈进入或离开时进行包过滤和操作。
Netfilter内称为防火墙的“内核态”。

1.2 firewalld和iptables

Firewalld和Iptables都不是防火墙,是防火墙管理工具,被称为防火墙的“用户态”。
Centos 7中默认管理防火墙规则的工具是firewalld。

二、iptables工具简述

2.1 定义

由软件包iptables提供的命令行工具。
工作在用户空间,用来编写规则,写好的规则被送往netfilter,告诉内核如何去处理信息包。

2.2 三种报文流向

  • 流入本机:PREROUTING --> INPUT–>用户空间进程
  • 流出本机:用户空间进程 -->OUTPUT–> POSTROUTING
  • 转发:PREROUTING --> FORWARD --> POSTROUTING
#查看有没有安装
iptables --version 

在这里插入图片描述

2.3 iptables的表、链结构(非常重要)

在这里插入图片描述

2.3.1 “四表” ----- 规则表

规则表功能
filter表过滤规则表,根据预定义的规则过滤符合条件的数据包,默认表
nat表地址转换规则表
mangle表给数据包设置标记
raw表关闭启用的连接跟踪机制,加快封包穿越防火墙速度
security表用于强制访问控制(MAC)网络规则,由Linux安全模块(如SELinux)实现

规则表间的顺序: raw --> mangle–> nat–>filter

规则表的作用容纳各种规则链

2.3.2 “五链” ----- 规则链

规则链功能
INPUT链处理入站数据包
OUTPUT链处理出站数据包
FORWARD链处理转发数据包
PREROUTING链在进行路由选择前处理数据包
PROROUTING链在进行路由选择后处理数据包

规则链的作用:容纳各种防火墙规则,对数据包进行过滤或处理。

链的分类依据:处理数据包的不同时机。

三、iptables配置

#前期准备
systemctl  stop firewalld

3.1 基本语法

iptables  [-t 规则表]  管理选项  [规则链]  [匹配条件]  [-j 处理动作]iptables -t filter -A INPUT -s 192.168.0.1 - DROP

3.1.1 管理选项部分

管理选项用法示例
-A向规则链中添加一条规则,末尾追加
-I在规则链的指定位置插入一条规则,未指定序号默认作为第一条
-F 清除链中所有规则
-P设置规则链的默认策略
-D从规则链中删除一条规则
-R替换规则链中的一条规则
-L列出规则链中的所有规则
-n所有字段以数字形式显示
-v显示详细信息
- -line-number查看规则编号
-N创建一个新的自定义规则链
-X删除一个自定义规则链
-Z清空规则链中所有规则的数据包和字节数统计
-S看链的所有规则或者某个链的规则/某个具体规则后面跟编号
-E重新命名规则链
#允许来自192.168.1.0/24子网的数据包进入INPUT链
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT#删除允许来自192.168.1.0/24子网的数据包进入INPUT链的规则
iptables -D INPUT -s 192.168.1.0/24 -j ACCEPT#在INPUT链的第2条规则之前插入一条允许来自192.168.1.0/24子网的数据包进入的规则
iptables -I INPUT 2 -s 192.168.1.0/24 -j ACCEPT#将INPUT链中的第2条规则替换为拒绝来自192.168.1.0/24子网的数据包的规则
iptables -R INPUT 2 -s 192.168.1.0/24 -j DROP)
#列出INPUT链中的所有规则
iptables -L INPUT#清空INPUT链中的所有规则
iptables -F INPUT#清空INPUT链的数据包和字节数统计
iptables -Z INPUT#将INPUT链的默认策略设置为DROP,即拒绝所有数据包
iptables -P INPUT DROP#将FORWARD链重命名为NFORWARD
iptables -E FORWARD NFORWARD
#创建一个名为MYCHAIN的新规则链
iptables -N MYCHAIN
#删除名为MYCHAIN的自定义规则链
iptables -X MYCHAIN

3.1.2 匹配条件部分

指定匹配条件的选项功能
-p指定要匹配的 协议类型,例如TCP、UDP、ICMP等
-s指定IP地址或地址范围
-d指定 目标IP地址或地址范围
-i <网络接口>指定 输入网络接口
-o<网络接口>指定 输出网络接口
-m指定 扩展模块,用于进一步定义匹配条件
- -icmp-type指定ICMP类型
- -sport指定源端口号或端口范围
- - dport指定目标端口号或端口范围

3.1.3 处理动作部分

处理动作功能
DROP直接 丢弃数据包,不给出任何回应信息
REJECT 拒绝数据包通过,会给数据发送端一个响应信息
ACCEPT允许数据包通过(默认)
SNAT修改数据包的源地址
DNAT修改数据包的目的地址
LOG在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则
MASQUERADE伪装成一个非固定公网IP地址

3.2 查看规则

iptables -vnL #查看所有规则表的规则-v 详细信息
-n 数字形式显示
-L 查看规则列表

在这里插入图片描述

iptable -vnL -t [规则表]  #查看规则表的规则链,默认filter表

在这里插入图片描述

3.3 添加规则

#一般只对INPUT和PREROUTING规则链进行处理
#不处理OUTPUT POSTROUTING FORWARD
#新增规则,filter表为例#拒绝来自 192.168.91.101的通信
iptables [-t filter]  -A INPUT -s 192.168.2.100 -j DROP/REJECT
#插入规则#将IP地址为192.168.2.101的源地址的流量丢弃
iptables -I INPUT 编号 -s 192.168.2.101 -j DROP 

3.4 根据规则编号删除 清空 替换规则

3.4.1 查看规则编号

iptables -vnL --line-numbers #查看规则编号

在这里插入图片描述

3.4.2 替换

iptables -R <规则链> <规则编号> <新规则>
#举个例子iptables -R INPUT 3 -p tcp --dport 22 -j ACCEPT 
#替换INPUT链中第3条规则,将其内容改为允许TCP协议的SSH流量(端口22)通过

3.4.3 删除

iptables -D <规则链> <要删除的规则>或者iptables  -D <规则链> n #n为规则编号

3.4.4 清空

iptables -F  #清空除默认策略外的所有规则

3.5 默认策略

3.5.1 简介

默认策略是指当没有明确的匹配规则时,iptables 对进出系统的网络流量采取的默认处理方式

有3种基本的默认策略:ACCEPT、DROP 和 REJECT。

  1. ACCEPT:允许所有的数据包通过防火墙。

  2. DROP:阻止所有的数据包通过防火墙。

  3. REJECT:默认策略为 REJECT 与 DROP 类似,阻止所有的数据包通过防火墙。但不同的是,当数据包被拦截时,会向源主机发送一个拒绝响应消息

3.5.2 查看与配置

查看

iptables -L #查看当前 iptables 的默认策略

在这里插入图片描述

设置默认策略

iptables -P INPUT <策略>
iptables -P OUTPUT <策略>
iptables -P FORWARD <策略>INPUT 是针对进入系统的数据包,
OUTPUT 是针对离开系统的数据包,
FORWARD 是针对通过系统的数据包
策略可以是 ACCEPT、DROP 或 REJECT
#举个例子## 允许SSH进入
iptables -A INPUT -p tcp --dport 22 -j ACCEPT# 允许HTTP和HTTPS流量
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

清空和删除

无法直接清空或者删除默认策略,iptables -F也不行

只能将ACCEPT改成DROP/REJECT,或者反过来,某种意义上,也等同于删除

3.6 基本匹配条件

基本匹配条件功能
-s源IP地址或者不连续的IP地址
-d目标IP地址或者不连续的IP地址
-p指定协议
-i报文流入的接口;只能应用于数据报文流入环节,
-o报文流出的接口;只能应用于数据报文流出的环节

3.7 扩展匹配条件

3.7.1 隐性

man iptables-extensions
查看扩展帮助

.1 端口匹配

--sport--dport 必须配合-p <协议类型>使用

只能用于匹配连续的端口

--sport 源端口 
--dport 目的端口

可以匹配单个端口,也可以匹配端口范围,以源端口匹配为例:

格式含义
–sport 1000匹配源端口是1000的数据包
–sport 1000:3000匹配源端口是1000-3000的数据包
–sport 1000:匹配源端口是1000及以上的数据包
–sport :3000匹配源端口是3000及以下的数据包

.2 TCP标志匹配

 --tcp-flags TCP标志
TCP标志功能
SYN(同步)用于建立连接。
ACK(确认)用于确认收到的数据。
FIN(结束)用于关闭连接。
RST(复位)用于重置连接。
URG(紧急)用于指示数据中有紧急数据部分。
PSH(推送)用于强制接收方立即处理数据。
#iptables允许通过来自ens33接口的,具有FIN、RST、ACK和SYN标志的TCP包
#只有SYN标志的TCP包,拒绝建立连接
iptables -I INPUT -i ens33 -p tcp \--tcp-flags FIN,RST,ACK SYN -j ACCEPT

.3 ICMP类型匹配

--icmp -type 0/3/8
代码含义
8“Echo- Request” 表示请求
0“Echo- Reply” 表示回复
3"Dest ination-Unreachable"表示目标不可达
 举个例子#丢弃icmp的包,别人ping不通本机,本机也ping不通别人iptables -A INPUT -p icmp -j DROP​
#禁止其他主机ping本机iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT ​#当本机ping不通其它主机时提示目标不可达,此时其它主机需要配置关于icmp协议的控制类型为REJECTiptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT

3.7.2 显示扩展模块

显示扩展必须加 -m选项

.1 multiport扩展 多端口

可用于匹配非连续的端口,以离散的方式匹配,最多支持15个端口。

iptables -A INPUT  -s 192.168.2.101 -p tcp -m \
multiport --dports 22,80,3306 -j REJECT 
#拒绝来自源IP地址为192.168.2.101的TCP流量,并且目标端口号为22、80和3306

.2 iprange扩展 IP范围

iprange扩展功能模块用于在防火墙规则中匹配特定的IP地址范围

基本格式
-m iprange --src-range IP范围
iptables -A INPUT  -m ip range --src-range 192.168.91.101-192.168.91.103 -j REJECT 
# 拒绝来自源IP地址范围为192.168.91.101到192.168.91.103的所有流量,并且应用于INPUT链(也就是进入服务器的流量)
iptables -A FORWARD -p udp -m iprange --src-range 192.168.80.100-192.168.80.200 -j DROP
#禁止转发源地址位于192.168.80.100-192.168.80.200的udp数据包

.3 mac扩展 MAC地址(一般不用)

mac模块用于匹配和处理MAC地址相关的防火墙规则,可以限制特定MAC地址的访问或过滤特定MAC地址的流量。

基本格式
-m mac --mac-source XX:XX:XX:XX:XX:XX  #根据源MAC地址匹配
-m mac --mac-destination XX:XX:XX:XX:XX:XX#根据目标MAC地址匹配

.4 string扩展 字符串

string模块用于在数据包的内容中搜索指定的字符串,并根据匹配结果执行相应的操作。

基本格式
-m string --string 字符串 --algo bm/kmp 
#bm kmp为字符串检测算法
iptables -A INPUT -p tcp --dport 80 -m string --string "example" --algo bm -j DROP
#对于目标端口为80的TCP流量,在数据包的内容中搜索字符串"example"
#如果匹配成功,则使用DROP动作丢弃该数据包

.5 time模块

time模块用于根据时间条件匹配数据包,可以限制特定时间段内进出防火墙的数据包。

基本格式
-m time --匹配选项 匹配条件
匹配选项含义
- -timestart指定开始时间
- -timestop指定结束时间
- -datestart指定开始日期
- -datestop指定结束日期
- -daysMon-Fri
iptables -A INPUT -m time --timestart 08:00 --timestop 17:00 \
--datestart 2023-08-01 --datestop 2023-08-31 --days Mon-Fri -j ACCEPT#在2023年8月1日至2023年8月31日期间的每个工作日的08:00至17:00之间,接受(ACCEPT)输入的数据
#如果不在指定的日期和时间范围内或不是工作日,则不匹配该规则

.6 connlimit扩展 连接数量

connlimit扩展模块用于限制连接数量,根据活动连接数量的条件来控制数据包的流动。

基本格式
-m connlimit --connlimit-匹配选项 匹配条件
匹配选项功能
above n指定连接数量超过n个时触发匹配
upto n指定连接数量小于n个时触发匹配
equal n指定连接数量等于n个时触发匹配
maks指定连接数量的掩码来匹配连接数量
举个例子iptables -A INPUT -p tcp --syn --dport 80 \
-m connlimit --connlimit-above 10 -j REJECT
#对于TCP协议、目标端口为80的数据包,如果活动连接的数量超过10个,则拒绝该连接iptables -A INPUT -p tcp --syn --dport 22 \
-m connlimit --connlimit-above 5 --connlimit-mask 16 -j REJECT
#对于TCP协议、目标端口为22(SSH)的数据包
#如果同一子网的连接数量超过5个,拒绝连接

.7 state 连接状态(重要)

state模块用于匹配连接的状态,根据连接的状态来过滤数据包。

基本格式--state state 连接状态
常见连接状态含义
NEW与任何连接无关的,还没开始连接
ESTABLISHED响应请求或者已建立连接的,连接态
RELATED与已有连接有相关性的(如FTP主被动模式的数据连接),衍生态,一般与ESTABLISHED 配合使用
INVALID不能被识别属于哪个连接或没有任何状态
UNTRACKED未进行追踪的连接,如:raw表中关闭追踪
举个例子iptables -A INPUT -m state --state NEW,ESTABLISHED -j ACCEPT
#对于输入的数据包,如果连接状态是NEW(新建连接)或ESTABLISHED(已建立连接),允许该数据包通过

四、SNAT和DNAT

4.1 SNAT

在这里插入图片描述

SNAT用于在网络中修改数据包的源IP地址
SNAT是一种单向的地址转换技术,只会修改数据包的源IP地址,不会修改目的IP地址。

SNAT转换前提条件:

  • 局域网各主机已正确设置IP地址、子网掩码、默认网关地址;
  • Linux网关开启IP路由转发

4.2 DNAT

在这里插入图片描述

DNAT应用环境:在Internet中发布位于局域网内的服务器

DNAT原理:目的地址转换,根据指定条件修改数据包的目的IP地址,保证了内网服务器的安全,通常被叫做目的映射。

DNAT转换前提条件:

  • 局域网的服务器能够访问Internet;
  • 网关的外网地址有正确的DNS解析记录;
  • Linux网关开启IP路由转发。

4.3 配置实例

centos7-1(内网服务器) ens33 192.168.2.100
centos7-2 (网关服务器)  ens36 仅主机 12.0.0.1  ens33 192.168.2.102   
centos7-3(外网服务器) ens33 仅主机 12.0.0.10

1) 前置准备

#关闭三个虚拟机的防火墙和selinux
systemctl stop firewalld 
setenforce  

.1 配置内网服务器

将内网服务器的网关修改为网关服务器的IP地址
在这里插入图片描述

systemctl restart network #重启网络服务

.2 配置外网服务器

修改为仅主机模式
在这里插入图片描述
修改IP地址为12.0.0.10

systemctl restart network #重启网络服务

在这里插入图片描述

.3 配置网关服务器

(1)添加新网卡,改为仅主机模式
在这里插入图片描述
(2)配置新网卡,IP地址为12.0.0.1
在这里插入图片描述

systemctl restart network #重启网络服务

(3)开启网关服务器的路由转发功能

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1    #将此行写入配置文件sysctl -p  #读取修改后的配置

(4)清空防火墙配置

iptables -F

2)使用SNAT,使内网能够访问外网

(1)在网关服务器添加规则

iptables -t nat -A POSTROUTING -o ens36 -s 192.168.2.0/24 -j SNAT --to 12.0.0.1

在这里插入图片描述
(2)内网ping外网,检测连通性
在这里插入图片描述

3)使用DNAT,使外网能访问内网

(1)在网关服务器添加规则

iptables -t nat -A PREROUTING -i ens36 -s 12.0.0.0/24 -p tcp --dport 80-j DNAT --to 192.168.2.100 

在这里插入图片描述
(2)在内网服务器启动httpd服务

yum install -y httpd vim /var/www/html/index.html
byyd yyds #访问显示内容systemctl start httpd 

在这里插入图片描述
(3)外网服务器访问网关服务器的ens36,检查DNAT是否成功
在这里插入图片描述

#补充知识
#字符界面 但是需要用到图形化时
yum install  x11-forwarding -y  #systemctl start firewalldexport DISPLAY=192.168.2.1:0.0
#真机地址yum install firewall-config -ysystem-config-firewall

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/98553.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vscode详细安装教程

Vscode官网下载 官网地址&#xff1a;Download Visual Studio Code - Mac, Linux, Windows 通过链接可以直接跳转到下面的页面当中&#xff0c;支持的版本有Windows、Linux、Mac&#xff0c;可以选择适配自己电脑的版本&#xff0c;一般来说应该是Windows x64的。不要直接点W…

clion软件ide的安装和环境配置@ubuntu

1.官网&#xff1a; Download CLion 2.安装Clion 直接在官网下载并安装即可&#xff0c;过程很简单 https://www.jetbrains.com/clion/ https://www.jetbrains.com/clion/download/#sectionlinux 3.激活码 4.配置Clion 安装gcc、g、make Ubuntu中用到的编译工具是gcc©…

无涯教程-PHP - 预定义变量

PHP为它运行的脚本提供了预定义变量数组&#xff0c;其中包含来自Web服务器&#xff0c;环境和用户输入的变量。这些新数组称为超全局变量- PHP超全局变量 Sr.NoVariable & Description1 $GLOBALS 全局变量数组。 2 $_SERVER 存放提交过来的web路径、域名、来源、IP及各…

【小沐学NLP】Python进行统计假设检验

文章目录 1、简介1.1 假设检验的定义1.2 假设检验的类型1.3 假设检验的基本步骤 2、测试数据2.1 sklearn2.2 seaborn 3、正态分布检验3.1 直方图判断3.2 KS检验&#xff08;scipy.stats.kstest&#xff09;3.3 Shapiro-Wilk test&#xff08;scipy.stats.shapiro&#xff09;3.…

基于知识蒸馏的两阶段去雨、雪、雾算法调试记录

前言 该项目的介绍可以参考博主这篇博文&#xff1a;基于知识蒸馏的去雪、去雾、去雨算法 调试过程 该项目中inference.py可以直接使用&#xff0c;只要将student的权重文件放入即可&#xff0c;博主实验过其去噪后的结果&#xff0c;貌似是变清晰了一点。但train时的meta里的…

AMBA总线协议(3)——AHB(一)

目录 一、前言 二、什么是AHB总线 1、概述 2、一个典型的基于AHB总线的微处理器架构 3、基本的 AHB 传送特性 三、AMBA AHB总线互联 四、小结 一、前言 在之前的文章中我们初步的了解了一下AMBA总线中AHB,APB,AXI的信号线及其功能&#xff0c;从本文开始我们…

Unity VR:XR Interaction Toolkit 输入系统(Input System):获取手柄的输入

文章目录 &#x1f4d5;教程说明&#x1f4d5;Input System 和 XR Input Subsystem&#xff08;推荐 Input System&#xff09;&#x1f4d5;Input Action Asset⭐Actions Maps⭐Actions⭐Action Properties&#x1f50d;Action Type (Value, Button, Pass through) ⭐Binding …

Python学习笔记_基础篇(七)_常用模块

模块&#xff0c;用一砣代码实现了某个功能的代码集合。 类似于函数式编程和面向过程编程&#xff0c;函数式编程则完成一个功能&#xff0c;其他代码用来调用即可&#xff0c;提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来&#xff0c;可能需要多个函数才能完成…

华为OD机试关于无输入截止条件的ACM输入逻辑

无输入截止条件的ACM输入 华为OD机试题中有一些题目是没有输入截止条件的,比如 华为OD机试 - 数字游戏(Java & JS & Python)_伏城之外的博客-CSDN博客 从输入描述来看,每组有两行输入,但是并没有告诉我们具体有几组? 那么输入该如何截止呢? 此时,有两种输入…

【旅游度假】Axure酒店在线预订APP原型图 旅游度假子模块原型模板

作品概况 页面数量&#xff1a;共 10 页 兼容软件&#xff1a;Axure RP 9/10&#xff0c;不支持低版本 应用领域&#xff1a;旅游度假&#xff0c;生活服务 作品申明&#xff1a;页面内容仅用于功能演示&#xff0c;无实际功能 作品特色 本作品为「酒店在线预订」的移动端…

Qt6之如何为QDialog添加最大化和最小化按钮

在QDialog构造函数中添加以下几行代码&#xff1a; // 设置窗体最大化和最小化Qt::WindowFlags windowFlag Qt::Dialog;windowFlag | Qt::WindowMinimizeButtonHint;windowFlag | Qt::WindowMaximizeButtonHint;windowFlag …

三、Kafka生产者

目录 3.1 生产者消息发送流程3.1.1 发送原理 3.2 异步发送 API3.3 同步发送数据3.4 生产者分区3.4.1 kafka分区的好处3.4.2 生产者发送消息的分区策略3.4.3 自定义分区器 3.5 生产者如何提高吞吐量3.6 数据可靠性 3.1 生产者消息发送流程 3.1.1 发送原理 3.2 异步发送 API 3…

【观察】戴尔科技:构建企业创新“韧性”,开辟数实融合新格局

过去几年&#xff0c;国家高度重视发展数字经济&#xff0c;将其上升为国家战略。其中&#xff0c;“十四五”规划中&#xff0c;就明确提出要推动数字经济和实体经济的深度融合&#xff0c;以数字经济赋能传统产业转型升级&#xff1b;而2023年年初正式发布的《数字中国建设整…

python使用matplotlib实现折线图的绘制

一、意义 数据可视化可以以简洁的方式呈现出数据&#xff0c;发现众多数据中隐藏的规律和意义。Matplotlib是一个数学绘图库。利用它可以制作简单的图表&#xff08;散点图、折线图&#xff09;。然后&#xff0c;将基于漫步概念生成一个更有趣的数据集–根据一系列随机决策生成…

【React学习】—组件三大核心属性: state(七)

【React学习】—组件三大核心属性: state&#xff08;七&#xff09; 2.2.2. 理解 state是组件对象最重要的属性, 值是对象(可以包含多个key-value的组合)组件被称为"状态机", 通过更新组件的state来更新对应的页面显示(重新渲染组件) 2.2.3. 强烈注意 组件中rend…

RocketMQ 消息消费 轮询机制 PullRequestHoldService

1. 概述 先来看看 RocketMQ 消费过程中的轮询机制是啥。首先需要补充一点消费相关的前置知识。 1.1 消息消费方式 RocketMQ 支持多种消费方式&#xff0c;包括 Push 模式和 Pull 模式 Pull 模式&#xff1a;用户自己进行消息的拉取和消费进度的更新Push 模式&#xff1a;Broker…

Redis从基础到进阶篇(一)

目录 一、了解NoSql 1.1 什么是Nosql 1.2 为什么要使用NoSql 1.3 NoSql数据库的优势 1.4 常见的NoSql产品 1.5 各产品的区别 二、Redis介绍 2.1什么是Redis 2.2 Redis优势 2.3 Redis应用场景 2.4 Redis下载 三、Linux下安装Redis 3.1 环境准备 3.2 Redis的…

通过LD_PRELOAD绕过disable_functions

LD_PRELOAD 在UNIX的动态链接库的世界中&#xff0c;LD_PRELOAD就是这样一个环境变量&#xff0c;它可以影响程序的运行时的链接&#xff08;Runtime linker&#xff09;&#xff0c;它允许你定义在程序运行前优先加载的动态链接库。这个功能主要就是用来有选择性的载入不同动态…

udp与can通信的选择与比较

UDP&#xff08;用户数据报协议&#xff09;和CAN&#xff08;控制器局域网&#xff09;是两种不同的通信协议&#xff0c;它们在实时传递性上有一些区别。 UDP是一种无连接的传输协议&#xff0c;它提供了简单的、不可靠的数据传输。UDP不提供可靠性保证、流控制或重传机制。…