计算机网络太难?如何系统自学计算机网络?

 

先用一张图打开全文:

我的宫伀号【编程学习指南】有更多编程学习干货,欢迎围观~

关于计算机网络学习的一点感想:

我在大学期间,学习计算机网络课程的教材是谢希仁的《计算机网络》,先不说这本书好不好,至少是非常不适合入门

枯燥的行文方式,上来就是深入到网络各层的细节,知识点那么多,令人云里雾里,直接劝退。然后考试也是各种死记硬背的题目,令人毫无兴趣。

我的宫伀号【编程学习指南】有更多编程学习干货,欢迎围观~

好的教学方式一定是讲的让别人能听懂,对于初学者,我认为好的方法应该是这样的:

什么是计算机网络?

通俗的说,计算机网络是指将各个计算机设备连接起来使其能够相互交换数据和共享资源。这些连接的设备之间使用被称作交换协议的规则来通过物理或无线设施传输信息。

我的宫伀号【编程学习指南】有更多编程学习干货,欢迎围观~

computer network, two or more computers that are connected with one another for the purpose of communicating data electronically. Besides physically connecting computer and communication devices, a network system serves the important function of establishing a cohesive architecture that allows a variety of equipment types to transfer information in a near-seamless fashion. Two popular architectures are ISO Open Systems Interconnection (OSI) and IBM’s Systems Network Architecture (SNA).

一个计算机网络示例:

我的宫伀号【编程学习指南】有更多编程学习干货,欢迎围观~

为什么要学习计算机网络?

网络十分重要,在当前这个社会,离开了网络几乎无法生存。

而工作中,无论我们从事哪个方向,我们也必须掌握基础的网络知识。

虽然我们实际写的代码可能只有CRUD,不会亲自写底层框架,但是当我们遇到问题需要排查,或者要做性能优化,那么网络知识必不可少了

企业级应用,服务器都是集群部署,那么就会涉及服务器之间的网络通信,不管是服务同步调用还是消息中间件异步通信。RPC调用,如果失败了,怎么排查失败原因?失败了是否要重试?消息中间件进行消息通信,消息消费失败,是否要重试?如何保证一致性?

比如我最近就在实际的工作中遇到一个线上问题:

系统中调用一个依赖的下游服务,总是概率性出现报错,maybe write overflow。

通过查阅netty相关资料,发现是参数过大导致超过netty buffer限制,被限流了,这个调用根本没发出去。

后面通过调整JVM参数中netty buffer大小予以解决。

我的宫伀号【编程学习指南】有更多编程学习干货,欢迎围观~

那么计算机网络到底应该如何学习呢?

为什么大家都觉得计算机网络难学啃不动?

学习讲究循序渐进,入门和进阶的学习路线跟大家分享一下:

计算机网络-基础入门

(一)视频课程推荐

哈工大-《计算机网络》

https://www.icourse163.org/course/HIT-154005

本课程分为三个单元,分别介绍了计算机网络基础、计算机网络内部原理以及网络安全威胁相关知识。

B站视频:

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

(二)书籍推荐

①《网络是怎么连接的》

我的宫伀号【编程学习指南】有更多编程学习干货,欢迎围观~

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

图文并茂,通俗易懂,是一本非常棒的网络入门书籍。

②《图解HTTP》

我的宫伀号【编程学习指南】有更多编程学习干货,欢迎围观~

http协议入门书籍,读完对http会有基本认知。

③《图解TCP/IP》

我的宫伀号【编程学习指南】有更多编程学习干货,欢迎围观~

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

计算机网络-进阶学习

(一)国外经典公开课

推荐CS144,具体来说就是跟着cs144的课程安排走一遍,完成课程的lab啦。

课程链接:

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

https://cs144.github.io/

视频:

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

我的宫伀号【编程学习指南】有更多编程学习干货,欢迎围观~

不能翻墙的B站也可以看:

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

我的宫伀号【编程学习指南】有更多编程学习干货,欢迎围观~

配套的LAB非常给力,跟着一步一步可以实现一个协议栈。

再推荐一个CS144自己实现的网友学习笔记:

https://zhuanlan.zhihu.com/p/175998415

(二)书籍推荐

①《计算机网络-自顶向下》

我的宫伀号【编程学习指南】有更多编程学习干货,欢迎围观~

这本书堪称计算机网络的圣经书籍,非常经典,被众多海外名校用作教科书。

翻译质量也不错,一层一层进行剖析,而且并不局限于某个具体的协议,从宏观角度来解释计算机网络。

②《TCP/IP详解 卷一》

我的宫伀号【编程学习指南】有更多编程学习干货,欢迎围观~

讲透TCP/IP,英文水平OK的话可以直接读英文原版。

看了那么多理论的书籍,我们还需要结合实战来加强理解。

首先是动手抓包分析,用工具查看报文的详细信息。

抓包书籍推荐:

①《Wireshark网络分析就这么简单》

我的宫伀号【编程学习指南】有更多编程学习干货,欢迎围观~

作者行文幽默风趣,由浅入深的用Wireshark分析了常见的网络协议,还提供了很多实际的案例,通过这些案例可以更好的加深对协议的理解。

②《wireshark网络分析的艺术》

我的宫伀号【编程学习指南】有更多编程学习干货,欢迎围观~

和第一本书是同一个作者,这本书实际中的案例更多。

实战项目推荐

开发一些网络工具,如聊天工具、p2p。

推荐网友分享的一些优秀实战项目:

(1)浅谈java实现一个聊天软件:

https://netcan.github.io/2016/12/15/%E6%B5%85%E8%B0%88Java%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AA%E8%81%8A%E5%A4%A9%E8%BD%AF%E4%BB%B6/

(2)java实现简单的聊天工具:

https://www.jianshu.com/p/fd7352adf0ef

(3)J-IM:JAVA语言开发的轻量、高性能、单机支持几十万至百万在线用户IM

https://gitee.com/xchao/j-im

一些推荐学习网站

RFC

https://www.ietf.org/standards/rfcs/

tutorialspoint

https://www.tutorialspoint.com/computer_fundamentals/computer_networking.htm

geeksforgeeks

https://www.geeksforgeeks.org/basics-computer-networking/

好啦,今天的分享就到这里,希望给大家在学习计算机网络的路上提供到帮助哦~

如果觉得有用的话,点赞+分享+收藏,一键三连防止走丢哇~

我的宫伀号【编程学习指南】有更多编程学习干货,欢迎围观~

分享到:

相关文章阅读:

  • 现在我们似乎总是会看见一些细思极恐的题目或者图片,今天就来看看这些恐怖的内涵图片,可能一开始看觉得没有什么,但是诡异图片看懂了
    互联网最记录:3203
  • 生活中有太多事情是我们无法从科学角度解释的,所以每个人都可能会碰到灵异事件,明星自然也不例外,最典型的例子就是香港有位大明星在
    互联网最记录:2978
  • 面具一般都是小孩子喜欢玩的东西,大部分都是看起来十分有趣的。但是有的面具却并非如此,毕竟一开始面具的出现就不单单只是玩具。有
    互联网最记录:2907
  • 人们对于美食的追求总是胜过一切,毕竟吃才是最最享受的。特别是在法国,他们把美食当做高尚艺术来看待,法国菜更是作为世界三大料理有
    互联网最记录:2707
  • 地球上80%被水覆盖着,人类历史的发展离不开水,特别是淡水是人类生存的根本之源,而河流是人类获取淡水的唯一途径,那么世界十大河流是
    互联网最记录:2646
  • 世界上神秘的怪兽有很多,今天小编就来给大家说说其中的十类神秘怪兽,其中小编要重点提的泽西恶魔简直就是令人心惊胆寒,这样的怪物长
    互联网最记录:2620
  • 互联网排行(TOP10)