网络编程-002-TCP-socket
TCP协议的工作流程
- 建立连接
通过三个报文段完成连接的建立, 该过程又称为三次握手 - 传输数据
- 数据流分割成适当长度的TCP报文段, 传递给IP层进一步处理后发出
- 给每个字节编一个序号, 确保不丢包, 接收端按顺序接收包
- 接收端对已成功收到的字节发回一个确认 (ACK), 如果发送端在往返时延 (RTT) 内未收到确认, 重传数据
- 关闭连接
当需要终止一个连接时, 要经过四次挥手
TCP协议的特点
- 面向连接的传输
- 端到端的通信
- 确保传输数据的可靠性, 不出现丢失或乱序
- 全双工方式传输
- 采用字节流方式, 即以字节为单位传输序列
- 紧急数据传送功能
TCP状态表
状态 | 描述 |
---|---|
CLOSED | 关闭状态, 没有连接或活动正在进行 |
LISTEN | 监听状态, 服务器正在等待连接进入 |
SYS RCVD | 收到一个连接请求, 尚未确认 |
SYS SENT | 已经发出连接请求, 等待确认 |
ESTABLISHED | 连接建立, 正常数据传输状态 |
FIN WAIT 1 | (主动关闭) 已经发送关闭请求, 等待确认 |
FIN WAIT 2 | (主动关闭) 收到对方关闭确认, 等待对方关闭 |
TIMED WAIT | 完成双向关闭, 等待所有分组死掉 |
CLOSING | 双方同时尝试关闭, 等待对方确认 |
CLOSE WAIT | (被动关闭) 收到对方关闭请求, 已经确认 |
LAST ACK | (被动关闭) 等待最后一个关闭确认, 并等待所有分组死掉 |