应用层
应用层协议原理
网络应用的架构
客户端/服务器(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连接,而是保持该连接,用于后续对象的传送,直至该连接“休息”了一个较长的时间后,方断开该连接
- 减少了对服务器端连接数的需要,从而减少了对服务器端套接字资源的占用,提高了服务器的负载能力
- 持久连接又可以分为
- 非流水线方式:一个对象传输完成方能传输下一个
- 流水线方式:可以一次性发送所有请求,慢慢接收
HTTP请求报文
HTTP响应报文
用户-服务器交互:Cookie
Cookie 是一种由服务器生成并存储在用户浏览器中的小型文本文件,用于在客户端和服务器之间保存状态信息。它主要用于以下几种场景:
Cookie 的主要用途
- 会话管理
- 例如用户登录状态、购物车信息、游戏进度等。
- 当用户访问网站时,服务器可以通过 Cookie 识别用户是否已经登录,或者存储用户的偏好设置。
- 个性化设置
- 网站可以通过 Cookie 存储用户的语言偏好、主题选择等,使用户获得更符合个人习惯的浏览体验。
- 跟踪与分析
- 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中进行轮转