1、100.0.0.16/28 对应网段的网关地址、广播地址、可分配IP地址范围
广播地址:100.0.0.31
可分配IP地址范围:100.0.0.17 到 100.0.0.30
网关地址:为可分配地址中的任意一个
2、使用man手册学习tcpdump的使用
tcpdump - 转储网络上的数据流
tcpdump [ -adeflnNOpqStvx ] [ -c count ] [ -F file ]
[ -i interface ] [ -r file ] [ -s snaplen ]
[ -T type ] [ -w file ] [ expression ]
选项(OPTIONS)
-a 试着把网络和广播地址转换成名称。
-c 当收到count报文后退出。
-d 把编译好的报文匹配代码(packet-matching code)翻译成可读形式,传往标准输出,然后退出。
-dd 把报文匹配代码(packet-matching code)以C程序片断的形式输出。
-ddd 把报文匹配代码(packet-matching code)以十进制数形式输出(前面加上总数)。
-e 显示链路层报头。
-f 以数字形式显示'外部的'互联网地址,而不是字符形式
-F 把file的内容用作过滤表达式。忽略命令行上 的表达式。
-i 监听interface。如果不指定接口,tcpdump在系统的接口清单中,寻找号码最小,已经配置好的接口 (loopback 除外)。选中的时候会中断连接。
-l 行缓冲标准输出。可用于捕捉数据的同时查看数据。
-n 不要把地址转换成名字(指的是主机地址, 端口号等)
-N 不显示主机名字中的域名部分。
-O 禁止运行报文匹配代码的优化器。这个选项只有当你怀疑优化器有bug时才有用。
-p 禁止把接口置成promiscuous(杂凑) 模式。
-q 快速输出。
-r 从file中读入数据报(文件是用-w选项创建的)。
-s 从每个报文中截取snaplen字节的数据,而不是缺省的68。
-T 把通过"expression" 挑选出来的报文解释成指定的type。
-S 显示绝对的,而不是相对的TCP流序号。
-t 禁止显示时戳标志。
-tt 显示未格式化的时戳标志。
-v 繁琐的输出。
-vv 更繁琐的输出。
-w 把原始报文存进file,不做分析和显示。
-x 以16进制数形式显示每一个报文(去掉链路层报头后)。
tcpdup表达式
用来选择要转储的数据报。如果没有指定expression,就转储网络的全部报文。否则,只转储相对expression为`true'的数据报。expression由一个或多个原语组成。原语通常由一个标识(id,名称或数字),和标识前面的一个或多个修饰子组成。
修饰子有三种不同的类型:
type 类型修饰子指出标识名称或标识数字代表什么类型的东西。可以使用的类型有host,net和port。如果不指定类型修饰子,就使用缺省的 host 。
dir 方向修饰子指出相对于标识的传输方向(数据是传入还是传出标识)。可以使用的方向有src,dst,src or dst 和 src and dst。如果不指定 方向修饰子,就使用缺省的src or dst。对于`null'链路层,用inbound和outbound修饰子指定所需的传输方向。
proto 协议修饰子要求匹配指定的协议。可以使用的协议有:ether, fddi, ip,arp,rarp,decnet,lat,sca,moprc,mopdl,tcp和udp。如果不指定协议修饰子, 就使用所有符合类型的协议。
expr relop expr
如果这个关系式成立,则逻辑为真,其中relop 是 >, <, >=, <=, =, !=之一,expr是数学表达式,由 常整数,普通的二进制运算符[+, -, *, /, &, |],一个长度运算符,和指定的报文数据访问算符组成。
要访问报文内的数据,使用下面的语法:proto [ expr : size ]
Proto是ether, fddi, ip, arp, rarp, tcp, udp, or icmp 之一,同时也指出了下标操作的协议层。expr给出字节单位的偏移量,该偏移量相对于指定的协议层。Size是可选项,指出感兴趣的字节数,它可以是1,2,4,缺省为1字节。由关键字len给出的长度运算符指明报文的长度。
原语可以用下述方法结合使用:
取反操作 (`!' or `not')
连结操作 (`&&' or `and')
或操作 (`||' or `or')
取反操作有最高优先级。或操作和连结操作有相同的优先级,运算时从左到右结合。注意连结操作需要显式的and算符,而不是并列放置。
示例(EXAMPLES)
tcpdump -i ens33 -vnn host 10.10.10.122 #抓取包含10.10.10.122的数据包
tcpdump -i ens33 -vnn src host 10.10.10.122 #抓取源ip是10.10.10.122的数据包
tcpdump -i ens33 -vnn src host 10.10.10.122 and not port 22 #抓取源ip是10.10.10.122且端口不是22的数据包
tcpdump -i ens33 -vnn '\(src host 10.10.10.59 and dst port 22\) 'or '\(src host 10.10.10.68 and dst prot 80\)' #抓取源ip是10.10.10.59且目的端口是22,或者源ip是10.10.10.68且目的端口是80的数据包
tcpdump -i ens33 -r /tmp/file host 10.10.10.58 #从/tmp/file记录中读取包含10.10.10.58的数据包
3、详细叙述僵尸进程产生的原因以及危害
僵尸进程产生:
Linux 允许进程查询内核以获得其父进程的 PID,或者其任何子进程的执行状态。如果子进程已经终止,那么,它的终止代号将告诉父进程这个任务是否已成功地完成。如果一个进程已经终止,但是它的父进程尚未调用回收子进程,这时的进程状态称为僵死状态,处于僵死状态的进程称为僵尸进程。
僵尸进程危害:
在进程退出的时候,内核释放该进程所有的资源,包括打开的文件,占用的内存等。但是仍然为其保留一定的信息(包括进程号,退出状态,运行时间等)。直到父进程通过调用回收子进程时才释放。如果进程不调用回收子进程的话,那么保留的那段信息就不会释放,其进程号就会一直被占用,但是系统所能使用的进程号是有限的,如果大量的产生僵死进程,将因为没有可用的进程号而导致系统不能产生新的进程。
4、详细说明vmstat输出结果的含义
[root@localhost admin]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 731392 2084 520596 0 0 3879 186 887 1836 13 24 62 1 0
Procs
r:等待运行的进程数
b:处在非中断睡眠状态的进程数
w:被交换出去的可运行的进程数。
此数由linux计算得出,但linux并不耗尽交换空间
Memory
swpd:虚拟内存使用情况,单位:KB
free:空闲的内存,单位KB
buff:被用来做为缓存的内存数,作为块设备的缓存,单位:KB
cache:被用来做为缓存的内存数,作为文件系统的缓存,单位:KB
Swap
si:从磁盘交换到内存的交换页数量,单位:KB/秒
so:从内存交换到磁盘的交换页数量,单位:KB/秒
IO
bi:发送到块设备的块数,单位:块/秒
bo:从块设备接收到的块数,单位:块/秒
System
in:每秒的中断数,包括时钟中断
cs:每秒的环境(上下文)切换次数
CPU
按CPU的总使用百分比来显示
us:CPU使用时间
sy:CPU系统使用时间
id:闲置时间
wa:等待IO时间