多个目标的同步扫描端口的速度限制?

多个目标的同步扫描端口的速度限制?

问题描述:

我已经编码了一个小的原始数据包syn端口扫描器来扫描ips列表并确定它们是否在线。 (在python2.7中为Debian btw)多个目标的同步扫描端口的速度限制?

基本意图是简单地检查一些网站是否可到达并通过在原始syn请求(端口80)之前加速该过程,但是我偶然发现了某些事情。

只是为了好玩,我开始试图找出我能以多快的速度得到(尽我所知)检查技术,事实证明,尽管我只在一个端口上发送原始syn数据包,在同一个端口(使用tcpdump)时,连接可靠性从约1500-2000包/秒开始下降,此后不久,几乎整个网络开始阻塞。

我想过这个问题,如果我比较例如该值洪流播种/榨汁包/秒扫描速度安静缓慢。

我有几个想法,为什么发生这种情况,但我不是一个专业的,我不知道如何检查,如果我用我的假设是正确的。

首先,它可能是Linux网络有一些花哨的内部端口转发东西运行,以保持发送端口打开(也许某种类型的iptables功能?),因为脚本似乎能够接收syn-ack封闭的源端口。

如果是这样,可以防止或绕过,在一些时尚?

另一种猜测是,Python库简直是太愚蠢到做真正正确的原始数据包的管理,但是,由于其使用Linux的内部功能来做到这一点,据我所知是不可能的。

  • 有没有人有线索为什么网络阻塞正在发生?
  • 哪里是来洪流连接或其他任何类似的区别?
  • 我需要以其他方式发送数据包吗?

几个月前我发现这个问题是众所周知的c10k问题。
它必须与内核如何在内部分配和处理TCP连接有关。
解决此问题的唯一有效方法是绕过内核tcp堆栈并自行实现各种其他低级别的事情。
我知道所有的好方法都具有低级别的异步实现工作
有一些很好的方法来处理取决于规模的问题。
有关更多信息,我会建议您搜索c10k问题。