互联网 怎么工作
在地址栏输入一行网址,按下回车,页面很快就出现了。在这短短的一瞬间,这个领域学过的东西按顺序一齐发生:凭名字找到地址,建立可靠的连接,给连接上锁,然后收发页面。我们就从头到尾,跟着这条看不见的流程走一遍。
在地址栏输入网址
旅程的起点是地址栏。输入想去的网站的名字,按下回车,那一刻漫长的旅程就开始了。
在我们看来只是一眨眼,里面却有好几项约定接连各司其职。它们正是这个领域里一项项学过的那些约定。现在就从头开始,一步步跟着这段旅程走。
在地址栏里一块块点着输入名字。输完,旅程就开始了。
名字输好了,可电脑还不知道该往哪里去。名字是为了方便人记而起的,电脑要找路,得有一个由数字组成的地址。
所以第一件事,就是查出这个名字指向的真正数字地址。负责这件事的约定,我们前面已经见过了,就是 DNS。
DNS 把名字换成地址
第一项约定是 DNS。前面学过,DNS 就像一本巨大的电话簿,报出名字,它就告诉你数字地址。浏览器先看看手边有没有最近查到的答案,没有的话,再去问专门负责查名字的服务器。
于是,电脑要用的真正地址清清楚楚地回来了。到这时,才终于知道该往哪里去。这个地址就是整段旅程的出发点。
点一下“问 DNS”。输入的名字变成数字地址(IP)回来了。这就是前面学过的 DNS。
名字变成了数字地址。可是知道地址,不等于马上就能到。通往那个地址的路,连着数不清的岔路口。
要发送的数据被分成叫数据包的小块,先经过家里的路由器,再从一台路由器走到另一台路由器。这时,家里的路由器会用 NAT 把家里的地址换成公网地址再送出去。数据包、找路、NAT,都是前面学过的内容。接下来,该和对方服务器真正建立连接了。
用 TCP 连接,用 HTTPS 上锁
知道了地址,就和那个地址上的服务器建立连接。让这个连接可靠的,是 TCP。一开始双方要互相打三次招呼,确认彼此都准备好了;之后,缺了的块重新收,顺序乱了就理顺,让数据一个不少、按顺序到达。
连接稳了,就在上面加一把锁。那把锁就是 HTTPS。它用证书确认对方是真的,商定一把双方共用的钥匙,再把来往的内容锁起来。
先点“建立连接(TCP)”,再点“上锁(HTTPS)”。两步都完成,安全的通道就打开了。这是前面学过的 TCP 和 HTTPS 两项约定依次工作的样子。
连接建立了,锁也上好了。一条牢靠、上了锁、值得信赖的通道打开了。
可我们真正想要的不是连接本身,而是通道另一头的页面。还剩最后一项约定,让我们能在这条通道上收发页面。
一眼看清整条流程
最后一项约定是 HTTP。在安全的通道上,浏览器发出请求“请把这个页面给我”,服务器就回答“给你”,把页面送过来。浏览器还会通过同一条通道,继续请求页面需要的图片和样式文件。
这些碎片凑齐、画到屏幕上,旅程才终于结束。现在,把从地址栏到页面的整条流程归拢到一起吧。从最下面一步开始,一个个点亮就行。
从下往上依次点亮各步:地址栏 → DNS → IP 地址 → TCP → HTTPS → HTTP。全部点亮,页面就到了。
一格格亮起来,页面终于在最上面到达了。地址栏、DNS、地址、连接、锁、页面,少了哪一样,旅程都会停下。
每项约定都相信下面的约定会做好自己的事,自己只把分内的事做准。HTTP 不用知道 TCP 怎么搬运数据块,TCP 也不用知道数据包走哪条路。像这样一层层叠起来的样子,就是前面学过的分层。
小结
用一句话概括:在地址栏输入网址,DNS 就凭名字找到数字地址,数据包经过家里的路由器和其他路由器,前往那个地址。
TCP 让数据一个不少、按顺序到达,HTTPS 给通道上锁,HTTP 在上面收发页面。数据包、地址、路、分层、可靠的传送、安全,全都在这一条流程里。这就是互联网运转的方式。
依次点这个领域学过的要点,回顾一下。(数据包 → 地址 → 路 → 分层 → 信任 → 网页 → 安全)
你一路跟到了这里。今后在地址栏输入网址时,你能想象出背后发生了什么:名字变成地址,数据包穿过一条条路,各项约定依次手拉手。
互联网不是魔法,而是许多小约定聚在一起、共同运转的巨大邮政系统。网络领域到这里就结束了。下一个数据领域,会看看电脑怎样存放、整理并快速找出这样来来往往的数据。