TCP三次握手和四次挥手
TCP三次握手
代码实现
服务端
1 |
|
客户端
1 |
|
步骤一:服务端listen
listen过程包含初始化半连接队列和全连接队列
半连接队列采用hash结构
全连接队列采用链表结构
步骤二:客户端send SYNC
- 客户端封装SYNC包发送到服务端
- 设置状态为SYNC_SENT
- 创建超时重传定时器
步骤三:服务端resp ACK
- 收到SYNC包
- 判断半连接队列和全连接队列中是否已满,满了则放弃连接
- 建立SOCK并放到半连接队列中
- 封装ACK包发送到客户端
- 创建超时重传定时器
步骤四:客户端send ACK
- 客户端发送ACK包
- 删除超时重传定时器
- 开启保活定时器
步骤五:服务端accept
- 将SOCK从半连接队列中取出放到全连接队列中的列尾
- 修改SOCK状态为ESTABLISHD
- 从全连接队列中获取一个socket返回给用户进程
TCP三次握手和四次挥手
http://example.com/2025/01/22/2025-01-22-TCP三次握手和四次挥手/