美文网首页iOS 知识点
使用wireshark分析http

使用wireshark分析http

作者: 魁爷的黑作坊 | 来源:发表于2018-03-21 09:53 被阅读108次

    由于最近要分析shadowsocks的源码,所以从最简单的抓裸奔的包开始,即最简单的http包。http协议已经十分熟悉了,但是从底层的tcp开始还是第一次研究。

    准备工作

    准备要抓的http包

    尝试直接抓网站的首页,发现又是文字又是图片,不好分析。所以就抓一些简单的文本,类似css或者是github上面的raw,尼玛只能抓一次,后面刷新就是304了。之后直接在自己的服务器上部署一句PHP代码,之后抓都是200了。

    <?php
    echo "this is test";
    

    准备抓包工具

    这里使用的是著名的wireshark,进入后选择网卡,然后过滤ipip.addr == IP即可抓到需要测试的http包

    开始抓包

    在wireshark点击开始捕获,然后再浏览器刷新部署在服务器上的动态页面,就可以抓到最原生态的http包了

    wireshark抓包截图

    以上就是最原生态的http的原始包

    抓包分析

    为了描述的更加清楚,以下所说的包的序列如图中的黑框所示

    包序列

    分析过程

    TCP/IP连接的创建

    1. 27号包 客户端向http服务器的80端口发送SYN请求连接
    2. 43号包 http服务器的80端口发送ACK应答,允许连接
    3. 44号包 客户端向服务端再发送应答码,完成三次握手

    http包分析

    1. 48号包 客户端向服务器发送请求头
    请求头
    1. 57号包 服务端接收信息,发送应答码
    2. 58号包 服务端将html文档返回给客户端
    返回的信息
    1. 64号包 客户端收到服务端发送的信息,发送应答码

    TCP/IP连接断开

    1. 130号包 http服务器端主动断开连接,发送SYN,服务端说再见
    2. 131号包 客户端发送准许断开的应答码
    3. 189号包 客户端发送再见
    4. 191号包 服务端含泪最终告别

    遇到的问题

    测试过程中服务端发送完html的信息之后并没有马上断开连接,而是过了一段时间,这是什么原因

    客户端收到服务器端的html中,头部有Keep-Alive:timeout=5即说明服务器在发送完这个html文档后有5秒钟的时间继续等待,如果客户端在这5秒内继续向服务端请求数据,服务端会继续做出回复,如果没有数据交换,则5秒钟之后,服务器端会主动断开连接。这样做是为了减少http服务器不必要的握手,加快传输速度。

    相关文章

      网友评论

        本文标题:使用wireshark分析http

        本文链接:https://www.haomeiwen.com/subject/osswqftx.html