我试过在网上搜索不同的python文档,论坛和其他人的问题,但我还没有找到任何人有这个相同的问题。为什么Windows上的python套接字扫描比在linux上慢很多?

我的脚本的典型样子是我将创建一个套接字连接,尝试连接到1-9999端口,并且只会在端口打开时告诉我。当我在Windows上运行它时,在移动到下一个端口之前需要1秒钟的时间才能扫描一个端口(每个端口60个端口/米〜16.5米)。当我在linux上运行相同的脚本时,它将非常快速地遍历所有9999端口,同时仍然返回相同的期望结果。

我一直希望能够构建交叉兼容的工具,但是看起来linux 只是在我的网络需求方面更好的操作系统?我有两个在我的处置,所以我不介意使用一个在另一个。我只想知道是否有任何可以使端口扫描在两个操作系统上都同样快的操作,否则我不会花费太多的时间在Windows上进行构建。

无论我在哪个网络,速度的差异都是一样的。

我的问题是:

•为什么在给定相同函数的情况下,与Windows相比,windows的性能如此不同?

•有没有什么办法可以像使用linux一样快速地使用套接字扫描端口?

- 编辑 -

这里的一块,我用它来检查端口

def whole_scan(Host_):

service = ''

host = Host_

max_port = 9999

min_port = 1

def scan_host(host, port, r_code = 1):

try:

s = socket(AF_INET, SOCK_STREAM)

code = s.connect_ex((host, port))

if code == 0:

r_code = code

s.close()

except Exception, e:

pass

return r_code

hostip = gethostbyname(host)

for port in range(min_port, max_port):

try:

response = scan_host(host,port)

if response == 0:

try:

service = getservbyport(port)

except Exception, e:

service = 'n/a'

print(" |--port: %d\t%s" % (port,service.upper()))

except Exception, e:

pass

我也验证了我的防火墙被禁用,并且增加价值到我的注册表来禁用连接上的限制表现没有变化。我在Windows 10上。

2017-09-19

saniboy

+0

由于UNIX是专为网络和网络是专为UNIX,任何品牌的UNIX,包括基于Linux的系统,可以说是在选择时更有优势网络平台。这就是说,这里可能还有别的东西在工作。你的窗口盒子是否启用了防火墙?它可以阻止通知(未过滤)封闭端口的RST,ACK分组。 –

+0

@spectras我的笔记本电脑上的AV是禁用的,netsh advfirewall显示allprofiles显示所有防火墙都关闭。我想认为必须有一些东西,但是我很难找到它 –

+0

你能提供一个简化的,自包含的基准测试和两个操作系统的数字吗?有很多方法可以进行端口扫描(阻塞vs非阻塞,并行vs顺序,连接vs syn),所以最好有一个具体的例子加上实际的数字。 –

python在windows 比linux 慢,为什么Windows上的python套接字扫描比在linux上慢很多?相关推荐

  1. ubuntu安装python百度经验_如何在Ubuntu 20.04上安装Python 3.9(含python编译安装和使用Apt命令安装)...

    在本文中,我们将向您展示在Ubuntu 20.04上安装Python 3.9的两种方法.第一种使用APT命令安装Python3.9,第二种是在Ubuntu20.04上编译安装Python 3.9.本教 ...

  2. 本地套接字示例[来源:Advanced Linux Programming]

    本地套接字示例[来源:Advanced Linux Programming] 要通过套接字连接同一台主机上的进程,可以使用符号常量 PF_LOCAL 和 PF_UNIX所代表的本地命名空间.它们被称为 ...

  3. 在windows下使用python中的select函数报错‘[WinError 10038] 在一个非套接字上尝试了一个操

    注意:Python的select方法在Windows和Linux环境下的表现是不一样的,Windows下它只支持socket对象,不支持文件描述符(file descriptions),而Linux两 ...

  4. linux上安装python2.6.9_在Linux CentOS 6.6上安装Python 2.7.9

    CentOS 6.6自带的是Python 2.6.6,而编译llvm需要Python 2.7以上. checking for python... /usr/bin/python checking fo ...

  5. linux psycopg2,在unix上为python 3.5安装psycopg2包

    我正在尝试安装包psycopg2以连接postgres数据库,但在运行此命令时遇到以下错误 python3.5 /usr/local/bin/psycopg2-2.7.3.2/setup.py安装 * ...

  6. python 图形化socket编程_Python黑帽编程2.8 套接字编程

    Python黑帽编程2.8 套接字编程 套接字编程在本系列教程中地位并不是很突出,但是我们观察网络应用,绝大多数都是基于Socket来做的,哪怕是绝大多数的木马程序也是如此.官方关于socket编程的 ...

  7. linux篇【12】:网络套接字<前序>—网络基础+udp套接字

    目录 一.网络基础 1.认识 "协议" 举例: 2.协议分层 (1)软件分层 (2)协议分层 3.OSI七层模型 4.TCP/IP五层(或四层)模型 5.网络和操作系统之间的关系 ...

  8. tcp/ip 协议栈Linux内核源码分析15 udp套接字接收流程二

    内核版本:3.4.39 上篇我们分析了UDP套接字如何接收数据的流程,最终它是在内核套接字的接收队列里取出报文,剩下的问题就是谁会去写入这个队列,当然,这部分工作由内核来完成,本篇剩下的文章主要分析内 ...

  9. tcp/ip 协议栈Linux内核源码分析14 udp套接字接收流程一

    内核版本:3.4.39 前面两篇文章分析了UDP套接字从应用层发送数据到内核层的处理流程,这里继续分析相反的流程,看看数据是怎么从内核送到应用层的. 与发送类似,内核也提供了多个接收数据的系统调用接口 ...

最新文章

  1. 微服务之旅:从 Netflix OSS 到 Istio Service Mesh
  2. 三级计算机网络技术考试题,2017年计算机三级网络技术考试题
  3. 使用事务代码MB51+Excel中的数据透视表实现 收发存报表
  4. 无法使用前导 .. 在顶级目录上退出
  5. java中static关键字的解析
  6. php运算符的关键字,PHP 运算符
  7. java转net容易吗_每日一醒(1):学习Java容易忽视的小错误,你注意到了吗?
  8. 华为在中国建立其全球最大的网络安全透明中心
  9. 华为机试题【11】-报数删除人
  10. 马化腾出售腾讯股份,四天套现近20亿港元;朋友圈发红包测试视频红包玩法...
  11. SLAM_SLAM问题求解框架
  12. puppet的配置清单书写
  13. php动态网时间实时刷新,php刷新页面_php与ajax实现页面自动刷新
  14. 一张图了解软件测试流程
  15. 远程桌面无法复制粘贴问题
  16. 搜狗拼音、QQ拼音输入法、2345拼音输入法、百度输入法 、手心输入法对比。(个人体会)...
  17. 乐优商城第六篇:域名访问与品牌查询
  18. java迭代例子_Java 迭代器的代码实例详解
  19. 163邮箱|电子邮件注册,163邮箱如何注册申请?
  20. Unity3D-iOS创建本地视频

热门文章

  1. 计算机网络课程设计报告 计算校验和 湖南文理学院,湖南文理学院课程设计 计算机网络实验室综合布线系统的设计与测试...
  2. 易拉罐被证实能增强WiFi信号 笔记本手机适用
  3. [附源码]Node.js计算机毕业设计大众点评管理系统Express
  4. YOLOv7使用云GPU训练自己的数据集
  5. 「端到端」和「点到点」的联系及区别
  6. 实现QQ音乐项目的一些技术点jQuery,html5
  7. 微信小程序 - - - - - 瀑布流效果实现
  8. R5S OpenWrt下smba共享文件夹
  9. Java项目:药店信息管理系统(java+SSM+JSP+layui+maven+mysql)——计算机毕业设计
  10. Chrome for Mac OS 的 快捷键