第七周作业

本文详细介绍了如何使用tcpdump工具抓取网络包,解释了僵尸进程的产生原因及其对系统的影响,同时深入解析了vmstat命令的输出结果,帮助理解系统性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、 100.0.0.16/28 对应网段的网关地址、广播地址、可分配IP地址范围
IP地址转化为二进制:01100100 00000000 00000000 00010000
子网掩码:11111111 11111111 11111111 11110000
网络地址为:01100100 00000000 00000000 00010000 (网络地址为IP地址和子网掩码的与的结果既 100.0.0.16)
广播地址:100.0.0.31(广播地址即为网络地址的主机号位全部变成1,01100100 00000000 00000000 00011111)
可分配IP地址范围为网络地址+1和广播地址-1之间的子网:100.0.0.17–100.0.0.30
网关地址为:100.0.0.16

2、 使用man手册学习tcpdump的使用
tcpdump是用来抓取网络包内容描述信息的工具,在抓包结束后,会报告三个count数据
. captured: tcpdump接收并处理的数据包
. received by filter: 被filter expression匹配的包数量
. dropped by kernel :缓冲区满后,被内核丢弃的包数量(取决于系统会不会通知tcpdump)
.选项
-A: 以ASCII编码显示包内容,对于抓取WEB页面非常友好
-B: cuffer_size:设置操作系统的缓冲区大小
-C file_size:配置-w使用,文件超过file_size后,自动滚动,原文件名加上数字后缀,从1开始。file_size单位是mb,是整数单位(10001000bytes),不是计算单位
(1024
1024bytes).
-D:列出当前系统可用于抓包的网络接口和序号
-e: 显示链路层的头信息
-E: 使用spi@ipaddr algo:secret来解密IPsec ESP包。可用算法des-cbc,3des-cbc,blowfish-cbc,rc3-cbc,cast128-cbc,none,默认des-cbc
-f: 显示外部ipv4地址时,使用数字格式,而不是使用名称
-F file:从文件中读取filter expression,忽略命令行中的filter expression
-G rotate_seconds:滚动输出文件的时间间隔,单位秒。每一次滚动的文件,会添加后缀,格式为strftime(3)生成的格式。如果同时指定
-c选项,文件名格式采用-c格式
-i: 指定监听的网络接口(可用-D选项查看可用接口)。如果不指定,会默认选择序号最小的非本地回环接口,如果指定any接口,会撰取所有接口的包,
但无法开启混杂模式
-i: tstamp_type:修改时间戳
-I: 进入监视模式(只针对wifi设备)。使用-I后,指定的接口不能再与网络通信
-j: tstamp_type:修改时间戳格式
-J: 列出接口支持的时间戳格式
–time-stamp-precision=tstamp_precision:指定时间戳的精度,具体精度依赖于平台和硬件。可用单位micro和nano,默认是micro.
-K: 不验证IP、TCP、UDP的校验和
-l :将结果输出到标准输出(默认)
-L:列出可用的数据链接层的类型
m module:从module文件中加载SMI MIB module,可指定多个
-M secret:如果tcp包中指定了TCP-MD5摘要,使用secret进行校验
-n:以数字方式显示主机地址
-nn:以数字方式显示端口号
-N:不显示域名
-O: 不优化packet-matching
-p 禁用混杂模式
-Q/-p in|out|inout: 指定捕捉哪个流向的包
-q:只输入较少的协议信息
-r file:从文件中读取包,可用-指明从标准输入中读取
-S:输出TCP序号的绝对值
-s: 设置抓取包的长度,0代表默认值65536bytes.
-T type:使用指定的type解析包,可用的类型为aodv、cnfp、rpc、rtcp、snmp、tftp、vat、wb
-t: 不输出时间戳
-tt: 输出未格式化的时间戳
-ttt: 输出较上一行的相对时间戳
-tttt:输出默认格式的时间戳
-ttttt: 输出较第一行的相对时间戳
-u: 输出未加密的NFS句柄
-U: 配合w使用,写入文件时,立即写入,不使用缓冲区
-v:输出详细信息
-vv:更详细
-vvv: 更更详细
-w file: 将结果写入文件,而不是打印到标准输出。
-W filecount:指定滚动文件的最大数量,配合-c使用时,如果超过数量,将从头开始命名文件,之前的文件会被覆盖,配合-G使用时,如果
超过数量,将退出。
-x: 打印每个包的头部信息,并以16进制格式打印包数据
-xx: 在-x基础上,以16进制打印链路层头部
-y: dataliktype:设置datalinktype
-z: postrotate-command: 配合-C或-G使用,对指定文件运行command,比如使用-z gzip会用gzip压缩文件
-Z user: 使用指定用户的身份运行

expression filter:
type: 指定捕获什么类型的网络包
host: 指定主机,默认值;如host foo
net: 指定网段; 如net 128.3
port: 指定端口 如port 22
portrange: 指定端口范围如 portange 6000-6008

dir:指定捕获那个流向的数据包
src: 捕获从src流入的包,如src foo
dst: 捕获流向dst的包;如dst net 128.3
src or dst: 捕获从src流入或流向dst的包;如src or dst port ftp-data
src and dst: 捕获从src流向dst的包

proto:指定捕获那种协议的包,不指定默认捕获所有协议的包
ether
fddi
tr
wlan
ip
ip6
arp
rarp
decnet
tcp
udp
and or not 条件组合

3、 详细叙述僵尸进程产生的原因以及危害
子进程退出后,还没有来得及被父进程清理,或父进程没有调用wait或waitpid等待子进程结束,也没有显式忽略SIGCHLD信号,此
子进程即成为僵尸进程;如果父进程退出,僵尸进程会被init进程接管,清理其进程信息后,杀死僵尸进程,但如果父进程一直不退出
(比如服务进程,httpd,ngix等),僵尸进程就一直存在;僵尸进程虽然不会被调度执行,但它依然占据一个进程号,也在进程表中占据
一行资源,如果僵尸进程过多,会造成资源大量浪费,甚至造成系统崩溃。

4、 详细说明vmstat输出结果的含义
procs(进程)
r: 运行队列中进程数量,这个值也可以判断是否需要增加CPU.(长期大于1)
b 等待IO的进程数量

Memory(内存)
swpd使用虚拟内存大小,如果swpd的值不为0,但是SI,SO的值长期为0,这种情况不会影响系统性能
free 空闲物理内存大小
buff 用作缓冲的内存大小
cache 用作缓存的内存大小,如果cache的值大的时候,说明cache处的文件多,如果频繁访问到的文件都能被cache处,那么
磁盘的读IO bi会非常小

Swap
si 每秒从交换区写到内存的大小,有磁盘调入内存
so 每秒写入交换区的内存大小,有内存调入磁盘
注意:内存够用的时候,这两个值都是0,如果这两个值长期大于0时,系统性能会受到影响,磁盘IO和
CPU资源都会被消耗,不能看到空闲内存(free)很少或接近于0时,就认为内存不够用了,不能光看这一
点,还有结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会
受到影响的,因为LINUX总是先把内存用光

IO
bi 每秒读取的块数
bo 每秒写入的块数
注意: 随机磁盘读写的时候,这2个值越大(如超出1024K),能看到CPU在IO等待的值也会越来越大。

system (系统)

in 每秒中断数,包括时钟中断
cs 每秒上下文切换数
注意:上面2个值越大,会看到有内核消耗的CPU时间会越大

CPU(以百分比表示)
US用户进程执行时间百分比(user time) us的值比较高时,说明用户进程消耗的CPU时间多,但如果长期超
50%的使用,那么我们就该考虑优化程序算法或者进行加速
sy: 内核系统进程执行时间百分比(system time) sy的值高时,说明系统内核消耗CPU资源多,这并不是良性表现
,应该检查原因
wa IO等待时间百分比,wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现
瓶颈(块操作)
id 空闲时间百分比

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值