我发现了一篇关于在计算机上获取活动tcp / udp连接的文章。
http://www.codeproject.com/KB/IP/iphlpapi.aspx
我的问题是,我需要能够远程确定活动连接 - 查看特定端口是否正在运行或正在侦听而不会篡改计算机。
这可能吗?
看起来不像是本机,否则可能会造成安全问题。另一种方法是查询远程服务,然后可以在本地计算机上进行必要的调用。
有什么想法吗?
答案 0 :(得分:4)
Nmap正是您要找的。 p>
答案 1 :(得分:3)
如果没有远程计算机知道,没有办法知道哪些端口是打开的。但是你可以在没有程序运行的情况下确定信息(即不干扰程序)。
使用SYN扫描:
要建立连接,TCP使用三次握手。如果没有程序知道,可以利用这个来查明端口是否打开。
握手的工作原理如下:
SYN扫描是最流行的形式 TCP扫描。而不是使用 操作系统的网络功能, 端口扫描程序生成原始IP 数据包本身和监视器 响应。这种扫描类型也是 被称为“半开扫描”,因为 它实际上从未打开过完整的TCP 连接。端口扫描程序生成 一个SYN包。如果目标端口是 打开,它将以SYN-ACK响应 包。扫描仪主机响应 一个RST数据包,关闭连接 在握手完成之前。
原始网络的使用有几个 优点,让扫描仪充满 控制发送的数据包和 响应超时,允许 详细报告答复。 有关扫描的争论 对目标主机的侵扰性较小。 SYN 扫描的优点是 个别服务从未实际 一些人接收连接 服务可以通过连接崩溃 扫描。但是,RST期间 握手可能会导致一些问题 网络堆栈,特别简单 打印机等设备。没有 无论如何都是决定论点。
如下所述,我认为nmap可以进行SYN扫描。
使用套接字进行TCP端口扫描:
确定哪些端口处于打开状态的一种方法是打开该端口的套接字。或者到另一个端口,就像你提到的那样找到你的信息。
例如,从命令提示符或终端:
telnet google.com 80
UDP端口扫描:
如果将UDP数据包发送到未打开的端口,系统将以ICMP端口不可达消息进行响应。您可以使用此方法确定端口是打开还是关闭。但接收程序会知道。
答案 2 :(得分:1)