[转]使用Wireshark来检测一次HTTP连接过程
Wireshark是一个类似tcpdump的嗅探软件,界面更人性化一些,今天我用它来检测一次HTTP连接过程。
安装好之后,先配置一下,选择Capture->Options,先设定你要嗅探的网络接口,
然后在Capture Filter里输入tcp port http,说明只监听80端口的tcp请求。
设置好这些,你就可以点击Start开始检测了。
打开浏览器随便浏览一个网页,你就会得到类似下面的结果:
我浏览的是Google的页面。这里211.100.209.50是浏览器,66.249.89.147就是服务器。
下面具体解释一下这个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洪水攻击了。