计算机网络是指独立自治、相互连接的计算机集合。自治是指每台联网的计算机其功能是完整的,可以独立工作,并且其中任何一台计算机都不能干预其他计算机的工作,任何两台计算机之间没有主从关系(这就将主-从备份系统和主机-终端系统排除在计算机网络之外)。相互连接是指计算机之间在物理上是互连的,在逻辑上能够彼此交换信息(这涉及通信协议)。确切地讲,计算机网络就是用通信线路将分布在不同地理位置上的具有独立工作能力的计算机连接起来,并配置相应的网络软件,以实现计算机之间的数据通信和资源共享。
很明显,网络必须首先提供若干计算机之间的连通性(connectivity)。网络的连通性可以在不同层次上实现。在最底层,网络可以由两台或多台计算机通过某种物理介质(如双绞线或光纤)直接连接,我们称这种物理介质为链路(link),并称被连接的计算机为节点(node),如图1-1所示。物理链路有时限于一对节点,这样的链路称为点到点链路(point-to-point link);有时多个节点可以共享一条物理链路,这样的链路称为多路访问链路(multiaccess link)或点到多点链路(point-to-multipoint link)。
图1-1 直连网络
无论直连链路是支持点到点访问还是多路访问,连通性都依赖于节点连接到链路上的方式。多路访问链路的连通范围通常还会受到一些限制,包括所能覆盖的地理范围和所能连接的节点数量。卫星链路是一个例外,它可以覆盖很广阔的地理范围。
如果要求计算机网络中的所有节点都彼此直接进行物理连接,那么每个节点所需要的网络接口卡(Network Interface Card, NIC)和链路数量会非常多,这样不仅增加了连网成本,也限制了网络所能连接的节点数量。
好在两个节点之间的连通性并不一定要求它们之间采用直接物理连接来实现连通,我们可以通过一系列中间节点(intermediate node)的合作来实现任意两个端节点(end node)之间的连通性。
下面通过图1-2给出的例子说明如何使计算机之间实现间接连通。
图1-2 交换网络
在图1-2中,中间节点即网络设备(如交换机或路由器)之间通过点到点链路或多路访问链路相互连通,端节点(如计算机)和中间节点之间也通过点到点链路或多路访问链路直接连接。中间节点将从某条链路接收到的数据转发到另一条链路,从而完成任意两个端节点之间的连通。上述中间节点形成一个交换网络(switched network)。
交换网络的组网方式可以基于不同的交换技术。最常见的交换网络是用于电话系统的电路交换网络(circuit-switching network)和用于计算机网络的分组交换网络(packet-switching network)。本书将重点介绍用于计算机网络的分组交换网络。
分组交换网络一般采用存储-转发(store-and-forward)方式,因此分组交换网络也称为存储-转发网。正如其名字一样,存储-转发网中的每个中间节点先接收数据,并将其存储在中间节点中,然后将其转发给下一个节点。与分组交换网络不同的是,电路交换网络首先会在发送端和接收端之间建立一条专用电路,然后通过这条专用电路将发送端的数据发送给接收端。计算机网络使用分组交换技术而不使用电路交换技术的主要原因是资源的利用效率高,后面将重点讨论此问题。
图1-2中云形图内的中间节点通常称为交换机,它的唯一功能就是存储和转发数据,而云形图之外的节点就是计算机,用于运行用户程序。还要注意,图1-2中的云形图是计算机网络中最重要的图标之一。通常我们用云形图来表示任何类型的网络。无论网络是一条点到点链路、一条多路访问链路,还是一个交换网络,都可以用云形图来表示。这样,可以把本书中任何一个图中的云形图看作一种网络技术的表示。
实现计算机之间间接连通的第二种方式如图1-3所示。在这种情况下,一些彼此独立的网络(云形图)互连形成一个互联网络(internetwork或internet)。连接两个或多个网络的节点设备通常称为路由器(router)。路由器的功能与前面介绍的交换机大致相同,它从一个网络接收数据并将其转发到另一个网络中去。
图1-3 互联网络
仅仅将主机彼此直接连接或间接连接并不意味着已经成功地提供了主机到主机的连通性。最终每个主机节点必须说明它希望与网络上的哪些其他节点通信,通过给每个节点指定一个地址(address)可以做到这一点。如果发送节点和接收节点不是直接连接的,中间节点(如交换机或路由器)将使用地址来确定如何将数据转发到目的节点。根据地址来确定如何将数据转发到目的节点的过程称为路由(routing)。
通过以上讨论,读者应该明白可以将多个节点通过物理链路相连,或者将两个或多个网络相连。提供网络连通性的最关键问题在于为每个网络节点分配地址,网络节点通过该地址进行路由,将源节点的数据正确地发往目的节点。