如何处理 SYN

如何处理 SYN

💡 原文中文,约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。
🏷️

标签

➡️

继续阅读