Ila*_*ste 140
浏览器: “好吧,我有一个用户请求这个地址:www.cnn.com。我认为因为没有斜线或任何东西,这是一个主页的直接请求。也没有定义协议或端口,所以我会假设它是 HTTP 并转到端口 80 ......哦,首先,首先。嘿 DNS,伙计,醒醒!这个 www.cnn.com 藏在哪里?”
DNS: “好吧……等一下,我去问问ISP服务器。好吧,看起来像157.166.226.25。”
浏览器: “好的。互联网协议套件,轮到你了!请拨打 157.166.226.25。向他们发送这个 HTTP 标头。它要求他们主页的基本结构和内容,所以我知道还有什么要获取......哦,好吧,不是说你会关心这个,我猜。”
TCP/IP: “轮到我了是什么意思?就像我不只是在那里为 DNS 工作?上帝,在这里得到一点赞赏需要什么......”
浏览器: ...
TCP/IP: “是的,是的......正在连接......我会要求网关转发它。你知道,这不是那么容易,我必须将你的漂亮请求分成多个部分所以它到了最后,从我收到的所有数千个包裹中组装他们发回的任何东西......啊,对,你不在乎。数字。”
与此同时,在CNN总部,一条消息终于出现在了Web Server的门口。
CNN网络服务器: “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: “好吧,应该就这些了。嘿,听着……抱歉,我之前对你大发雷霆,你在那里管理?这对你来说似乎也是相当大的负担。”
浏览器: “呼,是的,现在都是这些网站,它们肯定不会让你轻松。好吧,我会管理。这就是我来这里的目的。”
TCP/IP: “我想这些天对我们所有人来说都是相当沉重的......哦,不要再对 DNS 幸灾乐祸了!”
浏览器: “嘿用户!网站准备好了 - 去获取你的新闻!”
Kyl*_*tan 18
wah*_*den 12
第一步是 DNS(域名服务器)查找。它使用在您的网络设置中指定的 DNS 服务器(或由 DHCP 提供给您)来查找顶级域 (cnn.com),然后向该域的名称服务器询问指定子域 (www.cnn.com) 的 IP 地址。
获得 IP 地址后,您的浏览器开始与 Web 服务器通信。这是使用指定的协议(通常默认为 HTTP 1.1)完成的。向服务器发出对“/”的“GET”请求,服务器以 HTML 文档内容和适当的标题(告诉浏览器文档的内容类型、HTML 和其他信息)进行响应。然后浏览器解析文档并找到它需要嵌入到页面中的任何 URL(如图像或链接的样式表),并对每个 URL 执行 GET 请求。
浏览器通常还会自动向“/favicon.ico”发出 GET 请求(以在站点标题旁边显示小 CNN 图标)。
您的浏览器也可能会在其请求标头中指定它希望使用 gzip 算法压缩响应内容。如果服务器支持,这会使文件下载小得多。这对您来说都是透明的,即使这就像下载 ZIP 文件并解压一样。
当您重新加载页面时,您的浏览器会检查该页面是否已经缓存在您的系统中,如果是,它会仅针对文档的标题发出 HTTP 请求,并检查其修改日期。如果此日期晚于其缓存副本,它会再次请求完整的文档内容并刷新页面。否则它只会使用您的本地副本。
与其他答案相去甚远的是 CNN 方面发生的事情:
| 归档时间: |
|
| 查看次数: |
42704 次 |
| 最近记录: |