WireShark抓包分析TCP三次握手过程,TCP报文解析

06-13 1482阅读

「作者主页」:士别三日wyx

「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者

「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》

使用WireShark工具抓取TCP协议三次握手的数据包,分析TCP三次握手过程,分析TCP报文中各个字段的作用。

      • 第一步:访问百度
      • 第二步:过滤TCP协议的数据包
      • 第三步:数据包分析
      • 第四步:数据报文分析

        第一步:访问百度

        1)打开wireshark,开启抓包,然后打开浏览器访问百度,触发TCP三次握手。

        2)打开cmd,ping www.baidu.com 拿到百度的IP地址。

        WireShark抓包分析TCP三次握手过程,TCP报文解析

        第二步:过滤TCP协议的数据包

        1)显示过滤器输入:tcp and ip.addr==110.242.68.3,过滤TCP协议的数据包。

        WireShark抓包分析TCP三次握手过程,TCP报文解析

        最上面的三个包,就是TCP三次握手的数据包,每个包对应一次握手。

        第三步:数据包分析

        先分析一下三个握手的包都做了什么

        1)先看第一个数据包,源地址(Source字段)是我

        WireShark抓包分析TCP三次握手过程,TCP报文解析

        cmd执行 ifconfig 验证一下:

        WireShark抓包分析TCP三次握手过程,TCP报文解析

        目的地址(Detintion字段)是百度的地址

        Info字段,是请求的描述,可以看到里面有一个 SYN

        WireShark抓包分析TCP三次握手过程,TCP报文解析

        总结一下第一个包做了什么:

        我的电脑向百度的服务器发送了一个TCP请求,SYN表示这是一个建立连接的请求,这是第一次握手。

        2)再看第二个数据包,源地址(Source字段)是百度的地址

        WireShark抓包分析TCP三次握手过程,TCP报文解析

        目的地址(Detintion字段)是我的

        Info字段是描述,可以看到有一个 SYN 和 ACK

        WireShark抓包分析TCP三次握手过程,TCP报文解析

        总结一下这个包做了什么:

        百度的服务器(收到我的链接请求以后)向我的电脑发送了一个TCP请求,SYN+ACK表示这是一个应答的请求,这是第二次握手。

        3)再看第三个数据包,源地址(Source字段)是我

        WireShark抓包分析TCP三次握手过程,TCP报文解析

        目的地址(Detintion字段)是百度的服务器

        Info字段是描述,可以看到里面有一个 ACK

        WireShark抓包分析TCP三次握手过程,TCP报文解析

        总结一下这个包做了什么:

        我的电脑(收到百度服务器的响应请求后)向百度的服务器发送了一个TCP请求,ACK表示这是一个确认请求,这是第三次握手

        发送完这个确认请求后,三次握手就完成了,客户端会打开到服务器的单向链接;服务器收到确认请求后,就会打开到客户端的单向链接;两个方向的连接都打开,就可以传输数据了。


        第四步:数据报文分析

        TCP协议数据报文格式如下图,接下来,我们根据抓到的数据包,分析各个字段的对应关系及作用。

        WireShark抓包分析TCP三次握手过程,TCP报文解析

        1)点开TCP协议的数据包,第四行 Transmission Control Protocol 就是TCP协议的数据了。按照首字母区分协议。

        • Source Port字段是源端口,客户端会使用一个随机端口向服务器发起TCP连接
        • Destination Port字段是目的端口,因为我们是用https协议访问百度,所以这里是向服务器的443端口发起TCP连接

          WireShark抓包分析TCP三次握手过程,TCP报文解析

          2)序号和确认号用来按顺序重组数据

          • Sequence Number:表示本次传输数据的起始字节在整个数据流中的位置,是相对序号
          • Sequence Number (Raw):原始序号
          • Next Sequence Numvber:下一个包的序号
          • Acknowledgment Number:期望收到下一个包的序号,相对序号
          • Acknowledgment Number(Raw):原始序号

            WireShark抓包分析TCP三次握手过程,TCP报文解析

            3)数据偏移表示数据到开始位置的距离,用来计算TCP报文的首部长度

            WireShark抓包分析TCP三次握手过程,TCP报文解析

            4)标志位用来确认请求的作用,三次握手中需要注意的两个标志位是:Acknowledgment (ack)和 syn

            • Reserved:保留位
            • Nonce:显式拥塞通知,标明阻塞即将发生,让发送方降低传输速率
            • CWR:减少拥塞窗口
            • ECN-Echo:有两种意思,取决于SYN的值
            • 紧急 URG(Urgent):为1表示高优先级数据包
            • 确认 ACK(Acknowledgment ):为1表示确认号字段有效
            • 推送 PSH(Push):为1表示接收方尽快将这个报文交给应用层而不用等待缓冲区装满
            • 复位 RST(Reset):为1表示出现严重错误,需要重新建立连接
            • 复位 SYN:建立连接时同步序号;SYN=1和ACK=0表示连接的请求,SYN=1和ACK=1表示接收连接的请求
            • 终止 FIN:为1表示传输完成,请求释放链接

              WireShark抓包分析TCP三次握手过程,TCP报文解析

              注意看第一次握手的数据包,因为标志位里只有Syn的值为1,所以Flags显示的是SYN,请求的Info字段也就显示 SYN

              WireShark抓包分析TCP三次握手过程,TCP报文解析

              再看第二次请求的数据包,因为标志位里Syn和Acknowledgment的值都是1,所以Flags显示的是 SYN,ACK,请求的Info字段也就显示 SYN,ACK

              WireShark抓包分析TCP三次握手过程,TCP报文解析

              5)最后就是窗口大小、校验和、紧急指针、选项、填充这几个字段

              • window字段表示窗口大小,告诉对方自己所能接收的最大字节是多少,用于流量控制
              • Checksum字段表示校验和,用来检验数据包的完整性
              • Urgent Poiter字段表示紧急指针,在标志位URG为1的时候有效,代表一个偏移量,和序号字段值相加
              • Options字段表示选项,长度可变
              • Timestamps字段表示填充

                WireShark抓包分析TCP三次握手过程,TCP报文解析

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]