浏览器发起一个请求后,背后究竟发生了什么?

结合计算机网络的七层OSI模型架构,可以更加详细地描述输入URL并回车后的整个过程。这七层分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。以下是详细步骤:

  1. 应用层(第七层):

    • 用户在浏览器的地址栏输入URL并按下回车,浏览器(应用层的程序)开始解析该URL。
    • 解析URL为协议(如HTTP/HTTPS)、主机名、端口号(如未指定,默认HTTP为80,HTTPS为443)以及路径和查询参数。
  2. 表示层(第六层):

    • 浏览器处理数据的编码和解码,确保传输的数据格式正确。对于HTTPS,表示层还涉及数据的加密和解密。
  3. 会话层(第五层):

    • 负责建立、管理和终止会话。对于HTTPS连接,会话层负责建立TLS会话。
    • 浏览器通过会话层与服务器建立一个安全的会话(TLS握手),验证服务器证书,协商加密算法。
  4. 传输层(第四层):

    • 浏览器与服务器之间建立一个TCP连接。这个过程包括三次握手:
      • 客户端发送SYN包(同步序列编号)。
      • 服务器回应SYN-ACK包(同步-确认)。
      • 客户端再发送ACK包(确认),连接建立。
    • 传输层确保数据包的传输可靠,通过端口号识别应用程序(例如,80或443)。
  5. 网络层(第三层):

    • 浏览器需要将主机名转换为IP地址(DNS解析)。DNS查询涉及多次查询,从本地缓存到DNS服务器再到根服务器。
    • DNS解析完成后,浏览器获得服务器的IP地址,准备向其发送数据包。
    • 网络层通过IP协议将数据包路由到目标服务器的IP地址。
  6. 数据链路层(第二层):

    • 负责将数据包封装成帧并通过物理网络传输。
    • 数据链路层处理网络硬件地址(MAC地址),确保数据在同一网络段内正确传输。
    • 在以太网中,数据链路层会检查帧的完整性并处理错误。
  7. 物理层(第一层):

    • 物理层负责在网络介质(如电缆、光纤、无线电波)上传输比特流。
    • 将数据转换为信号并通过物理网络传输,如通过网卡、路由器、交换机等设备。

其中每经过一层必定会被打上一个该层所属的首部信息。反之,接收端在层与层之间传输数据时,每经过一层就会把该层对应的首部信息消去。

详细步骤如下:

1. 浏览器解析URL并发起DNS解析(应用层、表示层、会话层):

  • 浏览器解析URL获取协议、域名、路径等信息。
  • 浏览器查询本地DNS缓存,没有找到则通过操作系统发起DNS请求。
  • 操作系统查询DNS服务器,获得目标IP地址。

2. 建立TCP连接(传输层、网络层):

  • 浏览器使用获得的IP地址,通过网络层发送IP包至目标服务器。
  • 传输层进行三次握手建立TCP连接。

3. HTTPS握手(会话层、表示层、传输层):

  • 浏览器发送客户端Hello消息,开始TLS握手。
  • 服务器响应服务器Hello消息,发送证书,协商加密算法。
  • 浏览器验证证书,生成对称加密密钥,双方完成握手。

4. 发送HTTP请求(应用层、传输层):

  • 浏览器构建HTTP请求报文,包括请求行、请求头和请求体。
  • 通过传输层将HTTP请求封装在TCP数据包中发送至服务器。

5. 服务器处理请求并响应(应用层):

  • 服务器接收请求,处理并生成HTTP响应,包括状态行、响应头和响应体。
  • 通过传输层将响应封装在TCP数据包中发送回浏览器。

6. 浏览器接收响应并渲染页面(应用层、表示层):

  • 浏览器解析HTTP响应,处理HTML、CSS、JavaScript等资源。
  • 构建DOM树、CSSOM树,执行JavaScript,生成渲染树。
  • 布局和绘制页面内容到屏幕上。

7. 请求额外资源(应用层、传输层):

  • 浏览器在解析HTML时,发现需要额外资源(如图片、CSS文件),发送额外的HTTP请求获取这些资源。
  • 每个请求重复上述步骤,确保资源全部加载。

8. 完成页面呈现:

  • 所有资源加载完成,浏览器完成页面的渲染,用户看到完整的网页内容。

整个过程涉及多层协同工作,确保用户在输入URL后能顺利看到所请求的网页内容。

  • 12
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值