Go语言中实现的RFC xxx是个啥?

点击上方蓝色“飞雪无情”关注我,设个星标,第一时间看文章

如果你打开Go语言的文档页 https://golang.google.cn/pkg/ ,搜索RFC这个关键字,会发现有16个之多。

从上图可以看到,Go语言的MD5是基于RFC 1321实现的,SHA1是基于RFC 3174实现的。

那么是什么是RFC呢?RFC后的编码又是什么意思?

我们打开维基百科,看到如下关于RFC的描述:

请求意见稿(英语:Request for Comments,缩写:RFC),又翻译作意见征求,意见请求,请求评论[1]是由互联网工程任务组(IETF)发布的一系列备忘录。文件收集了有关互联网相关信息,以及UNIX和互联网社区的软件文件,以编号排定

https://zh.wikipedia.org/wiki/RFC

看到了吧,这是一个非常NB的规范,互联网的协议基本上都是属于这个规范中的,比如TCP/IP等。

RFC 后的编号是一个唯一编码,用于标记是哪个RFC,并且唯一不可变更。

最开始的RFC是在1969年,而且只用于记录阿帕网的开发使用,还不像现在这么正式的规范文档,其实那时候互联网都没有。

然后呢,就有一些美国的学校加入,大家都写一些,在各个研究员之间传阅。有点像私董会内部传阅机密小纸条的感觉。

然后就是IETF、IAB加入,开始领导起草、审阅和发布工作,所以我们现在看到的很多RFC规范前面都有组织的名字,比如HTTP/2的RFC 7540:

这表示是由IETF这个组织对该协议审核并达成了共识。

IETF还算是比较新的,年代久远一些的RFC会有这样的组织「Network Working Group」,比如我们常见的MD5 RFC 1321:

在我上面HTTP/2协议的截图中,可以看到有一列Category,代表该RFC归属哪个分类。

Category(目录)分为“Standard Track”(标准)、“Informational”(信息性的)、“Experimental”(实验性的)、“Best Current Practice”(当前最佳实践)。它们之间的区别有时候比较模糊,但可以确信的是,如果是由 IETF 制作的,肯定经过了大量的审核。不过要注意,Informational 和 Experiment 并不属于标准,即便是经过 IETF 批准发布的。

RFC其实类似我们现在说的日志,一旦存档就不能改变,哪怕一个字都不行,所以你可以看到IPv4和IPv6是两个RFC,IPv6并不是基于IPv4的修订,相应的HTTP/2也一样。

所以呢,我们要找到一份最新的,最具有价值的文档很重要,这里同样以IPv6为例,如果你通过Google搜索的话,你可以会找到这份RFC 1883关于IPv6的协议。

https://datatracker.ietf.org/doc/html/rfc1883

但是请注意,当你看这份协议的时候,在顶部开头会有 Obsoleted by: 2460的字样,这里的意思就是说,当前这份1883的文档你别看了,去看RFC 2460这份吧。

当你打开了 RFC 2460这份文档后, https://datatracker.ietf.org/doc/html/rfc2460  ,这里又有一个 Obsoleted by: 8200,发现还不是最新的,笑哭了,继续找吧,去看这份RFC 8200的大爷  。

当你点击超链接,打开 https://datatracker.ietf.org/doc/html/rfc8200 的时候,终于发现没有了Obsoleted by,终于找到最新的关于IPv6的协议定义了,这时候就可以以这份为准了。

这里呢,还要注意一个小细节,就是文档里的 Update By,后面跟着一堆协议。这个是什么意思呢?意思就是如果你看2460这份文档,一定要记得去看下5095, 5722, 5871, 6437, 6564, 6935, 6946, 7045, 7112这几份RFC文档,它们是关联的。

我国呢也贡献过RFC提议的,最早可以追溯到1996年,清华大学向IETF提交的适应不同国家和地区中文编码的汉字统一传输标准,被IETF通过后编号为RFC 1922,成为中国大陆第一个被认可为RFC文件的提交协议。

标准协议可以看这里,https://datatracker.ietf.org/doc/html/rfc1922  牛逼轰轰。

总之呢,RFC为互联网做出了很大的贡献,如果你在编写一些协议的实现,可以去参考相应的RFC规范,有助于理解和使用,比如 JSON Web Token (JWT)的RFC 7519。

精彩推荐

Go语言环境搭建详解(2021版)

Go语言实现SSH弱口令爆破

Go 语言 | 1.16 新增的embed在各流行Web框架中的应用

Go爬虫+WordPress每月躺赚上千元(合法合规实战)

最近面试了不少人,忍不住想聊聊几种不合格的自我介绍

扫码关注

分享、点赞、在看就是最大的支持

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值