• Wireshark图解三次握手


    什么是三次握手

    客户端和服务器在发送数据之前会进行三次交互建立连接,然后再发送数据。

    三次交互过程

    • 1.客户端发送SYN=1(表示建立连接),同时发送一个随机数Seq=x

    • 2.服务器收到请求后回复Ack=x+1,同时发送一个随机数Seq=y

    • 3.客户端收到响应后回复Ack=y+1,同时发送Seq=x+1

    为什么是三次握手

    TCP是一种可靠的全双工传输方式,三次握手保证了客户端和服务端的序列号都能保证确认。

    Wireshark抓包分析三次握手

    1.打开Wireshark

    选择你的上网网卡,我选的是WI-FI: en0

    2.过滤请求

    ip.addr == 106.15.55.64 && tcp表示根据源ip目标ip和tcp协议进行过滤。106.15.55.64就是服务器的地址。

    4.浏览器访问http://tshici.com

    红框就是三次握手的过程

    本来想用https://rumenz.com做演示,但是因为使用了https协议,抓包就比较复杂。为了说明问题就使用了http://tshici.com进行了演示。

    红框No 212

    蓝色框的序号是服务器给的序列号(相对序列号Seq=0,实际序列号Seq=502372503),目的是让客户端进行确认。

    红框是服务器确认前面客户端的请求序列。

    相对回复值Ack=1

    实际回复值Ack=348969745

    就是上一步的实际Seq+1

    红框No 220

    客户端回复服务器的响应,并确认了上一步的序列号

    相对回复值Ack=1

    实际回复值Ack=502372504

    就是上一步的实际Seq+1(上一步的实际序列号是Seq=502372503)

    到此客户端已经和服务器建立的链接,下面就可以传输网页数据了。

    补充

    上面我提到了SYN,ACK。在TCP协议里面有控制位结构,一共有 6 个标志位如下:

    • URG (Urgent Bit):值为 1 时,紧急指针生效

    • ACK (Acknowledgment Bit):值为 1 时,确认序号生效

    • PSH (Push Bit):接收方应尽快将这个报文段交给应用层

    • RST (Reset Bit):发送端遇到问题,想要重建连接

    • SYN (Synchronize Bit):同步序号,用于发起一个连接

    • FIN (Finish Bit):发送端要求关闭连接

  • 相关阅读:
    opencv中的仿射变换
    从数学0到指针NULL,到std vector右边界,到空操作
    k8s搭建 rabbitmq集群
    10分钟教你写一个数据库
    Transformer13~目标检测算法汇总
    医学影像坐标系问题(世界坐标系、解剖坐标系和图像坐标系)
    学习笔记-Flutter Plugin开发流程
    关于FPGA对 DDR4 (MT40A256M16)的读写控制 3
    图的数据结构
    CTFhub-RCE-综合过滤练习
  • 原文地址:https://blog.csdn.net/zfw_666666/article/details/126227107