Skip to content

应用层

约 2452 个字 预计阅读时间 12 分钟

cn_topic5_8.png

网络应用模型

应用层规定了应用进程在通信时所遵循的协议,通常有如下三个模型:

  • Client/Server 客户端/服务器方式
  • Browser/Server 浏览器/服务器方式
  • Peer to Peer P2P 对等方式

Client / Server

C/S 模型描述了应用进程之间服务和被服务的关系中,服务器是服务提供方,总是打开,被动接收服务请求;客户机是服务请求方,主动请求服务。服务器工作流程为:

  1. 服务器处于接收请求状态
  2. 客户机发出服务请求,并等待接收结果
  3. 服务器收到请求后,分析请求,进行必要处理,然后将结果发给客户机

客户机必须要知道服务器的 IP 地址,而服务器并不需要客户机的地址。C/S 可以是面向连接(TCP)的,也可以是无连接(UDP)的。如果是面向连接方式,则通信关系一旦建立,通信就是双向的,双方地位平等,都可发送和接收数据。

服务器进程工作方式
  • 循环方式 iterative mode 阻塞方式
    • 一次只运行一个服务进程,服务进程按照先后顺序对客户进程请求做出响应
    • 使用 UDP 的服务通常工作在循环模式,服务进程只使用一个服务套接字
  • 并发方式 concurrent mode 非阻塞方式
    • 可以同时运行多个服务进程,每个服务进程都对某个特定的客户进程做出响应
    • 使用 TCP 的服务通常工作在并发模式,主服务进程在熟知端口等待请求,收到后创建一个从属服务进程,使用另外一个临时套接字与该客户建立 TCP 连接

C/S 模式的主要特点有:

  • 网络中计算机地位不平等,服务器可通过对用户权限的限制来达到管理客户机的目的,网络管理集中
  • 客户机相互之间不直接通信
  • 可拓展性不佳,受硬件和带宽限制,服务器支持的客户机数量有限

Web, FTP, DNS, 远程登陆, 电子邮件等应用都使用 C/S 模型

Browser / Server

B/S 方式可以看作是 C/S 方式的特例,即客户软件为浏览器,用户界面完全通过 Web 浏览器实现,一部分事务逻辑在前端实现,但主要的事务逻辑在服务端实现。

cn_topic5_1.png

通常 WEB 服务器和数据库服务器部署在同一个计算机上

B/S 模式的主要特点有:

  • 界面统一,使用简单,用户只需要使用浏览器软件
  • 易于维护,系统维护和升级只需更新服务端的软件

Peer to Peer

C/S 模型中,服务器性能的好坏决定了整个系统的性能,当大量用户请求服务时,服务器必然成为系统的瓶颈。

P2P 方式指两个进程在通信时不区分服务的请求方和服务的提供方,每个节点都具有同时下载、上传的功能。

可以看作是,P2P 是每个进程既是客户也是服务器的 C/S 模式

与 C/S 模型相比,P2P 模型的优点主要有:

  • 减轻了服务器的计算压力,任务可以分配到各个节点上
  • 多个客户机之间可直接共享文档
  • 可扩展性好,不像传统服务器一样有响应和带宽的限制
  • 网络健壮性强,单个节点的失效不会影响其它部分的节点

P2P 模型中,用户获取服务的同时,还要给其它节点提供服务,因此占用较多内存,且会对硬盘造成损伤。

DNS 域名系统

域名与 IP 地址、主机均不具有一一对应关系

Domain Name Syste 向所有需要域名解析的应用提供服务,主要负责将可读性好的域名映射成 IP 地址。DNS 使用 C/S 模型,其协议运行在 UDP 上,使用 53 号端口。

Internet 使用层次树状结构的命名方法,域名是一个唯一的层次结构名称:

cn_topic5_2.png

Internet 的 DNS 是一个联机分布式数据库系统,域名到 IP 的解析是由若干个域名服务器完成的,映射分布在所有的域名服务器上。

一个域名服务器所负责的范围称为区 Zone ,区是域的子集,可以等于域,但不能大于域。各个单位可根据自己的具体情况把本单位域名划分为若干个域名管辖区,每个区都设置一个权威域名服务器。

cn_topic5_5.png

总体来说,域名服务器可分为权威域名服务器递归解析器两大类,而根据对应域的层次,权威域名服务器又进行以下划分:

  • 根域名服务器
  • 顶级域名服务器
  • 二级域名服务器
  • 三级域名服务器
    • 通常,三级及以下域名服务器统称为本地域名服务器
类型 中文名称 主要作用 典型例子 关键特点
Root DNS Server 根域名服务器 管理顶级域名服务器的地址 . 根服务器 本地域名服务器无法解析某个域名,首先向根域名服务器求助;
根域名服务器告诉本地域名服务器下一步该找哪个顶级域名服务器进行查询
TLD DNS Server 顶级域名服务器 管理某一顶级域(如 .com) .com.cn.edu 收到 DNS 查询请求时,可能直接回答结果,也可能回答下一步应该查找的域名服务器 IP
Authoritative DNS Server 权威域名服务器 /
二级域名服务器
提供最终的域名 → IP 映射 dns.qq.com 权限域名服务器总能将其管辖的主机名翻译为 IP 地址
Local DNS Server 本地域名服务器 /
递归服务器
代用户递归查询 DNS 运营商 DNS、8.8.8.8 查询请求总是先经过本地域名服务器;
本地域名服务器会有映射缓存

域名查询有递归查询(recursive query)迭代查询(iterative query)两种方式。其中主机向本地域名服务器的查询一般采用递归查询;本地域名服务器向根域名服务器的查询可以采用递归查询,但更多地采用迭代查询。

cn_topic5_3.png

cn_topic5_4.png

递归查询对根域名服务器造成的负载过大

为了提高查询效率,域名服务器广泛使用了高速缓存,将最近查询过的域名以及从何处获得域名映射信息的记录保存。DNS 服务器在一定时间(例如 48H)后会丢弃高速缓存中的内容,以保证高速缓存中的内容正确。

E-mail 电子邮件

电子邮件是一种异步通信方式,邮件发送到收件人的邮件服务器,收件人可以随时上网到该服务器中进行读取。

电子邮件系统体系结构由三个部分组成:

  • 用户代理 User Agent 用户与电子邮件系统的接口,充当邮件客户端
    • 例如 Outlook, Foxmail 等
  • 传输代理 Message Transfer Agent 发送和接收文件,充当邮件服务器
    • 邮件服务器以 C/S 模式工作,但它必须能够同时充当客户和服务器
  • 简单邮件传输协议 Simple Mail Transfer Protocol 邮件服务器之间传递邮件使用的协议

cn_topic5_6.png

邮件传输采用协议 SMTP,它使用端口 25,直接在发送端和接收端之间建立 TCP 连接。邮件内容是明文 7 位 ASCII 文本,而不是二进制。

邮件收信时使用 POP3 或 IMAP 协议将自己的邮件从邮件服务器中取回

由于 SMTP 只能传送 7 位 ASCII 码文本邮件,这样既不安全,也不能传送其它国家文字、可执行文件以及其它二进制对象。为此,我们使用 Multipurpose Internet Mail Extensions, MIME 对邮件的内容进行转换。

cn_topic5_7.png

MIME 提供了 5 种传送编码方式,其中最常用的是 Base64 编码方式。

编码方法 说明
7 bit 7 位 ASCII 编码,每行不能超过 1000 个字符(包括回车和换行)
缺省编码方法。
8 bit 8 位非 ASCII 编码,每行不能超过 1000 个字节(包括回车和换行)
Binary 8 位非 ASCII 编码,任意长度的字节串
Base64 将任意长度的字节串转换为用 7 位 ASCII 编码表示的字符串。可用于二进制和非文本数据的编码
Quoted-printable 将任意长度的字节串转换为 ASCII 编码表示的字符串。可用于二进制和非文本数据的编码

WWW 万维网

万维网的内核由三个标准构成:

  • 统一资源定位符 URL: 唯一标识整个万维网范围内的每个文档
    • URL 的一般格式为 <协议>://<主机>:<端口>/<路径>
  • 超文本传输协议 HTTP: 一个应用层协议,使用 TCP 作为可靠传输,使用端口 80
    • 面向事务,HTTP 本身是无连接的,即通信双方在交换 HTTP 报文前不需要建立连接
    • HTTP 是无状态的,即客户多次访问同一页面,服务器并不记得这个客户
    • HTTP/1.0 是非持续连接;HTTP/1.1 是持续连接
  • 超文本标记语言 HTML: 文档结构标记语言
Comments: