# 应用层协议原理

# 网络应用的架构

客户端 / 服务器(Client/Server,C/S)

服务器:

  • 总是打开

  • 拥有一个固定的地址

  • 缩放的数据中心

客户端:

  • 与服务器通信
  • 可能是间歇性连接
  • 可能有动态的 IP 地址
  • 客户端之间不能相互通信

对等网(Peer-to-Peer,P2P)

  • 不一定总在线
  • 结点之间可以直接通信
  • 结点的地址以及他们之间的连接可能随时发生变化
  • 任何一方既提供服务又享受服务,自扩展:新的节点带来新的服务能力,同时也带来新的服务需求
  • 节点之间是间歇性连接、地址也是变化的
  • 管理非常复杂

混合体系结构: C/S+P2P

# 安全性

  • TCP/UDP 天生不具备安全性

  • 安全套接字层 SSL

    • 提供加密的 TCP 连接
    • 数据的完整性检查
    • 端点身份鉴别
    • SSL 位于应用层与 TCP 之间

# WEB 和 HTTP

# WEB 的构成

WEB 属于 C/S 模式

WEB 服务器:IIS、Apache、TomCat……

浏览器:IE、Maxthon、Firefox

协议

  • 信息表达的协议 ——HTML
  • 信息传输的协议 ——HTTP

# HTTP

# 客户端 / 服务器模式

客户端: 浏览器请求、接收、展示 Web 对象

服务器: Web 服务器发送对象对请求进行响应

# TCP 传输服务

客户端启动 TCP 连接 (创建套接字) 到服务器,端口 80

服务器接受来自客户端的 TCP 连接

  • http 报文 (应用层协议报文) 在浏览器 (http client) 和 Web 服务器 (http server) 之间进行交换

  • 关闭 TCP 连接

HTTP 是 “无状态有连接 " 的,服务器不保留任何访问过的请求信息

# HTTP 连接

非持续 HTTP

总时间 = 2RTT + 文件传输时间

  • 通过 TCP 连接最多发送一个对象

  • 连接然后被关闭

  • 下载多个对象需要建立多个连接

持续 HTTP

  • 客户端和服务器之间的单个 TCP 连接上可以发送多个对象
  • 服务器在发送响应后,不再断开 TCP 连接,而是保持该连接,用于后续对象的传送,直至该连接 “休息” 了一个较长的时间后,方断开该连接
  • 减少了对服务器端连接数的需要,从而减少了对服务器端套接字资源的占用,提高了服务器的负载能力
  • 持久连接又可以分为
    1. 非流水线方式:一个对象传输完成方能传输下一个
    2. 流水线方式:可以一次性发送所有请求,慢慢接收

HTTP 请求报文

HTTP 响应报文

# 用户 - 服务器交互:Cookie

Cookie 是一种由服务器生成并存储在用户浏览器中的小型文本文件,用于在客户端和服务器之间保存状态信息。它主要用于以下几种场景:

Cookie 的主要用途

  1. 会话管理
    • 例如用户登录状态、购物车信息、游戏进度等。
    • 当用户访问网站时,服务器可以通过 Cookie 识别用户是否已经登录,或者存储用户的偏好设置。
  2. 个性化设置
    • 网站可以通过 Cookie 存储用户的语言偏好、主题选择等,使用户获得更符合个人习惯的浏览体验。
  3. 跟踪与分析
    • Cookie 被用来记录用户在网站上的行为,例如访问的页面、点击的内容等。这对广告投放和数据分析非常重要。

Cookie 技术的组成部分:

  • 在 HTTP 响应报文中有一个 Cookie 首部行

  • 在 HTTP 请求报文中也有一个 Cookie 首部行

  • 在用户的端系统中保留了一个 Cookie 文件,由用户浏览器负责管理

  • 在 Web 站点有一个后端数据库

# 文件传输协议:FTP

习题:

# 电子邮件

# 实现过程

习题:

# 邮件格式

# 邮件读取格式

# 基于万维网的电子邮件

# DNS

# 简况

  • DNS 是一个分布式数据库,由很多台 DNS 服务器按照层次结构组织起来

  • DNS 运行在端到端系统上,且使用 UDP 协议(53 号端口)进行报文传输,因此 DNS 是应用层协议

  • DNS 以 C/S 的模式工作

  • DNS 不直接和用户打交道,而是因特网的核心功能

# 结构

根 DNS 服务器:如果域名映射未知,则向授权域名服务器查询;取得映射;将映射返回本地域名服务器

顶级域 DNS 服务器:负责顶级域名和所有国家的顶级域名解析工作,例如:com, org, net, gov, uk, cn, jp 等

权威 DNS 服务器:属于某个组织的 DNS 服务器,为组织的服务器提供一个权威的域名到 IP 地址的映射服务 (例如:Web 和 mail)

# 域名解析过程

# DNS 缓存

习题:

# DNS 提供服务

  • 域名到 IP 地址的转换
  • 主机 / 邮件服务器别名:为不好记的规范主机 / 邮件服务器名提供一个易记的别名 e.g. www.hotmail.com -> www.hotmail.aate.nsatc.net
  • 负载均衡
    • 一个域名对应多个 IP
    • DNS 服务器在多个 IP 中进行轮转

# P2P 文件共享