查看原文
其他

如何学习计算机网络?看哪本书好?有没有相关的公开课呢?

G哥 Github掘金计划 2022-03-15

Github 掘金计划由 3 位志同道合的 Github 重度用户维护。一周推送 2~3 篇原创,如果不想错过我们的干货,可以星标一下公众号哦~

计算机网络是一门系统性比较强的计算机专业课,各大名校的计算机网络课程打磨的应该都比较成熟。

要想学好计算机网络,首先要了解的就是 OSI 七层模型或 TCP/IP 五层模型,即应用层(应用层、表示层、会话层)、传输层、网络层、数据链路层、物理层。

osi七层模型2

关于这门课,首先强烈推荐参考书是「机械工业出版社的《计算机网络——自顶向下方法》」。该书目录清晰,按照 TCP/IP 五层模型逐层讲解,对每层涉及的技术都展开了详细讨论,基本上高校里开设的课程的教学大纲就是这本书的目录了。

如果你觉得上面这本书看着比较枯燥的话,我强烈推荐+安利你看看下面这两本非常有趣的网络相关的书籍:

  • 《图解 HTTP》[1] :讲漫画一样的讲 HTTP,很有意思,不会觉得枯燥,大概也涵盖也 HTTP 常见的知识点。因为篇幅问题,内容可能不太全面。不过,如果不是专门做网络方向研究的小伙伴想研究 HTTP 相关知识的话,读这本书的话应该来说就差不多了。
  • 《网络是怎样连接的》[2] :从在浏览器中输入网址开始,一路追踪了到显示出网页内容为止的整个过程,以图配文,讲解了网络的全貌,并重点介绍了实际的网络设备和软件是如何工作的。

如果说学习计算机网络要围绕的 TCP/IP 五层模型逐层展开学习的话,那么针对每层的学习,就要以协议为单位了。一言以蔽之,我们学习计算机网络需要的协议有:

  • 应用层协议
    • HTTP 协议(超文本传输协议,网页浏览常用的协议)
    • DHCP 协议(动态主机配置)
    • DNS 系统原理(域名系统)
    • FTP 协议(文件传输协议)
    • 电子邮件协议等(SMTP、POP3、IMAP)
    • P2P 架构
  • 传输层协议
    • 报文段结构
    • RDT(可靠数据传输协议)
    • 报文段结构
    • 可靠数据传输
    • 流量控制
    • 拥塞控制
    • TCP 协议
    • UDP 协议
  • 网络层协议
    • IP 协议(TCP/IP 协议的基础,分为 IPv4 和 IPv6)
    • ARP 协议(地址解析协议,用于解析 IP 地址和 MAC 地址之间的映射)
    • ICMP 协议(控制报文协议,用于发送控制消息)
    • NAT 协议(网络地址转换协议)
    • RIP 协议、OSPF 协议、BGP 协议(路由选择协议)
  • 链路层
    • 差错检测技术
    • 多路访问协议(信道复用技术)
    • CSMA/CD 协议
    • MAC 协议
    • 以太网技术
  • 物理层(对计算机专业的小伙伴来说,在课程要求中,物理层的内容可能相对不那么重要)

除了理论知识之外,学习计算机网络非常重要的一点就是:“「动手实践」”。这点和我们编程差不多。

Github 上就有一些名校的计算机网络试验/Project:

  • 哈工大计算机网络实验[3]
  • 《计算机网络-自顶向下方法(原书第 6 版)》编程作业,Wireshark 实验文档的翻译和解答。[4]
  • 计算机网络的期末 Project,用 Python 编写的聊天室[5]
  • CMU 的计算机网络课程[6]

我知道,还有很多小伙伴可能比较喜欢边看视频边学习。所以,我这里再推荐几个顶好的计算机网络视频讲解。

「1.哈工大的计算机网络课程[7] :国家精品课程,截止目前已经开了 10 次课了。大家对这门课的评价都非常高!所以,非常推荐大家看一下!

「2.王道考研的计算机网络[8] :非常适合 CS 专业考研的小朋友!这个视频目前在哔哩哔哩上已经有 1.6w+的点赞。

除了上面推荐的书籍和视频之外,再推荐两篇计算机网络总结的文章:
  • 计算机网络常见面试题[9]
  • 计算机网络基础知识总结[10]

最后再补充一个:浙江大学的计算机网络课程资料、教材和试卷[11] 。需要的小伙伴请查收!

Reference

[1]

《图解 HTTP》: https://book.douban.com/subject/25863515/

[2]

《网络是怎样连接的》: https://book.douban.com/subject/26941639/

[3]

哈工大计算机网络实验: https://github.com/rccoder/HIT-Computer-Network

[4]

《计算机网络-自顶向下方法(原书第6版)》编程作业,Wireshark实验文档的翻译和解答。: https://github.com/moranzcw/Computer-Networking-A-Top-Down-Approach-NOTES

[5]

计算机网络的期末Project,用Python编写的聊天室: https://github.com/KevinWang15/network-pj-chatroom

[6]

CMU的计算机网络课程: https://computer-networks.github.io/sp19/lectures.html

[7]

哈工大的计算机网络课程: http://www.icourse163.org/course/HIT-154005

[8]

王道考研的计算机网络: https://www.bilibili.com/video/BV19E411D78Q?from=search&seid=17198507506906312317

[9]

计算机网络常见面试题: https://snailclimb.gitee.io/javaguide/#/docs/network/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C

[10]

计算机网络基础知识总结: https://snailclimb.gitee.io/javaguide/#/docs/network/计算机网络知识总结

[11]

浙江大学的计算机网络课程资料、教材和试卷: https://github.com/QSCTech/zju-icicles/tree/master/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E5%9F%BA%E7%A1%80

用心发掘 Github 和 Gitee 上优质的开源项目。欢迎关注!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存