众所周知,tcp通信是一个面向连接的过程,客户端要和服务端连接,必须进行连接才能进行通信。在tcp连接中,有两种连接攻击方式,是半连接攻击机和全连接攻击,对此搜积相关资料做了一个总结。

<1>半连接攻击?

半连接攻击是一种攻击协议栈的攻击方式,坦白说就是攻击主机的一种攻击方式。通过将主机的资源消耗殆尽,从而导致应用层的程序无资源可用,导致无法运行。在正常情况下,客户端连接服务端需要通过三次握手,首先客户端构造一个SYN连接数据包发送至服务端,自身进入SYN_SEND状态,当服务端收到客户端的SYN包之后,为其分配内存核心内存,并将其放置在半连接队列中,服务端接收客户SYN包并会向客户端发送一个SYN包和ACK包,此刻服务端进入SYN_RECV态。客户端收到包之后,再次向服务端发送ACK确认包。至此连接建立完成,双方都进入ESTABLSHEDZ状态。半连接就是通过不断地构造客户端的SYN连接数据包发向服务端,等到服务端的半连接队列满的时候,后续的正常用户的连接请求将会被丢弃,从而无法连接到服务端。此为半连接攻击方式。根据服务端的半连接队列的大小,不同主机的抵抗这种SYN攻击的能力也是不一样。

如何来解决半连接攻击?

可以通过拓展半连接队列的大小,来进行补救,但缺点是,不能无限制的增加,这样会耗费过多的服务端资源,导致服务端性能地下。这种方式几乎不可取。现主要通syn cookie或者syn中继机制来防范半连接攻,部位半连接分配核心内存的方式来防范。

<2>全连接攻击?

全连接攻击是通过消费服务端进程数和连接数,只连接而不进行发送数据的一种攻击方式。当客户端连接到服务端,仅仅只是连接,此时服务端会为每一个连接创建一个进程来处理客户端发送的数据。但是客户端只是连接而不发送数据,此时服务端会一直阻塞在recv或者read的状态,如此一来,多个连接,服务端的每个连接都是出于阻塞状态从而导致服务端的崩溃。

如何来解决全连接攻击?

可以通过不为全连接分配进程处理的方式来防范全连接攻击,具体的情况是当收到数据之后,在为其分配一个处理线程。具体的处理方式在accept返回之前是不分配处理线程的。直到接收相关的数据之后才为之提供一个处理过程。例如在apache服务中,是通过预创建一定量的子进程作为处理连接继承。所有的自己进程都继承父进程的sockfd,每当有一个连接过来时,只有当accept返回是,才会为该链接分配一个进程来处理连接请求。负责,子进程一直处于等待状态。如果出现值是连接存在,而始终不放数据,该链接的状态是SYN_RECV,在协议栈中,提供一个保活期给该链接,如果超过保活期还没有数据到来,服务端协议栈将会断开该链接。如果没有该保活期,虽然避免了ESTABLESHED状态的数量,但是SYN_RECV的数据量的增长仍旧是不可估算的,所以需要利用保活期来监控该链接是需要清除断开。

tcp连接之半连接攻击和全连接攻击总结相关推荐

  1. 浅谈TCP半连接攻击与全连接攻击

    全连接攻击: 所谓的全连接攻击说的就是客户端仅仅"连接"到服务器,然后再也不发送任何数据,直到服务器超时后处理或者耗尽服务器的处理进程. 为何不发送任何数据呢?因为一旦发送了数据, ...

  2. [计算机网络] - TCP半连接队列和全连接队列

    转载自:https://blog.csdn.net/qq_34827674/article/details/106448326 1. 概念 在 TCP 三次握手的时候,Linux 内核会维护两个队列, ...

  3. TCP 半连接队列和全连接队列满了,怎么破?

    作者 | 小林coding 来源 | 小林coding 责编 | 王晓曼 前言 网上许多博客针对增大 TCP 半连接队列和全连接队列的方式如下: 增大 TCP 半连接队列方式是增大 tcp_max_s ...

  4. linux 全连接队列,TCP半连接队列和全连接队列的可能和出现问题和解决方案

    问题描述 监控系统发现电商网站主页及其它页面间歇性的无法访问: 查看安全防护和网络流量.应用系统负载均正常: 系统重启后,能够暂时解决,但持续一段时间后间歇性问题再次出现. 此时问题已影响到整个网站的 ...

  5. TCP半连接队列和全连接队列(史上最全)

    TCP半连接队列和全连接队列 文章很长,建议收藏起来慢慢读! 总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :<尼恩Java面试宝典>持续更新+ 史上最全 + 面试必备 2000 ...

  6. 【tcp】TCP 半连接队列、全连接队列基本概念

    TCP  三次握手状态变化 对于客户端: 初始的状态是处于 CLOSED 状态.CLOSED 并不是一个真实的状态,而是一个假想的起点和终点. 客户端调用 connect 以后会发送 SYN 同步报文 ...

  7. 重学TCP协议(9) 半连接队列、全连接队列

    1. 半连接队列.全连接队列基本概念 三次握手中,在第一步server收到client的syn后,把相关信息放到半连接队列中,同时回复syn+ack给client(第二步),同时开启一个定时器,如果超 ...

  8. socketmq 设置队列大小_TCP 半连接队列和全连接队列满了会发生什么?又该如何应对?...

    前言 网上许多博客针对增大 TCP 半连接队列和全连接队列的方式如下: 增大 TCP 半连接队列方式是增大 tcp_max_syn_backlog: 增大 TCP 全连接队列方式是增大 listen( ...

  9. Kali Linux渗透测试之端口扫描(一)——UDP、TCP、隐蔽端口扫描、全连接端口扫描

    端口扫描 二.三.四层发现的目的就是发现存活的IP,在存活的IP上面,展开进一步的扫描,及端口扫描,发现存活主机上存在着哪些开放的端口,端口后面就对应着各种各样的应用程序,应用程序的漏洞都是通过端口体 ...

最新文章

  1. 如何设置 Linux 上 SSH 登录的 Email 提醒
  2. 计算机考研专业课资料百度云,2020年考研专业课【初试】资料清单
  3. 3.1.1 存储器的分类(半导体-磁芯-磁表面-光存储-ROM-RAM-永久非永久-内存-外存-Cache)
  4. linux C语言之called object ‘maze’ is not a function or function pointer printf(“%d\t“, maze(i, j))
  5. QC安装与运行中的问题汇集
  6. 网页加载出现没有合适的负载均衡器_分布式必知必会-七层负载和四层负载到底是什么?...
  7. 李沐老师《动手学深度学习》课程总结1
  8. ironpython调用c dll_IronPython脚本调用C#dll示例
  9. Linux之父道歉后,Linux社区颁布开发人员行为准则
  10. 四种有能力取代Cookies的客户端Web存储方案
  11. 认识计算机系统基本结构,高中信息技术计算机基础应用课件:03认识计算机系统的组成与作用...
  12. Python结巴中文分词工具使用过程中遇到的问题及解决方法
  13. html5人脸拼图,力荐10大拼图App 玩转拼图分享美好生活
  14. 腾讯视频下载的视频怎么导出来_手机腾讯视频怎么缓存视频电影
  15. oracle数据库 dmp文件,数据库DMP文件损坏怎么修复
  16. 利用R包ggmsa进行多序列比对_2020-05-31
  17. 实验1-基于半色调技术的图像打印程序
  18. 几个比较好的Web前端开发框架
  19. COM总结 - 转自知乎
  20. html中正方形选择,html中正方形的单选框怎么设置

热门文章

  1. pytorch的expand_as和expand
  2. pytorch 中 expand ()函数
  3. CF专题(长安大学)
  4. 会抓老鼠的猫不一定是好猫
  5. 我们在使用领英时有必要用领英精灵吗?
  6. vue scroll 监听,点击按钮自动滚动到相应的信息展示
  7. 如何使用Google Ads跑联盟Offer – Keywords
  8. Java学习笔记——从零开始(2018.04.22已更新)
  9. 百度离线地图示例之二:测距
  10. 国际短信接口文档-json