首页 > 其他 > 详细

输入网址背后发生的故事

时间:2014-03-11 05:13:55      阅读:538      评论:0      收藏:0      [点我收藏+]

本篇体验当在浏览器地址栏中输入网址后发生的事情。参考了韩星Igor Ostrovsky的博文。

一切从输入网址/域名开始:

bubuko.com,布布扣

 

  1、浏览器查找域名对应的IP地址

实际上是查找DNS(Domain Name System的缩写,存储域名和IP地址映射的分布式数据库)的过程。查找DNS缓存的顺序为:

1、在浏览器中查找DNS缓存:不同的浏览器缓存DNS的时间是不一样的,一般在1-30分钟时间。比如FireFox的默认DNS缓存时间是1分钟。
2、在系统中查找DNS缓存。
3、在路由器中查找DNS缓存。
4、在ISP(网路提供商)的DNS缓存服务器中查找。
5、如果以上都没有,ISP的DNS服务器开车从root域名服务器开始递归,即从顶级域名开始,再到二级域名、三级域名。

如图:

bubuko.com,布布扣

另外:
● 一个域名可能对应多个不同的IP,这个是由"Round-robin DNS"解决方案提供实现。
● 针对来自不同客户端的IP请求,"负载均衡器Load-balancer"可以把不同的IP请求动态分配到不到的服务器。
● 针对来自不同区域客户端的IP请求,"Geographic DNS"把一个域名与不同的IP映射起来,根据域名的区域,返回对应的IP。

 

  2、浏览器发送HTTP请求到服务器

bubuko.com,布布扣

User-Agent:描述了浏览器信息。
Accept:能接收的返回类型。
Accept-Encoding:能接收的返回的编码类型。
Accept-Language:能接收的返回语言。
Connection: 要求服务端TCP打开以保持通讯。
Cookie:针对该域名的cookie,以键值对存放,包括登录用户名、服务器分配给客户端的号码等。

请求的类型:
1、GET请求,把请求参数放在URL地址中:http://baidu.com/some.aspx?id=1。
2、POST请求,用于提交表单数据,参数放在请求主体中。

 

  3、服务器返回永久重定向

在浏览器地址栏输入:http://facebook.com/

bubuko.com,布布扣

可见:
请求的是:http://facebook.com/
返回的是:http://www.facebook.com/
Status Code是:301 Moved Permanently

 

重定向后再请求,返回Status Code:200:

bubuko.com,布布扣


为什么需要重定向?
处于对搜索引擎和缓存友好的考虑。

 

有趣的是:
当输入"http://baidu.com/"时
Request URL自动变成了:http://www.baidu.com, 也没有出现重定向。

bubuko.com,布布扣

 

  4、服务器处理请求

服务器软件(比如IIS,Apache)工作原理:
→接收HTTP请求。
→搜寻哪个handler处理请求。

什么是handler?
读取请求中的一切信息,比如参数、缓存,再转换成HTML相应。 

5、服务器返回HTML响应

6、浏览器渲染HTML

7、浏览器发送Ajax请求

发送GET或POST请求到服务器,返回jsong, string, html, xml等。

输入网址背后发生的故事,布布扣,bubuko.com

输入网址背后发生的故事

原文:http://www.cnblogs.com/darrenji/p/3591510.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!