• 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):发送端要求关闭连接

  • 相关阅读:
    【洛谷】P3835 【模板】可持久化平衡树
    Caddy(球童-代理) 服务器
    idea插件自动填充setter
    radis相关面试题
    CY7C68013A之keil编译代码
    maven的生命周期
    微前端实际应用
    HT for Web 风格属性手册教程 | 图扑软件
    C++异常处理
    老卫带你学---深入理解Golang之context
  • 原文地址:https://blog.csdn.net/zfw_666666/article/details/126227107