tcp 的四次挥手

TCP 通过四次挥手优雅的关闭连接

四次挥手也很好记,4/2 = 2 一遍两个,客户端发送2个请求,服务端发送2个请求。

在这个步骤我们也只需要记住两个单词,一个是 FIN 代表finish 标注的数据包,一个是ACK应答数据包

  1. 第一次挥手(FIN):

    • 客户端或应用发起关闭连接的请求,向服务器发送一个带有 FIN(Finish)标志的数据包。
    • 状态变化:发起关闭的一方进入 FIN-WAIT-1 状态,表示已经完成数据的发送。
    • 【简洁说法:客户端请求关闭连接,发送第一个带有结束标志的数据包】
  2. 第二次挥手(ACK):

    • 服务器接收到带有 FIN 标志的数据包后,向客户端发送一个确认(ACK)数据包,表示已经收到了关闭请求。
    • 服务器也可以在这个阶段继续发送数据。
    • 状态变化:服务器进入 CLOSE-WAIT 状态。
    • 【简洁说法:服务端收到客户端关闭连接的请求,回复一个确认数据包】
  3. 第三次挥手(FIN):

    • 服务器准备好关闭连接时,向客户端发送一个带有 FIN 标志的数据包,表示服务器已经完成数据的发送。
    • 状态变化:服务器进入 LAST-ACK 状态,等待客户端的最后一个 ACK。
    • 【简洁说法:服务端请求关闭连接,发送第一个带有结束标志的数据包】
  4. 第四次挥手(ACK):

    • 客户端接收到服务器的关闭请求后,向服务器发送一个确认(ACK)数据包,表示已经收到了关闭请求。
    • 状态变化:客户端进入 TIME-WAIT 状态,等待可能出现的延迟的数据包。在这个状态等待一段时间后,客户端关闭连接。
    • 【简洁说法:客户端收到服务端关闭连接的请求,回复一个确认数据包】

在这个过程中,TIME-WAIT 状态的目的是确保已发送的 ACK 能够被对方接收。TIME-WAIT 状态的时间等于两个最大报文段生存时间(2MSL,Maximum Segment Lifetime),通常是 2 分钟,以确保所有可能的延迟数据包都已经消失。这样可以防止连接中的旧数据包对新连接造成干扰。

相关推荐

  1. tcp 挥手

    2024-01-12 23:46:05       61 阅读
  2. TCP挥手

    2024-01-12 23:46:05       34 阅读
  3. TCP 传输握手、挥手策略

    2024-01-12 23:46:05       57 阅读
  4. TCP握手和挥手

    2024-01-12 23:46:05       59 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-12 23:46:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-12 23:46:05       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-12 23:46:05       82 阅读
  4. Python语言-面向对象

    2024-01-12 23:46:05       91 阅读

热门阅读

  1. tcp的三次握手

    2024-01-12 23:46:05       55 阅读
  2. 1.5如何用命令得到自己的ip<本地>

    2024-01-12 23:46:05       59 阅读
  3. 1、HarmonyOS简介

    2024-01-12 23:46:05       52 阅读
  4. 6.停车场管理系统

    2024-01-12 23:46:05       51 阅读
  5. DEJA_VU3D - Cesium功能集 之 113-获取圆节点(2)

    2024-01-12 23:46:05       58 阅读
  6. 70、C++ - 仓库目录结构介绍

    2024-01-12 23:46:05       56 阅读
  7. MyBatis动态SQL语句

    2024-01-12 23:46:05       67 阅读
  8. macos m1如何安装指定版本的redis

    2024-01-12 23:46:05       59 阅读
  9. 【Golang】补码二进制字符串转整型

    2024-01-12 23:46:05       58 阅读