如何系统学习计算机网络?
关于计算机网络如何学习,我就拿自己亲身实践的来举例吧,因为我也自学学起的。
我觉得最重要的就是看书(博客) + 实践
书也分为不同的层次,最基础的入门书籍有
网络是怎样连接的
这本书是日本人写的,它和《程序是怎样运行的》、《计算机是怎样跑起来的》统称为图解入门系列,最大的特点就是风趣幽默,简单易懂。这本书通过多图来解释浏览器中输入网址开始,一路追踪了到显示出网页内容为止的整个过程,以图配文,讲解了网络的全貌,并重点介绍了实际的网络设备和软件是如何工作的。
本书图文并茂,通俗易懂,非常适合计算机、网络爱好者及相关从业人员阅读。
所以如果大家是新手的话,强烈推荐一下这本书。
日本人就爱图解,同样图解系列的入门书籍还有《图解 HTTP》、《图解 TCP/IP》。
图解 HTTP
《图解 HTTP》是 HTTP 协议的入门书籍,当然 HTTP 也是属于计算机网络的范畴,这本书适合于想要对 HTTP 有基本认知的程序员,同样也适合查漏补缺。
这类书看起来就毫无难度了,不得不说图解系列是给小白的圣经,它能增强你的自信,让你觉得计算机其实 "没那么难",这是非常重要的。初学者,最怕的就是劝退了。
图解 TCP/IP
上面的图解 HTTP 是针对 HTTP 协议的,那么《图解 TCP/IP》就是针对 TCP/IP 协议簇中的协议了,这本书我已经看了 80% 了,还是比较系统的,基本上涵盖了 TCP/IP 协议簇中的所有协议知识了,这本书看完了完全就可以直接深入理解 TCP/IP 协议簇了。
对于新手来说,最重要的一点就是帮助你理解,怎么简单怎么来,这样才能快速入门,对于快餐式的社会来说,快速理解当然是当仁不让的首选了。
如果上面这几本书你都搞定了的话,那你就可以读一下 《计算机网络:自顶向下方法》这本书了,这本书可以作为基础书籍也可以作为进阶书籍,这里我归为了进阶书籍,因为里面有一些章节不是那么好理解,比如介绍网络层的时候,会分为数据平面和控制平面,介绍 TCP 和 UDP 的时候,也会聊到一些原理性问题。
计算机网络:自顶向下方法
这本书是一本计算机网络的圣经书籍,圣经就在于人人都应该读一下这本书,原著非常经典,翻译也很不错,我自己也马上就看完了,这本书会从顶层,也就是网络层逐步下探到物理层,一层一层的带你入门,解释各层之间的协议,主要特征是什么,一个数据包的发送历程。这本书并不局限于某个具体的协议,而是从宏观的角度来看待计算机网络到底是什么,里面有一些专业名词,理解并掌握后会对深入学习计算机网络非常有用。
计算机网络 谢希仁
这本书是很多大学的教材,也是一本非常好的进阶书籍,这本书相对于自顶向下方法更多是对于通信网络的阐述。
这本书的特点是突出基本原理和基本概念的阐述,同时力图反映计算机网络的一些最新发展。本书可供电气信息类和计算机类专业的大学本科生和研究生使用,对从事计算机网络工作的工程技术人员也有参考价值
现在我们接着聊,如果上面这两本书随便一本看完了,那么恭喜你已经是一个"老手"了,你的网络基础能打败 90% 以上的人了,如果你还不满足的话,那你就需要继续深入,继续深入也是我推荐给你的提高书籍。
HTTP 权威指南
HTTP 权威指南是深入 HTTP 非常值得一看的书,这本书写的非常全了。
此书第一部分是HTTP的概略,如果你没有时间,通读第一部分就能让你应付普通的日常开发工作。
第二部分主要讲现实世界中HTTP的架构,也可以看作HTTP的全景图,包括Web Server/Cache/Proxy/Gateway,是全书中精华的部分。
第三部分主要是HTTP安全,其中Basic和Digest概略看下即可,现实世界中用的应该不多。看HTTPs最好有一些计算机安全基础,这样会顺畅很多。
第四部分主要是关于HTTP Message Body的部分,包括Content Negotiation,MIME Type,chunked encoding等,概略看下即可。
第五部分的内容,Web Hosting可以认真看下,了解下Virtual Host(话说我上学的时候一直搞不懂Virtual Host,一个IP怎么能同时Host两个不同域名的Web页面呢,sigh)。
剩下三章已经过时,基本可以忽略。 最后的附录,可以用作边用边学的字典,如果你自己来写Web Server,那么这一部分是极有价值的参考。
总而言之,无论你是前端还是后端,只要是Web相关的,那么此书就是必读的。
TCP/IP 详解
这是一本被翻译耽误的经典书,两个硬核作者 Kevin R. Fall 和 W. Richard Stevens 被南开大学的某计算机洗的译者给毁了。我第一开始读这本书以为是自己智商不够,原来是翻译 "瞎TM翻" 啊。语句不通且不说,您好歹走点心,改点措辞也行啊,纯碎是生搬硬套谷歌翻译啊,哎。
来看看豆瓣读者们对这本书的评价吧,比我有力量多了。
这个回答给我看乐了,嗯,把这本书当作一本 Google 词典确实是一种不错的选择。
不过这本书确实是一本非常好的书,这本书的关注点在于 TCP/IP 协议栈上,可以说把 TCP/IP 讲透讲细了,比如讲 TCP 就会分别从连接管理、TTCP 超时重传、TCP 拥塞控制、TCP 保活机制来讲起,不管你是从事哪个技术栈的研究,不管你是程序员还是网络工程师,这本书都是你值得一读的一本,不过要读最好还是读英文版。
TCP/IP 详解有三本,第二本是
这本黑皮书主要是介绍如何实现 TCP/IP 协议的,这本书很难入门。书中给出了约500个图例,15000行实际操作的C代码,采用举例教学的方法帮助你掌握TCP/IP实现。
本书不仅说明了插口API和协议族的关系以及主机实现与路由器实现的差别。还介绍了4.4BSD-Lite版的新的特点。本书适用于希望理解TCP/IP协议如何实现的人,包括编写网络应用程序的程序员以及利用TCP/IP维护计算机网络的系统管理员。
第三卷是 tcp事务协议、http、nntp和unix域协议
这本书看的人就更少了。
第3卷详细介绍了当今TCP/IP程序员和网络管理员必须非常熟悉的四个基本主题: TCP的扩展、Hyper文本传输协议、网络新闻传输协议和UNIX域协议。与前两卷一样,本书介绍了4.4BSD-Lite网络代码中的示例和实现细节。
嗯。。。有一些沉重了,其实这些深入协议底层的书籍我们 99% 的人都接触不到,但是为了回答的完整性,我就都列出来了,这样的好处是让你能系统了解。
上面都是一些理论书籍,下面是稍微偏实战一些的书籍了。
计算机网络实战最有效的当然就属于抓包了,有很多抓包工具比如
wireshark、sniffer、httpwatch、iptool、fiddle 等,但是我用的和使用频率最高的应该就是 wireshark 了,关于 wireshark 还有两本实战方面的书你需要知道
wireshark 数据包分析实战
初学者必备,介绍了wireshark安装,嗅探网络流量,wireshark的基本使用,用wireshark分析了一圈常用的TCP,UDP协议,也简要分析了HTTP等应用层协议,概要介绍了一些TCP重传的机制,最后是无线分析
整个书定位应该是入门级别的,基本上每章都是简要介绍,并没有特别深入大张阔斧地进行描述。文章行文思路清晰,译者的翻译水平也不错。
总的来说,是初步认识和了解wireshark的好书
wireshark 网络分析就是这么简单
读的时候你会忍不住笑的,区别于《Wireshark数据包分析实战》,本书就像一本侦探小说集,以幽默风趣的语言风格,借助wireshark以理性的思考来不断探险,根据蛛丝马迹来“侦破案情”
总结,读完数据包分析实战来读这本。
Wireshark网络分析实战
其内容涵盖了Wireshark的基础知识,抓包过滤器的用法,显示过滤器的用法,基本/高级信息统计工具的用法,Expert Info工具的用法,Wiresahrk在Ethernet、LAN及无线LAN中的用法,ARP和IP故障分析,TCP/UDP故障分析,HTTP和DNS故障分析,企业网应用程序行为分析,SIP、多媒体和IP电话,排除由低带宽或高延迟所引发的故障,认识网络安全等知识。
书籍推荐大概就是上面那些,除了书之外,还有一些视频、博客、官网网站可以学习
视频
今天在 b 站看视频的时候,看到了一句话众所周知,b 站是用来搞学习的 ,对于我们学习编程的童鞋来说,b 站有着非常多的学习资源,但是有一些质量并不是很好,看了之后不容易理解,这也是写这一篇文章的原因,为大家分
享一些质量超高的计算机基础的学习视频,往下看就完了。
一、计算机网络微课堂(有字幕无背景音乐版)(陆续更新中......)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
学习计算机网络,我首先推荐的 UP 主湖科大教书匠,他讲的计算机网络十分通俗易懂,重点的地方讲的十分细致,并且还有一些实验,更好的是有考研 408 的难题的讲解,也是非常适合考研党,除了课程内容外还有很多习题讲解视频,特别赞的一点是每天动态里都会更新一道考研题,播放量也非常的多。
2. 2019 王道考研 计算机网络_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
既然说到了考研,那我就不得不提一下王道考研了,恭喜你发现了宝藏。王道考研的计算机网络视频,播放量非常多,而且老师是一位小姐姐,声音十分动听,声音这么好听的老师给你讲课,妈妈再也不用担心我的学习了呢,总之,这个视频的质量也非常高,弹幕全是对小姐姐的高度评价。(王道考研其他的视频也不错哦,暗示一下:操作系统,数据结构等等)
3. 韩立刚计算机网络 谢希仁 第7版 2020年12月_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
韩立刚老师所讲的计算机网络视频,内容比较多,但是讲解的通俗易懂,并且老师讲课的经验也十分的丰富。配套的教材是谢希仁老师的计算机网络教材,韩老师的最近的一个视频视频比较新,播放量还比较少,但是他讲的是真的不错,相比于王道考研所讲的计算机网络,韩老师更加细致一些。
4. 计算机网络(谢希仁第七版)-方老师_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
在计算机网络方面,我还想推荐的一位老师就是方老师,也是一位小姐姐老师。她的视频配套的教材也是谢老师的网络教材,在线看的小伙伴也超多,弹幕都是对方老师的评价。
博客
推荐几个不错的学习博客。
互联网协议入门-阮一峰:http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i....
网络协议-兰亭风雨:http://blog.csdn.net/ns_code/article/category/1805481
HTTP协议:http://www.cnblogs.com/TankXiao/category/415412.html
Unix 网络编程:http://blog.csdn.net/chenhanzhun/article/category/2767131/2
TCP/IP详解:http://blog.csdn.net/chenhanzhun/article/category/2734921/1
计算机网络面试题:http://blog.csdn.net/shadowkiss/article/details/6552144
国外优秀计算机网络站点:http://www.tcpipguide.com/free/t_TCPSlidingWindowAcknowledgmentSystemForDataTranspo-6.htm
当然最硬核的就是 RFC 文档了 RFC Index
学习 HTTP ,必须要看一下 MDN 官网 HTTP | MDN
学习计算机网络,Cloudflare 你必须要去看 https://www.cloudflare.com/zh-cn/learning/
GeeksforGeeks 学习计算机网络也非常不错 Basics of Computer Networking - GeeksforGeeks
Tutorialspoint 系统学习计算机,不仅仅局限于计算机网络 Computer - Networking
国外优秀的学习网站不能少了 javapoint Types of Computer Network - javatpoint
以上这些网站都是我精心汇总的一些内容。
我自己也输出了一些关于计算机网络非常硬核的连载教程
关于 TCP 和 UDP,这篇文章给你讲透了
万字长文爆肝 DNS 协议
稳了!一文给你讲透 ARP 协议
我画了 40 张图就是为了让你搞懂计算机网络层
肝了一周的 UDP 基础知识终于出来了
拿下计网的这些协议后,我就是最靓的仔
TCP/IP 基础知识
计算机网络基础知识总结
实验
借鉴一些大佬的回答,给你推荐一个斯坦福课程的实验
推荐 Stanford 课程 cs144,配合《计算机网络:自顶向下方法》(Computer Networking: A Top-Down Approach)。具体来说就是跟着 cs144 的课程安排走一遍,完成课程的lab 啦。
计算机网络太难?如何系统自学计算机网络?
先用一张图打开全文:
我的宫伀号【编程学习指南】有更多编程学习干货,欢迎围观~
关于计算机网络学习的一点感想:
我在大学期间,学习计算机网络课程的教材是谢希仁的《计算机网络》,先不说这本书好不好,至少是非常不适合入门 。
枯燥的行文方式 ,上来就是深入到网络各层的细节,知识点那么多,令人云里雾里,直接劝退。然后考试也是各种死记硬背的题目 ,令人毫无兴趣。
我的宫伀号【编程学习指南】有更多编程学习干货,欢迎围观~
好的教学方式一定是讲的让别人能听懂,对于初学者,我认为好的方法应该是这样的:
从实际案例出发 (比如我们在浏览器输入一个网址到展示出内容中间发生了什么事情)计算机网络出现的背景是什么?遇到了什么问题?是为了解决什么问题?不能一下子就陷入细节,一开始应该快速入 门,了解其概貌。入门后,然后再进阶学习,建议从自顶向下 的方式来学习。一定要多实战 ,通过抓包工具查看实际的数据包长啥样,通过动手实现一个聊天工具等。什么是计算机网络?
通俗的说,计算机网络是指将各个计算机设备连接起来使其能够相互交换数据和共享资源。这些连接的设备之间使用被称作交换协议的规则来通过物理或无线设施传输信息。
我的宫伀号【编程学习指南】有更多编程学习干货,欢迎围观~
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/
好啦,今天的分享就到这里,希望给大家在学习计算机网络的路上提供到帮助哦~
如果觉得有用的话,点赞 +分享 +收藏 ,一键三连防止走丢哇~
我的宫伀号【编程学习指南】有更多编程学习干货,欢迎围观~
相关问答
怎样 学网络通信 工程?我是一只通信汪,如果你不是学习的通信相关专业的话,想入门也可以,要做好是比较困难的。学习通信技术可以看一些《计算机网络基础》《LTE基本原理》《通信基站...
通信 技术如何学习?通信技术学什么:英语、高等数学、计算机文化基础、C语言、工程数学、电路、电子技术、信号与系统、通信电子线路等。通信技术学什么1主要课程有哪些?英语、...
凡连入 网络 的 计算机 都需要依靠什么实现相互 通信 ?凡连入网络的计算机需要依靠协议实现相互通信。1.因为计算机之间的通讯需要基于一定的规则和约定,以便数据能够按照预定的方式传输和处理。这些规则和约定就...
计算机网络 的发展过程分哪四个阶段计算机网络的发展过程大致...[最佳回答]计算机网络的发展可划分为几个阶段每个阶段各有何特点答:计算机网络的发展可分为以下四个阶段.(1)面向终端的计算机通信网:其特点是计算机是网络...
【Internet网中不同 网络与 不同 计算机 相互通讯的基础是?A:ATM...[最佳回答]B,tcp/ipTCP/IP(TransmissionControlProtocol/InternetProtocol)的简写,中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议,这个协议...
计算机网络 是按什么相互 通信 的?以tcp/ip协议互相通讯。TransmissionControlProtocol/InternetProtocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Inter...
移动 通信网络 是如何 与计算机网络 连接起来的?应邀回答本行业问题。为了满足手机终端的数据流量上网问题,移动通信的网络架构中都有相应的网关部分,用来联通互联网。4G网络中,和互联网联通的设备是PGW。...
计算机 应用技术 与计算机网络 技术的区别? 申请方计算机应用技术与网络技术的区别你从字面上就可以看出来,计算机应用指的是计算机操作的,网络技术是网络系统这方面的。计算机应用技术专业培养目标:...
计算机网络通信 系统是什么系统?计算机网络通信系统是数据通信系统,数据通信系统,指的是通过数据电路将分布在远地的数据终端设备与计算机系统连接起来,实现数据传输、交换、存储和处理的系统...
大学选读 计算机网络 技术专业的,请问主要 学 什么内容?计算机网络技术专业是一个涉及计算机科学和网络工程领域的专业。该专业的学生将学习网络技术的各个方面,包括但不限于以下几个方面:1.组网技术与网络管理:学...