从输入URL到浏览器显示页面的流程

Posted 忘忘碎斌bin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从输入URL到浏览器显示页面的流程相关的知识,希望对你有一定的参考价值。

从输入URL到浏览器显示页面的流程

一、URL解析

1、地址解析:浏览器会判断输入的URL是否合法,输入的是URL地址还是关键字,并且根据输入的内容进行字符串编码。

2、其他操作:大部分浏览器会对强制使用HTTPS协议,保证传输的安全性。

3、缓存查询

二、DNS解析

DNS解析:根据域名查找到对应服务器的IP地址

1、查询缓存:浏览器、操作系统、路由器都具有缓存,统称为 DNS高速缓存。若缓存中有记录,则不需再到根域名服务器上去查找。

2、递归解析:在地址栏输入cms.coderbin.link,若在缓存中没有对应记录,则到根域名服务器上查找,没有再到link顶级域名服务器上查找,没有再到coderbin.link服务器上查找,直到找到对应IP地址,并在本地进行缓存。

3、DNS负载均衡:若存在多个服务器来支持某个服务,DNS会根据每台机器此时的负载量,机器离用户的距离,将最合适的服务器的IP给用户。

图解

三、建立TCP连接

三次握手

为什么不是两次握手?

为了避免服务器建立无用的连接。客户端发出一个连接请求,因为网络原因,这个请求还没有到达服务器,客户端以为这个请求已经丢失了,就再发送了一个连接请求。因为网络突然有变好了,第二次发送的请求被服务器收到,并返回了对应的响应信息,接着数据传送完毕,释放掉连接。此时第一个请求也到达了服务器,并且返回响应信息,建立连接,但此时客户端却没有再理会,没有数据传输,浪费掉了服务器的资源。

为什么不是四次握手?

因为通讯是不能保证是100%的,客户端和服务器都不确定消息是否完完全全被接收到了,增加握手的次数,并不能显著提高可靠性了,只能无线趋近于100%。

四、发送HTTP请求

浏览器在和服务器建立好连接后,就可以发送HTTP请求,请求资源了。服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;

五、释放TCP连接

为什么建立连接是三次握手,关闭连接确是四次挥手

  • 建立连接的时候, 服务器在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端
  • 关闭连接时,服务器收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,而自己也未必全部数据都发送给对方了,所以己方可以立即关闭,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送,从而导致多了一次

六、浏览器渲染页面

浏览器的工作原理

以上是关于从输入URL到浏览器显示页面的流程的主要内容,如果未能解决你的问题,请参考以下文章

从输入URL到浏览器显示页面发生了啥?

从浏览器输入URL到页面加载的具体流程(http协议)

浏览器从输入URL到渲染完页面的整个过程

从输入URL到页面显示发生了什么

从输入 URL 到页面加载显示完成的过程

面试题系列---一个页面从输入URL到页面加载显示完成,这个过程都发生什么?