17|巨人的肩膀:HTTP协议与Go标准库原理
郑建勋
你好,我是郑建勋。
在正式开始这节课之前,我想给你分享一段话。
学校教给我们很多寻找答案的方法。在我所研究的每一个有趣的问题中,挑战都是寻找正确的问题。当 Mike Karels 和我开始研究 TCP 拥堵时,我们花了几个月的时间盯着协议和数据包的痕迹,问 :“为什么会失败?”。
有一天,在迈克的办公室里,我们中的一个人说:“我之所以搞不清楚它为什么会失败,是因为我不明白它一开始是怎么工作的。”这被证明是一个正确的问题,它迫使我们弄清楚使 TCP 工作的 “ack clocking”。在那之后,剩下的事情就很容易了。
这段话摘自《Computer Networking A Top-Down Approach 6th》这本书,它启发我们,解决网络方面的问题,核心就是要搞懂它的工作原理。
在上节课,我介绍了一个最简单的 HTTP 请求,了解了一个网络数据包是如何跨过千山万水到达对端的服务器的。不过就像前面引文说的那样,这是不够的。所以这节课,让我们更近一步,来看看当数据包到达对端服务器之后,操作系统和硬件会如何处理数据包,同时我将介绍 HTTP 协议,带你理清 Go HTTP 标准库高效处理网络数据包的底层设计原理。
操作系统处理数据包流程
当数据包到达目的地设备后,数据包需要经过复杂的逻辑处理最终到达应用程序。数据包的处理过程大致可以分为 7 步,我们可以根据下面这张流程图一层一层来理解。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了HTTP协议与Go标准库原理,以及操作系统处理数据包流程。文章首先介绍了操作系统处理数据包的7个步骤,包括硬件中断处理、内核处理、以及操作系统与应用程序的交互。接着,文章详细解析了HTTP协议的处理过程,包括TCP协议在操作系统内核的实现以及应用层HTTP协议在应用程序中的处理。作者通过curl命令访问外部网站,并逐行解读了HTTP请求和响应的细节,帮助读者更好地理解HTTP协议。最后,文章推荐了几本深入学习HTTP协议的书籍,为读者提供了进一步学习的方向。 通过深入的技术分析,帮助读者了解了HTTP协议与Go标准库原理的底层设计原理,以及操作系统处理数据包的流程。读者可以从中获得对网络协议处理的深入理解,以及对HTTP协议细节的全面认识。文章内容涵盖了操作系统数据包处理、HTTP协议细节、Go标准库实现方式等多个方面,为读者提供了全面的技术视角和深入的学习资源推荐。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Go 进阶 · 分布式爬虫实战》,新⼈⾸单¥68
《Go 进阶 · 分布式爬虫实战》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(7)
- 最新
- 精选
- 木杉贴那么多书单 还不如多粘贴一些代码 可以学习呢2022-11-17归属地:上海17
- 范飞扬这一讲的内容应该出现在真正需要使用到该讲的知识的时候,而不是现在就把理论一股脑抛出来。个人觉得,没有实战结合的理论,就是凭空增加认知负荷2022-11-19归属地:上海111
- kkgo到现在还没有进入爬虫的设计,太多基础了2022-11-17归属地:广东11
- 周龙亭浅尝辄止的铺垫太多了,还不如几句话带过2023-01-24归属地:上海3
- Geek_crazydaddy1.没想到啥不妥的地方,连接池的连接数量?比如大量并行请求可能会有建立大量连接? 2.保留的连接数量以及连接何时释放2022-11-17归属地:江苏3
- 大毛在设计自己的爬虫框架的时候,为了解耦将所有网络请求都封装到了自己的 spiderClient 中,管理爬虫对 http 的请求。 spiderClient 组合了标准库的 http.Client,此时需要注意在并发情况下 spiderClient 是否会出现性能问题,其中感觉最关键的就是需要知晓 http.Client 是否管理了连接池,如果没有,那需要自己实现这部分。 文章说 http.Client 管理了连接池,这个问题也有久了答案。 第二个问题:Go 标准库使用了连接池,你觉得实现一个连接池应该考虑哪些因素? 连接的创建:什么时候需要创建新的连接,什么时候倾向等待其他链接的释放,是否要预创建连接 连接的销毁:什么时候自动销毁,当连接池占用的资源过多的时候是否主动释放,如果主动释放,淘汰策略是怎样的 对每个链接的控制:连接是否健康 连接池的控制:连接总数是否要限制,连接如何回收2024-01-25归属地:新疆
- book尾汁确实都是这些理论,没必要讲操作系统 网络原理这些知识,本来这门课的定位就是实战课,大家也都是想跟着练手一个项目,真去学这些基础理论知识,肯定深入学习一点,这样花这么多篇幅介绍,实在没有必要2024-01-10归属地:北京
收起评论