计算机网络各层协议
协议设计
系统工程原理已应用于创建一组通用网络协议设计原理。复杂协议的设计通常涉及分解为更简单的协作协议。这样的一组协作协议有时在概念框架内称为协议族或协议套件。
通讯系统同时运行。并发编程的一个重要方面是软件的同步,用于按正确的顺序接收和发送通信消息。传统上,并发编程一直是操作系统理论课本中的主题。
形式验证似乎是必不可少的,因为并发程序因它们所包含的隐藏的和复杂的错误而臭名昭著。研究并发和通信的数学方法称为通信顺序过程。
也可以使用有限状态机在电信或电子设备中以硬件的形式用作数字电子系统中的设计工具。
计算机通信与编程之间的许多类比。类似地,协议的传输机制可与中央处理单元相提并论。该框架引入了规则,这些规则允许程序员彼此独立地设计协作协议。
分层
在现代协议设计中,将协议分层以形成协议栈。分层是一种设计原则,它将协议设计任务划分为较小的步骤,每个步骤完成一个特定的部分,仅以少量明确定义的方式与协议的其他部分进行交互。
分层使协议的各个部分得以设计和测试,而无需案例的组合爆炸,使每个设计都相对简单。Internet上使用的通信协议旨在在各种复杂的环境中运行。
Internet协议旨在简化和模块化,并适合Internet协议套件中定义的功能层的粗略层次结构。前两个合作协议,即传输控制协议和Internet协议,是将原始的传输控制程序(单片通信协议)分解为该分层通信套件的结果。
在OSI模型是基于对网络,早在互联网作为与协议交互和严谨的层次感更严格的规则,一般通信的参考模型的经验国际上开发的。通常,应用程序软件构建在强大的数据传输层上。
这个传输层的基础是数据报传递和路由机制,该机制通常在Internet 中是无连接的。跨网络的数据包中继发生在仅涉及网络链接技术的另一层上,该技术通常特定于某些物理层技术,例如以太网。分层提供了在需要时交换技术的机会,例如,协议通常以隧道的形式堆叠在一起,以适应不同网络的连接。例如,可以在异步传输模式(ATM)网络上通过隧道建立。
协议分层协议
分层构成协议设计的基础。它允许将单个复杂协议分解为更简单的协作协议。每个协议层解决一类独特的通信问题。这些图层共同构成一个分层方案或模型。计算处理算法和数据;通信涉及协议和消息。
因此,数据流程图的类似物是某种消息流程图。为了可视化协议分层和协议套件,图3中显示了两个系统A和B之间以及之间的消息流图。两个系统A和B都使用相同的协议套件。
垂直流(和协议)在系统内,水平消息流(和协议)在系统之间。消息流由规则控制,而数据格式由协议指定。蓝线标记(水平)协议层的边界。软件分层建立了协议分层和协议后,协议设计者现在可以继续进行软件设计。
该软件具有分层的组织,其与协议分层的关系如图所示。
实施协议的软件模块由多维数据集表示。模块之间的信息流由箭头表示。(顶部的两个水平)红色箭头是虚拟的。蓝线标记层边界。
为了在系统A上发送消息,顶部模块与其正下方的模块进行交互,并移交要封装的消息。该模块通过将消息封装在其自己的数据区域中并根据其实现的协议填充其标头数据来进行响应,并在适当时通过移交此新形成的消息来与其下的模块进行交互。
底部模块直接与系统B的底部模块进行交互,因此将消息发送出去。在接收系统B上发生相反的情况,因此最终(并假设没有传输错误或协议违规等),消息以其原始形式传递到系统B的顶部模块。
对于协议错误,接收模块会丢弃已接收的片段,并通过将错误消息传递到下一层或在底层模块将其发送的情况下,将错误情况报告回同一层上的片段原始来源
消息或数据流的分割和随后的重组在引入分割/重组的层中进行处理。
重组是在目的地(即不在任何中间路由器上)进行的。程序翻译分为四个子问题:编译器,汇编器,链接编辑器和加载器。结果,翻译软件也进行了分层,从而可以独立设计软件层。
注意到由于编程语言和协议之间的类比,解决程序转换复杂性的方法可以很容易地应用于协议,因此TCP / IP协议套件的设计者渴望在软件框架上施加相同的层次。在TCP / IP分层中,可以考虑将已编译的Pascal程序(消息)(应用程序层的功能)转换为汇编程序(将其转换为传输层的功能)与目标代码(段)的汇编程序),它是由链接编辑器链接到(Internet层的功能)与库对象代码(路由表)在一起的,生成可重定位的机器代码(数据报),该机器代码传递到加载器,该加载器填充内存位置(以太网地址),以生成可执行代码(网络帧),以将其加载(网络接口层的功能)到物理内存(传输介质)中。
为了显示类比的紧密程度,前一句中括号之间的术语表示相关的类似物,草写的术语表示数据表示。程序翻译形成线性序列,因为每一层的输出都作为输入传递到下一层。此外,翻译过程涉及多种数据表示。
协议软件中发生了同样的事情,其中多个协议定义了在软件模块之间传递的数据的数据表示形式应用层以下的模块通常被认为是操作系统的一部分。在这些模块之间传递数据比在应用程序和传输层之间传递数据便宜得多。应用程序层和传输层之间的边界称为操作系统边界。
严格分层
严格遵循分层模型(一种称为严格分层)的实践,并不总是最佳的网络连接方法。严格的分层会严重影响实现的性能,因此,在简单性和性能之间至少要进行权衡。虽然协议分层的使用在当今计算机网络领域无处不在,但历史上却受到两个研究者的批评,主要有两个原因。首先,以这种方式抽象协议栈可能导致高层复制较低层的功能,最主要的例子是基于每个链路和端到端的错误恢复。
应用层协议的设计模式
通信协议的设计和实现中常见的常见问题可以通过几种不同的模式语言来解决:应用程序级通信协议的模式语言(CommDP),服务设计模式,企业模式应用程序体系结构,面向模式的软件体系结构:一种用于分布式计算的模式语言。这些模式语言的第一个侧重于协议的设计,而不是其实现。其他问题则解决了这两个领域或仅后者的问题。