2. 实验探索指南
当我们在浏览器输入网址,到屏幕上能显示出网页的内容,在这个过程中,虽然只有短短几秒钟,背后需要有数量庞大的硬件和软件相互配合才能完成这一系列的工作。为了带领大家探索这一系列过程,本课程实验选取了9个网络小实验,关注网络连接过程中较为典型的某几个环节,希望能让大家见一叶能知深秋,窥一斑而见全豹,从而对巨大而复杂的计算机网络全貌有一个较为深入全面的认识。
上图是实验的路线图(如果你在做实验过程中迷失了方向,可以回过头来看一看这张地图)。
当我们访问Web服务器,或者通过邮件客户端发送邮件时,客户端的web/邮件应用程序和服务器之间就会有一系列的交互。以浏览器访问web服务器为例,主要的交互信息如下:
浏览器:“请给我XXX网页的数据。”
Web服务器:“好的,这就是你要的数据。”
为了实现浏览器和Web服务器之间的交互,我们需要一个能够传递请求和响应的机制,这种机制是由网络协议栈、网络驱动,以及交换机、路由器等设备分工合作来实现的。
其工作流程大致如下(更多的网络全貌详见参考文献中的《网络是怎样连接的》):
当我们在浏览器输入网址,浏览器会按照一定的规则分析这个网址的含义,然后根据其含义生成请求信息。但浏览器不会亲自负责数据的传送,它会委托操作系统的网络协议栈将数据发送出去。在这一过程中,浏览器发出的数据类似于要寄出的信或包裹。
网络协议栈会将这些数字信息分割成一个一个的小块,然后再装入“包(Packet)”的容器中,然后在包的头部加上目的地址等控制信息。在这一个过程中,类似于将信装进信封,然后在信封上写上收件人的地址,信息分割的过程类似分成几个包裹发送。
接着,从网卡发送的包会经过交换机、路由器等设备,到达NAT路由器后,可以通过ADSL和光纤到户(FTTH)等宽带线路,将家庭或企业的局域网接入互联网。在这一过程中,类似于将信件投到邮筒中。
数据从用来接入互联网的路由器出发,就进入了互联网的内部。在互联网骨干网,存在很多运营商和大量的高速大型路由器,它们以复杂的形式连接起来组成一张巨大的网。这些大型路由器虽然在规模上或接入方式上与家用路由器不一样,但数据包都是以相同的方式传输,这也是互联网的一大特征。在这一过程中,类似于从各个邮筒中收集来的信件会在邮局进行分拣,然后被送往全国甚至全世界。
通过骨干网后,网络包最终达到Web服务器所在的局域网中。在这一过程中,类似于信件被运输到目的地所在的城市。
如果Web服务器所在的局域网较大,经过若干路由器/交换机的接力,最终被发送到目标Web服务器上。类似于快递员还需要将信件送到目的地所在的街道或小区。
当网络包到达Web服务器后,数据会被解包并还原为原始的请求消息,然后交给Web服务器程序。在这一过程中,类似于接收人收到信件后拆开信封,拿出里面的信。
接下来,Web服务器程序分析请求消息的含义,并按照其中的指示将数据装入响应信息中,然后发回给客户端,发回过程和上述我们介绍的过程正好相反。这一过程,类似于收件人根据信件内容回信。到这里,访问Web服务器的一系列操作就全部完成了。