TCP 的传输连接管理
概述
- TCP 是面向连接的协议,运输连接有 3 个阶段:
- 连接建立
- 数据传送
- 连接释放
- 运输连接的管理就是使运输连接的建立和释放都能正常地进行
- TCP 连接建立过程中要解决的 3 个问题
- 要使每一方能够确知对方的存在
- 要允许双方协商一些参数(如最大窗口值、是否使用窗口扩大选项和时间戳选项以及服务质量等)
- 能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配
- 客户-服务器方式
- TCP连接的建立采用 [客户-服务器方式]
- 主动发起连接建立的应用进程叫做客户(client)
- 被动等待连接建立的应用进程叫做服务器(server)
TCP 连接建立
TCP 建立连接的过程叫做"握手",握手需要在客户和服务器之间交换 3 个 TCP 报文段,故称之为"三报文握手"。
流程
为什么要有第 3 次?
举例
TCP 连接释放
数据传输结束后,通信的双方都可释放连接。TCP 连接释放过程是四报文握手。
流程
关闭为什么是 4 次?
为什么建立连接是三次握手,而关闭连接却是四次挥手呢?
关闭连接时,当收到对方的 FIN 报文时,仅仅表示对方不再发送数据了但是还能接收数据,我们也未必全部数据都发送给对方了,所以我们不可以立即 close,也可以发送一些数据给对方后,再发送 FIN 报文给对方来表示同意现在关闭连接,因此,我们的 ACK 和 FIN 一般都会分开发送。