前边对netstat展开过分析与描述,在linux下 ,那还有其他分析工具嘛?
tcpdump这个功能参数很多,表达式的选项也非常多,非常强大,不过常用的功能确实不多。详情可以通过man查看系统手册。
在客户端开发的时候,可以使用fiddler或者charles进行抓包分析,更方便吧。
在2g网下或非wifi下,想抓包调试,tcpdump+wireshark,这个组合很不错~
Wireshark
(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。
一. tcpdump事例
tcpdump的参数众多
,如下
(以太网网络图中eth1/0/10 代表网卡一,网卡二,网卡三 lo代表127.0.0.1,即localhost)
二. tcpdump常用操作
默认启动
tcpdump
监视指定网络接口的数据包
tcpdump -i eth1
如果不指定网卡,默认tcpdump只会监视第一个网络接口,一般是eth0,下面的例子都没有指定网络接口。
监听指定的主机
$ tcpdump -i eth0 -nn 'host 192.168.1.231'
这样的话,192.168.1.231这台主机接收到的包和发送的包都会被抓取。
$ tcpdump -i eth0 -nn 'src host 192.168.1.231'
这样只有192.168.1.231这台主机发送的包才会被抓取。
$ tcpdump -i eth0 -nn 'dst host 192.168.1.231'
这样只有192.168.1.231这台主机接收到的包才会被抓取。
监听指定端口
$ tcpdump -i eth0 -nnA 'port 80'
上例是用来监听主机的80端口收到和发送的所有数据包,结合-A参数,在web开发中,真是非常有用。
监听指定主机和端口
$ tcpdump -i eth0 -nnA 'port 80 and src host 192.168.1.231'
多个条件可以用and,or连接。上例表示监听192.168.1.231主机通过80端口发送的数据包。
监听除某个端口外的其它端口
$ tcpdump -i eth0 -nnA '!port 22'
如果需要排除某个端口或者主机,可以使用“!”符号,上例表示监听非22端口的数据包。
三.其他
前边叙述过netstat相关分析,那么他们啥区别呢?
tcpdump程序
tcpdump一边从网络读入分组一边显示关于这些分组的大量信息。它还能够只显示与所指定的准则匹配的那些分组。
netstat程序
netstat服务于多个目的:
(1)展示网络端点的状态。
(2)展示某个主机上各个接口所属的多播组。
(3)使用-s选项显示各个协议的统计信息。
(4)使用-r选项显示路由表或使用-i选项显示接口信息。
lsof程序
名字lsof代表“list open files”,即列出打开的文件。
lsof的常见用途之一是找出哪个进程在指定的IP地址或端口号上打开了一个套接口。netstat告诉我们哪些IP地址和端口正在使用中以及各个TCP连接的状态,却没有标识相应的进程。lsof弥补这个缺陷。
相关文章:
tcpdump&wireshark初次使用总结:
http://www.51testing.com/html/34/361634-938657.html
本文地址: