最近和学弟在调试一个GPRS通信模块,需求是通过GPRS模块通过http协议发送数据到服务器,但是http协议一直失败,服务器返回400,通过查询http状态码得知,http400错误是请求无效,因为GPRS模块没有实现http协议的封裝,需要在TCP协议的基础上,手动拼装http格式的报文.所以初步猜测是http协议格式错误导致的.
这时候,最简单有效的调错方式就是通过抓包tcpdump分析,查看数据格式,然后修改.但是在GPRS模块上没法安装抓包tcpdump工具,只能在服务器上抓包tcpdump,服务器是centos的,虽然有tcpdump工具,但是没有界面,没法具体分析数据包.直接使用tcpdump抓到嘚数据包,根本没法分析好不.
在windows上,有wireshark这个工具,可以很方便的分析网络数据包,这个软件有多牛鼻就不用多说了,所有经过网卡数据都能抓到,配合圖形界面,可以很方便的查看分析数据.不知能查看应用层协议的数据,网络中的五层协议都能查看.
办法当然是有的,把tcpdump抓取的数据转存文件,然后鼡wireshark打开文件,分析数据.
1.开启tcpdump抓包tcpdump,并将结果转存为文件
tcp
是指定抓取那种协议的数据,因为我们要抓取http协议,但是tcp不能指定http协议,但是http协议是基于TCP协议嘚,所以抓取TCP协议数据.
-s 0
tcpdump 抓取数据包时默认抓取长度为68字节加上-S 0 后可以抓到完整的数据包
port 80
我的服务器监听的80端口,所以只抓取80端口的数据.
在终端中使用 ctrl+c组合键结束抓包tcpdump,然后会在当前目录下生成一个http.cap文件
3.把文件下载下来,使用tcpdump分析数据
到这已经成功打开了,剩下的就是分析数据包了
在協议http的那一行右键,选择追踪流,然后选择http
到这,整个抓包tcpdump就完成了,是不是很简单呢
经过抓包tcpdump分析,终于解决了http400的问题