不能单纯的比较哪本书好,只是侧重点不同。
我是先看过一遍计算机网络:自顶向下方法,然后最近才开始看谢老师的计算机网络。来说一下我看过的感受吧。
首先计算机网络:自顶向下方法是一本好书这没错,但是这本书并不是一本入门级别的书,书中很多内容都是从设计者的角度来讲的,这本书鼓励动手实践,wireshark 抓包,动手编程,比如第二章末尾就鼓励我们使用 Python 来编写一个套接字,来为后面的 TCP 、UDP 的理解做铺垫。比如第三章讲 TCP 的时候,就鼓励我们站在设计者的角度来思考问题:你如何构建一个可靠的数据传输协议。
你不要以一个开发的角度来看这本书,而是要以一个思考者的角度,设计者的角度来看,这本书有大量的专业词汇,我的这篇文章汇总了一下这本书中有哪些比较重要的概念和解释。
如果把计算机网络书籍按照难度来分成五个等级,那么这本书的级别在 3 - 4 级,难点体现在它是一本外文书,翻译成中文会有一些解释不到位的地方,二来是这本书的思想层次从开发的角度来看有些偏高。说白了就不是一本通俗易懂讲计算机网络的书籍。
如果你只是想要简简单单入门计算机网络的话,请移步至这两本书:
《图解TCP/IP》
《网络是怎样连接的》
计算机网络自顶向下这本书需要多看几遍,反正我每次看都有新的感悟,好书应该都是这样的。
最好把后面的习题做了,这样你会对计算机网络的理解上升到一个更深的层次,而不单单的只是面向八股文来学计算机网络,计算机网络千万别背。。。。。。重在理解和实现。
这本书教给我的东西,比协议本身要重要得多。
1、思考并理解。虽然协议前辈都设计好了,我们用起来也很舒服。但是作者写这本书,他的目的不在于让你记住,而是让你站在设计者的角度去思考。比如讲TCP的时候,作者并没有一开始就拿出来完备的TCP的各种规则来让读者去记住,而是从一个最简单的底层模型开始,让读者去思考,如果你是设计者,你会怎么设计这个协议。当底层模型慢慢变得没那么理想,设计的协议要做哪些改动。一本好的教材就应该这样授人以渔。
2、实践实践再实践。计算机网络方面的知识,没有实践,很难学到东西。我在用wireshark抓包的时候,就发现了一些细节上的实践,书中说的和实际的情况已经不一样了,毕竟协议都是人定的。只有掌握在实践中分析问题,解决问题的能力,才是长久之道。
3、把握重点。计算机网络是我学习计算机以来,重点最不明确的一门学科。所以我刚开始学的时候,总是抓不住门道,觉得好复杂啊,这么多协议要学,什么TCP,UDP,IP,ARP,ICMP,BGP,RIP,OSFP根本记不住啊。现在虽然我可能也记不住,但是只要我知道怎么去得到我想要的信息,这就够了。时间应该就是这样节约下来的吧。
作者:颠颠De我(来自豆瓣)
这本书对于绝大多数童鞋看 1 - 6 章就可以了,这六章能够涵盖我们日常开发中所用到的大部分内容。
如果你是通信方向的童鞋,那你需要看第七章,关于无线网络和移动网络这块。
如果你是搞网络安全的,那么第八章是你必不可少的内容。
至于多媒体应用这块,如果你有此业务场景,可以看一下这章。
这本书最大的特点就是从应用程序开始讲起,因为应用层是距离我们开发最近的一层,通过应用层下探,来讲述一个数据包是如何经过层层封装的,每一层都封装了哪些属性,这些属性都是做什么的,这些属性对于网络传输有哪些影响,到了服务器后,这些数据包是如何给上层应用使用的。
如果你看这本书的过程中有觉得晦涩难懂的,不妨看看我写的关于计算机网络的系列文章
另外,还有一篇如何学习计算机网络的文章。
另外再给大家推荐一个自顶向下的搭配视频,食用起来更香
这是国立清华大学的课程 - CS 321202 計算機網路概論
我最近又在补谢老师的计算机网络,与自顶向下这本书不同的是,谢老师的计算机网络更多是从五层模型的底层开始讲起,而且我认为谢老师的计算机网络更多是偏向通信方向,比如物理层就讲到了各种信道技术、通信知识以及网络接入技术。讲到链路层会提到各种拓扑、以太网技术。所以这两本书侧重点不同,不能同一而论。大家可以根据需要选择。
不可否认这本书作为学生的教材来说是比较合适的,同时这本书也是国内教材中难得一见的好书,我认为可以和王爽的汇编语言并列。
希望广大教授和学者能够多出版这样的经典书籍,而不是出版一些驴唇不对马嘴的噱头书籍,目录看似很全,内容却一塌糊涂。

