网络分层的好处
如上图,假设我们有很多的同类的数据对象(这是计算机存在的意义),如果我们要让这些对象互相间通讯,自然我们要让每一个对象实现一次它们的通讯方法,虽然它们是相同的。
但是你会发现,它们之间的联系是如此紧密(我们用术语耦合度来描述这种度量),在左边的图,由于每个对象之间都有通讯方法(虽然是相同而且是标准的),但是它们的耦合度太高,以致于如果失去或者增加任何一个对象,都需要对通讯方法进行连接或者断开连接,就商业价值来说,成本太高了(不是说性能不好)。
于是我们用一个统一的通讯中介来进行对象之间的通讯,见图的右边的拓扑结构。这样可以极大地减少对象的耦合度,让对象更加轻松和自由,自然数据对象小了,操作就方便多了。
很好,我们可以总结出一个结论:减少耦合度可以减少数据对象之间操作的成本!
比如:如果不分层的情况下,我们会怎么实现UDP和TCP协议呢?
我们会这样,实现一个提供连接的IP协议和一个不提供连接的IP协议,于是如果还要实现多一个提供多连接特性的协议(比如说Mtcp,当然它是我虚构出来的),那将会很麻烦了,我们还要再写一次IP协议头部(header)相关的信息。
好,现在我们向减少耦合性的方向去思考,自然就是实现一个IP协议,再实现一个提供连接的,提供
连接,不提供连接,和提供多连接!
于是我们可以归纳出:
分层的原因是因为减少以后继续增加功能的成本(想一想,这个和园区网的分层是不是很类似?);
分层的好处是减少了耦合度,让功能的细化更加易于实现;
分层导致的结果是层之间必须提供接口,让层可以互相认知(头部,协议类型)和标准化每个细化的具体格式(分组格式)。
分层和我们的社会有没有共同点?
分层意味着分工的细化,这是社会进步和科技发展的具体表现之一!
分层的优点是:
1、人们可以很容易的草论和学习协议规范的许多细节
2、层间的标准接口方便了工程模块化。
3、创建了一个更好的互*作环境。
4、降低了复杂性,使程序的修改更容易,产品开发的数度更快。
5、每层利用紧邻的下层服务,因此容易记住各层是做什么的(例如,网络层需要进行端到端的数据传输。为此,它使用数据链路层向端到端路径中的下一个后继设备转发数据)
[CISCO网络学院的观点(在网络设计中)]
层次化网络的好处
弹性
层次化网络扩充简单
冗余性
核心和集散层的冗余保证路径的高可用性
性能
层次间强连通性和高性能的核心和集散层交换机允许网络的流量以线速通过
安全
接入层的端口安全和集散层的策略让网络更加安全
可管理性
各层间交换机的一致性让管理变得简单
可维护性
分层设计的模块化让网络可测量而不会变得过于复杂