Linux 服务器端网络抓包和分析实战,中高级 Java 面试题目汇总解答
yum install -y tcpdump
执行命令 ip addr 查看网卡名,如下所示,我这里是 ens33:
[root@localhost ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:6a:5f:93 brd ff:ff:ff:ff:ff:ff
inet 192.168.119.160/24 brd 192.168.119.255 scope global noprefixroute dynamic ens33
valid_lft 1358sec preferred_lft 1358sec
inet6 fe80::1646:1c58:ee87:bc13/64 scope link noprefixroute
valid_lft forever preferred_lft forever
执行以下命令即可开始抓 ens33 网卡的包,并保存到名为 weatherservice.cap 的文件:
tcpdump tcp -i ens33 -w ./weatherservice.cap
现在已经开始抓包了,我们打开浏览器发几次请求,以便能抓到 weatherservice 和 wthrcdn.etouch.cn 网站之间的请求响应,如下图,地址是:http://192.168.119.160:8080/get/上海
返回 ssh 窗口,按下 ctrl+c,结束抓包;
抓包数据在文件 weatherservice.cap 中,将其下载到装有 wireshar 的 windows 机器上;
打开 wireshark,在"文件"->“打开”,选择 weatherservice.cap,如下图:
网卡 ens33 上的所有网络包都被抓到了,但很多都不是我们关心的,需要过滤,这里的过滤很简单:只保留 http
请求响应级即可,如下图,在红框位置输入"http"然后回车:
如下图红框所示,编号为 21 的包就是 weatherservice 向 wthrcdn.etouch.cn 的请求,编号 25 的包则是 wthrcdn.etouch.cn 的响应(红框中的灰色箭头表示一对请求响应):
双击上图中的 25 号包,弹出的窗口即为 wthrcdn.etouch.cn 网站响应数据的详情,如下图,红框中的 Content-encoding: gzip\r\n 表示该响应的 body 启用了 gzip 压缩:
评论