抓包分析,tcpdump 和 wireshark 配合使用的简单尝试
背景
在项目上,我的程序发起请求的时间与对应服务收到请求的时间有长达 3~4s 的差距,故学习抓包分析,先记录下学习过程
参考博客
使用机器
1、本机:Windows10,在 http://www.ip138.com/ 上查到的网址为 223.71.***.**(隐私处理,写在这里是为了说明跟 ipconfig 查到的不一样。在实际中没用到,看不见这个的具体值不影响本篇博客的理解),在 dos 窗口用 ipconfig 命令查到的网址为 192.168.80.3
2、本机虚拟机:Linux,用 ifconfig 命令查到信息如下图
使用的服务
自己用 Java 写了一个简单的接口,用于测试
该服务监听 8000 端口
在本机和虚拟机上分别起了这么一个服务
三种情况下的抓包操作
1、在本机上请求虚拟机上的服务,在虚拟机上抓包
在本机用 postman 发请求到虚拟机上的该服务,在虚拟机上用命令
tcpdump -A -i ens33 -w dump-file1 host 192.168.80.3
抓包,抓到的数据自动放到文件 dump-file1 中,将文件 dump-file1 弄到本机,拖入 wireshark 进行查看和分析
2、在虚拟机上请求本机上的服务,在虚拟机抓包
在虚拟机用 curl 命令发请求到本机上的该服务,在虚拟机上用命令
tcpdump -A -i ens33 -w dump-file2 host 192.168.80.3
3、在虚拟机上请求虚拟机自己的服务,在虚拟机抓包
在虚拟机上用 curl 命令发请求到虚拟机自己的服务,在虚拟机用命令
tcpdump -A -i lo -w dump-file6 host 192.168.80.128
抓包,抓到的数据自动放到文件 dump-file6 中,将文件 dump-file6 弄到本机,拖入 wireshark 进行查看和分析
注意
1、以上使用的都是指定 ip 和 网卡的抓包,还可以继续指定端口,例如
tcpdump -A -i lo -w dump-file6 host 192.168.80.128 and port 8000
2、参考博客 https://www.jianshu.com/p/4af0d0fe5624 中提到,需要去 http://www.ip138.com/ 网站看真实外网 ip,但在我的实践中,不知道是不是因为是在自己虚拟机上测试的,所以用的 ip 都是来自于 ipconfig 和 ifconfig
3、请求本地服务时,要想要抓包的话,将网卡定为 lo 即可,参考 https://www.zhihu.com/question/43590414/answer/96327798
4、wireshark 抓包分析,对 wireshark 的使用和 TCP/IP 的网络协议都能理解的更深一点 # 待学习