《图解HTTP》核心知识点梳理

HTTP协议是Web通信的基石,它是一种无状态请求/响应协议,通常基于TCP/IP协议族,通过客户端(如浏览器)向服务器发送请求,服务器返回响应来完成一次数据交换。

第1部分:HTTP协议本身

第1-2章:基础概念与网络基础

1. Web与网络基础

1)TCP/IP协议族:HTTP是其中的一个子集,分层管理(应用层、传输层、网络层、数据链路层)。

2)IP协议(网络层):负责把数据包传送给对方,依靠IP地址和MAC地址。

3)TCP协议(传输层) :提供可靠的字节流服务,采用三次握手策略确保数据准确送达。

4)DNS服务(应用层):负责域名解析,将域名转换为IP地址。

2. 简单的HTTP协议

1)请求/响应模型:客户端发起请求,服务器端回复响应。

2)HTTP是不保存状态的协议:协议本身不对请求和响应之间的通信状态进行保存。这是Cookie和Session技术出现的原因。

3)请求报文结构

① 请求行(方法、URI、协议版本)

② 请求头(各种首部字段)

③ 空行

④ 请求体(报文主体)

4)响应报文结构

① 状态行(协议版本、状态码、状态短语)

② 响应头(各种首部字段)

③ 空行

④ 响应体(报文主体)

5)HTTP方法

① GET:获取资源。

② POST:传输实体主体。

③ PUT:传输文件(由于安全性等问题,一般不使用)。

④ HEAD:获得报文首部,用于确认URI的有效性等。

⑤ DELETE:删除文件(同样因安全性一般不使用)。

⑥ OPTIONS:询问支持的方法。

⑦ TRACE:追踪路径,用于诊断,容易引发XST攻击。

⑧ CONNECT:要求用隧道协议连接代理,主要用于SSL加密。

第3章:HTTP报文内的信息

1. 编码提升传输速率

1)内容编码:压缩传输内容,如gzip、deflate。

2)分块传输编码:将报文主体分块发送,用于边生成内容边发送(如动态页面)。

2. 多部分对象集合

报文主体内可含有多类型实体,如上传表单时同时包含文本和文件。

3. 范围请求

通过指定Range头字段,可以只下载部分内容,用于断点续传。

4. 内容协商

客户端和服务器就响应的资源内容进行交涉,提供最适合用户的版本(如语言、字符集、编码方式)。机制有:服务器驱动、客户端驱动、透明协商。

第4章:返回结果的HTTP状态码

状态码负责表示客户端请求的返回结果,是判断服务器处理状态的重要依据。

1)1xx(信息性):接收的请求正在处理。

2)2xx(成功):请求正常处理完毕。

① 200 OK:请求成功。

② 204 No Content:请求成功,但响应报文无主体。

③ 206 Partial Content:客户端进行了范围请求,服务器成功执行。

3)3xx(重定向):需要进行附加操作以完成请求。

① 301 Moved Permanently:永久重定向。

② 302 Found:临时重定向。

③ 304 Not Modified:客户端有缓存,且资源未改变,服务器告诉客户端继续使用缓存。

4)4xx(客户端错误):服务器无法处理请求。

① 400 Bad Request:请求报文存在语法错误。

② 401 Unauthorized:需要认证。

③ 403 Forbidden:请求被服务器拒绝(权限不足)。

④ 404 Not Found:服务器上找不到请求的资源。

5)5xx(服务器错误):服务器处理请求出错。

① 500 Internal Server Error:服务器内部错误。

② 503 Service Unavailable:服务器超负载或停机维护。

第5章:与HTTP协作的Web服务器

1. 虚拟主机

一台物理服务器可以托管多个域名,通过HTTP请求头中的Host字段来区分。

2. 通信数据转发程序

1)代理 :位于客户端和服务器之间,起中转作用。可用于缓存、访问控制、日志记录等。分为缓存代理透明代理

2)网关:转发其他服务器通信数据的服务器,常用于将HTTP请求转换为其他协议,如数据库连接。

3)隧道:在相隔甚远的客户端和服务器之间进行中转,并保持双方通信连接的应用程序,如SSL隧道。

第2部分:HTTP的强化与安全

第6章:HTTP首部

首部是HTTP的关键组成部分,它给请求和响应报文附加了大量额外信息。

1. 通用首部字段

请求和响应报文都会使用的首部。

Cache-Control:控制缓存的行为。

Connection:管理持久连接(Keep-Alive)或逐跳首部。

2. 请求首部字段

客户端使用的首部。

Host:指定请求资源的主机和端口。

User-Agent:将创建请求的浏览器和用户代理名称等信息传达给服务器。

Accept:告知服务器用户代理能够处理的媒体类型及相对优先级。

Authorization:认证信息。

If-Modified-Since / If-None-Match:用于条件请求,与缓存相关。

3. 响应首部字段

服务器使用的首部。

Location:将响应接收方引导至某个与请求URI位置不同的资源(用于重定向)。

Server:包含服务器的软件信息。

ETag:资源的唯一标识,与缓存相关。

4. 实体首部字段

针对请求和响应报文的实体部分使用的首部。

Content-Type:实体主体的媒体类型。

Content-Length:实体主体的大小。

Content-Encoding:实体主体适用的编码方式。

Expires:实体主体过期的日期时间。

Last-Modified:资源的最后修改日期时间。

第7章:确保Web安全的HTTPS

1. HTTP的缺点

1)通信使用明文,内容可能被窃听。

2)不验证通信方身份,可能遭遇伪装。

3)无法证明报文的完整性,内容可能已被篡改。

2. HTTPS = HTTP + 加密 + 认证 + 完整性保护

1)加密(防窃听):通过与SSL(或其后续版本TLS)组合使用,对通信内容进行加密。

2)认证(防伪装) :通过证书来验证通信方的身份。

3)完整性保护(防篡改):通过校验和来确保数据在传输过程中没有被修改。

3. SSL/TLS工作机制

1) 采用公开密钥加密 (非对称加密)和共享密钥加密(对称加密)混合的机制。

2)握手过程:使用公钥加密安全地交换共享密钥,之后使用该共享密钥进行高速的对称加密通信。

第8章:确认访问用户身份的认证

1. BASIC认证

简单地将用户名密码Base64编码后发送,安全性极低。

2. DIGEST认证

使用质询/响应的方式,不直接发送密码,比BASIC安全,但仍不够强。

3. SSL客户端认证

依靠HTTPS的客户端证书完成认证,安全性最高,但部署成本高。

4. 基于表单的认证最常用

由Web应用自行管理认证,通常使用Cookie来管理会话(Session)。

第9章:基于HTTP的功能追加协议

1. HTTP/1.1的瓶颈

一条连接上只能发送一个请求(现代浏览器通过并行连接缓解)。

请求只能从客户端开始,服务器不能主动推送。

报文首部冗长,且每次发送相似首部,造成浪费。

2. Ajax与Comet

Ajax:异步JavaScript与XML技术,实现局部页面刷新,改善用户体验。

Comet:模拟服务器推送,但连接长期占用,资源消耗大。

3. SPDY

由Google推出,旨在解决HTTP/1.1的性能瓶颈,是HTTP/2的基础。核心特性包括:多路复用、请求优先级、压缩HTTP首部、服务器推送。

4. WebSocket

为了实现全双工通信,由HTTP升级而来。一旦建立连接,客户端和服务器可以平等地相互发送消息,适用于实时应用(如聊天室、游戏)。


第3部分:前沿与扩展

第10-11章:构建Web内容的技术与Web攻击技术

1. Web内容技术

简要介绍了HTML、CSS、DOM、JavaScript、CGI、RESTful API等。

2. Web攻击技术

1)主动攻击 :直接攻击服务器,如SQL注入OS命令注入

2)被动攻击 :设陷阱利用用户身份攻击,如XSS(跨站脚本攻击)CSRF(跨站请求伪造)

书中详细讲解了这些攻击的原理以及如何通过HTTP协议的特性(如验证输入输出、使用Token等)进行防御。

💡总结与知识脉络图

可以将《图解HTTP》的核心知识点梳理为以下脉络:

1)基础(通信如何建立): TCP/IP -> DNS -> HTTP请求/响应模型

2)核心(报文如何构成): 方法 -> 状态码 -> 首部字段 -> 编码/协商

3)协作(如何扩展与优化): 虚拟主机 -> 代理/网关/隧道 -> 缓存机制

4)安全(如何保证可靠): HTTP缺点 -> HTTPS(SSL/TLS) -> 各种认证方式 -> 常见Web攻击与防御

5)演进(如何更高效) : HTTP/1.1瓶颈 -> Ajax/Comet -> SPDY -> HTTP/2(多路复用、首部压缩、服务器推送) -> WebSocket

希望这份详细的梳理能帮助你全面掌握《图解HTTP》的核心内容。这本书是理解现代Web开发底层原理的绝佳起点。

相关推荐
寂寞旅行1 小时前
解决摄像头/麦克风 在HTTP环境下的调用问题
网络·网络协议·http
oioihoii1 小时前
C++网络编程:从Socket混乱到优雅Reactor的蜕变之路
开发语言·网络·c++
拾忆,想起3 小时前
Dubbo服务调用流程全解析:从请求到响应的微服务通信之旅
服务器·网络·微服务·云原生·架构·dubbo
老蒋新思维3 小时前
创客匠人 2025 全球创始人 IP+AI 万人高峰论坛:AI 赋能下知识变现与 IP 变现的实践沉淀与行业启示
大数据·人工智能·网络协议·tcp/ip·重构·创始人ip·创客匠人
Erwin Rommel5593 小时前
nginx的https服务搭建实验
服务器·nginx·https
游戏开发爱好者84 小时前
Charles 抓不到包怎么办?从 HTTPS 代理排错到底层数据流补抓的完整解决方案
网络协议·http·ios·小程序·https·uni-app·iphone
Savvy..4 小时前
天机学堂-Day01
linux·服务器·网络
dragoooon345 小时前
[Linux网络基础——Lesson6.「HTTPS」]
网络·网络协议·https
2301_796923995 小时前
Nginx HTTPS服务搭建实验文档
网络·网络协议·ssl