你可以尝试抓取访问某个网站的数据包或者自己启动一个web服务抓取一段http get请求报文。 利用python,在任意目录就可以快速启动一个监听8080端口的http服务(这大概是最简单启动一个http服务的方式了)。

Windows
python -m http.server 8080
Linux
python -m SimpleHTTPServer 8080

启动成功后,你可以看到:

Windows
Serving HTTP on 0.0.0.0 port 8080(http://0.0.0.0:8080/)...
Linux
Serving HTTP on 0.0.0.0 port 8080 ...

接着使用tcpdump来抓包,注意抓的是loopback包(本地发送到本地),因此执行:

sudo tcpdump -i lo0 -v 'port 8080' -w http.cap

这里的 -i 参数表示指定 interface,而因为客户端和服务端都在本地,因此使用 lo0(我使用的是 Mac,在某些 Linux 操作系统下可能是 lo,具体可以通过 ifconfig 查看)指定 loopback 的接口,这里我们只想捕获发往 8080 端口的数据包,结果汇总成 http.cap 文件。

打开浏览器敲入 http://localhost:8080 并回车,应该能看到启动 HTTP 服务路径下的文件(夹)列表。这时候你也应该能看到类似下面这样的文字,标志着多少包被捕获,多少包被过滤掉了:

24 packets captured  
232 packets received by filter

好,现在我们使用 CTRL + C 结束这个抓包过程。

抓包后使用 Wireshark 打开该 http.cap 文件,在 filter 里面输入 http 以过滤掉别的我们不关心的数据包,我们应该能看到请求和响应至少两条数据。 wireshark.jpeg