计算机网络提供了计算机之间的连通性,连通性体现在多个层次上:
在最底层,计算机网络可以由两台或者更多台计算机通过某种物理介质(例如同轴电缆、光纤、无线电)直接相连,我们称这样的物理介质为"**链路(link)**",并称被连接的计算机称为"**节点**"。
有时一条物理链路仅存在于一对节点之间,我们称这样的链路为**点到点(point-to-point)链路**。
在多数情况下,多个节点可以共享一条物理链路,我们称这样的链路为**多路访问(multiple-access)链路**。
通常情况下,**多路访问链路的大小是有限制的**,包括它们所能**覆盖的地址位置**和所能**连接的节点数目**。
如果计算机网络被局限于所有节点通过一个公共的物理介质**彼此直接相连**的情况,那么由于**多路访问链路的大小是有限制**的,我们则**只能在每个节点之间建立一条通信链路(不需要是专门的,多路访问链路即可)**。但是这种方式的**扩展性很低并且成本太高**,每当网络中**增加了一台计算机**,我们就需要增加很多链路来**确保它和其它节点之间存在一条彼此直接相连的链路**。
幸运的是,我们可以通过**转发**的方式来实现节点之间的连通。这意味着,两个节点之间**并不一定需要有一条彼此直接相连的链路**,而是可以**通过一系列合作节点实现间接的连通性**。
![](http://images2015.cnblogs.com/blog/833931/201612/833931-20161201213325724-978062881.jpg)
上图显示了一组节点(A、B、C、D、E、H1、H2、H3、H4、H5、H6),每个节点都连在一条或多条链路上(可以是点到点链路,也可以是多路访问链路)。那些连接着至少两条两路的节点(H1、H2、H3、H4、H5、H6)运行一套软件,用于**将从一条链路收到的数据转发到另一条链路上**。如果将这些节点按系统化的方式进行组织,就形成了一个交换网络(switched network)。
根据转发的方式不同,交换网络有很多种类型,最常见的是**电路交换(circuit switched)**网络和**分组交换(packet switched)**网络。电路交换网络主要用于电话☎️系统,而分组交换网络主要用于绝大多数的计算机网络(还有一些计算机网络不是分组交换网络,例如ATM网络).
##电路交换:
电话交换网络事先通过一系列链路建立一条**专用链路**(以确保后面的比特流不会被其它节点发生的比特流干扰),然后允许源节点通过这条链路将**比特流**连续地发送到目标节点,实际效果就**如同这两个节点存在一条直接彼此直接相连的链路一样**。(这也说明了这条通过一些列链路建立起的链路为什么是专用的,在双方进行通信之前不允许有其它节点使用这条链路,即使在多路访问链路种也是如此)
特点:
- 通信之前,需要建立连接(即建立专用链路),通信结束之后需要释放连接
- **转发的单位**是**比特位**
- 通信期间,链路专用
通信前:
![](http://images2015.cnblogs.com/blog/833931/201612/833931-20161201213401427-745743755.jpg)
A和D进行通信:我们使用蓝色来表示A发送给D的数据
![](http://images2015.cnblogs.com/blog/833931/201612/833931-20161201213439974-212138700.jpg)
由于电路交换是以比特作为转发单位,当通信充足时,整条线路都会呈现蓝色
当H也和E进行通信时:我们使用红色来代表H发送给E的数据
![](http://images2015.cnblogs.com/blog/833931/201612/833931-20161201213511521-502294760.jpg)
此时B无法和G和F进行通信,因为没有空闲的链路能给用来建立一条专用的链路。
并且此时A也无法和除D之外的节点进行通信。触发它有多块网卡,并连接了其它的链路。
##分组交换:
分组交换网络使用的是一种**先存储后转发**的机制,我们称该机制为"**存储转发**"。
分组交换网络中的每个节点先通过某条链路接收一段连续的比特流,我们称这一段连续的比特流为一个**分组**,然后再将这个分组转发给下一个节点。
在分组交换网络中,链路上是**以分组作为传输单元**而不是以**比特**作为传输单元进行传输,所以可以确保分组的完整性。因此,不需要事先建立连接(可以实现建立连接,但如果建立连接,那我为什么不使用电路交换的方式呢,实时性更好)。
交换机和路由器都是用来充当转发节点的设备,它们都具备对分组的存储和转发功能。
接着之前的图:我们使用黄色来表示B发送给G的数据
![](http://images2015.cnblogs.com/blog/833931/201612/833931-20161201213546771-1389835177.jpg)
- 与电路交换相比,中间节点在接收一段连续的比特流时需要先将这些比特存储在节点内部,而电路交换则不需要存储,直接转发比特
- 分组交换以分组作为单位进行转发,需要将先数据分割成若干个分组,再进行传输。电路交换必须要将数据进行分割,直接以比特位单位进行转发
##电路交换与分组交换的对比:
- 电路交互实时性较高,而分组交互实时性较差
- 电路交互的链路利用率较低,两个节点在通信之间的链路专用;分组交换的链路利用率较高。这一点主要体现在当通信期间双方并非一直在发送数据时,譬如我们的HTTP服务就是如此
- 电路交换面向连接(在通信之前需要实现建立连接),提供可靠交付;分组交换不需要建立连接,服务质量位不可靠交付
##TCP/IP因特网
在当前的因特网中,采用的是分组交互技术。
计算机之间的间接连通还可以看成是由一些独立的网络相互互联而形成的一个互联网(internetwork,简称internet,注意⚠️是i是小写)。我们依照因特网的习惯,将通称的互联网拥'i'开头的internet表示,而将当前运行的TCP/IP因特网拥"I"开头的Internet表示。
连接两个网络或者多个网络的节点通畅称为路由器(router)或者网关(gateway),交换机主要负责一个网络内的消息转发,而路由器主要负责网络之间的消息转发。