前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一图理解TCP三次握手原理及半连接、全连接队列对网络的影响

一图理解TCP三次握手原理及半连接、全连接队列对网络的影响

作者头像
崔认知
发布2023-09-05 18:01:03
3950
发布2023-09-05 18:01:03
举报
文章被收录于专栏:nobodynobody

在 TCP 三次握手的过程中,Linux 内核会维护两个队列,分别是:

  • 半连接队列 (SYN Queue)(内核代码体现的是逻辑上的队列)
  • 全连接队列 (Accept Queue)

正常的 TCP 三次握手过程:

1、客户端向服务端发送 SYN 发起握手,客户端进入 SYN_SENT 状态

2、服务端收到客户端的SYN请求后,服务端进入 SYN_RECV 状态,此时内核会将连接存储到半连接队列(SYN Queue),并向 客户端回复 SYN+ACK

3、客户端收到 服务端的 SYN+ACK 后,客户端回复 ACK 并进入 ESTABLISHED 状态

4、服务端收到 客户端的 ACK 后,内核将连接从半连接队列(SYN Queue)中取出,添加到全连接队列(Accept Queue),服务端进入 ESTABLISHED 状态

5、服务端应用进程调用 accept 函数时,将连接从全连接队列(Accept Queue)中取出

半连接队列和全连接队列都有长度大小限制,超过限制时内核会将连接 Drop 丢弃或者返回 RST 包

全连接队列溢出处理:

内核参数:/proc/sys/net/ipv4/tcp_abort_on_overflow设值

0 :如果全连接队列满了,那么 server 扔掉 client 发过来的 ack ,默认值;

1 :如果全连接队列满了,server 发送一个 reset 包给 client,表示废弃这个握手过程和这个连接;

防御 SYN 攻击的方法:

  • 增大半连接队列;
  • 开启 tcp_syncookies 功能
  • 减少 SYN+ACK 重传次数
  1. https://webhostinggeeks.com/howto/tcp-keepalive-recommended-settings-and-best-practices/
  2. https://tldp.org/HOWTO/TCP-Keepalive-HOWTO/overview.html
  3. https://www.ibm.com/docs/en/db2/9.7?topic=ctkp-configuring-operating-system-tcpip-keepalive-parameters-high-availability-clients
  4. https://veithen.io/2014/01/01/how-tcp-backlog-works-in-linux.html
  5. https://www.man7.org/linux/man-pages/man2/listen.2.html
  6. https://blog.cloudflare.com/syn-packet-handling-in-the-wild/
  7. http://arthurchiao.art/blog/tcp-listen-a-tale-of-two-queues/
  8. https://unix.stackexchange.com/questions/729323/what-type-of-queue-is-tcp-accept-queue-in-linux-fifo-lifo-other
  9. https://developer.aliyun.com/article/804896
  10. https://www.cnblogs.com/xiaolincoding/p/12995358.html?spm=a2c6h.12873639.article-detail.9.2358564bQEWG6Q
  11. https://man7.org/linux/man-pages/man7/tcp.7.html
  12. https://www.cnblogs.com/alchemystar/p/13175276.html
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-08-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 认知科技技术团队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档