第1章 了解Web及网络基础
理解Web的诞生、TCP/IP四层封装、IP/TCP/DNS协作以及URI的标识与语法
第1章 了解Web及网络基础
本课程对应[日]上野宣《图解HTTP》,于均良译,人民邮电出版社/图灵教育,2014年4月首版,308页,双色印刷,ISBN 9787115351531;原书《HTTPの教科書》,ISBN 9784798126258。图灵官方资料标明出版日期为2014年4月22日、172张图解;正式目录为11章、202个节/小节节点。本页严格按该首版章次组织,不用后续规范替换原书语境。
学习目标
- 能解释“第1章 了解Web及网络基础”全部正式节点,并把概念定位到真实请求、响应或应用状态。
- 能绘制客户端、中介、服务器之间的消息方向、主体边界和关键状态转移。
- 能设计单变量实验,验证“输入一个URI后,能按DNS解析、TCP连接、HTTP交换、分层封装的顺序说明每一步的地址、数据单位和责任”。
- 能写出并提交包含原始报文、失败反例、恢复条件和版次边界的独立证据包。
从一条可证伪的HTTP交换开始
先预测:把HTTP等同于整个互联网,或把IP地址、MAC地址、域名和URI混为一谈,会导致故障定位跨错层。把预测写成“请求输入、线上消息、接收方状态、响应输出、最终副作用”五列,再运行实验。若结果与预测不同,先修正模型,不要只截取一个状态码证明自己。
本章的主问题是:理解Web的诞生、TCP/IP四层封装、IP/TCP/DNS协作以及URI的标识与语法。原书以图解建立直觉,本课程把图解升级为可操作轨迹:每个箭头必须注明方向、协议对象和完成点;每个安全结论必须附一条攻击或误配置反例。
验收不变量是:输入一个URI后,能按DNS解析、TCP连接、HTTP交换、分层封装的顺序说明每一步的地址、数据单位和责任。浏览器页面“看起来正常”只能说明某个终点出现,不能单独证明DNS、连接、TLS、缓存、认证或授权中的哪一段正确。
核心词汇与首版边界
↡围绕互联网通信形成的一组分层协议,而不只是TCP和IP两个协议、↡发送端逐层添加首部、接收端逐层去除首部的过程、↡在网络层按IP地址选择路径并尽力交付数据包的协议、↡在传输层提供可靠、有序字节流的协议、↡用统一语法标识资源的字符串,URL是其中强调位置与访问方式的一类
这些词汇按2014年首版语义使用。SPDY、HTTP/2.0、X-XSS-Protection、P3P等保留出版时状态;HTTP/2最终规范、HTTP/3、JWT、OAuth、SameSite等后续技术只能作为另行标注的现代补充,不改变本书目录分母。
核心机制深读
为什么Web需要协议组合
浏览器只知道资源标识还不够:DNS把主机名解析为IP,IP负责跨网段路由,TCP建立可靠字节流,HTTP才在其上表达获取哪项资源。每层只承担稳定责任,使下层替换不必重写应用语义。
动手试:先写下预期请求、响应与状态变化,再捕获一次正常交换和一次只改一个变量的失败交换。比较状态码、首部、主体、缓存或会话状态,确认结论来自证据而非浏览器表象。
从知识共享到HTTP/1.1
Tim Berners-Lee提出以超文本连接文档,并形成HTML、HTTP、URL三项基础技术。HTTP/0.9只处理简单文档,HTTP/1.0形成标准,HTTP/1.1加入持久连接、Host和更完整的缓存控制;本书停在HTTP/2仍在制定的时间点。
动手试:先写下预期请求、响应与状态变化,再捕获一次正常交换和一次只改一个变量的失败交换。比较状态码、首部、主体、缓存或会话状态,确认结论来自证据而非浏览器表象。
IP、TCP与DNS不要串位
IP地址标识网络节点,MAC地址用于当前链路的下一跳交付,ARP协助解析局域网内的MAC;TCP用序列号、确认与重传保证有序可靠;DNS把便于人记忆的域名映射成IP。它们都不是HTTP首部的一部分。
动手试:先写下预期请求、响应与状态变化,再捕获一次正常交换和一次只改一个变量的失败交换。比较状态码、首部、主体、缓存或会话状态,确认结论来自证据而非浏览器表象。
URI语法是资源边界
典型绝对URI由方案、用户信息、主机、端口、路径、查询与片段组成。片段只供客户端定位,不随HTTP请求发送;主机名需要DNS解析;路径与查询共同指向服务端资源或处理入口。
动手试:先写下预期请求、响应与状态变化,再捕获一次正常交换和一次只改一个变量的失败交换。比较状态码、首部、主体、缓存或会话状态,确认结论来自证据而非浏览器表象。
原书目录逐节点重构
1.1 使用HTTP协议访问Web
浏览器根据URI定位资源,以HTTP请求取得表示,再按媒体类型呈现;客户端和服务器角色由本次通信方向决定。
核查动作: 在固定请求和服务端状态下,只改变一个与“使用HTTP协议访问Web”相关的变量,保存线上的字节、响应结果与状态前后值;若无法区分请求已发送和业务已完成,本节点不通过。
1.2 HTTP的诞生
HTTP与HTML、URL共同服务跨地点知识共享,协议的简洁请求响应模型使Web得以扩展。
核查动作: 在固定请求和服务端状态下,只改变一个与“HTTP的诞生”相关的变量,保存线上的字节、响应结果与状态前后值;若无法区分请求已发送和业务已完成,本节点不通过。
1.2.1 为知识共享而规划Web
“为知识共享而规划Web”位于本章主链“理解Web的诞生、TCP/IP四层封装、IP/TCP/DNS协作以及URI的标识与语法”中;需要说明它接收什么输入、改变哪份协议或应用状态、产生什么可观察输出。
核查动作: 在固定请求和服务端状态下,只改变一个与“为知识共享而规划Web”相关的变量,保存线上的字节、响应结果与状态前后值;若无法区分请求已发送和业务已完成,本节点不通过。
1.2.2 Web成长时代
“Web成长时代”位于本章主链“理解Web的诞生、TCP/IP四层封装、IP/TCP/DNS协作以及URI的标识与语法”中;需要说明它接收什么输入、改变哪份协议或应用状态、产生什么可观察输出。
核查动作: 在固定请求和服务端状态下,只改变一个与“Web成长时代”相关的变量,保存线上的字节、响应结果与状态前后值;若无法区分请求已发送和业务已完成,本节点不通过。
1.2.3 驻足不前的HTTP
“驻足不前的HTTP”位于本章主链“理解Web的诞生、TCP/IP四层封装、IP/TCP/DNS协作以及URI的标识与语法”中;需要说明它接收什么输入、改变哪份协议或应用状态、产生什么可观察输出。
核查动作: 在固定请求和服务端状态下,只改变一个与“驻足不前的HTTP”相关的变量,保存线上的字节、响应结果与状态前后值;若无法区分请求已发送和业务已完成,本节点不通过。
1.3 网络基础TCP/IP
“网络基础TCP/IP”位于本章主链“理解Web的诞生、TCP/IP四层封装、IP/TCP/DNS协作以及URI的标识与语法”中;需要说明它接收什么输入、改变哪份协议或应用状态、产生什么可观察输出。
核查动作: 在固定请求和服务端状态下,只改变一个与“网络基础TCP/IP”相关的变量,保存线上的字节、响应结果与状态前后值;若无法区分请求已发送和业务已完成,本节点不通过。
1.3.1 TCP/IP协议族
“TCP/IP协议族”位于本章主链“理解Web的诞生、TCP/IP四层封装、IP/TCP/DNS协作以及URI的标识与语法”中;需要说明它接收什么输入、改变哪份协议或应用状态、产生什么可观察输出。
核查动作: 在固定请求和服务端状态下,只改变一个与“TCP/IP协议族”相关的变量,保存线上的字节、响应结果与状态前后值;若无法区分请求已发送和业务已完成,本节点不通过。
1.3.2 TCP/IP的分层管理
应用、传输、网络和链路层各守稳定接口,变更某层不要求重写全部通信系统。
核查动作: 在固定请求和服务端状态下,只改变一个与“TCP/IP的分层管理”相关的变量,保存线上的字节、响应结果与状态前后值;若无法区分请求已发送和业务已完成,本节点不通过。
1.3.3 TCP/IP通信传输流
发送端从应用向链路逐层封装,接收端反向解封装,HTTP只在端点应用层解释。
核查动作: 在固定请求和服务端状态下,只改变一个与“TCP/IP通信传输流”相关的变量,保存线上的字节、响应结果与状态前后值;若无法区分请求已发送和业务已完成,本节点不通过。
1.4 与HTTP关系密切的协议:IP、TCP和DNS
“与HTTP关系密切的协议:IP、TCP和DNS”位于本章主链“理解Web的诞生、TCP/IP四层封装、IP/TCP/DNS协作以及URI的标识与语法”中;需要说明它接收什么输入、改变哪份协议或应用状态、产生什么可观察输出。
核查动作: 在固定请求和服务端状态下,只改变一个与“与HTTP关系密切的协议:IP、TCP和DNS”相关的变量,保存线上的字节、响应结果与状态前后值;若无法区分请求已发送和业务已完成,本节点不通过。
1.4.1 负责传输的IP协议
IP依据IP地址和路由逐跳转发数据包,下一跳链路常通过ARP获得MAC地址,但不保证可靠到达。
核查动作: 在固定请求和服务端状态下,只改变一个与“负责传输的IP协议”相关的变量,保存线上的字节、响应结果与状态前后值;若无法区分请求已发送和业务已完成,本节点不通过。
1.4.2 确保可靠性的TCP协议
TCP建立双向连接,把字节编号并确认,丢失后重传,向HTTP提供有序可靠字节流。
核查动作: 在固定请求和服务端状态下,只改变一个与“确保可靠性的TCP协议”相关的变量,保存线上的字节、响应结果与状态前后值;若无法区分请求已发送和业务已完成,本节点不通过。
1.5 负责域名解析的DNS服务
DNS把主机名查询为IP地址,HTTP连接随后使用解析结果;DNS失败发生在HTTP请求之前。
核查动作: 在固定请求和服务端状态下,只改变一个与“负责域名解析的DNS服务”相关的变量,保存线上的字节、响应结果与状态前后值;若无法区分请求已发送和业务已完成,本节点不通过。
1.6 各种协议与HTTP协议的关系
“各种协议与HTTP协议的关系”位于本章主链“理解Web的诞生、TCP/IP四层封装、IP/TCP/DNS协作以及URI的标识与语法”中;需要说明它接收什么输入、改变哪份协议或应用状态、产生什么可观察输出。
核查动作: 在固定请求和服务端状态下,只改变一个与“各种协议与HTTP协议的关系”相关的变量,保存线上的字节、响应结果与状态前后值;若无法区分请求已发送和业务已完成,本节点不通过。
1.7 URI和URL
“URI和URL”位于本章主链“理解Web的诞生、TCP/IP四层封装、IP/TCP/DNS协作以及URI的标识与语法”中;需要说明它接收什么输入、改变哪份协议或应用状态、产生什么可观察输出。
核查动作: 在固定请求和服务端状态下,只改变一个与“URI和URL”相关的变量,保存线上的字节、响应结果与状态前后值;若无法区分请求已发送和业务已完成,本节点不通过。
1.7.1 统一资源标识符
URI统一标识资源,URL是给出定位和访问方式的URI,URN强调持久名称。
核查动作: 在固定请求和服务端状态下,只改变一个与“统一资源标识符”相关的变量,保存线上的字节、响应结果与状态前后值;若无法区分请求已发送和业务已完成,本节点不通过。
1.7.2 URI格式
方案、用户信息、主机、端口、路径、查询和片段各有边界;片段不随HTTP发送。
核查动作: 在固定请求和服务端状态下,只改变一个与“URI格式”相关的变量,保存线上的字节、响应结果与状态前后值;若无法区分请求已发送和业务已完成,本节点不通过。
本页完整节点清单
本页承担17个目录或复习节点,正文、图解、实验和题目必须能反向定位每一项:
- 1.1 使用HTTP协议访问Web
- 1.2 HTTP的诞生
- 1.2.1 为知识共享而规划Web
- 1.2.2 Web成长时代
- 1.2.3 驻足不前的HTTP
- 1.3 网络基础TCP/IP
- 1.3.1 TCP/IP协议族
- 1.3.2 TCP/IP的分层管理
- 1.3.3 TCP/IP通信传输流
- 1.4 与HTTP关系密切的协议:IP、TCP和DNS
- 1.4.1 负责传输的IP协议
- 1.4.2 确保可靠性的TCP协议
- 1.5 负责域名解析的DNS服务
- 1.6 各种协议与HTTP协议的关系
- 1.7 URI和URL
- 1.7.1 统一资源标识符
- 1.7.2 URI格式
复原正常协议轨迹
固定URI、客户端、网络和服务端状态,标出请求行、首部、主体、中介与最终响应。
可复现实验
https://user@example.com:443/docs/http?q=uri#syntax
方案 用户信息 主机 端口 路径 查询 片段应用层 HTTP数据
传输层 TCP首部 | HTTP数据
网络层 IP首部 | TCP首部 | HTTP数据
链路层 帧首部 | IP首部 | TCP首部 | HTTP数据client --SYN--> server
client <-SYN/ACK- server
client --ACK--> server
client --HTTP request--> server动手试:使用浏览器开发者工具、curl或抓包工具保存同一资源的正常、条件命中、条件失配和无效输入四次交换。记录方法、目标、状态码、关键首部、主体长度、连接复用、缓存/Session状态与最终副作用。
独立证据门
最小证据包包含:首版目录节点、请求与响应原文、连接/中介方向、主体边界、缓存或会话状态、一个单变量失败、最终副作用、已知限制、恢复步骤、责任人与复核人。
练习
练习
问题 1:为什么“第1章 了解Web及网络基础”必须固定2014年首版语境?
问题 2:怎样构造“把HTTP等同于整个互联网,或把IP地址、MAC地址、域名和URI混为一谈,会导致故障定位跨错层”的最小反例?
问题 3:何时可以认为本页完成独立交接?
本章回顾
“第1章 了解Web及网络基础”的核心是理解Web的诞生、TCP/IP四层封装、IP/TCP/DNS协作以及URI的标识与语法。真正掌握不止是认出术语,而是能让一条请求在消息、连接、中介、表示、身份和攻击边界之间闭环,并用失败实验说明边界一旦被破坏会发生什么。
名词解释
本章出现的专业名词,用大白话再讲一遍。
- TCP/IP协议族
围绕互联网通信形成的一组分层协议,而不只是TCP和IP两个协议。掌握标准是能在原始请求或响应中定位它,并构造一条最小反例。
- 封装
发送端逐层添加首部、接收端逐层去除首部的过程。掌握标准是能在原始请求或响应中定位它,并构造一条最小反例。
- IP
在网络层按IP地址选择路径并尽力交付数据包的协议。掌握标准是能在原始请求或响应中定位它,并构造一条最小反例。
- TCP
在传输层提供可靠、有序字节流的协议。掌握标准是能在原始请求或响应中定位它,并构造一条最小反例。
- URI
用统一语法标识资源的字符串,URL是其中强调位置与访问方式的一类。掌握标准是能在原始请求或响应中定位它,并构造一条最小反例。