一般而言,我们比较习惯于用分层的观点来学习网络协议,这也是大学的教学方法。然而这种方式在前期如果有个地方理解不了只有死记硬背了。如果我们带着问题,并且试图去解决这些问题,最终恍然大悟,得到“原来XX协议就是解决这个问题的啊”这种感叹,那么学习效果一定事半功倍。
所谓带着问题学习,其实就是抛开一切知识,从无到有,自下而上或者自上而下去思考一个问题的解决方法,这样一来,最终你会发现,其实很多的网络协议你自己也能设计出来,只是不那么完美罢了。对于网络设备,我们只需要知道它们是支撑网络协议的就行了。不要过度考虑那些多层的设备,只要一层一层的考虑即可。
如果你能从一根线缆自行设计出hub,进而发现了hub的诸多问题,然后又设计出switch隔离了冲突域,可是后来又发现了安全性以及管理方面的问题,终于设计出了VLAN,隔离了广播域...由于扩展性的问题,你自己设计出了网络层(事实上,IP的设计并不是想象的那么困难),...这样的话,你就是高手了。带着问题去自己思考,这是一种很好的学习方法,最终拿到真正的协议后,和自己想的比较一下,看看自己哪些地方考虑的不够全面,同时也要看看自己哪些地方猜对了,给自己一点鼓励...
以上是一个大致的轮廓,曰:有问题才有解决。然而问题何在?问题一开始是什么样子的?这就需要用进化的观点了,即使是上帝也不能一下子设计出人,三叶虫简单,于是三叶虫被设计出来了,经历了风风雨雨之后,很多设计被时间证明是失败的设计,于是某些物种灭绝了,直到最后,人类的出现...在网络协议上,也是一个类似的轨迹,一开始就是一根线缆,接着出现了hub,PBX,Switch之类,...如今,七层交换,应用代理,统统都应有尽有,其间也有很多被淘汰了,而这些被淘汰的或者将被淘汰的协议曾经也被很多人看好过。如果把网络协议的历史都了解了,那么学习一个新的协议将会变得简单,因为发展曲线已经很清晰了,一个特定的协议一项特定的技术肯定是为了解决某一个或者某一类问题而被提出的,而问题基本都是历史遗留的,这个规律在计算机网络以及通信网络领域尤为普遍。
所谓带着问题学习,其实就是抛开一切知识,从无到有,自下而上或者自上而下去思考一个问题的解决方法,这样一来,最终你会发现,其实很多的网络协议你自己也能设计出来,只是不那么完美罢了。对于网络设备,我们只需要知道它们是支撑网络协议的就行了。不要过度考虑那些多层的设备,只要一层一层的考虑即可。
如果你能从一根线缆自行设计出hub,进而发现了hub的诸多问题,然后又设计出switch隔离了冲突域,可是后来又发现了安全性以及管理方面的问题,终于设计出了VLAN,隔离了广播域...由于扩展性的问题,你自己设计出了网络层(事实上,IP的设计并不是想象的那么困难),...这样的话,你就是高手了。带着问题去自己思考,这是一种很好的学习方法,最终拿到真正的协议后,和自己想的比较一下,看看自己哪些地方考虑的不够全面,同时也要看看自己哪些地方猜对了,给自己一点鼓励...
以上是一个大致的轮廓,曰:有问题才有解决。然而问题何在?问题一开始是什么样子的?这就需要用进化的观点了,即使是上帝也不能一下子设计出人,三叶虫简单,于是三叶虫被设计出来了,经历了风风雨雨之后,很多设计被时间证明是失败的设计,于是某些物种灭绝了,直到最后,人类的出现...在网络协议上,也是一个类似的轨迹,一开始就是一根线缆,接着出现了hub,PBX,Switch之类,...如今,七层交换,应用代理,统统都应有尽有,其间也有很多被淘汰了,而这些被淘汰的或者将被淘汰的协议曾经也被很多人看好过。如果把网络协议的历史都了解了,那么学习一个新的协议将会变得简单,因为发展曲线已经很清晰了,一个特定的协议一项特定的技术肯定是为了解决某一个或者某一类问题而被提出的,而问题基本都是历史遗留的,这个规律在计算机网络以及通信网络领域尤为普遍。
......
本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1268989