分布式系统架构:技术栈详解与快速进阶
上QQ阅读APP看书,第一时间看更新

第3章
分布式架构网络传输

分布式架构网络是由分布在不同地点且具有多个终端的节点机互连形成的。网络中任意一节点均至少与两条线路与其他节点相连,当任意一条线路发生故障时,通信可转经其他线路完成,从而使网络具有较高的可靠性和可扩充性。网络传输是基于可靠的线路和网络传输协议来实现的。

本章重点内容如下:

  • 网络传输协议
  • 网络传输调用过程
  • 网络传输优化

3.1 网络传输协议

通信协议简称传输协议,在电信领域,是指在任何物理介质中允许处于传输系统中的两个或多个终端之间传播信息的系统标准。通信协议在硬件、软件或两者之间皆可实现信息传输。

为了使交换信息量足够大,通信系统使用通用格式协议,每条信息都有明确意义从而使预定位置给予响应,并独立回应指定的行为。在通信协议参与实体都同意时通信过程才能生效。为了达成一致,协议必须要有技术标准,编程语言在计算方面也应有相应标准。

OSI是一个开放性的通信系统互连参考模型,它是一个很好的协议规范。OSI模型有7层结构,从低到高分为物理层、数据链路层、网络层、传输层、会话层、表现层、应用层。

注意

OSI模型的7层结构中,应用层、表现层、会话层、传输层定义了应用程序的功能;网络层、数据链路层、物理层主要实现网络端到端的数据流连接。网络中的计算机与终端间要想正确地传送信息和数据,必须在数据传输的顺序、数据的格式及内容等方面有一个约定或规则,这种约定或规则称为协议。

下面将详细介绍OSI模型的7层结构。

1. 物理层

物理层是OSI的第一层,它虽然处于最底层,却是整个开放系统的基础。物理层为设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的环境。OSI的物理层规范是关于传输介质的特性,这些规范也参考了其他组织制定的相关标准。连接头、帧、帧的使用、电流、编码及光调制等都在物理层规范的范畴中。物理层常用多个规范完成对所有细节的定义。

物理层最主要的功能如下。

  • 为数据端设备提供数据传送的通路。数据通路可以是一个物理媒体,也可以是由多个物理媒体连接而成的体系。一次完整的数据传输,包括激活物理连接、传送数据、终止物理连接。所谓激活,就是不管有多少物理媒体参与,都要在要通信的两个数据终端设备间建立一条通路。
  • 传输数据。物理层要形成适合数据传输的实体,为数据传送提供支持。要实现这一点,一是要保证数据能在其上正确通过,二是要提供足够的带宽(带宽是指每秒内能通过的比特(BIT)数),以减少信道上的拥塞。数据传输的方式能满足单点到单点、单点到多点、串行或并行、半双工或全双工、同步或异步传输的需要。

2. 数据链路层

数据链路可以粗略地理解为数据通道。物理层要为终端设备间的数据通信提供传输媒体及其连接。媒体是长期的,而连接是有生存期的。在连接生存期内,收发两端可以进行不等的一次或多次数据通信。每次通信都要经过建立通信联络和拆除通信联络这两个过程。这种建立起来的数据收发关系就叫作数据链路。而在物理媒体上传输的数据难免受到各种不可靠因素的影响而产生差错,为了弥补物理层上的不足,并为上层提供无差错的数据传输,就要具有对数据进行检错和纠错的能力。数据链路的建立和拆除,对数据的检错和纠错是数据链路层的基本任务。数据链路层定义了在单个链路上如何传输数据。这些协议与被讨论的各种介质有关。

数据链路层最主要功能如下。

  • 为网络层提供数据传送服务,这种服务要依靠本层具备的功能来实现。链路层应具备建立、拆除、分离链路连接,以及帧定界和帧同步等功能。链路层的数据传输单元是帧,协议不同,帧的长短和界面也有差别,但无论如何必须对帧进行定界。
  • 顺序控制,指对帧的收发顺序进行控制。
  • 差错检测和恢复,以及链路标识、流量控制等。进行差错检测时多用方阵码校验和循环码校验来检测信道上数据的误码,而进行帧丢失检测时则用序号校验。各种错误的恢复则常靠反馈重发技术来完成。

3. 网络层

在网络层对端到端的包传输进行定义。网络层定义了能够标识所有节点的逻辑地址,还定义了路由实现的方式和学习的方式。为了使最大传输单元长度小于包长度,网络层还定义了如何将一个包分解成更小的包的方法。

网络层最主要的功能如下。

  • 通常在数据传输的过程中,数据包会经过网络层,而网络层可以通过路由把数据包传递到下一个线路,由于网络是动态可变的,所以网络层需要实时监控数据包,并且规划设置每个数据包的最佳路线。具体线路由路由算法实现,如链路状态算法、距离矢量算法。
  • 路由器中有路由表的概念,其主要为路由器提供包的方向依据,路由器会根据每个到达包的地址来确定方向并转发包。当路由器接收包的速度小于转发包的速度时,会把暂时不能发送的包存储在缓冲区中,等待发送。后续会尝试发送缓冲区的包。
  • 网络层传输包时也会存在拥塞,路由器会控制拥塞,从而尽可能提高网络效率和降低丢包率。
  • 在网络传输过程中,路由器会根据包的类型来确定优先级,优先级高的先转发,低的后转发。

4. 传输层

传输层是两台计算机经过网络进行数据通信时第一个进行端到端处理的层次,具有缓冲作用。当网络层服务质量不能满足要求时,传输层会提高服务质量,以满足更高层的要求;当网络层服务质量较好时,传输层只用做很少工作,如监控、传输数据包。传输层还可进行复用,即在一个网络连接上创建多个逻辑连接。传输层又称运输层,只存在于端开放系统中,是OST模型介于低3层和高3层之间的一层,是很重要的一层,因为它是从源端到目的端传送数据时进行从低到高控制的最后一层。

有一个既存事实,即世界上各种通信子网在性能上存在很大差异,例如电话交换网、分组交换网、公用数据交换网、局域网等都可互连,但它们提供的吞吐量、传输速率、数据延迟通信费用各不相同。但会话层要求有性能恒定的界面,而传输层就承担了这一功能。传输层采用分流/合流、复用/解复用技术来调节上述通信子网的差异,主要用于判断是选择差错恢复协议还是无差错恢复协议,以实现在同一主机上对不同应用数据流的输入进行复用,以及对收到的顺序不对的数据包进行重新排序。

5. 会话层

会话层提供的服务可使应用建立和维持会话,并能使会话获得同步。通过使用校验点,会话层可使通信会话在通信失效时从校验点继续恢复通信,这种能力对于传送大的文件极为重要。会话层、表示层、应用层构成开放系统的高3层,面对应用进程提供分布处理、对话管理、信息表示、恢复最后的差错等功能。会话层同样要满足应用进程服务的要求,完成运输层不能完成的那部分工作,包括对话管理、数据流同步和重新同步。会话层定义了如何开始、控制和结束一个会话,包括对多个双向消息的控制和管理,以便在只完成连续消息的一部分时即可通知应用,从而确保表示层看到的数据是连续的,在某些情况下,如果表示层收到了所有的数据,则可用数据代表表示层。

会话层最主要功能如下。

  • 为会话的实体间建立连接,具体包括将会话地址映射为运输地址、选择需要的运输服务质量参数(QOS)、对会话参数进行协商、识别各个会话连接、传送有限的透明用户数据。
  • 数据传输阶段在两个会话用户之间实现有组织的、同步的数据传输。用户数据单元为SSDU,而协议数据单元为SPDU。会话用户之间的数据传送过程是将SSDU转变成SPDU的过程。
  • 通过有序释放、废弃、限量透明用户数据传送等功能单元来释放会话连接。为了在会话连接建立阶段能进行功能协商,也为了便于其他国际标准参考和引用,会话层标准定义了12种功能单元,各个系统可根据自身情况和需要,以核心功能服务单元为基础,选配其他功能单元组成合理的会话服务子集。

6. 表现层

表现层的主要功能是定义数据格式及对数据加密。例如,FTP允许选择以二进制或ASCII格式进行传输。如果选择二进制,那么发送方和接收方不能改变文件的内容。如果选择ASCII格式,发送方将把文本从发送方的字符集转换成标准的ASCII后再发送数据,接收方则会将标准的ASCII转换成接收方计算机的字符集。

7. 应用层

应用层对应应用程序的通信服务。例如,一个没有通信功能的字处理程序是不能执行通信代码的,从事字处理工作的程序员也不关心OSI的应用层,但是如果添加了一个传输文件的选项,那么字处理器的程序就需要实现OSI的应用层。

8. 小结

会话层及其以下的4层完成了端到端的数据传送,并且是可靠、无差错的传送,但是数据传送只是手段而不是目的,最终是要实现对数据的使用。由于各种系统对数据的定义并不完全相同,以键盘为例,其上某些键的含义在许多系统中都有差异,这给利用其他系统的数据造成了障碍,表示层和应用层就担负了消除这种障碍的任务。

分层的优化如下:

1)层间的标准接口方便了工程模块化;

2)可创建更好的互连环境;

3)每层可利用紧邻的下层服务,更容易记住各层的功能;

4)降低了复杂度,使程序更容易修改,产品开发速度更快。

OSI 7层模型是一个理论模型,实际应用中千变万化,因此应把它作为分析、评判各种网络技术的依据。对大多数应用来说,只可将它的协议族(即协议堆栈)与7层模型进行大致的对应,查看实际用到的特定协议是属于7层中的某个子层,还是包括了上下多层的功能。