从我在浏览器中输入 URL 到页面加载,具体步骤发生了什么?

从我在浏览器中输入 URL 到页面加载,具体步骤发生了什么?

最近,我在一次求职面试中被问到这个问题,具体来说是在我输入 facebook.com 时。由于我申请的是编程职位,所以我不太清楚面试官到底在寻找什么,但如何从高层次上回答这个问题呢?

答案1

来自浏览器的 HTTP 请求的高级概述:

  1. 在地址栏中输入“facebook.com”。
  2. 浏览器将其解析为数字 IP 地址(这可以由操作系统缓存或需要前往 DNS 服务器)。
  3. 浏览器发出“HTTP/GET”请求。它会传递一个 HttpRequest,其中包含有关浏览器的元数据、用户偏好(如首选语言)以及该域的任何已存储的 cookie。
  4. Facebook 服务器收到请求并且其代码开始编写响应。
    • Facebook 将使用传递的信息(包括 cookie)来确定用户是谁以及发回什么信息
  5. Facebook 返回 HTTP 响应,包括状态行(200 OK 等)。标头包括内容类型等,以及 HTML 正文。
  6. 浏览器收到Response并开始解析并显示。
    • HTML 主体将包含 CSS、JS 和图像的链接。所有这些都将触发对服务器的额外调用以检索这些位
  7. 浏览器布局引擎将开始组装最终的页面以供显示。
    • CSS 信息可能会改变页面的布局和外观
    • JS 和 DHTML 可能会改变页面的布局
  8. 最终页面被组装并呈现给最终用户。

维基百科超文本协议本文是了解 HTTP 请求生命周期的一个很好的起点。

答案2

由于您没有提到这是否是特定于编程的,网络的还是特定于操作系统的,我选择假设它是指网络级别的。

当您输入要查看的站点地址并按下 Enter 键时,您的计算机/浏览器将首先检查该域的 IP 地址是否缓存在浏览器级别或操作系统级别的某个位置。如果没有,它将尝试通过联系 DNS 服务器来解析该站点域名的 IP 地址。您的操作系统可以手动或通过 DHCP 自动配置一个或多个可以联系的 DNS 服务器的 IP 地址。

在某个时间点,被查询的 DNS 服务器将回复与您输入的域名关联的服务器/设备的 IP 地址。现在可以构建 TCP/IP 数据包并通过线路发送到您输入的域,以开始通信和来回传输数据,为您提供您请求的内容。

答案3

和几乎所有面试问题一样,面试官并不是想得到一个具体的答案,而是想了解你对流程的理解程度,并让你向他们介绍你的思维过程。最有可能的是,他们想知道你是否能识别出各种组件(浏览器、ISP、HTTP、TCP、DNS、内核、Web 服务器)并解释它们是如何交互的。

答案4

我会尝试一下,尽管这可能(显然)因网站、浏览器以及他想要的确切内容或来自的方向而有很大差异。一位招聘经理可能希望了解整个流程的非常详细的方法以及您对 Facebook 的熟悉程度(如果您可能要从事 Facebook 插件方面的工作),而我对此并不太熟悉。我将省略流程内容。

  1. 在地址栏中输入“Facebook.com”
  2. DNS 应该解析
  3. 当 Facebook 加载时,它会根据用户是否曾经访问过该页面来检测或创建 cookie
  4. 如果有 cookies,Facebook 可能会让用户登录,如果没有,则会显示登录页面和/或注册页面。
  5. 使用用户登录、不区分大小写的电子邮件地址和屏蔽的安全字符串密码框
  6. 选择登录按钮,对安全密码进行加盐、散列处理,并将其与所显示用户名的正确存储密码进行比较,并确认两者都匹配记录。
  7. 如果成功,则显示 Facebook“WALL”,否则显示失败消息并允许重试。JS 应存储最多 X 次无效尝试,并在暴力破解的情况下将无效尝试写入用户记录。

相关内容