未整理的笔记

上面的三种方法  只是用了  调节队列的大小解决 和回复RST方式解决  但是未完全的解决大量sys报文的攻击    

1 正常流程  不解释  自己理解

2 应用程序过慢  当accept过慢时候  ACCEPT队列 容易满    那么recv ACK就会不成功 (所以将socket 在accept时候设置为  noblocking的原因也是有的吧在这里 )

3 当SYN队列满了之后  新的syn不再进入队列  启用cookie    在发送SYN+ACK时候加上cookie的方法      解决ACCEPT队列爆掉  (理解为 新来的syn不处理了  只处理服务器第二次握手 回复的syn+ack包中带有cookie这样的  ACK报文了 )  这样性能会下降

 

Fast_open功能开启和未开启过程对比的图片  自己看图不解释了

 

 

 

 

 

1吞吐量优先  那么就要开启Nagle算法减少小包 小包合并一起发送  tcp_nodelay  off

2低时延续优先  即发一个很小的包立刻需要回复例如Xshell终点类型的小包交互型应用就需要客户端快速响应提高用户体验     tcp_nodelay  on即不准时延

 

 

 

 

Tcp keeplive  区别于http中的keeplive   (注意两者是完全不同的意义)

 

Tcp keeplive在tcp中的作用是检测连接是否有效的一种机制  这样可以剔除无效的连接

 

 

 

 

 

 

 

 

上面的话需要理解整理下  从新叙述一遍     延迟关闭就是 Nginx实现优雅的关闭

 

 

 

 

 

 

 

为什么需要RST代替正常的四次握手来关闭呢

因为当 读或者写 超时时  通过发送RST立刻释放端口和内存资源

猜你喜欢

转载自www.cnblogs.com/zhangkele/p/10328617.html