第2章 应用层

从进程通信与运输服务需求进入HTTP、电子邮件、DNS、P2P、视频/CDN和UDP/TCP套接字编程

第2章 应用层

本课程锁定James F. Kurose、Keith W. Ross著,陈鸣译《计算机网络:自顶向下方法(原书第8版)》,机械工业出版社,2022年10月,ISBN 9787111712367;英文原版Pearson第8版,2020年出版、2021版权,ISBN 9780135928615。机械工业出版社官方中文目录与Pearson、作者官方第8版目录共同确认8章结构;正式分母为8个章标题和全部编号节/小节,共218个节点。课后习题、编程作业、Wireshark实验、人物专访和参考文献作为学习支持保留说明,但不重复计入核心节点。

学习目标

  • 能解释“第2章 应用层”全部节点,并把术语放回端到端协议路径。
  • 能绘制通信实体、报文次序、状态机、表项和逐层封装。
  • 能设计单变量实验,验证“每个应用协议都能说明通信进程、寻址、报文格式与次序、运输服务、状态位置、缓存或复制策略以及失败语义”。
  • 能写出含版本边界、性能、故障、恢复与复核人的独立证据包。

机制总览

第2章 应用层:机制路径

  1. 1

    从一条可证伪的端到端路径开始

    先预测:只记端口号而不区分应用状态、运输连接、缓存一致性和命名依赖,会在代理、CDN、DNS或并发连接处误判。把预测写成“应用意图、运输状态、数据平面、控制平面、链路/无线、安全”六行,再运行协议或抓包。若结果与预测不同,先定位首个偏差,不把后续连锁症状冒充根因。

  2. 2

    核心词汇与第8版边界

    这些词汇固定在原书第8版语境。HTTP/2、QUIC/HTTP/3演化、CUBIC/BBR、SDN、NETCONF/YANG、4G/5G和WPA3语境属于本版;第9版重排或新增内容只能另行比较,不能修改218个节点分母。

  3. 3

    核心机制深读

    可靠性、吞吐、时延和安全需求不同,选择TCP或UDP不能只按习惯。协议还要定义消息边界、错误、重试、幂等和状态归属。

先按顺序建立机制,再进入实验切换阶段并检查失效证据。

章级决策实验

第2章 应用层:机制与证据

切换《第2章 应用层》的三个关键教学阶段,先解释机制,再用运行与失败证据验证结论。

选择推理阶段

当前阶段 · 从一条可证伪的端到端路径开始

先预测:只记端口号而不区分应用状态、运输连接、缓存一致性和命名依赖,会在代理、CDN、DNS或并发连接处误判。把预测写成“应用意图、运输状态、数据平面、控制平面、链路/无线、安全”六行,再运行协议或抓包。若结果与预测不同,先定位首个偏差,不把后续连锁症状冒充根因。

可核验证据

用确定的客户端与服务端输入复现「从一条可证伪的端到端路径开始」,同时核对应用日志、套接字状态和分层抓包中的字段、时序与失败响应。

学完《第2章 应用层》后,应能从输入和前置条件推导状态变化,并用可重复的构建、运行或边界测试证明结果。

失效—证据矩阵

第2章 应用层:失效与核验

从一条可证伪的端到端路径开始

典型失效

若把「从一条可证伪的端到端路径开始」当成孤立协议名而忽略分层接口、时序和端到端状态,丢包、重传或路由变化后就难以解释观测结果。

核验证据

用确定的客户端与服务端输入复现「从一条可证伪的端到端路径开始」,同时核对应用日志、套接字状态和分层抓包中的字段、时序与失败响应。

核心词汇与第8版边界

典型失效

若把「核心词汇与第8版边界」当成孤立协议名而忽略分层接口、时序和端到端状态,丢包、重传或路由变化后就难以解释观测结果。

核验证据

用确定的客户端与服务端输入复现「核心词汇与第8版边界」,同时核对应用日志、套接字状态和分层抓包中的字段、时序与失败响应。

核心机制深读

典型失效

若把「核心机制深读」当成孤立协议名而忽略分层接口、时序和端到端状态,丢包、重传或路由变化后就难以解释观测结果。

核验证据

用确定的客户端与服务端输入复现「核心机制深读」,同时核对应用日志、套接字状态和分层抓包中的字段、时序与失败响应。

每个判断都必须能落到观测、测试或产物,不能只凭代码表面推测。

从一条可证伪的端到端路径开始

先预测:只记端口号而不区分应用状态、运输连接、缓存一致性和命名依赖,会在代理、CDN、DNS或并发连接处误判。把预测写成“应用意图、运输状态、数据平面、控制平面、链路/无线、安全”六行,再运行协议或抓包。若结果与预测不同,先定位首个偏差,不把后续连锁症状冒充根因。

本页主问题是:从进程通信与运输服务需求进入HTTP、电子邮件、DNS、P2P、视频/CDN和UDP/TCP套接字编程。每个箭头要注明通信实体、报文、地址或标识、状态变化、定时器以及证据位置;每个性能结论要注明负载、路径、窗口和瓶颈假设。

验收不变量是:每个应用协议都能说明通信进程、寻址、报文格式与次序、运输服务、状态位置、缓存或复制策略以及失败语义。一次ping、一个HTTP状态码或一个接口up都只证明局部事实,不能独立证明名称解析、双向运输、转发、移动性与身份安全全部成立。

核心词汇与第8版边界

这些词汇固定在原书第8版语境。HTTP/2、QUIC/HTTP/3演化、CUBIC/BBR、SDN、NETCONF/YANG、4G/5G和WPA3语境属于本版;第9版重排或新增内容只能另行比较,不能修改218个节点分母。

核心机制深读

先写应用需求再选运输服务

可靠性、吞吐、时延和安全需求不同,选择TCP或UDP不能只按习惯。协议还要定义消息边界、错误、重试、幂等和状态归属。

动手试:先画预期报文时间线与状态变化,再抓取一次正常流和一次单变量故障流。标出首个偏差,避免用最终症状倒推任意根因。

HTTP无状态不等于系统无状态

HTTP请求可独立解释,但Cookie、会话存储、缓存验证器和后端数据库保存业务状态。持续连接减少握手,HTTP/2用多路复用缓解应用层队头问题。

DNS是一棵分布式委派树

递归解析器迭代访问根、顶级域和权威服务器,并按TTL缓存资源记录。故障分析要区分查询超时、否定应答、旧缓存和权威数据错误。

内容分发同时处理容量与位置

DASH让客户按测得带宽选分片码率,CDN把副本靠近用户并进行请求映射;P2P则让新对等方同时增加需求与上传能力。

套接字程序必须验证消息边界

UDP保留数据报边界但不保证到达和次序;TCP提供字节流,单次读取不对应单条应用消息。正确程序要循环读写并定义定界或长度字段。

原书目录核对清单

本页承担33个原书正式节点。正文、图解、实验和题目必须能反向定位每项:

  • 第2章 应用层
  • 2.1 网络应用原理
  • 2.1.1 网络应用体系结构
  • 2.1.2 进程通信
  • 2.1.3 可供应用程序使用的运输服务
  • 2.1.4 因特网提供的运输服务
  • 2.1.5 应用层协议
  • 2.1.6 本书涉及的网络应用
  • 2.2 Web和HTTP
  • 2.2.1 HTTP概述
  • 2.2.2 非持续连接和持续连接
  • 2.2.3 HTTP报文格式
  • 2.2.4 用户与服务器的交互:cookie
  • 2.2.5 Web缓存
  • 2.2.6 HTTP/2
  • 2.3 因特网中的电子邮件
  • 2.3.1 SMTP
  • 2.3.2 邮件报文格式
  • 2.3.3 邮件访问协议
  • 2.4 DNS:因特网的目录服务
  • 2.4.1 DNS提供的服务
  • 2.4.2 DNS工作机理概述
  • 2.4.3 DNS记录和报文
  • 2.5 P2P文件分发
  • 2.6 视频流和内容分发网
  • 2.6.1 因特网视频
  • 2.6.2 HTTP流和DASH
  • 2.6.3 内容分发网
  • 2.6.4 学习案例:Netflix和YouTube
  • 2.7 套接字编程:生成网络应用
  • 2.7.1 UDP套接字编程
  • 2.7.2 TCP套接字编程
  • 2.8 小结
分步1 / 3

建立逐层正常路径

从应用消息向下标出运输端点、IP与转发表、下一跳链路、无线或接入状态以及安全保护边界。

可复现实验记录

GET /index.html HTTP/1.1
Host: example.test
If-None-Match: "v7"
Connection: keep-alive
name -> recursive resolver -> root -> TLD -> authoritative
record = {name, type, value, ttl}
cache_expiry = received_at + ttl
message = length_prefix + payload
while bytes_read < expected_length:
  read_more_from_tcp_stream()

独立证据门

第2章 应用层 的最小证据包包含:第8版节点、正常报文时间线、地址与端口、协议状态、路由/邻居/链路表项、性能条件、单变量故障、安全策略、恢复、偏差、责任人与复核人。

练习

练习

问题 1:为什么“第2章 应用层”必须固定第8版?

问题 2:怎样构造“只记端口号而不区分应用状态、运输连接、缓存一致性和命名依赖,会在代理、CDN、DNS或并发连接处误判”的最小反例?

问题 3:何时可以认为本页完成独立交接?

本章回顾

“第2章 应用层”的核心是从进程通信与运输服务需求进入HTTP、电子邮件、DNS、P2P、视频/CDN和UDP/TCP套接字编程。真正掌握不是背缩写,而是能把应用意图、报文、状态、表项、性能、故障与安全证据连成可证伪的端到端模型。

名词解释

本章出现的专业名词,用大白话再讲一遍。

套接字

应用进程与运输层之间发送和接收报文的编程接口。掌握标准是能在报文、状态机或表项中定位,并构造一个最小失败反例。

HTTP

定义Web客户与服务器交换请求和响应报文语义的应用层协议。掌握标准是能在报文、状态机或表项中定位,并构造一个最小失败反例。

DNS

把主机名等名称映射为资源记录并由分层服务器协作提供的目录服务。掌握标准是能在报文、状态机或表项中定位,并构造一个最小失败反例。

CDN

把内容副本部署到多个边缘位置并按策略选择交付节点的系统。掌握标准是能在报文、状态机或表项中定位,并构造一个最小失败反例。

P2P

端系统同时承担客户与服务方角色并直接贡献分发能力的体系结构。掌握标准是能在报文、状态机或表项中定位,并构造一个最小失败反例。

← 上一页:第1章 计算机网络和因特网 · 下一页:第3章 运输层 →

原版目录概念补充核对

以下条目补齐官方目录中容易被示例主线掩盖的概念。它们不重复罗列目录,而是明确每项概念的机制、适用边界和验收证据。

2.1 网络应用原理:机制、边界与证据

第2章 应用层中的2.1 网络应用原理位于端系统应用边界,重点是消息语义、进程寻址和请求/响应状态。可用固定客户端输入同时观察应用日志与抓包,核对名称解析、端口、消息字段、超时和错误响应是否形成同一条端到端证据链。

2.1.1 网络应用体系结构:机制、边界与证据

第2章 应用层中的2.1.1 网络应用体系结构位于端系统应用边界,重点是消息语义、进程寻址和请求/响应状态。可用固定客户端输入同时观察应用日志与抓包,核对名称解析、端口、消息字段、超时和错误响应是否形成同一条端到端证据链。

2.1.2 进程通信:机制、边界与证据

第2章 应用层中的2.1.2 进程通信应沿“发送端—网络核心—接收端”的分层接口定位责任。先写输入报文、每层新增状态和可观察输出,再改变一个链路或协议条件,用抓包、表项和端点日志交叉验证因果关系。

2.1.3 可供应用程序使用的运输服务:机制、边界与证据

第2章 应用层中的2.1.3 可供应用程序使用的运输服务位于端系统应用边界,重点是消息语义、进程寻址和请求/响应状态。可用固定客户端输入同时观察应用日志与抓包,核对名称解析、端口、消息字段、超时和错误响应是否形成同一条端到端证据链。

2.1.4 因特网提供的运输服务:机制、边界与证据

第2章 应用层中的2.1.4 因特网提供的运输服务通过端点状态把不可靠网络服务转换为应用可用的传输行为;序号、确认、窗口、计时器和拥塞状态必须按时序联合判断。用受控丢包或延迟实验比较发送窗口、重传与吞吐,区分可靠性机制和拥塞控制各自的作用。

2.1.5 应用层协议:机制、边界与证据

第2章 应用层中的2.1.5 应用层协议位于端系统应用边界,重点是消息语义、进程寻址和请求/响应状态。可用固定客户端输入同时观察应用日志与抓包,核对名称解析、端口、消息字段、超时和错误响应是否形成同一条端到端证据链。

2.1.6 本书涉及的网络应用:机制、边界与证据

第2章 应用层中的2.1.6 本书涉及的网络应用位于端系统应用边界,重点是消息语义、进程寻址和请求/响应状态。可用固定客户端输入同时观察应用日志与抓包,核对名称解析、端口、消息字段、超时和错误响应是否形成同一条端到端证据链。

2.2 Web和HTTP:机制、边界与证据

第2章 应用层中的2.2 Web和HTTP位于端系统应用边界,重点是消息语义、进程寻址和请求/响应状态。可用固定客户端输入同时观察应用日志与抓包,核对名称解析、端口、消息字段、超时和错误响应是否形成同一条端到端证据链。

2.2.1 HTTP概述:机制、边界与证据

第2章 应用层中的2.2.1 HTTP概述位于端系统应用边界,重点是消息语义、进程寻址和请求/响应状态。可用固定客户端输入同时观察应用日志与抓包,核对名称解析、端口、消息字段、超时和错误响应是否形成同一条端到端证据链。

2.2.2 非持续连接和持续连接:机制、边界与证据

第2章 应用层中的2.2.2 非持续连接和持续连接应沿“发送端—网络核心—接收端”的分层接口定位责任。先写输入报文、每层新增状态和可观察输出,再改变一个链路或协议条件,用抓包、表项和端点日志交叉验证因果关系。

2.2.3 HTTP报文格式:机制、边界与证据

第2章 应用层中的2.2.3 HTTP报文格式位于端系统应用边界,重点是消息语义、进程寻址和请求/响应状态。可用固定客户端输入同时观察应用日志与抓包,核对名称解析、端口、消息字段、超时和错误响应是否形成同一条端到端证据链。

2.2.4 用户与服务器的交互:cookie:机制、边界与证据

第2章 应用层中的2.2.4 用户与服务器的交互:cookie应沿“发送端—网络核心—接收端”的分层接口定位责任。先写输入报文、每层新增状态和可观察输出,再改变一个链路或协议条件,用抓包、表项和端点日志交叉验证因果关系。

2.2.5 Web缓存:机制、边界与证据

第2章 应用层中的2.2.5 Web缓存位于端系统应用边界,重点是消息语义、进程寻址和请求/响应状态。可用固定客户端输入同时观察应用日志与抓包,核对名称解析、端口、消息字段、超时和错误响应是否形成同一条端到端证据链。

2.2.6 HTTP/2:机制、边界与证据

第2章 应用层中的2.2.6 HTTP/2位于端系统应用边界,重点是消息语义、进程寻址和请求/响应状态。可用固定客户端输入同时观察应用日志与抓包,核对名称解析、端口、消息字段、超时和错误响应是否形成同一条端到端证据链。

2.3 因特网中的电子邮件:机制、边界与证据

第2章 应用层中的2.3 因特网中的电子邮件位于端系统应用边界,重点是消息语义、进程寻址和请求/响应状态。可用固定客户端输入同时观察应用日志与抓包,核对名称解析、端口、消息字段、超时和错误响应是否形成同一条端到端证据链。

2.3.1 SMTP:机制、边界与证据

第2章 应用层中的2.3.1 SMTP应沿“发送端—网络核心—接收端”的分层接口定位责任。先写输入报文、每层新增状态和可观察输出,再改变一个链路或协议条件,用抓包、表项和端点日志交叉验证因果关系。

2.3.2 邮件报文格式:机制、边界与证据

第2章 应用层中的2.3.2 邮件报文格式位于端系统应用边界,重点是消息语义、进程寻址和请求/响应状态。可用固定客户端输入同时观察应用日志与抓包,核对名称解析、端口、消息字段、超时和错误响应是否形成同一条端到端证据链。

2.3.3 邮件访问协议:机制、边界与证据

第2章 应用层中的2.3.3 邮件访问协议位于端系统应用边界,重点是消息语义、进程寻址和请求/响应状态。可用固定客户端输入同时观察应用日志与抓包,核对名称解析、端口、消息字段、超时和错误响应是否形成同一条端到端证据链。

2.4 DNS:因特网的目录服务:机制、边界与证据

第2章 应用层中的2.4 DNS:因特网的目录服务位于端系统应用边界,重点是消息语义、进程寻址和请求/响应状态。可用固定客户端输入同时观察应用日志与抓包,核对名称解析、端口、消息字段、超时和错误响应是否形成同一条端到端证据链。

2.4.1 DNS提供的服务:机制、边界与证据

第2章 应用层中的2.4.1 DNS提供的服务位于端系统应用边界,重点是消息语义、进程寻址和请求/响应状态。可用固定客户端输入同时观察应用日志与抓包,核对名称解析、端口、消息字段、超时和错误响应是否形成同一条端到端证据链。

2.4.2 DNS工作机理概述:机制、边界与证据

第2章 应用层中的2.4.2 DNS工作机理概述位于端系统应用边界,重点是消息语义、进程寻址和请求/响应状态。可用固定客户端输入同时观察应用日志与抓包,核对名称解析、端口、消息字段、超时和错误响应是否形成同一条端到端证据链。

2.4.3 DNS记录和报文:机制、边界与证据

第2章 应用层中的2.4.3 DNS记录和报文位于端系统应用边界,重点是消息语义、进程寻址和请求/响应状态。可用固定客户端输入同时观察应用日志与抓包,核对名称解析、端口、消息字段、超时和错误响应是否形成同一条端到端证据链。

2.5 P2P文件分发:机制、边界与证据

第2章 应用层中的2.5 P2P文件分发位于端系统应用边界,重点是消息语义、进程寻址和请求/响应状态。可用固定客户端输入同时观察应用日志与抓包,核对名称解析、端口、消息字段、超时和错误响应是否形成同一条端到端证据链。

2.6 视频流和内容分发网:机制、边界与证据

第2章 应用层中的2.6 视频流和内容分发网应沿“发送端—网络核心—接收端”的分层接口定位责任。先写输入报文、每层新增状态和可观察输出,再改变一个链路或协议条件,用抓包、表项和端点日志交叉验证因果关系。

2.6.1 因特网视频:机制、边界与证据

第2章 应用层中的2.6.1 因特网视频应沿“发送端—网络核心—接收端”的分层接口定位责任。先写输入报文、每层新增状态和可观察输出,再改变一个链路或协议条件,用抓包、表项和端点日志交叉验证因果关系。

2.6.2 HTTP流和DASH:机制、边界与证据

第2章 应用层中的2.6.2 HTTP流和DASH位于端系统应用边界,重点是消息语义、进程寻址和请求/响应状态。可用固定客户端输入同时观察应用日志与抓包,核对名称解析、端口、消息字段、超时和错误响应是否形成同一条端到端证据链。

2.6.3 内容分发网:机制、边界与证据

第2章 应用层中的2.6.3 内容分发网应沿“发送端—网络核心—接收端”的分层接口定位责任。先写输入报文、每层新增状态和可观察输出,再改变一个链路或协议条件,用抓包、表项和端点日志交叉验证因果关系。

2.6.4 学习案例:Netflix和YouTube:机制、边界与证据

第2章 应用层中的2.6.4 学习案例:Netflix和YouTube应沿“发送端—网络核心—接收端”的分层接口定位责任。先写输入报文、每层新增状态和可观察输出,再改变一个链路或协议条件,用抓包、表项和端点日志交叉验证因果关系。

2.7 套接字编程:生成网络应用:机制、边界与证据

第2章 应用层中的2.7 套接字编程:生成网络应用位于端系统应用边界,重点是消息语义、进程寻址和请求/响应状态。可用固定客户端输入同时观察应用日志与抓包,核对名称解析、端口、消息字段、超时和错误响应是否形成同一条端到端证据链。

2.7.1 UDP套接字编程:机制、边界与证据

第2章 应用层中的2.7.1 UDP套接字编程位于端系统应用边界,重点是消息语义、进程寻址和请求/响应状态。可用固定客户端输入同时观察应用日志与抓包,核对名称解析、端口、消息字段、超时和错误响应是否形成同一条端到端证据链。

2.7.2 TCP套接字编程:机制、边界与证据

第2章 应用层中的2.7.2 TCP套接字编程位于端系统应用边界,重点是消息语义、进程寻址和请求/响应状态。可用固定客户端输入同时观察应用日志与抓包,核对名称解析、端口、消息字段、超时和错误响应是否形成同一条端到端证据链。

2.8 小结:机制、边界与证据

第2章 应用层中的2.8 小结应沿“发送端—网络核心—接收端”的分层接口定位责任。先写输入报文、每层新增状态和可观察输出,再改变一个链路或协议条件,用抓包、表项和端点日志交叉验证因果关系。

资料与写作方式声明

本章以Kurose与Ross《计算机网络:自顶向下方法》原书第8版权威目录界定学习范围,并结合正文列出的技术资料独立重写;不宣称复现原书正文,也不沿用原作表述。

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

讨论

评论区加载中…