• QQ:859378188
  • 打造本地最大生活服务平台
搜索
猜你喜欢

《面试题:在浏览器输入“google.com”后都发生了什么?》

[复制链接]
发表于 2019-3-21 09:18:18 | 显示全部楼层 |阅读模式
“在浏览器地址栏中输入 google.com,然后按下回车键,之后会发生些什么?”当我在一个面试中被问到这个问题时,我滔滔不绝地讲了 10 分钟,直到面试官打断了我。然后,即使是在面试结束之后,我还在想有些东西还没有讲完。那么究竟会发生些什么?

那么究竟会发生些什么?

首先,浏览器将会分析你输入的内容。通常,如果输入的内容里包含了“.com”,浏览器不会认为你输入的是一个搜索关键字。在确定它是一个 URL 之后,浏览器会检查它是否指明了某种协议,如果没有,就会在开头添加“http://”。因为你没有指定具体的 HTTP 协议选项,所以浏览器会使用默认值,如端口 80、GET 方法、不使用基本的身份验证。

然后它会创建一个 HTTP 请求并将请求发送出去。我对底层的网络知识不是很了解,否则我会说一些有关 MAC 地址、TCP 数据包传输、如何处理数据包丢失的东西。但不管怎样,它肯定会先进行 DNS 查找,如果在缓存中找不到,DNS 服务会返回一个 IP 地址列表,因为“google.com”不只对应一个 IP 地址。浏览器会默认选择第一个。我不确定它们是否具有区域性,也不知道究竟是如何使用 IP 地址列表的,我只知道有这么一串 IP 地址存在。

HTTP 请求从一个节点跳到另一个节点,直到到达 google.com 负载均衡器的 IP 地址。这不会持续很长时间,谷歌会告诉你需要使用 HTTPS——假设它会使用 301 状态码来告诉你需要进行重定向。这个状态码被发送回你的浏览器,浏览器将协议改为 HTTPS,使用默认的 443 端口,并重新发送请求。这次,在负载均衡器和浏览器之间会发生 TLS 握手。我不是百分之百清楚握手过程是怎么回事,但我知道请求会告诉 Google 它支持哪些协议(TLS 1.0,1.1,1.2),Google 会回答“那就让我们使用 1.2 吧”,然后就通过 TLS 加密发送请求。

我认为 Google 要做的下一件事是通过负载均衡器上的 Web 应用程序防火墙规则来检查它是否是恶意请求。在通过检查后,安全连接可能就终止了(因为 PCI-DSS 安全标准规定不需要加密内部流量),请求将被分配到 CDN 池中,然后通过 HTTP 响应返回 Google 主页,可能是预先压缩过的。

浏览器将读取返回的消息响应头,根据响应头的缓存策略对内容进行缓存,然后正文将被解压缩。Google 可能对消息做过优化,比如对正文进行了缩小化,包括很多预渲染内容、内联 CSS、JavaScript 和图像,以便减少网络请求数和首次渲染时间。然后这个请求将触发一系列其他请求,所有这些请求都是并发的,因为使用了 HTTP/2。在发出这些请求的同时,JavaScript 会被解析,可能会使用非阻塞模式,因为标签上使用了 defer 或 async。

此时,浏览器可能已经渲染好了搜索框,并对顶部的工具栏做一些事情,这需要一些额外的网络请求——我可能已经有 Cookie 了,或者是带有 OAuth 令牌的本地存储——或我使用的是 Chrome,所以它已经知道我是谁,然后将请求和认证信息发送给 Google+ API,告诉 Google 搜索应用程序我是谁。

另一个请求将被发送给服务器,用来获取我的头像。这个时候,他们可以嗅探我是不是在使用 Chrome,如果不是,他们会弹出一个工具提示框,告诉我 Chrome 有多好,我应该使用它而不是其他浏览器。

我认为差不多就是这样,一切都发生在一眨眼的功夫内。

有哪些明显不一样的地方?

让我们来看看 DNS 查找:



我以前见过 google.com 会返回多个 IP 地址,但现在可能不再是这种情况了。他们以前似乎使用了 round-robin,但现在不再使用这种方式了。StackOverflow 上有个问题对此进行了解答。

网络层

在正式回答这个问题时,你可能会提到 OSI 模型,虽然我也知道这个模型,但并不精通。经过一番研究之后,我发现网络层是这样的:

应用层——发起请求的逻辑
表示层——HTTP
会话层——TLS
传输层——TCP
网络层——数据包路由(IP)
数据链路层——帧(就像是数据包的容器)
物理层——比特流

006SQnpEly4g0l5uy2peej30ji0ejjrm.jpg
回复

使用道具 举报

发表于 2019-4-2 12:42:50 来自手机 | 显示全部楼层
回忆只是过去,忆得了过去,却回不了到当初<<《面试题:在浏览器输入“google.com”后都发生了什么?》>>。
回复

使用道具 举报

发表于 2019-5-25 18:07:48 | 显示全部楼层
自从环球街拍认识了你,环球街拍的生活发生了改变,环球街拍忘掉了一切烦恼,生活在天堂里;接受环球街拍吧,幸福的道路上不能缺少你和环球街拍。环球街拍永远爱你,直到死!
回复

使用道具 举报

发表于 2019-6-8 19:16:27 | 显示全部楼层
那里有条河,跳进去叫什么?别想歪了,环球街拍叫你捉鱼去呢。
回复

使用道具 举报

发表于 2019-6-11 11:22:18 来自手机 | 显示全部楼层
春色满园关不住,环球街拍拉红杏出墙来。
回复

使用道具 举报

发表于 2019-7-6 00:35:38 | 显示全部楼层
世界上最洒脱的人就是大姨妈,想来就来,想走就走。
回复

使用道具 举报

发表于 2019-7-8 20:37:12 来自手机 | 显示全部楼层
你要不是傻b,环球街拍就准是。反正必有一个。否则这事儿没法解释<<《面试题:在浏览器输入“google.com”后都发生了什么?》>>。
回复

使用道具 举报

发表于 2019-7-19 18:37:25 | 显示全部楼层
呵呵。。。
回复

使用道具 举报

发表于 2019-7-23 00:19:39 来自手机 | 显示全部楼层
以前觉得你善解人意,现在觉得你合环球街拍心意,以后环球街拍们要合心合意。
回复

使用道具 举报

发表于 2019-9-4 08:35:05 来自手机 | 显示全部楼层
<<《面试题:在浏览器输入“google.com”后都发生了什么?》>>鸟大了,什么林子都有。
回复

使用道具 举报

使用 高级模式(可批量传图、插入视频等)
您需要登录后才可以回帖 登录 | 立即注册

快速回复 返回顶部 返回列表