作者介绍
小圆规,高级开发工程师。目前就职于某互联网大厂。
负责过社交、B 端等业务的 Java 技术研发工作,擅长研究开源技术。具备大型微服务系统重构的核心开发和团队基础组件开发经验,曾负责后端和分布式系统的开发。同时,也有云平台自研开发经验和微服务开发经验,参与过开源社区的开发并加入了 RPC 的开发团队。
在业务系统设计和实现中,深知网络基础的重要性,排查问题时始终把网络排查放在第一位。
小册介绍
作为一名程序员,无论你是刚踏入职场,还是已经接近 35 岁的职场老手,你是否曾遇到过这样的问题?那些枯燥的网络知识,背了又背,面试时却被突如其来的问题难倒:
- TCP 为何是 3 次握手、4 次挥手?
- 浏览器打开网站的过程发生了什么?
- ……
回忆起学校里学习网络协议的岁月,你或许曾读过经典的《自顶向下学习计算机网络》,又或者上过其他相关的课程,可是你是否真正理解了这些知识呢?或许感觉自己懂了,但又好像没有完全理解。这是因为空有理论知识、但缺少实践经验。当遇到实际的生产问题时,往往容易束手无策,例如:
- 连接为何超时?
- HTTP 的 trunked 头部代表的意思?
- Wi-Fi 为何突然变慢?
- ……
甚至在技术架构方面,也不知道该如何做技术选型。例如:
- 是否应该升级到 HTTP2?
- 为什么刚升级到 HTTP2,它又被时代抛弃了?
- 何时使用 UDP?何时使用 TCP?
- ……
尽管想深入了解这些问题,但往往止步于表面。这些困难让你感到无从下手,甚至无法解决。
本小册旨在解决这些问题
,并具有以下突出的特点
。
第一点,避免泛泛而谈,以问题为出发点,注重实用性。根据网络分层结构的特点和作用,传输层和应用层设计的案例和篇幅相较而言会多些,而链路层的部分则主要结合实际问题进行讲解。比如,在讲解 HTTP 协议工作原理时,会详细模拟各种状态码和头部状态,甚至还会揭秘流式传输的实现方法;在探讨 TCP 连接问题或 Wi-Fi 被盗等情况时,多方位思考,以解决问题为落笔点。
除此之外,所有协议的讲解都基于真实数据包进行深入分析
,避免空洞的理论探讨。比如,为了得到流式传输的头部,就真实地创建了一个流式视频服务并抓包分析,如下图:
再比如,为了揭秘DNS名字服务
,则实际申请域名并亲自部署了自己的域名服务器yuangui.info。
第二点,采用了大量的图解和案例,有助于你更好地理解网络协议的相关知识。
- 在系列讲解 TCP 原理的文章里面,使用了大量的图解来揭示 TCP 原理的复杂性,比如其中的状态流程图:
- 在加密安全的章节中,详细绘制了攻击的过程,以说明 HTTP 可能存在的漏洞,并逐步分析用怎样的机制以确保安全性。
第三点,内容结构清晰,从基本概念到应用场景,层层递进,为你系统学习网络协议的知识提供了便利。例如,通过讲解 HTTP 协议,引出了层层递进的 HTTPS、HTTP2、HTTP3;从网络层的形成开始,逐步深入,详细讲解了 IP 包的构成、工具以及扩展的 IPv6……
为让你更好地理解本小册的内容结构,这里附上小册整体的思维导图
:
说明
:思维导图是按照网络层次来分类的,因此有些部分的顺序可能与讲解时的目录不一致。
你会学到什么?
就技术知识层面
,你会学到以下:
- ✅深入网络基础,洞悉运行原理和工作机制;
- ✅案例与实践解析,搞懂网络协议实际应用;
- ✅实操训练引导,掌握网络通信践行技能;
- ✅图示网络规则,探索网络性能优化路径。
就现实实践层面
,你会有以下收获:
- 不仅能够了解问题的表面答案,还能够深入理解问题的本质(这对于
面试
问题来说尤为重要,估计很多小伙伴深有体会)。 - 当面对实际的生产问题时,会感到游刃有余,能够从容应对。
- 在技术架构方面,也能学会如何选择最适合的技术选型,以更好地完成项目。
总之,这本小册会让你的技能得到全面提升,让你在职场上更加游刃有余!!!
适宜人群
- 已经有 1~3 年开发经验的开发人员。
- 准备参加春季或秋季招聘的应届毕业生。
- 每天都在进行 CRUD 操作,但希望在技术方面有更多成长的同学。
- 在业务方面已经有所成就,但想夯实基础的人。
- 具有较强的网络基础,希望与其他人一起探讨技术问题的小伙伴。
如果你的情况与上述任何一种相似,那么本小册将非常适合你。