代码改变世界

对于一个URL所想到浏览器与Web服务器通信的一些细节

2008-11-03 13:44  GUO Xingwang  阅读(678)  评论(1编辑  收藏  举报

     当你在浏览器中点击一个超链接或者直接在浏览器的地址栏中输入一个URL地址并点击“Go”时,
你是否曾经想过浏览器乃至Web服务器的后台究竟发生了什么。下面这个总结您可能很容易理解,但是我相信很少有人会
主动的注意到它。

URL简单说明:

统一资源定位符(Uniform Resource Locator, URL)是用于完整地描述Internet上网页和其他资源的地址的一种标识方法。URL的一般格式为(带方括号[]的为可选项):
  protocol://hostname[:port]/path /[;parameters][?query]#fragment

下面从一个简单的URL看起,例如:
  http://www.cnblogs.com/thriving-country/default.aspx?name=tom&age=20#resume

这个URL包含的信息非常的丰富:

协议:http
主机:http://www.cnblogs.com/(要通过DNS转换成IP地址)
端口:80
路径:thriving-country/default.aspx
参数name:tom
参数age:20
fragment(页面上的标识):resume

过程分析:

     首先,http这个数据要求浏览器使用http协议封装请求。所以http这个信息是提供给客户端浏览器使用的。
     其次,当请求发出时Ip地址(主机名)告诉网络设备(主要是路由器)这个请求的目标地址。所以IP地址这个信息是提供给网络设备使用的。
     再次,当请求被路由到了目标主机时,该请求又被监听80端口的程序所捕获。所以80是提供给服务器使用的,就是目标主机。
     最后,剩余的其它部分信息,由这个程序来处理,并作出相应。所以其余信息是提供给服务器端的某个正在运行着的并监听80端口的程序。

     这个过程我们很熟悉,但是很少会有人留意下面的总结

总结:
http-->被客户端浏览器需要获得
http://www.cnblogs.com/(确切的说应该是通过DNS解析以后的IP)-->被网络设备需要获得
80-->被服务器(目标主机)需要获得
其余-->被服务器中某个正在运行的并监听80端口的程序获得。

     温故而知新,做一个有心的人!