使用Wireshark分析TCP三次握手

2020-11-03  本文已影响0人  Breezes

TCP握手

  1. 建立连接时,客户端发送 SYN 到服务器,并进入 SYN_SENT 状态。
  2. 服务器收到请求后,回送 SYN + ACK 到客户端,并进入 SYN_RECV 状态。
  3. 客户端收到 SYN + ACK 后,向服务器发送确认 ACK 包,进入ESTABLISHED 状态,服务器接收到确认 ACK 包后,也进入 ESTABLISHED 状态,此时三次握手完成,TCP连接建立,开始传送数据。
    image.png

seq(Sequence):序列号,占4个字节,用来标记数据段的顺序,TCP 把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。
ack(Acknowledge):确认号,占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个字节的编号;因此当前报文段最后一个字节的编号+1即为确认号
ACK(Acknowledge character):确认标志位,占1位,仅当 ACK=1时,确认号字段才有效。ACK=0时,确认号无效
SYN(Synchronize Sequence Numbers):连接建立时用于同步序号的标志位,当 SYN = 1,ACK = 0时表示这是一个连接请求报文段,若同意连接,则在响应报文中发送SYN = 1, ACK = 1,因此SYN = 1表示这是一个连接请求或者连接接受报文,SYN标志位只有在 TCP 建立连接时候才会置 1,握手完成后SYN会被置为0
FIN(Finish):连接终止标志位,用来释放一个连接,FIN = 1表示此报文段的发送方发送结束,并要求释放连接
SYN_SENT:syn package has been sent,序号数据包已经发送
SYN_RECV:syn package has been received,序号数据包已经接受
ESTABLISHED:连接已建立

使用 Wireshare 分析三次握手

随便找个网站测试一下
过滤条件:ip.src==47.95.165.112 or ip.dst==47.95.165.112
先看一下对应的 OSI 模型

image.png

第一次握手

ip 为 30.203.52.26 的客户端发送 SYN 到 ip 为 47.95.165.112 的服务器。
此时,客户端进入了SYN_SENT状态

第一次握手.png

标志位为SYN
Seq = 0

第二次握手

ip 为 47.95.165.1121 的服务器回送 SYN + ACK 到 ip 为 30.203.53.26 的客户端,此时服务器进入 SYN_RECV 的状态

第二次握手.png

标志位为 SYN + ACK
Seq = 0
Ack = 客户端的Seq + 1 也就是 0 + 1 = 1

第三次握手

ip 为 30.203.52.26 的客户端发送 ACK 到 ip 为 47.95.165.112 的服务器,客户端进入ESTABLISHED状态,服务器接受到客户端的发送的ACK后,也进入ESTABLISHED状态

第三次握手.png

标志为 ACK
Ack = 服务器Seq + 1 也就是 0 + 1 = 1

好文推荐:
https://bbs.51cto.com/thread-1558979-1-1.html
https://www.cnblogs.com/moonbaby/p/10528401.html
https://blog.csdn.net/qq_38950316/article/details/81087809

上一篇下一篇

猜你喜欢

热点阅读