tcpdump使用基础和技巧

本文介绍tcpdump的基础用法及高级技巧,如监控CGI访问次数、排查性能瓶颈及分析请求错误等,适用于Linux下的网络程序调试。

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

tcpdump是linux下的一款字符界面的网络抓包工具,能为我们的网络程序调试提供极大的遍历。本文主要总结一下tcpdump的使用方法和一些使用技巧。

1、tcpdump使用基础:

../tcpdump -i eth0 port 80 -nn -X ‘port 53′ -c1 -A

参数说明:

-i <eth*> 表示抓包监听的网卡;

port <端口号> 表示监听的端口,如果不加表示抓取所有端口的网络包;

-A 表示将抓包内容以ASCII码的形式打印出来,方便我们分析一些明文的内容;

-n 表示不要将抓包内容中的HOST和端口转换为名字;

-c 表示需要抓取多少个包,如果不加则表示一直抓取;

-X 按HEX十六进制和ASCII码的形式打印出包内容,对于新协议特别有效;

2、WEB服务器CGI调试中tcpdump的应用:

a).如何快捷的得到服务器上的每个CGI被访问的次数排序:

tcpdump -c 10000 -i eth1:1 port 80 -A 2>&1 |awk -F"cgi-bin" '{print $2}' | sed '/^$/' | awk -F"?" '{print $1}'|sort|uniq -c|sort -rk
             上面提到过,-A选项可以将抓取到的包的内容以ASCII码的形式打印出来,所以可以使用web服务器CGI请求的"cgi-bin"来过滤CGI包,再把?号后的参数丢弃后排序,即可得到服务器上的即时CGI的请求的数量,不需要对http服务器做任何的修改;

一般WEB服务器中CGI配置的数量比例应该基本和上面的相应的访问量一致,从而避免服务器性能的浪费;

b).如何知道某个CGI是否成为性能瓶颈:

             因为web服务器的访问都是TCP短连接的,每个请求都会先accept进来然后在建立的连接上开始通信,所以可以用过strace相应的CGI进程,看看在accept处是否有明显的停顿,如果有的话则说明CGI还会在这里等待客户端请求进来,而不是特别忙。

d).分析CGI请求错误:

            如果WEB服务器突然出现404或者503错误,但是又很难重现,可以开启tcpdump抓包来进行分析;

tcpdump -i eth1:1 port 80 -A 2>&1 | grep "HTTP/1.1" | grep -v "HTTP/1.1 200 OK"
通过上述命令可以监控到服务器上的所有CGI访问请求产生的错误;

如果需要相关错误的统计信息可以参照上面的统计方法;







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值