week 7

1.100.0.0.16/28对应的网关地址、广播地址、可分配IP地址范围

网关地址:100.0.0.17
广播地址:100.0.0.31
可分配IP地址:100.0.0.16~100.0.0.31

2.tcpdump的使用

语法:

tcpdump [options][Protocol][Direction][Host(s)][Value][Logical Operations][Other expression]

    options:
        -a 尝试将网络和广播地址转换成名称。
        -c<数据包数目> 收到指定的数据包数目后,就停止进行倾倒操作。
        -d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出。
        -dd 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出。
        -ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出。
        -e 在每列倾倒资料上显示连接层级的文件头。
        -f 用数字显示网际网络地址。
        -F<表达文件> 指定内含表达方式的文件。
        -i<网络界面> 使用指定的网络截面送出数据包。
        -l 使用标准输出列的缓冲区。
        -n 不把主机的网络地址转换成名字。
        -N 不列出域名。
        -O 不将数据包编码最佳化。
        -p 不让网络界面进入混杂模式。
        -q 快速输出,仅列出少数的传输协议信息。静默模式
        -r<数据包文件> 从指定的文件读取数据包数据。
        -s<数据包大小> 设置每个数据包的大小。
        -S 用绝对而非相对数值列出TCP关联数。显示绝对序列号
        -t 在每列倾倒资料上不显示时间戳记。
        -tt 在每列倾倒资料上显示未经格式化的时间戳记。
        -ttt 输出本行和前面一行之间的时间差。 
        -tttt 在每一行中输出由date处理的默认格式的时间戳。
        -T<数据包类型> 强制将表达方式所指定的数据包转译成设置的数据包类型。
        -v 详细显示指令执行过程。
        -vv 更详细显示指令执行过程。
        -x 用十六进制字码列出数据包资料。
        -w<数据包文件> 把数据包数据写入指定的文件。

    Protocol(协议):
    Values(取值):ether,fddi,ip,arp,rarp,decnet,lat,sca,moprc,mopdl,tcp and udp.
    如果未指定协议,则使用所有协议

    Direction(流向):
    Values(取值):src,dst,src and dst,src or dst
    如果未指定源或目标,则应用"src or dst"

    Host(s)(主机):
    Values(替代关键字):net,port,host,portrange.
    如果未指定关键字,则默认使用"host"

    Logical Operations:
    (1) AND
    and or &&
    (2) OR
    or or ||
    (3) EXCEPT
    not or !

tcpdump示例:

(1).默认启动

tcpdump

默认情况下,直接启动tcpdump将监视第一个网络接口(非lo口)上所有流通的数据包。

(2).监听指定网络接口的数据包

tcpdump -i eth1

如果不指定网卡,默认tcpdump只会监听第一个网络接口,如eth0

(3).监听指定主机的数据包

打印所有进入或离开主机hostname的数据表

tcpdump host hostname

也可以指定ip,例如截获192.168.3.10的主机收到和发出的数据包

tcpdump host 192.168.3.10

截获主机192.168.3.10与192.168.3.17或18的通信

tcpdump host 192.168.3.10 and \(192.168.3.17 or 192.168.3.18 \)

截获主机192.168.3.10除了与192.168.3.17之外所有主机通信的IP包

tcpdump host 192.168.3.10 and ! 192.168.3.17

截获主机hostname发送的所有数据

tcpdump src host hostname

截获所有发送到主机hostname的数据

tcpdump dst host hostname

(4).监听指定主机和端口的数据包

获取主机192.168.3.10接收或发出的telnet包

tcpdump port 23 and host 192.168.3.10

(5).监听指定网络的数据包

获取本机与192.168网段通信的数据包

tcpdump -c 10 net 192.168       ###-c 10 表示只抓取10个包

(6).监听指定协议的数据包

获取ping包

tcpdump  -i eth0 icmp

获取主机192.168.3.10对本机的ping

tcpdump -c 5 -nn -i eth0 src 192.168.3.10 and icmp

3.僵尸进程产生的原因以及危害

僵死状态(Zombies)是一个比较特殊的状态。  当进程退出并且父进程没有读取到子进程退出的返回代码时就会产生僵尸进程。僵尸进程会以终止状态保持在进程表中,并且会一直在等待父进程读取退出状态代码。所以,只要子进程退出,父进程还在运行,但父进程没有读取子进程状态,子进程进入Z状态

产生原因:

在子进程终止后到父进程调用wait()前的时间里,子进程被称为zombie;  

a. 子进程结束后向父进程发出SIGCHLD信号,父进程默认忽略了它

b. 父进程没有调用wait()或waitpid()函数来等待子进程的结束

c. 网络原因有时会引起僵尸进程;

危害:

僵尸进程会占用系统资源,如果很多,则会严重影响服务器的性能;

如何防止僵尸进程

1)让僵尸进程成为孤儿进程,孤儿进程不会占用系统资源,最终是由init进程托管,由init进程来释放;

signal(SIGCHLD, SIG_IGN); 忽略SIGCHLD信号,这是一个常用于提升并发服务器性能的技巧 因为并发服务器常常fork很多子进程,子进程终结之后需要服务器进程去wait清理资源。 如果将此信号的处理方式设置为忽略,可让内核把僵尸进程转交给init进程去处理,省去了大量僵尸进程占用系统资源。

2) 调用fork()两次;

3) 捕捉SIGCHLD信号,并在信号处理函数中调用wait函数;

4.说明vmstat输出结果的含义

vmstat命令说明

[root@www ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 738856    948 150136    0    0   422    39  149  406  2  4 94  0  0

procs(进程):

r:等待运行的进程的个数;

b:处于不可中断睡眠态的进程个数;

memory(内存):

swpd:交换内存使用总量;

free:空闲的物理内存总量;

buffer:用于buffer的内存总量;

cache:用于cache的内存总量;

swap

si:数据进入swap中的数据速率(kb/s)

so:数据离开swap的速率(kb/s)

io

bi:从块设备读入数据到系统的速度(kb/s)

bo:保存数据至块设备的速率(kb/s)

system

in:interrupts,中断速率;

cs:context switch, 上下文切换的速率;

cpu

us: user space,用户进程执行时间百分比。

sy:system,内核系统进程执行时间百分比。

id:idle,空闲时间百分比

wa:wait,等待io完成 

st: stolen,被虚拟化偷走的

转载于:https://blog.51cto.com/5190716/2337140

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值