利用 Wireshark 分析 TCP 三次握手四次挥手的过程

配置抓包过滤器

由于网络中报文的数量是十分庞大的,需要设置一些过滤条件得到想要的包
首先使用ping查看目的服务器的ip地址
ping获得ip
得到DNS解析后的服务器ip地址为:47.107.53.188
接着在wireshark过滤器中添加规则:ip.src==47.107.53.188 or ip.dst==47.107.53.188
以筛选发往和接受目的服务器的报文,并开始抓包

三次握手


红框圈中的三个包是TCP握手

  • 第一个的TCP报文段为:

    可以发现,由223.129.12.156发往47.107.53.188
    同步标志位SYN为1,ACK为0,seq为0,我方电脑主动打开链接。
  • 第二个报文:

    由47.107.53.188发往223.129.12.156
    同步标志位SYN为1,ACK为1,seq为0,ack为1,服务器进行响应
  • 第三个报文:

    由223.129.12.156发往47.107.53.188
    同步标志位SYN为0,ACK为1,seq为1,ack为1,响应服务器的响应
    至此TCP三次握手完成,建立了TCP链接。
    由于访问的网站是基于HTTPS的,应用层协议为TLS1.3,即三次握手之后的包

四次挥手

首先关闭网页,查看wireshark最后捕获的几个包

红框为前两次挥手,蓝框为后两次挥手

  • 第一次挥手

    第一次挥手由客户端发起,FIN为1,但同时也在响应之前的报文,ACK也为1,seq为1587454。
  • 第二次挥手

    第二次挥手由服务器发起,ACK为1,seq为2049,ack为1587454+1 = 1587455
  • 第三次挥手

    第三次挥手由服务器发起,FIN为1,ACK为1,seq = 2049,ack = 1587455
  • 第四次挥手

    第四次挥手由客户端发起,ACK = 1,seq = 1587455,ack = 2050

挥手完成,TCP连接断开。

Q.E.D.


To baldly -_- go no man has gone before