TCP 通信流程图

embedded/2025/3/19 14:05:36/

下面给出一个详细的 TCP 通信流程图,演示 客户端(Client)服务器(Server) 之间通过 TCP 协议进行通信时的各个步骤。这里假设:

  • 服务器 IP:192.168.1.100,监听 80 端口
  • 客户端 IP:192.168.1.200,使用随机分配的端口(示例中为 50000

下面的流程图按 三次握手数据交互四次挥手 的顺序展示。为便于阅读,采用 ASCII 画出大致示意。


┌─────────────────────┐               ┌─────────────────────┐
│                     │               │                     │
│   Client (C)        │               │   Server (S)        │
│   IP: 192.168.1.200 │               │   IP: 192.168.1.100 │
│   Port: 50000 (随机)│               │   Port: 80 (固定)   │
│                     │               │                     │
└─────────┬───────────┘               └─────────┬───────────┘│                                       ││         1. TCP 三次握手 - 第一次握手  ││         C → S: 发送 SYN (同步序列号)   ││───────────────────────────────────────>││                                       ││        2. TCP 三次握手 - 第二次握手    ││        S → C: 返回 SYN + ACK          ││<───────────────────────────────────────││                                       ││        3. TCP 三次握手 - 第三次握手    ││        C → S: 发送 ACK                ││───────────────────────────────────────>││                                       ││ ┌-----------------------------------┐ ││ │   <--- 连接建立 (握手完成)  --->   │ ││ └-----------------------------------┘ ││                                       ││                                       ││     4. 发送数据 (C → S)               ││     例如: HTTP GET 请求               ││───────────────────────────────────────>││                                       ││     5. 接收数据 (S → C)               ││     例如: HTTP 200 OK + 网页内容       ││<───────────────────────────────────────││                                       ││       (此过程可以多次进行)            ││                                       ││ ┌-----------------------------------┐ ││ │       <--- 数据交互阶段  --->     │ ││ └-----------------------------------┘ ││                                       ││        6. TCP 四次挥手 - 第一次       ││        C → S: 发送 FIN               ││───────────────────────────────────────>││                                       ││       7. TCP 四次挥手 - 第二次        ││       S → C: 返回 ACK                ││<───────────────────────────────────────││                                       ││       8. TCP 四次挥手 - 第三次        ││       S → C: 发送 FIN                ││<───────────────────────────────────────││                                       ││       9. TCP 四次挥手 - 第四次        ││       C → S: 返回 ACK                ││───────────────────────────────────────>││                                       ││ ┌-----------------------------------┐ ││ │     <--- 连接断开 (挥手完成) ---> │ ││ └-----------------------------------┘ ││                                       │
┌─────────▼───────────┐               ┌─────────▼───────────┐
│                     │               │                     │
│  Client 断开完成    │               │  Server 断开完成    │
└─────────────────────┘               └─────────────────────┘

流程说明

  1. 三次握手 (连接建立)

    • 第一次握手:客户端向服务器发送 SYN 包,表示“我要建立连接”。
    • 第二次握手服务器收到后,向客户端返回 SYN + ACK,表示“同意并确认连接”。
    • 第三次握手:客户端再给服务器发送 ACK,确认握手成功。此后,TCP 连接正式建立。
  2. 数据交互 (请求/响应)

    • 连接建立后,客户端可以向服务器发送数据(例如 HTTP GET 请求)。
    • 服务器处理请求后,返回给客户端所需的数据(例如 HTTP 响应)。
    • 数据交互阶段 可以进行多次请求和响应,直到一方决定关闭连接。
  3. 四次挥手 (断开连接)

    • 第一次:客户端发送 FIN,表示“我没有数据要发了,可以关闭了”。
    • 第二次服务器返回 ACK,表示“我知道了,你先别走,我也可能还有数据要发”。
    • 第三次服务器发送 FIN,表示“我也没有数据要发了,可以关闭了”。
    • 第四次:客户端最后一次返回 ACK,表示“确认断开”。至此,连接完全关闭。

其他要点

  1. 端口分配

    • 服务器端口通常固定(如 Web 服务器使用 80443
    • 客户端端口随机分配(如 50000),由操作系统自动决定。
  2. TCP 的特性

    • 有序传输可靠传输:通过序列号确认机制保证数据完整
    • 拥塞控制流量控制:确保在网络高负载时减少丢包、拥塞
  3. UDP 的区别

    • UDP 不需要三次握手,也没有四次挥手
    • 数据发送不可靠,但速度快、延迟低,适合视频直播、在线游戏、语音通话等场景
  4. 网络安全与防火墙

    • 防火墙可根据端口号(如 80443)决定是否允许流量通过
    • 服务器仅开放必要端口,可以减少被攻击风险

以上流程图展示了典型的 TCP 通信过程。如果需要更加具体的代码示例、协议细节或者其他场景(例如 UDP、WebSocket、反向连接等),请告诉我!


http://www.ppmy.cn/embedded/173876.html

相关文章

ora-600 ktugct: corruption detected---惜分飞

接手一个oracle 21c的库恢复请求,通过Oracle数据库异常恢复检查脚本(Oracle Database Recovery Check)脚本检测之后,发现undo文件offline之后,做了resetlogs操作,导致该文件目前处于WRONG RESETLOGS状态 尝试恢复数据库ORA-16433错误 SQL> recover datafile 1; ORA-00283:…

Spring Bean 生命周期深度解析:原理、场景与优化策略

一、生命周期核心阶段与技术原理 1. 实例化阶段&#xff1a;反射与缓存机制 Spring 通过反射创建 Bean 实例&#xff0c;单例 Bean 在容器启动时初始化&#xff0c;原型 Bean 在首次获取时创建。为解决循环依赖问题&#xff0c;Spring 采用三级缓存机制&#xff1a; 一级缓存…

《声音的未来:语音识别文献解读》专栏介绍及其文章解读目录

声音的未来&#xff1a;语音识别文献解读 ——探索语音技术的前沿&#xff0c;解读未来的声音世界—— 专栏介绍 欢迎来到 “声音的未来&#xff1a;语音识别文献解读”&#xff01;这是一个专注于语音识别领域前沿研究与技术突破的深度解读专栏。在这里&#xff0c;我们将带…

OneCyber 平台

OneCyber 平台是一个专注于 网络安全 和 风险管理 的综合性解决方案平台。它旨在帮助企业和组织应对日益复杂的网络威胁&#xff0c;提供从威胁检测、风险评估到响应和恢复的全方位服务。以下是关于 OneCyber 平台的一些关键信息&#xff1a; 核心功能 威胁检测与分析&#xff…

最大公约数

4.最大公约数 - 蓝桥云课 最大公约数 题目描述 给定两个正整数 A,B&#xff0c;求它们的最大公约数。 输入描述 第1行为一个整数 T&#xff0c;表示测试数据数量。 接下来的 T 行每行包含两个正整数 A,B。 1≤T≤105&#xff0c;1≤A,B≤109。 输出描述 输出共 T 行&…

本专栏开栏通知相关申明

申明 买了电吉他还有电钢琴&#xff0c;开这个栏目一来是为了督促自己不要浪费钱&#xff0c;好好学习音乐&#xff0c;二来是发现在相关的乐理书籍存在技术壁垒&#xff0c;尤其是我看了某乐理图书&#xff0c;发现书中介绍过于复杂&#xff0c;学术壁垒过于高了&#xff0c;所…

【css酷炫效果】实现鱼群游动动态效果

【css酷炫效果】实现小鱼游动动态效果 缘创作背景css代码创建div容器引入jquery引入鱼群js完整代码效果图成品资源下载链接:点击下载 缘 在开发系统功能的时候,无意间看到了小鱼游动特效,感觉很有意思,就在网上找了相关教程,分享给大家。 创作背景 刚看到csdn出活动了…

滑动数组-定长滑动数组

题单顺序根据力扣的灵神大佬来的&#xff0c;思路也有借鉴灵神的&#xff0c;是一个自己的做题记录吧。会员题以后会补充更新&#xff0c;先发下不用会员的题。以后有新的相关题&#xff0c;我也会继续更新在这个文章中 目录 基础 1.定长子串中元音的最大数目 2.子数组最大平均…