第 6 章 应用层
6.1 网络应用模型
6.1.1 客户/服务器模型
- 基本概念
- 有一个总是打开的主机称为服务器
- 服务于许多来自其他称为客户机的主机请求
- 工作流程
- 服务器处于接收请求的状态
- 客户机发出服务请求,并等待接收结果
- 服务器收到请求后
- 分析请求
- 进行必要的处理
- 得到结果并发送给客户机
- 服务器特点
- 运行专门提供服务的程序
- 可以同时处理多个客户请求
- 包括远程或本地客户
- 不需要知道客户程序地址
- 客户机特点
- 必须知道服务器程序地址
- 主要特征
- 客户是服务请求方
- 服务器是服务提供方
- 举例
- Web应用程序
- Web服务器服务于浏览器请求
- 处理流程
- 接收客户机请求
- 发送所请求对象响应
- Web应用程序
- 常见应用
- Web
- 文件传输协议(FTP)
- 远程登录
- 电子邮件
- 主要特点
- 网络中各计算机地位不平等
- 服务器可管理客户机
- 通过用户权限限制
- 网络管理集中方便
- 由少数服务器负责
- 客户机间不直接通信
- 举例
- Web应用中两个浏览器不直接通信
- 可扩展性不佳
- 限制因素
- 服务器硬件限制
- 网络带宽限制
- 结果
- 服务器支持的客户机数量有限
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→域名)
- 国家(地区)顶级域名(nTLD)
域名空间树状结构
- 根
- 顶级域名
- aero
- com
- net
- org
- edu
- gov
- cn
- uk
- 二级域名(示例)
- cskaoyan
- cctv
- bj
- edu
- com
- 三级域名(示例)
- www
- hust
- hit
- 四级域名(示例)
- 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)
- 邮件发送协议
- 用户代理(User Agent)
- 电子邮件收发过程
①. 发件人撰写邮件
②. 用户代理通过SMTP发送邮件到发送端邮件服务器
③. 发送端邮件服务器将邮件放入缓存队列
④. SMTP客户与接收端SMTP服务器建立TCP连接并发送邮件
⑤. 接收端SMTP服务器将邮件放入收件人邮箱
⑥. 收件人通过POP3/IMAP协议取回邮件
6.4.2 电子邮件格式与MIME
- ①. 电子邮件格式
- 电子邮件分为信封和内容两大部分
- 邮件内容分为首部和主体两部分
- RFC 822规定了邮件的首部格式
- 主体部分由用户自由撰写
- 邮件内容分为首部和主体两部分
- 邮件内容的首部包含首部行
- 每个首部行由关键字后跟冒号和值组成
- 必需关键字:To
- 填入一个或多个收件人的电子邮件地址
- 格式:收件人邮箱名@邮箱所在主机的域名
- 填入一个或多个收件人的电子邮件地址
- 可选关键字:Subject
- 邮件的主题
- 必填关键字:From
- 通常由邮件系统自动填入
- 必需关键字:To
- 每个首部行由关键字后跟冒号和值组成
- 首部与主体之间用一个空行分割
- 电子邮件分为信封和内容两大部分
- ②. 多用途因特网邮件扩展 (MIME)
- SMTP只能传送7位ASCII码文本邮件
- 无法传送非英语国家文字
- 无法传送可执行文件及其他二进制对象
- MIME的作用
- 未改动或取代SMTP
- 发送端:将非ASCII码数据转换为ASCII码数据
- 接收端:将ASCII码数据逆转换为非ASCII码数据
- MIME主要包括三部分内容
- 5个新的邮件首部字段
- MIME版本
- 内容描述
- 内容标识
- 传送编码
- 内容类型
- 定义了许多邮件内容的格式
- 对多媒体电子邮件的表示方法进行标准化
- 定义了传送编码
- 可对任何内容格式进行转换
- 不会被邮件系统改变
- 5个新的邮件首部字段
- SMTP只能传送7位ASCII码文本邮件
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(服务关闭)
- (1)连接建立
- 简单邮件传输协议 (Simple Mail Transfer Protocol,SMTP)
- 2.POP3 和 IMAP
- 邮局协议 (Post Office Protocol,POP)
- 版本:POP3
- 采用客户/服务器模式
- 传输层使用TCP,端口号为110
- 两种工作方式
- 下载并保留
- 下载并删除
- 因特网报文存取协议(IMAP)
- 比POP复杂
- 提供创建文件夹、移动邮件、查询邮件等联机命令
- IMAP服务器维护会话用户的状态信息
- 允许用户代理只获取报文的某些部分
- 基于万维网的电子邮件
- 用户浏览器与邮件服务器之间使用HTTP
- 不同邮件服务器之间传送邮件时使用SMTP
- 邮局协议 (Post Office Protocol,POP)
6.5 万维网(WwW)
6.5.1 WwW 的概念与组成结构
- 万维网(WWW)定义
- 分布式、联机式的信息存储空间
- 资源由URL标识
- 通过HTTP协议传输
- 使用超链接实现站点间访问
- 三个核心标准
- 统一资源定位符(URL)
- 功能:标识万维网文档
- 格式:<协议>://<主机>:<端口>/<路径>
- 特点:不区分大小写
- 超文本传输协议(HTTP)
- 应用层协议
- 使用TCP连接
- 超文本标记语言(HTML)
- 文档结构标记语言
- 描述页面信息和格式
- 统一资源定位符(URL)
- 工作模式
- 客户/服务器模式
- 浏览器:客户程序
- 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/1.0)
- HTTP报文结构
- 请求报文
- 请求行(方法、URL、版本)
- 首部行
- 实体主体
- 响应报文
- 状态行(版本、状态码、短语)
- 首部行
- 实体主体
- 常用方法
- GET
- HEAD
- POST
- PUT
- DELETE
- 请求报文
- HTTP请求报文示例
- 以太网帧结构
- IP首部
- TCP首部
- HTTP请求内容解析