图解HTTP-1-2-3

Executive Summary

核心观点(金字塔原理)

结论先行: HTTP协议是构建现代Web的基础,理解TCP/IP四层模型和HTTP报文结构是掌握网络通信的关键。

支撑论点:

  1. WWW由三项核心技术构建:HTML标记语言、HTTP传输协议、URL资源定位
  2. TCP/IP分层架构(应用层、传输层、网络层、链路层)确保了网络通信的可靠性和可扩展性
  3. 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的构建技术

  1. 把SGML(Standard Generalized Markup Language, 标准通用标记语言)作为页面的文本标记语言的HTML(HyperText Markup Language,超文本标记语言)
  2. 文档传输协议HTTP
  3. 指定文档所在地址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;

  • 编码提升传输速率
  1. gzip : GNU zip
  2. compress : UNIX系统标准压缩
  3. deflate : zlib
  4. identity : 不进行压缩
  • 分隔发送的分块传输编码
  • 获取部分内容的范围请求
  • 内容协商返回最合适的内容