应用层协议原理

网络应用的架构

客户端/服务器(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文件共享