最新动态

最近无意中发现了一本有趣的书:《网络的构建过程是怎样的?》。

我记得之前网上看过比较火的一个问题:从我们输入地址到浏览器显示页面发生了什么?
这本书很好的诠释了这个问题。
确切地说,应该是详实的回答了这个问题。

一. 从输入网址到浏览器生成请求

首先,我们来探索浏览器的工作方式。
大家可以认为我们的探索之旅是从浏览器中输入网址开始的。
比如我们输入这样的网址时,浏览器会按照一定的规则去分析这个网址的含义,然后根据其含义生成请求消息。

例如,当我们输入网址“https://www.example.com/”时,浏览器生成的请求消息表示:“请给我该地址的数据。”

接着,浏览器会将请求消息发给web服务器。
当然,浏览器并不会亲自负责数据的传送。
传送消息是搬运数字信息的机制负责的活。

浏览器会委托将数据发送出去。
也就是拜托操作系统中的网络控制软件,也就是协议栈大佬,将消息发给服务器。

二. 协议栈与网络信息传输

紧接着,我们将探索搬运数据的机制。
其中最先出场的是协议栈。
它会将从浏览器接收到的消息打包,然后加上目的地址等控制信息。
好比邮局,就是把信装进信封,然后在信封上写上收件人的地址。

协议栈除了能够打包数据外,还有其他的能耐。
例如,当发生通信错误时,它会重新发送数据包或者调节数据发送的速率等等。

接下来,协议栈会将数据包交给网卡,网卡是这么一个人设:负责以太网或者无线网通信的硬件。

然后,网卡会将数据包转换为电信号并通过网线发送出去。

这样一来,数据包就进入到网络中。

三. 网络设备接力传递

接下来出场的物品会根据接入互联网的形式不同而不同。
客户端计算机可以通过家庭或公司的局域网接入互联网,也可以单独直接接入互联网。

我们以现在最典型的场景为例,假设客户端计算机是连接到家庭或者公司的局域网中,然后再通过DSL和光纤到户等宽带线路接入互联网。

在这样的场景中,网卡发送的包会经过交换机等设备,到达用来接入互联网的路由器。

路由器的后面就是互联网,网络运营商会负责把包送到目的地。

四. 接入网与互联网骨干

数据从用来接入互联网的路由器出发,进入了互联网的内部。
互联网的入口线路称为接入网。
一般来说,我们可以用电话线、ISDN、DSL、有线电视、光纤、专线等多种通信线路来接入互联网,这些通信线路统称为接入网。

接入网连接到签约的网络运营商,并接入被称为接入点的设备。
接入点的实体是一台专为运营商设计的路由器,你就把他设想成距离你家最近的邮局。

从各个邮筒中收集来的信件会在邮局进行分拣,然后被送往全国甚至全世界。

互联网也是一样一样的,网络包首先通过接入网被发送到接入点,然后再从这里被发送到全国甚至全世界。

接入点的后面就是互联网的骨干部分了。
在骨干网中存在很多运营商和大量的路由器,这些路由器相互连接,组成一张巨大的网,而我们的网络包就在其中,经过若干路由器的接力,最终被发送到目标Web服务器上。

五. Web服务器的处理

通过骨干网之后,网络包最终到达了Web服务器所在的局域网中了。
接着,它会遇到防火墙。
大家可以把防火墙想象成门口的保安,他会检查所有进入的包,看看有没有危险的包混在里面。

检查完之后,网络包接下来可能还会遇到缓存服务器。
网页数据中有一部分是可以重复利用的,这些可以重复利用的数据就被保存在缓存服务器中了。

如果要访问的网页数据正好在缓存服务器中能够找到,那么就可以不用劳烦Web服务器了,直接从缓存服务器读出数据。

此外,大型网站中可能还会配备负载均衡器和分布式缓存服务器来分发内容。

经过这些机制之后,网络包才会到达Web服务器。

六. 数据返回与浏览

当网络包达到Web服务器后,数据会被解包并还原为原始的请求消息,然后交给Web服务器程序。
和客户端一样,这个操作也是由操作系统中的协议栈来完成的。

接下来,Web服务器程序分析请求消息的含义,并按照其中的指示将数据装入响应消息中,然后发回给客户端。

响应消息回到客户端的过程和我们介绍的过程正好相反。

当响应到达客户端之后,浏览器会从中读取网页的数据并在屏幕上显示出来。

到这里,访问Web服务器的一系列操作就全部完成了。
我们的探索之旅也到达了终点。
抓紧时间学起来,趁着春光年少,充实自己,让自己变得越来越强。