第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、缓存、认证或授权中的哪一段正确。

核心词汇与首版边界

这些词汇按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格式
分步1 / 3

复原正常协议轨迹

固定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是其中强调位置与访问方式的一类。掌握标准是能在原始请求或响应中定位它,并构造一条最小反例。

← 上一页:2014年首版权威学习地图 · 下一页:第2章 简单的HTTP协议 →

资料与写作方式声明

本章以上野宣《图解HTTP》2014年4月首版权威目录界定学习范围,并结合正文列出的技术资料独立重写;不宣称复现原书正文,也不沿用原作表述。

原作版权归作者与出版社所有;本站原创教学结构与表述仅供学习交流。

讨论

评论区加载中…