专栏首页养码场当你在浏览器中输入“google.com”并回车,会发生什么?

当你在浏览器中输入“google.com”并回车,会发生什么?

曾经遇到过的一个最喜欢的面试问题是这样的:你键入'google. com'到一个浏览器地址栏中, 并点击<Enter>, 之后会发生什么呢?

有人可以滔滔不绝讲几天, 试图以某种形式的完备性来回答此问题。纯粹出于兴趣, 我要把我的答案罗列在此。

英文原文:What happens when you type 'google.com' into a browser and press Enter?

那么发生了什么呢?

浏览器将分析输入。通常情况下, 如果输入中有". com", 它不会认为你在输入搜索词而是判断这是一个url, 它会检查输入是否有协议头,如果没有, 它会在其开头添加"http://"。

由于你没有指定一系列http协议功能, 因此它将假定使用默认值, 如端口80、GET方法和无基本身份认证。

然后, 它将创建一个http请求并发送该请求。( 我对我的底层网络知识没有信心, 但如果一定要说, 我会说一些关于MAC地址、TCP数据包传输、丢包处理等。)但无论如何, 一个对"google. com"DNS的查找将会发生, 如果它还没有对此的缓存,DNS服务将应答一系列IP地址列表, 因为"google. com"不是单IP的网站,在默认情况下浏览器会选择第一个。

因此, http 请求从一个节点跳转到另一个节点, 直到它找到google. com负载均衡器的IP地址。这不会持续很久, 谷歌会回应说, 你需要使用https-假定是301永久重定向。它会原路返回到你的浏览器, 浏览器将协议更改为 https, 默认使用443端口并重新发送。

这一次,TLS握手将在负载均衡器和浏览器客户端之间进行。我不是100%确定其工作原理, 但我知道该请求会告诉谷歌, 它支持什么协议 (TLS 1.0, 1.1, 1.2) ,然后谷歌将响应 "让我们使用1.2吧"。之后使用TLS加密发送请求。

谷歌接下来要做的是将其放到负载均衡器上的网络应用程序防火墙规则集上, 看看它是否是一个恶意请求。当这通过之后, 安全连接可能已被终止 (因为PCI-DSS规则规定你不需要加密内部流量), 请求将被分配到其CDN中的某个池上, 而google端缓存主页将在http响应中返回。可能是预先压缩的。

谷歌的响应头将由浏览器读取,根据响应头的缓存策略进行缓存,然后正文将被解压缩。而且因为这是谷歌,它可能是超优化的:压缩,可能是许多预渲染内容、内联CSS、JavaScript和图像,以减少网络请求和首次渲染时间。但该请求将触发一系列其他请求,所有这些请求都是并发的,因为它应该运行HTTP/2。当这些请求正在进行时,JavaScript会被解析,可能没有阻塞,因为他们在标签上使用了defer属性 - 或者async。

但浏览器可能已经渲染了搜索框并且正在顶部的工具栏上工作,这将需要一些额外的网络请求 - 我可能已经有一个cookie或可能是带有OAuth令牌的本地存储 - 或我可能是使用Chrome并且它已经知道我是谁,并且使用auth的请求会被发送到他们的Google+ API上,告诉Google搜索页面的应用程序我的身份。

另一个请求将被发送, 以获取我的头像图像。他们可能在浏览器上看看我是否未使用 chrome, 在这种情况下, 他们会有弹出一个工具栏提示, 告诉我:chrome 是真的很棒, 我应该使用它, 而不是其他任何浏览器。

此时需要冷静下来,因为所有这些都发生在一秒以内。

何为显著地不同?

让我们看看对应的DNS:

我知道我以前见过google.com返回包中带有多个IP地址,但似乎不再是这种情况了。之前他们似乎常常使用轮巡策略,但现在不再使用了。这个StackOverflow提问涉及了此情况。

网络层...

在一个正式结构化回答中,你可能会参考我有所了解但并不精通的OSI模型。在查阅资料之后,我将它视为如下的网络分层映射:

1、应用 - 触发请求的逻辑

2、表示层 - HTTP

3、会话 - TLS

4、传输 - TCP

5、网络 - 路由 (IP)

6、数据链路 - 帧 (可看做数据包的容器)

7、物理层 - 比特流

我记得在TLS中他们会在协议协商时交换证书。

网络并不是我的强项。

在我的浏览器中打开google.com,并禁用缓存:

▶ 我记得主机名规范化——这是一个301。

▷ 从HTTP到HTTPS的校正是一个307内部重定向。

▶ 然后它下载字体、商标图像和我的头像图像。如果没有API调用,这意味着他们会在页面中推送我的个人资料信息并将其与返回数据捆绑在一起 - 因此当你点击google.com而不仅仅是提供缓存资产时,他们会进行实际的数据检索。

响应

以上是IE 11和Chrome响应数据的对比——所有都处于退出状态。

▷ IE11和Chrome之间没有太大的差别。但这意味着他们是用户代理嗅探服务器端而不是客户端。在我的答案中可能提到了这一点。

▶ 出乎意料的是,Chrome的响应体大了22kB。我想知道它是否是由在IE 11中明显缺席的语音搜索功能引起的。IE11可能需要polyfill和Chrome的广告,但它都被混淆了,我不会再进一步折磨自己了。

▷ 即使我在Chrome中清除了Cookie,它仍会在第一次请求时发送Cookie。它在IE 11中并没有这样做。

深入理解渲染!

上图是Chrome将为你提供的第一个屏幕截图。

▶ 脚本标签中没有任何async或defer属性,只有nonce属性。我目前正在学习有关nonce的知识,这似乎与安全性有关。我估计他们想要那些阻塞式脚本,并且在某些方面尝试过有/无aync/defer的情况,并决定反对之。

▷ 自我提示:完全响应是对JavaScript、CSS和HTML的乱七八糟的混合体。相比于其独立性,他们没有遵守任何控制其位置的规则。

问题本身是什么呢?

你知道吗?对于开发人员而言,这可能不是一个很好的面试问题,因为答案涉及到如此多的网络知识。

但这是我喜欢的问题的格式,包括了一些开放的事物甚至一些猜测。这使得面试官有机会跟进诸如“你认为TLS是如何建立的?”之类的问题,以查看候选人如何思考,看看他们有多少创意,看看他们的极限在哪里(有多少耐心?)。

那么,你遇到过的最喜欢的面试问题是什么?欢迎分享~

本文分享自微信公众号 - 养码场(yangmachang0)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 22G的算法导论+算法基础+算法精讲!干货三连击,让你从基础连跳至实战!

    上周有群友向场主要算法的干货资料,场主花了十几分钟,终于找到了深埋网盘底部的一整套完整算法教程视频。

    养码场
  • 转行成为年薪48w的数据分析师,从一则招聘需求说起

    现在的职场竞争越来越激烈,不学上一两门新技能,保持自己知识更新,很容易被年轻后辈超越。有些人选择学一门外语,有些人选择学习职场上为人处事的能力。

    养码场
  • 七夕了,不如和程序员谈一场没有BUG的恋爱

    但一直在跟程序员们接触的场主觉得,程序员靠谱,踏实,有耐心,又聪明,绝对是理想男友的首选啊!!!

    养码场
  • Failed to fetch URL http://dl-ssl.google.com/android/repository/addons_list-2.xml, reason:

    http://blog.csdn.net/gyming/article/details/8168166/

    yuanyuan
  • 360滴滴合作这事,颜水成其实早就漏了口风

    编著注:9月6日,360和滴滴围绕司乘安全保证、专车服务方面达成战略合作。滴滴专车将率先装备360行车记录仪,确保行车安全。 其实在8月份于深圳召开的2016 ...

    AI科技评论
  • 教育部长袁贵仁详解:推行高校创新创业教育要做六件事

    为深入贯彻落实《国务院办公厅关于深化高等学校创新创业教育改革的实施意见》和国务院刚刚召开的全国就业创业工作电视电话会议精神,6月2日,教育部在京召...

    腾讯高校合作
  • SDN实战团分享(二十):From Lithium to Beryllium,ODL最新动态变化

    大家好, 感谢宇峰的邀请, 和大家分享OpenDaylight最新发布的一些进展,胶片主要来自Neela Jacques, Phil Robbs和Colin D...

    SDNLAB
  • SDN实战团分享(二十):From Lithium to Beryllium,ODL最新动态变化

    家好, 感谢宇峰的邀请, 和大家分享OpenDaylight最新发布的一些进展,胶片主要来自Neela Jacques, Phil Robbs和Colin Di...

    SDNLAB
  • Java迭代器模式(iterator)

      迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。又称为:游标cursor模式

    用户4919348
  • 如何使用SAP APF里的过滤器

    In APF Configuration Modeler, there is a filter with type Smart Filter Bar autom...

    Jerry Wang

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动