赞
踩
通信领域涉及大量协议规范,很多同学一看到“八股文”式协议规范,第一反应便是枯燥乏味,即使耐着性子,强迫自己去学习,一段时间后也会忘记很多细节,加之目前协议规范都一律使用英文撰写,英语底子薄弱的同学更是苦不堪言。上述诸多原因,让不少人想拒协议于千里之外。怎么样才能更好更愉快地学习协议呢?
事实上,不是协议本身枯燥,而是很可能我们使用了错误的学习方法而导致枯燥感觉,我们需要先分析一下到底哪里出了问题。
(1)搜索网络相关技术文档,了解大概,点到为止(2)看教科书,了解大概,不拘小节,点到为止(3)看协议标准,记住各个规范细节(4)不仅看协议标准,还思考一系列设计背后的原因
第一种方法最不靠谱,由于每个人理解能力参差不齐,输出的技术文档也就良莠不齐,很多技术文档存在不少错误,但也不排除有少量高质量文章。读这些文章,对学习者的阅读筛选能力要求很高,稍不留神就可能被带到阴沟里。
第二种和第三种比较类似,都是直接看协议描述,差异是选择的阅读资料。协议标准更权威且更详细,建议学习技术前要保证源输入信息尽可能权威,这也是为什么要多看英文第一手资料,多使用Google、维基百科,而不是某度。
最后一种,其实就是对应what/how/why三步学习法,可以算是当前最好的方式。不仅需要弄清协议流程细节,还要去理解设计背后的原因。不过能做到这一点的同学很少,这种方法也需要先去理解“枯燥”的协议细节这一环节,在此过程中需不断提问,整个过程其实也是比较“枯燥”的。
有没有 一种更高效 且更快乐 的学习协议方法呢?
回答这个问题之前,我们先来看一个日常学习中不可或缺的考试。
平常我们是怎么参加考试答题的呢?毫无疑问有如下一系列标准动作:
(1)读题
(2)思考
(3)解题
(4)对答案
(5)反思
那有没有同学直接看答案呢?
听到这个问题,你肯定会异常惊讶,疯了吧!考试能让你直接看答案,而不看题吗 ?
但是我们却可能每天都在重演这样“出乎意料”的事呢!
回到我们前面讨论的协议上,很多时候我们都是直接去看协议规范,看完后就认为自己已经掌握,甚至精通协议,其实此时很可能连协议要解决哪些问题都还没搞清楚,这不就等同于直接看答案吗?
先看题和先看答案两者最大差别是学习主观能动性的差别。
先看题会诱发思考,是主动学习的方式,想问题会产生乐趣;而直接看答案,只是记住答案结论,大脑却很少有机会思考,也就很难产生兴趣。
这也是很多人觉得协议规范枯燥的主要原因。
平常的授课,如果直接讲述知识,而不是知识产生的背景及过程,是很难调动学生参与积极性。
解决上述协议学习枯燥问题的一个方法,是能够让大脑主动去思考。而能让大脑主动思考的触发点是什么呢?便是一个个疑问,疑问会让人产生好奇心。我们接下来要提到的问题驱动式协议学习方法,就是使用了上述原理基础。
这个方法适用于任何技术的学习,也适用于循循善诱式的技术培训、授课等。好的授课培训应该不断抛出问题,诱发听众去主动思考,而不是灌输知识。
整体思路和考试答题思路一样:
(1)确定问题(读题)
(2)问题拆解
(3)问题解决
(4)方法优化
(5)对标协议标准
(6)比较差异,反思不足
(1)确定问题
协议技术只是用来解决特定问题的手段,相应地,学习一个协议之前,先要了解这个协议是用来解决什么问题?为什么要解决这个问题?等一系列背景知识。比如路由协议目的是生成用于报文转发的表项。
【说明】:此时最好能将遇到的问题,映射到生活中熟悉的问题,这样利于后续问题解决,毕竟协议技术也是源于生活。
此时不需要去了解具体实现细节,对细节了解越少越好,否则会干扰后续解题思考过程,相反对问题理解越深刻越好。
(2)问题拆解
有时候所要解决的问题会比较大,无法直接解决,此时可以采用分治法,将大问题逐步拆解为多个小问题,每个小问题可能会进一步拆分,直至可以更容易解决。
比如路由协议的目的是生成用于报文转发的表项,那么我们就需要先知道这个表项是什么样子?假设需要含有目的前缀、下一跳两个表元素。
那么这个问题可以进一步拆分为:如何生成目的前缀?如何生成下一跳?
如何生成目的前缀,也就是如何知道"茫茫网络"中的其它设备网络前缀?目的前缀,当且仅当只有目标设备自己知道,我们能知道目的前缀的唯一方法便是目标设备主动通告出来。
首先从最简单场景出发:与目标设备直接相连。从最简单问题出发,逐步求解更复杂场景问题,这也是常用解决问题思维方法
针对这一场景,梳理出需要解决的问题:1、目标设备如何搜集前缀2、目标设备如何将前缀信息发送给我3、收到前缀后,我该怎么处理?等等
这些问题还是比较大,需要进一步拆分,比如针对“目标设备如何搜集前缀”这一问题:1、前缀相关信息具体包括哪些内容?2、前缀信息搜集完成后,存放在哪里?怎么存储放置?3、什么时候触发前缀信息搜集、更新、删除?等等
问题拆分这一步最具挑战性,当你能够比较完整系统地拆解各个问题时,你对协议技术的理解已经非常深刻,此时你已经知其所以然。
(3)问题解决
针对上述拆解出来的问题,逐个提出解决方案。较前一步问题拆解步骤而言,问题解决反而更容易,这也更验证了较于解决问题,提出问题更重要这一说法。
(4)方法优化
问题解决后,还需要考虑当前方案还可能存在哪些问题。比如一开始我们假设转发表项只有网络前缀和下一跳信息,后来会发现可能存在多个设备通告相同网络前缀场景,此时需要引入额外因素以支持择优选择。相应地,在前缀信息中还需要增加择优因素,比如花费值开销metric。从这里也可以看出,一个比较完整的解决方案是经过问题提出、问题解决、问题提出多次迭代才能达成。
(5)对标协议标准
经过上述一番努力,针对所要解决的问题,我们提出了自己的解决方案,也就是我们给出了考题的解答,但是我们的解决方案是否合理、是否更有效呢?此时就需要对标协议标准答案,来发现不足。此时是阅读协议标准的黄金最佳时机。
一般情况下,阅读协议标准主要有三个阶段:
带着上述梳理的问题,直接去协议标准对应章节找答案,并对比自己提出的解决方案;
为避免考虑缺失,需要再对协议标准进行一次通篇快速阅读;
毕竟协议细节过多,可能存在某些细节忘却问题,那时按需去查阅即可;
(6)比较差异,反思不足
阅读完协议标准后,针对与协议标准有出入的地方,复盘思考自己考虑缺失、考虑错误等原因,以不断提升自己的思维模式和问题分析及解决能力。
基于问题驱动学习法,一切以问题为中心,关键之处是问题树的梳理构建。这样能让你重新经历协议设计全流程,理解技术产生的来龙去脉。此外以问题形成的知识体系,更能抓住本质,触类旁通,举一反三。最喜欢问自己也喜欢问别人的一个问题是:这个技术(点)解决了什么问题?举一个生活中类似例子说明一下,考察的便是能否抓住本质问题。
此时你会觉得协议学习是多么的有趣,而不用刻意去记忆各种报文格式及处理流程。就好比高中数学三角函数公式,当你具备公式推导能力时,还需要去强记吗?
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。