Python:如何计算在两个ip地址和端口之间接收和发送的数据

2024-10-01 02:26:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我猜是套接字编程。但是我从来没有做过socket编程,除了在学习Python时运行教程示例之外。我需要更多的想法来实现这一点。在

我特别需要的是运行一个服务器的监控程序,该程序将轮询或监听来自不同IP的不同流行端口的通信量。例如,如何通过192.168.1.10和192.168.1.1(网关)的端口80接收和发送数据。在

我检查了一些现成的工具,如MRTG、Bwmon、Ntop等,但是由于我们正在研究一些特定的模式,我们需要在程序中进行数据捕获。在

其目的是监视一些流行的端口,并对某些时期的网络流量进行研究,并将其与其他一些数据进行比较。在

我们想用Python来实现所有这些。。。。在


Tags: 工具数据端口程序ip服务器示例网关
2条回答

IPTraf是一种基于ncurses的IP-LAN监控工具。具有生成网络统计信息的能力,包括TCP、UDP、ICMP等。在

因为您正在考虑从python执行它,所以可以考虑使用screen(屏幕管理器和VT100/ANSI终端仿真)来克服ncurses问题,并且您可能希望将日志记录和间隔参数传递给IPTraf,后者强制IPTraf在给定的时间间隔内记录到一个文件。有点棘手,但最终您可以通过基本上解析日志文件来获得所需的内容。在

您可能需要使用scapy来实现这一点。只需嗅探一个特定接口上的所有以太网流量,丢弃所有非TCP和与端口不匹配的内容。在

不确定scapy是否已经可以跟踪TCP连接(比如识别重复的序列号,只提取有效负载流),但是我想它可能可以,如果不是的话,就不难构建一个足够好的TCP连接跟踪器,它可以处理95%的流量。在

替代方法是直接使用套接字(查找原始套接字)或libpcap,这两种方法都可以从Python实现。您可能还想检查一下'tcpdump'命令行工具的filter expersion语法,也许它已经可以做您想要的了。在

我敢打赌有更专业的高级工具来解决这个问题,但我不知道。在

PS:如果你还不了解wireshark,那就先去看看它,然后再玩玩它。它可以跟踪TCP流,并将教你什么是TCP连接跟踪。也许它的命令行二进制文件tshark可以用来提取所需的TCP流。在

相关问题 更多 >