第二章 网络应用
第一节 计算机网络应用体系结构
1.1 计算机网络应用的分类
计算机网络应用有很多,从体系结构角度可以分为3种类型,如下:
- 客户/服务器(C/S)结构
- 纯 P2P 结构
- 混合结构
1.2 C/S 结构网络应用
- C/S 结构网络应用是
最典型、最基本的网络应用。 - 平常使用的
WWW应用、文件传输FTP、电子邮件等都是 C/S 结构网络应用。
特点
C/S 网络应用的特点是通信只在客户与服务器之间进行,客户与客户之间不进行直接通信。
C/S 结构网络应用示意图如下:
1.3 纯 P2P 结构网络应用
什么是 P2P
P2P 是 Peer-To-Peer 的简称,意思是“对等网络”或者“点对点网络”。在网络中的每个端即是客户端,又是服务器。
特点
- 每个对等端都同时具备 C/S 应用的客户与服务器的特征,是一个服务器与客户的结合体,应用都是动态地在对等方之间进行。
- 充分聚集利用了端系统的计算能力以及网络传输带宽,对服务器的依赖很小。
纯 P2P 结构网络应用示意图如下:
1.4 混合结构网络应用
特点
混合结构网络应用将 C/S 应用与 P2P 应用相结合,既有中心服务器的存在,又有对等端间的直接通信。
混合结构网络应用示意图如下:
第二节 网络应用通信基本原理
2.1 网络应用通信基本原理
不管是 C/S 网络应用、P2P 网络应用以及混合网络应用,它们的基本通信原理都是 C/S 通信。
网络应用的基本通信过程
运行在不同主机上的应用进程间以 C/S 方式进行通信。
C/S 通信基本原理
服务器端运行的是服务器进程,被动地等待客户请求服务;客户端运行的是客户进程,主动发起通信,请求服务器进程提供服务。应用进程间遵循 应用层协议 交换应用层报文。
2.2 网络应用与传输层服务
- 网络应用需要传输层提供
端到端的传输服务。 - Internet 传输层只能提供两类服务:
- 面向连接的可靠字节流传输服务(TCP)
- 无连接的不可靠数据报传输服务(UDP)
- 上述两类服务都不能提供端到端吞吐量以及时延保障服务。
2.3 应用编程接口
套接字(Socket)是典型的网络应用编程接口。- 套接字可以实现应用进程与底层协议之间的报文交换,所以套接字是每个应用进程与其他应用进程进行通信收发报文的通道。
2.4 进程的标识
进程是通过该进程运行的主机 IP地址 以及其套接字所绑定的 端口号 来标识的。
第三节 域名系统
域名系统
是一个存储网络中域名与 IP 地址的映射关系数据的分布式数据库,提供域名解析服务。
域名解析
将域名映射为 IP 地址的过程。
3.1 层次化域名空间
域名采用了 层次树状结构 的命名方法,如下图。
域名结构示意图:
可以看到第一层的根下面是顶级域名,顶级域名有3种类型:
- 国家顶级域名(nTLD)
- cn:中国
- us:美国
- uk:英国
- 通用顶级域名(gTLD)
- com:公司和企业
- net:网络服务机构
- org:非盈利性组织
- edu:专用的教育机构
- gov:专用的政府部门
- mil:专用的军事部门
- int:国际组织
- 基础结构域名
-
arpa:反向域名(用于反向域名解析)
-
域名的结构由标号序列组成,各标号之间用点隔开,例如,“···.三级域名.二级域名.顶级域名”,各标号分别代表不同级别的域名。
3.2 域名服务器
域名服务器
为了实现域名解析,需要建立 分布式数据库,存储网络中域名与 IP 地址的映射关系数据,这些数据库存储在域名服务器上,域名服务器根据用户的请求提供域名解析服务。
域名服务器的分类
根据其主要保存的域名信息以及在域名解析过程中的作用,可以分类以下 4 类:
- 根域名服务器
- 目前共有 13 个根域名服务器,名字从 a~m,如:a.rootservers.net、···、m.rootservers.net。
- 每个根域名服务器都保存着所有顶级域名服务器的域名和 IP 地址。
- 顶级域名服务器
- 负责管理在该顶级域名服务器注册的所有二级域名。
- 权威域名服务器
- 负责一个区的域名服务器,保存该区中的所有主机的域名到 IP 地址的映射。
- 中间域名服务器
本地域名服务器:
- 任何一台主机在网络地址配置时,都会配置一个域名服务器作为默认域名服务器,这个默认域名服务器通常称为本地域名服务器。
- 是主机进行域名查询过程中首先被查询的域名服务器。
3.3 域名解析过程
域名解析分类
域名解析过程分为 递归查询 和 迭代查询 两种。
递归解析
代替查询主机或其他域名服务器,进行进一步的域名查询,并将最终解析结果发送给查询主机或服务器。
递归解析过程示意图:
迭代解析
只是将下一步要查询的服务器告知查询主机或服务器。
迭代解析过程示意图:
第四节 万维网应用
4.1 万维网应用结构
万维网应用结构主要由以下三部分组成:
- Web 服务器
- 浏览器
- 超文本传输协议(HTTP)
Web 应用结构示意图如下:
URL
每个 URL 地址主要由两部分组成:存放对象的服务器主机域名和对象的路径名。
例如,http://www.abc.edu.com/cs/index.html,其中的 www.abc.edu 是 Web 服务器主机名, /cs/index.html 是路径名。
4.2 - HTTP
4.2.1 - HTTP 概述
HTTP 是 Web 应用的应用层协议,定义浏览器如何向 Web 服务器发送请求以及 Web 服务器如何向浏览器进行响应。
4.2.2 - HTTP 连接
根据 HTTP 在使用 TCP 连接的策略不同,可以分为 非持久连接 的 HTTP 和 持久连接 的 HTTP。
(1)非持久连接
概念: 非持久连接是指 HTTP 客户与 HTTP 服务器建立 TCP 连接后,每次请求传输一个对象都需要建立一个 TCP 连接。
特点: 串行方式请求每个对象,且每次都要新建立 TCP 连接。
缺点: 这种串行方式请求每个对象时,每次都要新建立 TCP 连接,因此都要经历 TCP 拥塞控制的慢启动阶段,使得 TCP 连接工作在较低的吞吐量状态,延迟会更加明显。
为了提高 HTTP 性能,有 2 种典型的优化技术:并行连接、持久连接。
请求传输过程示意图如下:
(2) 并行连接
概念: 建立多条并行的 TCP 连接,并行发送 HTTP 请求和并行接收 HTTP 响应。
特点: 并行方式请求每个对象,每个对象建立一个 TCP。
请求传输过程示意图如下:
(3) 持久连接
概念: 重用已建立的 TCP 连接发送新的 HTTP 请求和接收 HTTP 响应。
根据使用持久连接传输多个对象的策略不同,又可以分为以下两种:
- 非流水方式持久连接
概念: 也称为非管道方式持久连接,客户端在通过持久连接收到前一个响应报文后,才能发出对下一个对象的请求报文。
请求传输过程示意图如下:
- 流水方式持久连接
概念: 也称为管道方式持久连接,客户端在通过持久连接收到前一个对象的响应报文之前,连续多次发送对后续对象的请求报文,然后再通过该连接依次接收服务器发回的响应报文。
请求传输过程示意图如下:
4.2.3 - HTTP 报文
HTTP 报文分为 请求报文 和 响应报文 两类。并且都由 4 部分组成:
- 起始行
- 首部行
- 空白行
- 实体主体
请求报文
定义: 由浏览器(客户端)发送给 Web 服务器。
请求报文结构如图所示:
请求方法有以下几种:
GET:请求读取由 URL 标识的信息,这是最常见的方法。HEAD:请求读取由 URL 所标识的详细的首部,如 HTML 文件的<head>标签部分。POST:给服务器添加信息,如注册用户。OPTION:请求一些选项的信息。PUT:在指明的 URL 下存储一个文档。
响应报文
定义: 由 Web 服务器发送给浏览器。
响应报文结果如图所示:
HTTP 状态码分类:
常见的 HTTP 状态码:
| 状态码 | 含义 |
|---|---|
| 100 | 表示已成功收到了请求的初始部分,请客户端继续。 |
| 200 | 成功,所请求的信息在响应报文中。 |
| 301 | 重定向,所请求对象被永久移走,在响应报文中会给出新的 URL,通常浏览器会自动再新 URL 发送请求。 |
| 400 | 客户端请求错误,即服务器不能正确立即客户请求。 |
| 401 | 未授权,需要输入用户名和密码。 |
| 404 | 客户端请求的对象,在服务器上不存在。 |
| 451 | 不支持的媒体类型,可能被服务器拒绝请求,或者是请求方法或参数与服务器要求不匹配 。 |
| 505 | 请求使用的 HTTP 版本,服务器不支持。 |
4.3 - Cookie
定义: Cookie 中文名称为 小型文本文件,指某些网站为了辨别用户身份、进行会话跟踪而存储在用户本地终端的数据。
分类: Cookie 可以分为 永久 Cookie 和 会话 Cookie。
永久 Cookie
永久 Cookie 保存在计算机的硬盘中,该类 Cookie 的有效周期可以设置,关闭浏览器不影响 Cookie 的有效周期。
会话 Cookie
会话 Cookie 保存在计算机的内存中,该类 Cookie 的有效周期是浏览器的会话期间,只要关闭浏览器窗口,Cookie 就会消失。
Cookie 工作基本原理
- 服务器端生成 Cookie,发送给浏览器。
- 浏览器将 Cookie 保存到某个目录下的文本文件内。
- 下次请求同一网站时就发送该 Cookie 给服务器。
- 服务器根据 Cookie 值检索用户历史行为数据。
工作原理示意图:
Cookie 常见用途
- 网站可以利用 Cookie 的 ID 来准确统计网站的实际访问人数、新访问者和重复访问者的人数对比、访问者的访问概率等数据。
- 网站可以利用 Cookie 限制某些特定用户的访问。
- 网站可以存储用户特有的操作习惯和偏好,有针对性地为用户提供服务。
- 电子商务网站利用 Cookie 可以实现“购物车”功能。
第五节 Internet 电子邮件
5.1 电子邮件系统结构
电子邮件系统结构包括 邮件服务器、简单邮件传输协议(SMTP)、用户代理 和 邮件读取协议,如图所示:
邮件服务器
- 邮件服务器的功能是发送和接收邮件,同时还要向发信人报告邮件传送的情况,是电子邮件体系结构的
核心。 - 因为邮件服务器之间发送和接收邮件时是按照
客户/服务器方式工作,所以邮件服务器通常包含邮件发送进程和邮件接收进程。 - 实现邮件服务器间发送邮件的应用层协议是 SMTP。
- 邮件接收进程绑定的端口号默认为 25。
电子邮件格式为:收件人邮箱名@邮箱所在主机的域名
例如,电子邮件地址user_a@mail.hit.edu.cn,表示邮件服务器域名为mail.hit.edu.cn,该用户的邮箱名为user_a。
用户代理
用户代理是电子邮件应用的客户端软件,为用户提供使用电子邮件的接口,比如QQ邮箱。
5.2 SMTP
- SMTP 是电子邮件中核心应用层协议,实现邮件服务器之间或用户代理到邮件服务器之间的邮件传输。
- SMTP 使用传输层
TCP协议实现可靠数据传输,端口号为 25。 - SMTP 通过3个阶段的应用层交互完成邮件的传输,分别是
握手阶段、邮件传输阶段和关闭阶段。 - SMTP 的基本交互方式是 SMTP 客户端发送命令,命令后面可能携带参数,SMTP 服务器对命令进行应答。
特点
-
SMTP 只能传送7位 ASCII 码文本内容,对于其他内容(例如,图形、声音、视频等)必须转换为7位 ASCII 吗文本形式,接收邮件一方再将这些内容还原。
-
SMTP 传送的邮件内容不能包含
"CRLF.CRLF",因为该信息用于标识邮件内容的结束。如果邮件内容中包含,则在传输时,需要进行转义。 -
SMTP 是推动协议。当客户端有邮件发送给服务器时,客户主动与服务器请求建立 TCP 连接,然后将邮件“推送”给服务器。
-
SMTP 使用 TCP 连接是持久的。在一封邮件传输结束后,并不要求必须进入关闭阶段。如果还需要传输邮件,则可以利用已建立的 TCP 连接继续发送后续的邮件。
5.3 电子邮件格式与 MIME
电子邮件格式
电子邮件包括 首部、空白行、主体三部分,其中首部包括一条或多条首部行。
首部行常见的关键字:
| 关键字 | 含义 |
|---|---|
| To | 收件人的电子邮件地址 |
| From | 发信人的电子邮件地址 |
| Subject | 邮件主题 |
| Cc | 给某人发送一个邮件副本 |
| Date | 发信日期 |
| Reply-To | 对方回信所用的地址 |
MIME
MEME 是多用途互联网邮件扩展的简称。作用是将非7位 ASCII 码文本内容转换为7位 ASCII 码文本内容,然后利用 SMTP 进行传输。
MIME 主要包括3个部分:
-
5个 MIME 邮件首部字段,可包含在邮件首部中。
关键字 含义 MIME-Version 用于标识 MIME 的版本 Content-Description 用于对邮件内容的概括性描述 Content-Id 邮件的唯一标识符 Content-Encoding 用于说明邮件主体是如何编码标准的 Content-Type 说明邮件主体内容的类型和格式 -
定义多种邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。
-
定义邮件传送编码,可对任何内容格式进行转换,从而适合通过 SMTP 进行传送。
5.4 邮件读取协议
当用户需要访问自己的邮箱,读取其中的邮件时需要用到邮件读取协议。
目前邮件系统中比较流行的邮件读取协议有:
- 第三版的邮局协议(POP3)[Post Office Protocol-Version 3]
- 互联网邮件访问协议(IMAP)[Internet Mail Access Protocol]
- HTTP
POP3
通过 POP3,用户会将邮件下载到本地主机,在本地对邮件进行操作(移动、查询、阅读、删除等)。但是,这种在本地对邮件的操作并不会更新到邮件服务器中。
就好比我们把 GitHub 仓库上的代码克隆到本地,在本地对代码进行修改,但不把修改后的代码提交到仓库,那么之后其他人在仓库看到的代码依然是我们没修改之前的代码。
IMAP
通过 IMAP,用户对邮件的操作(移动、查询、阅读、删除等)可以更新到服务器,这样用户从任何一台机器访问邮件都是最新操作结果。
就好比我们直接操作 GitHub 仓库中的代码,那么之后其他人在仓库中看到的都是我们修改后的代码。
HTTP
当使用基于 Web 的邮件时,HTTP 便用于邮件的读取,此时 HTTP 也作为邮件读取协议的使用。
第六节 FTP
6.1 FTP 概述
FTP 是文件传送协议的简称,在互联网的两个主机间实现文件互传的应用层协议。
作用
FTP 可以减少或消除在不同操作系统下处理文件的不兼容性,屏蔽各计算机系统的细节,适合在网络中任意异构计算机之间传送文件。
特点
-
FTP 是典型客户/服务器网络应用,采用 C/S 方式实现客户与服务器之间的双向文件传输。
-
FTP 应用使用两个“并行”的 TCP 连接:控制连接和数据连接。
FTP 应用结构示意图
用户在使用 FTP 服务时,首先客户进程需要请求与 FTP 服务器的21号端口建立一条 TCP 连接,称为 控制连接。
当需要传输文件内容时,客户进程需要请求与 FTP 服务器的20号端口建立一条 TCP 连接,称为 数据连接。
6.2 控制连接与数据连接
控制连接
当用户在使用 FTP 服务时,客户进程首先会与 FTP 服务器的21号端口建立控制连接,该连接用于在客户与服务器之间传输控制信息(如用户标识、口令、上传文件等命令)。
控制连接是持久的,在整个会话期间一直保持打开。
数据连接
由于控制连接无法提供文件传输功能,所以在进行文件传输时,客户进程还需要向服务器的20号端口新建一个数据连接专门用于文件传输。
数据连接是非持久的,在文件传输结束后就会关闭。