且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

网站不能访问的解决思路

更新时间:2022-10-04 15:05:36

网站不能访问,首先要分为两种情况,服务器端不能访问和客户端不能访问。

先说一说客户端不能访问网站的故障排除思路。咱们可以先从网络的角度入手。

从一台机器访问另一台机器,首先是要通过本地主机的浏览器生成数据包,经过在传输层封装TCP头和目标端口地址,通过Internet(本地的DNS服务器)中的DNS服务器将网站的域名(如www.igenzong.com)解析为IP地址,(其过程是客户端提出解析请求时,首先将请求传送至DNS客户端服务,以便使用本地缓存信息进行解析。如果可以解析所要查询的名称,则DNS客户服务应答该查询,该请求处理过程结束;如果此查询与本机的缓存中的项目不匹配,则解析过程将继续进行,客户端将查询DNS服务器来解析名称。DNS服务器接收到查询请求时,首先检查它能否在服务器的本地配置区域中获取资源记录信息做出应答,如果查询的名称与本地区域信息中的相应资源记录匹配,则使用该信息来解析查询的名称,服务器做出应答,则此次查询完成。如果区域信息中没有查询的名称,则服务器检查它能否通过来自先前查询的本地缓存信息来解析该名称。如果从中发现了匹配的信息,则服务器使用该信息应答查询,此次查询完成。如果无论从缓存还是从区域信息,查询的名称在首选服务器中都未发现匹配的应答,那么查询过程可继续进行,使用递归(如要递归查询www.example.com的地址,首选DNS服务器通过分析完全合格的域名,向顶层域com查询,而com的DNS服务器与example.com服务器联系以获得更进一步的地址。这样循环查询直到获得所需要的结果,并一级级向上返回查询结果,最终完成查询工作。)或者迭代(如要迭代查询www.example.com的地址,首先DNS服务器在本地查询不到客户端请求的信息时,就会以DNS客户端的身份向其他配置的DNS服务器继续进行查询,以便解析该名称。在大多数情况下,可能会将搜索一直扩展到Internet上的根域服务器,但根域服务器并不会对该请求进行完整的应答,它只会返回example.com服务器的IP地址,这时DNS服务就根据该信息向example.com服务器查询,由example.com服务器完成对www.example.com域名的解析后,再将结果返回DNS服务器,DNS服务器再将结果返回给客户端。)的方式来完全解析名称。如果首选DNS最终查询失败,则会尝试使用备用DNS服务器进行查询。详情请参考http://technet.microsoft.com/zh-cn/library/cc775637.aspx),通过TCP/IP协议生成相应的数据包(数据包中包含了目的地址、源地址、下一跳路由地址请求的数据等信息),通过操作系统自带的防火墙,在通过网络向在远端的服务器建立连接并发出页面请求,这个请求通过网络传输到远端服务器的网络接口,经过计算机的计算和处理通过服务器监听(Listen)的端口(Port)(一般是80.8080.8000.8888.10000等,默认是80)传送给服务器端的Web服务器(如IIS、Apache,Nginx等)到达TIP/IP的应用层,经过处理后,再由Web服务器把页面按照相同的顺序通过建立的TCP连接把请求的页面传输客户端端。这样就完成了一次页面的访问过程。

这里面涉及到了很多设备和软件,每一个设备和软件都有可能成为页面无法访问的元凶。如有可能是Web浏览器的设置问题,客户端计算机感染了病毒,防火墙配置不正确,TCP/IP配置不正确导致的网络不通,网络上存在故障,近服务器端的防火墙对客户端存在限制,Web服务器存在故障,服务器本身受到病毒感染,网络或者主机遭受恶意攻击等原因。

那么怎么一一排除这些故障呢?

首先,排除服务器端故障,如何排除呢?用另一台和客户端在同一子网内的计算机(只是IP配置不同其他的(包括DNS设置)都相同)访问该网站,看看是否能访问。如果不能访问则通知Web服务器的管理员或其他人员。如果能访问,则就不是服务器端的问题,也不是局域网出口的路由器或者防火墙的限制。

再从客户端入手,看能否访问其他的网站,如可以访问比较有名气的不会出错的网站(如www.51cto.com),如果能访问,则排除无网络访问的可能。

再使用ping命令看看能不能ping通要访问网站的域名,如果能ping成功(包括域名解析成功和从客户端到服务器端的网络连通成功),则排除系统防火墙的原因。

如果不能ping通,再一分为二,有两种情况。第一种情况域名没有解析成功,则检查或更改DNS服务器地址的配置,直到能解析域名(还可以使用系统自带的nslookup命令检测DNS是否正确),如果是ping(因为我前面指定其他的计算机可以通过域名服务器访问,所以我这里使用了白色字体,但也不完全一定,因为可能是机器本身具有问题,如病毒感染或者其他原因)提示超时或者目标主机不可到达则检查防火墙的配置,看一下是否对此域名或IP地址进行了限制。可以关闭防火墙以排除是否是防火墙的原因。

剩下的就是Web浏览器本身的问题了,可以这样简单检测是不是浏览器的问题,采用替换的方法,换一个浏览器试一下看看能不能访问(当然这一步可能在最初就被试过了),但也不排除有这种情况,比如都是使用的是IE的内核,修改同一个安全配置都会对浏览器造成影响。

如果依然不能排除,则将换一台计算机替换刚才的客户端,排除整个客户端存在未知故障的可能性。

如果换了一台(***是两台)计算机还不能访问,则可能是有病毒或者被攻击,建议先关闭计算机等待几分钟再连接,并执行病毒扫描。

最后,问题终于会被解决的。

 

刚刚写完,还没有认真考虑和修正错误(错误肯定有),希望大家提出意见和指正错误!如果感兴趣也不妨一起思考思考,共同进步!






本文转自 urey_pp 51CTO博客,原文链接:http://blog.51cto.com/dgd2010/950626,如需转载请自行联系原作者