在浏览器的地址栏中键入URL,敲击回车后经历了什么?

如题,这是一道非常常见的面试题。本文给出一个简单的答案参考。

一、DNS 解析
 
DNS 解析,即域名解析,将对人友好的域名解析成对路由器友好的 IP 地址。

比如,将主机名 www.test.com 解析成其具体的 IP 地址 26.231.117.56

这个解析的过程其实就是对 DNS 缓存的查询,查询的顺序如下

  • 浏览器缓存:浏览器会缓存之前拿到的DNS 2-30分钟时间。
  • 操作系统缓存:检查hosts文件,这个文件保存了一些以前访问过的网站的域名和IP的数据。它就像是一个本地的数据库。如果找到就可以直接获取目标主机的IP地址了。
  • 路由器缓存:路由器有自己的 DNS 缓存。
  • ISP 服务器缓存:去 ISP 服务商 DNS 缓存去查。
  • 根域名服务器缓存
  • 顶级域名服务器缓存:到这还没找到,那你好好看看你输入的 URL 是个什么东西。。。

在上述的 DNS 查询步骤中,在任意的一个位置找到了,就会立马返回,不再继续往下查了。

 
二、建立 TCP 连接
 
浏览器会根据上一步得来的服务器的 IP 地址,以及端口号(HTTP默认端口号 80,你要是不填端口号的话,浏览器会默认你访问的是 80 端口),与服务器建立 TCP 连接(三次握手

 
三、浏览器发送 HTTP 请求
 

浏览器向服务器递交 HTTP 请求报文请求相应的资源,比如网站的一个页面。一般请求方法为 GET.

 
四、服务器接收请求,并响应
 

在服务器收到浏览器发来的 HTTP 请求报文后,会对浏览器做出响应,将 HTTP 响应报文反馈给浏览器,浏览器请求的网站页面的 HTML 文档就存储在该响应报文的响应正文里。

 
五、浏览器解析 HTML 文档
 

在浏览器接收到服务器的响应报文后,会将响应正文中的 HTML 文档提取出来,之后对其进行解析,渲染等一系列操作。最终将结果呈现给用户。

 
六、释放 TCP 连接
 

上述这六个步骤就是对一个页面请求过程的大致梳理。

 
补充
 
如果你想要更详细更深入的了解这个过程,可以看一下《计算机网络:自顶向下方法》第六版中的第五章第七小节:Web 页面请求的历程。这部分内容从你电脑还未接入互联网开始讲起。。。。。。

你可能感兴趣的:(计算机网络)