tcp 随手记1
来源:互联网 发布:java在cmd中运行 编辑:程序博客网 时间:2024/06/05 09:46
sys flood 原理:
服务器 收到 客户端发送的 syn 请求,会分配 tcb (Transmission Control Block)块,通常至少280 字节,响应 syn+ ack ,如果客户端不响应 ack ,也就是tcp 半连接挂起状态,
最终导致 服务器资源耗尽,无法服务正常请求。
常用攻击手段 ,固定ip 形式,直接拉黑名单,变化ip 形式,可考虑 syn cache ,或者sys cookie 阻挡。
软件层面如何优化:
/proc/sys/net/ipv4/tcp_max_syn_backlog 修改最大syn 队列长度
/proc/sys/net/ipv4/tcp_synack_retries 修改未收到客户端ack 回应 重试次数
顺带讲一下 tcp 保活 keepalive, 也即是心跳,可以应用层去做,也可以使用tcp 自带心跳机制
/proc/sys/net/ipv4/tcp_keepalive_time 默认7200 代表tcp 链路2小时 无数据,开启保活检测
/proc/sys/net/ipv4/tcp_keepalive_intvl 重试间隔 ,默认75 s
/proc/sys/net/ipv4/tcp_keepalive_probes 重试次数 , 默认 9
即默认情况下 7200 + 75 *9 之后 tcp 才会断掉
针对单个socket 如何设置保活参数:
int keepAlive = 1; // 开启keepalive属性. 缺省值: 0(关闭)
int keepIdle = 60; // 如果在60秒内没有任何数据交互,则进行探测. 缺省值:7200(s)
int keepInterval = 5; // 探测时发探测包的时间间隔为5秒. 缺省值:75(s)
int keepCount = 2; // 探测重试的次数. 全部超时则认定连接失效..缺省值:9(次)
setsockopt(s, SOL_SOCKET, SO_KEEPALIVE, (void*)&keepAlive, sizeof(keepAlive));
setsockopt(s, SOL_TCP, TCP_KEEPIDLE, (void*)&keepIdle, sizeof(keepIdle));
setsockopt(s, SOL_TCP, TCP_KEEPINTVL, (void*)&keepInterval, sizeof(keepInterval));
setsockopt(s, SOL_TCP, TCP_KEEPCNT, (void*)&keepCount, sizeof(keepCount));
阅读全文
0 0
- tcp 随手记1
- TCP/IP 随手记
- Linux 随手记1
- 随手记1
- unity3d随手记1
- 随手记1
- java随手记(1)
- HTML5 随手记 (1)
- MySQL随手记(1)
- Android开发随手记1
- java基础随手记(1)
- 随手记
- 随手记
- 随手记
- 随手记
- 随手记
- 随手记
- 随手记
- 1171-C语言实验-保留整数
- 292. Nim Game/504. Base 7
- Android无线连接设备进行调试
- centos7 加载opencv2.4.13静态库
- 《道德经》第四十八章
- tcp 随手记1
- jvm内存泄漏
- 题目1006:ZOJ问题
- Android Studio使用真机调试
- 运算符的重载+、-、*、/、[]、自加++的重载
- Java 字符串比大小
- sln、db、opendb、vcxproj、filters、user文件跟踪说明
- Thinkphp学习笔记(一)————初始的目录结构和命名规范
- c++强制类型转换