从输入URL到网页显示的全过程解析【个人八股】
本文概述了从浏览器输入URL到网页显示的全过程,主要包括DNS解析、TCP连接、HTTP请求/响应和页面渲染等环节。重点解析了DNS工作原理:浏览器先检查本地缓存,若无则依次查询根域名、顶级域名和权限域名服务器获取IP地址。同时对比了WebSocket与Socket的区别,前者是应用层持久化协议,后者是网络编程接口。文章还提及常见端口号及抓包工具的使用,为后续深入探讨HTTP、TCP等协议奠定基础

感觉这个部分就是考一整个的流程了,可以先做一个了解!
首先前面我们已经了解了计算机网络体系架构了,了解了架构上层与层之间的关系,那么请你聊聊他们之间是怎么进行工作的
既然你知道了他们之间的工作过程,那每个环节遵循的协议都有哪些呢?
谈谈你对于DNS解析的理解呗?顺便也说一下DNS的解析流程;【后续还会去深挖HTTP,TCP,UDP,IP等相关领域的知识,可以期待一下后面的文章!!!】
你了解到的端口都有哪些?
有抓过网络包吗?
既然我们前面聊了网络的架构,层与层之间你也都清晰了,那我们能不能聊一聊他们相互之间是怎么进行工作的吗?
从浏览器地址栏输入 url 到显示网页的过程了解吗?
这个过程包括多个步骤,涵盖了 DNS 解析、TCP 连接、发送 HTTP 请求、服务器处理请求并返回 HTTP 响应、浏览器处理响应并渲染页面等多个环节。
-
DNS解析:浏览器会发起一个 DNS 请求到 DNS 服务器,将域名解析为服务器的 IP 地址。首先得知道IP地址,后续才能进行下一步的TCP连接吧?
-
TCP连接:浏览器通过解析得到的 IP 地址与服务器建立 TCP 连接。这一步涉及到 TCP 的三次握手【用于确保双方都已经准备好进行数据传输了】
-
发送HTTP请求:浏览器构建 HTTP 请求,包括请求行、请求头和请求体;然后将请求发送到服务器。
-
服务器处理请求:服务器接收到 HTTP 请求后,根据请求的资源路径,经过后端处理,生成 HTTP 响应消息;响应消息包括状态行、响应头和响应体。
-
浏览器接收HTTP响应:接着就是响应服务器发送过来的HTTP响应,进行相关页面的渲染操作!
-
断开连接:TCP 四次挥手,连接结束。
整个的过程,稍微碎碎念一下
首先就是DNS的解析操作,这一步的关键之处就在于我们需要找到对应的IP地址;这里会深入去问:请你谈谈你对于DNS的理解,他是如何一步步地获取到IP地址的,后续也会讲
接着是根据得到的IP地址,我需要去尝试着建立连接吧?建立连接的方式是 三次握手!这里会深入的去聊一聊三次握手的过程,谈谈你对于tcp的理解
接着是既然我们已经连接上了,那么这个时候服务器就需要去响应浏览器发过来的HTTP请求,里面有很多的相关的信息,经过后端处理后,把对应的响应消息返回给前端!这里会深入的追问的一个点就是:谈谈你对于HTTP的理解?
浏览器接收到HTTP响应,开始渲染界面
最后就是断开连接,TCP的四次挥手过程!

各个过程都使用了哪些协议?

既然你知道这么多的协议,那么我们来聊聊DNS的解析过程?
说说 DNS 的解析过程?
在讲解析之前,也请你先来介绍一下什么是DNS?为什么需要有DNS?
DNS 的全称是 Domain Name System,也就是域名解析系统,它可以将域名映射到对应的 IP 地址上;
当然了,也可以通过 IP 地址直接访问服务器,但不方便记忆,所以就有了域名系统。如果我们需要连接一台没有域名的服务器,可以直接输入对应的IP来进行连接操作!
域名到 IP 之间的映射,就需要 DNS 来完成。

那接下来就来详细讲一讲DNS的解析过程!
-
浏览器会首先检查自己的缓存中是否有这个域名对应的 IP 地址,如果有,直接返回;如果没有,进入下一步。
-
检查本地 DNS 缓存是否有该域名的记录。如果本地的DNS缓存有域名的记录,就可以直接获取到对应的IP地址进行返回!
-
如果没有,向根域名服务器发送请求,根域名服务器将请求指向更具体的服务,如
com顶级域名服务器。 -
顶级域名服务器再将请求指向权限域名服务器,通常由域名注册机构直接管理
-
最终,浏览器使用获得的 IP 地址发起一个 HTTP 请求到目标服务器,然后该服务器返回所请求的网页内容。
碎碎念一下:
首先就是要先去查自己浏览器的本地缓存里面有没有这个域名的IP地址,如果有,那就直接获取到了,也就不需要去看本地的DNS缓存了
接着是去需要看一下自己本地的DNS缓存了,如果有,就不需要去请求根域名服务器了!
如果没有,就需要去请求根域名服务器->顶级域名服务器->权限域名服务器!
最终获得这个IP用于后续的tcp连接!
说说 WebSocket 与 Socket 的区别?
-
Socket 其实就是等于 IP 地址 + 端口 + 协议。
-
WebSocket 是一个持久化的协议,它是伴随 H5 而出的协议,用来解决 http 不支持持久化连接的问题。
-
Socket 一个是网编编程的标准接口,而 WebSocket 则是应用层通信协议。
说一下你了解的端口及对应的服务?
这个部分的话稍微记一下我们比较常见的就差不多了
那你前面各种的网络体积结构也了解了,层与层之间的是如何相互配合和工作的你也了解了,对于DNS的解析也了解了,还知道很多的通信协议以及一些端口号,那么你动手抓过网络包吗?
平常有抓包吗
我平常使用最多的就是 chrome 浏览器自带的 network 面板了,可以看到请求的时间、请求的信息,以及响应信息。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)