以访问分布式的WEB系统为例。用java编写HTTP客户端 ,以轮询的方式访问部署两台服务器上的web应用 (web应用的端口号为8080)。web应用所有的服务器IP分别为10.232.22.80和10.232.22.81;客户端所在服务器的地址为10.232.26.122。
sudo /usr/sbin/tcpdump -i eth0 tcp port 8080 and src host 10.232.26.122 and dst host 10.232.22.80 or dst host 10.232.22.81
通过上面的输出结果可以很直观地看到,客户端在某个时间点发送的请求到达服务器的IP,以及HTTP请求中所包含的OPTIONS信息,省去在日志中搜索发送HTTP请求的目标服务器。
PS:有关于tcpdump的详细参数信息,可在linux 或 unix 系统中执行man tcpdump获取 。
另外,当我们进行稳定性测试或者在线上排查异常问题时,我们也可以可以将tcpdump输出的信息保存到文件中,然后再通过诸如wireshark,fiddler,smsniffer等网络数据分析工具进行分析。我暂且简单介绍一下通过wireshark工具对传送的报文进行分析的方法。
sudo /usr/sbin/tcpdump -i eth0 –w test.cap。在wireshark打开后,即可看到抓取的数据包。如图所示
sudo /usr/sbin/tcpdump –i eth2 tcp and src 10.232.17.151 and dst 10.232.16.9 –w 1.cap,使用wireshark打开1.cap文件。
由图可看出,选中一个package时,wireshark会解析其各个组成部分,并与二进制报文相对应。