输入URL展示过程
阅读原文时间:2023年07月08日阅读:1

一、 输入URL,回车

  • 敲击某个键时,键盘内的处理器会先对键矩阵进行分析,然后将数据发送到计算机
  • 计算机接收到来自键盘的信号,由键盘控制器(一种集成电路)进行处理,发送给操作系统
  • 操作系统会分析,这些数据是否为系统命令,若不是,则将数据传给应用程序。
  • 应用程序会分析这些数据是否为命令,如果不是命令,则会将数据作为内容接受,否则忽略

二、浏览器解析URL

  1. 浏览器会对URL进行检查,是否合法,如果不合法会将输入内容传给默认的搜索引擎
  2. 针对当前URL检查是否存在本地缓存,如果有缓存就直接跳过请求阶段,从缓存中去取资源

浏览器再得到URL后,调用Socket,使用TCP协议,HTTP请求会被封装,加入本地端口,目标端口等信息
IP地址是在IP协议中被封装的。但光有IP地址是不够的,因为设备是可以移动的,IP地址并不与设备绑定。所以还有一个MAC要被封装,每个网卡的MAC地址都是固定且唯一的

三、DNS解析

DNS实际上是一个域名与IP对应的数据库,DNS解析主要是为了获取到域名对应的IP,用于下一步的连接建立

DNS的解析会按照以下顺序尝试获取IP,任意一步找到直接返回IP:

1. 查询浏览器缓存,浏览器会对最近访问的地址的DNS进行缓存,例如chrome对每个域名会默认缓存60s

  1. 检查系统缓存,也就是hosts文件中配置的域名与IP的对应关系
  2. 获取路由器的DNS缓存
  3. 查询ISP服务商DNS缓存,即本地服务器缓存
  4. 最后手段:递归查询,以 根域名服务器 --> 顶级域名服务器 --> 极限域名服务器 的顺序搜索对应域名的IP

通过Socket API发送数据,可以选择TCP或UDP协议

1. Socket(套接字)是计算机之间进行通信的一种约定或一种方式

  1. 在应用层和传输层之间的一个抽象层
  2. 它把TCP/IP层复杂的操作抽象为几个简单的接口
  3. 供应用层调用已实现进程在网络中通信

三、建立连接;

根据上一步获取到的IP地址定位到目标主机,开始于其建立TCP连接,也就是三次握手建立连接:

四、服务器如何处理数据并返回数据

用上一步建立的连接发送http request请求命令和请求头信息

服务器收到信息都会返回应答头信息

五、关闭TCP连接,

  • http1.1已经支持keep-alive
  • 根据Connection请求头,如果是keep-alive服务器就保持住tcp连接
  • response传输完后主动关闭tcp连接。
  • 当然现在浏览器都是http1.1都默认是keep-alive的,在浏览器tab关闭时,tcp连接关闭。

六、检查状态码

如果response的状态码出现3XX(跳转),未授权(401),错误(4XX和5XX)会有不同的处理。

七、准备呈现

如果response status 为304(内容未更改)浏览器则会从本来缓存加载内容进行呈现

八、 浏览器如何处理服务器的响应

通过MIME类型,浏览器知道要用页面渲染引擎来处理HTML文件,整个渲染过程都由浏览器来处理,主要分为以下步骤:

根据网络模型来的过程

应用层

HTTP、DNS

传输层

TCP/UDP

三网络层

IP

链路层