PING命令 原理
问:在局域内如何ping通外网?
在学校局域网中为什么不能ping外网?
如:c:/>ping 20.2.2.2 ' 注:这是美国IP
Desstination host unreachable
Desstination host unreachable
Desstination host unreachable
Desstination host unreachable
这是为什么?而ping自己学校的服务器会通。
答:解决四个问题:1,网关的问题。2,ping的原理问题。3,ping不通原因问题 4,ping不通对入侵的影响!
一,
顾名思义,网关(Gateway)就是一个网络连接到另一个网络的“关口”。
按照不同的分类标准,网关也有很多种。TCP/IP协议里的网关是最常用的,在这里我们所讲的“网关”均指TCP/IP协议下的网关。
那么网关到底是什么呢?网关实质上是一个网络通向其他网络的IP地址。比如有网络A和网络B,网络A的IP地址范围为 “192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩 码为255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上, TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过网 关。如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的 某个主机。网络B向网络A转发数据包的过程也是如此。所以说,只有设置好网关的IP地址,TCP/IP协议才能实现不同网络之间的相互通信。那么这个IP 地址是哪台机器的IP地址呢?网关的IP地址是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路 由器)、代理服务器(也相当于一台路由器)。
什么是默认网关 如果搞清了什么是网关,默认网关也就好理解了。就好像一个房间可以有多扇门一样, 一台主机可以有多个网关。默认网关的意思是一台主机如果找不到可用的网关,就把数据包发给默认指定的网关,由这个网关来处理数据包。现在主机使用的网关, 一般指的是默认网关。
如何设置默认网关 一台电脑的默认网关是不可以随随便便指定的,必须正确地指定,否则一台电脑就会将数据包发给不是网关的电脑,从而无法与其他网络的电脑通信。默认网关的设定有手动设置和自动设置两种方式。
1. 手动设置
手动设置适用于电脑数量比较少、TCP/IP参数基本不变的情况,比如只有几台到十几台电脑。因为这种方法需要在联入网络的每台电脑上设置“默认网关”,非常费劲,一旦因为迁移等原因导致必须修改默认网关的IP地址,就会给网管带来很大的麻烦,所以不推荐使用。
在Windows 中,设置默认网关的方法是在“网上邻居”上右击,在弹出的菜单中点击“属性”,在网络属性对话框中选择“TCP/IP协议”,点击“属性”,在“默认网关”选项卡中填写新的默认网关的IP地址就可以了。
需要特别注意的是:默认网关必须是电脑自己所在的网段中的IP地址,而不能填写其他网段中的IP地址。
2. 自动设置
自动设置就是利用DHCP服务器来自动给网络中的电脑分配IP地址、子网掩码和默认网关。这样做的好处是一旦网络的默认网关发生了变化时,只要更改了 DHCP服务器中默认网关的设置,那么网络中所有的电脑均获得了新的默认网关的IP地址。这种方法适用于网络规模较大、TCP/IP参数有可能变动的网 络。 另外一种自动获得网关的办法是通过安装代理服务器软件(如MS Proxy)的客户端程序来自动获得,其原理和方法和DHCP有相似之处。由于篇幅所限,就不再详述了。
二,
PING命令是属于ICMP协议规定的,而ICMP是内嵌于IP层的,因此,可以说, PING是网络层的命令。按照缺省设置,Windows上运行的Ping命令发送4个ICMP(网间控制报文协议)回送请求,每个32字节数据,如果一切 正常,我们应能得到4个回送应答。 Ping能够以毫秒为单位显示发送回送请求到返***送应答之间的时间量。如果应答时间短,表示数据报不必通过太多的路由器或网络连接速度比较快。Ping 还能显示TTL(Time To Live存在时间)值,我们可以通过TTL值推算一下数据包已经通过了多少个路由器:源地点TTL起始值(就是比返回TTL略大的一个2的乘方数)-返回 时TTL值。例如,返回TTL值为119,那么可以推算数据报离开源地址的TTL起始值为128,而源地点到目标地点要通过9个路由器网段(128- 119);如果返回TTL值为246,TTL起始值就是256,源地点到目标地点要通过9个路由器网段。
PING的实现过程很简单,命令将引发IP层发送一个简单的IP包,而目的方收到这个包之后,将源和目的地址做一下交换,重新发出这个包即可,当然还要加一些超时的机制。
假定主机A的IP地址是192.168.1.1,主机B的IP地址是192.168.1.2,都在同一子网内,则当你在主机A上运行“Ping 192.168.1.2”后,都发生了些什么呢?
首先,Ping命令会构建一个固定格式的ICMP请求数据包,然后由ICMP协议将这个数据包连同地址“192.168.1.2”一起交给IP层协议 (和ICMP一样,实际上是一组后台运行的进程),IP层协议将以地址“192.168.1.2”作为目的地址,本机IP地址作为源地址,加上一些其他的 控制信息,构建一个IP数据包,并在一个映射表中查找出IP地址192.168.1.2所对应的物理地址(也叫MAC地址,熟悉网卡配置的朋友不会陌生, 这是数据链路层协议构建数据链路层的传输单元——帧所必需的),一并交给数据链路层。后者构建一个数据帧,目的地址是IP层传过来的物理地址,源地址则是 本机的物理地址,还要附加上一些控制信息,依据以太网的介质访问规则,将它们传送出去。
主机B收到这个数据帧后,先检查它的目的地址,并 和本机的物理地址对比,如符合,则接收;否则丢弃。接收后检查该数据帧,将IP数据包从帧中提取出来,交给本机的IP层协议。同样,IP层检查后,将有用 的信息提取后交给ICMP协议,后者处理后,马上构建一个ICMP应答包,发送给主机A,其过程和主机A发送ICMP请求包到主机B一模一样。
当然为了避免数据包在网路上的传送路径造成死循环或者无休止的 投递下去,每个ip数据包都包含乐一个寿命计数器,这个就是数据包的 的生存时间TTL,也叫hop count,只要一个路由器处理过这个数据包,它就递减这个数据包的寿命计数,当寿命计数递减到0的时候,路由器就丢弃该包 TTL在一定程度上反应了一个IP数据包经过的路由器的多少,但是也不完全是这样,因为数据包在网络上传播的时候,其传播时间和带宽有一定关系,有时候协 议会把传播时间的长短折合在TTL里,能比较客观的反应网络 的状况。
从Ping的工作过程,我们可以知道,主机A收到了主机B的一个应答包,说明两台主机之间的去、回通路均正常。也就是说,无论从主机A到主机B,还是从主机B到主机A,都是正常的。如:
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241.......
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Ping statistics for 202.103.96.68:
Packets: Sent = 50, Received = 48, Lost = 2 (4% loss),Approximate
round trip times in milli-seconds:
Minimum = 40ms, Maximum = 51ms, Average = 46ms
从 以上我就可以知道在给202.103.96.68发送50个数据包的过程当中,返回了48个,其中有两个由于未知原因丢失,这48个数据包当中返回速度最 快为40ms,最慢为51ms,平均速度为46ms。TTL 指定ping分组时限域,即生存时间,指定数据报被路由器丢弃之前允许通过的网段数量。TTL 是由发送主机设置的,以防止数据包不断在 IP 互联网络上永不终止地循环。转发 IP 数据包时,要求路由器至少将 TTL 减小 1。TTL 字段值可以帮助我们识别操作系统类型。下面给出一些常见操作系统的对照值:solaris---->252 IRIX------->240 AIX------->247 Linux----->241 or 240 UNIX 及类 UNIX-----255 Windows NT/2K操作系统 ------------ 128 Windows 95--------- 32 如果接近240的话就是UNIX系统,如果接近128的话就是WINDOWS系统。虽然、以上说法还有很多争议,不过在理论上说还是正确的。另外TTL值 是通过注册表可以自行修改的。
三,
Ping不通后返回的提示
1,Destination host unreachable “目的地主机不能到达 ” 与路由问题有关,可能icmp包有一个字节是ttl,经过一个router,就会减1,所以在路由表里是有到达这个地址的路由的,但再到达之前ttl已经减成0了
2,request timed out “请求超时” 与目的主机和自己计算机禁止ping 等等因素有关。
1,、安装了防火墙
在共享上网的机器中,出于安全考虑,大部分作为服务器的主机都安装了防火墙软件,而其他作为客户机的机器则一般不安装。几乎所有的防火墙软件,默认情况 下是不允许其他机器Ping本机的。一般的做法是将来自外部的ICMP请求报文滤掉,但它却对本机出去的ICMP请求报文,以及来自外部的ICMP应答报 文不加任何限制。这样,从本机Ping其他机器时,如果网络正常,就没有问题。但如果从其他机器Ping这台机器,即使网络一切正常,也会出现“超时无应 答”的错误。 大部分的单方向Ping通现象源于此。解决的办法也很简单,根据你自己所用的不同类型的防火墙,调整相应的设置即可。 对方的防火墙连Ping都不让你Ping。
2,、错误设置IP地址
正常情况下,一台主机应该有一个网卡,一个IP地址,或 多个网卡,多个IP地址(这些地址一定要处于不同的IP子网)。但设置了一个与网卡IP地址处于同一子网的IP地址,这样,在IP层协议看来,这台主机就 有两个不同的接口处于同一网段内。当从这台主机Ping其他的机器时,会存在这样的问题: (1)主机不知道将数据包发到哪个网络接口(网关 ),因为有两个网络接口都连接在同一网段;(2)主机不知道用哪个地址作为数据包的源地址。因此,从这台主机去Ping其他机器,IP层协议会无法处理, 超时后,Ping 就会给出一个“超时无应答”的错误信息提示。但从其他主机Ping这台主机时,请求包从特定的网卡来,ICMP只须简单地将目的、源地址互换,并更改一些 标志即可,ICMP应答包能顺利发出,其他主机也就能成功Ping通这台计算机. Icmp报文错误说明:0= 网络不可到达. 1= 主机不可到达. 2= 协议不可到达. 3= 端口不可到达. 4= 包需要重组. 5= 原路由失败.
代码 0.1. 4, 5的ICMP 一般由路由发送.而 代码 2 3 则来自目的主机. 如果根据路由的路由表,在一个数据包里的目的网络是不可到达的,例如: 目的网络是无限远,那么,路由就发送一个目的不可到达的消息给这个包的发送者. 在一些路由里,有能力判断目的主机不可能到达的,就回发送主机不可到达.如果在目的主机里,IP 模块不能传递数据给上层的端口或协议,(因为端口没有激活,或所指的高层协议根本不存在),那么 目的主机会发送目的不可到达的信息回去. 另外一种情况是,当数据报必须分割以通过一个网管时,而偏偏在IP 包里指定了不要分割.此时,网关回发送目的不可到达信息. 当一个路由处理一个IP 包时,发现其TTL已经为0 , 则路由有责任把这个数据销毁,不再转发.并会通知原主机. 当一个主机重组一个分割过的IP时,在系统内定的时间内没有接受到所有的分组而不能完成任务 时.会销毁这个分组并告之原主机. 当一个路由或主机的内部队列已经被等待处理的数据报添满而不能处理时, 会自动销毁新进来的数据报,并告诉原主机数据发送太快,
遇到ping不通情况我们怎么办呢。我们可以通过Ping检测网络故障的典型次序来解决问题。正常情况下,当我们使用Ping命令来查找问题所在或检验网 络运行情况时,我们需要使用许多Ping命令,如果所有都运行正确,我们就可以相信基本的连通性和配置参数没有问题;如果某些Ping命令出现运行故障, 它也可以指明到何处去查找问题。下面就给出一个典型的检测次序及对应的可能故障:
·ping 127.0.0.1
这个Ping命令被送到本地计算机的IP软件,该命令永不退出该计算机。如果没有做到这一点,就表示TCP/IP的安装或运行存在某些最基本的问题。
·ping 本机IP
这个命令被送到我们计算机所配置的IP地址,我们的计算机始终都应该对该Ping命令作出应答,如果没有,则表示本地配置或安装存在问题。出现此问题 时,局域网用户请断开网络电缆,然后重新发送该命令。如果网线断开后本命令正确,则表示另一台计算机可能配置了相同的IP地址。
·ping 局域网内其他IP
这个命令离开我们的计算机,经过网卡及网络电缆到达其他计算机,再返回。收到回送应答表明本地网络中的网卡和载体运行正确。但如果收到0个回送应答,那 么表示子网掩码(进行子网分割时,将IP地址的网络部分与主机部分分开的代码)不正确或网卡配置错误或电缆系统有问题。
·ping 网关IP
这个命令如果应答正确,表示局域网中的网关路由器正在运行并能够作出应答。
·ping 远程IP
如果收到4个应答,表示成功的使用了缺省网关。对于拨号上网用户则表示能够成功的访问Internet(但不排除ISP的DNS会有问题)。
·ping localhost
localhost是个作系统的网络保留名,它是127.0.0.1的别名,每太计算机都应该能够将该名字转换成该地址。如果没有做到这一带内,则表示主机文件(/Windows/host)中存在问题。
·ping www.xxx.com
对这个域名执行Ping www.xxx.com 地址,通常是通过DNS 服务器 如果这里出现故障,则表示DNS服务器的IP地址配置不正确或DNS服务器有故障(对于拨号上网用户,某些ISP已经不需要设置DNS服务器了)。顺便说 一句:我们也可以利用该命令实现域名对IP地址的转换功能。 如果ping某一网络地址www.sohu.com,出现:"Reply from 202.106.156.197: bytes=32 time=541ms TTL=245"则表示本地与该网络地址之间的线路是畅通的;如果出现"Request timed out",则表示此时发送的小数据包不能到达目的地,此时可能有两种情况,一种是网络不通,还有一种是网络连通状况不佳。此时还可以使用带参数的Ping 来确定是哪一种情况。 例:ping www.sohu.com -t -w 3000 不断地向目的主机发送数据,并且响应时间增大到3000ms,此时如果都是显示"Request timed out",则表示网络之间确实不通,如果不是全部显示"Request timed out"则表示此网站还是通的,只是响应时间长或通讯状况不佳。
入侵之前一般要收集相应的信息。扫描器是一种自动检测远程或本地主机安全性弱点的程序。使用扫描器,可以获得远程服务器的大量信息,例如:开放端口、提供 的服务以及它们的软件版本等。通过这些信息,我们可以了解到远程主机所存在的安全问题,从而能够及时修补系统存在的安全隐患。同时,扫描器也能够为攻击者 提供很大的方便,可以大大简化他们的工作。 扫描器一般会先向远程TCP/IP端口发出请求,记录目标给予的回答,然后对应答信息进行分析。通过这种方法,可以搜集到目标主机的各种有用的信息,比 如,端口是否开放;能否匿名登录等。另外,扫描器一般不是一个直接的网络漏洞攻击程序,它仅仅能帮助我们发现目标机器的某些内在的弱点。
高级ICMP扫描技术简单的说就是利用Ping扫描通过发送ICMP(Internet Control Message Protocol,Internet控制消息协议)回应请求数据包和TCP应答(Acknowledge,简写ACK)数据包,确定主机的状态,非常适合 于检测指定网段内正在运行的主机数量。 主要利用下面这些特性:
1、向目标主机发送一个只有IP头的IP数据包,目标将返回Destination Unreachable的ICMP错误报文。
2、向目标主机发送一个坏IP数据报,比如,不正确的IP头长度,目标主机将返回Parameter Problem的ICMP错误报文。
3、当数据包分片但是,却没有给接收端足够的分片,接收端分片组装超时会发送分片组装超时的ICMP数据报。
向目标主机发送一个IP数据报,但是协议项是错误的,比如协议项不可用,那么目标将返回Destination Unreachable的ICMP报文,但是如果是在目标主机前有一个防火墙或者一个其他的过滤装置,可能过滤掉提出的要求,从而接收不到任何回应。可以 使用一个非常大的协议数字来作为IP头部的协议内容,而且这个协议数字至少在今天还没有被使用,应该主机一定会返回Unreachable,如果没有 Unreachable的ICMP数据报返回错误提示,那么就说明被防火墙或者其他设备过滤了,我们也可以用这个办法来探测是否有防火墙或者其他过滤设备 存在。
利用IP的协议项来探测主机正在使用哪些协议,我们可以把IP头的协议项改变,因为是8位的,有256种可能。通过目标返回的 ICMP错误报文,来作判断哪些协议在使用。如果返回Destination Unreachable,那么主机是没有使用这个协议的,相反,如果什么都没有返回的话,主机可能使用这个协议,但是也可能是防火墙等过滤掉了。NMAP 的IP Protocol scan也就是利用这个原理。
利用IP分片造成组装超时ICMP错误消息,同样可以来达到我们的探测目的。当 主机接收到丢失分片的数据报,并且在一定时间内没有接收到丢失的数据报,就会丢弃整个包,并且发送ICMP分片组装超时错误给原发送端。我们可以利用这个 特性制造分片的数据包,然后等待ICMP组装超时错误消息。可以对UDP分片,也可以对TCP甚至ICMP数据包进行分片,只要不让目标主机获得完整的数 据包就行了,当然,对于UDP这种非连接的不可靠协议来说,如果我们没有接收到超时错误的ICMP返回报,也有可能时由于线路或者其他问题在传输过程中丢 失了。
我们能够利用上面这些特性来得到防火墙的ACL(access list),甚至用这些特性来获得整个网络拓扑结构。如果我们不能从目标得到Unreachable报文或者分片组装超时错误报文,可以作下面的判断:
1、防火墙过滤了我们发送的协议类型
2、防火墙过滤了我们指定的端口
3、防火墙阻塞ICMP的Destination Unreachable或者Protocol Unreachable错误消息。
4、防火墙对我们指定的主机进行了ICMP错误报文的阻塞。
一般入侵最初会Ping,如果没办法返回数据包都会放弃对此用户的入侵。在互联网上有很多人来进行大规模的Ping,如果对方有返回数据包.他们就能肯定 对方没有关闭ICMP协议或者是没有安装防火墙.然后他们就可以找找系统存在的漏洞,如果有漏洞也只需要花费几分钟的时间入侵你的计算机,然后上传一些木 马,所以只要以后连接到互联网你都被对方所利用.我们关闭ICMP或安装防火墙可以减少被入侵的机会.这只能防范ICMP的攻击和入侵方面。但是扫描器技 术还有高级TCP扫描技术,高级UDP扫描技术等其他技术来对目标主机进行探测!即使不能进行Ping扫描 ,也可以进行其他扫描和以其他方式来进行入侵检测!ping不通不意味不能入侵!