远程检查IP端口状态

时间:2008-09-24 00:02:04

标签: c# tcp remoting udp ip

我发现了一篇关于在计算机上获取活动tcp / udp连接的文章。

http://www.codeproject.com/KB/IP/iphlpapi.aspx

我的问题是,我需要能够远程确定活动连接 - 查看特定端口是否正在运行或正在侦听而不会篡改计算机。

这可能吗?

看起来不像是本机,否则可能会造成安全问题。另一种方法是查询远程服务,然后可以在本地计算机上进行必要的调用。

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

Nmap正是您要找的。

答案 1 :(得分:3)

如果没有远程计算机知道,没有办法知道哪些端口是打开的。但是你可以在没有程序运行的情况下确定信息(即不干扰程序)。

使用SYN扫描:

要建立连接,TCP使用三次握手。如果没有程序知道,可以利用这个来查明端口是否打开。

握手的工作原理如下:

  1. 客户端通过向服务器发送SYN来执行活动打开。
  2. 服务器回复SYN-ACK。
  3. 通常,客户端会将ACK发送回服务器。但是跳过了这一步。
  4.   

    SYN扫描是最流行的形式   TCP扫描。而不是使用   操作系统的网络功能,   端口扫描程序生成原始IP   数据包本身和监视器   响应。这种扫描类型也是   被称为“半开扫描”,因为   它实际上从未打开过完整的TCP   连接。端口扫描程序生成   一个SYN包。如果目标端口是   打开,它将以SYN-ACK响应   包。扫描仪主机响应   一个RST数据包,关闭连接   在握手完成之前。

         

    原始网络的使用有几个   优点,让扫描仪充满   控制发送的数据包和   响应超时,允许   详细报告答复。   有关扫描的争论   对目标主机的侵扰性较小。 SYN   扫描的优点是   个别服务从未实际   一些人接收连接   服务可以通过连接崩溃   扫描。但是,RST期间   握手可能会导致一些问题   网络堆栈,特别简单   打印机等设备。没有   无论如何都是决定论点。

    Source Wikipedia

    如下所述,我认为nmap可以进行SYN扫描。

    使用套接字进行TCP端口扫描:

    确定哪些端口处于打开状态的一种方法是打开该端口的套接字。或者到另一个端口,就像你提到的那样找到你的信息。

    例如,从命令提示符或终端:

    telnet google.com 80
    

    UDP端口扫描:

    如果将UDP数据包发送到未打开的端口,系统将以ICMP端口不可达消息进行响应。您可以使用此方法确定端口是打开还是关闭。但接收程序会知道。

答案 2 :(得分:1)

neouser99(等)建议NMAP。如果你要做的就是检测远程机器上打开的端口,那么NMAP非常好。

但是从您的问题的声音中,您实际上是在尝试确定哪些端口在远程计算机上都已打开。如果您正在使用通用监控解决方案(包括连接的端口),则可以在远程计算机上安装snmp服务器。有两个MIBs可以让您检查端口状态,即TCP-MIB :: tcpConnectionTable和UDP-MIB :: udpEndpointTable。

net-snmp中提供的守护程序(服务器)很可能获得对这些mib的支持。