网友提问:如何用TCP协议ping主机
二,使用tracetcp探测网络主机:
我们需要在命令行模式下执行tracetcp来探测网络主机。可以把下载来的tracetcp压缩包解压到一个目录中。然后通过任务栏的“开始”->“运行”,输入CMD后回车进入命令行模式,然后进入刚才解压的目录中。执行tracetcp ip即可开始探测。例如笔者尝试tracert 10.82.0.30这台主机。那么应该执行tracetcp 10.82.0.30,这样我们就会得到该主机的反馈信息了,即使该主机上安装了防火墙禁止ICMP协议传输或者路由交换设备上设置了访问控制列表过滤了ICMP协议我们都可以探测到该主机的真实状态。而不使用tracetcp小工具,直接通过ping或者tracert命令访问10.82.0.30则会收到request timed out或者destination net unreachable的信息,表面上看是该主机不可达,实际是ICMP探测数据包被过滤造成的。我们使用tracetcp和直接用系统自带的ping,tracert对同一个IP地址进行追踪得出了不同的结果,事实证明即使ICMP协议被禁止使用也可以通过tracetcp工具使用TCP协议完成探测目的。(如图5)
![]() |
| 图5(点击看大图) |
上面提到的IP地址是与笔者所用计算机在同一个网段中的一台服务器,只不过在其上安装了防火墙过滤了ICMP数据包,同样我们对另一个IP地址——10.82.114.1进行探测,该计算机处于路由器之后,路由器上设置了ACL禁止ICMP协议数据包的通过。那么我们使用tracetcp命令会得到什么效果呢?在命令行模式中输入tracetcp 10.82.114.1后可以得出该IP的计算机名——win2000s,以及到达该地址所需要走的路径(路由),需要两跳达到该主机。同样情况下使用系统自带的ping命令将永远得到request timed out的提示,而使用tracert 10.82.114.1虽然可以通过两跳,但是两跳后就再也探测不到了,依然会收到request timed out的反馈信息。(如图6)
![]() |
| 图6(点击看大图) |
小提示:
经过笔者测试发现如果本地计算机安装了一些软件防火墙,那么tracetcp将无法很好的工作,例如Zone Alarm,,Kerio,SyGate等。所以出现问题时我们需要将这些防火墙或代理工具关闭。不过庆幸的是tracetcp与XP系统自带的防火墙没有冲突,我们可以正常使用。
