从URL输入到页面展现发生了什么

Ps:参考文章:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/
以下是个人简化版。

1. 在浏览器中输入一个URL

从URL输入到页面展现发生了什么_第1张图片
1.png

没什么说的。比如在浏览器输入:非死不可.com

2. 浏览器进行域名解析

2.png

也就是浏览器根据域名,查找到网站的IP地址。DNS的查找过程分如下几步:

  • 查找 Browser cache ,即浏览器缓存

浏览器一般会缓存 DNS 一段时间,不同浏览器情况不一样,用户也可通过浏览器设置去查看和修改这一功能。

  • 查找 OS cache ,即系统缓存

系统也有自己的缓存记录,如果在浏览器缓存中没有找到,就会去系统缓存中找。如: windows 系统就是从 host 文件中去查找。

  • 查找 Router cache ,即路由器缓存

同理,路由器也有自己的 DNS 缓存。上述1、2步失败,则到达这一步。

  • 查找 ISP DNS cache ,即网络服务商的 DNS 缓存

上述123都找不到 IP ,则会在网络服务商的 DNS 缓存中查找。

  • Recursive search ,即递归查找

以上方法都不能找到 IP , 就会从根域名服务器开始循环查找,比如 .com 域名服务器。

DNS循环查找的示意图:

从URL输入到页面展现发生了什么_第2张图片
3.png

3. 浏览器向 web 服务器发送一个HTTP请求

4.png
GET http://facebook.com/ HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, [...]
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; [...]
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host: facebook.com
Cookie: datr=1265876274-[...]; locale=en_US; lsd=WW[...]; c_user=2101[...]

不赘述。
(好吧其实是作为菜鸟我还不懂这些。留个坑以后补吧 :-( )

4. 服务器处理请求

5.png

服务器收到请求后进行响应,并回传数据。
作为入门,这一块先不说太多,后续层次不断深入会慢慢了解。(ps:其实是现在我也说不出来。扑街。。。)

5. 服务器开始渲染页面

服务器按照接收到的页面代码,开始一步步渲染绘制网页。


以上,从 URL 到页面的展现,就基本完成了。
不过,这里是一个非常初级,非常简化的流程。更多其中的细节和复杂,在一步步的学习中和大家一起去探索。

_

二男
2017年3月14日 18:33:37

你可能感兴趣的:(从URL输入到页面展现发生了什么)