Skip to content

408

计算机网络

CN-06-05 WWW与HTTP协议


一、定位信息

  • 圈层:核心层
  • 前置知识:需要了解C/S模型、TCP协议、DNS域名解析的基本概念,理解URL的含义
  • 知识网络位置:HTTP是Web的核心协议,是互联网使用最广泛的应用层协议。它是理解现代Web应用、浏览器工作原理、网络安全(HTTPS)的基础
  • 考点热度等级H级(高频重点)——HTTP的工作原理、持久连接、Cookie等是选择题和综合题的高频考点

二、知识点讲解

2.1 WWW概述

**WWW(World Wide Web,万维网)**是一个分布式的、联机式的信息空间,由Tim Berners-Lee于1989年发明。WWW的三个核心技术:

  1. HTML(HyperText Markup Language):超文本标记语言,用于描述网页内容
  2. URL(Uniform Resource Locator):统一资源定位符,用于标识互联网上的资源
  3. HTTP(HyperText Transfer Protocol):超文本传输协议,用于传输网页数据

URL格式

协议://主机名:端口/路径
http://www.example.com:80/index.html
  • 协议:http或https
  • 主机名:域名或IP地址
  • 端口:可选,默认80(HTTP)或443(HTTPS)
  • 路径:资源在服务器上的位置

2.2 HTTP概述

HTTP是无状态的、面向事务的应用层协议,运行在TCP之上,默认使用80号端口(HTTPS使用443号端口)。

HTTP的主要特点:

  1. 无状态(Stateless):服务器不保存客户端的历史请求信息。每次请求都是独立的。
  2. 面向事务:一个完整的请求-响应过程构成一个事务。
  3. C/S模型:客户端(浏览器)发起请求,服务器返回响应。
  4. 可扩展:通过自定义头部字段可以扩展功能。

2.3 HTTP报文格式

请求报文

方法 URL HTTP版本\r\n          ← 请求行
头部字段名: 值\r\n              ← 首部行
头部字段名: 值\r\n
\r\n                            ← 空行(标志首部结束)
[实体体]                        ← 请求体(POST/PUT时使用)

常见请求方法

方法用途幂等性
GET获取资源
POST提交数据
PUT更新资源
DELETE删除资源
HEAD仅获取首部

响应报文

HTTP版本 状态码 短语\r\n        ← 状态行
头部字段名: 值\r\n              ← 首部行
\r\n                            ← 空行
[实体体]                        ← 响应体(HTML页面等)

常见状态码

状态码短语含义
200OK请求成功
301Moved Permanently永久重定向
302Found临时重定向
304Not Modified资源未修改,使用缓存
400Bad Request请求语法错误
403Forbidden服务器拒绝执行
404Not Found资源不存在
500Internal Server Error服务器内部错误
502Bad Gateway网关错误
503Service Unavailable服务不可用

2.4 HTTP连接管理

非持久连接(Non-Persistent Connection)

  • 每个请求/响应对使用一个单独的TCP连接
  • 每次请求都需要建立TCP连接(三次握手)
  • HTTP/1.0默认使用非持久连接

持久连接(Persistent Connection)

  • 多个请求/响应对复用同一个TCP连接
  • 减少了TCP连接建立的开销
  • HTTP/1.1默认使用持久连接

持久连接的两种模式

模式说明特点
非流水线(Without Pipelining)客户端收到前一个响应后才发下一个请求每个RTT发送一个请求
流水线(Pipelining)客户端可以连续发送多个请求,不需要等待响应显著减少等待时间

RTT分析

  • 一次RTT = 一个请求从客户端到服务器再返回的时间
  • TCP建立连接 = 1 RTT(第三次握手可以携带HTTP请求)
  • 非持久连接传输一个对象 = 2 RTT(1 RTT建立TCP + 1 RTT传输请求/响应)
  • 持久连接传输一个对象 = 1 RTT(TCP已建立,只需1 RTT传输)
  • 流水线传输N个对象 = 1 RTT(建立TCP)+ 1 RTT(所有请求/响应)

由于HTTP是无状态的,服务器无法区分不同的客户端。Cookie机制用于在客户端维护状态信息。

Cookie的工作过程

  1. 客户端首次访问服务器
  2. 服务器在响应首部中设置Set-Cookie字段,包含一个唯一的标识符
  3. 客户端(浏览器)保存该Cookie
  4. 客户端后续每次请求都会在Cookie首部中携带该标识符
  5. 服务器根据Cookie识别客户端,维护会话状态

Cookie的存储位置

  • 内存Cookie:浏览器关闭后消失
  • 持久Cookie:保存在硬盘上,设置过期时间后自动删除

2.6 Web缓存(代理服务器)

Web缓存(Web Cache)又称代理服务器(Proxy Server),位于客户端和源服务器之间,可以缓存经常访问的网页副本。

Web缓存的工作过程

  1. 客户端向代理服务器发送请求
  2. 代理服务器检查缓存:
    • 缓存命中:直接返回缓存的内容给客户端
    • 缓存未命中:代理服务器向源服务器请求内容,缓存后返回给客户端

Web缓存的优势

  1. 减少客户端的响应时间(缓存命中时)
  2. 减少源服务器的负载
  3. 减少网络带宽消耗

2.7 条件GET

为了确保缓存内容是最新的,HTTP使用**条件GET(Conditional GET)**机制:

  1. 缓存记录资源的最后修改时间(Last-Modified)或ETag
  2. 客户端再次请求时,在请求首部中添加If-Modified-SinceIf-None-Match
  3. 服务器检查资源是否修改:
    • 未修改:返回304 Not Modified(无实体体),客户端继续使用缓存
    • 已修改:返回200 OK和新的资源内容

2.8 HTTP/1.0 vs HTTP/1.1 vs HTTP/2

特性HTTP/1.0HTTP/1.1HTTP/2
连接方式非持久连接默认持久连接多路复用
流水线不支持支持(但实际少用)支持
头部压缩HPACK压缩
服务器推送不支持不支持支持
数据格式文本文本二进制帧
Host字段不要求必须必须

三、记忆与理解辅助

  1. 口诀:"HTTP无状态TCP上,80端口默认藏;持久连接省RTT,Cookie帮你记身份"——记住HTTP的核心特点。

  2. RTT记忆法:非持久连接=2RTT/对象,持久连接=1RTT/对象,流水线≈1RTT+N个对象。记住"握手一RTT,传输一RTT"。

  3. 对比表:非持久连接 vs 持久连接

对比项非持久连接持久连接
TCP连接数每个对象一个多个对象复用一个
RTT开销2 RTT/对象1 RTT/对象(建立后)
服务器负载高(频繁建立连接)
HTTP版本1.0默认1.1默认
  1. 场景记忆:非持久连接像"每次买东西都重新建一个仓库",持久连接像"仓库建好后一直用",流水线像"一口气下多个订单,仓库统一发货"。

四、例题与精解

例题1(基础巩固)

题目:使用HTTP/1.1的持久连接(非流水线模式)传输一个HTML页面和页面中的5个图片(共6个对象),假设TCP建立连接需要1个RTT,每个对象传输需要1个RTT,则总时间为( )个RTT。如果使用非持久连接,总时间为( )个RTT。

A. 7, 12

B. 6, 12

C. 7, 7

D. 6, 7

命题意图:考查持久连接与非持久连接的RTT计算差异。

精解

  1. 审题分析:需要分别计算两种连接模式下的总RTT。

  2. 解题思路

    • 非持久连接:每个对象需要独立的TCP连接,每个连接=1RTT(握手)+1RTT(传输)
    • 持久连接:TCP连接只建立一次=1RTT,之后每个对象1RTT
  3. 完整步骤

    持久连接(非流水线)

    • TCP建立连接:1 RTT
    • 第1个对象(HTML页面):1 RTT
    • 第2~6个对象(5个图片):每个1 RTT,共5 RTT
    • 总时间 = 1 + 6 = 7 RTT

    非持久连接

    • 每个对象:1 RTT(TCP握手)+ 1 RTT(传输)= 2 RTT
    • 6个对象共:6 × 2 = 12 RTT
  4. 方法反思:持久连接的优势在于TCP连接只建立一次。非流水线模式下,虽然每个对象仍需1 RTT传输,但省去了重复的TCP握手开销。如果使用流水线模式,理论上所有请求可以一次发出,总时间只需1+1=2 RTT。

答案:A


例题2(中等提升)

题目:某用户在浏览器中输入URL http://www.example.com/index.html 并回车。假设浏览器需要通过DNS解析域名为IP地址(本地DNS缓存未命中,需1个RTT),TCP建立连接需要1个RTT,HTTP请求和响应需要1个RTT。则从用户按下回车到页面完全显示的最短时间为( )个RTT。如果浏览器事先已经知道服务器的IP地址(无需DNS解析),且TCP连接已经建立(持久连接),则最短时间为( )个RTT。

A. 4, 1

B. 3, 1

C. 4, 2

D. 3, 2

命题意图:考查Web页面加载过程中的各环节耗时分析。

精解

  1. 审题分析:需要分析从输入URL到页面显示的完整过程,计算各环节的RTT。

  2. 解题思路:完整过程 = DNS解析 + TCP建立 + HTTP传输。各环节可以部分并行。

  3. 完整步骤

    情况1(需要DNS解析,需要建立TCP)

    • DNS解析:1 RTT
    • TCP建立连接:1 RTT
    • HTTP请求和响应:1 RTT
    • 注意:DNS解析必须先完成才能建立TCP连接(需要IP地址),TCP建立后才能发送HTTP请求
    • 总时间 = 1 + 1 + 1 = 3 RTT

    情况2(无DNS,TCP已建立)

    • DNS解析:0(已知IP)
    • TCP建立:0(已建立)
    • HTTP请求和响应:1 RTT
    • 总时间 = 1 RTT
  4. 方法反思:Web页面加载的时间分析需要考虑各个环节的串行/并行关系。DNS解析→TCP建立→HTTP传输是串行的。在实际中,浏览器会并行发起DNS解析和TCP预连接等优化,但考研中按最简单的串行模型计算。

答案:B


五、考情分析

  • 考查频次:近5年408真题中HTTP/WWW相关题目约出现5~8次
  • 常见题型:选择题(HTTP特点、RTT计算、Cookie机制)和综合题(Web性能分析)
  • 分值占比:2~6分
  • 命题趋势:近年倾向于考查HTTP的连接管理(持久/非持久/流水线)和RTT分析。Cookie、Web缓存、条件GET也是常考点。HTTP/2的新特性也可能考查
  • 基于大纲与命题规律推测

六、易错点提醒

  1. 错误表现:认为HTTP是有状态协议

    • 错误原因:看到Cookie就以为HTTP有状态
    • 正确理解/做法:HTTP本身是无状态协议。Cookie是在应用层实现的状态维护机制,不是HTTP协议本身的功能。HTTP协议本身不保存任何客户端状态。
  2. 错误表现:在RTT计算中忽略TCP建立连接的开销

    • 错误原因:只关注HTTP传输时间
    • 正确理解/做法:非持久连接下,每个对象都需要先建立TCP连接(1 RTT),再传输数据(1 RTT),共2 RTT/对象。持久连接只需第一次建立TCP(1 RTT)。
  3. 错误表现:认为持久连接下所有请求都必须等待前一个响应返回

    • 错误原因:混淆了非流水线和流水线模式
    • 正确理解/做法:非流水线模式确实需要等待前一个响应,但流水线模式允许连续发送多个请求不需要等待响应。不过实际中流水线使用较少(队头阻塞问题)。
  4. 错误表现:认为GET请求没有请求体,POST请求必须有请求体

    • 错误原因:对HTTP方法的理解不准确
    • 正确理解/做法:GET请求可以有请求体(虽然很少使用),POST请求也不一定必须有请求体。两者的本质区别在于语义:GET是获取资源,POST是提交数据。
  5. 错误表现:认为Web缓存(代理服务器)一定返回最新的内容

    • 错误原因:对缓存机制理解不全面
    • 正确理解/做法:Web缓存的内容可能是过期的。条件GET机制(If-Modified-Since)可以在一定程度上保证缓存新鲜度,但不保证实时最新。

七、来源标注

  • 依据2026考研统考大纲·计算机网络部分
  • 依据《计算机网络(第8版)》谢希仁版
  • 依据《计算机网络:自顶向下方法(第8版)》James F. Kurose版
  • 依据RFC 7230-7235 - HTTP/1.1, RFC 7540 - HTTP/2

考研全科复习资料 - 基于2026考研统考大纲