当您在浏览器中浏览网站时会发生什么?


64

当我们在浏览器中输入www.cnn.com时,在幕后会发生什么?如何在屏幕上显示信息?

技术上的解释将不胜感激。


在本书中可以找到很好的技术解释:《计算机网络:自上而下的方法》第6版(链接:本书)。(第495-500页)它们涉及相当多的细节。从打开计算机电源到在用户浏览器中显示网站的过程开始。您可以从这套幻灯片中了解本书中提到的内容。(链接:幻灯片 88至95)
Slothworks,2014年

Answers:


134

浏览器: “好,所以,我有一个用户要求该地址:www.cnn.com。我认为由于没有斜杠或其他任何东西,所以这是直接请求主页。也没有定义协议或端口,所以我假设它是HTTP并要连接到端口80 ...哦,首先,第一件事。嗨,DNS,朋友,醒醒!这个www.cnn.com藏在哪里?”

DNS: “好吧……请稍等,我将询问ISP服务器。好吧,它看起来像157.166.226.25。”

浏览器: “好吧,轮到Internet协议套件!请致电157.166.226.25。向他们发送此HTTP标头。它询问其主页的基本结构和内容,所以我知道还有什么要获取的...哦,我猜这并不是说你会在意。”

TCP / IP: “您的意思是转弯?就像我不只是为了DNS而努力吗?天哪,在这里得到一点赞赏……”

浏览器: ...

TCP / IP: “是的,是的。。。连接。。。我只是问网关转发它。要知道,这并不那么容易,我必须将您的漂亮请求分成多个部分这样就到头了,然后组装他们从我收到的所有成千上万个软件包中寄回的任何东西……嗯,对,你不在乎。

同时,在CNN总部,一条消息最终在Web服务器的门口响起。

CNN Web服务器: “Nzhôô!一个客户!他想要新闻!首页!怎么样?”

CNN服务器端脚本引擎: “对,会的!首页,对吗?”

CNN数据库服务器: “是!为我工作!您需要什么内容?”

CNN服务器端脚本引擎: “ ...嗯,对不起,DB,我在缓存中有头版的副本,不需要编译任何东西。但是,请使用此用户ID并将其存储,我将其发送给我也与客户交流,因此我们知道以后要与谁交谈。”

CNN数据库服务器: “好!”

回到用户的计算机...

TCP / IP: “哎呀,这是答复。哦,男孩,为什么我觉得这会是个大问题……”

浏览器: “嗯,哇...这有各种各样的javascript代码...一堆图像,几种形式...对了,这需要一段时间才能呈现出来。最好使用它。嘿,IP系统,还有很多其他的东西,让我们看看我需要i.cdn.turner.com上的一些样式表-通过HTTP并请求文件/cnn/.element/css/2.0/common.css。然后在i.cdn.turner.com上也获得其中一些脚本,到目前为止我已经数了六个...”

TCP / IP: “我知道了。只给我服务器地址和所有这些。然后将文件内容包装在HTTP请求中,我不想处理它。”

DNS: “正在检查i.cdn.turner.com ...嘿,琐事,实际上是cdn.cnn.com.c.footprint.net。IP为4.23.41.126”

浏览器: “当然,确定...请稍等片刻,这将花费几秒钟的时间,我正在尝试理解所有这些脚本...”

TCP / IP: “嘿,这是您要的CSS。哦,是的,这些其他脚本也刚回来了。”

浏览器: “哇,还有更多……某种视频广告!”

TCP / IP: “哦,男孩,这听起来有多有趣……”

浏览器: “也有各种各样的图像!而且这个CSS看起来有点讨厌...对,因此,如果那部分去了,并且该行位于顶部...到底该如何适应呢...不,我将不得不对此进行一些扩展...哦,但是其他CSS文件会覆盖该规则...好吧,这肯定不是一件容易渲染的事情,这是肯定的!”

TCP / IP: “好吧,好吧,别再让我分心了,这儿还有很多事情要做。”

浏览器: “用户,这是一个小的进度报告。很抱歉,这可能要花几秒钟,要加载的元素大约有140种,到目前为止,要加载16种。”

一两秒钟后...

TCP / IP: “好,应该就这些了。嘿,听着……对不起,我较早地向您冲刺,您在那儿管理吗?这肯定也给您带来了负担。”

浏览器: “ Ph,是的,如今是所有这些网站,它们肯定会让您不方便。嗯,我来管理。这就是我在这里的目的。”

TCP / IP: “我想这些天对我们所有人来说都相当沉重……哦,别再在DNS上大笑了!”

浏览器: “嘿,用户!网站已经准备就绪-去获取您的新闻!”


17
所以这是我的电脑在天黑之后所做的。
Phoshi

7
很棒的解释...帽子向您
拉切尔

7
精彩的故事讲述:)
Michael Borgwardt

5
@dex:...直到今天,它们仍在不断发展壮大,以勤奋的态度整理出用户的所有异想天开的请求,值得历史书赞扬。但是,像所有事物一样,有一天他们将退休,过时地优雅地适应更现代的现代方法。但是请放心,他们将永远存在,在我们的遗产中,带着明知的微笑进行观看,并将他们在新兴的互联网通信蓬勃发展的时代中学到的所有艰辛的经验传授给子孙后代。
Ilari Kajaste 09年

3
反对者的万岁,对,@ wahnfrieden?我认为它非常准确,而且内容丰富。
尔根·艾哈德


18
  • 浏览器将您键入的内容(URL)分为主机名和路径。
  • 浏览器形成一个HTTP请求,以要求给定主机名和路径的数据。
  • 浏览器执行DNS查找,以将主机名解析为IP地址。
  • 浏览器与通过IP地址指定的计算机建立TCP / IP连接。(此连接实际上是由许多计算机组成的,每台计算机都将数据传递给下一台计算机。)
  • 浏览器将HTTP请求通过连接发送到给定的IP地址。
  • 该计算机从TCP / IP连接接收HTTP请求,并将其传递到Web服务器程序。
  • Web服务器读取主机名和路径,并查找或生成您要求的数据。
  • Web服务器生成一个包含该数据的HTTP响应。
  • Web服务器将该HTTP响应向下发送回TCP / IP连接到您的计算机。
  • 浏览器接收HTTP响应,并将其拆分为标头(描述数据)和正文(数据本身)。
  • 浏览器解释数据以决定如何在浏览器中显示它-通常,这是HTML数据,用于指定信息的类型及其一般形式。
  • 其中一些数据将是元数据,用于指定需要加载的其他资源,例如用于详细布局的样式表,嵌入式图像或Flash电影。再次将该元数据指定为URL,并且对每个元数据重复整个过程,直到全部加载完毕。

这很好,但是可能值得一提的是缓存(在浏览器和其他位置),代理,负载平衡,CDN等。我认为所有这些都是理解(地球上)繁忙站点如何处理数百万几乎同时请求大量内容的关键部分。
山姆·达顿

12

第一步是DNS(域名服务器)查找。它使用网络设置中指定的DNS服务器(或由DHCP提供给您的DNS服务器)查找顶级域(cnn.com),然后向该域的名称服务器请求指定子域(www.cnn.com)的IP地址。

获得IP地址后,您的浏览器便开始与Web服务器通信。使用指定的协议(通常默认为HTTP 1.1)完成此操作。向服务器发出对“ /”的“ GET”请求,服务器以HTML文档内容和适当的标头(向浏览器告知文档的内容类型,HTML以及其他信息)作出响应。然后,浏览器解析该文档并找到它需要嵌入到页面中的所有URL(例如图像或链接的样式表),并对每个URL进行GET请求。

浏览器通常还会自动向“ /favicon.ico”发出GET请求(以在网站标题旁边显示小CNN图标)。

您的浏览器还可能会在其请求标头中使用gzip算法指定要压缩响应内容。如果服务器支持,这将使文件下载小得多。这一切对您都是透明的,即使就像下载一个ZIP文件并将其解压缩一样。

重新加载页面时,浏览器将检查该页面是否已在系统中缓存,如果已缓存,则仅对文档标题进行HTTP请求,并检查其修改日期。如果此日期晚于其缓存副本,它将再次请求完整的文档内容并刷新页面。否则,它将仅使用您的本地副本。


这个家伙不了解基本知识,您只是用DNS,DHCP和IP炸毁了他。让我们向他解释IP数据包的结构!

6
他要求提供技术细节。如果需要,他可以查找IP。

问题是他可能不想查找任何东西... :(

8

CNN端发生的事情远远没有其他答案:

  • CNN上的一台机器从您的计算机接收到询问该页面的消息。
  • 它将请求重定向到CNN用于其网站的众多计算机之一(其原因是这样,您可以将响应网页的工作分散到许多计算机上)
  • CNN计算机会收到您的请求,并以几乎完全预先计算的网页作为响应,但是在将其发送给您之前,它可能会进行一些更改(可能是顶部的广告,可能是头条新闻)。有时,计算机在每次收到请求时都由许多小组件组成页面。不确定CNN会做什么
  • 响应通过网络到达您的计算机,然后将其显示出来。
  • 响应不包括图像:您的计算机随后发送了另一个图像请求,几乎发生了相同的情况。

6

这显然不是技术上的解释,但它是一种可爱的视觉辅助工具(来自优秀的Vladstudio.com),可能对某些人有帮助:

互联网如何运作


1

您刚刚询问的信息可能会填满几十本书。但是,我尝试对此进行解释:您的浏览器告诉您的操作系统找到cnn.com的IP地址。然后,您的操作系统向DNS服务器询问cnn.com的IP地址。IP被发送到与IP地址联系并请求页面的浏览器。然后,cnn.com向您发送html页面。浏览器解析html并将信息发送到HTML渲染器。然后,浏览器告诉OS屏幕上显示的内容。



1

“ Sendung mit der Maus”(非常受欢迎的德国儿童电视节目,为儿童介绍了技术)上有一段非常酷的视频:

互联网上的Wis funktioniert das Internet (Internet的工作原理)。

不幸的是,仅德语,但即使没有文字也很有趣。戴好头盔的人玩IP数据包,并将数据写到纸卡上。经典:-)。

顺便说一句,解释实际上是相当好的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.