[心得] 还是应该看原始资料

最近在研究MQTT协议,从百度上看到了 发布到gitbook上面的mqtt中文版协议:https://mcxiaoke.gitbooks.io/mqtt-cn/content/
初读协议,感觉翻译者功力相当深厚,于是以之为蓝本。
但是当我准备实现MQTT broker时,却发现好像有点不对。

1.问题的发现:


上面说明了PUBREL可以重发,但是看下面图

图1 2.2.2 标志 Flags

这说明 PUBREL 不能重发吗?还是即使重发也不可以设置重发标志,那么重发标志的意义是什么?

然后后继续看 PUBREL的报文:


也就是MQTT协议重发报文不可以设置重发标志咯?那重发标志的意义在哪里? 我百思不得其解

2. 问题定位

因为我主要看是用java netty作为开发框架,在netty 源码的注释中,我找到了 http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/mqtt-v3r1.html

认真看了下英文,感觉一阵的头皮发麻,翻译者在某些关键地方没有翻译,某些地方加入了自己的想法(想法有误),某些概念上出现了严重的混淆
这里我要强调,我并不是批评翻译者,实际上翻译者并没有责任和义务保证翻译作品100%正确,任何人都不能保证翻译的作品一定符合原作者的意思。

1. 图1 (2.2.2 标志 Flags),在原文档并不存在

很难理解为啥会出现这种问题,我一行一行的对协议,也不曾看到这个 2.2.2 标志 Flags 的那张图从哪里出来的。难道作者看到的英文协议和我们看到协议不是一个吗?

2. 几乎每个Fixed header 的 前4位bit位都有问题

例如:

翻译版协议内容
原文协议内容

别看就是一个小小的x的区别,实际上表达的意思简直天差地别,x代表可能是1或0,而0就表明只能是0

3. 关键性信息没有翻译出来

翻译版协议内容
原版内容

这个图表对我理解 mqtt的qos2的交互至关重要,我几乎不用看文字,通过这个图表都可以理解mqtt的qos2的交互,然而在翻译版却没有

3. 结论

突然想到了在《舌尖上的中国3》,老爷子操着粤语口音说的:"中西并举、南北结合"。

  1. 由于本人英语能力太弱,很难看懂英文原文文档,还是需要结合中文一起看,但是不可完全依赖翻译文档,还是要结合原文文档看。
  2. 看书尤其是非常重要的书,应该看原始资料,因为资料经过其他的人手后,很可能就改变了最初的本意。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • MQTT Protocol MQTT协议特性 一句话总结:MQTT是一个简单,轻量的消息发布/订阅协议。 MQTT...
    福克斯记阅读 7,416评论 0 8
  • 一:前言 最近在了解MQTT协议相关的内容,内容有点多,特此把MQTT协议,以及其从服务端到客户端的流程整理出来...
    子夏的不语阅读 70,746评论 9 92
  • 当 app 和服务器进行通信的时候,大多数情况下,都是采用 HTTP 协议。HTTP 最初是为 web 浏览器而定...
    Flysss1219阅读 1,422评论 0 4
  • 端口与进程 TCP 的包是不包含 IP 地址信息的,那是 IP 层上的事,但是有源端口和目的端口。 就是说,端口这...
    XLsn0w阅读 958评论 2 4
  • 上天赐予的运气,让我刚好遇到你,……最近文思枯竭……
    黄永荣阅读 186评论 0 1

友情链接更多精彩内容