TCP面试:SYN报文在什么情况下会被丢弃

概括来说有两个方面的原因

1.TCP两个队列满了(半链接和全链接队列),造成SYN报文被丢弃

2.开启了tcp_tw_recylce调优参数,并且在NAT环境下,造成了SYN报文丢弃

原因一分析

回忆一下三次握手:

1.服务端收到客户端发起的SYN请求后,内核会把该链接存储到半链接队列,并向客户端响应SYN+ACK。

2.接着客户端返回ACK, 服务端收到第三次握手的ACK后,内核会把链接从半链接队列移除

3.然后创建新的完全的链接,并将其添加到aceept队列(全链接队列),等待进程调用accept 函数时把链接取出来。

如果大量的syn数据包同时到达服务端,导致半连接队列瞬间被打满,多余的SYN就丢弃了(DDOS攻击),怎么解决?

(1)增大半链接队列

         tcp_max_syn_backlog和backlog somaxconn,同时增大全链接队列

(2)开启tcp_syncookies

         服务器更具当前状态计算出一个值,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值