page contents

在网页上点击一个链接后,到底发生了什么,你真的知道吗?

今天我们从技术的角度来说一下,当你在浏览器输入一个网址,如http://www.toutiao.com,按回车之后到底发生了什么? DNS(Domain Name System,域名系统)解析 当我们输入一个URL地址时,浏览...

今天我们从技术的角度来说一下,当你在浏览器输入一个网址,如http://www.toutiao.com,按回车之后到底发生了什么?

DNS(Domain Name System,域名系统)解析

当我们输入一个URL地址时,浏览器需要知道应该去哪台服务器上获取资源。而计算机在互联网中的唯一标识是IP地址,因此需要把我们输入的网址解析成IP地址,进而找到相应的服务器。

那么用一句话概括就是--DNS解析的过程就是寻找哪台机器上有你需要资源的过程。那么我们来看一下解析过程:

1.浏览器缓存:浏览器会保存一段时间内访问过的一些网址的DNS信息(不同浏览器保存时长不等),所以会先检查浏览器缓存中是否有记录,如果有,则直接返回对于的IP地址。

2.系统缓存:如果在浏览器缓存中没有找到相应的记录,浏览器就会查看系统缓存,查看本地的host文件中是否有相应信息。

3.路由器缓存:如果还是没有,则请求会发给路由器(路由器一般也存有DNS信息),在路由器缓存中继续查找。

4.DNS缓存:接下来请求本地的DNS服务器,是由互联网服务提供商(Internet Service Provider 即 ISP)提供。

5.递归搜索:如果以上方式皆找不到,那么ISP的DNS服务器会将请求发向根域名服务器进行递归搜索。

根域名服务器就是面向全球的顶级DNS服务器,共有13台逻辑上的服务器,从A到M命名,真正的实体服务器则有几百台,分布于全球各大洲。

在网页上点击一个链接后,到底发生了什么,你真的知道吗?

TCP(Transmission Control Protocol)连接

通过DNS域名解析之后,浏览器便开始发送请求。那么这时候就需要先构建请求信息,包括以下三部分:

请求的URI协议/版本

请求头(Request Header)

请求正文

HTTP请求在应用层准备好后,浏览器会在传输层发起一条到达服务器的 tcp 连接,这个时候就开始了三次握手的过程。如下图所示:

在网页上点击一个链接后,到底发生了什么,你真的知道吗?

三次握手

这个过程先由客户端尝试建立起通信,而后服务器应答并接受客户端的请求,最后由客户端发出该请求已经被接受的报文。完成三次握手后,客户端与服务器开始传送数据。

浏览器发送HTTP请求

浏览器和服务器建立链接之后,浏览器会发送HTTP请求。HTTP请求包含三部分:请求行、请求头、请求体。

请求行包含“方法URI协议/版本”例如:GET / HTTP/1.1

以上代码中“GET”代表请求方法,“/”表示URI,“HTTP/1.1代表协议和协议的版本。

请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等。请求正文中可以包含客户提交的查询字符串信息,如下图所示:

在网页上点击一个链接后,到底发生了什么,你真的知道吗?

服务器处理HTTP请求并返回响应

接下来,服务器开始接收HTTP请求,并根据请求头信息进行解析。然后生成一个响应头和具体响应内容。

接着服务器会以HTTP的Response对象返回,主要包括状态码,响应头,响应报文三个部分。而响应头告诉了浏览器一些必要的信息,例如重要的Status Code,具体请看下图:

在网页上点击一个链接后,到底发生了什么,你真的知道吗?

浏览器解析响应并渲染页面

浏览器接收到服务器到响应信息后,将下载解析HTML文档,渲染页面。浏览器不用等到完全接收完信息的时候才开始加载,而是一部分一部分的显示,直到显示完全。

具体过程包括:构建DOM树、构建渲染树、定位页面元素、绘制页面元素等。DOM树节点如下图所示:

在网页上点击一个链接后,到底发生了什么,你真的知道吗?

关闭TCP链接

当数据完成请求到返回的过程之后,根据Connection的Keep-Alive属性可以选择是否断开TCP连接.断开连接时,客户端与服务器四次挥手,断开tcp连接。

第一次挥手:客户端想分手,发送消息给服务器;

第二次挥手:服务器通知客户端已经接受到分手请求,但还没做好分手准备;

第三次挥手:服务器已经做好分手准备,通知客户端;

第四次挥手:客户端发送消息给服务器,确定分手,服务器关闭连接。

在网页上点击一个链接后,到底发生了什么,你真的知道吗?

四次挥手

好啦,以上就是全部的步骤了。每一步还可以细细的研究。我这里只是进行了整体介绍,希望对你帮助。

  • 发表于 2020-02-24 17:30
  • 阅读 ( 769 )

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

1135 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1482 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章