知识卡片
层次化风格
内容
层次化风格把系统组织成若干层次,每层由一系列组件构成,层次之间存在接口、形成call/return关系——下层构件向上层提供服务,上层构件是下层组件的客户端;某些分层系统中内层只对相邻层和某些输出函数可见,对其他外层是隐藏的,此时组件相当于在某些层中实现了一台虚拟机。连接件通过协议定义、规定层次间的交互方式,拓扑结构限制通常是”只能与相邻层交互”。优点有三:支持基于可增加抽象层的设计,把复杂问题分解成增量步骤序列;支持扩展,每层的改变最多只影响相邻层;支持重用,只要相邻层提供相同接口,同一层的不同实现就可以互换(如OSI的ISO模型、X Window System协议正是靠标准层接口做到这一点)。缺点是:不是所有系统都容易构建成层次结构;即使逻辑上能分层,出于性能考虑也常需要把高层功能和低层实现结合起来;定义合适的抽象层次很困难,实际协议栈常跨多层、难以精确映射到理想的层次模型(这正是ISO七层模型在工程实践中屡遭诟病的根源)。TCP/IP协议栈是该风格最典型的案例,采用应用层/传输层/网际层/网络接口层四层结构:应用层直接为用户应用提供服务(如HTTP/SMTP/FTP);传输层负责两个主机进程间通信,靠TCP(可靠传输、出错重传)或UDP实现复用分用;网际层负责跨主机的分组交换与路由选择,把传输层报文段封装成IP数据报;网络接口层负责相邻节点间的点对点数据传送,把IP数据报组装成帧再透明传送比特流。
结构图:
flowchart TD
A["应用层<br/>HTTP/SMTP/FTP"] -->|call/return| B["传输层<br/>TCP复用分用/UDP"]
B -->|call/return| C["网际层<br/>IP协议、路由选择"]
C -->|call/return| D["网络接口层<br/>帧组装、比特流传送"]
参考来源
- 位置:《软件架构理论与实践》第4章《软件架构的风格与模式》"4.3.4 层次化风格"节(源文件:_epub-src/OEBPS/text00034.html)
- 结论依据:原文说明"层次之间存在接口,通过接口形成call/return的关系——下层构件向上层构件提供服务",并详细说明TCP/IP四层结构中每层的具体职责("应用层……直接为用户的应用提供服务"、"网际层……负责为分组交换网上的不同主机提供通信服务"),直接支撑本卡片的结构图与内容解释。
- 原始内容:协议采用了4层的层级结构(应用层、传输层、网际层、网络接口层),每一层都呼叫它的下一层所提供的网络来完成自己的需求……TCP负责发现传输的问题,一有问题就发出信号,要求重新传输……IP是给因特网的每一台计算机规定一个地址。