0%

计算机网络(二):应用层

应用层协议原理

网络应用程序体系结构

1、客户 - 服务器体系架构(client-server architecture)

  • 服务器主机总是打开,接收客户主机请求

  • 客户之间不相互通信

2、P2P 体系结构

  • 对数据中心的专用服务器仅有最小依赖

  • 标识:发起通信为客户,等待联系为服务器

  • 间断连接的主机间使用直接通信

    • 这样的一组主机称对等方
  • 自扩展性 self-scalability

    • 向对等方发送文件
    • 请求产生工作负载,但也为系统增加服务能力

进程通信

1、进程 process

  • def:运行在端系统的一个程序

  • 通信进程对:每对两个进程互相发送报文

  • 进程寻址的要求

    • 主机地址
    • 目的主机需指定接收进程的标识符

2、套接字 socket:向网络发送 / 接收报文的软件接口

3、应用程序编程接口 API

  • 建立网络应用程序的可编程接口

  • 运输层的控制

    • 选择运输层协议
    • 部分运输层参数

可供应用程序使用的运输服务

1、可靠数据传输:正确、完全地交付数据

2、吞吐量

  • 带宽敏感 / 弹性应用

3、定时保证

  • 交互式实时应用

4、安全性

因特网提供的运输服务

1、TCP 服务

  • 面向连接:流动前互换运输层控制信息,结束后拆除连接

  • 可靠数据传送:无差错、按适当顺序交付

  • 拥塞控制

  • 无加密机制

    • 改进:* 安全套接字层(Secure Socket Layer,SSL)

2、UDP 服务

  • 轻量级,仅提供最小服务

  • 不可靠数据传送:不保证到达、可乱序

  • 可选定数据的传输速率

  • 无加密机制

应用层协议

1、RFC(Request For Comments)文档:一系列以编号排定的文件

  • 位于公共域中

  • 收录几乎所有互联网标准

2、超文本传输协议 HTTP

3、简单邮件传输协议 SMTP

HyperText Transfer Protocol

1、超文本传输协议 HTTP

  • 定义报文的结构和客户、服务器进行报文交换的方式

  • 实现:一个客户程序和一个服务器程序(P65)

  • 支撑运输协议:TCP

  • 无状态协议 stateless protocol:不保存关于客户的任何信息

2、连接方式

  • 非持续连接 non-persistent connection

    • 请求 / 响应经一单独 TCP 连接发送
    • 为每个请求对象建立和维护一个全新连接
    • 三次握手:发送确认 RTT - 返回确认 RTT - 传输
      • 往返时间 Round-Trip Time,RTT
  • 持续连接(默认)

    • 请求 / 响应经相同的 TCP 连接发送
    • 带流水线(默认):对对象的请求可依次发出,不必等待未决请求

3、报文格式

请求报文(P68,CR 回车,LF 换行)

  • 组成:

    • 第一行称请求行 request line
      • 三个部分:方法字段 URL 字段 HTTP 字段
    • 后继行称首部行 header line
    • 实体体 entity body:POST 方法使用
  • 方法字段:GET POST HEAD PUT DELETE

    • GET:请求对象、提交表单(HTML 表单)
    • POST:提交表单
    • HEAD:响应请求,但不返回对象
      • * 试跟踪
    • PUT:常与 Web 发行工具共用,上传对象到指定 Web 服务器指定路径
    • DELETE:允许删除 Web 服务器上对象

响应报文(P69)

  • 组成

    • 状态行 status line
      • 三个部分:协议版本字段 状态码 相应状态信息
    • 首部行和实体体
  • 常见状态码:200 OK;301 请求对象已经永久转移;400/404;505 不支持的 HTTP 协议版本

4、Cookie

  • 组成

    • 响应报文中的一个 cookie 首部行
    • 请求报文中的一个 cookie 首部行
    • 用户端系统保留的一个 cookie 文件
    • 位于 Web 站点的一个后端数据库
  • 识别码 Set-cookie:用于标识一个用户

    • * 用户隐私侵害

5、Web 缓存

  • Web 缓存器 Web Cache / 代理服务器 proxy server

    • 配置后的浏览器请求被定向至代理服务器
    • 发送给用户服务器的是保存的一份副本
    • 从整体上大大降低因特网的流量
  • 内容分发网络 Content Distribution Network,CDN:使大量流量实现本地化

  • 条件 Get 方法:执行最新检查

    • If-Modified-Since = Last-Modified -> 304 Not Modified

因特网电子邮件

1、组成:用户代理(user agent)邮件服务器(mail server)简单邮件传输协议(SMTP)

2、支撑应用层服务:TCP

3、SMTP

  • 因特网电子邮件的核心

  • 仅能采用简单的 7 比特 ASCII 表示

  • 传送多谋体数据编码需先转码

  • 无存留:一般不使用中间邮件服务器

  • 使用持续连接

对比 HTTP
  • HTTP 不需要对多谋体数据编码转码

  • HTTP 是拉协议(pull protocol)而 SMTP 基本上是推协议(push protocol)

  • HTTP 封装对象,SMTP 将所有对象存放在一个报文中

4、邮件报文格式

  • 首部:From To (Subject,其他可选首部行)

  • 一个空白行

  • 报文体(ASCII 格式)

5、邮件访问协议

  • 第三版的邮局协议 Post Office Protocol - Version 3,POP3

    • 三个工作阶段
      • 特许(authorization):明文发送用户名和口令以鉴别用户
      • 事务处理:取回报文;标记 / 删除报文标记、获取邮件统计信息(可选)
      • 更新:在 quit 命令发出后结束会话
    • 下载方式:下载并删除(不同机器不可读) / 下载并保留(可多端查看)
    • 优点:会话中不包含状态信息,大大简化了服务的实现
  • 因特网邮件访问协议 Internet Mail Access Protocol,IMAP

    • 实现访问远程服务器文件夹
    • 维护用户状态信息
    • 允许用户代理获取报文的某些指定部分(灵活)
    • 用户 -> 邮件服务器:HTTP 邮件服务器 -> 邮件服务器:SMTP

DNS

提供服务

  • 核心:主机名 ->IP 名转换的目录服务

  • 提供主机别名(host aliasing):此时原名称称规范主机名(canonical hostname)

  • 邮件服务器别名

  • 负载分配(load distribution):每个回答循环响应,在冗余的 Web 服务器间分配负载

工作机理

1、实现

  • 一个分层的 DNS 服务器实现的分布式数据库

  • 使主机可查询数据库的应用层协议

2、支撑应用层服务:UDP(53 号端口)

3、分布式、层次数据库

  • 集中式的弊端

    • 单点故障
    • 通信容量(traffic volume)
    • 远距离的集中式数据库
    • 维护
  • 服务器类型(P87)

    • 根 DNS 服务器:提供 TLD 服务器的 IP 地址
    • 顶级域服务器 TLD:提供权威 DNS 服务器的 IP 地址
    • 权威 DNS 服务器:提供公共可访问的 DNS 记录
    • 本地 DNS 服务器
  • 查询方式:主机 -> 服务器递归查询,其余均为迭代查询

4、DNS 缓存

  • 将映射缓存在本地存储器中

  • 可绕过根服务器:存在缓存,立即返回 IP 地址

  • 一段时间丢弃信息(默认:两天)

DNS 记录和报文

1、资源记录 Resource Record,RR

  • 提供主机名到 IP 地址的映射

  • 格式:(Name,Value,Type,TTL)

    • TTL:记录的生存时间

2、Type 的不同类型

  • Type:A

    • Name:主机名
    • Value:主机名对应 IP 地址
  • Type:NS

    • Name:个域
    • Value:可提供主机 IP 地址的权威 DNS 服务器主机名
  • Type:CNAME

    • Name:别名为 Name 的主机名称
    • Value:该主机的规范主机名
  • Type:MX

    • Name:别名为 Name 的服务器主机名称
    • Value:该服务器主机的规范主机名

3、报文格式(P90)

  • 首部区域(12 字节):标识符 标志 问题数 回答 / 权威 / 附加 RR 数

  • 问题区域:名字 类型

  • 权威区域

  • 附加区域

4、插入记录:注册登记机构(registrar)验证域名唯一性,输入 DNS 数据库

*5、DNS 的健壮性

P2P 文件分发

1、def:成对间歇的主机(对等方)彼此直接通信

2、最小分发时间:

DP2P=max{Fus,Fdmin,NFus+r=1n}D_{P2P}=max\{\frac{F}{u_s},\frac{F}{d_{min}},\frac{NF}{u_s+{\sum_{r=1}^n}}\}

3、Bittorrent

  • 洪流 torrent:参与一个特定文件分发的所有对等方的集合

  • 块 chunk:典型(256kb)等长文件块

  • 加入过程:向追踪器注册 - 周期性通知仍在洪流中

  • 最稀缺优先 rarest first:优先请求那些邻居中副本数量最少的块,以均衡每个洪流的副本数量

  • 疏通 unchoked:一个时间间隔后重新计算最高速率并修改对等方集合,保证最高速率

  • * 分布式散列表 DHT:分布在多个对等方的简单数据库

视频流和内容分发网 CDN

1、压缩比特率,提高图像质量

2、流式视频的重要衡量:avg 端到端时延

3、DASH:经 HTTP 的动态适应流

  • 告示文件(manifest file)提供比特率和 URL

  • 速率决定算法选择后继请求块

4、CDN

  • 分类:专用 CDN 第三方 CDN

  • 服务器安置原则

    • 深入:靠近端用户,改善时延和吞吐量
    • 邀请做客:邀请到放置在 IXP 的集群,降低维护和管理开销
  • 机制:截获 重定向

  • * 实时测量

  • 案例:油管 Netflix 迅雷

套接字编程

1、分类:协议标准定义 或 专用网络的网络应用程序

2、UDP 套接字

  • 过程:键入,发送数据至服务器 - 转换报文,发送给客户 - 客户端监视器显示

  • 需显式创建分组并附上目的地址

3、TCP 套接字

  • 欢迎套接字和连接套接字

  • 仅需将数据放入 TCP 连接