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

iptables详解

华子目录

  • 什么是`防火墙`
  • 分类
  • `netfilter`(`数据包过滤`)
    • 定义
    • `netfilter`分析内容
  • 防火墙无法完成的任务
  • `netfilter`策略管理工具
  • `netfilter`的`5类hook函数`
  • 防火墙规则
  • 策略匹配原则
  • `iptables`
    • `iptables`流量`处理动作`
    • `iptables表`
      • `5种规则表`
  • `安装iptables`
    • `iptables策略文件`
  • `iptables命令`的`语法格式`以及`常用参数`
    • 格式
    • 参数
    • 示例
      • 查看策略`iptables -nL --line`
      • 清空规则
      • 修改策略
      • 修改默认策略
      • 添加链
      • 修改链名
      • 删除链
      • 部署`nginx`,拒绝访问`80端口`
      • 拒绝`来源`为`172.25.254.100`访问`80端口`
      • 只能让`来源`为`172.25.254.100`访问`80端口`
      • `iptables`的`状态跟踪`(只能访问`22`和`80`端口)
      • 利用`iptables`搭建`Linux路由器`

什么是防火墙

  • 防火墙时位于内部网外部网之间的屏障,它按照系统管理员预先定义好的规则控制数据包的进出

在这里插入图片描述

  • 火墙系统内核上的一个模块netfilter数据包过滤机制
  • 通过netfilter来管理kernel space内核空间)的策略
  • 没有火墙时,流量直接访问内核管理服务
  • 火墙时,会在内核上开一个内核空间记录了什么流量可以通过,什么流量不可以通过)。负责往内核空间里面写东西的是netfilter
  • 一个linux内核上有2个网卡,只有开启内核路由转发功能,2个网卡才能通信
#临时开启内核路由转发
[root@server1 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward

分类

  • 硬件防火墙:由厂商设计好主机硬件,其操作系统主要以提供数据包数据的过滤机制,并去掉不必要的功能
  • 软件防火墙:保护系统网络安全的一套软件

netfilter数据包过滤

定义

  • netfilter是一个工作Linux内核网络数据包处理框架,用于分析进入主机网络数据包
  • 数据包头部数据硬件地址,软件地址,TCP,UDP,ICMP等提取出来进行分析,来决定该连接放行还是抵挡
  • netfilter分析OSI七层协议2,3,4层

netfilter分析内容

  • 拒绝Internet数据包进入主机某些端口
  • 拒绝某些来源IP数据包进入
  • 拒绝带有某些特殊标志flag)的数据包进入,如:带有SYN主动连接标志
  • 分析硬件地址MAC地址)决定是否连接
  • 可以做nat地址转换

防火墙无法完成的任务

  • 防火墙不能杀毒清除木马程序(假设主机开放www服务,那么防火墙设置一定是要将www服务port开放client端。假设www服务器漏洞,或者请求www服务数据包本身就是病毒一部分时,防火墙阻止不了的
  • 防火墙无法阻止来自内部攻击防火墙对于内部规则设置通常比较少,所以就很容易造成内部员工对于网络滥用情况

netfilter策略管理工具

  • netfilter这个内核网络栈过滤框架使用需要通过iptablesnftables进行

netfilter进行交互工具常用种类

  • iptables服务使用iptables交互,rhel6之前系统默认使用此服务管理手段丰富配置比较复杂
  • firewalld服务使用nftables交互,rhel6之后的版本默认使用此服务,配置类似windows火墙功能模块度高使用简单

在这里插入图片描述

  • iptablesfirewalld不是真正的防火墙,它们都只是用来定义防火墙策略管理工具,即只是一种服务,而真正使用规则干活的是内核的netfilter

netfilter5类hook函数

  • hook函数也叫规则链

在这里插入图片描述

  • 电脑客户端
  • input链:位于流量经过路由之后,并且目的ip本机ip
  • output链:由本机发出的流量,并且在路由之前
  • forward链:位于在流量路由之后目的ip不是本机ip
  • prerouting链:位于路由之前流量一致性检查之后
  • postrouting链所有即将离开本机流量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

防火墙规则

  • 放行
  • 阻止,拒绝
    • 拒绝返回信息拒绝
    • 阻止直接丢包

策略匹配原则

  • 防火墙从上至下顺序来读取配置策略
  • 找到匹配项后就立即结束配置工作并去执行匹配项中定义的行为即放行或阻止
  • 如果在读取完所有的策略没有匹配项,就去执行默认的策略

iptables

  • iptables从上至下顺序来读取配置策略
  • 找到匹配项后就立即结束配置工作并去执行匹配项中定义的行为即放行或阻止
  • 如果在读取完所有的策略没有匹配项,就去执行默认的策略
  • iptables规则默认保存在内存中,如果需要永久保存需要把策略保存到/etc/sysconfig/iptables
#永久保存
[root@server1 ~]# service iptables save

iptables流量处理动作

规则链匹配后应采用以下几种动作处理匹配流量

  • accept允许流量通过
  • reject拒绝流量通过拒绝后回复拒绝信息
  • log记录日志信息
  • drop拒绝流量通过流量丢弃不回复

iptables表

  • 表中可以有多种hook函数每个规则链中里可以有多个策略

5种规则表

  • raw表第一优先级不会数据包进行跟踪和nat转换,使用output,prerouting对应的动作notrack
  • mangle表第二优先级,主要用于修改数据包TOS(Type Of Service服务类型)、TTL(Time To Live生存周期)值以及为数据包设置Mark标记,以实现Qos以及策略路由
    • 由于需要相应的路由设备支持,因此应用并不广泛,包含全部5个规则链
  • nat表第三优先级网络地址转换表,用于修改源和目的地址,分snat源地址转换)和dnat目的地址转换)。包含三个规则链output,prerouting,postrouting(和内核无关数据包,主要做地址转换
  • filter表第四优先级,用于对数据包过滤外网进入内网时),根据具体的规则决定是否放行该数据包(如drop,accept,reject),包含三个规则链input,forward,forward(经过内核处理过的所有网络包input,output,forward
    • 所谓的防火墙其实基本上是指这张表上过滤规则常用
  • security表最不常用的表
    • 通常我们说的iptables只有4张表security表新加入的特性,用于在数据包应用selinux

安装iptables

  • RHEL9,Centos7默认使用的是firewalld,且与iptables之间有冲突,如果需要使用iptables需要先停止firewalld进行安装
[root@server1 ~]# systemctl stop  firewalld[root@server1 ~]# systemctl disable  firewalld#锁服务,解锁服务使用unmask
[root@server1 ~]# systemctl mask firewalld.service
[root@server1 ~]# yum  install iptables-services -y
[root@server1 ~]# systemctl enable --now iptables[root@server1 ~]# systemctl is-active iptables
active

iptables策略文件

规则链存储文件/etc/sysconfig/iptables

  • 前三行注释
  • 显示的是filter表规则链
[root@server1 ~]# cat /etc/sysconfig/iptables
# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

iptables命令语法格式以及常用参数

  • 永久保存策略
[root@server1 ~]# service  iptables save   #保存设置的规则
# 注意:保存设置的规则,否则重启后会恢复默认设置

格式

[root@server1 ~]# iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 控制动作#-A添加策略
#-I在指定位置添加策略
#-D删除策略
#-R修改策略
#-j控制动作

参数

参数作用
-t指定的表进行操作必须是raw,nat,filter,mangle,security中的一个默认filter
-p指定要匹配的数据包协议类型
-s匹配源地址ip/mask,当后面没有mask源ip一个地址(比如192.168.1.1);当有mask时,表示一个网段(比如192.168.1.0/24
-d匹配目的地址ip/mask
-i 网卡名匹配从这块网卡流入数据只对input,forward,prerouting链起作用。如果没有指定此选项,则表示可以流入任何一个网卡
-o 网卡名匹配从这块网卡流出数据,只对nat表中的链起作用。如果没有指定此选项,则表示可以从任何一个网卡流出
-L列出规则链(chain)上所有规则,如果没有指定链,列出所有链所有规则
-A指定规则链末尾加入新策略
-I num指定规则链指定位置插入策略,如果num为1,表示在头部插入num为2,表示在第二条策略位置处插入
-D num删除指定位置的策略
-R num替换/修改第几条策略
-P设置指定链默认策略,只有内置的链才可以设置用户自定义不允许设置
-F清空所有策略
-N创建新链
-X删除指定的这个链必须没有其它任何策略引用,而且这条链上必须没有任何策略。如果没有指定链名,则会删除中所有非内置的链
-E修改链名
-Z指定链,或者中的所有链上的所有计数器清零
-j满足某条件时该执行什么样的动作
-h显示帮助信息

示例

查看策略iptables -nL --line

[root@server1 ~]# iptables -t filter -nL --line# -n:显示源# -L:写在最后,列出所有规则# --line:增加行号

在这里插入图片描述

[root@server ~]# iptables -nvxL --line
# 参数释义# -n:显示源# -v:详细信息# -x:单位自动转换为KB\MB# -L:写在最后,列出所有规则# --line:增加行号
[root@server ~]# iptables -nvxL --line
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num      pkts      bytes target     prot opt in     out     source
destination
1         159    24271 ACCEPT     0    --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
2           0        0 ACCEPT     1    --  *      *       0.0.0.0/0            0.0.0.0/0
3           0        0 ACCEPT     0    --  lo     *       0.0.0.0/0            0.0.0.0/0
4           0        0 ACCEPT     6    --  *      *       0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
5          19     1843 REJECT     0    --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibitedChain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num      pkts      bytes target     prot opt in     out     source
destination
1           0        0 REJECT     0    --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibitedChain OUTPUT (policy ACCEPT 143 packets, 12422 bytes)
num      pkts      bytes target     prot opt in     out     source
destination# 显示释义# num:规则的行号# pkts:数据包数量# bytes:数据包字节数# target:动作(放行、拒绝)# port:端口# in:入站网卡# out:出站网卡

清空规则

# 清空内存中的规则(清空所有表的所有链)
[root@server ~]# iptables  -F      

修改策略

  • -R修改策略
[root@server1 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
REJECT     tcp  -- !172.25.254.100       0.0.0.0/0            tcp dpt:80 reject-with icmp-port-unreachable
[root@server1 ~]# iptables -R INPUT 1 -p tcp -s 172.25.254.100 --dport 80 -j REJECT[root@server1 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
REJECT     tcp  --  172.25.254.100       0.0.0.0/0            tcp dpt:80 reject-with icmp-port-unreachable

修改默认策略

  • -P修改默认策略
[root@server1 ~]# iptables -nL

在这里插入图片描述

[root@server1 ~]# iptables -P FORWARD DROP[root@server1 ~]# iptables -nL

在这里插入图片描述

添加链

  • -N添加链
[root@server1 ~]# iptables -N huazi[root@server1 ~]# iptables -nL

在这里插入图片描述

修改链名

  • -E修改链名
[root@server1 ~]# iptables -E huazi HUAZI[root@server1 ~]# iptables -nL

在这里插入图片描述

删除链

  • -X删除链
[root@server1 ~]# iptables -X HUAZI[root@server1 ~]# iptables -nL

在这里插入图片描述

部署nginx,拒绝访问80端口

[root@server1 ~]# yum install nginx -y#先清空策略
[root@server1 ~]# iptables -F#添加策略
[root@server1 ~]# iptables -A INPUT -p tcp --dport 80 -j REJECT[root@server1 ~]# iptables -nL

在这里插入图片描述

[root@server1 ~]# echo hello world > /usr/share/nginx/html/index.html[root@server1 ~]# systemctl enable --now nginx
[root@server1 ~]# curl 172.25.254.100
curl: (7) Failed to connect to 172.25.254.100 port 80: 拒绝连接
#删除策略后
[root@server1 ~]# iptables -D INPUT 1[root@server1 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destinationChain FORWARD (policy ACCEPT)
target     prot opt source               destinationChain OUTPUT (policy ACCEPT)
target     prot opt source               destination
[root@server1 ~]# curl 172.25.254.100
hello world

拒绝来源172.25.254.100访问80端口

#先清空
[root@server1 ~]# iptables -F[root@server1 ~]# iptables -A INPUT -p tcp -s 172.25.254.100 --dport 80 -j REJECT[root@server1 ~]# iptables -nL

在这里插入图片描述

[root@server1 ~]# curl 172.25.254.100
curl: (7) Failed to connect to 172.25.254.100 port 80: 拒绝连接

在这里插入图片描述

#删除策略
[root@server1 ~]# iptables -D INPUT 1
[root@server1 ~]# curl 172.25.254.100
hello world

只能让来源172.25.254.100访问80端口

  • !取反
[root@server1 ~]# iptables -F[root@server1 ~]# iptables -A INPUT -p tcp ! -s 172.25.254.100 --dport 80 -j REJECT[root@server1 ~]# iptables -nL

在这里插入图片描述

[root@server1 ~]# curl 172.25.254.100
hello world

在这里插入图片描述

#删除
[root@server1 ~]# iptables -D INPUT 1
[root@server1 ~]# curl 172.25.254.100
hello world

在这里插入图片描述

iptables状态跟踪(只能访问2280端口)

  • 没有状态跟踪之前
[root@server1 ~]# iptables -F
[root@server1 ~]# iptables -A INPUT -i lo -j ACCEPT
[root@server1 ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
[root@server1 ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
[root@server1 ~]# iptables -A INPUT -j REJECT
[root@server1 ~]# iptables -F

在这里插入图片描述

  • 但是这样写消耗大量的cpu等资源,我们应该对流量进行状态跟踪,只对第一次访问流量检测
[root@server1 ~]# iptables -F
[root@server1 ~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
[root@server1 ~]# iptables -A INPUT -m state --state NEW -i lo -j ACCEPT
[root@server1 ~]# iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT
[root@server1 ~]# iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
[root@server1 ~]# iptables -A INPUT -j REJECT
[root@server1 ~]# iptables -nL

在这里插入图片描述

利用iptables搭建Linux路由器

准备2主机

  • 一台server1,一个nat网卡,一个仅主机网卡
  • 一台server2,一个仅主机网卡
  • server1充当server2路由器
  • server1ip配置

在这里插入图片描述

[root@server1 ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection
[connection]
id=eth0
uuid=3fe4f788-e5f3-4046-8a3e-6cdfb8098aab
type=ethernet
interface-name=eth0[ethernet][ipv4]
address=172.25.254.100/24,172.25.254.2
dns=114.114.114.114;
method=manual[ipv6]
addr-gen-mode=default
method=auto[proxy][root@server1 ~]# cat /etc/NetworkManager/system-connections/eth1.nmconnection
[connection]
id=eth1
type=ethernet
interface-name=eth1[ethernet][ipv4]
address=192.168.0.100/24
method=manual[ipv6]
addr-gen-mode=default
method=auto[proxy]
[root@server1 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.25.254.2    0.0.0.0         UG    100    0        0 eth0
172.25.254.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     101    0        0 eth1
  • server2ip配置
[root@server2 ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection
[connection]
id=eth0
uuid=3fe4f788-e5f3-4046-8a3e-6cdfb8098aab
type=ethernet
interface-name=eth0[ethernet][ipv4]
address=192.168.0.200/24,192.168.0.100
dns=114.114.114.114;
method=manual[ipv6]
addr-gen-mode=default
method=auto[proxy]

在这里插入图片描述

[root@server2 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.100   0.0.0.0         UG    100    0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0
  • server1开启内核路由功能
#临时开启
[root@server1 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
  • 内网访问外网
[root@server1 ~]# iptables -F
[root@server1 ~]# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.100
[root@server1 ~]# iptables -t nat -nL

在这里插入图片描述

#这时server2就可以上网了
[root@server2 ~]# ping www.baidu.com
PING www.a.shifen.com (110.242.68.4) 56(84) 比特的数据。
64 比特,来自 110.242.68.4 (110.242.68.4): icmp_seq=1 ttl=127 时间=106 毫秒
64 比特,来自 110.242.68.4 (110.242.68.4): icmp_seq=2 ttl=127 时间=35.3 毫秒
64 比特,来自 110.242.68.4 (110.242.68.4): icmp_seq=3 ttl=127 时间=70.6 毫秒
  • 外网访问内网
[root@server1 ~]# iptables -t nat -A PREROUTING -i eth0 -j DNAT --to-dest 192.168.0.200
[root@server1 ~]# iptables -t nat -nL

在这里插入图片描述
在这里插入图片描述

相关文章:

iptables详解

华子目录 什么是防火墙分类netfilter&#xff08;数据包过滤&#xff09;定义netfilter分析内容 防火墙无法完成的任务netfilter策略管理工具netfilter的5类hook函数防火墙规则策略匹配原则iptablesiptables流量处理动作iptables表5种规则表 安装iptablesiptables策略文件 ipta…...

静态链表的构建

前言&#xff1a; 静态链表的概述&#xff1a; 静态链表是一种在数组中模拟链表结构的数据结构&#xff0c;它通过数组的索引来模拟指针&#xff0c;实现节点之间的链接&#xff0c;就不需要使用指针了。每个节点由两部分组成&#xff1a;数据域和游标。数据域用于储存数据&a…...

python3中的身份运算符

一. 简介 本文简单学习一下&#xff0c;python3中的身份运算符。 在Python 3中&#xff0c;身份运算符用于比较两个对象的身份&#xff0c;即它们是否引用内存中的同一个对象。 二. python3 中的身份运算符 1. python3 中的身份运算符 python3 中的身份运算符如下表所示&a…...

Java泛型设计详解

引言 在日常Java开发中&#xff0c;泛型是一个非常重要的特性。它提供了编译时的类型安全检查&#xff0c;增强了代码的可读性和可维护性。然而&#xff0c;对于初学者甚至一些有经验的开发者来说&#xff0c;泛型的使用和理解仍然是一个挑战。本文旨在深入探讨Java泛型的诞生…...

第十九章程序清单合集——Java语言程序设计进阶篇(黑皮书)

目录 程序清单19_1GenericStack 程序清单19_2GenericMethodDemo 程序清单19_3BoundedTypeDemo 程序清单19_4GenericSort 程序清单19_5Max 程序清单19_6MaxUsingGenericType 程序清单19_7wildCardNeedDemo 程序清单19_8AnyWildCardDemo 程序清单19_9SuperWildChardDem…...

el-table组件树形数据修改展开箭头

<style lang"scss" scoped> ::v-deep .el-table__expand-icon .el-icon-arrow-right:before {content: ">"; // 箭头样式font-size: 16px; }::v-deep .el-table__expand-icon{ // 没有展开的状态background-color: rgba(241, 242, 245, 1);color:…...

LabVIEW前面板无法显示的常见原因

当 LabVIEW 前面板显示为白色或黑色时&#xff0c;可能由于控件可视性设置、显卡驱动问题、程序错误或 LabVIEW 设置不当引起。通过检查面板设置、更新驱动、重启程序等方式可有效解决此问题。 遇到前面板无法显示或显示为白色/黑色的情况&#xff0c;可能有以下几种原因。可以…...

PyQt事件机制练习

一、思维导图 二、代码 import sysfrom PyQt6.QtTextToSpeech import QTextToSpeech from PyQt6.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QLineEdit from PyQt6 import uic from PyQt6.QtCore import Qt, QTimerEvent, QTimeclass MyWidget(QWidget):d…...

Android 中,Activity Fragment:如何进行界面跳转、数据传递等

学习笔记 1. Activity 之间的界面跳转和数据传递 在 Android 中&#xff0c;Activity 之间的跳转通常通过 Intent 来完成。Intent 可以携带数据&#xff0c;并传递给目标 Activity&#xff0c;也可以从目标 Activity 返回数据。 从一个 Activity 跳转到另一个 Activity // 在…...

【ubuntu18.04】安装easycwmp出现/usr/bin/ld: cannot find -lubus问题解决方案

错误日志 rootw1804-virtual-machine:/opt/dev/easycwmp# make Making all in bin make[1]: Entering directory /opt/dev/easycwmp/bin gcc -DPACKAGE_NAME\"easycwmpd\" -DPACKAGE_TARNAME\"easycwmpd\" -DPACKAGE_VERSION\"1.8.6\" -DPACKAG…...

可视化建模以及UML期末复习----做题篇

一、单项选择题。&#xff08;20小题&#xff0c;每小题2分,共40分&#xff09; 1、UML图不包括&#xff08; &#xff09; A、用例图 B、状态机图 C、流程图 D、类图 E、通信图 答案&#xff1a;C、流程图 UML中不包括传统意义上的流程图&#xff0c;流程图通常是指B…...

【2024年浙江工商大学程序设计竞赛新生赛(同步赛)部分题解】

比赛链接 C. 交换 题目大意 给定一个长度为 n n n 的数组 a a a。一开始你有一个总和 s 0 s 0 s0。 现在你需要做 n n n 次操作&#xff0c;第 i i i 次操作的流程如下&#xff08; 1 ⩽ i ⩽ n 1 \leqslant i \leqslant n 1⩽i⩽n)&#xff1a; 选择一个下标 p ∈…...

[SAP ABAP] DEBUG ABAP程序中的循环语句

在ABAP程序开发中可能会遇到要DEBUG循环语句的情况&#xff0c;这个循环语句可能会执行上万次&#xff0c;但我们希望程序执行循环到100次就停下来&#xff0c;也就是希望DEBUG断点设置在循环语句的第100次停下来观察执行的结果&#xff0c;这时我们可以在DEBUG程序时通过设置一…...

解决阿里云轻量级服务器 Ubuntu 24.04.1 LTS 没网也 ping 不通 8.8.8.8 以及 route -n 没有输出任何转发信息

事情发生在两天前&#xff0c;位于公网的阿里云轻量级服务器&#xff08;Ubuntu 24.04.1 LTS&#xff09;忽然没网。主要是上次上服务器进行配置已经是一个多月前&#xff0c;最近也没有做什么事情&#xff0c;就忽然没网了&#xff0c;让人纳闷。更主要的是&#xff0c;上次备…...

AUTOSAR:SOME/IP 概念

文章目录 1. 用例与需求1.1 典型用例1.2 对中间件的要求 2. 协议栈示例3. SOME/IP 概念3.1 中间件整体功能与架构3.2 服务组成元素详细解释 4. 服务发现机制深入剖析5. 总结 1. 用例与需求 1.1 典型用例 信息娱乐系统&#xff1a; 后座娱乐系统连接&#xff1a;允许后排乘客连…...

STM32--中断

中断 中断向量表 定义一段固定的内存&#xff0c;以4字节对齐&#xff0c;存放各个中断服务函数程序的首地址。定义在启动文件中。 中断相关寄存器 内核中断不经过中断使能、除能寄存器。 中断优先级 1、抢占优先级&#xff1a;高高抢占优先级可以打断正在执行的低抢占优先…...

海思3559a开发

目录 固件烧录配置网络nfs挂载虚拟机文件使用telnet连接开发板 固件烧录 1、配置好HiTool烧录工具 需要注意长度必须不小于对应文件大小 2、开始烧录 先点击擦除全器件&#xff0c;重新给开发板上电&#xff0c;擦除成功后如下图所示。 点击烧写&#xff0c;重新给开发板上电…...

优选算法——位运算

1. 常见位运算总结 2. 判定字符是否唯一 题目链接&#xff1a;面试题 01.01. 判定字符是否唯一 - 力扣&#xff08;LeetCode&#xff09; 题目展示&#xff1a; 题目分析&#xff1a;本题有很多种做法&#xff0c;这里我们使用位图来解决&#xff0c;这种做法是一种效率很高…...

【JAVA】旅游行业中大数据的使用

一、应用场景 数据采集与整合&#xff1a;全面收集旅游数据&#xff0c;如客流量、游客满意度等&#xff0c;整合形成统一数据集&#xff0c;为后续分析提供便利。 舆情监测与分析&#xff1a;实时监测旅游目的地的舆情信息&#xff0c;运用NLP算法进行智能处理&#xff0c;及…...

使用html和JavaScript实现一个简易的物业管理系统

码实现了一个简易的物业管理系统&#xff0c;主要使用了以下技术和功能&#xff1a; 1.主要技术 使用的技术&#xff1a; HTML: 用于构建网页的基本结构。包括表单、表格、按钮等元素。 CSS: 用于美化网页的外观和布局。设置字体、颜色、边距、对齐方式等样式。 JavaScript…...

浅谈Kubernetes(K8s)之RC控制器与RS控制器

1.RC控制器 1.1RC概述 Replication Controller 控制器会持续监控正在运行的Pod列表&#xff0c;并保证相应类型的Pod的数量与期望相符合&#xff0c;如果Pod数量过少&#xff0c;它会根据Pod模板创建新的副本&#xff0c;反之则会删除多余副本。通过RC可实现了应用服务的高可用…...

如何在 openAI Sora 上生成视频内容

近期OpenAI 推出了我们期待已久的视频生成模型 Sora。能够生成包含多个角色、特定类型的动作以及主体和背景的精确细节的复杂场景。该模型不仅了解用户在提示中要求的内容&#xff0c;还了解这些内容在物理世界中的存在方式。 如何在 openAI Sora 上生成视频内容 使用Sora 视频…...

【Oracle11g SQL详解】日期和时间函数:SYSDATE、TO_DATE、TO_CHAR 等

日期和时间函数&#xff1a;SYSDATE、TO_DATE、TO_CHAR 等 在 Oracle 数据库中&#xff0c;日期和时间函数用于处理日期和时间数据。它们在记录创建时间、分析时间间隔、格式化输出等场景中非常重要。本文将详细讲解常用的日期和时间函数及其应用。 一、SYSDATE&#xff1a;获…...

STM32 串口收发文本数据包

单片机学习&#xff01; 目录 前言 一、文本数据包格式 二、串口收发文本数据包代码 三、代码解析 3.1 标志位清除 3.2 数据包接收 四、代码问题改进 总结 前言 本文介绍了串口收发文本数据包程序设计的思路并详解代码作用。 一、文本数据包格式 文本数据包的格式的定义…...

铭记一次项目重大事故

在程序的世界里&#xff0c;bug 就像隐藏在暗处的小怪兽&#xff0c;时不时跳出来捣乱。而职业生涯中&#xff0c;总有那么一个或几个 bug 让我们刻骨铭心。它或许让项目差点夭折&#xff0c;或许让你熬了无数个通宵&#xff0c;或许有着离奇的出现方式和曲折的解决过程。无论是…...

AUTOSAR 汽车开放系统架构

AUTOSAR 官网 AUTOMOTIVE OPEN SYSTEM ARCHITECTURE AUTOSAR (AUTomotive Open System ARchitecture) is a global partnership of leading companies in the automotive and software industry to develop and establish the standardized software framework and open E/E …...

从零用java实现 小红书 springboot vue uniapp (2)主页优化

前言 移动端演示 http://8.146.211.120:8081/#/ 前面的文章我们基本完成了主页的布局 今天我们具体的去进行实现 并且分享我开发时遇到的问题 首先先看效果 java仿小红书主页 实现效果为 1.顶端全屏切换 2.上划加载更多 3.下拉当前页整体刷新 顶端全屏切换我们选择 gui-switch…...

打电话玩手机识别-支持YOLO,COCO,VOC格式的标记,超高识别率可检测到手持打电话, 非接触式打电话,玩手机自拍等

打电话玩手机识别-支持YOLO&#xff0c;COCO&#xff0c;VOC格式的标记&#xff0c;超高识别率可检测到手持打电话&#xff0c; 非接触式打电话&#xff0c;玩手机自拍等1275个图片。 手持打电话&#xff1a; 非接触打电话 玩手机 数据集下载 yolov11:https://download.csdn…...

黑马程序员Java项目实战《苍穹外卖》Day12

苍穹外卖-day12 课程内容 工作台Apache POI导出运营数据Excel报表 功能实现&#xff1a;工作台、数据导出 工作台效果图&#xff1a; 数据导出效果图&#xff1a; 在数据统计页面点击数据导出&#xff1a;生成Excel报表 1. 工作台 1.1 需求分析和设计 1.1.1 产品原…...

实现SpringBoot项目嵌入其他项目

很多时候我们需要在项目里面嵌入其他项目或者被其他项目嵌入&#xff0c;如我们开发一个开源项目b&#xff0c;用户需要在自己的项目a嵌入b项目&#xff0c;使用b项目的功能&#xff0c;而且要实现a项目工作最小化&#xff0c;最好实现引入即用。 1.定义b项目的自定义配置 …...

海康威视摄像头RTSP使用nginx推流到服务器直播教程

思路&#xff1a; 之前2020年在本科的时候&#xff0c;由于项目的需求需要将海康威视的摄像头使用推流服务器到网页进行直播。这里将自己半个月琢磨出来的步骤给大家发一些。切勿转载&#xff01;&#xff01;&#xff01;&#xff01; 使用网络摄像头中的rtsp协议---------通…...

【自动化】requirements.txt

1.是什么&#xff1f; 用于列出项目依赖的所有Python包及其版本。这使得其他开发者可以轻松地安装与你的项目兼容的环境&#xff0c;或者在不同的机器上复制相同的开发环境。 2.如何编写requirements.txt 手动创建 格式&#xff1a; 包名版本号 在终端home命令自动生成 创建r…...

C++ 中多态性在实际项目中的应用场景

背景与需求 在一个图形绘制软件中&#xff0c;需要绘制多种不同的图形&#xff0c;如圆形、矩形、三角形等。每个图形都有自己的绘制方法&#xff0c;但是它们都可以被看作是一个抽象的 “图形” 概念&#xff0c;并且都有一个共同的操作&#xff0c;比如绘制&#xff08;draw&…...

手机租赁系统开发指南一站式服务流程解析

内容概要 手机租赁系统的开发是一个复杂但有趣的过程&#xff0c;像搭建乐高一样&#xff0c;只要找到合适的模块&#xff0c;就能打造出一个宾至如归的租赁平台。在这部分&#xff0c;我们将对开发流程的整体结构进行简要概述&#xff0c;并指出每个环节的重要性。 首先&…...

基于Couchbase的数据构建方案:数仓分层

初步方案是将公共层和报表层分别放在不同的bucket中&#xff0c;这种设计从存储和访问优化的角度是合理的&#xff0c;但仍有以下细节需要考虑&#xff1a; 1. 数仓公共层设计&#xff08;origin bucket&#xff09; 合理性分析&#xff1a; 将ODS、DWD、DWS层的数据放在一个b…...

Linux中的线程

目录 线程的概念 进程与线程的关系 线程创建 线程终止 线程等待 线程分离 原生线程库 线程局部存储 自己实现线程封装 线程的优缺点 多线程共享与独占资源 线程互斥 互斥锁 自己实现锁的封装 加锁实现互斥的原理 死锁 线程同步 线程的概念 回顾进程相关概念 …...

【保姆级】Mac如何安装+切换Java环境

本文从如何下载不同版本的JDK,到如何丝滑的切换JDK,以及常见坑坑的处理方法,应有尽有,各位看官走过路过不要错过~~~ 下载⏬ 首先上官网: https://www.oracle.com/ 打不开的话可以使用下面👇这个中文的 https://www.oracle.com/cn/java/technologies/downloads/a…...

leetcode 31 Next Permutation

题意 找到下一个permutation是什么&#xff0c;对于一个数组[1&#xff0c;2&#xff0c;3]&#xff0c;下一个排列就是[1, 3, 2] 链接 https://leetcode.com/problems/next-permutation/ 思考 首先任何一个permutation满足一个性质&#xff0c;从某个位置往后一定是降序。…...

从RocketMQ到Dubbo:自研中间件技术的崛起

目录 一. 宝兰德 BES 中间件&#xff08;BES - Business Enterprise Server&#xff09; 二. TongWeb 中间件 三. 阿里巴巴 RocketMQ 四. 京东 JStorm 五. 华为 GaussDB 六. 华为 FusionInsight 七. 百度 Tinker 八. 中科曙光 Kylin 九. 滴滴 Druid 一. 宝兰德 BES 中间…...

计算机键盘简史 | 键盘按键功能和指法

注&#xff1a;本篇为 “计算机键盘简史 | 键盘按键功能和指法” 相关文章合辑。 英文部分机翻未校。 The Evolution of Keyboards: From Typewriters to Tech Marvels 键盘的演变&#xff1a;从打字机到技术奇迹 Introduction 介绍 The keyboard has journeyed from a humb…...

考研两三题

283. 移动零 - 力扣&#xff08;LeetCode&#xff09; 本题解法&#xff1a;使用双指针 解法一&#xff1a; 如上图&#xff0c;在一开始slow指向-1&#xff0c;fast指向数组起始位&#xff0c;进入while循环&#xff0c;保证fast不越界&#xff0c;因为代码中fast会自增&#…...

CentOS8或docker镜像centos8更换镜像源

因为 CentOS 8 已经结束生命周期&#xff0c;原来的镜像源不可用了。我们需要将镜像源改为 CentOS 8 的替代源。 在容器中运行以下命令&#xff1a; 首先备份原有的源 cd /etc/yum.repos.d/ mkdir backup mv *.repo backup/ 创建新的源文件 cat > /etc/yum.repos.d/Cent…...

集成方案 | Docusign + 泛微,实现全流程电子化签署!

本文将详细介绍 Docusign 与泛微的集成步骤及其效果&#xff0c;并通过实际应用场景来展示 Docusign 的强大集成能力&#xff0c;以证明 Docusign 集成功能的高效性和实用性。 在现代企业运营中&#xff0c;效率和合规性是至关重要的。泛微作为企业级办公自动化和流程管理的解决…...

知乎数据分析面试题及参考答案

请阐述大数定理和中心极限定理的内容及其在数据分析中的应用。 大数定理是指在随机试验中,每次出现的结果不同,但是大量重复试验出现的结果的平均值却几乎总是接近于某个确定的值。简单来说,当样本量足够大的时候,样本均值会趋近于总体均值。例如,抛硬币试验,当抛硬币的次…...

8.Vue------如何重新加载子组件key属性----vue知识积累

在子组件中使用key属性是一种强制重新渲染子组件的有效方法。‌通过改变key属性的值&#xff0c;Vue会 销毁旧组件并创建新组件&#xff0c;从而实现组件的重新加载。这种方法适用于需要完全重新渲染子组件&#xff0c; 包括其内部状态和生命周期钩子的场景&#xff0c;特别是…...

C语言动态内存管理

1.为什么要有动态内存分配 内存开辟方式: int val 20;//在栈空间上开辟四个字节 char arr[10] {0};//在栈空间上开辟10个字节的连续空间开辟空间的方式特点 空间开辟大小是固定德的数组在申明的时候&#xff0c;必须指明数组的长度&#xff0c;数组空间一旦确定了大小不能…...

【蓝桥杯备战】Day 1

1.基础题目 LCR 018.验证回文串 给定一个字符串 s &#xff0c;验证 s 是否是 回文串 &#xff0c;只考虑字母和数字字符&#xff0c;可以忽略字母的大小写。 本题中&#xff0c;将空字符串定义为有效的 回文串 。 示例 1: 输入: s "A man, a plan, a canal: Panama…...

电子应用设计方案-51:智能镜子系统方案设计

智能镜子系统方案设计 一、引言 智能镜子作为一种新兴的智能家居设备&#xff0c;将传统镜子与现代科技相结合&#xff0c;为用户提供了丰富的功能和便捷的体验。本方案旨在设计一款功能强大、用户友好、外观美观的智能镜子系统。 二、系统概述 1. 系统目标 - 提供清晰的镜面…...

[2015~2024]SmartMediaKit音视频直播技术演进之路

技术背景 2015年&#xff0c;因应急指挥项目需求&#xff0c;我们实现了RTMP推送音视频采集推送&#xff08;采集摄像头和麦克风数据&#xff09;模块&#xff0c;在我们做好了RTMP推送模块后&#xff0c;苦于没有一个满足我们毫秒级延迟诉求的RTMP播放器&#xff0c;于是第一…...

图片添加水印的实验原理,实验代码,实验现象

一、图片添加水印的实验原理 1. 选择水印类型 可见水印&#xff1a;这些水印可以直接被肉眼看到&#xff0c;通常用于防止未经授权的使用。它们可以是文字、标志或图案等形式&#xff0c;并且放置在图像的显著位置。不可见水印&#xff1a;这类水印不容易被察觉&#xff0c;但…...