电脑网络故障解决方法

发布时间:[2019-03-15]
作者:[ ]
来源:[ ]

  常见网络故障解决方法

  一、destination host unreachable

  目标主机不能到达

  “Destination Host Unreachable”信息说明对方主机不存在或者没有跟对方建立连接。 网线没接好,或者网卡有问题!

  检查物理连接,重启机子 一般在确定你的TCP/IP网络属性的设置正确下,检查你的网线或者网卡是不是没插好

  我想应该是物理连接方面没接好吧。。。

  机子已经用了好几年了,N多灰尘。。。

  路由表中连到达目标的路由都没有,会出现“Destination Host Unreachable”。

  主要在以下三种情形出现:

  1、 局域网使用DHCP动态分配IP地址时,DHCP出现故障或者失败

  DHCP失效或者出现故障时,客户机无法分配到IP地址,系统只有自设IP地址,而IP地址的自动设置往往会分配到不同的子网,因此会出现“Destination Host Unreachable”。

  2、 子网掩码设置错误

  这种情况一般比较少见,如果子网掩码不是系统自动生成的,则在计算时一定细心。

  3、 路由表返回错误信息

  这种情况一般是在“Destination Host Unreachable”前面加上IP地址,说明本地计算机与外部网络连接没有问题,但与某台主机连接存在问题。

  "Destination Net Unreachable"这个信息表示对方主机不存在或者没有跟对方建立连接。这里要说明一下"destination host unreachable"和"time out"的区别,如果所经过的路由器的路由表中具有到达目标的路由,而目标因为其它原因不可到达,这时候会出现"time out",如果路由表中连到达目标的路由都没有,那就会出现"destination host unreachable"。

  把icmp安全策略关闭

  tcp/IP属性——高级——选项——IP安全机制属性——选择"不使用IPSEC"确定,OK了,一切正常

ping 时出request time out 和destination is unreachable

  request time out 是指icmp包发出后,长时间没有回应,所以会产生request time out。一般是ping 了一台网络中不存在的主机。

  destination is unreachable 或 destination port unreachable 一般是收到了目标主机或中间路由器回应的端口或目标主机不可达icmp包。

  如你ping一台用iptables封了icmp包的主机且用了-j REJECT 就会出现destination port unreachable 的信息,这是目标主机给的回应。

  两者主要的区别是看目标主机或中间路由器是不是给了icmp不可达的回应。 向目标主机发ip数据报,如果协议项是错的,或协议项不可用。目标将返回destination isunreachable的icmp报文。如果有防火墙,可能过滤掉ip数据报,收不到回应报文。如果设置ip头部协议内容为一特别大的数字(至少在今天还没有被使用),应该主机一定会返回unreachable的icmp报文。否则一定有防火墙。也可以变化ip中的协议项来探测主机使用了哪些协议,如果没使用则返回unreachable的icmp报文。

  二、Reply from XXX.XXX.X.X: bytes=32 time<1msTTL=128

ping是一个很常用的小工具,它主要用于确定网络的连通性问题。使用ping命令后,常见的出错信息通常分为3种:

  1、Unknown host:不知名主机这种出错信息的意思是,该远程主机的名字不能被域名服务器(DNS)转换成IP地址。

  故障原因可能是域名服务器有故障,或者其名字不正确,或者网络管理员的系统与远程主机之间的通信线路有故障。 飞

  2、Noanswer:无响应这种故障说明本地系统有一条通向中心主机的路由,但却接收不到它发给该中心主机的任何信·

  息。故障原因可能是下列之一:中心主机没有工作;本地或中心主机网络配置不正确:本地或中心的路由器没有;1::作:

  通信线路有故障;中心主机存在路由选择问题。 1

3、Request timbd out:超时工作站与中心主机的连接超时,数据包全部丢失of原因:可能是到路由器的连接出现

  问题,或路由器不能通过,也可能是中心主机已经关机或死机。

  如何用ping命令查找无法上网的原因?

  1.Ping命令的语法格式:

  有必要先给不了解Ping命令的人介绍一卜Ping命令的具体语法格式:ping目的地址[参数1J[参数2]……

  其中目的地址是指被测试计算机的IP地址或域名。主要参数有:

a:解析主机地址。

n:数据:发出的测试包的个数,缺省值为4。

l:数值:所发送缓冲区的大小。

  t:继续执行Ping命令,直到用户按Ctrl/C终上。

  有关hng的其他参数,可通过在MS-DOS提示符—卜运行Ping或Ping—?命令来查看。

  2.hng命令的应用技巧:

  用Ping::[:具检查网络服务器和任意一台客户端上TCP/IP协议的:]二作情况时,只要在网络中其他任何一台计算机上Ping

  该计算机的IP地址即可。例如要检查网络文件服务器192.192.225.225HPQW上的TCP/IP协议二[:作是否正常,只要在

  开始菜单下的“运行”子项中键入Ping 192.192.225.225就可以了。如果HPQW的TCP/IP协议:[:作正常,即会以DOS

  屏幕方式显示如下所示的信息:

  Pinging 192.192.225.225 with 32 byteS of dara:

  Reply from 192.192.225,225:bytes=32 time=lms TTL二128

  Reply from 192.192,225.225:bytes=32 time<1mS TTL=128

  Reply from 192.192.225.225:byteS’32 timeReply from 192.192.225.225:byteS‘32 timePing StatiStiCe for 192.192.225.225:

  PacketS:Sent二4,ReceiVed二4,LOSt二0(0%lOSS)

  Approximate round trip timeS in milli-secondS:

  Minimum=Oms,Maximum=1mS,Average=OmS

  以上返回了4个测试数据包,其中bytes=32表示测试中发送的数据包大小是32个字节,“me<10ms表示与对方主机

  往返一次所用的时间小于10毫秒,TTL=128表示当前测试使用的TTL(Time to Live)值为128(系统默认值)。

  如果网络有问题,则返回如下所示的响应失败信息:

  Pinging 192.192,225.225 with 32 bytes of data

  RequeSt timed out.

  RequeSt timed out.

  RequeSt timed OUt.

  RequeSt timed out.

  Ping StatiStiCe for 192.192.225,225:

  PacketS:Sent=4,ReceiVed二0,LOSt\二4(100%lOSS)

  Minimum‘0ms,Maximum=OmS,Average’0mS

  网络故障:出现第二种情况时,建议从以上几个方面来着手排查:一是看被测试计算机是否已安装了TCP/IP协议:

  二是检查一下被测试计算机的网卡安装是否正确且是否已经连通:三是看被测试计算机的TCP/IP协议是否与网F

  有效的绑定(具体方法是通过选择“开始一设置一控制面板一网络”来查看):如果通过以上几个步骤的检查还没有

  发现问题的症结,建议重新安装并设置一,‘厂TCP/”协议,如果是TCP/IP协议的问题,这时绝对可以彻底解决。

  按照上述方法,我们还可以用Ping命令来检查任意一台客户湍计算机上TCP/IP的工作情况。例如我们要检查网络任

  一客户端“机房0厂上的TCP/IP协议的配置和工作情况,可直接在该台机器上Ping本机的IP地址,若返回成功的信

  息,说明IP地虹LB己置无误,若失败则应检查IP地址的配置。可通过以下步骤进行:首先先检查一·卜整个网络,重点

  看一下该IP地址是否正在被其他用户使用,然后再看一下该工作站是否已正确连入网络(很多情况下用户没有登陆网

  络也会出现此种情况,这可是低级错误啊)。最后检查网—E的I/0地址lIRQ值和DMA值,这些值是否与其他设备发生

  了冲突。其中最后一项的检查非常重要,也常被许多用户所忽视,即使是Ping成功后也要进行此项的检查。因为当Ping

  本机的IP地址成功后,仅表明本机的IP地址配置没有问题,但并不能说明网卡的配置完全正确。这时虽然在本机的

  “网上邻居”中能够看到本机的计算机名,可就是无法与其他的用户连通,不知问题出在何处,其实问题往往就出在

  网卡上。

  简单来说,TTL全程Time to Live,意思就是生存周期。

  首先要说明ping命令是使用的网络层协议ICMP,所以TTL指的是一个网络层的网络数据包(package)的生存周期,这句话不懂的先回去复习OSI7层协议去。

  第一个问题,为什么要有生存周期这个概念。

  很显然,一个package从一台机器到另一台机器中间需要经过很长的路径,显然这个路径不是单一的,是很复杂的,并且很可能存在环路。如果一个数据包在传输过程中进入了环路,如果不终止它的话,它会一直循环下去,如果很多个数据包都这样循环的话,那对于网络来说这就是灾难了。所以需要在包中设置这样一个值,包在每经过一个节点,将这个值减1,反复这样操作,最终可能造成2个结果:包在这个值还为正数的时候到达了目的地,或者是在经过一定数量的节点后,这个值减为了0。前者代表完成了一次正常的传输,后者代表包可能选择了一条非常长的路径甚至是进入了环路,这显然不是我们期望的,所以在这个值为0的时候,网络设备将不会再传递这个包而是直接将他抛弃,并发送一个通知给包的源地址,说这个包已死。

  其实TTL值这个东西本身并代表不了什么,对于使用者来说,关心的问题应该是包是否到达了目的地而不是经过了几个节点后到达。但是TTL值还是可以得到有意思的信息的。

  每个操作系统对TTL值得定义都不同,这个值甚至可以通过修改某些系统的网络参数来修改,例如Win2000默认为128,通过注册表也可以修改。而Linux大多定义为64。不过一般来说,很少有人会去修改自己机器的这个值的,这就给了我们机会可以通过ping的回显TTL来大体判断一台机器是什么操作系统。

  以我公司2台机器为例

  看如下命令

  D:Documents and Settingshx>ping 61.152.93.131

  Pinging 61.152.93.131 with 32 bytes of data:

  Reply from 61.152.93.131: bytes=32 time=21ms TTL=118

  Reply from 61.152.93.131: bytes=32 time=19ms TTL=118

  Reply from 61.152.93.131: bytes=32 time=18ms TTL=118

  Reply from 61.152.93.131: bytes=32 time=22ms TTL=118

  Ping statistics for 61.152.93.131:

  Packets: Sent = 4, Received = 4, Lost = 0 (0% loss

  Approximate round trip times in milli-seconds:

  Minimum = 18ms, Maximum = 22ms, Average = 20ms

  D:Documents and Settingshx>ping 61.152.104.40

  Pinging 61.152.104.40 with 32 bytes of data:

  Reply from 61.152.104.40: bytes=32 time=28ms TTL=54

  Reply from 61.152.104.40: bytes=32 time=18ms TTL=54

  Reply from 61.152.104.40: bytes=32 time=18ms TTL=54

  Reply from 61.152.104.40: bytes=32 time=13ms TTL=54

  Ping statistics for 61.152.104.40:

  Packets: Sent = 4, Received = 4, Lost = 0 (0% loss

  Approximate round trip times in milli-seconds:

  Minimum = 13ms, Maximum = 28ms, Average = 19ms

  第一台TTL为118,则基本可以判断这是一台Windows机器,从我的机器到这台机器经过了10个节点,因为128-118=10。而第二台应该是台Linux,理由一样64-54=10。

  了解了上面的东西,可能有人会有一些疑问,例如以下:

  1,不是说包可能走很多路径吗,为什么我看到的4个包TTL都是一样的,没有出现不同?

  这是由于包经过的路径是经过了一些最优选择算法来定下来的,在网络拓扑稳定一段时间后,包的路由路径也会相对稳定在一个最短路径上。具体怎么算出来的要去研究路由算法了,不在讨论之列。

  2,对于上面例子第二台机器,为什么不认为它是经过了74个节点的Windows机器?因为128-74=54。

  对于这个问题,我们要引入另外一个很好的ICMP协议工具。不过首先要声明的是,一个包经过74个节点这个有些恐怖,这样的路径还是不用为好。

  要介绍的这个工具是tracert(*nix下为traceroute),让我们来看对上面的第二台机器用这个命令的结果

  D:Documents and Settingshx>tracert 61.152.104.40

  Tracing route to 61.152.104.40 over a maximum of 30 hops

  1 13 ms 16 ms 9 ms 10.120.32.1

  2 9 ms 9 ms 11 ms 219.233.244.105

3 12 ms 10 ms 10 ms 219.233.238.173

  4 15 ms 15 ms 17 ms 219.233.238.13

  5 14 ms 19 ms 19 ms 202.96.222.73

  6 14 ms 17 ms 13 ms 202.96.222.121

  7 14 ms 15 ms 14 ms 61.152.81.86

  8 15 ms 14 ms 13 ms 61.152.87.162

  9 16 ms 16 ms 28 ms 61.152.99.26

  10 12 ms 13 ms 18 ms 61.152.99.94

  11 14 ms 18 ms 16 ms 61.152.104.40

  Trace complete.

  从这个命令的结果能够看到从我的机器到服务器所走的路由,确实是11个节点(上面说10个好像是我犯了忘了算0的错误了,应该是64-54+1,嘿嘿),而不是128的TTL经过了70多个节点。

  既然已经说到这里了,不妨顺便说说关于这两个ICMP命令的高级一点的东西。

  首先是ping命令,其实ping有这样一个参数,可以无视操作系统默认TTL值而使用自己定义的值来发送ICMP Request包。

  例如还是用那台Linux机器,用以下命令:

  D:Documents and Settingshx>ping 61.152.104.40 -i 11

  Pinging 61.152.104.40 with 32 bytes of data:

  Reply from 61.152.104.40: bytes=32 time=10ms TTL=54

  Reply from 61.152.104.40: bytes=32 time=13ms TTL=54

  Reply from 61.152.104.40: bytes=32 time=10ms TTL=54

  Reply from 61.152.104.40: bytes=32 time=13ms TTL=54

  Ping statistics for 61.152.104.40:

  Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

  Approximate round trip times in milli-seconds:

  Minimum = 10ms, Maximum = 13ms, Average = 11ms

  D:Documents and Settingshx>

  这个命令我们定义了发包的TTL为11,而前面我们知道,我到这台服务器是要经过11个节点的,所以这个输出和以前没什么不同。现在再用这个试试看:

  D:Documents and Settingshx>ping 61.152.104.40 -i 10

  Pinging 61.152.104.40 with 32 bytes of data:

  Reply from 61.152.99.94: TTL expired in transit.

  Reply from 61.152.99.94: TTL expired in transit.

  Reply from 61.152.99.94: TTL expired in transit.

  Reply from 61.152.99.94: TTL expired in transit.

  Ping statistics for 61.152.104.40:

  Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

  Approximate round trip times in milli-seconds:

  Minimum = 0ms, Maximum = 0ms, Average = 0ms

  D:Documents and Settingshx>

  可以看到,结果不一样了,我定义了TTL为10来发包,结果是TTL expired in transit.就是说在到达服务器之前这个包的生命周期就结束了。注意看这句话前面的ip,这个ip恰好是我们前面tracert结果到服务器之前的最后1个ip,包的TTL就是在这里减少到0了,根据我们前面的讨论,当TTL减为0时设备会丢弃包并发送一个TTL过期的ICMP反馈给源地址,这里的结果就是最好的证明。

  通过这里再次又证明了从我机器到服务器是经过了11个节点而不是70多个,呵呵。

  最后再巩固一下知识,有人可能觉得tracer这个命令很神奇,可以发现一个包所经过的路由路径。其实这个命令的原理就在我们上面的讨论中。

  想象一下,如果我给目的服务器发送一个TTL为1的包,结果会怎样?

  根据前面的讨论,在包港出发的第一个节点,TTL就会减少为0,这时这个节点就会回应TTL失效的反馈,这个回应包含了设备本身的ip地址,这样我们就得到了路由路径的第一个节点的地址。

  因此,我们继续发送TTL=2的包,也就受到第二个节点的TTL失效回应

  依次类推,我们一个一个的发现,当最终返回的结果不是TTL失效而是ICMP Response的时候,我们的tracert也就结束了,就是这么简单。

  顺便补一句ping命令还有个-n的参数指定要发包的数量,指定了这个数字就会按照你的要求来发包了而不是默认的4个包。如果使用-t参数的话,命令会一直发包直到你强行中止它。

  三、request timedout

a.对方已关机,或者网络上根本没有这个地址:比如在上图中主机A中PING192.168.0.7,或者主机B关机了,在主机A中PING192.168.0.5都会得到超时的信息。

  b.对方与自己不在同一网段内,通过路由也无法找到对方,但有时对方确实是存在的,当然不存在也是返回超时的信息。

  c.对方确实存在,但设置了ICMP数据包过滤(比如防火墙设置)

  怎样知道对方是存在,还是不存在呢,可以用带参数-a的Ping命令探测对方,如果能得到对方的NETBIOS名称,则说明对方是存在的,是有防火墙设置,如果得不到,多半是对方不存在或关机,或不在同一网段内。

  d.错误设置IP地址

  正常情况下,一台主机应该有一个网卡,一个IP地址,或多个网卡,多个IP地址(这些地址一定要处于不同的IP子网)。但如果一台电脑的“拨号网络适配器”(相当于一块软网卡)的TCP/IP设置中,设置了一个与网卡IP地址处于同一子网的IP地址,这样,在IP层协议看来,这台主机就有两个不同的接口处于同一网段内。当从这台主机Ping其他的机器时,会存在这样的问题:

  A.主机不知道将数据包发到哪个网络接口,因为有两个网络接口都连接在同一网段。

  B.主机不知道用哪个地址作为数据包的源地址。因此,从这台主机去Ping其他机器,IP层协议会无法处理,超时后,Ping就会给出一个“超时无应答”的错误信息提示。但从其他主机Ping这台主机时,请求包从特定的网卡来,ICMP只须简单地将目的、源地址互换,并更改一些标志即可,ICMP应答包能顺利发出,其他主机也就能成功Ping通这台机器了。

  2、说明晚上8、9的时候网络比较拥挤,就是比较忙,上网的人多,所以线路不通畅,容易丢包,比如你这时候在线看电影就比较卡。

  补充回答:

  基本上可以判断不是你的网络问题,晚上8-12点左右是网络频繁的时候,这是正常的。就像你开车在早上8点钟的路上和晚上12点钟的路上,肯定是晚上12点开得比较爽,因为没什么车和人。那也不能说早上8点人多车多,你开不快是你车的问题吧。