当我们在浏览器中输入www.cnn.com时,在幕后会发生什么?如何在屏幕上显示信息?
技术上的解释将不胜感激。
当我们在浏览器中输入www.cnn.com时,在幕后会发生什么?如何在屏幕上显示信息?
技术上的解释将不胜感激。
Answers:
浏览器: “好,所以,我有一个用户要求该地址: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上大笑了!”
浏览器: “嘿,用户!网站已经准备就绪-去获取您的新闻!”
CERN的一个很好的解释-网络母校:网络的运作方式
第一步是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请求,并检查其修改日期。如果此日期晚于其缓存副本,它将再次请求完整的文档内容并刷新页面。否则,它将仅使用您的本地副本。
这显然不是技术上的解释,但它是一种可爱的视觉辅助工具(来自优秀的Vladstudio.com),可能对某些人有帮助:
Jeff Moser在他的博客上对HTTPS请求进行了出色的技术分析:HTTPS Connection的最初几毫秒。
“ Sendung mit der Maus”(非常受欢迎的德国儿童电视节目,为儿童介绍了技术)上有一段非常酷的视频:
互联网上的Wis funktioniert das Internet (Internet的工作原理)。
不幸的是,仅德语,但即使没有文字也很有趣。戴好头盔的人玩IP数据包,并将数据写到纸卡上。经典:-)。
顺便说一句,解释实际上是相当好的。