当前位置: 首页 > article >正文

TCP状态转移图详解

状态

描述

LISTEN

represents waiting for a connection request from any remote TCP and port.

SYN-SENT

represents waiting for a matching connection request after having sent a connection request.

SYN-RECEIVED

represents waiting for a confirming connection request acknowledgment after having both received and sent a connection request.

ESTABLISHED

represents an open connection, data received can be delivered to the user. The normal state for the data transfer phase of the connection.

FIN-WAIT-1

represents waiting for a connection termination request from the remote TCP, or an acknowledgment of the connection termination request previously sent.

FIN-WAIT-2

represents waiting for a connection termination request from the remote TCP.

CLOSE-WAIT

represents waiting for a connection termination request from the local user.

CLOSING

represents waiting for a connection termination request acknowledgment from the remote TCP.

LAST-ACK

represents waiting for an acknowledgment of the connection termination request previously sent to the remote TCP (which includes an acknowledgment of its connection termination request).

TIME-WAIT

represents waiting for enough time to pass to be sure the remote TCP received the acknowledgment of its connection termination request.

CLOSED

represents no connection state at all.

重点解读:

1. 数据包类型和作用:

SYN - 同步序列编号,用于发起连接请求

SYN,ACK - 同步序列编号和确认,用于响应连接请求。

ACK - 确认,用于确认接收到的数据或连接请求。

FIN - 终止,用于发起连接关闭请求。

RST - 重置,用于立即终止连接或拒绝连接请求。

FIN,ACK - 终止和确认,用于在关闭连接过程中确认接收到的FIN。

2. 图中实线表示 client端状态转换, 虚线表示server端的状态转换

3.建立连接, TCP三次握手,1、3是client端,2 、4是server端:

3. TCP关闭,4次挥手:

4.  Simultaneous Open(同时打开),这种情况不常见。

  • 定义:这是指两个TCP端点在几乎同一时间尝试发起连接的过程。

  • 过程:

    1. 同时发送SYN段,进入SYN_SENT状态。

    2. 双方接收到对方的SYN段,进入SYN_RCVD状态。

    3. 然后双方都发送SYN-ACK(SYN和ACK的组合),再次进入SYN_SENT状态。

    4. 最后,双方接收到对方的ACK段,进入ESTABLISHED状态,连接建立。

  • 场景:这种情况在实际应用中不常见,但可能出现在对等网络(P2P)中,其中两个节点同时尝试建立连接。

 

5.  理解这张图的难点是:这张图是状态转移图,不是按时间线走的

所以根据不同场景从状态转移图里面标识出时间线,那么就容易理解了。

状态转移举例说明:

比如 SYN_SENT 表示 发送了  SYN 包后的状态,

client端和server端都可以发起连接(tcp Simultaneous ) 。

SYN_SENT 的前一个状态可能是: closed(client)   或者  listen(server),

他的下一个状态:

1正常情况: 接收到自己已发送SYN包的ACK 和对方的SYN请求 ,回复对法SYN(发送ACK), 流转到 established 连接已建立(只是发起方单向连接,接受方还需要收到ACK 后才行)

2只收到了SYN, 自己发送的SYN 对应的 ACK 还没到达,那么状态就转成syn_rcvd ,等待自己SYN 包的ACK

3 超时:自己发送SYN后,达到超时时间后,啥也没收到,超时关闭


http://www.kler.cn/a/511491.html

相关文章:

  • C语言之装甲车库车辆动态监控辅助记录系统
  • 《汽车维护与修理》是什么级别的期刊?是正规期刊吗?能评职称吗?
  • 【Django开发】django美多商城项目完整开发4.0第12篇:商品部分,表结构【附代码文档】
  • 安全测评主要标准
  • 3. 后端验证前端Token
  • 【17】Word:林楚楠-供应链❗
  • 【数据结构-堆】【hard】力扣502. IPO
  • 【opencv】第10章 角点检测
  • Kinova仿生机械臂Gen3搭载BOTA 力矩传感器SeneOne:彰显机器人触觉 AI 与六维力传感的融合力量
  • StarRocks 怎么让特定的SQL路由到FE master节点的
  • 推荐sdkman管理sdk和jdk
  • Java 基于 SpringBoot+Vue 的停车场管理系统(附源码,部署,文档)
  • 神经网络常见面试题
  • MySQL 主从复制原理及其工作过程的配置
  • Flowable 管理各业务流程:流程设计器 (获取流程模型 XML)、流程部署、启动流程、流程审批、流程挂起和激活、任务分配
  • 本地部署 Calcium 网页计算器并实现外部访问
  • MySQL数据库的数据文件保存在哪?MySQL数据存在哪里
  • efficient_pcm 函数
  • vue3+echarts+DataV实现省市县地图
  • 使用插件时的注意事项
  • 【Bluedroid】HFP连接流程源码分析(四)
  • Java中json的一点理解
  • 数据库管理语句分类
  • YOLOv10-1.1部分代码阅读笔记-utils.py
  • 青少年编程与数学 02-007 PostgreSQL数据库应用 06课题、数据库操作
  • GPT Notes 3.2.1.2 | 最强GPT解锁会员版无需登录无限制使用