TCP协议基本工作流程
一、实验介绍
1.1 实验内容
- TCP协议流程介绍
1.2 实验知识点
- 了解TCP协议的特点
- 了解TCP的创建流程
- 了解TCP的拆除流程
- 了解TCP的状态转换
二、TCP协议
2.1 TCP协议的特点
- 面向连接
- 字节流协议
- 全双工
- 可靠的差错控制和流量控制
2.2 TCP协议的创建
- 客户端主动调用 connect 发送 SYN 分节
- 服务器端必须回复一个 ACK 分节来确认客户端 SYN 分节,并发送一个 SYN 分节到客户端
- 客户端对服务器端发送的 SYN 分节进行 ACK 确认
至此,成功建立 TCP 连接,用于接下来的数据传输
2.3 TCP协议的拆除
因为 TCP 为全双工的传输协议,所以拆除连接的时候,需要四次分节的交换
- 首先申请拆除的一端调用 close 发送一个 FIN 分节
- 另一端接收到 FIN 分节时,发送一个 ACK 分节进行确认
- 同理,另一端要申请拆除连接时,也要发送一个 FIN 分节
- 接收端发送 ACK 分节进行确认
至此,成功拆除 TCP 连接
上图展示了客户端主动发送关闭的流程,事实上服务器也是可以执行主动关闭的。
2.4 TCP的状态转换图
- SYN_SENT 主动打开,SYN 分节已发送
- SYN_RCVD 被动打开,SYN 分节已接收
- ESTABLISHED 已经建立连接
- FIN_WAIT_1 发起主动关闭,FIN 分节已发送
- CLOSE_WAIT 被动关闭, FIN 分节已接收,ACK 分节已发送
- FIN_WAIT_2 成功实现半关闭,ACK 分节已接收
- LAST_ACK 最终的 ACK, FIN 分节已发送
- TIME_WAIT FIN 分节已接收, ACK 分节已发送
- CLOSED ACK 分节已接收,成功拆除连接
本章介绍了 TCP 协议的建立、拆除和状态转换,TCP 协议是 SOCKET 编程最常用的传输协议,是 HTTP、FTP 协议的基石,所以理解好 TCP 协议
三、作业
使用netstat
命令观察TCP的状态
*本课程内容,由作者授权实验楼发布,未经允许,禁止转载、下载及非法传播。