正文
做程序员的,很难不与各种标准打交道,比如想成为网络方面的专家,那就不得不把各种 RFC 标准吃透, 因为绝大多数网络标准都是由 RFC 文档定义的,比如 HTTP 协议,TLS 协议等。
而大部分程序员通常很少看原汁原文的标准文档,因为标准往往枯燥乏味,信息量极大,动辄一个简简单单的概念就要好几十页 PDF 论述。
但有的时候了解一个问题,寻找标准文档往往是效率最高且最准确的选择,比如之前写 HTTPS 抓包解析各个字段的含义, 几乎就是照着 TLS 的标准文档一点点翻译就成文了,网上几乎找不到任何一篇能与之媲美的。
同时,了解这些标准背后的组织,还是非常有借鉴意义的,你会发现一个能被全世界功能认可的标准,其生产流程是多么严谨, 标准中的任何一个词的用法,都会影响全世界,所以这种变态的严谨性,已经成为了一种美感。
比如 ISO 标准,发布了之后就不能修改,如果想要修改只能将原来的标准标记为撤回状态,重新写一篇新的, 而每个 ISO 标准从一开始的提出到最后被全世界认可,都需要将近三年的时间。
下面我们就简单看一下这个国际标准化组织 ISO。
国际标准化组织本身就是一个具体的组织机构,英文为 International Organization for Standardization, 简称 ISO,是一个独立的非政府国际组织,拥有 166 个国家标准机构的成员,共同分享知识,以及制定国际化的标准,总部在瑞士的日内瓦。
分享知识就是顺带手的工作了,发布发布文和研究成果之类的,最主要的工作还是制定国际标准。
登陆其官网看看:www.iso.org
在上方 Standards 标签上可以搜索我们想看的标准文件。我们试着搜搜,计算机网络教材中常提到的 OSI 七层模型, 包括物理层、数据链路层、网络层、传输层、会话层、表示层、应用层,就是 ISO 组织发布的一个标准。
OSI 模型的标准号是 7498,所以我们直接搜这个号。
搜索页 https://www.iso.org/advanced-search/x/
可以看到,完整的 OSI 模型标准分为四个部分,我们打开第一部分(The Basic Model)并下载下来, 就可以看到我们熟悉的七层模型描述,当然整个文件的信息量是非常大的。
回过头来看,每个文件的后面还有两个数字,拿第一个文件来说,后面有这样两个数字:
STAGE:90.93
ICS:35.100.01
其中 STAGE 表示这个标准处于哪个阶段,因为总不可能一上来就发布成为全球认准的标准,得有一个不断审核修订的过程, 而这个过程是贼他喵的麻烦,需要经历好多个阶段。
可以看到一共有这么多个阶段,而当前这个 OSI 模型处于 90.93 阶段,这个表示 International Standard Confirmed, 就是已经被确认为国际认可的标准了。
我们再看看,一开始的时候处于 00.00 阶段,就是刚刚收到一份标准提议,之后慢慢经过投票、审核、出版,还有可能有撤回阶段, 整个过程非常漫长,一个标准从一开始提出到最终国际认可,可能需要三年的时间。
认可后的标准,就不可以再修改了,如果想要修改,需要把原有的改为撤回状态,再重新出一个新的标准。 从生命周期这一部分说明可以看到,可以看到 OSI 模型就经历了一次这样的修改。
而再看修改之前的这个 1984 年发布的标准,其 STAGE 已经是 95.99 了,也就是 Withdrawal of International Standard, 表示已经被撤回。
除了 STAGE 阶段外,还有一行数字
ICS:35.100.01
这个 ICS 表示分类,其英文全称是 International Classification for Standards, 这个分类是一级一级的,最前面的 35 表示信息技术大类。
由此也可以看出 ISO 并不仅仅是计算机相关的,还包括环境、自然科学、农业、化工等等共 97 个大分类。
而 35 这个信息技术大分类下,还分为很多小类,其中 35.100 就表示 OSI 模型了。
感兴趣的话还可以看看其他分类,比如我们说字符集的时候经常念叨的 ISO-8859-1,其实就是在 35.040.10 这个字符集分类下的一个标准。
由此我们也可以学学人家的做法,首先通过 STAGE 这组状态机表示一个标准所处的状态, 这可比我们平时开发时“提出需求-需求评审-开发-测试-上线-验收”这种简单的状态机要更复杂。 然后再通过 ICS 这样的三级分类,涵盖了各个领域的各种细分标准。此外,每个标准的撰写都有严格的格式要求,具体可以去官网下载。
我想如果平时开发时的各种文档有这样的规范管理,那开发之间可以减少很多由于文档不规范导致的效率低下了。