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

......

本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1268989

用进化的观点学习网络协议相关推荐

  1. java的网络协议学习_协议简史:如何学习网络协议?

    大学时,学到网络协议的7层模型时,老师教了大家一个顺口溜:物数网传会表应.并说这是重点,年年必考,5分的题目摆在这里,你们爱背不背. 考试的时候,果然遇到这个问题,搜索枯肠,只能想到这7个字的第一个字 ...

  2. 如何学习网络协议(学习笔记)

    引: 抓包软件---tcp状态转换..构造包--->2011-12-31 15:51:26 一个前辈写的网络协议学习方法 分类: Linux开发c/c++2008-10-02 00:35 257 ...

  3. 趣谈网络协议1-为什么学习网络协议

    来自极客时间<趣谈网络协议> 学习过程遇见问题:一看觉得懂,一问就打鼓,一用就糊涂. 1.为什么要学习网络协议 一般编译过程: 词法分析: 词法分析是编译的第一阶段.词法分析器的主要任务是 ...

  4. 协议简史:如何学习网络协议

    转载自:https://segmentfault.com/a/1190000017946733 1. 协议分层 四层网络协议模型中,应用层以下一般都是交给操作系统来处理.应用层对于四层模型来说,仅仅是 ...

  5. PYTHON黑帽编程1.5 使用WIRESHARK练习网络协议分析

    Python黑帽编程1.5  使用Wireshark练习网络协议分析 1.5.0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks At ...

  6. 网络协议枯燥难学?这个胖子要说No!

    参加过大厂面试的小伙伴应该都清楚,无论是去面试国内的互联网大厂还是硅谷的IT公司,面试的时候多多少少都会问一些网络协议的知识.例如: 1. TCP协议和UDP协议有什么区别? 2. HTTPS协议的底 ...

  7. 网络协议,我明明学过的呀?

    十个人程序员里面,有十个都会说自己学过网络协议,九个人都会说自己懂网络协议.但是面试的时候,问几个问题,能回答的可能只有两三个.不信?来,我问你几道. 1.TCP协议跟UDP协议有什么区别? 你说这个 ...

  8. 网络协议,没有想象中那么难

    十个人程序员里面,有十个都会说自己学过网络协议,九个人都会说自己懂网络协议.但是面试的时候,问几个问题,能回答的可能只有两三个.不信?来,我问你几道. 1.TCP 协议跟 UDP 协议有什么区别? 你 ...

  9. 神经进化是深度学习的未来

    摘要: 本文主要讲了神经进化是深度学习的未来,以及如何用进化计算方法(EC)优化深度学习(DL). 过去几年时间里,我们有一个完整的团队致力于人工智能研究和实验.该团队专注于开发新的进化计算方法(EC ...

最新文章

  1. Webpack 打包学习
  2. c++不允许使用不完整的类型
  3. Java的基础方法Java的对象_java基础之 创建对象的几种方式
  4. 利用Lucene.net搜索引擎进行多条件搜索的做法
  5. C++——《算法分析与设计》实验报告——贪心算法与回溯法
  6. 图像处理:如何理解傅里叶变换在图像处理中的应用
  7. 嫁给我好吗?| 今日最佳
  8. Android系统性能优化(67)----内存泄漏检测
  9. 关于ajax post请求跨域问题的解决心得
  10. C语言-十进制转换为二进制函数
  11. OllyDBG 入门系列(一)-认识OllyDBG
  12. Qt QLabel实现自动换行 字符断行 自适应
  13. 卫星地图破坏男女恋人之间的关系
  14. uefi下添加显卡驱动
  15. 甘超波:NLP信念系统
  16. 黎曼传记资料(2010-04-22 22:17:06)
  17. java int类型 BigDecimal类型转成汉字金额大写
  18. randon变换(拉东变换)
  19. IPv6 路由信息查看命令
  20. Matlab中在一个矩阵后面加apos是什么意思?绘图时出现错误该如何修改,麻烦解答一下,谢谢了

热门文章

  1. 计算机应用水平考试dream,2016年职称计算机Dreamwaver使用教程:操作环境
  2. oracle取字段第三位字符,oracle截取字符串(截取某个字符前面的字符串)
  3. 售票统计表表格模板_财务常用四大报表模板,共二十张,会计小白入职有它被高看一眼...
  4. 一图读懂开源协议_一张经典图,开源协议比较
  5. python动态人脸识别_python3.8动态人脸识别
  6. oracle装一半报错要卸掉,OpenSUSE下oracle11gR2的安装卸载
  7. 计算机专业英语职高 试卷,职高对口高考英语模拟考试题.doc
  8. 西安交大传热学大作业matlab,西安交通大学传热学大作业二维温度场热电比拟实验.doc...
  9. 行人属性数据集pa100k_Attribute-Recognition行人属性识别资料
  10. android单元测试android环境,基于Robolectric的Android单元测试 —环境搭建与部署运行...