概述
最初驱动了Internet的设计,并且使得Internet今日如此成功的原则,RFC 1958这份文档列出了这些原则,并且对他们进行了讨论。对于所有的协议设计者都必须好好的看看这份文档,也是必修课。以下概要地列出这10条原则。
1、保证协议能够工作。
直到有多个原型系统能够可以成功地相互通信之后,才可以最终确定设计或者确定标准协议。现在的设计者往往先编写出一份1000页的标准,并申请批准之后,才发现标准中有严重的缺陷,而且它根本不能够工作。然后他们再编写1.1版本的标准,这并不是正确的工作方式。
毫无疑问,任何时候都应该使用最简单的方案。奥卡姆的威廉(William of Occam)在14世纪的时候就已经提出了这条原则了(称为奥卡姆的剃刀 Occam‘s razor),换成现代的术语就是:决斗特性(fight feature)。如果一项特性并非绝对本质的的特性,那么就不应该考虑该特性,尤其是,如果通过组合其他的特性也能够获得同样的效果的情况下。
如果有几种方法可以完成相同的事情,则选择其中一种方法。用两种或者多种方法来做同样的事情简直就是自找麻烦。通常标准会有多个选项,或者有多种模式,或者有一些参数,因为实力强大的参与方坚持认为他们的方法是最好的。而设计者必须坚决抵制这种倾向,要学会说“不”。
这条原则直接导致了协议栈的思想,每一层上的协议独立于其它的协议。按照这种方法,如果实际环境中要求改变一个模式或者一层,则其它的模块不会受到影响。
在任何一个大型的网络中,不同的硬件、传输设施和应用都有可能存在,为了能够对它们进行处理,网络的设计必须简单、通用和灵活。
如果不可避免要使用参数的话(比如最大的分组长度),那么,最好的办法就是让发送方和接收方协商一个值,而不是定义固定的参数值。
通常设计者有一个好的设计,但它不能够处理一些怪异的特例,那么,设计者不应该为此而对该设计进行大幅度的修改,而应该坚持这个好的设计,并且将支持怪异特例的负担转移到那些对此有特殊需求的人身上。
换句话说,只发送那些严格符合标准的分组,但是,容许接收到的分组可能是不完全符合标准的,并且要试图对它们进行处理。
如果一个系统需要有效地处理上百万台主机和几十亿用户,那么,存在任何一个中心化的数据库都是难于容忍的,也就是说,不能使用中心化的数据库,同时,必须将负载尽可能均匀的分布到所有可利用的资源上。
如果一个网络的性能很差,或者代价特别高,那么没有人会使用这样的网络。
--《计算机网络(第四版)》
最后
以上就是调皮日记本为你收集整理的协议设计者应该遵循的10条重要原则的全部内容,希望文章能够帮你解决协议设计者应该遵循的10条重要原则所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复