iptables网络安全服务详细使用
iptables防火墙概念说明
开源的基于数据包过滤的网络安全策略控制工具。
centos6.9 --- 默认防火墙工具软件iptables
centos7 --- 默认防火墙工具软件firewalld(zone)
iptables主要工作在OSI七层的二、三、四层,如果重新编译内核,iptables也可以支持7层控制(squid代理+iptables)。
iptables工作流程(规则匹配流程)
iptables是采用数据包过滤机制工作的,所以它会对请求的数据包的包头数据进行分析,并根据我们预先设定的规则进行匹配来决定是否可以进入主机。
iptables工作流程小结
1、防火墙是一层层过滤的。实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
2、如果匹配上了规则,即明确表明是阻止还是通过,此时数据包就不在向下匹配新规则了。
3、如果所有规则中没有明确表明是阻止还是通过这个数据包,也就是没有匹配上规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。
4、防火墙的默认规则是对应链的所有的规则执行完以后才会执行的(最后执行的规则)。
iptables四表五链概念
表(tables) | 链(chains) | |
Filter | This is the default table (if no -t option is passed) 这是默认表 | |
INPUT | for packets destined to local sockets 对于指定到本地套接字的包,即到达本地防火墙服务器的数据包 | |
FORWARD | for packets being routed through the box 路由穿过的数据包,即经过本地防火墙服务器的数据包 | |
OUTPUT | for locally-generated packets 本地创建的数据包 | |
NAT | This table is consulted when a packet that creates a new connection is encountered 当遇到新创建的数据包连接时将参考这个表 | |
PREROUTING | for altering packets as soon as they come in 一进来就对数据包进行改变 | |
OUTPUT | or altering locally-generated packets before routing 本地创建的数据包在路由之前进行改变 | |
POSTROUTING | for altering packets as they are about to go out 在数据包即将出去时改变数据包信息 | |
Managle | This table is used for specialized packet alteration 这个表专门用于改变数据包 | |
INPUT | for packets coming into the box itself 进入到设备本身的包 | |
FORWARD | for altering packets being routed through the box 对路由后的数据包信息进行修改 | |
PREROUTING | for altering incoming packets before routing 在路由之前更改传入的包 | |
OUTPUT | for altering locally-generated packets before routing 本地创建的数据包在路由之前进行改变 | |
POSTROUTING | for altering packets as they are about to go out 在数据包即将离开时更改数据包信息 | |
raw | 此表用处较少,可以忽略不计 |
四表
filter (作用:主机防火墙) 默认的表。*****
nat (作用:端口或IP映射或共享上网)*****
mangle (配置路由标记 ttl tos mark)
raw (忽略)
iptables的几个表以及每个表对应链的作用
filter表(默认的表,作用:主机防火墙)INPUT:进入主机的数据包OUTPUT:本地创建的数据包FORWARD:路由穿过的数据包,即经过本地防火墙服务器的数据包NAT表(作用:端口或IP映射或共享上网)PREROUTING:一进来就对数据包进行改变OUTPUT:本地创建的数据包在路由之前进行改变POSTROUTING:在数据包即将出去时改变数据包信息mangle表(配置路由标记 ttl tos mark)INPUT:进入到设备本身的包FORWARD:对路由后的数据包信息进行修改PREROUTING:在路由之前更改传入的包OUTPUT:本地创建的数据包在路由之前进行改变POSTROUTING:在数据包即将离开时更改数据包信息
filter表信息详细介绍
filter表 | 强调:主要和主机自身相关,真正负责主机防火墙功能的(过滤流入流出,流经主机的数据包)filter表示iptables默认使用的表,这个表定义了三个链(chains ) 企业工作场景:主机防火墙 |
INPUT | 负责过滤所有目标地址是本机地址的数据包 通俗来说:就是过滤进入主机的数据包 |
FORWARD | 负责转发流经主机的数据包。起转发的作用,和NAT关系很大,后面会详细介绍 LVS NAT 模式,net ipv4.ip_forward=l |
OUTPUT | 处理所有源地址是本机地址的数据包 通俗的讲:就是处理从主机发出去的数据包 |
NAT表信息详细介绍
NAT表 | 负责网络地址转换的,即来源与目的IP地址和port的转换。 应用:和主机本身无关,一般用于局域网共享上网或者特殊的端□转换服务相关。 工作场票: 1. 用于企业路由(zebra )或网关(iptables),共享上网(POSTROUTING) 2. 做内部外部IP地址一对一映射(dmz),硬件防火墙映射IP到内部服务器,ftp服务(PREROUTING ) 3. WEB,单个端口的映射,直接映射80端口( PREROUTING )这个表走义了3个链,nat功能相当于网络的acl控制。和网络交换机acl类似。 |
OUTPUT | 和主机放出去的数据包有关,改变主机发出数据包的目的地址。 |
PREROUTING | 在数据包到达防火墙时,进行路甶判断之前执行的规则,作用是改变数据包的目的地址、目的端□等就是收信时,根据规则重写收件人的地址。 例如:把公网IP : XXX.XXX.XXX.XXX映射到局域网的XX.XX.XX.XX服务器上。 如果是web服务,可以报80转换为局域网的服务器9000端□上 |
POSTROUTING | 在数据包离开防火墙时进行路由判断之后执行的规则,作用改变数据包的源地址,源端口等。 写好发件人的地址,要让家人回信时能够有地址可回。 例如。默认笔记本和虚拟机都是局域网地址,在出网的时候被路甶器将源地址改为了公网地址。 |
iptanles企业应用场景
1、主机防火墙(filter表的INPUT链)。
2、局域网共享上网(nat表的POSTROUTING链)。半个路由器,NAT功能。
3、端口及IP映射(nat表的PREROUTING链),硬防的NAT功能。
4、IP一对一映射。
iptables工作原理
iptables基本语法
-I(大写i 插入) -A(追加) -R(替换) -D(删除) -L(列表显示)
-I将会把规则放在第一行,-A将会放在最后一行。
例子:
iptables –t filter -A INPUT -p tcp --dport 22 -j DROP
iptables –t filter -A INPUT -p tcp --dport 3306 -j DROP
iptables –t filter -I INPUT -p tcp --dport 80 -j DROP
说明:前两句就算是先执行,第三句也会是第一行
查看防火墙规则
-L 查看iptables控制策略列表信息
-n 查看iptables控制策略列表里面的ip地址和端口信息,不翻译,以数字表示
--line-number 查看iptables策略信息时,显示每条规则序号信息
-v 查看iptables策略详细信息(进出口)
[root@iptables ~]# iptables -nL --line-number
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
清除防火墙规则
-F 清除所有规则,不会处理默认的规则
-X 删除用户自定义的链
其余参数
-A 向指定链添加相应规则,默认从规则号结尾进行添加(添加最后)
-I 向指定链中插入规则,默认插入到第一条规则之上
-p 指定访问数据的协议类型(tcp、udp、icmp)
--dport 指定目标端口信息
--sport 指定源端口信息
-j 执行操作的动作(ACCEPT、DROP(丢弃)、REJECT(拒绝))
-D 删除指定链里面的规则策略
-i 指定数据流量进入接口信息(只能配置在INPUT链)
-o 指定数据流量流出接口信息(只能配置在OUTPUT链)
-s 指定数据流量源地址或网段信息
-d 指定数据流量目标地址或网段信息
! 表示控制策略取反
-m 表示增加扩展匹配功能
参数说明
禁止10.0.0.0网段连入:
iptables -t filter -A INPUT -i eth0 -s 10.0.0.0/24 -j DROP
可以不指定 -t filter 因为默认就是filter表
-i:流量进入的接口(从eth0进入)
-s:源地址
源地址不是10.0.0.150的单个IP的禁止连接:
iptables -t filter -A INPUT -i eth0 !-s 10.0.0.150 -j DROP
禁用icmp协议:
iptables -t filter -A INPUT -p icmp --icmp-type 8 -i eth0 -s 10.0.0.0/24 -j DROP
禁止访问响应服务端口:
以22端口为例
iptables -A INPUT -p tcp --dport 22 -j DROP 在默认表中的INPUT链中追加策略:禁止22端口访问
删除某规则:
iptables -D INPUT -p tcp --dport 22 -j ACCEPT --- 删除指定规则
iptables -D INPUT 2 --- 根据规则行号,删除相应的规则
禁止网段连入:
例子:禁止192.168.17.0网段访问10.0.0.7主机
iptables -A INPUT -s 192.168.17.0/24 -d 10.0.0.7 -j DROP
例子:禁止某个192.168.17.0网段不能访问服务器主机的22端口
iptables -A INPUT -s 192.168.17.0/24 -d 10.0.0.7 -p tcp --dport 22 -j DROP
匹配指定协议以外的所有协议:
! 表示取反
iptables -A INPUT ! –p tcp –s 10.0.0.0/24 -j DROP centos6写法
-p ! tcp centos5写法
设置连续多端口控制策略:
iptables -A INPUT -p tcp --dport 22:80 -j DROP
设置不连续多端口控制策略:
iptables -A INPUT -p tcp -m multiport --dport 22,80 -j DROP
-m --- 表示增加扩展匹配功能 multiport 实现不连续多端口扩展匹配
对网络数据传输进行限速:
iptables -I INPUT -s 10.0.0.7 -p icmp --icmp-type 8 -m limit --limit 6/min --limit-burst 5 -j ACCEPT
iptables -I INPUT -s 10.0.0.7 -p icmp --icmp-type 8 -j DROP--limit n/{second/minute/hour}:
解释:指定时间内的请求速率”n”为速率,后面为时间分别为:秒 分 时--limit-burst [n]
解释:在同一时间内允许通过的请求”n”为数字,不指定默认为5
企业级防火墙部署案例
两种思想:对于默认策略为允许状态,防火墙规则就相当于黑名单;对于默认策略为禁止状态,防火墙规则就相当于白名单。
首先清空默认规则,然后设置远程连接规则,防止自己被踢出,更改默认规则
iptables -F
iptables -X
iptables -Z
iptables -A INPUT -p tcp --dport 22 -j ACCEPT --- 防止被踢出门外
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
被指安全白名单策略
iptables -A INPUT -i lo -j ACCEPT --- 让自己可以ping自己
iptables -A INPUT -p tcp -m multiport --dport 80,443 -j ACCEPT --- 允许哪些网站服务可以访问
iptables -A INPUT -s 172.16.1.0/24 -j ACCEPT --- 允许架构内部服务进行访问
iptables -A INPUT -s 10.0.0.0/24 -j ACCEPT --- 允许一些合作企业的外网服务器进行访问
这几条就是最简单的企业防火墙部署
防火墙配置永久生效方法
第一种方式
[root@iptables ~]# /etc/init.d/iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
[root@iptables ~]# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.7 on Wed Jan 17 16:12:23 2018
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [82:9632]
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
-A INPUT -s 172.16.1.0/24 -j ACCEPT
COMMIT
# Completed on Wed Jan 17 16:12:23 2018
第二种方式
iptables-save >/etc/sysconfig/iptables
状态机制配置
# 允许关联的状态包通过(web服务不要使用FTP服务)
NEW
new说明这个包是我们看到的第一个包,意思就是,这是conntrack模块看到的某个连接的第一个包,它即将被匹配了。比如,我们看到一个SYN包,是我们所留意的连接的第一个包,就要匹配它。
表示新建立连接的数据包状态
ESTABLISHED
ESTABLISHED已经注意到两个方向上的数据传输,而且会继续匹配这个连接的包。处于ESTABLISHED状态的连接是非常容易理解的。只要发送并接到应答,连接就是ESTABLISHED的了。一个连接要从new变为ESTABLISHED,只需要接到应答包即可,不管这个包是发往防火墙的,还是要由防火墙转发的。ICMP的错误和重定向信息包也被看作是ESTABLISHED,只要他们是我们所发出的信息的应答。
表示新建立连接数据包发送之后,回复响应的数据包状态
RELATED
RELATED是个比较麻烦的状态,当一个连接和某个已处于ESTABLISHED状态的连接有关系时,就会被认为是RELATED的了。换句话说,一个连接要想是RELATED的,首先要有一个ESTABLISHED的连接。这个ESTABLISHED连接再产生一个主连接之外的连接,这个新的连接就是RELATED的了,当然前提是conntarck模块要能理解RELATED。
表示借助已经建立的链路,发送新的连接数据包
INVALID
INVALID说明数据包不能被识别属于哪个连接或没有任何状态。有几个原因可以产生这种情况,比如,内存溢出,收到不知属于哪个连接的ICMP错误信息。一般地,我们DROP这个状态的任何东西,因为防火墙任务这是不安全的东西。
无效无法识别的数据包
防火墙服务配置在FTP服务器上时,需要配置以下策略
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables NAT实践过程
配置内网服务器利用iptables服务器外网网卡上网
route add default gw 172.16.1.200 --- 首先在内网服务器设置网关(网关为拥有外网网卡的防火墙服务器内网地址)
在防火墙服务器开启路由转发功能
[root@iptables ~]# vim /etc/sysctl.conf
[root@iptables ~]# sysctl -p
net.ipv4.ip_forward = 1
实现内网访问外网的NAT映射
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.200
-s 172.16.1.0/24 --- 指定将哪些内网网段进行映射转换
-o eth0 --- 指定在共享上网哪个网卡接口上做NAT地址转换
-j SNAT --- 将源地址进行转换变更
-j DNAT --- 将目标地址进行转换变更
--to-source ip地址 --- 将源地址映射为什么IP地址
--to-destination ip地址 --- 将目标地址映射为什么IP地址
iptables实现外网IP的端口映射到内网IP的端口
需求:将网关的IP和9000端口映射到内网服务器的22端口
端口映射 10.0.0.88:9000 -->172.16.1.8:22
实现命令:
iptables -t nat -A PREROUTING -d 10.0.0.88 -p tcp --dport 9000 -i eth0 -j DNAT --to-destination 172.16.1.8:22
-d 10.0.0.8目标地址
-j DNAT 目的地址改写
效果:连接88服务器的9000端口,会自动跳转连接到8服务器的22端口
[e:\~]$ ssh 10.0.0.88 9000Connecting to 10.0.0.88:9000...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.Last login: Wed Jan 17 09:48:56 2018 from 172.16.1.88
[root@web01 ~]#
网络安全学习路线
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
同时每个成长路线对应的板块都有配套的视频提供:
需要网络安全学习路线和视频教程的可以在评论区留言哦~
最后
- 如果你确实想自学的话,我可以把我自己整理收藏的这些教程分享给你,里面不仅有web安全,还有渗透测试等等内容,包含电子书、面试题、pdf文档、视频以及相关的课件笔记,我都已经学过了,都可以免费分享给大家!
给小伙伴们的意见是想清楚,自学网络安全没有捷径,相比而言系统的网络安全是最节省成本的方式,因为能够帮你节省大量的时间和精力成本。坚持住,既然已经走到这条路上,虽然前途看似困难重重,只要咬牙坚持,最终会收到你想要的效果。
黑客工具&SRC技术文档&PDF书籍&web安全等(可分享)
结语
网络安全产业就像一个江湖,各色人等聚集。相对于欧美国家基础扎实(懂加密、会防护、能挖洞、擅工程)的众多名门正派,我国的人才更多的属于旁门左道(很多白帽子可能会不服气),因此在未来的人才培养和建设上,需要调整结构,鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”,才能解人才之渴,真正的为社会全面互联网化提供安全保障。
特别声明:
此教程为纯技术分享!本教程的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本教程的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失
相关文章:

iptables网络安全服务详细使用
iptables防火墙概念说明 开源的基于数据包过滤的网络安全策略控制工具。 centos6.9 --- 默认防火墙工具软件iptables centos7 --- 默认防火墙工具软件firewalld(zone) iptables主要工作在OSI七层的二、三、四层,如果重新编译内核&…...

MiC建筑引领未来:中建海龙的探索与实践
随着全球城市化进程的加速推进,建筑行业正面临着前所未有的挑战与机遇。如何高效、环保地建造高质量的建筑,成为了行业内外普遍关注的焦点。在此背景下,MiC(Modular Integrated Construction,模块化集成建筑࿰…...

清华精品资料:DeepSeek从入门到精通、DeepSeek赋能职场
今天电脑天空给大家推荐2份清华大学专家编写的DeepSeek的使用手册,分别是《DeepSeek从入门到精通》和《DeepSeek赋能职场》。 《DeepSeek从入门到精通》是一本系统化的技术指南,旨在帮助用户从零基础到精通掌握通用人工智能模型DeepSeek的核心功能与应用…...

Nginx进阶篇 - nginx多进程架构详解
文章目录 1. nginx的应用特点2. nginx多进程架构2.1 nginx多进程模型2.2 master进程的作用2.3 进程控制2.4 worker进程的作用2.5 worker进程处理请求的过程2.6 nginx处理网络事件 1. nginx的应用特点 Nginx是互联网企业使用最为广泛的轻量级高性能Web服务器,其特点是…...
SpringBoot初始化8个常用方法
在 Spring Boot 中,初始化方法通常是在应用程序启动时被调用的,可以用来执行应用启动时的一些准备工作。以下是几种常见的初始化方法: 一、顺序 1. 图解 ┌─────────────────────────────┐│ Spring Boot…...

boolen盲注和时间盲注
获取当前数据库名 import requestsdef inject_database(url):namemax_length20low{a: 97, z: 122, A: 65, Z: 90, 0: 48, 9: 57, _: 95}high{97: a, 122: z, 65: A, 90: Z, 48: 0, 57: 9, 95: _}for i in range(1, max_length 1):low_val32high_val122while low_val < hi…...
CTF-web:java-h2 堆叠注入rec -- N1ctf Junior EasyDB
代码存在sql注入 // 处理登录表单的POST请求PostMapping({"/login"})public String handleLogin(RequestParam String username, RequestParam String password, HttpSession session, Model model) throws SQLException {// 验证用户凭据if (this.userService.valid…...
TUSB422 MCU 软件用户指南
文章目录 TUSB422 MCU 软件用户指南 目录表格图表1. 介绍2. 配置2.1 通用配置2.2 USB-PD 3.0 支持2.3 VDM 支持 3. 代码 ROM/RAM 大小优化4. 通过 UART 调试4. 移植到其他微控制器 TUSB422 MCU 软件用户指南 摘要 本文档是 TUSB422 微控制器基于 Type-C 端口控制(…...

BUU37 [DASCTF X GFCTF 2024|四月开启第一局]web1234100
Hint1:本题的 flag 不在环境变量中 Hint2:session_start(),注意链子挖掘 题目: 扫描出来www.zip class.php <?phpclass Admin{public $Config;public function __construct($Config){//安全获取基…...

常见的排序算法:插入排序、选择排序、冒泡排序、快速排序
1、插入排序 步骤: 1.从第一个元素开始,该元素可以认为已经被排序 2.取下一个元素tem,从已排序的元素序列从后往前扫描 3.如果该元素大于tem,则将该元素移到下一位 4.重复步骤3,直到找到已排序元素中小于等于tem的元素…...

vue学习9
1.文章分类页面-element-plus表格 基本架子-PageContainer封装 按需引入的彩蛋,components里面的内容都会自动注册 用el-card组件,里面使用插槽或具名插槽 文章分类渲染 & loading处理 序号: <el-table-column type"index"…...
TDengine 性能测试工具 taosBenchmark
简介工具获取运行 无参数模式命令行模式配置文件模式 命令行参数配置文件参数 通用配置参数写入配置参数 数据库相关超级表相关标签列与数据列写入行为相关 查询配置参数 执行指定查询语句查询超级表 订阅配置参数数据类型对照表 配置文件示例 写入 JSON 示例查询 JSON 示例订阅…...
【xdoj离散数学上机】T283
递归函数易错: 防止出现递归死循环! 题目 题目:求诱导出的等价关系的关系矩阵 问题描述 给定有限集合上二元关系的关系矩阵,求由其诱导出的等价关系的关系矩阵。 输入格式 第一行输入n,表示矩阵为n阶方阵,…...
Javaweb中,使用Servlet编写简单的接口
案例:网页提交用户名和密码信息,后端校验密码长度需在6-12位之间 后端部分 WebServlet("/valid") public class SimpleServlet extends HttpServlet{public void service(HttpServletRequest req, HttpServletResponse resp) throws IOExcepti…...

GESP5级语法知识(十):初级数论(三)
埃氏筛法: #include <iostream> using namespace std; const int N1e61; int pri[N]; void prime(int n){for(int i2;i*i<n;i){if(pri[i]0){ // 如果i为素数for(int jii;j<n;ji){pri[j]1; // 将i的倍数标记为合数}}} } int main(){int n;cin>>n;…...

“PEP 8: W292 no newline at end of file“报错 IntelliJ IDEA自动添加空行问题
"PEP 8: W292 no newline at end of file"报错 IntelliJ IDEA自动添加空行问题 在使用IntelliJ IDEA的过程中,经常会发现不管是对于代码文件或者纯文本文件,在保存时中会在文件末尾加上一个空行,提交GIT对比检查时,总是…...

ComfyUI工作流 FluxRedux基础换装
文章目录 FluxRedux基础换装SD模型Node节点工作流程效果展示开发与应用FluxRedux基础换装 该工作流的目标是实现服装换装功能,利用多种深度学习模型和图像处理技术,通过用户输入的服装图像和模特图像,生成逼真的换装效果图。整个工作流涵盖了从图像加载、模型编码、条件生成…...
【机器学习】常见采样方法详解
在机器学习领域,数据采样(Sampling)是一项至关重要的技术。它不仅影响模型的训练效率,还直接关系到模型的性能与泛化能力。本文将从基础概念出发,逐步深入介绍机器学习中常见的采样方法,帮助读者全面理解并…...

使用瑞芯微RK3588的NPU进行模型转换和推理
使用边缘设备进行算法落地时,通常要考虑模型推理速度,NVIDA系列平台可以使用TensorRT和CUDA加速,瑞芯微RK3588的板子上都是Arm的手机GPU,虽然没有类似CUDA的加速计算方式,但是提供了NPU进行加速推理,本文说…...

Flutter项目试水
1基本介绍 本文章在构建您的第一个 Flutter 应用指导下进行实践 可作为项目实践的辅助参考资料 Flutter 是 Google 的界面工具包,用于通过单一代码库针对移动设备、Web 和桌面设备构建应用。在此 Codelab 中,您将构建以下 Flutter 应用。 该应用可以…...

基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
Admin.Net中的消息通信SignalR解释
定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...

GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...