08-传输层(7)
TCP 的传输连接管理
1. 概述#
- TCP 是面向连接的协议,运输连接有 3 个阶段:
- 连接建立
- 数据传送
- 连接释放
- 运输连接的管理就是使运输连接的建立和释放都能正常地进行
- TCP 连接建立过程中要解决的 3 个问题
- 要使每一方能够确知对方的存在
- 要允许双方协商一些参数(如最大窗口值、是否使用窗口扩大选项和时间戳选项以及服务质量等)
- 能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配
- 客户-服务器方式
- TCP连接的建立采用 [客户-服务器方式]
- 主动发起连接建立的应用进程叫做客户(client)
- 被动等待连接建立的应用进程叫做服务器(server)
2. TCP 连接建立#
TCP 建立连接的过程叫做"握手",握手需要在客户和服务器之间交换 3 个 TCP 报文段,故称之为"三报文握手"。
2.1 流程#
2.2 为什么要有第 3 次?#
2.3 举例#
3. TCP 连接释放#
数据传输结束后,通信的双方都可释放连接。TCP 连接释放过程是四报文握手。
3.1 流程#
3.2 关闭为什么是 4 次?#
为什么建立连接是三次握手,而关闭连接却是四次挥手呢?
关闭连接时,当收到对方的 FIN 报文时,仅仅表示对方不再发送数据了但是还能接收数据,我们也未必全部数据都发送给对方了,所以我们不可以立即 close,也可以发送一些数据给对方后,再发送 FIN 报文给对方来表示同意现在关闭连接,因此,我们的 ACK 和 FIN 一般都会分开发送。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~