从输入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到浏览器显示页面的流程的主要内容,如果未能解决你的问题,请参考以下文章