体系结构实际上是一组设计决策,设计支持哪些特点和在哪里实现这些特点。设计一个体系结构更多的是艺术而不是科学。
体系结构原则
TCP/IP 协议族允许计算机、智能手机和嵌入式设备之间通信。TCP/IP 系统,构成了全球因特网(Internet)的基础,而因特网为计算机之间提供了消息通信能力,并诞生了万维网这样供人们使用的具体通信的应用。 Internet 体系结构的首要目标是将多种网络互联起来,并在互联的网络上同时运行多个应用。
连接、分组和数据报
20 世纪 60 年代之前,网络的概念主要是基于电话网络。它是针对在一次通话中连接双方通话而设计的。一次通话中通话双方之间会建立一条连接。连接建立后,它会提供资源(带宽或容量)以便用户进行通话;在通话完成后,连接才会被释放。
20 世纪 60 年代出现了一个重要概念:分组交换思想。在分组交换中,数据结构以“分组”的形式通过网络。不同资源区发送的分组可以相互结合产生新的分组,分组在传输过程中也能再次拆分成其他分组,这就是多路复用了。对于传输路径,块在传输过程中需要在交换设备之间传输,并且路径可以改变。这样处理有两个优点:网络更有弹性,可以更好地利用链路和交换设备来完成统计与复用。
Internet 中处理不同来源的混合流量的主要方法是 FIFO(先进先出)。当分组到达分组交换机时,它们会存储在缓存或队列中并通过先到达先服务的方式处理,这就是最简单的分组处理调度方式,也就是 FIFO。
面向连接网络是在每台交换机上为每条连接存储信息或状态。在连接建立之前,每个数据流状态已经建立,该协议支持连接建立、清除状态和信息。 在 20 世纪 60 年代后期,数据报出现了。数据报是一个特定类型的分组,所有有关来源和最终目的地的识别信息都位于分组(而不是交换机)中。虽然这会让数据包变大,但是不需要在交换机中维护连接状态,它可以建立一个无连接的网络。
端到端论点和命运共享
当我们设计一个大型系统时,我们必须考虑的是:核心功能应该在什么位置实现。
端到端论点认为底层(交换机与链路等)只负责数据传递,重要功能(差错控制、加密、交付确认)必须由产品或应用端完成。
命运共享建议将所有必要的状态放在通信端点,这样操作后,通信失效时端点也会一并失效,以至于整个网络都挂掉。
当前 Internet 中的矛盾是:哪些功能在网络中实现,哪些功能不在网络中实现。
差错控制和流量控制
网络中存在数据顺怀或丢失的情况。这可能出于各种原因,例如硬件问题、数据传输中被修改、超出 WiFi 范围等。对这种错误的处理称为差错控制。它可以在构成网络基础设施的系统、连接到网络的系统或其他组合中实现。
当分组数据被损坏后,整个分组应该被重新传输或重新传输。而关于分组顺序,一个可靠的文件传输应用并不关心交付的文件数据块的顺序,最终将所有分组无差错地交付并按原来顺序重新组合即可。
流量控制机制是由上层应用来实现,它可以降低发送方的发送速度,从而控制关于应用的分组传输速率。