美文网首页
Wireshark入门

Wireshark入门

作者: 匿名用户_bcc3 | 来源:发表于2018-12-27 23:54 被阅读0次

    相信大家总是能听到TCP、UDP,还有TCP三次握手,之前都是看的书上的理论,今天来用Wireshark抓一个tcp三次握手。

    在平时的开发中,如果是一般的Http或者Https请求,我们直接在Windows上使用Fiddler、Mac上使用Charles来抓包即可。当然,使用Wireshark也可以抓取http、https请求,不过一般使用Wireshark来抓TCP请求。

    官方下载地址:https://www.wireshark.org/download.html

    首先,来看下wireshark界面


    image.png

    这里选择Wi-Fi就能抓到本机所有的请求了,我这里是wifi,如果是直接连网线,看到的就是本地连接了。这个很简单,你试一下就能知道了。

    然后就能看到各种网络请求了,包括应用层协议和传输层协议。


    因为数据传输记录太多了,那么就一定需要过滤器功能了。上面的过滤器栏中支持以下几种表达式:
    表达式规则

    1. 协议过滤
      比如tcp,只显示TCP协议。http,就是只显示HTTP协议。注意,这里是区分大小写的。
    2. IP 地址过滤
      比如 ip.src ==192.168.1.102 显示源地址为192.168.1.102,
      ip.dst==192.168.1.102, 目标地址为192.168.1.102
    3. 端口过滤
      tcp.port ==80, 端口为80的
      tcp.srcport == 80, 只显示TCP协议的愿端口为80的。
    4. Http模式过滤
      http.request.method=="GET", 只显示HTTP GET方法的。
    5. 逻辑运算符为 AND/ OR

    点击任意一个记录,下面会显示该记录的封包详细信息


    • Frame: 物理层的数据帧概况
    • Ethernet II: 数据链路层以太网帧头部信息,这里就可以看到本机mac地址以及目标mac地址了
    • Internet Protocol Version 4: 互联网层IP包头部信息,这里可以看到本机以及目标ip地址
    • Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP,这里能看到TCP的数据包了,下面会讲到。
    • Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议

    关于互联网通信协议,推荐阮一峰的“互联网协议入门”,写的真好。http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html

    下面看下TCP报文头部格式:



    再来对比看一下Wireshark抓的TCP包,终于从理论到实践了。大学期间看了很多遍TCP报文头都记不住。重点关注一下Sequence number 和 Acknowledgment number 以及Flags。


    现在进入我们的重点,TCP三次握手,这个历史性的握手
    我们先访问一个http请求“http://www.cnblogs.com/tankxiao”,注意这里不是https哦,关于https我后面再讲。


    我们找到我们请求的http地址,注意看Stream index = 2,这个index等下可以追踪到这次http建立之前的tcp三次握手过程。

    我们鼠标右键这个http请求,Follow-TCP Stream,就可以看到此次tcp建立连接的历史性握手了。



    上面的地址栏过滤"tcp.stream eq 2"中的2就是上面的Stream index。

    咱么首先看下TCP三次握手经典图



    大学时看过很多遍这个图,却记不住到底啥意思,就是因为太抽象了,抽象到只能死记硬背,今天通过wireshark一看就明白了。

    下面来分步解析一下三次握手过程,主要关注三个参数,分别是Flags、Sequence number、Acknowledgment number

    第一次握手
    Flags:SYN
    Sequence number:0
    Acknowledgment number:0

    第二次握手
    Flags:SYN,ACK
    Sequence number:0
    Acknowledgment number:1

    第三次握手
    Flags:ACK
    Sequence number:1
    Acknowledgment number:1

    总结:TCP三次握手过程

    • 客户端发送SYN标志和序列号Seq来向服务器发起连接
    • 服务端收到请求,向客户端发送ACK表示确认,确认号是接收到的序列号+1。同时发送SYN标志位以及自己的序列号给客户端发起连接
    • 客户端再发送ACK标志给服务端表示确认,其中确认号是服务端发送过来的序列号+1

    参考博客:https://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html

    相关文章

      网友评论

          本文标题:Wireshark入门

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