面试官:说说地址栏输入 URL 敲下回车后发生了什么?

网络 通信技术
在服务器响应之后,由于现在http默认开始长连接keep-alive,当页面关闭之后,tcp链接则会经过四次挥手完成断开。

[[401931]]

本文转载自微信公众号「JS每日一题」,作者灰灰。转载本文请联系JS每日一题公众号。

 一、简单分析

简单的分析,从输入 URL到回车后发生的行为如下:

  • URL解析
  • DNS 查询
  • TCP 连接
  • HTTP 请求
  • 响应请求
  • 页面渲染

二、详细分析

URL解析

首先判断你输入的是一个合法的URL 还是一个待搜索的关键词,并且根据你输入的内容进行对应操作

一个url的结构解析如下:

DNS查询

在之前文章中讲过DNS的查询,这里就不再讲述了

整个查询过程如下图所示:

最终,获取到了域名对应的目标服务器IP地址

TCP连接

在之前文章中,了解到tcp是一种面向有连接的传输层协议

在确定目标服务器服务器的IP地址后,则经历三次握手建立TCP连接,流程如下:

发送 http 请求

当建立tcp连接之后,就可以在这基础上进行通信,浏览器发送 http 请求到目标服务器

请求的内容包括:

  • 请求行
  • 请求头
  • 请求主体

响应请求

当服务器接收到浏览器的请求之后,就会进行逻辑操作,处理完成之后返回一个HTTP响应消息,包括:

  • 状态行
  • 响应头
  • 响应正文

在服务器响应之后,由于现在http默认开始长连接keep-alive,当页面关闭之后,tcp链接则会经过四次挥手完成断开

页面渲染

当浏览器接收到服务器响应的资源后,首先会对资源进行解析:

  • 查看响应头的信息,根据不同的指示做对应处理,比如重定向,存储cookie,解压gzip,缓存资源等等
  • 查看响应头的 Content-Type的值,根据不同的资源类型采用不同的解析方式

关于页面的渲染过程如下:

  • 解析HTML,构建 DOM 树
  • 解析 CSS ,生成 CSS 规则树
  • 合并 DOM 树和 CSS 规则,生成 render 树
  • 布局 render 树( Layout / reflow ),负责各元素尺寸、位置的计算
  • 绘制 render 树( paint ),绘制页面像素信息
  • 浏览器会将各层的信息发送给 GPU,GPU 会将各层合成( composite ),显示在屏幕上

参考文献

https://github.com/febobo/web-interview/issues/141

https://zhuanlan.zhihu.com/p/80551769

 

责任编辑:武晓燕 来源: JS每日一题
相关推荐

2011-03-31 09:20:45

URLDNSWeb应用程序

2024-04-11 08:33:25

2023-01-14 16:11:27

浏览器URL回车

2024-05-06 10:53:22

浏览器TCPHTTPS

2020-09-01 11:40:01

HTTPJavaTCP

2020-10-09 08:59:55

输入网址解密

2023-02-04 07:34:12

URLIP身份定位

2022-04-28 07:52:05

HTTP浏览器

2022-03-28 08:38:00

面试DNS解析

2024-05-30 08:04:20

Netty核心组件架构

2024-03-05 10:33:39

AOPSpring编程

2024-08-22 10:39:50

@Async注解代理

2021-04-19 18:56:58

大数字符串运算

2021-08-18 08:33:11

Git场景命令

2017-04-11 13:54:49

HTTPURLHTML

2023-12-27 18:16:39

MVCC隔离级别幻读

2024-08-12 17:36:54

2024-08-29 16:30:27

2024-11-19 15:13:02

2024-02-29 16:49:20

volatileJava并发编程
点赞
收藏

51CTO技术栈公众号