您的位置:首页 > 其它

协议设计者应该遵循的10条重要原则

2012-06-04 21:37 267 查看
最初驱动了Internet的设计,并且使得Internet今日如此成功的原则,RFC 1958这份文档列出了这些原则,并且对他们进行了讨论。对于所有的协议设计者都必须好好的看看这份文档,也是必修课。以下概要地列出这10条原则。

1、保证协议能够工作。

直到有多个原型系统能够可以成功地相互通信之后,才可以最终确定设计或者确定标准协议。现在的设计者往往先编写出一份1000页的标准,并申请批准之后,才发现标准中有严重的缺陷,而且它根本不能够工作。然后他们再编写1.1版本的标准,这并不是正确的工作方式。

2、尽可能使它简单

毫无疑问,任何时候都应该使用最简单的方案。奥卡姆的威廉(William of Occam)在14世纪的时候就已经提出了这条原则了(称为奥卡姆的剃刀 Occam‘s razor),换成现代的术语就是:决斗特性(fight feature)。如果一项特性并非绝对本质的的特性,那么就不应该考虑该特性,尤其是,如果通过组合其他的特性也能够获得同样的效果的情况下。

3、做出明确的选择

如果有几种方法可以完成相同的事情,则选择其中一种方法。用两种或者多种方法来做同样的事情简直就是自找麻烦。通常标准会有多个选项,或者有多种模式,或者有一些参数,因为实力强大的参与方坚持认为他们的方法是最好的。而设计者必须坚决抵制这种倾向,要学会说“不”。

4、尽可能做到模块化

这条原则直接导致了协议栈的思想,每一层上的协议独立于其它的协议。按照这种方法,如果实际环境中要求改变一个模式或者一层,则其它的模块不会受到影响。

5、期望具备异构性

在任何一个大型的网络中,不同的硬件、传输设施和应用都有可能存在,为了能够对它们进行处理,网络的设计必须简单、通用和灵活。

6、避免使用固定不变的选择和参数

如果不可避免要使用参数的话(比如最大的分组长度),那么,最好的办法就是让发送方和接收方协商一个值,而不是定义固定的参数值。

7、寻找一个好的设计,它不必是完美的

通常设计者有一个好的设计,但它不能够处理一些怪异的特例,那么,设计者不应该为此而对该设计进行大幅度的修改,而应该坚持这个好的设计,并且将支持怪异特例的负担转移到那些对此有特殊需求的人身上。

8、对于发送操作一定要严格,而对于接收操作要有一定的容忍度

换句话说,只发送那些严格符合标准的分组,但是,容许接收到的分组可能是不完全符合标准的,并且要试图对它们进行处理。

9、要考虑伸缩性

如果一个系统需要有效地处理上百万台主机和几十亿用户,那么,存在任何一个中心化的数据库都是难于容忍的,也就是说,不能使用中心化的数据库,同时,必须将负载尽可能均匀的分布到所有可利用的资源上。

10、要考虑性能和代价

如果一个网络的性能很差,或者代价特别高,那么没有人会使用这样的网络。

--《计算机网络(第四版)》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: