从点击一个链接到浏览器显示页面,这个过程中发生了什么?

这个过程可以分为六步

  • 浏览器通过域名找出其IP地址(DNS解析)
  • 浏览器和服务器建立连接(TCP/TP三次握手)
  • 浏览器向服务器发送HTTP请求
  • 服务器接受到请求并返回HTTP响应
  • 浏览器解析渲染页面
  • 断开连接(四次挥手)

(HTML/CSS/JS/JSON都是HTTP中的第四部分,都是基于HTTP协议来传输的,而HTTP协议基于TCP/IP协议)

1  浏览器通过域名找出其IP地址(DNS解析)

  • 客户端先检查本地是否有对应的IP地址,若找到则返回响应的IP地址。若没找到则请求上级DNS服务器,直至找到或到根节点。(浏览器缓存→系统缓存→路由器缓存→ISP DNS缓存→从根域名服务器递归搜索)
    注意⚠️:
    
    1  URL和域名的区别:
        域名:需要注册和购买,域名经过解析为ip地址。。。就是说用ip地址和域名都可以访问同一资源。
        url:简单说网址=ip或域名 + 端口号 + 资源位置 + 参数 + 锚点
    2  IP 地址与域名的关系:
       多个提供相同服务的服务器 IP 可设置为同一个域名,但同一时刻一个域名只能解析出一个 IP地址。
        一个 IP 地址可以绑定多个域名。
    3  若修改hosts文件,可自己指定域名的IP,绕过DNS。

2  浏览器和服务器建立连接(TCP/TP三次握手)

  • 浏览器和服务器通过三次握手建立连接,三次握手分别为:
    第一次握手:相当于浏览器说问服务器:我可以连接你吗?
    第二次握手:相当于服务器回答说:好,连吧
    第三次握手:相当于浏览器说:嗯,那我连接了

3 浏览器向服务器发送HTTP请求

  • 建立连接成功后,浏览器给web服务器发送一个HTTP请求。

4 服务器接受到请求并返回HTTP响应

  • 服务器接到请求后,会根据 HTTP 请求中的内容来决定如何获取相应的文件,并将文件发送给浏览器

5 浏览器解析渲染页面

  • 浏览器根据响应开始显示页面
  • 浏览器首先解析HTML文件构建DOM树,然后解析CSS文件构建渲染树,等到渲染树构建完成后,浏览器开始布局渲染树并将其绘制到屏幕上。

6  断开连接(四次挥手)

  • 四次挥手即终止TCP连接。断开一个TCP连接需要客户端和服务端发送四次数据包以确定断开连接。这发送的四次数据包称为四次挥手,分别为:
    四次挥手:
    1  Client发送一个数据包,用来关闭Client到server的数据传输,Client进入最后的等待状态。 
    2  server接到数据包经过判断后,发送确认信息给Client,自己进入等待关闭状态。 
    3  server发送一个数据包给Client,用来关闭server到Client的数据传输 
    4  Client接收到数据经过判断后,自己进入Time_wait状态,server接收数据经过判断无误后,server进入关闭状态,Client等待2MLS(Maxmum segment lifetime),它是任何报文在网络丢弃前在网络内的最长时间,过了这个时间,Client就自动关闭了。
    
    通俗点讲就是:
    1  主机向服务器发送一个断开连接的请求(不早了,我该走了);
    2  服务器接到请求后发送确认收到请求的信号(知道了);
    3  服务器向主机发送断开通知(我也该走了);
    4  主机接到断开通知后断开连接并反馈一个确认信号(嗯,好的),服务器收到确认信号后断开连接;


原文地址:https://www.cnblogs.com/nolaaaaa/p/8824238.html