(三)Computer Network 计算机网络学习路径

2024-11-20 03:35

(三)Computer Network 计算机网络学习路径


1. 初阶

顺序

资源

知识分类/使用方法

链接和介绍

1

网络是怎样连接的

【入门】【兴趣】

无论是不是计算机专业的都建议看一遍,从实际例子着手能提高学习的效率

https://32931414.s21i.faiusr.com/61/ABUIABA9GAAgmvGMuwYo5dS80AI.pdf


本书以一个实际的案例开始:浏览器中输入一个网址,到最终浏览器展示内容,中间经历了什么?逐步探索,给出了非常多的图解,讲述了网络的全貌。图文并茂,通俗易懂,是一本非常棒的网络入门书籍。

==

其中关于电信等运营商是怎么传输的,这部分你可以跳过,当然你感兴趣也可以看,只是我觉得没必要看。

==

如果你是非计算机专业的小白,对于计算机网络一窍不懂,连最基本的HTTP都没听过,那我建议你先去看看《网络是怎样连接的》。

1

图解 HTTP

or

图解网络 by 小林coding

【入门】【兴趣】

图解 HTTP:

https://32931414.s21i.faiusr.com/61/ABUIABA9GAAgm-GMuwYogKC3wgM.pdf

几天就可以看完


图解网络 By 小林coding:

https://xiaolincoding.com/network/

2

图解TCP/IP

【入门】【兴趣】

https://32931414.s21i.faiusr.com/61/ABUIABA9GAAgm-GMuwYojKGAxAc.pdf


以图文的方式介绍了TCP/IP网络的每一层。

==

这个书籍的顺序不是从「应用层 —> 物理层」,而是从「物理层 -> 应用层」顺序开始讲的,这一点我觉得不太好,这样一上来就把最枯燥的部分讲了,很容易就被劝退了,所以我建议先跳过前面几个章节,先看网络层和传输层的章节,然后再回头看前面的这几个章节。

给下面这个阶段的学习建议:从问题出发,按照 Why -> How -> What 这样的顺序。先谈遇到了什么问题,再说如何去解决,最终才是搬出前辈们的 RFC 文档,这样就会顺畅很多。而且这是在引导我们去思考如何解决问题,从点对点连接开始如何构造一个网络。如果一上来就搬出原理,比如 TCP 连接管理、状态转换、超时重传、IP 包如何分段与重组这样的东西,我觉得是比较懵逼的。作为初学者我们并不太清楚为什么需要这样做,不这样做行不行?

以前学计网的时候,我也有一堆的困惑:比如路由器和交换机有什么区别?为什么有了 MAC 地址还要 IP 地址呢?只用 IP 地址行不行呢?如何理解广播域和冲突域?如果你脑海里对这些问题的答案非常的清晰,那么恭喜你,你对网络掌握得还不错!

学习计网过程中也需要建立结构化的思维,最直观的结构就是按照计网的层次来,即:应用层、传输层、网络层、数据链路层、物理层。然后在去学习每个层的功能和其中的每个协议,这个过程既可以自顶而下,也可以自底向上。分层学习过程中除了要掌握每一层之外,最重要的其实是要学习层与层之间是如何链接起来的,比如 IP 层和数据链路层就是 ARP 协议。

https://www.zhihu.com/question/60932935/answer/929991382 这个也会有一定帮助

3

计算机网络 - 自顶向下方法 by James F. Kurose, Keith W. Ross

【理论】【大局观】

  1. 每章看完后,完成课后所有习题。

  2. 建议读英文原版。

  3. 看前六章就可以了,学有余力的可以读完。

  4. 这本书作者有一个配套的课程视频可以一起看

英文版:https://32931414.s21i.faiusr.com/61/ABUIABA9GAAgnPGMuwYo_d-Xogc.pdf


中文版:https://32931414.s21i.faiusr.com/61/ABUIABA9GAAgnvGMuwYoncmfoAU.pdf


配套课程:https://www.bilibili.com/video/BV1mb4y1d7K7/?vd_source=72867308e8b7b6d7774a7e4be6278f68


笔记:https://github.com/moranzcw/Computer-Networking-A-Top-Down-Approach-NOTES


lab:https://gaia.cs.umass.edu/kurose_ross/wireshark.php


ppt:https://gaia.cs.umass.edu/kurose_ross/ppt.php


参考答案:https://github.com/jzplp/Computer-Network-A-Top-Down-Approach-Answer(CSDN:https://blog.csdn.net/qq278672818/category_8368262.html


推荐的人最多的书籍,没有之一。


这本书从应用层讲起,一直往下讲到物理层,似乎更符合人脑的学习和思考方式。

==

《计算机网络:自顶向下方法》从头到尾看两遍,完成课后所有习题,就算系统学习过一次了。建议读英文原版,书名为《Computer Networking A Top-Down Approach》,这本书打好理论基础,然后再读读《Unix网络编程》辅以实践,有奇效。

==

这是计网最好的入门书。 我花了一个月,读完了前五章。自顶向下,首先强调应用层,勾起读者兴趣,然后逐层往下剖析。每一章开头都会有个总览,介绍这章主要解决的问题。

每章在开始介绍那层具体的协议之前,会先介绍这层协议中主要问题的解决原则,避免一开始就陷入具体协议的细节中,迷失方向。问题驱动,以抽象原则入手,最后再看具体协议,就变得容易了。

==

本人大学所有专业课均为考前看课本自学,唯有这本让我觉得可以完全胜任“自学”的功能。深入浅出,幽默生动。没有数学书上那种一句一句的定义和公式,更多的时候是大段大段的讲解,各种形象,看小说似的,很快就看完了一本,看完后内牛满面,从没想到自己也能读完一本。考前5天,每天一到两章通读(中文版就可以了),再把章节后的习题一做,看懂百分之多少就能得多少分。

==

如果把计算机网络书籍按照难度来分成五个等级,那么这本书的级别在 3 - 4 级,难点体现在它是一本外文书,翻译成中文会有一些解释不到位的地方,二来是这本书的思想层次从开发的角度来看有些偏高。说白了就不是一本通俗易懂讲计算机网络的书籍。

==

这本书教给我的东西,比协议本身要重要得多。   1、思考并理解。虽然协议前辈都设计好了,我们用起来也很舒服。但是作者写这本书,他的目的不在于让你记住,而是让你站在设计者的角度去思考。比如讲TCP的时候,作者并没有一开始就拿出来完备的TCP的各种规则来让读者去记住,而是从一个最简单的底层模型开始,让读者去思考,如果你是设计者,你会怎么设计这个协议。当底层模型慢慢变得没那么理想,设计的协议要做哪些改动。一本好的教材就应该这样授人以渔。   2、实践实践再实践。计算机网络方面的知识,没有实践,很难学到东西。我在用wireshark抓包的时候,就发现了一些细节上的实践,书中说的和实际的情况已经不一样了,毕竟协议都是人定的。只有掌握在实践中分析问题,解决问题的能力,才是长久之道。   3、把握重点。计算机网络是我学习计算机以来,重点最不明确的一门学科。所以我刚开始学的时候,总是抓不住门道,觉得好复杂啊,这么多协议要学,什么TCP,UDP,IP,ARP,ICMP,BGP,RIP,OSFP根本记不住啊。现在虽然我可能也记不住,但是只要我知道怎么去得到我想要的信息,这就够了。时间应该就是这样节约下来的吧。


这本书对于绝大多数童鞋看 1 - 6 章就可以了,这六章能够涵盖我们日常开发中所用到的大部分内容。如果你是通信方向的童鞋,那你需要看第七章,关于无线网络和移动网络这块。如果你是搞网络安全的,那么第八章是你必不可少的内容。至于多媒体应用这块,如果你有此业务场景,可以看一下这章。

4

计算机网络微课堂

【视频课程】【大局观】

https://www.bilibili.com/video/BV1c4411d7jb/?p=1&vd_source=72867308e8b7b6d7774a7e4be6278f68


课程笔记:https://blog.csdn.net/Nimrod__/article/details/113127311?spm=1001.2014.3001.5502


学习计算机网络,我首先推荐的 UP 主湖科大教书匠,他讲的计算机网络十分通俗易懂,重点的地方讲的十分细致,并且还有一些实验,更好的是有考研 408 的难题的讲解,也是非常适合考研党,除了课程内容外还有很多习题讲解视频,特别赞的一点是每天动态里都会更新一道考研题,播放量也非常的多。

给下面这个阶段的学习建议:计算机网络是一门需要动手实践的学科,这点其实和编程很像。无论看多么牛X编程教科书,无论看多少遍,只要不动手去写代码,要不了多久就全还给课本了。

1. 从最简单的UDP协议开始,可以用C去写些简单的UDP发送/接受程序,然后记得会用抓包软件Wireshark去抓取程序运行时发送的数据包,逐层逐层的去看去学习。由于网络是分层设计,所以你对网络的了解最好也按照层次递进关系来学习,先不管路由,不管网络层,从传输层入手,一层一层的征服。看一下 ARP 协议、IP 协议、TCP 协议、HTTP 协议的数据格式是怎么样的,客户端和服务端的交互过程是怎样的。

2. 用raw socket实现步骤1中的程序,自己去构造UDP报文,根据协议手动的往里面塞数据,这样你自己“抚摸”过这些01之后对协议的感觉 *绝对* 不一样。

3. 更深一步,用raw socket去构造整个网络层及以上的报文,进而去了解IP协议各字段协议。这个过程通过Wireshark去debug抓包分析。

4. 写一写关于 Socket 的服务端和客户端的交互程序,修改一下各个参数看一下有什么变化。

5

Wireshark网络分析就这么简单

【实战】

实战抓包

‍https://32931414.s21i.faiusr.com/61/ABUIABA9GAAgnPGMuwYovfKojQY.pdf‍


读的时候你会忍不住笑的,区别于《Wireshark数据包分析实战》,本书就像一本侦探小说集,以幽默风趣的语言风格,借助wireshark以理性的思考来不断探险,根据蛛丝马迹来侦破案情。总结,读完数据包分析实战来读这本。

==

在学习书籍资料的时候,不管是 TCP、UDP、ICMP、DNS、HTTP、HTTPS 等协议,最好都可以亲手尝试抓数据报,接着可以用 Wireshark 工具看每一个数据报文的信息,这样你会觉得计算机网络没有想象中那么抽象了,因为它们被你「抓」出来了,并毫无保留地显现在你面前了,于是你就可以肆无忌惮地「扒开」它们,看清它们每一个头信息。那在这里,我也给你推荐 2 本关于 Wireshark 网络分析的书,这两本书都是同一个作者,书中的案例都是源于作者工作中的实际的案例,作者的文笔相当有趣,看起来堪比小说一样爽,相信你不用一个星期 2 本都能看完了。

5‘

Wireshark网络分析的艺术

【实战】

5的平替

https://32931414.s21i.faiusr.com/61/ABUIABA9GAAgmvGMuwYoqLXkzwI.pdf

5‘

Wireshark 数据包分析实战

【实战】

5的平替

https://32931414.s21i.faiusr.com/61/ABUIABA9GAAgmvGMuwYoqLXkzwI.pdf


初学者必备,介绍了 wireshark 安装,嗅探网络流量,wireshark 的基本使用,用 wireshark 分析了一圈常用的TCP,UDP 协议,也简要分析了 HTTP 等应用层协议,概要介绍了一些 TCP 重传的机制,最后是无线分析。


整个书定位应该是入门级别的,基本上每章都是简要介绍,并没有特别深入大张阔斧地进行描述。文章行文思路清晰,译者的翻译水平也不错。总的来说,是初步认识和了解 wireshark 的好书。

5‘

Wireshark网络分析实战

【实战】

5的平替

https://32931414.s21i.faiusr.com/61/ABUIABA9GAAgnPGMuwYonIDcxgY.pdf


其内容涵盖了Wireshark的基础知识,抓包过滤器的用法,显示过滤器的用法,基本/高级信息统计工具的用法,Expert Info工具的用法,Wiresahrk在Ethernet、LAN及无线LAN中的用法,ARP和IP故障分析,TCP/UDP故障分析,HTTP和DNS故障分析,企业网应用程序行为分析,SIP、多媒体和IP电话,排除由低带宽或高延迟所引发的故障,认识网络安全等知识。


2. 中阶

顺序

资源

知识分类/使用方法

链接和介绍

1

Stanford课程cs144

【视频课程】【实战】

很多人推荐lab要做,是用C++自己实现一个TCP

https://www.scs.stanford.edu/10au-cs144/

https://cs144.github.io/

https://www.youtube.com/playlist?list=PLvFG2xYBrYAQCyz4Wx3NPoYJOFjvU7g2Z

https://www.bilibili.com/video/BV1Tt411s7ei/


配合《计算机网络:自顶向下方法》(Computer Networking: A Top-Down Approach)。具体来说就是跟着cs144的课程安排走一遍,完成课程的lab啦。其实觉得cs144的公开视频讲得挺一般的,但是cs144新的lab真的很棒。lab的很大一部分是让你自己从零开始去写一个真实能用的tcp。写一遍之后,对tcp工作的原理以及设计思想就会有深得多的理解。我以前对tcp等网络原理的认识也是一团浆糊,但自从自己写了一遍之后,腰也不酸了,腿也不疼了,搬砖也更有力气了。毕竟研究表明,能自己实现一个tcp的人,很少有理解不了tcp原理的。

==

国外经典课程:CS144,这门课的视频其实并不突出,一般般吧,但是 Assignment/Lab 挺有意思的,用 C++ 实现一个 TCP,当然了不会像 linux 中网络协议栈那么复杂,但是麻雀虽小五脏俱全,你想想你都写了一个tcp了,还怕理解不了?

2

谢希仁的《计算机网络基础》书籍+ 韩立刚计算机网络课程

【深度进阶】

配合视频课程一起看

https://32931414.s21i.faiusr.com/61/ABUIABA9GAAgp-aMuwYozImhlQI.pdf


课程:https://www.bilibili.com/video/BV1gV411h7r7/?p=1&vd_source=72867308e8b7b6d7774a7e4be6278f68


关于谢希仁的书籍:

这本书是很多大学的教材,也是一本非常好的进阶书籍,这本书相对于自顶向下方法更多是对于通信网络的阐述。

这本书的特点是突出基本原理和基本概念的阐述,同时力图反映计算机网络的一些最新发展。本书可供电气信息类和计算机类专业的大学本科生和研究生使用,对从事计算机网络工作的工程技术人员也有参考价值

==

谢希仁的书讲的基本上是《TCP/IP详解:卷一》里的知识。

==

最后我推荐谢希仁版本的,不过它没有实验,所以我的实验是按自顶向下做的。

==

两本书都要看,都有各自的优缺点。《自顶向下》从应用层出发,先激起学生兴趣(因为学生最先接触的是网络应用),然后再逐步深入研究这些应用背后的原理,传输层干了什么,网络层干了什么,数据链路层又干了什么,等等。而谢希仁的书体系很完整,也讲到很多《自顶向下》没讲到的地方(比如生成树)。另外《自顶向下》最新的第7版把SDN也带了进来,算是跟一个潮流吧。谢希仁的最新版教材还没看过,不知道具体改进有多大。两本书结合起来看是最好的,只看其中任何一本都会造成知识上的缺失。


关于韩立刚的视频课程:

韩立刚老师所讲的计算机网络视频,内容比较多,但是讲解的通俗易懂,并且老师讲课的经验也十分的丰富。配套的教材是谢希仁老师的计算机网络教材,韩老师的最近的一个视频视频比较新,播放量还比较少,但是他讲的是真的不错,相比于王道考研所讲的计算机网络,韩老师更加细致一些。

3

TCP/IP详解 卷一:协议 by W. Richard Stevens

【TCP】【理论】

作为2的查漏补缺,2讲过的地方可以跳过只看没讲过的

https://32931414.s21i.faiusr.com/61/ABUIABA9GAAgp-aMuwYo8v25swU.pdf


但如果要深入 TCP,前面的这些书还远远不够,赋有计算机网络圣经的之说的《TCP/IP 详解 卷一:协议》这本书,是进一步深入学习的好资料,这本书的作者用各种实验的方式来细说各种协议,但不得不说,这本书真的很枯燥,当时我也啃的很难受,但是它质量是真的很高,这本书我只看了 TCP 部分,其他部分你可以选择性看,但是你一定要过几遍这本书的 TCP 部分,涵盖的内容非常全且细。

==

嗯,把这本书当作一本 Google 词典确实是一种不错的选择。不过这本书确实是一本非常好的书,这本书的关注点在于 TCP/IP 协议栈上,可以说把 TCP/IP 讲透讲细了,比如讲 TCP 就会分别从连接管理、TTCP 超时重传、TCP 拥塞控制、TCP 保活机制来讲起,不管你是从事哪个技术栈的研究,不管你是程序员还是网络工程师,这本书都是你值得一读的一本,不过要读最好还是读英文版。

==

计算机网络主要的就是TCP/IP协议栈了。你可以把《TCP/IP详解》认真看一下,把基础知识吃透。

4

TCP/IP详解 卷二:实现

【TCP】【实战】

https://32931414.s21i.faiusr.com/61/ABUIABA9GAAgp-aMuwYomaCv6gQ.pdf


协议的实现方面, 主要学习底层协议(指传输层及以下)的实现, 这些协议都是在操作系统层面实现的,最好的教材是《TCP/IP详解:实现》

==

这本黑皮书主要是介绍如何实现 TCP/IP 协议的,这本书很难入门。书中给出了约500个图例,15000行实际操作的C代码,采用举例教学的方法帮助你掌握TCP/IP实现。本书不仅说明了插口API和协议族的关系以及主机实现与路由器实现的差别。还介绍了4.4BSD-Lite版的新的特点。本书适用于希望理解TCP/IP协议如何实现的人,包括编写网络应用程序的程序员以及利用TCP/IP维护计算机网络的系统管理员。

==

如果是指的网络编程的实验,那题目评论里说的《TCP/IP详解:卷二》是非常好的资料,当然也可以看下卷一巩固下网络基础知识。简单点可以试试用Python写个类似nc的工具,web爬虫,dns爆破工具等等。


3. 高阶

顺序

资源

知识分类/使用方法

链接和介绍

1

TCP/IP详解 卷三:tcp事务协议、http、nntp和unix域协议

【TCP】

https://32931414.s21i.faiusr.com/61/ABUIABA9GAAgp-aMuwYoqY-fswI.pdf


第3卷详细介绍了当今TCP/IP程序员和网络管理员必须非常熟悉的四个基本主题: TCP的扩展、Hyper文本传输协议、网络新闻传输协议和UNIX域协议。与前两卷一样,本书介绍了4.4BSD-Lite网络代码中的示例和实现细节。嗯。。。有一些沉重了,其实这些深入协议底层的书籍我们 99% 的人都接触不到,但是为了回答的完整性,我就都列出来了,这样的好处是让你能系统了解。

2

RFC 文档


https://datatracker.ietf.org/doc/rfc1644/


当然,计算机网络最牛逼的资料,那必定 RFC 文档,它可以称为计算机网络世界的「法规」,也是最新、最权威和最正确的地方了,困惑大家的 TCP 为什么三次握手和四次挥手,其实在 RFC 文档几句话就说明白了。

3

Unix网络编程


https://32931414.s21i.faiusr.com/61/ABUIABA9GAAgp-aMuwYotN6K8wQ.pdf


读完《自顶向下》打好理论基础,然后再读读《Unix网络编程》辅以实践,有奇效。



DIY吧 除非你...
若你有信心 我建议CS申硕申博求职DIY~ 若你想找专家伴你成长 我建议寻找做啥成啥的人 他们能力强 资源多 能解决你一切CS申硕申博求职身份生活的挑战~
先找其他机构?
肯定有其他靠谱机构 但如果你感觉他们干不过我、或你走投无路了 你再来找我吧hhh 但如果我没名额了 希望你别难过 我不是针对你 而是我每年名额都会满
就想加肖哥微信
我的微信被我藏在我荡气回肠的人生经历里 xiaogeedu.tech/col.jsp?id=253 辛苦你去找下hhh 我是美西时区 但每年9月中-12月中是申请季/招聘季 作息是乱的
不考虑商业合作
不商业合作 因为我不知谁靠谱 不合作能杜绝狗血 因噎废食能保护我自己 且我不缺流量还要赶走流量 找我合作您巨亏hh 我与任何商家或申硕申博求职中介都无关
用电脑访问本站
不建议用手机端访问本站,看着贼挤,在电脑端看着舒服hh