计算机系统013 - 网络互联

472

种种原因,中间停更许久,想来既然文集号称要包括网络,那就趁近日偷得闲暇,慢慢补上。

声明: 本系列文章中图片大部分并非自绘,如有侵权,请联系删除。

惯例回顾前文,从电学讲到硬件,从硬件讲到操作系统,至此脑中的计算机已可开机运行。所谓程序,不过是既定的指令排版,随外界触发而应答。也就是说必须要有I/O的参与,运行才有了意义。在计算机还未普及的时代,I/O的参与者并不多,网络也并未普及,人们只能使用软盘、硬碟以至后期的U盘通过手动拷贝、人工携带的方式进行资料的传播。及至网络(尤其是WIFI)的普及,Internet才真正日新月异地改变生活。

那么先来解决一个问题,什么是Internet?

Internet

The Internet is the global system of interconnected computer networks that use the Internet protocol suite (TCP/IP) to link devices worldwide. A computer network, or data network, is a digital telecommunications network which allows nodes to share resources.

从字面来看,意为通过协议互联的计算机网络。而计算机网络,就是通过数字通讯实现结点资源共享的网络。简单地讲,计算机网络就是计算机之间通过某种链接进行信息传递,而所谓因特网(Internet),就是很多计算机网络之间为了进行信息传递,而按照一定协议相互链接形成的大网络。稍微整理一下,就可以看到这里面有几个要素:

  • 结点

    结点,也叫终端(End Systems)、主机(Hosts)等等,归根结底一句话,是一个可联网的设备。可联网必须有网卡,网卡有其出产前定下的MAC地址,这就是结点在网络中的唯一硬件标识。

  • 链接

    链接可以是有形的硬件,比如网线,也可以是无形的能量,比如电波。条条大路通罗马,只要结点双方可以找到一条通路,即是互联。

  • 协议

    所有的约束源于不同,人与人之间需要共同语言(至少是共同语种)才能进行对话,结点之间也一样。为了顺畅而准确地交流,不同结点间必须定义某种协议,各自严格遵守,才不会引发误解。同样的事情还发生在各类文件格式标准中,只有遵守约定俗成的文件格式进行读写,才能可靠还原出原本的内容。

进一步之前,先看一下一条信息在网络中传递的大致路径。

从图中可以看出,信息从结点A传递至结点B需要经过如下环节:

  • Switch 交换机

    Swtich也成为网桥(MAC bridge),意为将多个MAC地址集中互联,组成网络。其面向的是MAC地址一层,属于数据链路层(后续协议中会讲到)。

  • Router 路由器

    路由器用于在不同网络之间进行分组交换,其面向的是IP地址一层,属于网络层。因此相对交换机而言,最大的不同是各自面向的层级。

  • ISP 互联网供应商

    路由器连接数个由交换机组成的网络后,形成初级规模的互联网,多为区域性网络。为了能使不同区域网络中的设备也能相互通信,那么就需要架设更多硬件实现互联,而硬件也代表着成本,专业从事这项工作的部门或企业就成为了互联网运营商,国内如移动、联通、电信等都是互联网运营商。

    运营商运营的是硬件设备间数据通信的能力,即数据流量、带宽等资源。出于成本及市场控制等因素的考虑,不同运营商之间进行数据通信,则往往需要消费者付出更大的代价。

    同时,有了通信能力运营商的出现,使得信息贩卖更加便捷,因此也逐步出现了内容供应商,他们提供内容资源,通过通信网络贩卖给有相应需求的用户。这类供应商典型的有爱奇艺、优酷等。

    CDN

    多提一句,中华地大,如果内容供应商只在某地提供服务器,则远离该服务器物理地址的用户需要通过更多次路由器转发才能访问成功,会极大提高获取内容所需时长,降低体验,因此通常会采取CDN技术避免该类现象。因此CDN的本质是通过:

    • 单点服务器冗余实现负载均衡
    • 地理多点服务器内容冗余降低响应时长

网络延时

从上面结点A、B间通信路径来看,单次通信所需时长很大程度由如下因素决定(为便于描述,将下图中信息统称为分组Packet):

  • Porcessing

    分组处理视需求而定,如是否包含位校验等,通常高速路由器在该阶段所需时长在毫秒级甚至更少。

  • Queueing

    路由器内部会为每个出口链接维护一个队列,处理后的分组将会根据其头部中的IP地址信息分往对应出口。此处所耗费时间视当前队列空闲情况而定,队列越满,耗费时间越长,队列越空,则耗费时间越短甚至为0。因此需要注意,这段延时是每个分组各自不相关的,即存在各不相同的情况

  • Transmission

    路由器在发出一个分组之前,必须完整接收该分组,否则也不能完成前面的处理环节。不同路由器处理的能力有快慢,单位通常为Mbps,也就是常说的百兆千兆路由。假设分组长度为L,而处理速率为R,那么传输延时就是 L/R

  • Propagation

    传输只是送出路由本身,路漫漫才刚开始。或是通过硬件光纤、或是通过无线电波,都必须将电信号一一传输到对端,路径越长、路径本身传输速率越低,相应延时就越大。但不论多远,距离/速度也终有到达之日,所以说最遥远的距离,是你就站在我面前,我却找不到路由器来链接你。

分组丢失

一人旅行从A到B,却在中途丢失,那通常有两个可能:

  • 他走了错误的路,穷其一生,像迷宫中的蚂蚁,不幸始终未找到正确的路径,抵达出口
  • 他压根不在路上,或是掉下了船,或是坠入的深渊,总而言之,已经彻底消失

分组也一样,丢失有两种可能:

  • 被路由送入错误的队列,从此迷途,最终耗尽自己的Time To Live(TTL),毁灭
  • 在队列中被挤出,离开路径,英年早逝

所以说管理源于资源稀缺性,世界虽大,物种也不少,网络虽大,分组则更多。个体的消失其实司空见惯,如果某个个体真的重要,那请多耗费些资源,将其变成Very Important Person(VIP)。对应的,UDP服务于一般分组,TCP则静待贵宾。

小结

不忘初心,分组只是想从A到B,历经三大要素。按照前面管理,自此行文会花开三朵,各起一章。然而本人对硬件部分关注不多,幸好常理来讲,读者也不会过于深挖硬件,因此网络三要素中,只讲协议,至于前两点涉及部分,将只在相关协议层中穿插说明。