谈谈程序员的底层能力积累-从《趣味网络图解》这本书聊起

博文小编

2025-11-04


以下文章来源于人月聊IT ,作者何明璐

人月聊IT .
数字化,企业架构,云原生平台,思维和个人成长

大家好,我是人月聊IT。今天接着聊下程序员的底层技术能力构建,顺便推荐和导读下《趣味网络图解-从基础到应用》这本书。
当我读完这本书的第一章后,给我的整体印象就是一定要强烈推荐这本书,这本书适合所有的对网络,操作系统等底层技术类知识薄弱的人员阅读,而且结合个人多年工作实践,越早阅读越好,可以让你少走很多弯路。

为什么强烈推荐这本书?呢因为这本书勾起我相当多的一些回忆,回忆又回到了29年前,当时大三就开了《计算机网络》这门课程。但是说实话大部分都没有学懂,包括听老师上课的时候讲这本书的一些内容,很多东西都叫听天书。
我后面再来回忆这个原因,其实就有两个关键点。
第一个就是当时没有我们没有太多的相机实践的环境,大二的时候学校刚引进也就是286的机器,我们当时要去上一个小时的上机课差不多要花5块钱,相当贵,所以你根本就没有太多时间的机会。第二个就是说讲这门课的老师也一样的,他也似懂非懂,他怎么能把这个道理浅显易懂的给你讲清楚呢?
所以说这个其实导致就是我们对于计算机网络底层的一些知识原理,一直以来就没有太搞明白。然后这个到了真正的工作以后,你开始就是做编程做开发,你做编程开发的时候,其实底层相关的网络存储内存模型,相关的开发框架语言技术组件都已经帮你封装的相当好了,你也接受不了,所以说这个就是导致底层涉及到底层的网络操作系统、内存存储模型相关的知识就是一直就欠缺,这种欠缺一直到了后面,你做大型项目解决复杂疑难问题的时候,你后面才来补习这些功课。
类似于我在写公众号文章也经常谈到的,很多解决超时的问题,解决内存溢出的没问题,很多问题其实都跟底层的计算机网络相关。所以我现在回过头来,我一直在讲对于程序员你有两方面的核心的知识,
第一个就是本身你对相关的开发语言开发框架,你对数据结构算法相关的知识的熟悉,这个是偏上层应用开发用的。还有一类就是等我的一个系统上线以后,你能不能快速的去诊断排查故障和问题的能力,这一块的能力其实涉及到三个相当关键的知识内容,即:
TCP/IP四层网络协议
操作系统进程,IO,文件系统
JVM内存模型
其实你如果及早的你就去熟悉这三个东西的一些底层的技术原理知识,那么对于你解决复杂的上线问题故障问题相当的有好处。所以其实如果我在10多年20年前,我如果早点看到这本书,那其实我我现在回过头来想,我当时去解决很多线上故障应该要容易得多。



对于从事IT行业的人来说,并不是说类似计算机网络,操作系统这个东西就一定复杂到什么样的程度,而是就是你有没有相关的一些书籍,通过浅显易懂的方式,把底层的知识原理给你真正的讲清楚。
所以我最近我在看这本书的时候,就是我就感觉作者真是一个高手,原因就是作者能够把复杂的东西尽量用通俗易懂的方式给你真正的讲明白讲清楚,能够做到这样的就是高手。
所以这本书它的核心讲什么东西呢?他其实就讲TCP/IP的四层网络协议,从最底层的数据链路层到网络层到传输层到应用层,它让你真正的去理解4层每一层它各自的职责究竟是什么样。我们从应用层发起的一个Http请求开始,它在这个四层之间是怎么样去集成和协同的。
而且整本书的知识讲解方式也相当好,除了大量的图例外,还体现了场景和问题驱动,这些问题都是我们实际在软件项目实践和故障问题排查中经常出现的问题,同时还配合案例进行讲解,还告诉你一些具体工具的使用,数据如何进行分析等。不是每个人学习了计算机网络都要去做Socket编程,但是你又必须知道这些网络底层知识方便你解决实际问题。
所以再回过头来回到我十几年前做项目解决线上问题的时候,当时经常遇到的问题,类似于超时网络超时的问题。当时其实我个人也就没有搞清楚,因为这个超时其实相当复杂,有read timeout。有receive time out,socket time out, 有connection timeout.
那就是这么多的超时标记,异常日志里面标记究竟是什么样的一些区别?你怎么样去诊断这个超时究竟是请求方的原因,还是提供方的原因,还是传输链路的原因,搞不明白。虽然说当时很多问题也解决了,原因就是什么?有搜索引擎,我用同样的相关的异常日志到网上去搜,搜索到了以后把问题解决了,但是什么样的底层原理其实当时也没有太搞清楚。
类似的问题还有CLOSE_WAIT和TIME_WAIT,HTTP的各种状态码,网络四层协议和七层协议区别,长连接和短连接,HTTP和RPC调用。实际你没有理解四层网络模型,没有去理解TCP的三次握手和四次挥手基础知识,你很难很好的去理解这些问题和场景。
而以上所有的东西其实在这本书里面都做了一些详细的基于实际问题的一个解答。而且浅显易懂,让你很容易去了解。真正的做到就是以后,我们遇到网络类的问题或者是故障的时候,能够知其然又知其所以然,能够通过异常报文日志,再结合相关的网络抓包的工具,前端的F12的日志排查,快速地去找到问题的根源和原因。
所以当然我读完这本书以后,其实我个人其实强烈建议读者再出一本书,可以结合开源的Dubbo项目来讲解下网络协议和具体的网络编程开发。这样大家就可以更好的从代码层面理解整个网络底层知识。


当然我们也可以看下作者自己写的这本书写作缘起说明,具体如下:
因为计算机网络是程序员绕不开的基础知识,面试必考,工作必用。但现实是,很多人对这块知识一直比较模糊:502错误怎么排查?socket是并发安全的吗?HTTPS数据包如何解密?遇到问题时往往无从下手。
经典教材确实权威,但对初学者真的不友好。厚厚一本书看着就头疼,而且这些教材只会告诉你TCP四次挥手是什么,但从来不说为什么不能是三次或两次。偏偏面试官最喜欢问这种刁钻问题,知识点稍微有盲区就容易翻车。
这本书的部分内容来自我之前写过的一些文章,在此基础上做了完全升级。我花了大量时间重新梳理整个知识体系,新增了40%的全新内容,把原来零散的知识点串成了一条完整的线。经常有读者吐槽我内容出得慢,但从来没有读者吐槽我的内容水。这次也一样,每个细节都反复打磨,确保你看完真的能有收获。
在这本书里,作者精选了38个核心话题,每个都从一个常见场景开始,逐步深入到大家平时不容易接触到的细节。比如socket是什么这部分,会从最简单的数据包传输开始,介绍到tcp等各种协议,再到socket的内核实现,层层剖析操作系统内核等高级概念。通过全彩图解,将复杂的网络概念通过直观的图示展现,从现象到本质,让抽象的协议变得具体可感。每一章都力求让读者有”原来如此”的收获,而不是死记硬背的痛苦。
好了,今天的分享和推荐就到这里。

读者评论

相关博文

  • 社区使用反馈专区

    陈晓猛 2016-10-04

    尊敬的博文视点用户您好: 欢迎您访问本站,您在本站点访问过程中遇到任何问题,均可以在本页留言,我们会根据您的意见和建议,对网站进行不断的优化和改进,给您带来更好的访问体验! 同时,您被采纳的意见和建议,管理员也会赠送您相应的积分...

    陈晓猛 2016-10-04
    5849 753 3 7
  • 迎战“双12”!《Unity3D实战核心技术详解》独家预售开启!

    陈晓猛 2016-12-05

    时隔一周,让大家时刻挂念的《Unity3D实战核心技术详解》终于开放预售啦! 这本书不仅满足了很多年轻人的学习欲望,并且与实际开发相结合,能够解决工作中真实遇到的问题。预售期间优惠多多,实在不容错过! Unity 3D实战核心技术详解 ...

    陈晓猛 2016-12-05
    3569 36 0 1
  • czk 2017-07-29
    6456 28 0 1