前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[TCP/IP] TCP在listen时的参数backlog的意义

[TCP/IP] TCP在listen时的参数backlog的意义

作者头像
唯一Chat
发布2019-09-10 10:46:15
1.1K0
发布2019-09-10 10:46:15
举报

linux内核中会维护两个队列:   1)未完成队列:接收到一个SYN建立连接请求,处于SYN_RCVD状态   2)已完成队列:已完成TCP三次握手过程,处于ESTABLISHED状态   3)当有一个SYN到来请求建立连接时,就在未完成队列中新建一项。当三次握手过程完成后,就将套接口从未完成队列移动到已完成队列。   4)backlog曾被定义为两个队列的总和的最大值,Berkely实现中的backlog值为上面两队列之和再乘以1.5。   5)如果当客户端SYN到达的时候队列已满,TCP将会忽略后续到达的SYN,但是不会给客户端发送RST信息,因为此时允许客户端重传SYN分节。如果启用syncookies (net.ipv4.tcp_syncookies = 1),新的连接不进入未完成队列,不受影响 6)backlog 即上述已完成队列的大小, 这个设置是个参考值,不是精确值. 内核会做些调整

SYN 洪水攻击(syn flood attack)

通过伪造IP向服务器发送SYN包,塞满服务器的未完成队列,服务器发送SYN+ACK包 没回复,反复SYN+ACK包,使服务器不可用. 启用syncookies 是简单有效的抵御措施. 启用syncookies,仅未完成队列满后才生效.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-07-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

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