☰
第6章 应用层
2026/10/15 10:05:25 网站建设 项目流程

一、问题描述

作为网络设计者,在设计应用层时面临以下核心问题:

子问题1:如何把人类可读的主机名转换为IP地址?

用户习惯使用域名(如 www.myschool.edu),而网络通信必须使用IP地址。需要一个分布式的命名系统来完成域名到IP地址的解析。

子问题2:如何在全球范围内定位和访问分布式的海量文档?

互联网上存储着海量文档,分布在世界各地的服务器上。需要解决:

  • 如何唯一标识每一个文档?
  • 用什么协议实现文档的请求和传送?
  • 如何让不同作者创作的文档在各种主机上正确显示?
  • 如何让用户方便地找到所需信息?

子问题3:如何实现电子邮件的发送与读取?

电子邮件需要解决:

  • 发件人如何把邮件发送到邮件服务器?
  • 邮件服务器之间如何转发邮件?
  • 收件人如何从邮件服务器读取邮件?
  • 如何传送非ASCII码(中文、图片、音频等)?

子问题4:如何在互联网上传输多媒体内容?

多媒体(音频、视频)数据量大,且对时延、抖动敏感。需要解决:

  • 实时多媒体(视频直播、视频会议)如何传输?
  • 非实时多媒体(视频点播)如何传输?
  • 多媒体直播如何兼顾时延和可靠性?

子问题5:如何管理复杂的计算机网络?

网络设备类型多样、厂家各异、状态变化频繁。需要一种机制来监视网络运行状态、处理网络异常。

子问题6:应用程序如何跨越网络进行通信?

标准化的应用层协议不能满足所有需求,用户需要开发特定的网络应用。应用程序如何调用操作系统提供的网络服务?

子问题7:如何利用普通用户的计算和带宽资源?

传统客户-服务器模式下,服务器带宽成为瓶颈。能否让用户之间直接共享资源,提高分发效率?


二、方案说明

子问题1的解决:域名系统 DNS

方案:采用层次树状结构的分布式命名系统。

域名结构:

  • 层次树状结构,由标签序列组成,各标签之间用点隔开;
  • 每个标签不超过63个字符,完整域名不超过255个字符;
  • 不区分大小写;
  • 例如:mail.cctv.com(三级域名.二级域名.顶级域名)。

顶级域名分类:

  • 国家顶级域名ccTLD(如cn、uk、jp);
  • 通用顶级域名gTLD(如com、net、org、edu、gov);
  • 基础结构域名(arpa,用于反向域名解析);
  • 新通用顶级域名(任何公司、机构都有权申请)。

域名服务器:

  • 根域名服务器:最高层次,共13组,采用任播技术,全球有1900多个镜像;
  • 顶级域名服务器:管理该顶级域名下注册的所有二级域名;
  • 权威域名服务器:保存所负责区中全部主机的域名到IP地址的映射;
  • 本地域名服务器:用户进行域名解析的“第一站”,通常由ISP提供。

域名解析过程:

  • 递归查询:主机向本地域名服务器查询时使用;
  • 迭代查询:本地域名服务器向根域名服务器等查询时使用;
  • 高速缓存:存放最近查询过的域名及映射信息,提高查询效率。

DNS资源记录:

  • A记录(TYPE=1):域名→IPv4地址;
  • AAAA记录(TYPE=28):域名→IPv6地址;
  • NS记录(TYPE=2):指明权威域名服务器;
  • MX记录(TYPE=15):查找邮件服务器。

DNS使用UDP通信,端口53。


子问题2的解决:万维网 WWW

方案:URL + HTTP + HTML + 搜索引擎。

(1)统一资源定位符URL

  • 格式:<协议>://<主机名>:<端口>/<路径>;
  • 协议和主机名不区分大小写,路径有时区分大小写;
  • HTTP默认端口80,可省略;
  • 例如:http://www.tsinghua.edu.cn/publish/newthu/index.html。

(2)超文本传送协议HTTP

  • 运行在TCP之上,保证可靠传输;
  • HTTP本身是无连接的、无状态的;
  • 主要特点:面向文本,每个字段都是ASCII码串。

HTTP版本演进:

  • HTTP/1.0:非持续连接,每请求一个文档需要2倍RTT开销;
  • HTTP/1.1:持续连接,支持非流水线和流水线方式;
    • 非流水线:收到前一个响应后才能发下一个请求,存在空闲;
    • 流水线:收到响应前就能发新请求,提高下载效率;
    • 问题:队头阻塞(Head-of-Line blocking)。
  • HTTP/2:二进制帧、多路复用、HPACK首部压缩、服务器推送;
    • 消除应用层队头阻塞,显著提升页面加载速度。
  • HTTP/3:基于QUIC(UDP),内置TLS加密,0-RTT/1-RTT连接。

HTTP报文结构:

  • 请求报文:请求行(方法、URL、版本)+ 首部 + 报文主体;
  • 响应报文:状态行(版本、状态码、短语)+ 首部 + 报文主体;
  • 常用方法:GET、HEAD、POST、PUT、DELETE等;
  • 状态码:1xx通知、2xx成功、3xx重定向、4xx客户差错、5xx服务器差错。

Cookie:用于跟踪HTTP服务器和客户之间传递的状态信息。

代理服务器:代表浏览器发出HTTP请求,减少访问互联网服务器的时延。

(3)超文本标记语言HTML

  • 定义排版命令(标签),构成HTML文档;
  • 文档后缀:.html或.htm;
  • 标签示例:<HTML>、<HEAD>、<TITLE>、<BODY>、<H1>、<P>、<img>、<a>;
  • CSS负责页面布局和美化视觉效果。

(4)万维网演进

  • Web 1.0:静态万维网,内容只读,单向传播;
  • Web 2.0:动态内容,用户参与“读写网络”,高交互性;
  • Web 3.0:去中心化,区块链技术,用户主导。

(5)搜索引擎:帮助用户找到所需信息。


子问题3的解决:电子邮件

方案:SMTP + POP3/IMAP + MIME。

电子邮件系统组成:

  • 用户代理UA:撰写、显示、处理、通信;
  • 邮件服务器:发送和接收邮件,按客户服务器方式工作;
  • 协议:SMTP用于发送,POP3/IMAP用于读取。

(1)简单邮件传送协议SMTP

  • 基于TCP,端口25;
  • 通信三阶段:连接建立、邮件传送、连接释放;
  • 命令-响应方式交互;
  • 基于文本(ASCII码)的协议。

(2)邮件信息格式

  • 信封:MAIL FROM、RCPT TO;
  • 内容:首部(From、To、Date、Subject、Cc)+ 空行 + 主体。

(3)邮件读取协议

  • POP3:端口110,支持“下载并删除”和“下载并保存”模式;
  • IMAP:联机协议,可在服务器上创建文件夹、搜索邮件、部分读取。

(4)基于万维网的电子邮件

  • 发送、接收使用HTTP协议;
  • 邮件服务器之间传送使用SMTP;
  • 使用HTTP POST提交邮件,HTTP GET读取邮件。

(5)通用互联网邮件扩充MIME

  • 不取代SMTP,继续使用原邮件格式;
  • 增加5个新首部:MIME-Version、Content-Description、Content-Id、Content-Transfer-Encoding、Content-Type;
  • 内容传送编码:7bit、8bit、Binary、Base64、Quoted-printable;
  • 内容类型:text、image、audio、video、model、application、message、multipart。

子问题4的解决:多媒体内容传输

方案:RTP/RTCP + RTSP + SIP + HLS/DASH + RTMP/SRT/WebRTC。

(1)多媒体特点

  • 视频数据率由分辨率、帧率、色彩深度决定;
  • 4K 30fps 24位色彩:数据率约6 Gbit/s;
  • 必须使用压缩技术:无损压缩和有损压缩;
  • 视频压缩标准:H.264/MPEG-4 AVC、H.265/HEVC、H.266/VVC。

(2)实时多媒体 vs 非实时多媒体

  • 实时多媒体:内容产生和播放同步,如视频直播、视频会议;
    • 同步容许误差:20~200ms;
    • 丢失容忍(loss tolerant)。
  • 非实时多媒体:视频点播VoD、音乐点播AoD;
    • 流媒体:边下载、边播放;
    • 抖动(jitter):相邻分组到达时间间隔的变化量;
    • 播放缓冲区:预先存放一定数量的帧,保证恒定帧率播放。

(3)传统多媒体传输协议

  • RTP:实时传输协议,提供端到端传输,不保证服务质量;
    • 首部字段:有效载荷类型、序号、时间戳、同步源标识符SSRC;
    • 装入UDP用户数据报后向下递交IP层。
  • RTCP:RTP控制协议,监视服务质量与反馈、媒体间同步、多播组中成员的标志;
    • 分组类型:发送方报告SR、接收方报告RR、源点描述SDES、特定应用APP、结束BYE。
  • RTSP:实时流式协议,应用层多媒体播放控制协议;
    • 控制命令:播放、暂停、快进、快退、结束;
    • 可使用TCP或UDP传输,多使用TCP。

(4)交互式多媒体传输

  • SIP:会话发起协议,建立、管理和终止多媒体会话;
    • 用户代理:用户代理客户、用户代理服务器;
    • SIP服务器:代理服务器、注册服务器、位置服务器、重定向服务器;
    • SIP地址:sip:用户名@主机域名;
    • 核心方法:INVITE、ACK、BYE、OPTIONS、CANCEL、REGISTER;
    • 响应状态码:1xx~6xx。
  • SDP:会话描述协议,给SIP提供多媒体会话的详细描述。
  • WebRTC:网页实时通信协议,支持浏览器无插件实时音视频通信;
    • 利用UDP传输,支持加密,低延迟,自动调整视频质量。

(5)非实时多媒体传输

  • HLS:HTTP流式直播,苹果公司推出;
  • DASH:基于HTTP的动态自适应流式传输,ISO/IEC国际标准;
    • 视频内容编码为多个不同码率版本,分割成小数据片段(2~10秒);
    • 清单文件MPD描述可用媒体内容、码率版本、片段URL;
    • 客户端根据网络条件动态选择合适码率的视频片段。

(6)多媒体直播协议

  • RTMP:实时消息传输协议,基于TCP,低时延,适合实时音视频直播;
  • SRT:安全可靠运输协议,基于UDP,支持重传、加密、自适应流控制;
  • HLS/DASH:适合大规模直播,稳定性好;
  • WebRTC:适合互动性直播,时延小。

子问题5的解决:简单网络管理协议SNMP

方案:管理站 + 代理 + SMI + MIB + SNMP协议。

网络管理模型:

  • 管理站:运行管理程序(SNMP客户程序),网络管理员直接操作;
  • 被管设备:运行代理程序(SNMP服务器程序),在被管设备上采取本地行动;
  • 网管协议:管理程序和代理程序之间通信的规则。

SNMP网络管理组成:

  • SMI:管理信息结构,定义命名规则、数据类型和编码方式;
    • 所有被管对象必须在对象命名树上;
    • 数据类型:简单类型(INTEGER、OCTET STRING、OBJECT IDENTIFIER等)和结构化类型(sequence、sequence of);
    • 基本编码规则BER:TLV(标记T、长度L、值V)编码。
  • MIB:管理信息库,被管对象的集合,按SMI规则定义;
    • 以MIB模块为基本单元,每个模块具有唯一身份标识;
    • 例如:UDP-MIB模块(RFC 4113)。
  • SNMP:提供实际的网络管理通信机制;
    • 操作:Get(读)、Set(写);
    • 探询操作:管理进程定时向被管理设备周期性地发送探询信息;
    • 陷阱(trap):代理检测到事件发生时,主动向管理进程报告;
    • 使用无连接的UDP,端口161(代理)、162(管理程序)。

SNMP PDU类型:

  • GetRequest、GetNextRequest、Response、SetRequest、GetBulkRequest、InformRequest、SNMPv2Trap、Report。

子问题6的解决:应用进程跨越网络的通信

方案:系统调用 + 应用编程接口API + 套接字。

系统调用:

  • 大多数操作系统使用系统调用的机制在应用程序和操作系统之间传递控制权;
  • 系统调用将控制权传递给操作系统。

应用编程接口API:

  • 系统调用接口又称为应用编程接口API;
  • API从程序设计角度定义了许多标准的系统调用函数;
  • 代表性API:Berkeley UNIX的套接字接口、Windows Socket、AT&T的TLI。

套接字:

  • 当应用进程需要使用网络通信时,发出系统调用请求操作系统创建套接字;
  • 操作系统用套接字描述符表示网络通信所需资源的总和;
  • 通信完毕后,通过关闭套接字的系统调用通知操作系统回收资源。

TCP服务常用系统调用:

  • 连接建立阶段:socket、bind、listen、accept、connect;
  • 数据传送阶段:send、recv;
  • 连接释放阶段:close。

并发方式工作的服务器:

  • 主服务器进程调用accept接受连接请求;
  • 创建从属服务器进程处理新连接;
  • 监听套接字继续接受其他连接请求。

子问题7的解决:P2P应用

方案:集中目录服务器 + 全分布式结构 + 超级节点 + DHT。

(1)具有集中目录服务器的P2P(Napster)

  • 所有共享文件的索引信息集中存放在目录服务器中;
  • 用户查找目录服务器,知道从何处下载文件;
  • 文件传输是分散的,文件定位是集中的;
  • 优点:实现简单,查询算法灵活;
  • 缺点:可靠性差,单点故障,扩展性不够。

(2)具有全分布式结构的P2P(Gnutella)

  • 不使用集中式目录服务器,使用洪泛法查询;
  • 有限范围的洪泛查询,查询报文至多转发7跳;
  • 优点:无单点故障,自组织性强;
  • 缺点:查询效率低,网络流量开销大,查询成功率无法保证。

(3)基于超级节点的层次化结构(KaZaA)

  • 节点分为普通节点和超级节点;
  • 普通节点将共享文件信息发布至所属超级节点;
  • 超级节点之间采用全分布式结构;
  • 优点:考虑节点异构性,提升稳定性和查询效率;
  • 缺点:缺乏激励机制,查询结果和时间无法保证。

(4)BitTorrent

  • 参与同一文件分发的所有对等方集合称为一个洪流(torrent);
  • 文件划分为固定长度的文件块(通常256KB);
  • 追踪器(tracker)维护对等方信息;
  • 对等方从追踪器获得对等方列表,建立TCP连接交换数据块;
  • 最稀有优先:首先请求副本最少的数据块;
  • 以最高数据率向A传送数据块的相邻对等方,A优先向其发送数据块。

(5)P2P文件分发分析

  • 客户-服务器方式:Tcs = max(NF/us, F/dmin);
  • P2P方式:Tp2p >= max(F/us, F/dmin, NF/uT);
  • P2P方式下,最少时间下限与N无关,可扩展性好。

(6)在P2P对等方中搜索对象

  • 非结构化查找:Napster(集中式)、Gnutella(洪泛式);
  • 结构化查找:分布式散列表DHT;
    • Chord算法:节点按标识符数值从小到大沿顺时针排列成环形覆盖网络;
    • 每个资源由Chord环上与其标识符值最接近的下一个节点提供服务;
    • 指针表加速查找;
    • 不足:只能精确匹配,适应节点动态变化能力低,丢失层次信息。

三、总结

作为网络设计者,应用层的设计围绕以下核心目标展开:

  1. 命名与解析:通过DNS层次树状结构和分布式域名服务器,实现域名到IP地址的高效解析;
  2. 文档定位与传送:通过URL唯一标识文档,HTTP实现文档请求和传送,HTML实现文档显示,搜索引擎帮助用户找到信息;
  3. 电子邮件:通过SMTP发送邮件,POP3/IMAP读取邮件,MIME扩展非ASCII码传送能力;
  4. 多媒体传输:通过RTP/RTCP实现实时传输,RTSP实现播放控制,SIP实现会话管理,HLS/DASH实现自适应流式传输,RTMP/SRT/WebRTC实现直播;
  5. 网络管理:通过SNMP实现管理站与代理之间的通信,SMI定义管理信息结构,MIB组织被管对象;
  6. 应用编程接口:通过系统调用和API,应用程序可以跨越网络进行通信,套接字是应用进程接入网络的端点;
  7. P2P应用:通过集中目录服务器、全分布式结构、超级节点、DHT等方案,利用普通用户的计算和带宽资源,提高文件分发效率。

应用层是计算机网络体系结构的最顶层,直接面向用户和应用程序。它精确定义了不同主机中多个应用进程之间的通信规则,包括报文类型、语法、语义以及发送和响应的规则。应用层协议的设计直接影响用户体验和网络效率,是互联网丰富多彩应用的基础。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询