http://hi.baidu.com/chenfalei/blog/item/3c2cd233c22ab054ac4b5f05.html
经常搞网络程序得人,需要抓包查看本地发送和接收得一些网络数据,这就需要抓包工具了。
windows下得抓包工具比较多,我用过fiddler2<只能抓取使用微软的WinInet库得程序网络包>,WinNetCap等,
Mac系统下也有几个抓包工具,我用过得一个叫WireShark,这个工具也有Windows版本的,Mac版本的感觉挺好用的。
http://www.wireshark.org/download.html 这里是官网,下载对应版本(OS X xxx<Mac系统专用>)即可。
然后 运行此程序。
出现如下界面
自己翻译一下几个选项的含义,
--开始抓包到一个文件
--打开一个抓包记录文件<多用于后续分析>
--打开一个抓包参数文件<猜的,具体没用过这个>
--浏览在线帮助文档
我一般使用第一个选项,点击第一个图标,出现如下图
如果抓包 过滤条件没有填写,则抓取所有的数据包<TCP,UDP等等<好像只要到本网卡的包都能抓到>>,入下图
抓包结果,如上图
如果设置了过滤条件,入上图我设置得就是本机和服务器之间得包才会抓取,其他包不作处理。这样就只有a,b机器之间得数据包<更多抓包过滤语法,请参考http://wenku.baidu.com/view/ad550312a21614791711286e.html>,如果是socket连接得,还可以清晰得看到
“三次握手”过程
a--->(syn)------->b,
b--------->(ack,syn)-------->a,
a--------->(ack)------------>b
以及断开连接时得“四次握手”
至于 syn/ack/push/rst/fin等表示含义,请自己百度。
右下角的是通信协议栈每层的数据包头,在图上看时,从上到下依次为
--网络数据包
--链路层包头
--IP协议包头
-----TCP协议包头
--应用程序数据<最初得原始数据>
这样对网络协议模型也有较好得理解帮助。