Wireshark抓包分析TCP的三次握手

一、TCP三次握手连接建立过程

    Step1:客户端发送一个SYN数据包(SYN=1,Seq=X,ACK=0)给服务端,请求进行连接,这是第一次握手;

    Step2:服务端收到请求并且允许连接的话,就会发送一个SYN+ACK的数据包(SYN=1,Seq=Y,ACK=X+1)给发送端,告诉它,可以通讯了,并且让客户端发送一个确认数据包,这是第二次握手;

   Step3:服务端发送一个ACK数据包(SYN=1,Seq=Z,ACK=Y+1)给客户端,告诉它连接已被确认,这就是第三次握手。TCP连接建立,开始通讯。

Wireshark抓包分析TCP的三次握手

二、抓包过程 

我们以访问网站:fanyi-pro.baidu.com为例,在Edge下使用开发工具查看网络对应的IP:

Wireshark抓包分析TCP的三次握手

得到网站对应的IP为:180.101.49.50  端口号为80

在过滤器中输入过滤表达式:

ip.addr==180.101.49.58&&tcp.port==80

Wireshark抓包分析TCP的三次握手

 图中可以看到wireshark截获到了三次握手的三个数据包。第四个包才是HTTP的, 这说明HTTP的确是使用TCP建立连接的。

三、分析

在分析之前可以开启或关闭Wireshark工具的默认相对序列号,以此显示实际序列号,比如在包1中产生的实际序列号为:2159471844,开启默认序列号为0,按需更改:

Wireshark抓包分析TCP的三次握手

1.第一个握手数据包

Wireshark抓包分析TCP的三次握手

 SYN=1:标志位置1,表示请求建立连接

 Seq=2159471844:随机序列号

 Ack=0:初始建立连接值为0,表示当前没有接收到数据

 2.第二个握手数据包

Wireshark抓包分析TCP的三次握手

 SYN=1:标志位置1,表示请求连接

 Seq=2865270383

 ACK=2159471844:请求包中的随机顺序号X+1

3.第三次握手的数据包

Wireshark抓包分析TCP的三次握手

  SYN:标志位,表示已经收到记录

  Seq =2159471845  :随机顺序号Z

  Ack = 2865270384:请求包中的随机顺序号Y+1

  就这样通过了TCP三次握手,建立了连接。开始进行数据交互

数据包的关键属性如下:

Wireshark抓包分析TCP的三次握手

 其中,对于我们日常的分析有用的就是前面的五个字段。

它们的含义是:

SYN表示建立连接,

FIN表示关闭连接,

ACK表示响应,

PSH表示有DATA数据传输,

RST表示连接重置。


 

上一篇:三次握手和四次挥手(个人理解)


下一篇:聊一聊tcp 拥塞控制 三