美文网首页
使用Wireshark分析TCP三次握手

使用Wireshark分析TCP三次握手

作者: Breezes | 来源:发表于2020-11-03 16:21 被阅读0次

    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

    相关文章

      网友评论

          本文标题:使用Wireshark分析TCP三次握手

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