内置库re
re是python中的正则表达式内置库
修饰符
描述
re.I
IGNORECASE,忽略大小写
re.L
LOCALE,只对8位字节有效,不建议使用,由当前语言区域决定 \w, \W, \b, \B 和大小写敏感匹配
re.U
UNICODE,根据Unicode字符集解析字符。由当前语言区域决定 \w, \W, \b, \B 和大小写敏感匹配
re.M
MULTILINE,多行匹配,影响 ^ 和 $
re.S
DOTALL,.可以匹配除换行符外所有内容
re.X
VERBOSE,忽略空格和注释
DOS与DDOS
TCP报头中一共有六个标志位:URG/ACK/PSH/RST/SYN/FIN。SYN 表示建立一个方向的连接。ACK 收到数据或请求后发送响应时发送ACK报文。RST 关闭异常连接FIN 表示关闭连接 PSH 发送端需要发送一段数据,这个数据需要接收端一收到就进行向上交付。而接收端在收到PSH标志位有效的数据时,迅速将数据交付给应用层。所以PSH又叫急迫比特。 但是现在已经不需要将数据交付给应用层了,因为这些效果在TCP栈已经可以自行处理这些问题了。URG URG成为紧急指针,意为URG位有效的数据包,是一个紧急需要处理的数据包,需要接收端在接收到之后迅速处理。
dos全称是denial of service,dos攻击是使目标计算机或网络无法提供正常服务(拒绝服务)
产生dos攻击效果的方式有很多
syn攻击
半连接攻击,向服务器端连续发送大量只有SYN标志的TCP链接请求,服务器会吧这些半连接排到链接缓冲区(Backlog queue)中,缓冲区满,无法接受新的请求,其他合法用户的请求就会被拒绝
rst攻击
自己攻击自己
消耗资源攻击(带宽、磁盘等)
泛洪攻击 ...
内存超分原理
KVM中内存也是允许过载使用(over-commit)的,KVM能够让分配给客户机的内存总数大于实际可用的物理内存总数。由于客户机操作系统及其上的应用程序并非一直100%地利用其分配到的内存,而且宿主机上的多个客户机一般也不会同时达到100%的内存使用率,所以内存过载分配是可行的。一般来说,有如下三种方式来实现内存的过载使用。
内存交换(swapping):用交换空间(swap space)来弥补内存的不足。
气球(ballooning):通过virio_balloon驱动来实现宿主机Hypervisor和客户机之间的协作来完成。
页共享(page sharing):通过KSM(Kernel Samepage Merging)合并多个客户机进程使用的相同内存页。
其中,第一种内存交换的方式是最成熟的(Linux中很早就开始应用),也是目前被广泛使用的,不过,它相比于KSM和ballooning的方式效率较为低一些。
SYN攻击
SYN:同步序列编号(***Synchronize Sequence Numbers***)。
是TCP/IP建立连接时使用的握手信号。在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN+ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应。这样在客户机和服务器之间才能建立起可靠的TCP连接,数据才可以在客户机和服务器之间传递
TCP报文首部TCP把连接作为最基本的对象,每一条TCP连接都有两个端点,这种端点我们叫作套接字(socket),它的定义为端口号拼接到IP地址即构成了套接字,例如,若IP地址为192.3.4.16 而端口号为80,那么得到的套接字为192.3.4.16:80。
源端口和目的端口,各占2个字节,分别写入源端口和目的端口;
序号,占4个字节,TCP连接中传送的字节流中的每个字节都按顺序编号。例如,一段报文的序号字段值是 301 ,而携带的数据共有100字段,显然下一个报文段(如果还有的话)的数据序号应该从401开始;
确认号,占4个字节,是期望收到对方下一个报文的第一个数据字节的序号。例如,B收到了A发送过来的 ...
网卡驱动
驱动程序(Device Driver)全称为“设备驱动程序”,是一种可以使计算机中央处理器——CPU控制和使用设备的特殊程序,相当于硬件的接口,操作系统通过这个接口,控制硬件设备的工作。
网卡设备与字符设备和块设备不同, 网络设备并不对应于/dev目录下的文件,不过会存放在/sys/class/net目录下
Linux系统对网络设备驱动定义了4个层次, 这4个层次到下分为:
网络协议接口层:
实现统一的数据包收发的协议,该层主要负责调用dev_queue_xmit()函数发送数据, netif_rx()函数接收数据
网络设备接口层:
通过net_device结构体来描述一个具体的网络设备的信息,实现不同的硬件的统一
设备驱动功能层:
用来负责驱动网络设备硬件来完成各个功能, 它通过hard_start_xmit() 函数启动发送操作, 并通过网络设备上的中断触发接收操作,
网络设备与媒介层:
用来负责完成数据包发送和接收的物理实体, 设备驱动功能层的函数都在这物理上驱动的
层次结构如下图所示:
网卡bond模式
简介网卡绑定mode共有七种(0~6) bond0、bond1、bond2、bond3、bond4、bond5、bond6常用
mode=0:平衡负载模式,有自动备援,但需要”Switch”支援及设定。
mode=1:自动备援模式,其中一条线若断线,其他线路将会自动备援。
mode=6:平衡负载模式,有自动备援,不必”Switch”支援及设定。
mode0 ( balance-rr ) 轮询策略链路负载均衡,增加带宽,支持容错,一条链路故障会自动切换正常链路。特点:传输数据包顺序是依次传输(即:第1个包走eth0,下一个包就走eth1….一直循环下去,直到最后一个传输完毕),此模式提供负载平衡和容错能力;但是如果一个连接或者会话的数据包从不同的接口发出的话,中途再经过不同的链路,在客户端很有可能会出现数据包无序到达的问题,而无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降。
mode 1( active-backup ) 主-备份策略主备模式,只有一块网卡是 active,另一块是备用的 standby,所有流量都在 active 链路上处理。特点:只有一个设备处于活动状态 ...
内置库os
一个 module 内的 Python 代码通过 importing 操作就能够访问另一个模块内的代码。 import 语句是发起调用导入机制的最常用方式,但不是唯一的方式。 importlib.import_module() 以及内置的 __import__() 等函数也可以被用来发起调用导入机制。
import 语句结合了两个操作;它先搜索指定名称的模块,然后将搜索结果绑定到当前作用域中的名称。 import 语句的搜索操作被定义为对 __import__() 函数的调用并带有适当的参数。 __import__() 的返回值会被用于执行 import 语句的名称绑定操作。 请参阅 import 语句了解名称绑定操作的更多细节。
注意
py2和py3在import时即使没有使用,也会初始化import的module文件
在import文件初始化时,会对类属性进行初始化!
内置库os
基础1listdir(path: AnyStr) -> List[AnyStr] #列出目录下所有文件和文件夹
os.sep与os.path.sep
根据系统返回分隔符,os.path对于文件路径更健壮
vlan和vxlan
vlanVLAN(Virtual LAN),翻译成中文是“虚拟局域网”。LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络。VLAN所指的LAN特指使用路由器分割的网络——也就是广播域。
vlan被创建后,应将交换机端口分配给vlan,以此使得接入该端口的电脑属于该vlan,需要使用该vlan所属的网络IP。
广播风暴防范限制网络上bai的广播,将网络划分为多个VLAN可减少参与广播风暴的设备数量。LAN分段可以防止广播风暴波及整个网络。VLAN可以提供建立防火墙的机制,防止交换网络的过量广播。使用VLAN,可以将某个交换端口或用户赋于某一个特定的VLAN组,该VLAN组可以在一个交换网中或跨接多个交换机,在一个VLAN中的广播不会送到VLAN之外。同样,相邻的端口不会收到其他VLAN产生的广 播。这样可以减少广播流量,释放带宽给用户应用,减少广播的产生。2. 安全 增强局域网的安全性,含有敏感数据的用户组可与网络的其余部分隔离,从而降低泄露机密信息的可能性。不同VLAN内的报文在传输时是相互隔离的,即一个VLAN内的用户不能和其它VLAN内的用户直 ...
proc目录解析
在linux中,proc是一个伪文件系统,提供了访问内核数据的一些方法
proc中PID目录存有进程的一些信息
pid目录ls123456789101112root@longtaoXiaoXinPro13-2020# ls /proc/1arch_status cwd mem patch_state statattr environ mountinfo personality statmautogroup exe mounts projid_map statusauxv fd mountstats root syscallcgroup fdinfo net sched taskclear_refs gid_map ns schedstat ...