惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
Jina AI
Jina AI
WordPress大学
WordPress大学
Recent Announcements
Recent Announcements
G
Google Developers Blog
I
InfoQ
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Google DeepMind News
Google DeepMind News
P
Proofpoint News Feed
MyScale Blog
MyScale Blog
M
MIT News - Artificial intelligence
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
C
Check Point Blog
J
Java Code Geeks
T
Tailwind CSS Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Microsoft Security Blog
Microsoft Security Blog
MongoDB | Blog
MongoDB | Blog
V
Visual Studio Blog
人人都是产品经理
人人都是产品经理
量子位
A
About on SuperTechFans
D
DataBreaches.Net
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

博客园_首页

Plist 二进制格式 Milvus 和 PGVector,哪个更好? OpenClaw 已过时?在 VS Code 中运行 Hermes Agent! 第30篇文章:一个大三计科生的自白 Manim如何在数学公式中完美显示中文? Docker 部署 RocketMQ 5 并发编程核心概念辨析 C#事务处理最佳实践:别再让“主表存了、明细丢了”的破事发生 CLI 是什么?为什么大厂突然集体卷命令行? 【从0到1构建一个ClaudeAgent】协作-自主Agent UIImageView 设置图片不生效的原因排查 最小二乘问题详解20:无先验约束下的增量式SFM自由网平差 痞子衡嵌入式:大话双核i.MXRT1180之XIP应用里借助MU实现可靠Flash IAP的方法 AI Chat 封装, SemanticKerne.AiProvider.Unified 已发布 Windows下右键编辑js文件无法打开记事本——在注册表中使用环境变量 在后台服务中使用 Scoped 服务,为什么总是报错? H200 安装驱动并使用sglang启动模型 wireshark 抓包Trap上报告警内容 我用 AI 辅助开发了一系列小工具(2):图片压缩工具 [A Primer On MC and CC] 2.1 Memory Consistency 1 - 指令重排序和 SC 模型 Oracle数据库SCN推进技术详解与实践指南 玩转控件:封装个带图片的Label控件 Claude Code 4.7 真正该升级的不是模型,而是你的工作流 前端小白一句话,AI 帮我做了个颜值拉满的桌面媒体播放器。当代码不再是门槛,一句话编程就是现实。 5. WorkBuddy: 小龙虾的灵魂三件套,让你的小龙虾不只是工具 SQLite 分片方案实战:三种分片策略的深度对比 告别简陋 UI!一款基于 Fluent Design 和基于 WinUI 的开源免费、现代化的 Avalonia UI 控件库 关于二进制排列组合枚举的总结 AI开发-python-LangGraph框架(3-27-LangGraph从零实现大模型智能决策工作流) ElasticSearch主分片和副本分片概念详解
第1章-了解Web及网络基础
lunzi_fly · 2026-05-06 · via 博客园_首页

《图解HTTP》学习笔记

书籍信息:《图解HTTP》作者:上野宣,译者:于均良
出版社:人民邮电出版社,2014年5月第1版


说起来你可能不信,每天刷手机、看视频、点外卖,背后全靠一个叫 HTTP 的协议在跑腿。它就像互联网的快递小哥——你下单,它送货,风雨无阻。但这位小哥是怎么工作的?他背后还有哪些"同事"帮忙?今天咱们就从最底层开始,把 Web 的家底翻个底朝天。


第1章 了解Web及网络基础

📌 核心知识点

  • HTTP协议的角色:Web建立在HTTP(HyperText Transfer Protocol,超文本传输协议)之上,客户端通过HTTP协议向服务器请求资源,服务器返回响应。Web浏览器等请求方称为客户端(client)。
  • HTTP的诞生与发展
    • 1989年,CERN的蒂姆·伯纳斯-李(Tim Berners-Lee)博士提出WWW构想,旨在实现研究者之间的知识共享。
    • WWW构建的三大核心技术:HTML(页面标记语言)、HTTP(文档传递协议)、URL(文档地址定位)。
    • HTTP版本演进:HTTP/0.9(1990年问世,未正式标准化) -> HTTP/1.0(1996年,RFC1945) -> HTTP/1.1(1997年,RFC2616,当前主流版本)。
  • TCP/IP协议族:互联网在TCP/IP协议族基础上运作,HTTP是其子集。TCP/IP按层次分为4层:
    • 应用层:决定向用户提供应用服务时的通信活动(HTTP、FTP、DNS等)。
    • 传输层:提供两台计算机之间的数据传输(TCP、UDP)。
    • 网络层:处理网络上流动的数据包,选择传输路径(IP协议)。
    • 链路层:处理连接网络的硬件部分(网卡、光纤等物理可见部分)。
  • TCP/IP通信传输流:发送端从应用层往下走,接收端从链路层往上走。每经过一层会加上该层首部信息(封装),接收端逐层去掉首部。
  • IP协议:位于网络层,负责将数据包传送给对方。依赖IP地址(节点分配地址)和MAC地址(网卡固定地址)。使用ARP协议根据IP地址反查MAC地址。传输过程类似快递公司中转,没有任何设备能全面掌握互联网传输细节。
  • TCP协议:位于传输层,提供可靠的字节流服务。通过三次握手(three-way handshaking)确保数据可靠送达:SYN -> SYN/ACK -> ACK。
  • DNS服务:位于应用层,提供域名到IP地址的解析服务。用户使用易记的域名访问,DNS将其解析为计算机能理解的IP地址。
  • URI与URL
    • URI(Uniform Resource Identifier,统一资源标识符):由协议方案表示的资源的定位标识符。
    • URL(Uniform Resource Locator,统一资源定位符):表示资源的地点,是URI的子集。
    • 绝对URI格式:协议方案名://登录信息@服务器地址:端口号/文件路径?查询字符串#片段标识符
  • RFC(Request for Comments):HTTP协议的技术标准文档,不遵照RFC标准实现可能导致无法通信。但某些应用因用户量大也可能形成事实上的"标准"。

💻 实践用例

1. 使用nslookup/dig查看DNS解析过程

# 查询域名的IP地址
nslookup www.example.com

# 使用dig查看更详细的DNS解析信息
dig www.example.com

# 反向解析:通过IP地址查询域名
nslookup 93.184.216.34

2. 使用curl查看HTTP请求和响应的完整过程

# 发送HTTP请求并查看完整的请求/响应头(包括TCP/IP各层信息)
curl -v http://www.example.com/

# 仅查看响应头
curl -I http://www.example.com/

3. 使用ping和traceroute理解IP传输与路由选择

# 查看目标IP是否可达(ICMP协议)
ping www.example.com

# 追踪数据包到达目标经过的路由节点(理解路由选择机制)
traceroute www.example.com

4. 使用arp命令查看ARP缓存表(IP地址与MAC地址的对应关系)

# 查看本机的ARP缓存表
arp -a

# 解析URI各组成部分
# 以 http://user:pass@www.example.jp:80/dir/index.htm?uid=1#ch1 为例:
#   协议方案名: http
#   登录信息: user:pass
#   服务器地址: www.example.jp
#   端口号: 80
#   文件路径: /dir/index.htm
#   查询字符串: uid=1
#   片段标识符: ch1

📝 学习笔记

  • 分层思想是网络设计的核心:TCP/IP的分层设计使得各层可以独立演进,修改某一层不影响其他层。这和软件工程中的分层架构思想一致,理解这一点对后续学习微服务、API网关等概念很有帮助。
  • TCP三次握手是面试高频考点:SYN -> SYN/ACK -> ACK,核心目的是确保双方都具备收发能力。可以类比为打电话:A说"你能听到吗"(SYN),B回答"我能听到,你能听到吗"(SYN/ACK),A再回答"我也能听到"(ACK)。
  • IP与MAC地址的区别:IP地址是逻辑地址,可变更(类似门牌号);MAC地址是物理地址,基本不变(类似身份证号)。ARP协议是连接两者的桥梁。
  • DNS是互联网的"电话簿":没有DNS,用户将不得不记忆纯数字的IP地址。在实际开发中,DNS解析延迟是影响首次请求速度的重要因素,CDN和DNS预解析等技术都是为了优化这一环节。
  • URI不等于URL:URL是URI的子集。URI是标识符(Identify),URL是定位符(Locate)。例如 urn:isbn:0451450523 是URI但不是URL。日常开发中两者常混用,但严格区分有助于理解RESTful API设计。


好了,TCP/IP 四层模型、三次握手、DNS 解析……这些概念是不是听着就头大?别急,第一章本来就是打地基的,后面会越来越有意思。记住一句话就行:互联网就是一个巨大的快递系统,每个协议都是其中一环。下一章我们就来看看这位"快递小哥"HTTP 具体是怎么送包裹的。