如何用TCP协议ping主机


提问:本人经常用ping命令和tracert命令了解网络中主机的状态,看其是否运行正常。但是最近公司网管在路由器和服务器上设置了策略,将icmp协议彻底禁止使用了。众所周知由于ping和tracert命令用到是icmp协议。所以在这种情况下我就没法使用上述两个命令检测网络中主机状态了。请问有没有其他工具可以帮我解决此问题,或者将ping和tracert命令使用的协议从icmp更改到tcp或udp协议。急切等待it168高手的回答。

解答:从传统上讲ping命令和tracert命令都是使用ICMP协议来检测网络中的存活主机以及路由命令。所以说当服务器安装了防火墙或者在路由器上禁止了ICMP协议,那么我们在计算机上使用ping和tracert命令就无法收到满意的回复信息。这也是上面那位网友所遇到的棘手问题。在这种情况下我们如何检测服务器是否在线或者网络中某台主机是否运转正常呢?

实际上我们有很多种方法来解决上面网友所遇到的问题,最简单的就是在交换机上而不是计算机上来通过tracert检测。因为交换机上,特别是CISCO设备中traceroute命令是使用UDP协议的,所以即使ICMP协议被禁止使用依然可以通过UPD协议探询路由信息,反馈回主机状态。

另外我们在unix或linux系统中也是可以使用tracert命令来检测网络中主机状态的,和cisco中使用的协议一样,在linux和UNIX中tracert是通过udp协议运转的。
当然对于我们大多数用户来说,一没有路由器交换机的管理权限,二没有安装linux或unix操作系统。那么如何解决ICMP协议被禁止使用,并通过tracert探询主机路由和当前状态呢?在这里给大家推荐一个小工具,名字叫tracetcp。实际上他是一个tracert工具,但是使用的不是ICMP协议而是TCP协议。所以即使ICMP协议被禁止使用,我们也可以通过tracetcp这个小工具完成tracert命令。

一,准备工作:

虽然tracetcp是一个绿色工具,我们不用安装。而且总共只有几百KB的容量。但是由于该工具需要用到类似于sniffer的功能,所以需要winpcap的支持。如果没有安装winpcap的话,在运行tracetcp时会提示丢失packet.dll和wincap.dll文件。
WinPcap小档案:
软件版本: V3.1
软件语言:英文
软件类型:免费软件
软件大小:456 KB
适用平台:win2000/xp/2003
下载地址:http://count.skycn.com/softdownload.php?id=11534&url=http://jsyz.driversky.com/down/WinPcap_3_1.exe

第一步:下载winpcap程序并双击进行安装。

第二步:同意winpcap的安装许可协议。
第三步:复制必须文件到本地硬盘。
第四步:完成所有安装工作,winpcap已经进驻我们的操作系统点finish按钮结束安装工作。

二,使用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协议完成探测目的。

上面提到的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的反馈信息。

小提示:

经过笔者测试发现如果本地计算机安装了一些软件防火墙,那么tracetcp将无法很好的工作,例如Zone Alarm,,Kerio,SyGate等。所以出现问题时我们需要将这些防火墙或代理工具关闭。不过庆幸的是tracetcp与XP系统自带的防火墙没有冲突,我们可以正常使用。

三,更多附加功能:

实际上tracetcp小工具有很多参数,我们可以通过不同参数以及参数的不同组合实现更多的功能。在命令行模式下输入tracetcp -?后回车就可以查看其帮助信息,所有参数都会罗列出来。

小提示:

实际上tracetcp是一个小型扫描器,我们可以通过他对某台计算机的相应端口进行扫描。直接使用tracetcp ip:port命令即可。

四,总结:

不管是采取哪种方法只要我们将tracert和ping命令所使用的默认协议进行更改即可,这样就不会因为ICMP协议被过滤而无法探测远程主机了。该工具适合在设置了禁止ICMP数据包传输的网络或者服务器安装了防火墙等情况下对主机运行状态进行探测。所以总体上讲tracetcp小工具是网络管理员检测网络的好帮手。

相关内容