万字详解 Linux 网络管理

news2024/11/24 5:54:41

万字详解 Linux 网络管理

  • 1.Linux处理数据包过程
  • 2.和网络相关的几个文件说明
    • 网卡配置文件ifcfg-*
    • DNS配置文件/etc/resolv.conf(CentOS6环境)
    • /etc/services
  • 3.网络接口配置和主机名
    • ifconfig
    • ifcfg
    • hostname命令
  • 4.网关/路由
  • 5.网关/路由相关命令
    • route命令
    • 配置永久路由
  • 6.arping命令
  • 7.ip命令
    • ip addr
    • ip route
    • ip link

1.Linux处理数据包过程

当向外界主机发送数据时,在它从网卡流入后需要对它做路由决策,根据其目标决定是流入本机数据还是转发给其他主机

如果是流入本机的数据,则数据会从内核空间进入用户空间(被应用程序接收、处理)。当用户空间响应(应用程序生成新的数据包)时,响应数据包是本机产生的新数据,在响应包流出之前,需要做路由决策,根据目标决定从哪个网卡流出

如果不是流入本机的,而是要转发给其他主机的,则必然涉及到另一个流出网卡,此时数据包必须从流入网卡完整地转发给流出网卡,这要求Linux主机能够完成这样的转发。但Linux主机默认未开启ip_forward功能,这使得数据包无法转发而被丢弃。Linux主机和路由器不同,路由器本身就是为了转发数据包,所以路由器内部默认就能在不同网卡间转发数据包,而Linux主机默认则不能转发

如果Linux主机有多块网卡,如果不开启数据包转发功能,则这些网卡之间是无法互通的。例如eth0是172.16.10.0/24网段,而eth1是192.168.100.0/24网段,到达该Linux主机的数据包无法从eth0交给eth1或者从eth1交给eth0,除非Linux主机开启了数据包转发功能。🧄

在Linux上开启转发功能有多种方法:

echo 1 > /proc/sys/net/ipv4/ip_forward
sysctl -w net.ipv4.ip_forward=1

在这里插入图片描述

可以使用以下几种方式查看是否开启了转发功能:

sysctl net.ipv4.ip_forward
cat /proc/sys/net/ipv4/ip_forward
sysctl -a | grep ip_forward

值为1代表处于开启状态:

在这里插入图片描述

以上两种方法是临时生效的,若要永久生效,则应该写入配置文件:

echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/ip_forward.conf

2.和网络相关的几个文件说明

网卡配置文件ifcfg-*

/etc/sysconfig/network-scripts/目录下有不少文件,绝大部分都是脚本类的文件,但有一类ifcfg开头的文件为网卡配置文件,所有ifcfg开头的文件在启动网络服务的时候都会被加载读取

在这里插入图片描述

现在来看一个实例吧:

[root@192 network-scripts]# cat ifcfg-ens33 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=7bd71446-6924-4a75-9a06-d27020da1ed8
DEVICE=ens33  # 显示的名称,必须/sys/class/net/目录下的某个网卡名相同
ONBOOT=yes
DNS1=114.114.114.114

DNS配置文件/etc/resolv.conf(CentOS6环境)

为了更好的展示DNS配置文件的效果,此处采用CentOS6环境实验!

该文件用于设置DNS指向,以及解析顺序。该文件格式如下:

domain  domain_name       # 声明本地域名,即解析时自动隐式补齐的域名
search  domain_name_list  # 指定域名搜索顺序(最多6个),和domain不能共存,若共存了,则后面的行生效
nameserver  IP1           # 设置DNS指向,最多3个
nameserver  IP2
nameserver  IP3        
options timeout:n attempts:n  # 指定解析超时时间(默认5秒)和解析次数(默认2次)

例如将/etc/resolv.conf设置为下所示:

domain klza.com

在这里插入图片描述

当解析不带点".“的主机名时,如"www”,认为不是全限定域名,将自动加上".klza.com"变成解析"www.klza.com":

[root@xuexi ~]# host -a www
Trying "www.klza.com"
;; connection timed out; trying next origin
Trying "www"
;; connection timed out; no servers could be reached

当解析的名称末尾不带点但中间带了点的,如"www.host",认为是全限定域名,将直接解析"www.host",解析完这个后再解析加上"klza.com"的名称,即再解析"www.host.klza.com":

[root@xuexi ~]# host -a www.host
Trying "www.host"
;; connection timed out; trying next origin
Trying "www.host.klza.com"
;; connection timed out; no servers could be reached

当解析末尾带点的名称时,如"www.host.“认为是完整的全限定域名,将直接解析"www.host”,解析完后直接结束解析,不会再补齐本地域名再解析:

[root@xuexi ~]# host -a www.host.
Trying "www.host"
;; connection timed out; trying next origin
Trying "www.host"   # 默认解析两次
;; connection timed out; no servers could be reached

search关键字的作用和domain是一样的,只不过search同时还暗含域名搜索的顺序。例如设置search为如下内容:

search  aaa.com bbb.com ccc.com

在这里插入图片描述

此时若解析"www.host",将依次解析"www.host",“www.host.aaa.com”,“www.host.bbb.com”,“www.host.ccc.com”:

[root@xuexi ~]# host -a www.host
Trying "www.host"
;; connection timed out; trying next origin
Trying "www.host.aaa.com"
;; connection timed out; trying next origin
Trying "www.host.bbb.com"
;; connection timed out; trying next origin
Trying "www.host.ccc.com"
;; connection timed out; no servers could be reached

/etc/services

该文件中记录的是端口和服务的对应关系:

在这里插入图片描述


3.网络接口配置和主机名

ifconfig

ifconfig命令是一个接口配置命令,但更多的被用来显示已激活的网络接口信息

ifconfig [ interface | -a ]
ifconfig interface options

选项说明:
interface:指定被操作的网络接口名,如eth0
up       :激活指定的网络接口,如果在命令行中为网络接口分配了IP地址,则默认会up
down     :将指定的接口设置为down状态
[-]arp   :启用或禁用该接口上使用ARP协议,如"ifconfig eth0 -arp"
mtu N    :设置指定接口的最大传输单元(MTU)
netmask  :设置该接口的IP netmask,默认会采用A/B/C类地址的掩码位数
address  :要分配给该接口的IP地址

实例:

ifconfig eth0:1 192.168.100.20 netmask 255.255.255.0 up  # 添加IP地址
ifconfig eth0:1 192.168.100.20/24 up                     # 也可使用CIDR格式掩码
ifconfig eth1 up       # 激活该网络接口
ifconfig eth1 down     # 临时down掉eth1接口
ifconfig eth1 -arp     # 抑制eth1上的arp
ifconfig eth1 arp      # 启用eth1上的arp

ifconfig所有的配置都是应用于内核的,所以只会临时生效,重启网络服务后会立即失效🧅

ifcfg

ifcfg eth1:0 add 192.168.100.20/24   # 添加一个地址
ifcfg eth1:0 del 192.168.100.20      # 删除一个地址
ifcfg eth1 stop      # 临时禁用eth1

hostname命令

用于设置主机名,但也有几个其它好用的功能:

hostname [-I] [-f] [-d] [-s] [hostname]

选项说明:
-I         :获取该主机上所有非环回IP地址,该选项不依赖于主机名解析
-f,--fqdn  :获取fqdn
-d,--domain:获取fqdn的域名部分,等价于命令dnsdomainname
-s,--short :获取fqdn的主机名部分,严格地说是获取第一个"."前的部分,例如"www.baidu.com"将获取为"www"

案例:

使用-I选项可以直接获取该主机上的所有IP地址,包括别名地址:

在这里插入图片描述

hostname修改的主机名为临时生效,它修改的其实是/proc/sys/kernel/hostname文件:

在这里插入图片描述

要想永久生效修改主机名,需要修改配置文件/etc/hostname

echo "klza.com" >/etc/hostname

4.网关/路由

Linux上分为3种路由:

  • 主机路由:直接指明到某台具体的主机怎么走,主机路由也就是所谓的静态路由
  • 网络路由:指明某类网络怎么走
  • 默认路由:不走主机路由的和网络路由的就走默认路由。操作系统上设置的默认路由一般也称为网关

若Linux上到某主机有多条路由可以选择,这时候会挑选优先级高的路由。在Linux中,路由条目的优先级确定方式是先匹配掩码位长度,再比较管理距离。也就是说,掩码位长的路由条目优先级一定比掩码位短的优先级高,所以主机路由的优先级最高,然后是直连网络(即同网段)的路由(也算是网络路由),随后是网络路由,最后才是默认路由。若路由条目的掩码长度相同,则比较节点之间的管理距离,管理距离短的生效。

例如下面的路由表中,若ping 192.168.5.20,则先比对192.168.100.78发现无法匹配,然后比对192.168.100.0,发现也无法匹配,接着再匹配192.168.0.0这条网络路由条目,发现能匹配,所以选择该路由条目:

[root@xuexi ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.100.2   0.0.0.0         UG    100    0        0 eth0
172.16.10.0     0.0.0.0         255.255.255.0   U     100    0        0 eth1
192.168.0.0     192.168.100.70  255.255.0.0     UG    0      0        0 eth0
192.168.100.0   0.0.0.0         255.255.255.0   U     100    0        0 eth0
192.168.100.78  0.0.0.0         255.255.255.255 UH    0      0        0 eth0

再比如下面的路由表。由于两块网卡eth0和eth1都是192.168.100.0/24网段地址,所以它们的路由条目在掩码长度的匹配上是相同的,但是和eth0直连的网段主机通信时,肯定会选择eth0这条路由条目,因为eth1和该网段主机隔了一个eth0,距离增加了1:

[root@xuexi ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.100.2   0.0.0.0         UG    100    0        0 eth0
192.168.100.0   0.0.0.0         255.255.255.0   U     100    0        0 eth0
192.168.100.0   0.0.0.0         255.255.255.0   U     101    0        0 eth1

5.网关/路由相关命令

route命令

route命令用于显示和管理路由表。当使用了add或del选项时,route命令将设置路由条目,否则route命令将显示路由表

语法说明:

route [add/del] [-host/-net/default] [address[/mask]] [netmask] [gw] [dev]

选项说明:
add/del:增加或删除路由条目
-net:增加或删除的是一条网络路由
-host:增加或删除的是一条主机路由
default:增加或删除的是一条默认路由
netmask:明确使用netmask关键字指定掩码,要可以不使用该选项直接在地址上使用cidr格式的掩码,即IP/MASK。
gw:指定下一跳的地址。要求下一跳地址必须是能到达的,且一般是和本网段直连的接口。
dev:强制将路由条目关联到指定的接口上。一般内核会自动判断路由条目应该关联到哪个网络接口。

要显示路由表信息,只需简单的route -n即可,其中-n选项表示不解析主机名:

在这里插入图片描述

对于CentOS 6以上的系统,请忽略MetricRef两列,它们已经不被内核使用,只是有些路由软件可能会用上🥕

若要管理路由表,则使用add或del选项:

添加和删除默认路由:

route add default gw 192.168.100.10
route del default

添加和删除网络路由:

route add -net 172.16.10.0/24 gw 192.168.100.70
route add -net 172.16.10.0 netmask 255.255.255.0 gw 192.168.100.70
# 若实在不知道下一跳给谁,那么指定本机接口也是可以的
route add -net 172.16.10.0/24 dev eth0

删除路由可以直接在增加路由的语句上将add改为del关键字:

route del -net 172.16.10.0/24 gw 192.168.100.70
route del -net 172.16.10.0 netmask 255.255.255.0 gw 192.168.100.70
route del -net 172.16.10.0/24 dev eth0

添加和删除主机路由:

route add -host 172.16.10.55 gw 192.168.10.20
route del -host 172.16.100.55

配置永久路由

根据接口创建路由配置文件/etc/syconfig/network-scripts/route-ethX,要从那个接口出去X就是几

路由配置文件的配置格式非常简单,每一行一个路由条目,先是要到达的目标,然后是via关键字,最后是下一跳地址。要求下一跳必须能到达,且一般都和ethX同网段

例如eth0网卡的IP地址是192.168.10.123,要通过网卡eth0出去到达10.0.0.10,那么下一跳的地址要和eth0的地址在同网段,如192.168.10.222

10.0.0.10 via 192.168.10.222

添加主机路由、默认路由、网段路由示例如下:

# 默认路由
default     via 192.168.100.1
0.0.0.0/0   via 192.168.100.1

# 网段路由
192.168.10.0/24   via 192.168.100.1

# 主机路由
192.168.100.52/32 via 192.168.100.33

配置在哪个eth文件中就会从哪个接口出去🌰

配置完后,重启network服务即可立即生效

配置永久路由时,需要注意几点:

  • route-ethX的对应网卡配置文件ifcfg-ethX必须存在,否则路由无效
  • 如果在文件中配置永久默认路由,则必须保证所有使用了DHCP服务的网卡配置文件ifcfg-ethX中的DEFROUTE指令设置为"no",表示DHCP不设置默认路由
  • 如果在route-ethX文件中配置永久路由,且该网卡使用了DHCP服务分配地址,则必须保证该网卡的ifcfg-ethX文件中的PEERROUTES指令设置为"no",表示DHCP设置的路由允许被覆盖

6.arping命令

arping用于发送arp请求报文,解析并获取目标地址的MAC。默认将先发送广播报文,收到回复后再发送单播报文,局域网内所有主机都能收到广播报文,但只有目标主机才会回复自己的MAC地址

发送arp请求报文实际上是另类的ping,所以可以探测目标是否存活🥜

语法说明:

arping [-fqbDU] [-c count] [-w timeout] [-I device] [-s source] destination
-f : 收到第一个reply就立即退出
-q : 安静模式,什么都不输出
-b : 只发送广播,不发送单播
-D : 地址冲突检测
-U : 主动更新邻居的arp缓存(Unsolicited ARP mode)
-c count : 发送多少个arp请求包后退出
-w timeout : 等待reply的超时时间
-I device : 使用哪个接口发送请求包。发送arp请求包接口的MAC地址将缓存在目标主机上
-s source : 指定arp请求报文中源地址,若发送的接口和源地址不同,则目标主机将缓存该地址和接口的MAC地址,而非该源地址所在接口的MAC地址
destination : 向谁发送arp请求报文,即要获取该IP或主机名的MAC地址

实例1:

请求解析192.168.100.70主机的MAC地址:

arping -f 192.168.100.70

在这里插入图片描述

这将会发送广播报文,直到收到192.168.100.70的回复才退出

实例2:

指定发送一个请求报文给192.168.100.70就退出,发送报文的接口为eth1,并指定请求报文中的源地址为本机eth0接口上的地址192.168.100.54:

arping -c 1 -I eth1 -s 192.168.100.54 192.168.100.70

发送这样的arp请求包,将会使得目标主机192.168.100.70缓存本机的arp条目为"192.168.100.54 MAC_eth1",但实际上,192.168.100.54所在接口的MAC地址为MAC_eth0

arping命令仅能实现这种简单的arp欺骗,更多的arp欺骗方法可以使用专门的工具🫘

实例3:

探测对方主机是否存活:

例如发送4个探测报文,有回复就说明对方存活

[root@xuexi ~]# arping -c 4 -I eth0 192.168.100.2  
ARPING 192.168.100.2 from 192.168.100.54 eth0
Unicast reply from 192.168.100.2 [00:50:56:E2:16:04]  0.593ms
Unicast reply from 192.168.100.2 [00:50:56:E2:16:04]  0.930ms
Unicast reply from 192.168.100.2 [00:50:56:E2:16:04]  0.868ms
Unicast reply from 192.168.100.2 [00:50:56:E2:16:04]  0.844ms
Sent 4 probes (1 broadcast(s))
Received 4 response(s)

7.ip命令

这是一个极其强大的命令,前面所有的网络信息显示和管理的命令,都可以由ip命令来替代完成。它是一个严格模式化的命令。

ip addr

ip addr用于管理网络设备上的ip地址,也可以查看ip地址的属性信息

ip addr add/del:

新增网卡的IP地址:

ip addr add 192.168.100.45 dev eth0
ip addr add 192.168.100.35/24 dev eth1

此方式添加的地址不会在ifconfg命令中显示,ifconfg能捕捉到的是别名,所以可以为地址加上label,以让secondary被ifconfig查看到。例如:

ip addr add 192.168.100.45 dev eth0 label eth0:0

要删除ip,则简单的多:

ip addr del 192.168.100.45 dev eth0
ip addr del 192.168.100.35/24 dev eth1

ip addr show:

因为ip命令可以缩写,所以可以写为下面这几种形式(都是正确的写法):

ip addr show
ip a show
ip a s
ip a

在这里插入图片描述

ip addr flush:

用于批量删除地址,该命令其实非常危险,一个不小心就会误伤无辜

例如删除eth1上所有地址:

ip a flush dev eth1

删除eth1上所有的secondary地址:

ip a f secondary dev eth1

ip route

该命令维护和查看内核中的路由表

ip route add/del/change/append/replace:

语法格式为:

ip route { add | del | change | append | replace } dest[/cidr_mask] [ via ADDRESS ] [ dev STRING ]

其中dest为目标地址,可以是主机地址、网段地址,一般在地址后都会带上cidr格式的掩码长度,不带时默认为32位长度。如果dest为"0/0"或者写为"default",则表示默认路由。

例如添加/修改/替换普通路由:

ip route add/change/replace 172.16.10.0/24 via 192.168.10.20

添加/修改/替换默认路由:

ip route add/change/replace default via 192.168.10.20
ip route add/change/replace 0/0 via 192.168.100.2

删除某路由:

ip route del 172.16.10.0/24
ip route del default   # 删除默认路由

ip route show:

列出路由表。

ip r  # 查看本机路由表

在这里插入图片描述

ip route flush:

批量删除路由表条目

例如删除由eth1出去的路由条目:

ip route flush eth1

删除下一跳为192.168.100.70的路由条目:

ip r flush via 192.168.100.70

删除目标为192.168.0.0/16网段的路由:

ip route flush 192.168/16

ip route save/restore:

用于保存当前的路由表以及恢复路由表。保存路由表时,路由表将以二进制裸数据的格式输出,也就是看不懂的二进制文件。恢复路由表时,要求设备的设置和保存路由表时是一样的,恢复时已存在于路由表中的路由条目将被忽略

保存当前路由表当当前目录的route.txt文件:

ip route save > route.txt

在这里插入图片描述

恢复路由表:

ip route restore < route.txt

ip link

ip link set:

该命令用于管理和查看网络接口,甚至可以添加虚拟网络接口,将网络接口分组进行管理。

语法说明:

ip link set DEVICE  { up | down | arp { on | off } | name NEWNAME | address LLADDR }  

选项说明:
dev DEVICE:指定要操作的设备名
up and down:启动或停用该设备
arp on or arp off:启用或禁用该设备的arp协议
name NAME:修改指定设备的名称,建议不要在该接口处于运行状态或已分配IP地址时重命名
address LLADDRESS:设置指定接口的MAC地址

例如,禁用eth1网卡:

ip link set eth1 down

其实等价于:

ifconfig eth1 down

修改网卡eth1的MAC地址:

ip link set eth1 address 00:0c:29:f3:33:77

ip link show:

语法说明:

ip [ -s | -h ] link show [dev DEV]  

选项说明:
-s:将显示各网络接口上的流量统计信息
-h:以人类可读的方式显式,即单位转换。注:"-h"在CentOS 7上才支持。

实例:

[root@192 ~]# ip -s -h link show  dev ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:f1:a6:2b brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast   
    23.7M      19.3k    0       0       0       0       
    TX: bytes  packets  errors  dropped carrier collsns 
    2.45M      7.94k    0       0       0       0   

本教程基于博客园:骏马金龙

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

netty(1):NIO 基础之三大组件

1 三大组件 1.1 Channel & Buffer channel 有一点类似于 stream&#xff0c;它就是读写数据的双向通道&#xff0c;可以从 channel 将数据读入 buffer&#xff0c;也可以将 buffer 的数据写入 channel&#xff0c;而之前的 stream 要么是输入&#xff0c;要么是输出&…

如何用idea快速的debug本地程序

介绍大家都经常用idea开发, 开发过程中运行程序就会出现各种意料之外的异常, 如果解决这些异常, 尤其是三方jar包抛出的异常,就是一个很关键和棘手的问题.配置环境在第一个选项位置点开后会弹出配置页面,里面可以配置一些启动需要的环境变量.第二个是debug启动按钮第三个是程序…

SQL 优化方案(规范)

SQL优化1、SQL执行顺序2、前置条件2.1、使用explain分析SQL执行计划2.2、开启慢sql日志2.3、慢查询时间设置。默认情况下long_query_time的值为10秒&#xff0c;可以使用命令修改&#xff0c;也可以在my.cnf参数里面修改。3、基础Sql优化3.1、小表驱动大表3.2、高效的分页3.3、…

【linux入门】Linux基础知识学习笔记

文章目录【第一章-宏观知识】1.硬件和软件的关系2.操作系统 是什么、作用是什么3.常见的操作系统4.Linux的诞生5.Linux内核 是什么6.Linux发行版 是什么7.WSL是什么8.虚拟机快照9.FinalShell&#xff08;Xshell替代品&#xff09;【第二章-Linux基础命令】1.Linux目录结构2.什么…

Linux下ElasticSearch安装和基本使用

安装 下载安装目录:/home/es-7.12.0 es启动用户:zmsz 出于安全考虑,elasticsearch默认不允许以root账号运行,所有一定要创建一个其他用户执行启动命令,不然一定会报错!! 创建用户:useradd zmsz 设置密码:passwd zmsz下载解压 下载:官网 以最新版8.6为准,执行wget …

MySQL中的limit分页的使用

SQL准备 create table tb_students (id int auto_increment primary key comment 主键ID,studentid char(9) unique not null comment 学生学号,name varchar(10) not null comment 学生姓名,gender char(1) not null comment 学生性别 ) comment 学生表;insert into tb_stude…

【机器学习 - 2】:数据集的处理

文章目录训练集和数据集分离获取最优模型超参数寻找最优模型网格搜索的使用训练集和数据集分离 训练集和数据集分离的原理&#xff1a;当我们获取一个数据集时&#xff0c;我们需要将其一小部分拿出来作为测试集&#xff0c;剩余的作为训练集。例如对于一个训练集&#xff0c;将…

RocketChip RISC-V生成RTL到仿真全流程

一、Scala配置项修改和RTL代码生成可以通过对scala中的配置项修改&#xff0c;来达到定制化配置RISC-V的目的&#xff0c;这里总结几个比较常用的配置项、配置项含义和所在的scala中的位置&#xff1a;1.$rocket-chip/src/main/scala/system/Config.scala1&#xff09;new With…

机器学习-2-安装Python 3.6和Pytorch 1.1.0

0. 说明&#xff1a; 之前根据GPU版本安装了CUDA 9.0&#xff0c;因此现安装与CUDA 9.0相对应的Pytorch版本&#xff0c;但在安装Pytorch之前要先确认一下Python的版本。 1. 查看 CUDA 9.0 对应的 Pytorch 从https://pytorch.org/get-started/previous-versions/中查找CUDA …

程序的机器级表示part1——程序编码与数据格式

目录 1. 汇编语言和机器级语言 1.1 不同的编程语言 1.2 Linux下的汇编语言 2. 程序编码 1.1 机器级代码 1.2 代码示例 3. 数据格式 本文基于CSAPP第三章撰写&#xff0c;主要介绍部分x86-64汇编的相关知识&#xff0c;后续会将该部分内容慢慢完善&#xff08;PS&a…

Web Spider XHR断点 千千XX 歌曲下载(三)

Web Spider XHR断点 千千XX 歌曲下载 首先声明: 此次案例只为学习交流使用&#xff0c;切勿用于其他非法用途 注&#xff1a;网站url、接口url请使用base64.b64decode自行解码 文章目录Web Spider XHR断点 千千XX 歌曲下载前言一、资源推荐二、任务说明三、网站分析四、XHR断点…

knife4j使用与步骤

1、导入依赖<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.3</version> </dependency>2、knife4j的配置类&#xff08;可有可无&#xff09;package…

为什么程序员的工资比其他行业高这么多?

不止一次听到有人说程序员工资高&#xff0c;更有甚者喊着“把IT工资打下来”。 拜托大哥大姐们&#xff01;看事情要客观好吧&#xff01;&#xff01; 虽然看起来程序员工资是不少&#xff0c;对比其他行业确实会高一些&#xff0c;但并不代表程序员这个岗位工资就要压到三千…

Elasticsearch:如何在 Elasticsearch 中正确使用同义词功能

同义词用于提高搜索质量并扩大匹配范围。 例如&#xff0c;搜索 England 的用户可能希望找到包含 British 或 UK 的文档&#xff0c;尽管这三个词完全不同。 Elasticsearch 中的同义词功能非常强大&#xff0c;如果实施得当&#xff0c;可以使你的搜索引擎更加健壮和强大。 在…

详解结构体内存对齐

目录 前言 一、结构体内存对齐规则 二、 offsetof 宏 三、结构体内存对齐的原因 四、 修改默认对齐数 前言 引入问题&#xff1a; #include <stdio.h>struct S {char c1;int i;char c2; };int main() {printf("%zd\n", sizeof(struct S));return 0; } 程…

干货 | 人脸识别技术的风险及应对方案

以下内容整理自清华大学《数智安全与标准化》课程大作业期末报告同学的汇报内容。第一部分&#xff1a;人脸识别技术概述人脸识别的发展阶段&#xff0c;主要分为三个阶段&#xff1a;起步阶段&#xff08;1950s-1980s&#xff09;&#xff0c;这一阶段的人脸识别只是作为一般性…

房产管理系统---系统安全性需求分析

数图互通高校房产管理系统是基于公司自主研发的FMCenterV5.0平台&#xff0c;是针对中国高校房产的管理特点和管理要求&#xff0c;研发的一套标准产品&#xff1b;通过在中国100多所高校的成功实施和迭代&#xff0c;形成了一套成熟、完善、全生命周期的房屋资源管理解决方案。…

Linux学习笔记——HBase集群安装部署

5.11、大数据NoSQL数据库HBase集群部署 5.11.1、简介 HBase是一种分布式、可扩展、支持海量数据存储的NoSQL数据库。 和Redis一样&#xff0c;HBase是一款KeyValue型存储的数据库。 不过和Redis设计方向不同&#xff1a; Redis设计为少量数据&#xff0c;超快检索HBase设计…

【部署】Docker容器

Docker 使用 Google 公司推出的 Go 语言进行开发实现&#xff0c;基于 Linux 内核的 cgroup、namespace 以及 OverlayFS 类的 Union FS 等技术&#xff0c;对进程进行封装隔离&#xff0c;属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程&#xff0…

算法刷题打卡第63天:对称二叉树

对称二叉树 难度&#xff1a;简单 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;false…