TCP 协议四次挥手&状态变迁

简介: TCP 协议四次挥手&状态变迁

之前介绍了 TCP 三次握手建立连接流程,而 TCP 协议是一个面向 字节流 的协议,它不限制应用层传输消息的长度,但是 网络层、数据链路层 在发送报文时使用的内存是有限的,所有就需要限制报文的长度,TCP 协议就需要把从 应用层 接收到的任意长度的 字节流 切分成许多个报文段,这里边涉及到很多底层复杂的网络编程的知识,如 TCP 是如何切分应用层的消息、慢启动、避免拥塞、超时重试等等,最后会经历一个关闭连接的过程,这篇简单介绍一下TCP 四次挥手 以及 状态变迁

1.TCP 关闭连接目的

       TCP 是一个全双工协议,必须单独拆除每一条信道,而四次挥手的目的则是终止数据传输,且回收资源,此时两个端点两个方向的序列号已经没有了任何关系,必须等待两方向都没有数据传输时才能拆除虚链路,因此必须单独分别在一个方向上终止该方向的数据传输。如果也像三次握手那样只有三次挥手的话,在被动关闭端在收到 FIN 消息之后,需要同时回复 ACK 和服务端的 FIN 消息,如果服务端还需要等待一段时间才可以关闭另外一个方向的连接,那么这样的三次挥手就会出问题,而 TCP 关闭连接主要有以下两个目的:

  • 防止数据丢失
  • 与应用层交互

2.三次握手和关闭连接    

2.1 三次握手流程

2.2 四次挥手流程

Tips:如果被动关闭端调用 close/shutdown 函数非常及时,内核在很大概率上也会将 ACKFIN 放在一个报文中发送,这就变成三次挥手了。

3.wireshark 抓包分析

       在虚拟机 CentOs8 中使用 curl singwa666.com 命令请求网站时发起了 HTTP/1.1 请求,过程中需要建立 TCP 连接握手,获取数据,最后还会有 四次挥手,抓取到的 TCP报文如下:

  • 第一次:FIN

  • 第二次:ACK

  • 第三次:FIN

  • 第四次:ACK

4.四次挥手中的状态变迁示意图

TIME_WAIT 状态存在的两个理由:

  • 可靠地实现 TCP 全双工连接的终止:
  • 允许老的重复分节在网路中消逝
相关文章
|
8月前
|
机器学习/深度学习 存储 缓存
大模型推理加速技术:PagedAttention原理与实现
本文深入解析大语言模型推理中的革命性技术——PagedAttention,该技术是vLLM推理引擎的核心创新。通过将操作系统中的虚拟内存分页概念引入注意力机制,PagedAttention有效解决了KV缓存的内存碎片问题,实现了近乎零浪费的KV缓存管理。文章详细阐述其原理、内存管理机制、实现细节,并提供完整的代码示例和性能分析。
1038 1
|
7月前
|
Web App开发 网络协议 Java
Windows 终端命令详解:PowerShell 初学者指南
Windows 终端是一个命令行工具,允许用户通过文本命令与系统交互,执行文件管理、系统配置和网络诊断等操作。PowerShell 是 Windows 终端的现代版本,相比传统的命令提示符(CMD),它功能更强大,支持脚本编写和复杂任务处理。本文将以 PowerShell 为主,带你从零开始学习。
1037 6
|
8月前
|
并行计算 PyTorch 算法框架/工具
vLLM 架构学习指南
本指南深入解析vLLM高性能推理引擎架构,涵盖核心创新PagedAttention与连续批处理技术,结合代码结构、学习路径与实践建议,系统指导用户从入门到贡献源码的全过程。
4784 5
vLLM 架构学习指南
|
存储 人工智能 数据库
面向医疗场景的大模型 RAG 检索增强解决方案
本方案为您介绍,如何使用人工智能平台 PAI 构建面向医疗场景的大模型 RAG 检索增强解决方案。
|
存储 网络协议 算法
TCP协议的三次握手与四次挥手
TCP协议的三次握手与四次挥手
864 2
Commons StringSubstitutor对模板占位符进行赋值
Commons StringSubstitutor对模板占位符进行赋值
568 0
|
关系型数据库 MySQL 数据库
mysql下的max_allowed_packet参数设置
mysql下的max_allowed_packet参数设置
1782 0
|
缓存 网络协议 安全
【图解】三次握手,四次挥手 —— 用心看这一篇就够了
【图解】三次握手,四次挥手 —— 用心看这一篇就够了
3184 0
【图解】三次握手,四次挥手 —— 用心看这一篇就够了
|
编解码 开发工具 Android开发
Android平台GB28181设备接入侧如何实现GB28181-2022实时快照
GB/T28181-2022标准中明确了快照的具体要求,包括图像抓拍配置命令的发送与接收流程。源设备需向目标设备发送包含传输路径和会话ID等信息的命令,目标设备完成图像传输后,通过IETF RFC 3428中的MESSAGE方法发送图像抓拍传输完成的通知。图像格式推荐使用JPEG,且分辨率应与主码流相同。技术实现上,如使用大牛直播SDK在Android平台上,可通过创建`SnapShotImpl`类并调用`capture()`方法实现快照功能,之后将JPEG格式的快照文件上传至国标平台。
473 2