1、学习方法
学习网络知识的四个阶段
(一)掌握协议的概念。这个协议的概念是什么,是在什么地方应用的,例如什么是路由,什么是交换。
(二)掌握如何使用。例如OSPF、EIGRP在现网中如何配置,如何查看,如何使用。
(三)掌握协议是如何工作的。协议的标准是什么,工作的机制是什么,例如EIGRP的DUAL算法是如何规定且工作的,OSPF的SPF算法是如何规定且工作的。
(四)掌握协议底层的工作机制和报文。例如OSPF协议中,两个路由器之间建立邻居的过程,反应在底层是什么样的,也就是报文是如何传输的,报文的格式是什么,每个报文中重要字段有什么,这些字段的含义是什么。
以上总结出自红茶三杯CCNP课程的路由选择原理。
对于计算机网络初学者来说,知道“为什么这么做”比“知道怎么做”更重要,虽然经历知道“为什么这么做?”的过程很痛苦,但一旦过了这个阶段,“知道怎么做”也就水到渠成了。但是对于初学者来说,真没必要那么深入地学习网络协议的细节,你只需要理解常见协议(例如HTTP、FTP、DHCP、DNS、ARP等常见协议)的工作过程,你理解了这些协议,理解其他的协议就是依葫芦画瓢,虽然计算机网络很讲究知识的积累,但如果你一开始把太多的精力放在了解细节上就会陷进只见树木不进森林的境地。
例如,数据包的结构,浏览一下各字段的作用就可以了,能记住就记住,记不住也没关系,你只需要先重点理解IP头部里的目的地址、源地址和TCP头部里的目的端口号、源端口号,这些比较简单且重要的字段的含义就行了,至于其他用的比较少的字段的含义以及每个位置为1或者0的含义这种相对难一些的概念,建议等对网络有一定的了解以后再进行学习;TCP/IP和OSI两个模型,只要先大概知道为什么要建立参考模型、每一层大概的作用及常见协议即可,我当时在入门的时候希望能把基础砸瓷实一些但事与愿违,在这两个章节纠结了很久,结果既没有弄明白每个细节,又耽误了学习进程,差点“从入门到放弃”。当然我的笔记中试图尽可能多的涵盖一些知识点,会将每一个字段的定义都写上,请参照每一篇笔记的新人学习建议进行选择性学习。
强烈建议听懂一个知识点以后总结一份自己的笔记,因为很多东西听懂的和自己能总结完全不是一个层次,笔记是一个对知识消化并进一步总结归纳的过程,比简单的听懂视频看懂书籍要高了一个档次,虽然耗时更长,但对知识会有更深层次的理解并且记得更牢固。过一段时间回看自己的笔记,会发现自己相对之前有哪些提高。
学习一定要打好基础循序渐进
这段像是一堆废话,但打好基础的过程是非常痛苦且无聊,因为一开始可能你根本看不懂这段在说什么,比如OSI七层模型每层的功能以及TCP\IP模型的报头格式这种纯理论的东西,在它所在的章节很难联系实际去理解掌握,一开始看起来很云里雾里的感觉,不像后面学了路由或者交换的知识以后马上可以在模拟器上验证,会有成就感,理论知识真的很枯燥乏味,但真心应该把这些东西掌握了再看后面,如果没有完全掌握也没关系,至少对这些理论知识的名词和概念大概有个印象,对一些重点的概念,比如报头中重要的字段,知道定义,哪怕是死记硬背下来不真正明白含义,后面等学到相关的章节或知识的时候,可能就能一通百通了,如果没真正明白也不要气馁,再翻回头对基础知识进行复习,周而复始总会真正掌握的。举个例子就是如果对二进制、十进制的换算不明白的话,会很难真正理解IP地址还有子网划分中的一些东西。
遇到问题如何找寻答案
如果周围有懂技术的朋友,请教他们是最快捷最直接的解决办法,但还是更建议通过搜索引擎、官方文档或做实验寻找答案,因为人的大脑可能记错答案但官方文档一般来说是不会出问题的,国内技术类网站都是中文,可以解决常见的一些疑问,但如果有比较冷门一些的问题,可能国内的中文网站已经很难找到解答,这时候思科的官方文档和官方社区是最好的求助对象,尤其是思科的官方论坛,经常有思科的技术大佬过去回答问题,是提升自我非常好的学习渠道,老外对技术细节的讨论十分到位,基本可以解决大部分疑惑,善用英文进行搜索能对学习起到很大的帮助。搜索引擎尽量别用百度,搜索的效率相对低一些,容易浪费时间。
抓包有什么用?
有一些故障的现象并不明显,并不是看配置就能那么轻易的找到问题的答案,需要去抓包分析,分析包的行为能帮助你给出一个排错的大概方向。一般来说 TCP用的比较多,IP头看分片,TOS字段比较多。TCP的话主要看TCP的一些机制和算法。
为什么要了包的构成
谈谈自己浅薄的认识,我觉得如果想要更深刻的了解协议,了解一些协议中数据包的构成是必不可少的,数据包是通讯的组成部分,它的每个部分代表着不同的含义,可以大概类比成语言中的字词,当你说“不知道”的时候表示你不了解这个事情,这就类似于在数据包中,某个字段为0表示后面没有其他数据了,或者电影中一个美女问男主角要不要上楼喝咖啡或者喝水,一般隐约的表示她希望有进一步的接触。某个字段中某个字段为1,可能表示后面还有其他数据包发送过来。字词和某字段的某个值,都是约定俗成为了表示某个意思,为了所有设备都能明白。
如何下载学习资料
推荐两个论坛,鸿鹄论坛以及攻城狮论坛。鸿鹄论坛上的考试题库更新比较快,包含版本比较新,也有一些学习资料;攻城狮论坛上的学习资料比较丰富,基本上所有需要的资料在攻城狮论坛都能下载到。
厂商的认证是否有必要考?
谈一下我浅薄的看法,还是比较建议考取厂商认证,一方面厂商认证的课程是由专业人士设计的,相对于在工作中遇到什么学什么这种学习方式,进行认证课程的学习能够在整体上比较牢固的搭建起你对网络的知识构架体系;另一方面认证也是一个敲门砖,让用人单位能更好的了解你的技术水平,为之后的面试打下基础。但拿到证书并不代表着拿到高薪offer,当上CTO,赢取白富美,走上人生巅峰,光有个认证而没有与之相匹配的技术能力是不行的,因为工作中遇到的问题不像考试有相应的答案,必须靠自己的技术去解决,所以应该将备考的过程视为提高自己技术水平的过程,在这个过程中加深对技术的理解和掌握,而且如果进入面试以后面试官发现你名不副实,花大价钱考下来的证书就显得一点用没有还会让用人单位觉得你名不副实,直接pass你。
关于笔记的一些说明
关于笔记中的比喻
这种用类比来解释问题往往就会面临『十个类比九个错』的尴尬局面,如果别人用类比回答你的为什么,你需要仔细想一想它的类比里究竟哪里有漏洞;类比带来的解释往往只能有片面的相似性,我们永远也无法找到绝对正确的类比,它只在我们想要通俗易懂地展示事物的特性时才能发挥较大的作用。——出自《为什么 TCP 建立连接需要三次握手》
我认为上面这段文字非常精髓的把在技术中使用比喻的优缺点都说到了,用比喻的话能够更快的让不懂这个技术的人较快的大概明白这个东西某一方面的特性或作用,但几乎所有比喻都不是完美的呈现事务本来面貌的,毕竟用生活中的东西和技术上的知识本来就属于两个差别比较大的不同范畴,不可能找到完全一样的事务做出完美的比喻,比喻后几乎一定会产生一定程度上的误导,笔记中既有严禁定义又使用了比喻是希望能更快的使读者对技术某一方面有更快更直观的理解,但希望看过比喻大概了解了一个技术后一定要去看该部分中更为严谨的描述,以便能够真正确切的掌握一个技术而不是仅仅对技术有个模糊且有一定偏差的印象,这不仅是对自己负责,也是今后靠技术吃饭拿到一定薪酬的保证。
关于不同技术的出现
网络学习中比较让人头疼的一个情况就是,网络技术百花齐放般层出不穷,究其原因,新技术的出现一定是为了解决现网中遇到的实际问题或情况,而旧的技术往往不能解决或不能很好解决这些实际需要,才会开发新技术,比如后面的动态路由协议部分中,现网中有不同的动态路由协议在使用,比如BGP、OSPF等,在一般情况下OSPF协议能满足大多数企业网络的需要,但由于OSPF协议算法的限制,无法承载大批量路由条目,所以在运营商这种路由条目繁多的环境中,会使用IS - IS路由协议,但该协议也无法承载运营商之间超大规模交互路由条目的任务,这时候BGP协议粉墨登场,解决这种情况下的实际需要。所以建议在学技术时不仅要知其然,也要知其所以然,也就是不仅要知道这项技术如何使用,也要明白这项技术是为何而生,使用场景是什么,和其他协议相比有什么不同的特点。
关于笔记中的英文
笔记中引用了一些英文的文章,在解释一些术语的时候也尽量中英文都写,主要是因为权威的RFC文档通常采用英文撰写,多了解一些专业词汇的英文是个只赚不赔的事,毕竟不可能所有疑问都有人能请教,当没法向别人请教网上又没有相应的中文资料时,查询RFC或用英文搜索是个不错的选择,多一种语言能力也能在找工作时多一个加分项。