(1)100.0.0.16/28 对应网段的网关地址,广播地址,可分配IP地址范围
1:28掩码对应的是: 1111111 1111111 1111111 11110000 = 255.255.255.240
2: 网络个数:4^2=16 #4的2次方
可用IP地址:4^2-2 --> 16-2=14 #第一个网关,最后一个为广播地址,可用14个
可分配IP地址:100.0.0.17-100.0.0.30
网关地址:100.0.0.16
广播地址:100.0.0.31
(2)tcpdump的使用
tcpdump 是一个运行在命令行下的抓包工具。它允许用户拦截和显示发送或收到过网络连接到该计算机的TCP/IP和其他数据包
常用选项:
-i:指定监听的网络接口 :列如 tcpdump -i eth0
-n:不把网络地址转换成名字
-nn:不进行端口名称的转换
-t:不显示时间戳
-c:指定截取多少个包 :列如 tcpdump -c 5
-vv:输出详细的报文信息。
-w:直接将分组写入文件中,而不是不分析并打印出来 :列如: tcpdump -w ./dump.cap
-r: 读取-w保存的文件,可以使用(wireshark)分析
指定捕获什么类型的网络包:
host:指定主机,默认值;列如 tcpdump host 192.168.1.125
net:指定网段;列如 tcpdump net 192.16.0.0
port:指定端口;列如 tcpdump port 22
portrange:指定端口范围 ;例如 tcpdump portrange 20-5000
指定捕获哪个流向的数据包:
src:捕获从src流入的包;列如 tcpdump src host 192.168.1.125
dst:捕获流向dst的包;列如 tcpdump dst host 192.168.1.250
src or dst:捕获从src流入或流向dst的包;列如:tcpdump -n src 61.177.250.153 or dst 172.30.0.12
src and dst:捕获从src流向dst的包。 列如:tcpdump -n src 61.177.250.153 and dst 172.30.0.12
监视指定主机的数据包:
打印所有进入或离开sundown的数据包.
tcpdump host sundown
也可以指定ip,例如截获所有210.27.48.1 的主机收到的和发出的所有的数据包
tcpdump host 210.27.48.1
打印helios 与 hot 或者与 ace 之间通信的数据包
tcpdump host helios and \( hot or ace \)
截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信
tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)
打印ace与任何其他主机之间通信的IP 数据包, 但不包括与helios之间的数据包.
tcpdump ip host ace and not helios
如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:
tcpdump ip host 210.27.48.1 and ! 210.27.48.2
截获主机hostname发送的所有数据
tcpdump -i eth0 src host hostname
监视所有送到主机hostname的数据包
tcpdump -i eth0 dst host hostname
逻辑运算:
与:and,&&
或:or,||
非:not,!
Wireshark(以前是ethereal)是Windows下非常简单易用的抓包工具。但在Linux下很难找到一个好用的图形化抓包工具。
还好有Tcpdump。我们可以用Tcpdump + Wireshark 的完美组合实现:在 Linux 里抓包,然后在Windows 里分析包。
tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
(2)-i eth1 : 只抓经过接口eth1的包
(3)-t : 不显示时间戳
(4)-s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包
(5)-c 100 : 只抓取100个数据包
(6)dst port ! 22 : 不抓取目标端口是22的数据包
(7)src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24
(8)-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析
监视指定主机和端口的数据包:
如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令
tcpdump tcp port 23 and host 210.27.48.1
对本机的udp 123 端口进行监视 123 为ntp的服务端口
tcpdump udp port 123
(3)详细叙述僵尸进程产出的原因及危害:
概念:
僵死状态(Zombies)是一个比较特殊的状态。
当进程退出并且父进程没有读取到子进程退出的返回代码时就会产生僵尸进程
僵尸进程会以终止状态保持在进程表中,并且会一直在等待父进程读取退出状态代码
所以,只要子进程退出,父进程还在运行,但父进程没有读取子进程状态,子进程进入Z状态
产生原因:
1:在子进程终止后到父进程调用wait()前的时间里,子进程被称为zombie;
2:子进程结束后向父进程发出SIGCHLD信号,父进程默认忽略了它
3:父进程没有调用wait()或waitpid()函数来等待子进程的结束
4:网络原因有时会引起僵尸进程;
危害:
占用系统资源
内存泄漏
(4)详细说明vmstat输出结果的含义
1:参数解释
-V:显示vmstat版本信息
-n:只在开始时显示一次各字段名称
-a:显示活跃和非活跃内存
-d:显示各个磁盘相关统计信息
-D:显示磁盘总体信息
-p:显示指定磁盘分区统计信息
-s:显示内存相关统计信息及多种系统活动数量
-m:显示slabinfo
-t:在输出信息的时候也将时间一并输出出来
-S:使用指定单位显示。参数有k、K、m、M,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024bytes)
delay:刷新时间间隔。如果不指定,只显示一条结果
count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷
用法:vmstat -a 4 5 : -a 查看活跃和非活跃内存,4秒刷新一次,一共刷新5次,然后自动退出
2: 每个字段对应的介绍
procs (进程)
r:等待运行进程的个数,CPU上等待运行的任务的队列长度,
展示了正在执行和等待cpu资源的任务个数。当这个值超过了cpu个数,就会出现cpu瓶颈。
b:处于不可中断睡眠状态的进程个数,被阻塞的任务队列长度
============================================================
memory(内存)
swpd:正在使用交换内存使用总量
free:空闲的物理内存
buffer:已用缓冲的内存
cache:已用缓存的内存
inact:非活跃的内存
active:活跃的内存
=============================================================
swap(交换区)
si:数据每秒从交换区写入内存的大小(KB/s)
so:数据每秒从内存中写到交换区的大小(KB/s)
=============================================================
io
bi:从块设备读入数据系统的速度(KB/s)
bo:保存数据至块设备的速度(KB/s)
=============================================================
system
in:中断速率,这两个值越大,会看到由内核消耗的cpu时间sy会越多
cs:上下文切换速率,秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,
也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目
=============================================================
cpu
us:用户程序所占据cpu时间(单位:百分比)
sy:系统程序所占据cpu时间(单位:百分比)
id:空闲时间
wa:等待io时间,wa过高时,说明io等待比较严重,这可能是由于磁盘大量随机访问造成的,也有可能是磁盘的带宽出现瓶颈。
st:针对虚拟技术,如果st不为0,说明本来分配给本机的CPU时间被其他虚拟机偷走了。