网络面试——浏览器输入url到显示主页的过程

浏览器输入URL到显示主页的过程通常可以分为以下步骤:

  1. **URL解析**:
  • 当用户在浏览器的地址栏中输入URL时,浏览器会首先对该URL进行解析。

  • 解析URL包括识别协议(例如HTTP、HTTPS)、主机名(例如www.example.com)、路径(例如/index.html)等。

  1. **DNS解析**:
  • 浏览器将解析出的主机名发送到DNS(域名系统)服务器,以获取该主机名对应的IP地址。

  • 如果该主机名已经被缓存,则直接从缓存中获取IP地址;否则,将向DNS服务器发送DNS查询请求。

  1. **建立TCP连接**:
  • 浏览器使用HTTP或HTTPS协议与获取的IP地址上的服务器建立TCP连接。

  • 对于HTTPS协议,还会进行SSL握手过程,确保通信安全性。

  1. **发送HTTP请求**:
  • 一旦TCP连接建立,浏览器会向服务器发送HTTP请求,请求页面或资源。

  • 请求头部可能包括信息如请求的方法(GET、POST等)、所需的页面或资源、浏览器的相关信息等。

  1. **服务器处理请求**:
  • 服务器接收到浏览器发送的HTTP请求后,会根据请求的内容和服务器的配置进行相应的处理。

  • 处理过程可能包括读取文件、执行脚本、访问数据库等操作。

  1. **服务器返回响应**:
  • 服务器处理完请求后,会生成相应的HTTP响应,包括响应头和响应主体。

  • 响应头包括状态码(如200表示成功,404表示未找到页面等)、服务器信息、内容类型等。

  • 响应主体则包含请求的页面内容或资源的数据。

  1. **浏览器接收响应**:
  • 浏览器接收到服务器返回的HTTP响应后,开始解析响应内容。

  • 如果是HTML页面,浏览器会解析HTML文档,并同时获取并解析页面中引用的外部资源,如CSS样式表、JavaScript脚本、图像等。

  1. **渲染页面**:
  • 浏览器根据HTML文档和相关资源,将页面内容呈现在用户界面上。

  • 页面的呈现包括解析HTML结构、应用CSS样式、执行JavaScript代码等步骤。

  1. **显示页面**:
  • 最终,浏览器将渲染好的页面显示给用户。

  • 用户可以与页面进行交互,如点击链接、填写表单等。

这些步骤构成了浏览器从接收到用户输入URL到显示网页内容的完整过程。

浏览器中输入: " www.woaijava.com " 之后都发生了什么? 请详细阐述
由域名 → IP 地址 寻找 IP 地址的过程依次经过了浏览器缓存、系统缓存、 hosts 文件、路由器缓
存、 递归搜索根域名服务器。
建立 TCP/IP 连接(三次握手具体过程)
由浏览器发送一个 HTTP 请求
经过路由器的转发,通过服务器的防火墙,该 HTTP 请求到达了服务器
服务器处理该 HTTP 请求,返回一个 HTML 文件
浏览器解析该 HTML 文件,并且显示在浏览器端
这里需要注意:
HTTP 协议是一种基于 TCP/IP 的应用层协议,进行 HTTP 数据请求必须先建立 TCP/IP 连接
可以这样理解: HTTP 是轿车,提供了封装或者显示数据的具体形式; Socket 是发动机,提供了
网络通信的能力。
两个计算机之间的交流无非是两个端口之间的数据通信 , 具体的数据会以什么样的形式展现是以
不同的应用层协议来定义的。
主要包括以下几个基本步骤:

浏览器的地址栏输入URL并按下回车

浏览器查找当前URL是否存在缓存,并比较缓存是否过期

DNS解析URL对应的IP

根据IP建立TCP连接(三次握手)

发送HTTP请求

服务器处理请求

返回HTTP响应

浏览器接受HTTP响应

关闭TCP连接(四次挥手)

浏览器解析HTML

浏览器布局渲染

浏览器地址栏输入 url 并回车:

  1. 浏览器解析 URL

1.1 查看缓存

1.2 DNS 解析

  1. 根据 IP 地址三次握手建立 TCP 连接

  2. 发送 HTTP 请求

  3. 服务器处理请求

  4. 服务器返回 HTTP 响应

  5. 浏览器接受响应

  6. 四次挥手关闭 TCP 连接

  7. 浏览器解析 HTML

  8. 浏览器布局渲染

相关推荐
程序猿进阶26 分钟前
深入解析 Spring WebFlux:原理与应用
java·开发语言·后端·spring·面试·架构·springboot
小林熬夜学编程1 小时前
【Linux网络编程】第十四弹---构建功能丰富的HTTP服务器:从状态码处理到服务函数扩展
linux·运维·服务器·c语言·网络·c++·http
Hacker_Fuchen1 小时前
天融信网络架构安全实践
网络·安全·架构
上海运维Q先生1 小时前
面试题整理15----K8s常见的网络插件有哪些
运维·网络·kubernetes
ProtonBase1 小时前
如何从 0 到 1 ,打造全新一代分布式数据架构
java·网络·数据库·数据仓库·分布式·云原生·架构
LCG元8 小时前
【面试问题】JIT 是什么?和 JVM 什么关系?
面试·职场和发展
fantasy_arch11 小时前
CPU性能优化-磁盘空间和解析时间
网络·性能优化
GISer_Jing12 小时前
2025前端面试热门题目——计算机网络篇
前端·计算机网络·面试
m0_7482455212 小时前
吉利前端、AI面试
前端·面试·职场和发展
是Dream呀13 小时前
Python从0到100(七十八):神经网络--从0开始搭建全连接网络和CNN网络
网络·python·神经网络