💡
原文中文,约600字,阅读约需2分钟。
📝
内容提要
TCP 连接建立过程包括两个等待:等待 ACK 和等待应用 accept()。Linux 通过未完成队列和完成队列管理这两个等待。收到 SYN 后,连接进入未完成队列,等待 ACK;收到 ACK 后,连接移至完成队列,状态变为 ESTABLISHED。
🎯
关键要点
- TCP 连接建立过程包括两个等待:等待 ACK 和等待应用 accept()。
- Linux 通过未完成队列和完成队列管理这两个等待。
- 收到 SYN 后,连接进入未完成队列,等待 ACK。
- 收到 ACK 后,连接移至完成队列,状态变为 ESTABLISHED。
- 未完成队列(SYN queue)保存 struct inet_request_sock 结构,等待 ACK。
- 等待 ACK 超时会重传 net.ipv4.tcp_synack_retries 次。
- 完成队列(Accept queue)在收到 ACK 后保存连接,等待应用调用 accept()。
- 如果完成队列满了,会发送 RST。
🏷️
标签
➡️