理解 HTTP(一):网站内容是怎麽被下载到电脑里的?

你是否曾经好奇浏览网页时,输入的网址为什麽都是 http 开头的?

网路模型 TCP/IP 聊起,经过网路层的 IP 到传输层的 TCP,HTTP 就是基於这些资料传输协定之上的应用层协定,我们今天就来看看现代人每天上网的背後都会用到的 HTTP 是何许协定吧!

HTTP 是什麽?超文本又是什麽?

HTTP,HyperText Transfer Protocol,译作「超文本传输协定」。直白的说就是定义如何传输「超文本」,但什麽又是超文本呢?

这个概念的灵感来源被认为是在最初在 1941 年的短篇小说 The Garden of Forking Paths 中出现,在 1989 年 HTTP 的专案被 Tim Berners-Lee 发起时,描述 HyperText 为包含「超连结」文字及图像的一种文本。

我想「超连结」对大家应该在熟悉不过了,也就是点了之後可以连到其它网页,或概念上称作文本的文字。而传输「超文本」的协定,就是我们这次的主题 HTTP。

HTTP 之中的角色分为两个,一个是客户端,另一个是服务器端。当你用电脑在浏览网页时,你的电脑浏览器就是客户端,会询问你想要浏览的网站服务器,能否把网站的档案传给你。

HTTP 资料的传输:请求及回应
*HTTP 资料的传输:请求及回应

整个传输资料的过程相当直接,就是我问你答:客户端送出一个「请求」,而服务器端送回一个「回应」。

下载网页的流程

你常在用的浏览器,不论是 Chrome, Safari, Firefox 还是 Edge 等等,都是透过 HTTP 把网站的内容抓下来,但是并非一次问与答就把所有的档案下载回来。

浏览器请求网页
*浏览器请求网页

当你点了某个超连结,或是在网址列输入一串网址之後,你的浏览器便会透过 HTTP 对服务器端送出第一个请求,假如没有被拒绝的话,你通常会得到一个副档名为 HTML 的档案。

HTML(HyperText Markup Language)就是用来呈现超文本的一种「语言」,浏览器被设计成可以读懂这种「语言」,因此当你下载成功一份 HTML 档案之後,浏览器便会把这种语言翻译成你看的懂得样子,也就是漂亮的网页,这个翻译的过程被称做「渲染」。

但刚开始渲染 HTML 时只有文字能够显示出来,一份 HTML 档案里面只有纯文字,无法夹带图片,通常也不会把排版的样式写在一起。所以这些图片、样式档会通过接下来一连串的 HTTP 请求,和服务器端获取。

例如我们浏览 Google 时,打开浏览器的开发者模式,在 Network 的标签处可以看到下载了哪些档案。

Chrome 开发者模式查看下载文件

由於这些档案都是一步一步下载到你的电脑中的,所以有的时候浏览网页时会发现怎麽刚开始版面是跑掉的,图片还没载入的情况。

为何都是 http 开头

回到最开头的问题,为何网页都是 HTTP 开头的呢?提到 HTTP 开头的这种写法,就不得不先说 URL(Uniform Resoure Locator)。

URL 也就是大家俗称的网址,常见书写的格式为 [协定]://[服务器位置]:[连接埠号码]/[档案路径]...,刚开始要填入的 [协定] 在透过 HTTP 下载网页资料时便要填入 http。除此之外也有 ftp://mailto:// 用来下载档案和传送 email 的写法。

所以当我们要浏览网页时,由於要透过 HTTP 来下载网页内容,我们就要在 URL 的协定部分填上 HTTP。但现在的浏览器基本上都预设你要透过 HTTP 来上网了,当你只打上 URL 後面的网站位置等资讯,也会自动帮你加上 http 罗!

今天先简单的理解 HTTP 及日常上网背後的流程,明天进阶一点聊聊 HTTP 的其它细节。

参考资料

  1. Wiki - HTTP
  2. Wiki - HyperText
  3. Wiki - URL

<<:  【D32】结尾

>>:  有时差的我如何跟团队协作

System Design: 读书心得4

正在写~ Problem: Need to increase Messenger’s perform...

Day17 - 【概念篇】OAuth flows: Client Credentials

本系列文之後也会置於个人网站 +---------+ +---------------+ | | ...

【在 iOS 开发路上的大小事-Day12】好用的 CocoaPods 套件-IQKeyboardManagerSwift

前情提要 在开发 App 的时候,有遇过键盘开启的时候,TextField 却被挡住无法输入的情况吗...

#21数据中的机率(2)

tags: tags: 2021IT 对事物运动这种不确定性(随机性)的肚量就是机率论。 假设我的的...

11 发动回转卡!

再加入 回转功能卡 进入胜利判断之前 我想整理一下判断胜利相关的方法 每天都发现昨天写的很恶 目前是...