五分钟自学编程:计算机网络到底应该怎么学?! (2)

现在看来,计算机网络确实是一门纯理论的课程,除了一些网络抓包和用开发者工具查看网络请求之外,基本上没有什么需要实践的内容,现在很多书从网络抓包入手讲解计算机网络,其实也是一种不错的新型学习方法。

一本书适不适合一个人,真的是因人而异,特别是这种专业技术书籍,不同水平的人看效果差距也会很多,所以网上的一些书单,你可以参考,但不要盲目推崇,等你自己看懂了再说它好也不迟。

于是我第二次进军计算机网络也失败了,看完了《TCP/IP卷一》之后,我用了一个月的时间又忘掉了它。

强化学习阶段

俗话说,事不过三,两次选书都让我铩羽而归,我的内心是崩溃的,虽然面试的时候还可以靠着背一些常见的计算机网络面试题蒙混过关,但是真遇到较复杂的问题时,我也只能是望洋兴叹,根本说不出个所以然。

学好计算机网络的关键是理解它,我在网上又搜索了一大堆的内容,看到一本名为《计算机网络:自顶向下》的书籍,也受到一些推崇,原因是这本书从应用层讲起,一直往下讲到物理层,似乎更符合人脑的学习和思考方式。

我买书一向勤快,当时我在百度实习,于是这本书成了我日常实习时必看的书目。

因为组里的项目在做容器和私有云,在不懂网计算机网络的情况下去看这俩,简直是找死,更何况里面还涉及了存储、调度、微服务等技术。

这本书确实给了我全新的观感,此书在开头就说,将以全新的方式介绍计算机网络,先讲应用层,再依次介绍传输层、网络层、链路层和物理层。

自顶向下和自顶向下的区别在哪呢?
根据自顶向下的思路,我们最先接触的是应用层,也就是常见的HTTP、DNS、FTP、POP等协议,这层协议我们平时都在用,书中讲的也比较接地气,于是我对应用层的介绍也接受的很快。

按照这个思路,书中继续讲传输层,也就是我们常见的TCP和UDP,应用层使用域名或者是IP+port的方式定位机器,而传输层(这里指TCP)把应用层的数据切片,有序传输,并且保证可靠。

也就是说,TCP报文把应用层报文包裹了起来。接下来,就到了网络层了,网络层通过IP进行路由,目的就是找到对应的终端机器,所以网络层的数据报要包裹传输层的数据报。

接着往下,网络层虽然解决了路由问题,但是局域网内的网络交换是通过mac地址进行寻址的,于是数据链路层发挥作用,因为它就是通过mac地址来定位目标机器的,于是数据链路层的数据报要包裹网络层的数据报。

再到最后物理层,数据传输的本质还是0和1的电信号,自然要通过物理介质进行传输,当然,物理介质除了常见的网线、光纤,还有电磁波(应用于无线局域网)

上面对整个计算机网络的脉络做了一下梳理,所以,整体看来,按照自顶向下的思路去学习计算机网络,对于新手来说更加友好一些。

还差得远呢

看完了《计算机网络:自顶向下》虽然已经大概了解了整个网络的结构和脉络,但是对于很多实现的细节还是一知半解,比如HTTP和TCP报文的结构,还有一些比较不易理解的概念,比如路由算法、IP广播和多播、NAT技术、VPN技术等等,不理解这些,总觉得还是欠缺了不少东西。

到后来,开始尝试面试一些大厂,更加发现了自己的差距还很大,比如百度、头条、腾讯这类公司,特别是腾讯,对于计算机网络的考察是特别严格的。

比如三次握手,四次挥手这种常见问题,一般还会延伸考察,比如为什么要三次握手、四次挥手,没有第三次握手或者没有第四次挥手会怎么样。

再比如TCP协议的作用是什么,它是如何保证传输可靠的,这时候你就要了解TCP保证可靠传输的机制,比如滑动窗口,超时重传,分组确认等原理,也是你需要能讲清楚的。

再比如,还有一种常见的考察方式,就是让你讲清楚从域名访问到获得返回结果的过程中都经历了什么,这么开放的问题,要尽可能说出足够多的东西,先是DNS解析,再到TCP三次握手,然后介绍IP数据报的网络路由,以及局域网内数据链路层的作用,甚至可以把物理层也带进去讲一下。

总之,你掌握的越多越详细,对于这些问题才更有机会答好,我每次都会把整个过程讲的比较详细,这样面试时才不会给自己留坑。

对了,在学习计算机网络的路上,还有一个很重要的学习资源帮助到了我,那就是刘欣老师的《码农翻身》一书,当时我也是在网上偶尔看到。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzdzsg.html