计算机网络应用层
拆解 HTTP/3、DNS、TLS 的协议抉择与性能安全边界
按 空格/→ 演示下一步
全部页面点击任意一页,跳回舞台从这页播放
计算机网络应用层
拆解 HTTP/3、DNS、TLS 的协议抉择与性能安全边界
什么是应用层
上一节我们看到了应用层在协议栈最顶端。今天要追问:它的本质到底是什么?边界划在哪?为什么不能并入传输层?
顾客告诉服务员想吃什么,服务员转给厨房;你不用直接找厨师
应用层协议的核心要素
你已经知道应用层是进程间通信的规则集合。但一个具体的应用协议,比如 HTTP、DNS、gRPC,到底由哪些要素决定?它们表面千差万别,骨架却是同一套。
条款=协议定义、文档结构=消息格式、快递vs挂号信=传输选择
C/S 与 P2P 架构对比
两者都能支撑多用户通信,但角色分配与可扩展性截然不同,常被初学者混淆。
- 一台中心服务器,多个客户端向它请求
- 服务器压力大,扩展靠升级中心节点
- 典型:Web 网站、电子邮件、网游大厅
- 客户端间通信须经服务器中转
- 无中心节点,每个节点既请求也服务
- 节点越多总带宽越高,扩展性极佳
- 典型:BT 下载、Skype 早期、区块链
- 节点间直接交换数据,无需中转
端口号:服务的门牌号
服务器常常同时跑着 Web、数据库、邮件等多个服务。数据包到达主机后,操作系统怎么知道该交给谁?答案就是端口号——它就是每项服务在主机上的门牌号。
IP 找到主机(大楼),端口定位到具体服务(房间)
应用层在分层体系中的位置
从上往下看一次 HTTP 请求,每过一层就给自己包一层头送下去。
Socket 编程概述
用微信发消息、浏览器开网页——这些动作背后,程序到底怎么'开口说话、竖起耳朵'?中间需要一个编程接口——Socket(套接字)。
插座一头接电器(应用),一头接电网(网络),电器只管插上取电,不用管电怎么发电、变压、传输
域名系统 DNS
看清 DNS 完整查询链路,掌握递归与迭代查询、缓存策略与安全扩展
DNS 的核心作用
你想访问 baidu.com,但电脑只认 220.181.38.x 这种数字 IP。这中间怎么搭桥?DNS 的核心作用就藏在它的四个机制里。
你报人名(域名),查号台查档告诉你号码(IP);查不到时总台转给专业分台(分层查询)
域名空间的层次结构
从根域向下生长:每个节点是上一级的子域,叶节点拼出完整域名 FQDN。
域名分类:根、顶级、二级
域名空间是个倒挂的树,根在最顶端,往下一层层分叉。这页我们聚焦这棵树上最重要的三层:根、顶级、二级,看它们各管什么、谁来管。
都从大范围缩到小范围;只是域名反着写,从右往左
递归查询 vs 迭代查询
客户端只发一次请求,背后却跨过多个服务器——这两种查询分别在哪个层级、以什么方式工作?
- 发起方:客户端 → 本地 DNS 服务器
- 责任归属:被问者负责查到最终结果
- 返回内容:要么完整答案,要么报错
- 客户端负担:轻,只发一次就等结果
- 发起方:本地 DNS → 根/顶级域/权威域
- 责任归属:每级只回答「该问谁」
- 返回内容:返回下一级服务器的地址
- 查询方负担:重,需多次查询再自行汇总
域名解析的完整流程
沿箭头方向看消息流动,分两段:上半是递归查询,下半是迭代查询。
DNS 记录类型详解
上一步我们搞清楚了解析器怎么问到答案,但被问的服务器到底返回什么?那就是 DNS 记录,不同类型对应不同需求。
A 是电话号码、MX 是收件地址、CNAME 是转隔壁张工,不同需求查不同栏目
DNS 缓存机制
假设你每天访问 baidu.com 100 次,每次都从根问起,要等多久?
记过的号码直接拨,不查 114;TTL 就是你多久整理一次号码本
电子邮件系统
搞懂发送、传输、接收背后的协议与交互机制
邮件系统的组成架构
沿箭头看邮件旅程:从发件人→UA→发件服务器→SMTP 转发→收件服务器→邮箱→POP3/IMAP 拉取→收件人 UA。
SMTP:发送邮件的协议
上一页我们看到了邮件系统的"零件":MUA、MTA、MDA。那发件人的 MTA 怎么把邮件交到收件人的 MTA 手上?它们之间需要一套"对话规则"——这就是 SMTP。
你按顺序报发件人、收件人、交包裹、离开;柜台每步回应确认
POP3 与 IMAP 对比
收邮件到底下载到本地还是留在服务器?选 POP3 还是 IMAP,决定了你的多设备邮件体验。
- 下载到本地,可选删除服务器副本
- 状态不同步,以单设备为主
- 离线可访问全部已下载邮件
- 服务器负担轻,协议简单
- 邮件常驻服务器,本地仅缓存
- 标记、已读实时同步多端
- 离线只能看缓存的部分邮件
- 服务器负担重,协议功能丰富
MIME 扩展邮件能力
上一页讲了 SMTP 发送流程。那邮件里能直接放图片、PDF,这些是怎么做到的?早期 SMTP 只认 7-bit 纯英文文本,连中文和二进制都发不了。让邮件突破限制的,是 MIME。
面单=Content-Type 说明寄什么;泡沫膜=Base64 包裹易碎品;分格箱=Multipart 装多件
万维网 WWW
看清 DNS 解析、邮件收发与 Socket 编程的设计取舍与实现细节
WWW 的基本概念
邮件能发图片和附件,但收件人读到的还是一份孤立的文档。如果能让他点一下就跳到另一份文档呢?这就是万维网(WWW)要解决的核心问题——用超链接把分散在各地的文档织成一张可点击的网。
馆里的书是网页,书末的「参见第X页」是超链接,读者本人就是浏览器
URL 的组成结构
从左到右拆解 URL 四段:协议、主机、端口、路径,决定"怎么通信、找谁、哪个门、要啥资源"。
HTTP 协议工作原理
请求-响应模型的交互流程
HTTP 版本演进对比
HTTP/1.0 到 2.0 看似只改版本号,实则是从「一问一答」到「双向高速公路」的范式跃迁。
- 持久连接:单 TCP 连接可复用传多请求
- 并发靠多连接:队头堵塞仍未根除
- 文本协议:报文易读但解析开销大
- 头部明文:每次请求重复传输全字段
- 多路复用:单连接并行传输多个流
- 流独立:帧交错传输、无队头堵塞
- 二进制分帧:机器友好、解析高效
- HPACK 压缩:头部差量编码去冗余
HTTP 消息格式
请求行、首部字段与消息体的结构
其它应用层协议
拆解 FTP、DHCP 等协议的工作机制、报文格式与配置细节
FTP 文件传输协议
HTTP、DNS、邮件这些协议,一条连接来回说话就够。FTP 不一样——它同时开两条通道:一条下命令,一条搬文件。这种双通道设计在应用层独此一家。
服务员(控制)一直在前台听指令,跑菜员(数据)每次只在上菜时出现
FTP 主动模式 vs 被动模式
FTP 有两条连接:控制连接都一样,差别在数据连接谁来发起——这是最常被混淆的点。
- 服务器主动连客户端(PORT 命令告知端口)
- 数据连接:服务器 20 端口 → 客户端随机端口
- 防火墙障碍在客户端:拦的是入站连接
- 适用:客户端无防火墙,如早期企业内网
- 客户端主动连服务器(PASV 命令请服务器开端口)
- 数据连接:客户端随机端口 → 服务器随机端口
- 防火墙障碍在服务器:拦的是入站连接
- 适用:客户端在 NAT/防火墙后,是当今默认模式
DHCP 动态主机配置
上一节我们用 DNS 把域名翻译成 IP。但 IP 地址本身从哪来?给每台新设备手动配 IP 既繁琐又容易冲突——DHCP 让网络自动分发地址。
客人广播找前台、客房回应、客人选定、前台发房卡,房间有退房时间
应用层知识点回顾
- ✓应用层本质:进程间的端到端通信约定
- ✓DNS 三件套:层次命名、分布式解析、缓存
- ✓HTTP 演进主线是从文本到二进制的性能优化
- ✓邮件系统是协议分工协作的经典范本
- ✓C/S 与 P2P 是中心化与去中心化的取舍
课后思考
先凭直觉回答,再看参考答案。好的思考题没有标准答案,只有更深的追问。
参考答案可从查询时延、根服务器负载、命中率和失效传播四个角度切入。少一层意味着要么用户等更久,要么根/权威服务器扛不住全网查询。
参考答案分层本是为关注点分离。当协议栈自带多层能力时,层变成了能力组合。可以想想 gRPC、Kafka 协议栈是怎么做的。
参考答案关键在角色不对称:发送是任意客户端→固定服务器,接收是固定服务器→任意客户端。推/拉模型天然不同,强行统一只会增加复杂度。