开发内功修炼

分享一个学习 HTTP 的好资源 !

大家好,我是飞哥。

经常有读者问我飞哥你是怎么学习的,可否推荐一些资料。

关于这个我之前写过一篇文章, 我是怎么样写出开发内功修炼的? 在这篇文章中写了我的技术成长方法。在公众号菜单(读者园地=>推荐书单)里我也推荐了一些我认为不错的技术书。

其实之前我一直没提到的是,除了技术书以外,我还有在极客时间上充电的习惯。今天就再给大家推荐一个我学习 HTTP 技术时看过的在线资源《透视HTTP协议》。

熟悉我的同学都知道,飞哥是做后端开发相关工作的。虽然我的公众号文章都是在围绕底层内功进行的,但大家也不能忽视应用层的技术积累。在应用层,可能最重要的就是 HTTP 相关的技术点了。目前全球有 16 亿个网站、2 亿多个独立域名,基本都是基于 HTTP 在运行。

所以在后端的技术面试中,必然会有 HTTP 相关的面试题出现。比如“键入网址再按下回车,后面究竟发生了什么”。我自己也是,一定会考察一下候选人对 HTTP 是否有足够的了解。

早几年我学习 HTTP 协议就是在看一本《HTTP 权威指南》的经典书。但是时过境迁,这本书也过时了。现在各种各种新的技术应用越来越广,比如 HTTPS,HTTP 2.0,甚至是现在呼之欲出的 HTTP 3.0。

可能是由于这块的技术变化的太快,截止到现在也没有一本既符合技术现状,又和《HTTP 权威指南》一样经典的介绍 HTTP 相关知识的书出现。好在极客时间上这门课《透视HTTP协议》, 解决了这个遗憾。

提到 HTTP,部分同学心想不就是 GET / POST, cookie / session,状态码之类的东西么。认为这东西很简单,所以没有动力去深度学习。但其实一些实际问题也并不是那么容易就能搞清楚的。比如:

  • 如果客户端和服务器中间有代理,那么如何能正确地获取到客户机的 IP 地址?
  • HTTP 协议是如何支持在客户端将一个几个 GB 的大文件上传到服务器上的?

另外 HTTP 涉及到的技术非常之广泛,比如 HTTPS,HTTP/2 等等,比如

  • 优化 HTTPS 服务性能有哪些方法?
  • 如何评估业务中是否应该迁移到 HTTP/2 ?
  • 比如 TLS 1.3 和 1.2 有啥区别?
而这些内容,在《透视HTTP协议》这门课里都涉及到了。来看下课程的整体思维导图。

从上面的思维导图里可以看到,课程 体系结构搭的不错 。HTTPS、HTTP/2、HTTP/3 等几乎都涉及到了,而且把各种代理、WebService、WAF 等知识点也都串了起来,该涉及到的技术基本都没落下。

这门课的作者叫罗剑锋,是个有着 20 多年技术经验的 IT 老兵,前奇虎 360 技术专家。他之前写过几本畅销书,比如《C++11/14 高级编程》《Nginx 完全开发指南》。也是 Nginx / OpenResty 开源项目贡献者。背景还是相当可以的。

另外一点能让我决定把它推荐出来的主要原因是它搭配了实践。课程中穿插着实验环境的搭建,以及实际抓包分析。

比如讲到 HTTPS 中的加密算法组合“密码套件”的时候,罗老师提供了实验源码,你只要把环境部署起来就可以直观地看到目前支持的算法。这样的实验源码有 30 多个。

再比如当讲到 HTTP/3,罗老师也提供了实验可以直接抓包观察细节,这种和动手实践想结合的教学方法我本人是非常认可的。因为计算机本身就是一门面相实践的技术,只有这样学习效果才能好。

如果你确实是想图快,实验环境也不想搭。还可以直接从配套的 Github 上下载抓包结果,直接用 Wireshark 打开即可。另外这个 Github,我也得给大家推荐推荐。把零碎的 RFC 都整理起来了,很棒。

地址: https://github.com/chronolaw/http_study

这里再贴几个我在课程下面里看到的评论。

鉴于我本人对这门课程的认可,所以我把它作为我的第二次推荐的课程资源,价格同样不贵,几十块钱。

HTTP 只是表面上显得简单,其实底层的运行机制、工作原理非常复杂。只是我们平常总是“KPI 优先”,从网上抓到一个解决方案,用过就完事。但一名合格的工程师,一定得深究要点和细节。只有在大框架上有足够的视野,才不会被动的陷入「学不动了」的情绪。

不过最后我得提一下,对于有几年工作经验的同学来说,可能觉得前面几讲过于简单。其实这是罗老师为了照顾零基础的同学设计的,越是往后面越精彩。

👇 点击「阅读原文」

享受特惠,新人首单 ¥59.9 半价入手,原价¥129,仅限前50人。