1、100.0.0.16/28 对应网段的网关地址、广播地址、可分配IP地址范围
IPV4地址一共为32位,28表示网络段为28为,那么主机段为4位
网关地址为主机位
11111111 11111111 11111111 11110000
100.0.0.16对应的网段为 100.0.0.0001000 即100.0.0.16, 为其网关地址
那么广播地址为100.0.0.00011111 即100.0.0.31
可分配的IP地址为 100.0.0.00010001 -100.0.0.0001110,即100.0.0.17 – 100.0.0.30,共14个地址
2、使用man手册学习tcpdump的使用
tcpdump - dump traffic on a network
简单来说,tcpdump是一个对网络数据包抓取,分析的工具,其官方网址https://www.tcpdump.org/
下面介绍其简单用法
tcpdump -D 列出可以抓包的接口
tcpdump -i interface, 指定接口
本机只有一个接口为ens33, 但是抓取的数据显示在终端上会比较乱,可以用-输出到一个文件中以便查看
tcpdump -i ens33 -nn > /tcpdump/dump1.text
使用-nn选项,显示IP
可以看到抓取的信息
抓取的这些信息的含义:
第一段
00:58:51.814610 是表示抓取时间,是一个本地时间戳
第二段
IP 192.168.2.18.22 > 192.168.2.10.1962
左边的IP是源地址IP+端口号
右边是目的IP+端口号:
第三段
Flags [P.] 是TCP报文标记,通常由以下几个值
S |
SYN |
Connection Start |
F |
FIN |
Connection Finish |
P |
PUSH |
Data push |
R |
RST |
Connection reset |
. |
ACK |
Acknowledgment |
该字段也可以是这些值的组合,例如 [S.]
代表 SYN-ACK
数据包
第四段
seq 2900043279:2900043491 代表数据流的开始字节和结束字节
第五段
ack 82691435 : Acknowledge number
第六段
win 274 窗口大小,表示接受缓冲区可用的字节数
第七段
length 212 表示数据表有效字节长度
要明白字段含义,需要了解TCP包头的格式,下面给出一个包头格式说明,具体信息请查看相关文档
头部固定为20字节,每行4字节
-c:指定要抓取的包数量
-n:对地址以数字方式显式,否则显式为主机名,也就是说-n选项不做主机名解析。
-nn:除了-n的作用外,还把端口显示为数值,否则显示端口服务名。
-P --direction:指定要抓取的包是流入还是流出的包。可以给定的值为"in"、"out"和"inout",默认为"inout"
-s len:设置tcpdump的数据包抓取长度为len
-q:快速打印输出。即打印很少的协议相关信息,从而输出行都比较简短
-w 把抓取的包输出到一个文档
tcpdump表达式
表达式用于筛选输出哪些类型的数据包
tcpdump的表达式由一个或多个"单元"组成,每个单元一般包含ID的修饰符和一个ID(数字或名称)。有三种修饰符:
(1).type:指定ID的类型。
可以给定的值有host/net/port/portrange。例如"host foo","net 128.3","port 20","portrange 6000-6008"。默认的type为host。
(2).dir:指定ID的方向。
可以给定的值包括src/dst/src or dst/src and dst,默认为src or dst。例如,"src foo"表示源主机为foo的数据包,"dst net 128.3"表示目标网络为128.3的数据包,"src or dst port 22"表示源或目的端口为22的数据包。
(3).proto:通过给定协议限定匹配的数据包类型。
常用的协议有tcp/udp/arp/ip/ether/icmp等,若未给定协议类型,则匹配所有可能的类型。例如"tcp port 21","udp portrange 7000-7009"。
所以,一个基本的表达式单元格式为"proto dir type ID"
除了使用修饰符和ID组成的表达式单元,还有关键字表达式单元:gateway,broadcast,less,greater以及算术表达式。
表达式单元之间可以使用操作符" and / && / or / || / not / ! "进行连接,从而组成复杂的条件表达式。如"host foo and not port ftp and not port ftp-data",这表示筛选的数据包要满足"主机为foo且端口不是ftp(端口21)和ftp-data(端口20)的包",常用端口和名字的对应关系可在linux系统中的/etc/service文件中找到。
另外,同样的修饰符可省略,如"tcp dst port ftp or ftp-data or domain"与"tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain"意义相同,都表示包的协议为tcp且目的端口为ftp或ftp-data或domain(端口53)。
3、详细叙述僵尸进程产生的原因以及危害
一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他,那么他将变成一个僵尸进程。通过ps命令查看其带有defunct的标志。僵尸进程是一个早已死亡的进程,但在进程表 (processs table)中仍占了一个位置(slot)。
但是如果该进程的父进程已经先结束了,那么该进程就不会变成僵尸进程。因为每个进程结束的时候,系统都会扫描当前系统中所运行的所有进程,看看有没有哪个 进程是刚刚结束的这个进程的子进程,如果是的话,就由Init进程来接管他,成为他的父进程,从而保证每个进程都会有一个父进程。而Init进程会自动 wait其子进程,因此被Init接管的所有进程都不会变成僵尸进程。
由于进程表的容量是有限的,所以defunct进程不仅占用系统的内存资源,影响系统的性能,而且如果其数目太多,还会导致系统瘫痪。
杀死僵尸进程
找到该defunct僵尸进程的父进程,将该进程的父进程杀掉,则此defunct进程将自动消失
命令: ps -ef | grep defunct_process_pid
4、详细说明vmstat输出结果的含义
b: The number of processes in uninterruptible sleep.
处于不可中断的进程数
Memory
swpd: the amount of virtual memory used.
交换内存使用量
free: the amount of idle memory.
空闲内存量
buff: the amount of memory used as buffers.
用于buffer的内存使用量
cache: the amount of memory used as cache.
用于cache的内存使用量
inact: the amount of inactive memory. (-a option)
非活动内存量
active: the amount of active memory. (-a option)
活动内存量
Swap
si: Amount of memory swapped in from disk (/s).
从磁盘进入内存的数据速率 kb/s
so: Amount of memory swapped to disk (/s).
此内存交换至磁盘的数据速录 kb/s
IO
bi: Blocks received from a block device (blocks/s).
从块设备读入的数据速率
bo: Blocks sent to a block device (blocks/s).
发送到块设备的数据速率
System
in: The number of interrupts per second, including the clock.
中断速率
cs: The number of context switches per second.
上下文切换速率
CPU
These are percentages of total CPU time.
us: Time spent running non-kernel code. (user time, including nice time)
用户空间占cpu时间百分比
sy: Time spent running kernel code. (system time)
内核空间占cpu时间百分比
id: Time spent idle. Prior to Linux 2.5.41, this includes IO-wait time.
cpu空闲时间baifenb
wa: Time spent waiting for IO. Prior to Linux 2.5.41, included in idle.
cpu等待IO时间百分比
st: Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown
被虚拟机占用的cpu时间百分比