感觉这个部分就是考一整个的流程了,可以先做一个了解!

  1. 首先前面我们已经了解了计算机网络体系架构了,了解了架构上层与层之间的关系,那么请你聊聊他们之间是怎么进行工作的

  2. 既然你知道了他们之间的工作过程,那每个环节遵循的协议都有哪些呢?

  3. 谈谈你对于DNS解析的理解呗?顺便也说一下DNS的解析流程;【后续还会去深挖HTTP,TCP,UDP,IP等相关领域的知识,可以期待一下后面的文章!!!】

  4. 你了解到的端口都有哪些?

  5. 有抓过网络包吗?

既然我们前面聊了网络的架构,层与层之间你也都清晰了,那我们能不能聊一聊他们相互之间是怎么进行工作的吗?

从浏览器地址栏输入 url 到显示网页的过程了解吗?

这个过程包括多个步骤,涵盖了 DNS 解析、TCP 连接、发送 HTTP 请求、服务器处理请求并返回 HTTP 响应、浏览器处理响应并渲染页面等多个环节。

  1. DNS解析:浏览器会发起一个 DNS 请求到 DNS 服务器,将域名解析为服务器的 IP 地址。首先得知道IP地址,后续才能进行下一步的TCP连接吧?

  2. TCP连接:浏览器通过解析得到的 IP 地址与服务器建立 TCP 连接。这一步涉及到 TCP 的三次握手【用于确保双方都已经准备好进行数据传输了】

  3. 发送HTTP请求:浏览器构建 HTTP 请求,包括请求行、请求头和请求体;然后将请求发送到服务器。

  4. 服务器处理请求:服务器接收到 HTTP 请求后,根据请求的资源路径,经过后端处理,生成 HTTP 响应消息;响应消息包括状态行、响应头和响应体。

  5. 浏览器接收HTTP响应:接着就是响应服务器发送过来的HTTP响应,进行相关页面的渲染操作!

  6. 断开连接:TCP 四次挥手,连接结束。

整个的过程,稍微碎碎念一下

  1. 首先就是DNS的解析操作,这一步的关键之处就在于我们需要找到对应的IP地址;这里会深入去问:请你谈谈你对于DNS的理解,他是如何一步步地获取到IP地址的,后续也会讲

  2. 接着是根据得到的IP地址,我需要去尝试着建立连接吧?建立连接的方式是 三次握手!这里会深入的去聊一聊三次握手的过程,谈谈你对于tcp的理解

  3. 接着是既然我们已经连接上了,那么这个时候服务器就需要去响应浏览器发过来的HTTP请求,里面有很多的相关的信息,经过后端处理后,把对应的响应消息返回给前端!这里会深入的追问的一个点就是:谈谈你对于HTTP的理解?

  4. 浏览器接收到HTTP响应,开始渲染界面

  5. 最后就是断开连接,TCP的四次挥手过程!

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

既然你知道这么多的协议,那么我们来聊聊DNS的解析过程

说说 DNS 的解析过程?

在讲解析之前,也请你先来介绍一下什么是DNS?为什么需要有DNS

DNS 的全称是 Domain Name System,也就是域名解析系统,它可以将域名映射到对应的 IP 地址上

当然了,也可以通过 IP 地址直接访问服务器,但不方便记忆,所以就有了域名系统。如果我们需要连接一台没有域名的服务器,可以直接输入对应的IP来进行连接操作!

域名到 IP 之间的映射,就需要 DNS 来完成。

那接下来就来详细讲一讲DNS的解析过程

  1. 浏览器会首先检查自己的缓存中是否有这个域名对应的 IP 地址,如果有,直接返回;如果没有,进入下一步。

  2. 检查本地 DNS 缓存是否有该域名的记录。如果本地的DNS缓存有域名的记录,就可以直接获取到对应的IP地址进行返回!

  3. 如果没有,向根域名服务器发送请求,根域名服务器将请求指向更具体的服务,如 com 顶级域名服务器

  4. 顶级域名服务器再将请求指向权限域名服务器,通常由域名注册机构直接管理

  5. 最终,浏览器使用获得的 IP 地址发起一个 HTTP 请求到目标服务器,然后该服务器返回所请求的网页内容。

碎碎念一下:

  1. 首先就是要先去查自己浏览器的本地缓存里面有没有这个域名的IP地址,如果有,那就直接获取到了,也就不需要去看本地的DNS缓存了

  2. 接着是去需要看一下自己本地的DNS缓存了,如果有,就不需要去请求根域名服务器了!

  3. 如果没有,就需要去请求根域名服务器->顶级域名服务器->权限域名服务器!

  4. 最终获得这个IP用于后续的tcp连接!

说说 WebSocket 与 Socket 的区别?

  • Socket 其实就是等于 IP 地址 + 端口 + 协议。

  • WebSocket 是一个持久化的协议,它是伴随 H5 而出的协议,用来解决 http 不支持持久化连接的问题。

  • Socket 一个是网编编程的标准接口,而 WebSocket 则是应用层通信协议

说一下你了解的端口及对应的服务?

这个部分的话稍微记一下我们比较常见的就差不多了

那你前面各种的网络体积结构也了解了,层与层之间的是如何相互配合和工作的你也了解了,对于DNS的解析也了解了,还知道很多的通信协议以及一些端口号,那么你动手抓过网络包吗?

平常有抓包吗

我平常使用最多的就是 chrome 浏览器自带的 network 面板了,可以看到请求的时间、请求的信息,以及响应信息。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐