1.IP子网掩码
IP地址分为网络号和主机号,不同的子网就是把相同网络号的主机放在一起,在子网内部又是通过主机号区分每一台主机
- IP地址的主机标识
- IP地址的网络标识
子网内每台主机的IP地址不同,通过DHCP技术自动给子网内新增主机分配IP地址,在过去划分IP地址的方式有五种
A类 0.0.0.0到127.255.255.255
B类 128.0.0.0到191.255.255.255
C类 192.0.0.0到223.255.255.255
D类 224.0.0.0到239.255.255.255
E类 240.0.0.0到247.255.255.255
后来由于其使用的局限性,又引入了CIDR,即引入一个额外的子网掩码(subnet mask)来区分网络号和主机号,子网掩码也是一个32位的正整数. 通常用一串 “0” 来结尾,将IP地址和子网掩码进行 “按位与” 操作, 得到的结果就是网络号,而主机号从全0到全1就是子网的地址范围,另外还需要考虑排除掉一些特殊IP,所以一个子网内的主机数为:2^n - 2
(去掉全0和全1)
2.路由汇聚
路由汇聚是把一组路由汇聚为一个单个的路由广播。路由汇聚的最终结果和最明显的好处是缩小网络上的路由表的尺寸,其汇聚后的路由地址的计算方法为:
- 将各子网地址的网段以二进制表示
- 从第1位开始进行比较,将从第一个不相同的比特位到末尾位填充为0。由此得到的地址为汇总后的网段的网络地址,其网络位为连续的相同的比特位的位数
172.18.129.0/24 129的二进制代码是10000001
172.18.130.0/24 130的二进制代码是10000010
172.18.132.0/24 132的二进制代码是10000100
172.18.133.0/24 133的二进制代码是10000101
这四个数的前五位相同都是10000,所以加上前面的172.18这两部分相同的位数,网络号就是8+8+5=21。而10000 000的十进制数是128,所以,路由汇聚的Ip地址就是172.18.128.0
聚合后的IP就是172.18.128.0/21
3.交换机攻击
交换机攻击主要有以下5种类型:1.VLAN跳跃攻击;2.生成树攻击;3.MAC表洪水攻击;4.ARP攻击;5.VTP攻击
DHCP攻击:利用了交换机端口安全功能,MAC动态地址锁和端口静态绑定MAC,来限定交换机某个端口上可以访问网络的MAC地址,从而进行控制,属于交换机攻击
目录遍历攻击是HTTP所存在的一个安全漏洞,它使得攻击者能够访问受限的目录,并在Web服务器的根目录以外执行命令。不是交换机攻击
4.Linux下文件查找
Linux下查找的命令主要有find和grep,两者的区别就是:find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等
;grep命令grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找
- find命令基本格式:find path expression
//1.按照文件名查找
(1)find / -name httpd.conf //在根目录下查找文件httpd.conf,表示在整个硬盘查找
(2)find / etc - name httpd.conf //在 / etc目录下文件httpd.conf
(3)find / etc - name '*srm*' //使用通配符*(0或者任意多个)。表示在 / etc目录下查找文件名中含有字符串‘srm’的文件
(4)find . - name 'srm*' //表示当前目录下查找文件名开头是字符串‘srm’的文件
//2.按照文件特征查找
(1)find / -amin - 10 // 查找在系统中最后10分钟访问的文件(access time)
(2)find / -atime - 2 // 查找在系统中最后48小时访问的文件
(3)find / -empty // 查找在系统中为空的文件或者文件夹
(4)find / -group cat // 查找在系统中属于 group为cat的文件
(5)find / -mmin - 5 // 查找在系统中最后5分钟里修改过的文件(modify time)
(6)find / -mtime - 1 //查找在系统中最后24小时里修改过的文件
(7)find / -user fred //查找在系统中属于fred这个用户的文件
(8)find / -size + 10000c //查找出大于10000000字节的文件(c:字节,w:双字,k:KB,M:MB,G:GB)
(9)find / -size - 1000k //查找出小于1000KB的文件
//3.使用混合查找方式查找文件 参数有: !, - and (-a), - or (-o)。
(1)find / tmp - size + 10000c - and -mtime + 2 //在 / tmp目录下查找大于10000字节并在最后2分钟内修改的文件
(2)find / -user fred - or -user george //在 / 目录下查找用户是fred或者george的文件文件
(3)find / tmp !- user panda //在 / tmp目录中查找所有不属于panda用户的文件
- grep命令基本格式:grep expression
//1.主要参数
[options]主要参数:
-c:只输出匹配行的计数。
-i:不区分大小写
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
//pattern正则表达式主要参数:
\: 忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$ : 匹配正则表达式的结束行。
\<:从匹配正则表达 式的行开始。
\>:到匹配正则表达式的行结束。
[]:单个字符,如[A]即A符合要求 。
[-]:范围,如[A - Z],即A、B、C一直到Z都符合要求 。
.:所有的单个字符。
* :有字符,长度可以为0。
//实例
(1)grep 'test' d* //显示所有以d开头的文件中包含 test的行
(2)grep 'test'aa bb cc //显示在aa,bb,cc文件中包含test的行
(3)grep '[a - z]\{5\}’ aa //显示所有包含每行字符串至少有5个连续小写字符的字符串的行
(4)grep magic / usr / src //显示 / usr / src目录下的文件(不含子目录)包含magic的行
(5)grep - r magic / usr / src //显示 / usr / src目录下的文件(包含子目录)包含magic的行
(6)grep - w pattern files //只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’),
5.LRU算法
最近在笔试大厂的时候遇见好几个关于LRU算法的选择题,就了解了下LRU算法。LRU: 最近最少使用算法,最近使用的页面数据会在未来一段时期内仍然被使用,已经很久没有使用的页面很有可能在未来较长的一段时间内仍然不会被使用。基于这个思想,会存在一种缓存淘汰机制,每次从内存中找到最久未使用的数据然后置换出来,从而存入新的数据!它的主要衡量指标是使用的时间,附加指标是使用的次数
关于使用LRU算法计算缺页中断次数以及缺页中断率我了解了一些博客,给出链接
6.散列表的平均查找长度
散列表的平均查找长度包括查找成功时的平均查找长度和查找失败时的平均查找长度,具体计算如下
- 采用链地址法解决哈希冲突
设散列表的长度为10,散列函数H(n)=n mod 7,初始关键字序列为 (33,24,8,17,21,10),用链地址法作为解决冲突的方法,平均查找长度是:1.5
根据散列函数得到哈希表
地址 | key |
---|---|
0 | 21 |
1 | 8 |
2 | |
3 | 24 --> 17–>10 |
4 | |
5 | 33 |
6 | |
7 | |
8 | |
9 |
- 查找成功时,查找
21, 8, 33,24
各需一次,查找17
需要两次,查找10
需要三次,所以ASL = (1 + 1 + 1 + 1 + 2+ 3)/ 6 = 1.5
- 查找失败就是从查找位置开始直到一个位置为空需要比较的次数,因为散列函数中有
mod 7
,所以查找地址为0 ~ 6
,那么地址0, 1, 5
处次数为1,2, 4
处为0,地址3
处为3,则ASL = (1 + 1 + 1 + 3) / 7 = 0.85
- 采用线性探测法解决哈希冲突
将关键字序列(7、8、30、11、18、9、14)散列存储到散列表中。散列表的存储空间是一个下标从0开始的一维数组,散列函数为: H(key) = (keyx3) MOD 7,处理冲突采用线性探测再散列法,要求装填(载)因子为0.7。
根据散列函数得到哈希表
地址 | key |
---|---|
0 | 7 |
1 | 14 |
2 | |
3 | 8 |
4 | |
5 | 11 |
6 | 30 |
7 | 18 |
8 | 9 |
9 |
- 查找成功时,查找7,则需要查找1次;查找8,则需要查找1次;查找30,则需要查找1次;查找11,则需要查找1次;查找18,则需要查找3次:第一次查找地址5,第二次查找地址6,第三次查找地址7,查找成功; 查找9,则需要查找3次:第一次查找地址6,第二次查找地址7,第三次查找地址8,查找成功; 查找地址14,则需要查找2次:第一次查找地址0,第二次查找地址1,查找成功, 所以,
ASL=(1+2+1+1+1+3+3)/ 7=12/ 7
- 查找失败时,因为散列函数中有
mod7
,对应的地址为0~6
,即0~6
查找失败的查找次数,例如查找key为0的关键字,根据散列函数可以计算Hash(key)=Hash(0)=0。此时在地址为0的地方取出那个数字,发现key=7,不等于0。这就说明在装填的时候会发生冲突。根据冲突处理方法,会继续检测地址为1的值,发现key=14,依然不等。这个时候到了地址为3,发现为空,依然没有找到。所以停止查找,本次查找不成功- 地址0,到第一个关键字为空的地址2的距离为3,因此查找不成功的次数为3.
- 地址1, 到第一个关键为空的地址2的距离为2,因此查找不成功的次数为2.
- 地址2, 到第一个关键为空的地址2的距离为1,因此查找不成功的次数为1.
- 地址3,到第一个关键为空的地址4的距离为2,因此查找不成功的次数为2.
- 地址4,到第一个关键为空的地址4的距离为1,因此查找不成功的次数为1.
- 地址5,到第一个关键为空的地址2(注意不是地址9,因为初始只可能在0~6之间,因此循环回去)的距离为5,因此查找不成功的次数为5.
- 地址6,到第一个关键为空的地址2(注意不是地址9,因为初始只可能在0~6之间,因此循环回去)的距离为4,因此查找不成功的次数为4
- 所以查找不成功
ASL=(3+2+1+2+1+5+4)/7=18/ 7
7.Linux下文件目录
在早期的 UNIX 系统中,各个厂家各自定义了自己的 UNIX 系统文件目录,比较混乱。Linux 面世不久后,对文件目录进行了标准化,于1994年对根文件目录做了统一的规范,推出 FHS ( Filesystem Hierarchy Standard ) 的 Linux 文件系统层次结构标准。FHS 标准规定了 Linux 根目录各文件夹的名称及作用,统一了Linux界命名混乱的局面。
/bin: /usr/bin: 可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等
/boot:放置linux系统启动时用到的一些文件。/boot/vmlinuz 为 linux 的内核文件,以及 /boot/gurb
/dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱 mount /dev/cdrom /mnt
/etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件
/home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,表示当前用户的家目录,edu 表示用户 edu 的家目录
/lib: /usr/lib: /usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助,比较重要的目录为 /lib/modules
/mnt: /media:光盘默认挂载点
/root:系统管理员root的家目录
/tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问
/usr:应用程序存放目录,/usr/bin 存放应用程序,/usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local: 存放软件升级包。/usr/share/doc: 系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录
/var:放置系统执行过程中经常变化的文件
Linux下一切皆文件,其文件分类:
1)普通文件( 数据文件 )
普通文件是用于存放数据、程序等信息的文件,一般都长期地存放在外存储器(磁盘)中。普通文件又分为文本文件和二进制文件
2)目录文件
目录文件是文件系统中一个目录所包含的目录项所组成的文件。
3 ) 设备文件
设备文件是用于为操作系统与设备提供连接的一种文件。在Linux系统中将设备作为文件来处理,操作设备就像是操作普通文件一样。每一个设备对应一个设备文件,存放在 /dev 目录中
5)链接文件
似于 windows 下的快捷方式,链接又可以分为软链接(符号链接)和硬链接
6)管道文件
管道文件主要用于在进程间传递数据的一种特殊文件。
7)套接口文件
主要用于不同计算机间网络通信的一种特殊文件。
8.私有IP范围
局域网内部使用,分为A,B,C三类:
A类:10.0.0.0-10.255.255.255
B类:172.16.0.0-172.31.255.255
C类:192.168.0.0-192.168.255.255