图解HTTP-1-2-3
Executive Summary
核心观点(金字塔原理)
结论先行: HTTP协议是构建现代Web的基础,理解TCP/IP四层模型和HTTP报文结构是掌握网络通信的关键。
支撑论点:
- WWW由三项核心技术构建:HTML标记语言、HTTP传输协议、URL资源定位
- TCP/IP分层架构(应用层、传输层、网络层、链路层)确保了网络通信的可靠性和可扩展性
- HTTP作为无状态协议,通过请求/响应模式、Cookie机制和持久连接实现高效通信
SWOT 分析
| 维度 | 分析 |
|---|---|
| S 优势 | 协议简单易懂,分层清晰;无状态设计使服务器扩展性强;支持多种HTTP方法满足不同需求 |
| W 劣势 | 明文传输不安全;无状态需要额外机制(Cookie)维护会话;HTTP/1.0需要频繁建立连接 |
| O 机会 | 学习网络编程和Web开发的必备基础;理解后可深入HTTPS、HTTP/2等高级协议 |
| T 威胁 | 协议版本演进快,需持续学习;安全漏洞利用风险 |
适用场景
- Web开发人员理解前后端通信原理
- 网络工程师排查HTTP相关问题
- 系统架构师设计高性能Web服务
了解Web及网络基础
- CERN 欧洲核子研究组织的蒂姆•伯纳斯提出一种能让远隔两地的研究者们共享知识的设想
- WWW World Wide Web 万维网
3项WWW的构建技术
- 把SGML(Standard Generalized Markup Language, 标准通用标记语言)作为页面的文本标记语言的HTML(HyperText Markup Language,超文本标记语言)
- 文档传输协议HTTP
- 指定文档所在地址URL(Uniform Resource Locator,统一资源定位符)
TCP/IP
- 应用层,各类通用的应用服务,FTP(File Transfer Protocol,文本传输协议),DNS(Domain Name System,域名系统),HTTP
- 传输层,提供处于网络连接中的两台计算机之间的数据传输,TCP(Transmission Control Protocol,传输控制协议),UDP(User Data Protocol,用户数据报协议)
- 网络层(网络互连层),处理网络上的数据包,数据包是网络传输的最小单位,该层规定通过怎样的路径(传输线路)到达对方计算机
- 链路层(数据链路层,网络接口层),处理连接网络的硬件部分,包括操作系统、硬件的设备驱动NIC,光纤等硬件上的范畴均在次层处理
| 应用层 | HTTP |
|---|---|
| 传输层 | TCP |
| 网络层 | IP |
| 链路层 | 以太网 |
⚠️IP协议位于网络层,要区分与IP地址的区别;IP协议:作用是把各种数据包传送给对方,而要传送到对方最重要的2个条件就是IP地址和MAC地址,IP地址:指明节点被分配到的地址,MAC地址指网卡所属的固定地址,IP地址可变,MAC地址基本不会改变
- 为了确保数据可靠性的传达TCP协议在通信前会先进行三次(three-way handshaking)握手策略。
C->>S: 标有SYN(synchronize)的数据包
S->>C: 收到SYN后,返回SYN/ACK的数据包
C->>S: 发送ACK数据包确认
- DNS :提供域名到IP地址之间的解析服务
- URI(Uniform Resource Identifier 统一资源标识符)标识某一互联网资源
- URL(Uniform Resource Locator,统一资源定位符)表示资源地点互联网上所处的位置,URL是URI的子集
简单HTTP协议
- C与S通过请求和响应的交换达成通信
- HTTP 无状态stateless协议
HTTP 1.0、1.1 支持的方法
| 方法 | 说明 | 版本 |
|---|---|---|
| GET | 获取资源 | 1.0、1.1 |
| POST | 传输实体主体 | 1.0、1.1 |
| PUT | 传输文件 | 1.0、1.1 |
| HEAD | 获得报文首部 | 1.0、1.1 |
| DELETE | 删除文件 | 1.0、1.1 |
| OPTIONS | 询问支持的方法 | 1.1 |
| TRACE | 追踪路径 | 1.1 |
| CONNECT | 追踪路径 | 1.1 |
| LINK | 建立和资源之间的联系 | 1.0 |
| UNLINE | 断开连接关系 | 1.0 |
- HTTP keep-alive
- pipelining
- Cookie状态管理
HTTP报文内的HTTP信息
| 报文首部 |
|---|
| 空行(CR+LF) |
| 报文主体 |
⚠️CR:Carriage Return 回车 16进制0x0d; LF:Line Feed 换行 16进制0x0a;
- 编码提升传输速率
- gzip : GNU zip
- compress : UNIX系统标准压缩
- deflate : zlib
- identity : 不进行压缩
- 分隔发送的分块传输编码
- 获取部分内容的范围请求
- 内容协商返回最合适的内容