详解HTTP访问web server的过程之一---- 最基本的步骤

STEP 1:  从本地连接到你的远程的web server的过程   

1.1)域名解析的过程      

 Web 的基本运作方式---- 从在浏览器中输入域名到用户看到网页内容. 首先,客户端(也就是你本地的计算机)输入域名,提出域名解析的请求--->它会先发送请求给本地的域名解析服务器--->本地的域名解析服务器先查询它积累的缓存, 如果它这里有这个域名的缓存信息,则直接将缓存内容返回给提出请求的客户端。如果本地的缓存中没有记录,则本地域名服务器会将请求再发送给根域名服务器,由根域名服务器告诉它一个所查询域(根的子域)的主域名服务器的地址,就是叫本地域名服务器去问它,这时本地服务器就会给这个主域名服务器去发送请求。主域名服务器接受请求之后,也会先查询一下自己有没有关于这个域名的缓存, 如果有,直接将内容发给这个本地域名服务器。如果这个主域名服务器也没有这个域名的缓存,则会再给这个本地域名服务器一个下级的域名服务器的地址(主域名服务器的下级),就这样一直从上到下的查询, 最后获得这个域名的正确的记录,本地域名服务器会保留这个记录作为缓存,并且给本地客户端发关于这个域名的查询结果。关于域名解析的过程, 后面会写文章详细解释.下面介绍一个典型的例子: 

当客户访问www.baidu.com, 假如他本地的DNS 服务器是dns.company.com ,一个根域名服务器是NS.INTER.NET(关于根域名服务器,应该是这个域名所绑定的网SITE所在的server ,要再查询),所要访问的网站的域名服务器是dns.baidu.com, 那么域名解析的过程如下:

(1) 客户端发出请求解析域名www.baidu.com的报文(信息/请求), 本地的域名服务器接受到这个请求,查询它的缓存, 如果有,直接就给客户端发回去。假设本地域名服务器dns.company.com 就会向NS.INTER.NET发送解析www.baidu.com的这个域名的请求。

  (2)  根域名服务器收到请求后查询本地记录得到结果:baidu.comNS dns.baidu.com(表示baidu.com域中的DNS 服务器为:dns.baidu.com),同时会给出dns.baidu.com的地址,本地域名服务器得到这个根域名服务器返回的消息之后,又会向dns.baidu.com发出解析域名的请求。

(3)dns.baidu.com收到请求之后,会查询本地的记录,找到这样一条记录:www.baidu.com A 211.120.3.12 , 这说明baidu.com域中的域名服务器dns.baidu.com的Web server IP address为211.120.3.12, 并将结果返回给本地域名服务器:dns.company.com. 它会将返回的结果保存到本地缓存并且把结果告知客户端。

以上是一次比较顺利的域名解析过程。

注意:  当您去访问一个不带www的域名的时候, 如果Web server 的返回码是200, 那么显示连接正常, 可以通信了. 返回码是301, 则显示这个域名做过301重定向,   怎么查看一个网站是否做过301呢, 那么通过站长工具--->其他工具--->http状态查询.  

域名能够正常解析是能去访问到的一个必要条件,首先域名能正常解析,是说明浏览器通过这个域名能去找到相应的web server IP(这个域名的A记录),至于你能不能顺利的访问,那还有一系列的问题:        

有效的检测从您本地到web server是否通畅的网络的命令 , 这也是能否访问一个站点的必要条件.       

Ping 命令作为一个有效检测从您的本地电脑到你的域名的A记录指向的web server的连接是否通畅的工具,这个ping 就和DNS服务器有密切关系了,他也是要通过DNS解析这一个环节去找到域名的A记录,所以如果域名的解析不正常(99.99%是域名的状态不正常,0.01%是DNS服务器出问题),那你也是不能去ping到结果的。

这就是从你在浏览器输入域名到---》连接上你的web server 的过程 

怎样知道域名是否被正常解析,ping命令。能ping到它的server IP, 说明是被正常解析的,那它具体是由哪个DNS服务器来解析的,你也可以通过nslookup 这个命令来查询,这样你可以知道是哪个DNS服务器给它做的解析,又解析到哪个IP。如果修改域名的DNS服务器,这就会导致你直接ping不通或者在两地ping的结果不一样,换DNS服务器需要1-3天。如果修改了域名的A记录或者MX记录,也需要1-24小时来更新,这种情况会造成在两个网络去ping域名,但是ping出来的记录不一致的情况,这是因为各地的网络更新速度不一样。一般,更改记录还是比较快的。

关于更改DNS服务器或者更改DNS记录之后会出现的一些问题:

1>更改DNS服务器:一般在刚更改的24-72小时里面, 使用nslookup是查不到的, 在Whois等网站查到的结果也不是实时的, 这段时期只能等待;    

2>更改DNS记录:快则一个小时, 慢则一两天就能生效并传播完成; 

在自己的本地需要注意的问题是:本地电脑和本地的DNS服务器都会有缓存,你看到的不一定100%是最真实的信息,那自己就需要去清除自己浏览器的缓存。   

 

Step 2 连上你的web server 之后, IIS 请求的过程    

  2.1)IIS的运作及网站访问过程中的一些常见错误  

解析完成之后,你的浏览器就直接去访问你的web 服务器,这个就是您放网站文件的地方。要知道您的网站在我们服务器里面对应的一条IIS 记录,是要通过这个IIS记录再去找到您的网站的。IIS记录在哪里呢?它在我们服务器里面的一个程序应用池里面,一条IIS记录只能放到一个程序应用池,您买了一个空间的时候,hosting 的系统就已经给你创建了一条IIS记录,而它会被放在哪一个程序应用池,这一半取决于你,一半取决于系统。首先,在您选择您的site type的时候,就为它选择了程序应用池的类型,这样系统再去帮您把IIS记录丢进去。找到这条IIS记录之后,它被您本地电脑通过浏览器发送的访问请求触发,那在程序应用池里面的IIS就会开始工作,那如果说应用池的环境(site type)的设置或者应用池不正常。没办让IIS记录去正常的去联系到你网站的文件。下面是IIS 级别的错误:       

  2.2)这就是为什么有时候你访问自己网站的时候会出现以下错误;

  HTTP Error 500.23 - Internal Server Error
 An ASP.NET setting has been detected that does not apply in Integrated managed pipeline mode   

这种提示是说,您的应用程序在集成模式的程序应用池里面无法正常的运行,那你就可以去把您网站切换到经典模式的程序应用池去看一下是否能正常的工作。 

   2.2.1)当出现这样的错误提示:

HTTP Error 503. The service is unavailable.

这是因为程序应用池异常关闭引起的,所以客户需要去联系hosting,那我们这边就要去帮他查看一下他的网站所在的程序应用池是不是正常工作的。 AP里面,可看到各个site的情况。 

   2.2.2)客户的账户到期了,我们不再让他去访问到网站,所以请求IIS 就不成功。这时会跳转到其他hosting预设的页面。 

   2.2.3当一个网站错误的选择了asp.net 2.0/3.5的版本,但是实际这个网站需要asp.net4.0/4.5的时候,就会得到以下错误

请注意红色字体部分; 

Line 19:     <compilation debug="true" batch="false" targetFramework="4.0">

当本地的浏览器通过HTTP 协议发送请求去给IIS 的时候,如果请求不成功,出现IIS 级别的错误,那么系统(协议的构造)会根据IIS 返回来的错误代码去告诉浏览器应该显示哪一个错误界面,如上。这时候产生的错误跟网站文件代码等是没有关系的。

2.3) 您自己可以在网站的配置文件里面定义当访问出现错误的时候, 是不是显示最真实的错误信息, 这是基于IIS请求成功之后, 已经开始在读取您的网站文件的时候. 在error子节点设置. 如果您需要把客户带到其他的页面, 您需要在这个error子节点设置.   

关于cp 里面的两个选项:  

       1> hosting  account---IIS manager --->Asp .net application manager --->detail error ,   这个选项是针对asp.net 的网站程序,客户可以在这里 turn on 或者 turn off ,那么造成的影响就是在客户的网站根目录文件夹里面会相应的去修改你的web config 文件,  如果这里设置成on 那么在web config文件里面相应的 customer error mode =off , 也就是去将你自己设置的错误页面功能暂时的关闭,接下来显示最真实的关于你网站代码级别的错误信息;如果turn off ,那在 web config 文件里面显示的是你自己设置的错误页面信息。 如果你自己没有web config文件,那么你在这里设置之后,系统会去创建web config 文件。 遇到代码级别的错误,我们处理时叫客户去web config 文件里面将这个custom error  mode=off 也可以直接在这个 asp.net application manager 这里去设置。 所以这里config文件里面说的 custom error 和我们的控制面板的 custom error 不是一个层次的概念。 

综上, web config 文件是在客户自己的网站里面的设置,要IIS 请求成功之后才会起作用的,所以这一个设置跟下面2) 里的设置不是一个层次的,没有任何的冲突。 

注意: web web 的控制面板没有这样的选项,只能让客户去web config 文件里面进行设置。 

        2> Hosting account --->IIS manager(Remote IIS Manager )--->custom errors, 这里设置的是IIS 级别的错误。 

当请求IIS 出现错误的时候,系统会返回一个IIS的错误代码,这样浏览器就会被IIS 引导定向到相应的错误界面,这个过程中遵守的应该是HTTP 协议。那如果说客户在这里进行了错误页面设置,是希望当出现IIS 请求错误的时候能定向到其他的自定义的界面而不是显示原本IIS 默认定向是那个错误页面,这样能让浏览者去看到你希望他看到的信息,俗称友好界面。     

        3> IIS 请求(触发)成功之后,这个IIS记录就会根据其所对应的的网站根目录的网站代码,以及这个IIS记录上的一些设置以及程序应用池对网站脚本进行编译,从而显示出相应的网站内容。这个阶段就是结合你的网站代码里面的所有内容和设置及应用池去给浏览器传递信息,告诉浏览器应该去显示什么样的内容。那这就是IIS 请求成功之后去打开网站文件的过程,那这样之后产生的错误就是网站文件和代码级别的错误了:   

IIS 请求成功之后,出现的问题多半是 1)客户的网站程序在我们的应用池里面不能很好地运行;2)客户的网站代码有问题; 

              3.1>>如果这个网站的管理者设置了default page,则显示这个页面, 如果没有设置default page, 浏览器就不知道应该显示什么界面,就会出现403访问错误), 浏览器会把Web server 返回的信息翻译成用户看得懂的页面信息。 

比如当您的网站没有去设置默认的首页,浏览器就不知道该显示哪个页面,这时就会出现下面的错误:          

Error Summary 
HTTP Error 403.14 - Forbidden
The Web server is configured to not list the contents of this directory.
Detailed Error Information  
Module     DirectoryListingModule
Notification    ExecuteRequestHandler
Handler     StaticFile
Error Code     0x00000000
Requested URL     http://joysmarter2staff-001-site4.smarterasp.net:80/

Physical Path     h:\root\home\joysmarter2staff-001\www\site4\config
Logon Method     Anonymous
Logon User     Anonymous
请注意红色字体部分,说明访问这个URL时候请求的是config这个文件夹里面的文件,但是由于config文件夹里面没有默认首页列表里面的文件,那么浏览器就不知道应该显示什么样的内容,就会直接显示403错误。那怎么来处理这个问题呢?

3.1.1>>>是否已经将首页文件上传? 将首页文件放到网站根目录文件夹里面,再去他的hosting account--->IIS manager--->default page, 将您作为首页的文件名添加到列表的第一行,submit。我们需要知道哪些文件可能会是首页文件,如果一无所知,那我们必须去看看网站文件夹里面哪个会是首页,这可以通过更改访问的文件去查看到底哪一个是首页文件。    

              3.2>> 设置了custom errors 所以显示的很可能不是真实的错误信息,首先我们必须知道网站是否自定义了错误页面,如果有,那访问网站出现问题的时候,第一件事就是应该去config 文件里面把custom error mode 设置成 off,这样让网站去显示最真实的错误信息,然后在进行下一步的排查。   


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值