Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。网络封包分析软件的功能可想像成 "电工技师使用电表来量测电流、电压、电阻" 的工作 - 只是将场景移植到网络上,并将电线替换成网络线。
在过去,网络封包分析软件是非常昂贵,或是专门属于营利用的软件。Ethereal的出现改变了这一切。在GNUGPL通用许可证的保障范围底下,使用者可以以免费的代价取得软件与其源代码,并拥有针对其源代码修改及客制化的权利。Ethereal是目前全世界最广泛的网络封包分析软件之一。
wireshark用户手册(中文):::http://man.lupaworld.com/content/network/wireshark
wireshark开源网络协议分析工具的简单使用:
安装,并且在安装过程中,提示要安装 WinCap ,这个是要安装的,应该是抓包需要的插件吧.
打开软件,选择:capture->options,在 interface 中选择一个网卡,并且在 capture filter 中增加一个过滤器,就可以了.
常用的过滤器就是 host + ip ,可以抓与指定 ip 通信的包.
然后 start ,就开始抓包了.
抓到了包之后,是二进制的,在包上面点击右键选择 Follow TCP Stream ,就可以看到 http 包了.
里面红色的是发出的请求,篮色的是响应.
选择Capture->Options,先设定你要嗅探的网络接口,也就是你的网卡.然后在Capture Filter里输入tcp port http,说明只监听80端口的tcp请求.设置好这些,你就可以点击Start开始检测了.打开浏览器随便浏览一个网页,你就会得到类似下面的结果:
我浏览的是Google的页面.这里211.100.209.50是浏览器,66.249.89.147就是服务器.下面具体解释一下这个HTTP连接过程:
通过开源网络协议分析工具的分析,我们了解到浏览器向服务器发出连接请求. 服务器回应了浏览器的请求,并要求确认.浏览器回应了服务器的确认,连接成功.浏览器发出一个页面HTTP请求.服务器确认.服务器发送数据.客户端确认.服务器响应了一个200状态,表示成功.客户端发出一个图片HTTP请求.服务器响应了一个304HTTP头,告诉浏览器别打扰它,直接用缓存.客户端又发出一个图片HTTP请求.服务器还是响应了一个304HTTP头.浏览器确认.服务器准备关闭连接,并要求确认.浏览器确认.浏览器准备关闭连接,并要求确认.服务器确认. 其中包含了我们常说的TCP三次握手的过程.当"服务器回应了浏览器的请求,并要求确认"的时候,如果浏览器没有正常的确认,服务器就会在SYN_RECV状态等下去,直到超时.如果恶意程序伪造了大量类似的请求,那就是常说的SYN洪水攻击了.