第 6 章 应用层

6.1 网络应用模型

6.1.1 客户/服务器模型

  • 基本概念
    • 有一个总是打开的主机称为服务器
    • 服务于许多来自其他称为客户机的主机请求
  • 工作流程
      1. 服务器处于接收请求的状态
      1. 客户机发出服务请求,并等待接收结果
      1. 服务器收到请求后
      • 分析请求
      • 进行必要的处理
      • 得到结果并发送给客户机
  • 服务器特点
    • 运行专门提供服务的程序
    • 可以同时处理多个客户请求
      • 包括远程或本地客户
    • 不需要知道客户程序地址
  • 客户机特点
    • 必须知道服务器程序地址
  • 主要特征
    • 客户是服务请求方
    • 服务器是服务提供方
    • 举例
      • Web应用程序
        • Web服务器服务于浏览器请求
        • 处理流程
          • 接收客户机请求
          • 发送所请求对象响应
  • 常见应用
    • Web
    • 文件传输协议(FTP)
    • 远程登录
    • 电子邮件
  • 主要特点
      1. 网络中各计算机地位不平等
      • 服务器可管理客户机
        • 通过用户权限限制
      • 网络管理集中方便
        • 由少数服务器负责
      1. 客户机间不直接通信
      • 举例
        • Web应用中两个浏览器不直接通信
      1. 可扩展性不佳
      • 限制因素
        • 服务器硬件限制
        • 网络带宽限制
      • 结果
        • 服务器支持的客户机数量有限

6.1.2 P2P模型

  • 基本概念
    • 网络中的传输内容不再保存在中心服务器上
    • 每个节点同时具有下载、上传功能
    • 权利和义务大体对等
  • 特点
    • 无固定客户和服务器划分
    • 任意对等方(Peer)直接相互通信
    • 本质仍使用客户/服务器模型
      • 节点既作为客户访问资源
      • 又作为服务器提供资源
  • 优点
    • 减轻服务器计算压力
    • 消除对单个服务器的依赖
    • 任务分配到各个节点
    • 提高系统效率和资源利用率
    • 客户机间可直接共享文档
    • 可扩展性好
    • 网络健壮性强
  • 缺点
    • 占用较多内存
    • 影响整机速度
    • 对硬盘损伤较大
    • 占用大量网络流量(50%-90%)
    • 导致网络拥塞
    • ISP通常反对P2P应用

6.2 域名系统(DNS)

6.2.1 层次域名空间

  • 层次域名空间

    • 因特网采用层次树状结构的命名方法
    • 每个连接设备都有唯一的域名(Domain Name)
    • 域(Domain)是名字空间中的可管理划分
      • 可划分为子域
      • 形成多级域名结构(顶级域、二级域、三级域等)
    • 域名组成
      • 由标号序列组成
      • 标号之间用点(“.”)分隔
      • 示例:www.cskaoyan.com
        • com: 顶级域名
        • cskaoyan: 二级域名
        • www: 三级域名
  • 标号规则

    • 英文不区分大小写
    • 只能使用连字符(-),不能使用其他标点符号
    • 单个标号不超过63个字符
    • 完整域名最长不超过255个字符
    • 域名书写顺序
      • 最低级域名在最左边
      • 顶级域名在最右边
  • 顶级域名分类(TLD)

    • 国家(地区)顶级域名(nTLD)
      • .cn: 中国
      • .us: 美国
      • .uk: 英国
    • 通用顶级域名(gTLD)
      • .com: 公司
      • .net: 网络服务机构
      • .org: 非营利性组织
      • .edu: 教育机构
      • .gov: 政府部门
    • 基础结构域名
      • arpa: 用于反向域名解析(IP→域名)
  • 域名空间树状结构

      • 顶级域名
        • aero
        • com
        • net
        • org
        • edu
        • gov
        • cn
        • uk
      • 二级域名(示例)
        • cskaoyan
        • cctv
        • google
        • bj
        • edu
        • com
      • 三级域名(示例)
        • mail
        • www
        • hust
        • hit
      • 四级域名(示例)
        • mail
        • www
  • 域名管理

    • 顶级域名由ICANN管理
    • 国家顶级域名下的二级域名由各国自行管理
    • 子域可委托给其他组织管理

6.2.2 域名服务器

  • 定义
    • 域名到IP地址的解析由运行在域名服务器上的程序完成
    • 管辖范围称为区(小于或等于域)
    • 每个区设置权限域名服务器保存域名到IP地址的映射
    • 域名服务器功能
      • 进行域名到IP地址的解析
      • 具有连向其他域名服务器的信息
  • DNS服务器层次结构
    • 按层次方式组织
    • 映射分布在所有域名服务器上
    • 四种类型
      • 根域名服务器
        • 最高层次
        • 知道所有顶级域名服务器的域名和IP地址
        • 13个根域名服务器(实际是冗余服务器集群)
        • 功能
          • 管辖顶级域(如.com)
          • 通常不直接转换域名,而是指引查询方向
      • 顶级域名服务器
        • 管理在该顶级域名服务器注册的所有二级域名
        • 响应DNS查询请求
          • 可能给出最终结果
          • 可能指引下一步查询
      • 权限域名服务器(授权域名服务器)
        • 每台主机必须在此登记
        • 建议至少两台以提高可靠性
        • 功能
          • 总能将其管辖的主机名转换为IP地址
      • 本地域名服务器
        • 重要性
          • 对域名系统非常重要
        • 部署
          • ISP、大学或院系可拥有
        • 功能
          • 接收主机的DNS查询请求
          • 在Windows系统中配置为

6.2.3 域名解析过程

  • DNS协议的作用(2021)
  • 域名解析定义
    • 将域名转化为IP地址的过程
    • 客户端通过DNS客户端构造DNS请求报文,以UDP数据报方式发往本地域名服务器
  • 域名解析方式
    • 递归查询
      • 主机向本地域名服务器的查询方式
      • 本地域名服务器不知道被查询域名的IP地址时,以DNS客户身份向根域名服务器继续查询
    • 迭代查询
      • 本地域名服务器向其他域名服务器的查询方式
      • DNS的工作原理(2016、2020)
      • 服务器要么给出IP地址,要么告知下一步应查询的顶级域名服务器
  • 域名解析过程示例(y.abc.com)
    • 最多使用8个UDP报文(4查询+4回答)
    • 步骤:
      ①. 客户机向本地域名服务器发出DNS请求报文(递归查询)
      ②. 本地域名服务器查询本地缓存,若无记录则向根域名服务器发出解析请求(迭代查询)
      ③. 根域名服务器判断域名属于.com域,返回顶级域名服务器dns.com的IP地址
      ④. 本地域名服务器向dns.com发出解析请求(迭代查询)
      ⑤. dns.com判断域名属于abc.com域,返回权限域名服务器dns.abc.com的IP地址
      ⑥. 本地域名服务器向dns.abc.com发起解析请求(迭代查询)
      ⑦. dns.abc.com返回查询结果
      ⑧. 本地域名服务器保存结果到缓存并返回给客户机
  • DNS查询优化
    • 使用高速缓存
      • 缓存最近查询过的域名映射信息
      • 相同查询到达时可直接提供IP地址
      • 缓存信息会在一段时间后丢弃(映射非永久)
    • 主机端优化
      • 启动时从本地域名服务器下载全部数据库
      • 维护最近使用的域名高速缓存
      • 缓存中找不到时才使用域名服务器

6.3 文件传输协议(FTP)

6.3.1 FTP 的工作原理

  • 定义
    • 文件传输协议(File Transfer Protocol,FTP)
    • 因特网上使用最广泛的文件传输协议
    • 提供交互式访问
    • 允许指定文件类型与格式
    • 允许设置存取权限
    • 屏蔽计算机系统细节
    • 适合异构网络间文件传输
  • 功能
    • ①. 提供不同种类主机系统间的文件传输能力
    • ②. 以用户权限管理方式提供远程文件管理能力
    • ③. 以匿名FTP方式提供公用文件共享能力
  • 工作方式
    • 采用客户/服务器模式
    • 使用TCP可靠传输服务
    • 一个服务器进程可服务多个客户进程
  • 服务器组成
    • 主进程
      • 负责接收新请求
    • 从属进程
      • 负责处理单个请求
  • 工作步骤
    • ①. 打开熟知端口21(控制端口)
    • ②. 等待客户进程连接请求
    • ③. 启动从属进程处理请求
    • ④. 从属进程处理完毕后终止
    • ⑤. 主进程继续等待其他请求
    • 主进程与从属进程并发执行
  • 会话特性
    • 服务器必须保留用户状态信息
    • 必须关联用户账户与控制连接
    • 必须追踪用户远程目录当前位置

6.3.2 控制连接与数据连接

  • FTP使用两个并行的TCP连接
    • 控制连接(服务器端口号21)
    • 数据连接(服务器端口号20)
  • ①. 控制连接
    • 服务器监听21号端口
    • 传输控制信息
      • 连接请求
      • 传送请求等
    • 不用于传送文件
    • 在整个会话期间保持打开状态
  • ②. 数据连接
    • 服务器创建
    • 用于实际数据传输
    • 按需创建和关闭
    • 传输文件内容
    • 每次数据传输建立新的连接

6.4 电子邮件

6.4.1 电子邮件系统的组成结构

  • 电子邮件特点
    • 异步通信方式
    • 通信时不需要双方同时在场
    • 邮件存放在收件人邮箱中,可随时读取
  • 主要组成构件
    • 用户代理(User Agent)
      • 定义:用户与电子邮件系统的接口
      • 功能
        • 撰写
        • 显示
        • 邮件处理
      • 常见实例
        • Outlook
        • Foxmail
    • 邮件服务器
      • 功能
        • 发送和接收邮件
        • 报告邮件传送状态
      • 工作模式:客户/服务器模式
      • 特点:可同时充当客户和服务器
    • 电子邮件协议
      • 邮件发送协议
        • 用途
          • 用户代理→邮件服务器
          • 邮件服务器之间
        • 实例:SMTP
          • 通信方式:推(Push)
      • 邮件读取协议
        • 用途:用户代理从邮件服务器读取邮件
        • 实例:POP3
          • 通信方式:拉(Pull)
  • 电子邮件收发过程
    ①. 发件人撰写邮件
    ②. 用户代理通过SMTP发送邮件到发送端邮件服务器
    ③. 发送端邮件服务器将邮件放入缓存队列
    ④. SMTP客户与接收端SMTP服务器建立TCP连接并发送邮件
    ⑤. 接收端SMTP服务器将邮件放入收件人邮箱
    ⑥. 收件人通过POP3/IMAP协议取回邮件

6.4.2 电子邮件格式与MIME

  • ①. 电子邮件格式
    • 电子邮件分为信封和内容两大部分
      • 邮件内容分为首部和主体两部分
        • RFC 822规定了邮件的首部格式
        • 主体部分由用户自由撰写
    • 邮件内容的首部包含首部行
      • 每个首部行由关键字后跟冒号和值组成
        • 必需关键字:To
          • 填入一个或多个收件人的电子邮件地址
            • 格式:收件人邮箱名@邮箱所在主机的域名
        • 可选关键字:Subject
          • 邮件的主题
        • 必填关键字:From
          • 通常由邮件系统自动填入
    • 首部与主体之间用一个空行分割
  • ②. 多用途因特网邮件扩展 (MIME)
    • SMTP只能传送7位ASCII码文本邮件
      • 无法传送非英语国家文字
      • 无法传送可执行文件及其他二进制对象
    • MIME的作用
      • 未改动或取代SMTP
      • 发送端:将非ASCII码数据转换为ASCII码数据
      • 接收端:将ASCII码数据逆转换为非ASCII码数据
    • MIME主要包括三部分内容
      • 5个新的邮件首部字段
        • MIME版本
        • 内容描述
        • 内容标识
        • 传送编码
        • 内容类型
      • 定义了许多邮件内容的格式
        • 对多媒体电子邮件的表示方法进行标准化
      • 定义了传送编码
        • 可对任何内容格式进行转换
        • 不会被邮件系统改变

6.4.3 SMTP 和 POP3

  • 1.SMTP
    • 简单邮件传输协议 (Simple Mail Transfer Protocol,SMTP)
      • 提供可靠且有效的电子邮件传输的协议
      • 控制两个相互通信的SMTP进程交换信息
      • 采用客户/服务器模式
        • 发送邮件的SMTP进程是SMTP客户
        • 接收邮件的SMTP进程是SMTP服务器
      • 使用TCP连接,端口号为25
    • SMTP 通信的三个阶段
      • (1)连接建立
        • SMTP客户与接收方SMTP服务器建立TCP连接
        • SMTP服务器发出220 Service ready
        • SMTP客户发送HELO命令,附上发送方的主机名
        • TCP连接在发送方和接收方邮件服务器之间直接建立
      • (2)邮件传送
        • 从MAIL命令开始,后面有发件人的地址
        • 一个或多个RCPT命令,格式为RCPT TO:<收件人地址>
        • 客户端使用DATA命令开始传送邮件内容
        • .表示邮件内容的结束
      • (3)连接释放
        • SMTP客户发送QUIT命令
        • SMTP服务器返回221(服务关闭)
  • 2.POP3 和 IMAP
    • 邮局协议 (Post Office Protocol,POP)
      • 版本:POP3
      • 采用客户/服务器模式
      • 传输层使用TCP,端口号为110
      • 两种工作方式
        • 下载并保留
        • 下载并删除
    • 因特网报文存取协议(IMAP)
      • 比POP复杂
      • 提供创建文件夹、移动邮件、查询邮件等联机命令
      • IMAP服务器维护会话用户的状态信息
      • 允许用户代理只获取报文的某些部分
    • 基于万维网的电子邮件
      • 用户浏览器与邮件服务器之间使用HTTP
      • 不同邮件服务器之间传送邮件时使用SMTP

6.5 万维网(WwW)

6.5.1 WwW 的概念与组成结构

  • 万维网(WWW)定义
    • 分布式、联机式的信息存储空间
    • 资源由URL标识
    • 通过HTTP协议传输
    • 使用超链接实现站点间访问
  • 三个核心标准
    • 统一资源定位符(URL)
      • 功能:标识万维网文档
      • 格式:<协议>://<主机>:<端口>/<路径>
      • 特点:不区分大小写
    • 超文本传输协议(HTTP)
      • 应用层协议
      • 使用TCP连接
    • 超文本标记语言(HTML)
      • 文档结构标记语言
      • 描述页面信息和格式
  • 工作模式
    • 客户/服务器模式
      • 浏览器:客户程序
      • Web服务器:服务器程序
    • 工作流程
      ①. 浏览器(指定URL)与服务器建立连接
      ②. 服务器将URL转换为文件路径并返回信息
      ③. 通信完成关闭连接
  • 万维网与因特网关系
    • 构成因特网最主要部分
    • 还包括:电子邮件、Usenet、新闻组

6.5.2 超文本传输协议(HTTP)

  • 定义
    • 浏览器与服务器请求和传送文档的协议
    • 面向事务的应用层协议
  • HTTP操作过程
    • 域名解析
    • TCP连接建立(端口80)
    • HTTP请求
    • HTTP响应
    • TCP连接释放
    • 用户点击事件顺序示例
      • URL分析
      • DNS解析
      • TCP连接
      • HTTP请求
      • HTTP响应
      • TCP释放
      • 页面显示
  • HTTP特点
    • 使用TCP保证可靠传输
    • 无连接
    • 无状态
    • Cookie机制
      • 识别码生成
      • Set-cookie首部
      • Cookie首部
    • 连接方式
      • 非持续连接(HTTP/1.0)
        • 每个对象单独TCP连接
        • 2×RTT开销
      • 持续连接(HTTP/1.1)
        • 非流水线
        • 流水线
  • HTTP报文结构
    • 请求报文
      • 请求行(方法、URL、版本)
      • 首部行
      • 实体主体
    • 响应报文
      • 状态行(版本、状态码、短语)
      • 首部行
      • 实体主体
    • 常用方法
      • GET
      • HEAD
      • POST
      • PUT
      • DELETE
  • HTTP请求报文示例
    • 以太网帧结构
    • IP首部
    • TCP首部
    • HTTP请求内容解析