织梦CMS - 轻松建站从此开始!

罗索

当前位置: 主页>基础技术>Soft.Eng>

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

落鹤生 发布于 2013-03-06 14:51 点击:次 
最初驱动了Internet的设计,并且使得Internet今日如此成功的原则,RFC 1958这份文档列出了这些原则,并且对他们进行了讨论。对于所有的协议设计者都必须好好的看看这份文档,也是必修课。以下概要地列出这10条原则。
TAG:

最初驱动了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、要考虑性能和代价
       如果一个网络的性能很差,或者代价特别高,那么没有人会使用这样的网络。


                       --《计算机网络(第四版)》

(temotemo)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201303/16535.html]
本文出处:CSDN博客 作者:temotemo 原文
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容