最近忙着写作业和面试,还有一些休息。突然想到这个问题,这个问题可能前端问的会多一点,但我个人还是很好奇这个过程的,本科的时候应该学过,现在重温一下。

首先是URL解析

内容是否符合URL规范

如果符合,浏览器判断URL是否完整,不完整的话,浏览器会对域进行猜测,补全前缀或者后缀

不符合的话,将输入内容作为搜索条件进行搜索

其次,DNS解析。

说白了就是通过你输入的字符串,中间不是有.,然后split一下,到对应的DNS服务器里去找相应的IP。但是这个过程是从右向左的,

他会先查询浏览器缓存和本地hosts文件,路由器缓存,IPS服务器缓存,然后是DNS高速缓存,这种思维就跟你用Redis存数据很像,比如说一些热点数据经常被访问的,就放在缓存中,就会提升效率。

根服务器,顶级域服务器,以此类推,访问一个服务器,返回一个对应的域名服务器地址,直到最后一个返回完整的ip

事实上真正的url后面会有一个.,到根域名服务器上进行查找

 

DNS优化:

负载均衡

DNS返回的IP地址并不是位于同一台机器上的,利用DNS负载均衡(CDN),会返回一个跟用户最接近的点的IP地址给客户,CDN节点的服务器负责响应用户请求,提供所需内容

 

然后,建立TCP连接

浏览器获取到服务器的IP地址后,浏览器会用一个随机端口向服务器80端口发起TCP连接请求。(HTTPS为443),到达服务端后,通过三次握手建立TCP连接。

 

(TLS握手协议HTTPS)位于HTTP与TCP之间

    • 客户端向服务器发起HTTPS连接请求。
    • 服务器把公钥证书发送给客户端。
    • 客户端使用服务器的公钥证书验证服务器的身份,并生成一个用于加密通信的对称密钥。
    • 客户端使用服务器的公钥证书对对称密钥进行加密,然后发送给服务器。
    • 服务器使用自己的私钥对客户端发送过来的加密的对称密钥进行解密。
    • 服务器和客户端使用对称密钥进行加密通信

建立连接后,浏览器发送一个初始的HTTP GET请求,服务器收到请求后回一个HTTP响应报文,内容包括相关响应头和HTML正文

 

浏览器解析并绘制

TCP四次挥手断开连接(正常默认开启持久连接)

 

posted on 2023-04-19 23:41  JohnWangzx  阅读(50)  评论(0编辑  收藏  举报