MINIBLOG

Blog Note Tags Links About
Home Search
Jun 13, 2026
miniyuan

应用层


应用层概述

网络应用体系结构

网络应用仅在端系统运行,核心网络设备不运行用户程序。

体系结构通信方式服务器特征客户端特征典型应用
C/S通过服务器间接通信固定 IP,长期在线,数据中心集群动态 IP,断续在线,互不直接通信Web、Email
P2P主机直接通信无固定服务器既是客户也是服务方,自扩展性迅雷、BT

自扩展性:文件共享中,对等方增加带来负载增加,但同时服务能力也增加。

进程通信与寻址

进程(process):主机上运行的应用程序。同一主机内用 IPC,不同主机间通过网络交换消息。

Socket:应用层与传输层之间的编程接口,由操作系统提供,负责消息收发。

进程寻址:仅用 IP 无法区分同一主机上的多个进程,故采用 IP 地址 + 端口号。

  • HTTP server:80
  • Mail server:25

应用层协议

定义内容:

  • 消息类别:request / response
  • 消息语法:字段划分
  • 消息语义:字段含义
  • 时序规则:何时发送请求/响应
协议类型定义方式互操作性示例
开放协议RFC允许互操作HTTP、SMTP
专用协议私有封闭Skype

传输服务需求与供给

需求维度说明典型应用
可靠性部分应用需可靠传输(文件、Web),部分可容忍丢失(音频)FTP、HTTP / 流媒体
实时性低延迟要求网络电话、交互游戏
吞吐量带宽敏感 vs 弹性多媒体 / 文件传输
安全性保密、完整、认证金融交易

TCP 提供的服务:

  • 可靠传输、流量控制、拥塞控制
  • 面向连接
  • 不提供:定时、最小数据率保证、安全性

UDP 提供的服务:

  • 不可靠数据传输
  • 不提供:可靠性、流量控制、拥塞控制、定时、数据率保证、安全性、连接建立

为何存在 UDP? 以 DNS 为例,若用 TCP 则开销大、延迟长、服务器负担重。

SSL/TLS:在应用层提供加密的 TCP 连接,保证数据完整性与端认证。应用层通过 SSL socket API 将明文交给 socket,经互联网加密传输。


Socket 编程

系统调用与套接字

套接字描述符表(每进程一个)由操作系统维护,记录:

  • 协议族(如 PF_INET)
  • 服务类型(如 SOCK_STREAM、SOCK_DGRAM)
  • 本地/远地 IP 地址与端口

TCP Socket 交互

TCP 面向连接,分三阶段:

1. 连接建立阶段:

调用方系统调用作用
服务器socket()创建套接字
服务器bind()绑定本地地址(熟知端口 + IP)
服务器listen()设为被动方式,等待请求
服务器accept()提取连接请求,返回新连接套接字
客户端socket()创建套接字
客户端connect()发起连接建立请求

并发服务器:主进程调用 accept() 后 fork() 从属进程处理连接,主进程继续监听。

2. 传送阶段:send() / recv()

3. 连接释放阶段:close()

服务器端: socket → bind → listen → accept → recv/send → close
客户端:   socket → connect → recv/send → close

UDP Socket 交互

UDP 无连接,发送前不握手。发送方显式附加目标 IP 与端口,接收方提取发送方地址。

服务器端: socket → bind → recvfrom/sendto → close
客户端:   socket → sendto/recvfrom → close

文件传送协议

FTP

FTP 基于 TCP,采用 C/S 方式,屏蔽异构系统差异。

服务器进程组成:

  • 主进程:打开熟知端口 21,等待请求;接收请求后启动从属进程。
  • 从属进程:处理单个请求,处理完毕即终止。

两个 TCP 连接:

连接端口作用生命周期
控制连接21传送命令与响应整个会话期间保持
数据连接20实际传输文件每次传输时建立,完毕后释放

使用两个端口号使协议简单,且传输中可利用控制连接发送终止命令。

TFTP

TFTP 基于 UDP,熟知端口 69,需自身实现差错改正。

主要特点:

  • 数据 PDU 固定 512 字节(最后一块可不足)
  • 块编号从 1 开始
  • 支持 ASCII 或二进制
  • 类似 停等协议:发完一块等待确认,超时重发

若文件长度恰为 512 字节整数倍,最后需发送一个仅含首部的空数据 PDU 作为结束标志。

NFS

NFS 允许远程打开文件并在特定位置读写,仅传输少量修改数据,而非整个文件。


远程终端协议

TELNET 与 NVT

TELNET 基于 TCP,实现本地终端到远地主机的透明登录。

网络虚拟终端 NVT:

  • 客户将本地击键转换为 NVT 格式 送交服务器
  • 服务器将 NVT 格式转换为远地系统格式
  • 返回数据时反向转换

NVT 作为统一中间格式,屏蔽异构系统的差异。


超文本传输协议与万维网

URL

统一资源定位符 URL 格式:

<<协议>://<<主机>:<<端口>/<路径>

使用 HTTP 的 URL:

http://<<主机>:<<端口>/<路径>

HTTP

工作过程:

  1. 服务器进程持续监听 TCP 端口 80
  2. 浏览器建立 TCP 连接后发送请求
  3. 服务器返回响应页面
  4. 释放 TCP 连接

主要特点:

  • 基于 TCP,本身 无连接(交换完报文即释放)
  • HTTP 1.0 无状态(stateless)
  • HTTP 1.1 使用 持续连接(persistent connection)

请求一个文档的时间:

Ttotal=2⋅RTT+TtransT_{total} = 2 \cdot \text{RTT} + T_{trans}Ttotal​=2⋅RTT+Ttrans​

一个 RTT 用于建立 TCP 连接,一个 RTT 用于请求与响应,TtransT_{trans}Ttrans​ 为传输文档时间。

持续连接的两种方式:

方式机制优点缺点
非流水线收到前一个响应后才能发下一个请求省去一个 RTT服务器空闲,资源浪费
流水线未收到响应即可连续发送请求所有对象仅需约一个 RTT,效率高需服务器支持连续响应

代理服务器(Web Cache):

  • 代表浏览器发出 HTTP 请求
  • 缓存近期请求与响应
  • 命中时直接返回本地缓存,减少访问互联网时延

HTTP 报文结构:

请求报文:

┌─────────────────────────────────────────┐
│  方法    空格    URL    空格    版本      │  ← 请求行
│  首部字段名 : 值                          │  ← 首部行
│  ...                                    │
│  [实体主体]                              │
└─────────────────────────────────────────┘

响应报文:

┌─────────────────────────────────────────┐
│  版本    空格   状态码   空格   短语       │  ← 状态行
│  首部字段名 : 值                          │
│  ...                                    │
│  [实体主体]                              │
└─────────────────────────────────────────┘

状态码分类:

类别含义示例
1xx通知信息请求收到,正在处理
2xx成功接受、知道
3xx重定向需进一步行动
4xx客户差错语法错误、无法完成
5xx服务器差错服务器失效

Cookie:

  • 服务器为用户生成唯一识别码
  • 在 HTTP 服务器与客户之间传递状态信息
  • 用于跟踪用户在该网站的活动

万维网文档技术

技术作用说明
HTML超文本标记语言定义页面结构与超链,浏览器解释标签并排版
XML可扩展标记语言传输数据而非显示数据
XHTML可扩展超文本标记语言更严格的 HTML,作为 XML 应用
CSS层叠样式表定义 HTML 文档布局与格式

动态文档 vs 静态文档 vs 活动文档:

类型内容生成位置特点技术
静态文档服务器预先存放内容不变普通 HTML
动态文档服务器端运行时创建由应用程序根据请求生成CGI
活动文档客户端运行服务器返回程序副本,由浏览器执行Java Applet

CGI(通用网关接口):

  • 定义动态文档创建、输入数据提供、输出结果使用的标准
  • CGI 程序(脚本)由解释程序执行,非直接编译运行

Java 技术:

  • 源程序编译为与机器无关的 字节码(bytecode)
  • 由浏览器中的 JVM 解释执行
  • 保证活动文档跨平台一致性

信息检索与社交应用

类型机制代表
全文检索爬虫采集+索引数据库查询Google、百度
分类目录人工审核编辑关键词与描述雅虎、新浪
垂直搜索特定领域/人群/需求行业搜索引擎

电子邮件

体系结构

电子邮件系统三大构件:

构件功能协议
用户代理 UA撰写、显示、处理、通信(客户端软件)—
邮件服务器发送/接收邮件,报告传送状态SMTP / POP3 / IMAP
协议发送与读取规则SMTP(推)、POP3/IMAP(拉)

邮件不会在互联网中的某个中间邮件服务器落地。

电子邮件地址格式:

收件人邮箱名@邮箱所在主机的域名\text{收件人邮箱名}@\text{邮箱所在主机的域名}收件人邮箱名@邮箱所在主机的域名

SMTP

  • 基于 TCP,熟知端口 25
  • 客户-服务器方式,命令-响应交互
  • 文本协议(ASCII 码)

通信三阶段:

  1. 连接建立:发送方 SMTP 客户与接收方 SMTP 服务器建立 TCP 连接,不使用中间服务器
  2. 邮件传送:信封 + 首部 + 主体
  3. 连接释放:邮件发送完毕后释放 TCP 连接

邮件内容首部字段:

  • To::收件人地址
  • Subject::主题
  • Cc::抄送
  • From / Date:发信人地址与日期
  • Reply-To:回信地址

邮件读取协议

特性POP3IMAP
连接方式基于 TCP基于 TCP
操作模式离线联机
下载策略下载全部邮件先下载首部,支持部分读取
文件夹管理仅在客户端客户端与服务器同步
邮件搜索不支持支持
联网需求读取后可离线查阅邮件必须联网

MIME

SMTP 局限:限于 7 位 ASCII,不能传送二进制/可执行文件,拒绝过长邮件。

MIME 不取代 SMTP,而是扩展邮件主体结构,定义非 ASCII 码传送编码规则。

新增 5 个首部字段:

  • MIME-Version
  • Content-Description
  • Content-Id
  • Content-Transfer-Encoding
  • Content-Type

内容传送编码:

编码说明适用场景
7bit7 位 ASCII,每行 ≤1000 字符缺省
8bit8 位非 ASCII,每行 ≤1000 字节短非 ASCII 文本
Binary任意长度字节串原始二进制
Base643 字节 → 4 字节 ASCII,开销 25%任意二进制/非文本
Quoted-printable非 ASCII 字节转为 =XX 形式,开销 200%少量非 ASCII 数据

MIME Content-Type(类型/子类型):

类型子类型举例说明
textplain, html, xml文本
imagegif, jpeg静止图像
audiobasic, mpeg音频
videompeg, mp4视频
applicationoctet-stream, pdf, zip应用程序数据
messagehttp, rfc822封装报文
multipartmixed, alternative多部分组合

基于万维网的电子邮件

  • 用户代理通过 HTTP 与邮件服务器交互
  • 邮件服务器之间仍使用 SMTP
  • 无需本地安装专用邮件客户端

简单网络管理协议

网络管理模型

五大功能:

  • 故障管理、配置管理、计费管理、性能管理、安全管理

主要构件:

构件作用运行程序
管理站(NOC)网络管理核心管理程序(SNMP 客户)
被管设备网络元素/网元代理程序(SNMP 服务器)
委托代理协议转换与过滤管理非 SNMP 设备

SNMP 体系结构

SNMP 由三部分组成:

组成部分作用
SNMP定义管理站与代理间交换的分组格式(变量名及其状态值)
SMI定义命名对象、对象类型、编码规则,确保语法语义无二义性
MIB在被管实体中创建命名对象并规定类型,管理程序通过 MIB 信息管理网络

SMI 与 ASN.1

SMI 使用 ASN.1(抽象语法记法 1)定义所有 MIB 变量。

数据类型:

分类类型含义
简单类型INTEGER任意长度整数
BIT STRING二进制串
OCTET STRING字节串
NULL空值
OBJECT IDENTIFIER对象标识符
结构化类型SEQUENCE多类型有序组合
SEQUENCE OF同类型有序组合
CHOICE多选一
ANY任意类型

BER(基本编码规则):采用 TLV 方法编码

┌─────┬─────┬─────┐
│  T  │  L  │  V  │
└─────┴─────┴─────┘
  • T(标记):定义数据类型
  • L(长度):定义 V 字段长度(单字节或多字节)
  • V(值):定义数据值,可嵌套其他 TLV

MIB

MIB 仅包含 SNMP 可管理的对象。节点 mib-2 包含的信息类别:

类别标号信息
system(1)主机或路由器操作系统
interfaces(2)网络接口
ip(4)IP 软件
icmp(5)ICMP 软件
tcp(6)TCP 软件
udp(7)UDP 软件

SNMP 操作与报文

两种基本功能:

  • 读(get):检测被管对象状况
  • 写(set):改变被管对象状况

探询(polling):管理进程定时向被管设备发送探询信息。

  • 优点:系统简单,限制管理通信量
  • 缺点:不够灵活,管理设备数受限,开销大

陷阱(trap):被管对象代理检测到事件达到门限值时,主动向管理进程报告。

  • 优点:仅在严重事件时发送,信息简单、字节少

传输层:使用无连接的 UDP

  • 代理端使用熟知端口 161 接收 get/set 报文
  • 管理端使用熟知端口 162 接收 trap 报文

SNMPv1 PDU 类型:

PDU 编号名称用途
A0GetRequest查询一个或一组变量值
A1GetNextRequest读取 MIB 树上下一个变量
A2Response代理或管理者发送响应
A3SetRequest设置一个或多个变量值
A5GetBulkRequest读取大数据块
A7SNMPv2Trap报告异常事件

P2P 应用

目录服务演进

代际代表目录机制缺点
第一代Napster集中式目录服务器,文件传输分散可靠性差,性能瓶颈
第二代Gnutella全分布式,洪泛法查询查询流量大,定位准确性受限
第三代BitTorrent / DHT分布式散列表,结构化覆盖网络—

BitTorrent

  • 所有对等方集合称为 洪流(torrent)
  • 数据单元为固定长度的 文件块(chunk)
  • 追踪器(tracker):基础设施结点,提供对等方列表

数据策略:

  • 最稀有优先(rarest first):优先请求在相邻对等方中副本最少的文件块
  • 一报还一报(tit-for-tat):优先向当前以最高数据率向自己传送文件块的相邻对等方发送数据

P2P 文件分发时间下界:

设文件长度为 FFF bit,主机数 NNN,服务器上传速率 usu_sus​,各主机上传/下载速率 uiu_iui​ / did_idi​,uT=∑uiu_T = \sum u_iuT​=∑ui​,dmin⁡=min⁡did_{\min} = \min d_idmin​=mindi​。

C/S 方式:

Tcs≥max⁡(NFus,  Fdmin⁡)T_{cs} \ge \max\left( \frac{NF}{u_s},\; \frac{F}{d_{\min}} \right)Tcs​≥max(us​NF​,dmin​F​)

P2P 方式:

Tp2p≥max⁡(Fus,  Fdmin⁡,  NFuT)T_{p2p} \ge \max\left( \frac{F}{u_s},\; \frac{F}{d_{\min}},\; \frac{NF}{u_T} \right)Tp2p​≥max(us​F​,dmin​F​,uT​NF​)

当 NNN 很大时,P2P 方式上限趋于 F/usF/u_sF/us​ 或 NF/uTNF/u_TNF/uT​,而 C/S 随 NNN 线性增长。

分布式散列表 DHT

  • 利用散列函数将资源名 KKK 映射为 资源名标识符 KID,结点 IP 地址 NNN 映射为 结点标识符 NID
  • 每个结点仅维护部分目录,任何结点可发起查询

Chord 环:

  • 结点按标识符数值从小到大沿顺时针排列成环形覆盖网络
  • 每个资源由 Chord 环上与其标识符值最接近的下一个结点提供服务

指针表(finger table)加速:

  • 对于结点 NNN,第 iii 行计算 successor(N+2i−1)\text{successor}(N + 2^{i-1})successor(N+2i−1)
  • 查询时,在路由表中选择位于目标范围内的最大后继结点转发,将 O(N)O(N)O(N) 的线性查找降为 O(log⁡N)O(\log N)O(logN)
目录
  • 应用层概述
    • 网络应用体系结构
    • 进程通信与寻址
    • 应用层协议
    • 传输服务需求与供给
  • Socket 编程
    • 系统调用与套接字
    • TCP Socket 交互
    • UDP Socket 交互
  • 文件传送协议
    • FTP
    • TFTP
    • NFS
  • 远程终端协议
    • TELNET 与 NVT
  • 超文本传输协议与万维网
    • URL
    • HTTP
    • 万维网文档技术
    • 信息检索与社交应用
  • 电子邮件
    • 体系结构
    • SMTP
    • 邮件读取协议
    • MIME
    • 基于万维网的电子邮件
  • 简单网络管理协议
    • 网络管理模型
    • SNMP 体系结构
    • SMI 与 ASN.1
    • MIB
    • SNMP 操作与报文
  • P2P 应用
    • 目录服务演进
    • BitTorrent
    • 分布式散列表 DHT
© 2026 miniyuan. All rights reserved.
Go to miniyuan's GitHub repo