您的位置:首页 > 理论基础 > 计算机网络

tcpdump使用基础和技巧

2012-09-17 14:34 218 查看
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访问请求产生的错误;

如果需要相关错误的统计信息可以参照上面的统计方法;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: