type
status
date
slug
summary
tags
category
icon
password
URL
大纲要求核心考点网络应用模型客户 / 服务器模型(C/S 模型)P2P 模型DNS 系统DNS 系统的概念层次域名空间域名服务器域名解析过程FTPFTP 的工作原理控制连接与数据连接电子邮件电子邮件的组成构成电子邮件格式与 MIME电子邮件格式MIEMSMTP 与 POP3SMTPPOP3WWWWWW 的概念和组成结构WWW 的概念WWW 的组成HTTPHTP 的操作过程HTTP 的报文结构(了解)HTTP 有两类报文∶
大纲要求
(一)网络应用模型
- 客户 / 服务器模型
- P2P 模型
(二)DNS 系统
- 层次域名空间
- 域名服务器
- 域名解析过程
(三)FTP
- FTP 的工作原理
- 控制连接与数据连接
(四)电子邮件
- 电子邮件系统的组成结构
- 电子邮件格式与 MIME
- SMTP 与 POP3
(五)WWW
- WWW 的概念与组成结构
- HTTP
核心考点
- (★★)域名解析过程
- (★★)FTP 的工作原理
- (★★)HTTP
网络应用模型
本章复习建议∶应用层中的内容主要以概念性为主,而且与网络技术的日常应用息息相关。本章以选择题为主,重点把握应用层的相关概念、协议、服务过程和原理。
每个应用层协议都是为了解决某一类应用问题,而问题的解决又往往是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成的。应用层的具体内容就是规定应用进程在通信时所遵循的协议。这些应用进程之间相互通信和协作通常采用一定的模式,常见的有客户 / 服务器模型和 P2P 模型。
客户 / 服务器模型(C/S 模型)
- 客户和服务器是指通信中所涉及的两个应用进程。客户/服务器方式所描述的是进程之间服务和被服务的关系。客户是服务请求方,服务器是服务提供方。
- 服务器总是处于运行状态,并等待客户的服务请求。服务器具有固定端口号(例如HTTP服务器的默认端口号为80),而运行服务器的主机也具有固定的P地址。
- C/S方式是因特网上传统的、同时也是最成熟的方式,很多我们熟悉的网络应用采用的都是C/S方式。包括万维网WWW、电子邮件、文件传输FTP等。
- 基于C/S方式的应用服务通常是服务集中型的,即应用服务集中在网络中比客户计算机少得多的服务器计算机上。由于一台服务器计算机要为多个客户机提供服务,在C/S应用中,常会出现服务器计算机跟不上众多客户机请求的情况。为此,在C/S应用中,常用计算机群集(或服务器场)构建一个强大的虚拟服务器。
客户(Client)和服务器(Server)都是指通信中所涉及的两个应用进程。

如图 6-1 所示,客户 / 服务器模型所描述的是进程之间的服务和被服务的关系。服务可以是任意的应用,如文件传输服务、电子邮件服务等。在这个模型中,客户是服务的请求方,服务器是服务的提供方。例如,主机 A 向主机 B 发出服务请求,主机 A 是客户机;而主机 B 向主机 A 提供服务,主机 B 是服务器。
在客户机上运行的软件通常是被用户(如操作计算机的人)调用后运行,在打算通信时主动向服务器发起通信。因此,客户程序必须知道服务器程序的地址。
此外,客户机上一般不需要特殊的硬件和复杂的操作系统。而服务器上运行的软件则是某些专门用来提供某种服务的程序,可同时处理多个远地或本地客户的请求。系统启动后即自动调用并一直不断地运行着,被动地等待并接受来自各地客户的通信请求。因此,服务器程序不需要知道客户程序的地址。服务器一般需要强大的硬件和高级的操作系统支持。
故事助记∶可以将服务器想象成一个大超市,去超市买东西的顾客称为客户。只有超市开着门(服务器开机,一般服务器都是永久开机的),才可向客户提供服务。客户必须知道超市的地址才可以去超市买东西(访问服务器),而超市肯定不需要知道每个顾客住在哪里,所以服务器不需要知道客户的地址。
客户 / 服务器模型主要特点如下∶
- 网络中各计算机的地位不平等,服务器可以通过对用户权限的限制来达到管理客户机的目的,使它们不能随意存储数据,更不能随意删除数据,或进行其他受限的网络活动。
- 整个网络的管理工作由少数服务器承担,所以网络的管理非常集中和方便。这一优势在大规模网络中更加明显。
- 可扩展性不佳。由于受服务器硬件和网络带宽的限制,服务器所能支持的客户数比较有限,当客户数增长较快时,会急剧影响网络应用系统的效率。
针对以上客户 / 服务器模型的一些限制,P2P 模型改变了这种模式,下面详细讲解。
P2P 模型
如图 6-2 所示,P2P 模型指两个主机在通信时并不区分哪一个是服务请求方还是服务提供方。只要两个主机都运行了 P2P 软件,它们就可以进行平等的对等连接通信,比如双方都可以下载对方已经存储在硬盘中的共享文档(而在客户 / 服务器模型下,只有当客户机主动发起请求时,才能从服务器获得文档,或将文档传递给服务器,而且多个客户机之间如果想要共享文件,只能通过服务器中转)。例如,大家现在常用的 QQLive 和电驴等软件就是使用 P2P 模型。

实际上,P2P 模型从本质上来看仍然是使用客户 / 服务器方式,只是对等连接中的每一个主机既是客户又是服务器。例如,当主机 C 请求 D 的服务时,C 是客户,D 是服务器,,但如果 C 同时又向 F 提供服务,那么 C 又同时起着服务器的作用。
P2P 模型带来的好处是,任何一台主机都可以成为服务器,改变了原来需要专用服务器的模式,很显然,多个客户机之间可以直接共享文档。此外,可以借助 P2P 网络模型,解决专用服务器的性能瓶颈问题(如播放流媒体时对服务器的压力过大,而通过 P2P 模型,可以利用大量的客户机来提供服务)。
P2P 模型主要特点如下∶
- 繁重的计算机任务可以被分配到各个节点上,利用每个节点空闲的计算能力和存储空间,聚合实现强大的服务。
- 系统可扩展性好。传统的服务器有连接带宽的限制,只能达到一定的客户端连接数。但是在 P2P 模型中,能避免这个问题。
- 网络更加健壮,不存在中心节点失效的问题。当一部分节点连接失败之后,其余的节点仍然能形成完整的网络。
DNS 系统
DNS 系统的概念
6.4域名系统DNS(Domain Name System) 早在1983年,因特网就开始采用层次结构的命名树作为主机的名字(即域名)并使用分布式的域名系统DNS DNS使大多数域名都在本地解析,仅少量解析需要在因特网上通信,因此系统效率很高。 DNS服务器类别
从概念上可以将 DNS 分为 3 个部分∶层次域名空间、域名服务器、解析器,下面一一讲解。
层次域名空间

注意∶级别最低的域名写在最左边,而级别最高的顶级域名写在最右边,且域名没有大小写之分,如
WWW.CSBIJL.COM
和www.csbiji.com
均可访问天勤论坛。
下面看一个域名实例,如图 6-3 所示。
顶级域名(Top Level Domain,TLD)主要分为以下三大类∶
- 国家顶级域名(nTLD),如. cn 表示中国、.us 表示美国、.k 表示英国等。
- 通用顶级域名(gTLD),最早的顶级域名如下:

- 基础结构域名(Infrastructure Domain),这种顶级域名只有一个,即 arpa,用于反向域名解析,因此又称为反向域名。
图 6-4 展示了因特网的域名空间。

域名服务器

因特网的域名系统(DNS)被设计成一个联机分布式的数据库系统,并采用客户 / 服务器模型。名字到域名的解析是由若干个域名服务器来完成的,域名服务器程序在专设的节点上运行,运行该程序的机器称为域名服务器。
一个服务器所负责管辖的(或有权限的)范围称为区(Zone)。
如图 6-5 所示,各单位根据具体情况来划分自己管辖范围的区,但在一个区中的所有节点必须是能够连通的。每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到 IP 地址的映射。
DNS 服务器的管辖范围不是以 “域” 为单位,而是以 “区” 为单位,区一定小于或等于域。
因特网上的域名服务器系统是按照域名的层次来安排的,每个域名服务器都只对域名体系中的一部分进行管辖。因此,共有以下 4 种不同类型的域名服务器。
- 根域名服务器(最高层次的域名服务器)。根域名服务器是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和 IP 地址。不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助于根域名服务器。
注意∶根域名服务器用来管辖顶级域名(如. com),它并不直接把待查询的域名转换成 IP 地址,而是告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询。

- 顶级域名服务器。这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。当收到 DNS 查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的 IP 地址)。
- 权限域名服务器(授权域名服务器)。这就是前面已经讲过的负责一个区的域名服务器。当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的 DNS 客户,下一步应当找哪一个权限域名服务器。
- 本地域名服务器。本地域名服务器对域名系统非常重要。当一个主机发出 DNS 查询请求时,这个查询请求报文就发送给本地域名服务器。每一个因特网服务提供者(ISP)或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器,这种域名服务器有时也称为默认域名服务器。人们在使用本地连接时,就需要填写 DNS 服务器,而这个就是本地 DNS 服务器的地址。
在图 6-6 中,10.10.0.21 就是浙江大学使用的本地 DNS 服务器。

补充知识点∶DNS 服务器把数据复制到几个域名服务器来保存,其中的一个是主域名服务器,其他的是辅助域名服务器。当主域名服务器出现故障时,辅助域名服务器可以保证 DNS 的查询工作不会中断。主域名服务器定期把数据复制到辅助域名服务器中,而更改数据只能在主域名服务器中进行,这样就保证了数据的一致性。
DNS 服务器的树状结构如图 6-7 所示。

域名解析过程

注意∶因为主机向本地域名服务器的查询都是采用递归查询,所以迭代查询又称为递归与迭代相结合的查询方式。相比递归查询,这种方式更常用。
补充知识点∶
名字的高速缓存是什么?
解析∶每个域名服务器都维护一个高速缓存,存放最近用过的名字以及从何处获得名字映射信息的记录。这样可大大减轻根域名服务器的负荷,使因特网上的 DNS 查询请求和回答报文的数量大为减少。
为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器,并处理超过合理时间的项(如每个项目只存放两天)。当权限域名服务器回答一个查词请求时,在响应中都指明绑定有效存在的时间值。增加此时间值可减少网络开销,而减少此时间值可提高域名转换的准确性。
连接在因特网上的主机名必须是唯一的吗?
解析∶这是肯定的。因特网不允许有两台(或更多的)主机具有同样的主机名。但是必须注意,这里所说的 “主机名” 是指主机的 “全名”(Full Name),也就是 “主机的域名”,而不是指一台主机的 “本地名字”。
例如,很多单位的网站服务器主机的本地名字都愿意取为 www。这主要是为了便于记忆,使人一看见 www,就知道这个计算机是用来存放该单位网页信息的,使得人们可以利用 HTTP 来访问这个网站。所以当看到下面这样的网址∶
http:/www.baidu.com
就应当很明确,在整个因特网范围www.baidu.com
是唯一的主机名。但应注意,主机名有两种,即全名和本地名字(Local Name)。虽然主机的全名在因特网上必须是唯一的,但主机的本地名字只需要在本级域名下是唯一的即可。
例如,“.baidu” 是在顶级域名 “.com” 下注册的二级域名,www 是这个主机在二级域名 “.baidu” 下的本地名字。全世界有很多的主机使用相同的本地名字(如 www 或 mail,,但这并不会产生混乱。可以看出,如果 baidu(百度)将其网站主机的本地名字取为其他的名字 xyz,那么它的网址就要变成
∶
http://xyz.baidu.com
但这样做并没有什么好处,只能给别人增加一些记忆上的麻烦。
另外,虽然主机名在因特网中必须是唯一的,IP 地址在因特网中也必须是唯一的,但一个主机名却可以对应多个 IP 地址。这个是完全可能的,如对域名
www.yahoo.com
进行解析就会出现这样的结果。产生这样的结果是为了使 Yahoo(雅虎)这个万维网服务器的负载得到平衡(因为每天访问这个站点的次数非常多)。因此,这个网站就设有好几台计算机,每一台计算机都运行同样的服务器软件。这些计算机的 IP 地址当然都是不—样的,但它们的域名却是相同的。第一个访问该网址的人就得到第一台计算机的 IP 地址,而第二个访问者就得到第二台计算机的 IP 地址…… 这样可使每一台计算机的负荷不会太大。
当然,多个域名也可以对应一个 IP 地址,如大学生最熟悉的
www.xiaonei.com
和www.renren.com
都是对应人人网。在因特网中通过域名系统查找某台主机的 IP 地址,和在电话系统中通过 114 查号台查找某个单位的电话号码相比,有何异同之处?
解析∶相同之处∶
电话系统∶在电话机上只能拨打被叫用户的电话号码才能进行通信。114 查号台将被叫用户名字转换为电话号码告诉主叫用户。
因特网∶在 IP 数据报上必须填入目的主机的 IP 地址才能发送出去。域名系统将目的主机名字解析为(转换为)32 位二进制数的 IP 地址返回给源主机。
不同之处∶
电话系统∶必须由主叫用户拨打 114 才能进行查号。如果要查找非本市的电话号码,则必须拨打长途电话。例如,要在南京查找北京的民航售票处的电话号码,则南京的 114 查号台无法给你回答。你在南京必须拨打 010-114(长途电话)进行查询。
因特网∶只要源主机上的应用程序遇到目的主机名需要转换为目的主机的 IP 地址,就由源主机自动向域名服务器发出 DNS 查询报文。不管将该主机的域名解析出来的 DNS 服务器距离源主机有多远,它都能自动将解析的结果返回给源主机。所有这些复杂的查询过程对用户来说都是透明的,用户感觉不到这些域名解析过程。
有一种方法可以使用户体会到域名解析是需要一些时间的。在使用浏览器访问某个远地网站时,将网页地址中的域名换成为它的点分十进制数的 IP 地址,看找到这个网站时是否要节省一些时间。
ARP 和 DNS 是否有些相似?它们有何区别?
解析∶ARP 和 DNS 的相之处仅仅是在形式上都是主机发送出请求,然后从相应的服务器收到所需的回答。另外一点是,这两个协议经常是连在一起使用的。但重要是,这两个协议是完全不同的。
DNS 是应用层协议,用来请求域名服务器将连接在因特网上的某个主机的域名解析为 32 位二进制数的 IP 地址。在大多数情况下,本地的域名服务器很可能还不知道所请求的主机的 IP 地址,于是还要继续寻找其他的域名服务器。这样很可能要在因特网上寻找多次才能得到所需的结果,最后将结果发送给原来发出请求的主机。
ARP 是网络层协议,它采用广播方式请求将连接在本地以太网上的某个主机或路由器的 32 位的 IP 地址解析为 48 位的以太网硬件地址。
关于递归和迭代的记忆方式。
解析∶不少考生知道有递归和迭代两种解析方式,但是做题的时候,经常忘记了到底哪种是递归,哪种是迭代,于是又需要翻阅教材。下面给出一个过目不忘的记忆方法。
方法∶递归中有一个 “递” 可以联想为 “弟”。记住一句话∶我一定要找到弟弟才回来,就是说递归一定要找到主机需要的 IP 地址才返回。

解析∶A。首先,如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份向其他服务器继续发出查询请求报文,而不是让该主机自己进行下一步的查询,所以主机只需向本地域名服务器发送一条域名请求即可;其次,题目已经说明用递归方法解析另一个网络某主机域名,所以现在需要在脑海中形成一个概念(什么是递归),用一句话来记忆∶递归 = 直到找到 “弟弟” 才回来(递和弟是谐音,就是说递归方法解析一定要查到主机需要的 IP 地址才返回,所以本地域名服务器只需发送一条域名请求给根域名服务器即可,然后依次递归,最后再依次返回结果。
FTP
FTP 的工作原理
将某台计算机中的文件通过网络传送到可能相距很远的另一台计算机中,是一项基本的网络应用,即文件传送。 文件传送协议FTP(File Transfer Protocol)是因特网上使用得最广泛的文件传送协议。 在因特网发展的早期阶段,用FTP传送文件约占整个因特网的通信量的三分之一,而由电子邮件和域名系统所 产生的通信量还要小于FTP所产生的通信量。只是到了1995年,万维网WWW的通信量才首次超过了FTP。 FTP基本工作原理 主动模式与被动模式

FTP 只提供文件传送的一些基本服务,它使用 TCP 可靠地传输服务。FTP 使用客户 / 服务器模型。
一个 FTP 服务器进程可同时为多个客户进程提供服务。
FTP 的服务器进程由两大部分组成,一个主进程负责接收新的请求;另外有若干个从属进程,负责处理单个请求。主进程的工作步骤如下∶
- 打开熟知端口(端口号为 21),使客户进程能够连接上。
- 等待客户进程发出连接请求。
- 启动从属进程来处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建一些其他子进程。
- 回到等待状态,继续接收其他客户进程发来的请求。主进程与从属进程的处理是并发进行的。
控制连接与数据连接
在进行文件传输时,FTP 的客户机和服务器之间要建立两个 TCP 连接,一个用于传输控制命令和响应,称为控制连接;另一个用于实际的文件内容传输,称为数据连接,如图 6-10 所示。

FTP 服务器监听在 21 号端口,等待客户机连接,建立在这个端口上的连接称为控制连接,客户机可以通过这个连接向服务器发送各种请求,如登录、改变当前目录、切换数据传输模式、列目录内容、上传文件等。
当需要传送文件时,服务器和客户机之间要建立另外一个连接,这个称为数据连接。
控制连接在整个会话期间一直保持打开,FTP 客户机发出的传送请求通过控制连接发送给服务器端的控制进程,但控制连接不用于传送文件。
实际用于传送文件的是数据连接。服务器端的控制进程在接收到 FTP 客户机发送来的文件传输请求后就创建数据传送进程和数据连接,用来连接客户端和服务器端的数据传送进程。
数据传送进程实际完成文件的传送,在传送完毕后关闭数据传送连接并结束运行。
可能疑问点∶FTP 在进行文件传输时,同时在端口 20 和端口 21 建立 TCP 连接,其端口 21 用于控制连接,端口 20 用于数据连接,既然是 TCP,不应该是端对端的吗?应该一个时间段内只被一个客户进程独占才对,这不是和一个 FTP 服务器可以同时为多个客户进程服务相矛盾了吗?
解析∶服务器在收到客户机的请求后会和客户机重新商议端口的问题,即考虑使用临时端口来替换出 20 号、21 号端口。因此,服务器就可以继续使用 20 号和 21 号端口进行监听,所以不存在端口被一直占着的问题。这个问题不是重点,知道就好,不需要纠结。

解析∶A。FTP 需要保证可靠,故需要用到可靠的 TCP,而不使用不可靠的 UDP,所以排除选项 C 和 D。显然,传输命令用控制连接,传输数据用数据连接。
电子邮件
电子邮件的组成构成
电子邮件又称为 E-mail,是目前因特网上使用最频繁的一种服务。它为因特网用户提供了一种快速、便捷、廉价的通信方式。电子邮件把邮件发送到因特网服务提供商(Intemet Service Provider,ISP)的邮件服务器,并放在其中的收信人邮箱中,收信人可随时上网到 ISP 的邮件服务器进行读取。
一个电子邮件系统有以下 3 个主要构件。
- 用户代理∶用户与电子邮件系统的接口,如 Outlok、Foxmail。其基本功能是撰写、显示和处理。
- 邮件服务器∶因特网上所有的 ISP 都有邮件服务器,功能是发送和接收邮件,同时还要向发信人报告邮件传送的情况(已交付、被拒绝、丢失等)。
- 电子邮件使用的协议,如简单邮件传送协议(Simple MailTransfer Protocol,SMTP)、邮局协议版本 3(Post Offce Protocol-Version3,POP3)等。
电子邮件的发送和接收过程(见图 6-11)如下∶
- 发信人调用用户代理来编辑要发送的邮件。用户代理用 SMTP 把邮件传送给发送端邮件服务器。
- 发送端邮件服务器将邮件放入邮件缓存队列中,等待发送。
- 运行在发送端邮件服务器的 SMTP 客户进程发现在邮件缓存中有待发送的邮件,就向运行在接收端邮件服务器的 SMIP 服务器进程发起 TCP 连接的建立。
- TCP 连接建立后,SMTP 客户进程开始向远程的 SMIP 服务器进程发送邮件。当所有的待发送邮件发完了,SMTP 就关闭所建立的 TCP 连接。
- 运行在接收端邮件服务器中的 SMTP 服务器进程收到邮件后,将邮件放入收信人的用户邮箱中,等待收信人在方便时进行读取。

- 收信人在打算收信时,调用用户代理,使用 POP3(或 IMAP)将自己的邮件从接收端邮件服务器的用户邮箱中取回(如果邮箱中有来信)。
电子邮件格式与 MIME
电子邮件格式
电子邮件由信封和内容两部分组成。一般只规定了邮件内容中的首部格式,而邮件的主体部分由用户自由撰写。用户写好首部后,邮件系统自动将信封所需的信息提取出来并写在信封上。
邮件内容首部包含一些关键字,后面加上冒号,如 “To∶” 是收信人的邮件地址,“Subject∶” 是邮件的主题等。
补充知识点∶电子邮件地址的格式。TCP/IP 体系的电子邮件系统规定电子邮件地址的格式∶收件人邮箱名 @邮箱所在主机的域名,符号 “@” 读作 “at”,表示 “在” 的意思。例如,电子邮件地址
[email protected]
。MIEM
由于 SMTP 只限于传送一定长度的 7 位 ASCI 码邮件,于是提出了通用因特网邮件扩充(Multipurpose Internet Mail Extensions,MIME)。
MIME 的意图是继续使用目前的【RFC 822】格式,但 == 增加了邮件主体的结构 =,并定义了传送非 ASCII 码的编码规则。MIME 与 SMTP 的关系如图 6-12 所示。
关于 MIME 首部的格式不需要掌握,但是 MIME 定义了 == 两种将非 ASCII 码字符转换为 ASCII 码字符的编码方法需要提一下(笔者认为考的概率不大,因为重点在 MIME 协议的作用上,而不在于协议),下面一一讲解。

quoted-printable 编码
quoted-printable 编码方法适合所传数据中只有少量的非 ASCII 码,用一个等号 “=” 后面加两个数字字符来表示一个非 ASCII 码字符。
这两个数字就是该字符的十六进制值,ASCII 码字符不做转换。例如,汉字 “系统” 二字的二进制编码是 11001111 10110101 11001101 10110011(共有 32 位,但这 4 个字节都不是 ASCII 码,因为数值都超过了 127),其十六进制数字表示为 CFB5CDB3,用 quoted-prinable 编码表示为 = CF=B5-CD=B3,这 12 个字符都是可打印的 ASCⅡ 字符。再如,等号 “=” 的二进制代码为 00111101,即十六进制代码为 3D,因此等号 “=” 的 quoted-printable 编码为 “=3D”。
base64 编码
对于任意的二进制文件,可用 base64 编码。这种编码方法是先把二进制代码划分为几个 24 位等长的单元,然后把每一个 24 位单元划分为 4 个 6 位组,每一个 6 位组按以下方法转换成 ASCI 码。
6 位的二进制代码共有 64 种不同的值,从 0~63,用 A 表示 0,用 B 表示 1 等。26 个大写字母排列完毕后,排 26 个小写字母,再排 10 个数字,最后用 “+” 表示 62,用 “/” 表示 63。再用两个连在一起的等号 “==” 和一个等号 “=” 分别表示最后一组的代码只有 8 位或 16 位。回车和换行都忽略,它们可在任何地方插入,参考下面的例子。

SMTP 与 POP3
SMTP
SMTP 所规定的就是在两个相互通信的 SMTP 进程之间应如何交换信息。
SMTP 运行在 TCP 基础之上,使用 25 号端口,也使用客户 / 服务器模型。
SMTP 规定了 14 条命令和 21 种应答信息(不用记忆)。
SMTP 通信的 3 个阶段如下∶
- 连接建立。连接是在发送主机的 SMTP 客户和接收主机的 SMTP 服务器之间建立的。SMTP 不使用中间的邮件服务器。
- 邮件传送。
- 连接释放。邮件发送完毕后,SMTP 应释放 TCP 连接。
POP3
POP 是一个非常简单,但功能有限的邮件读取协议。现在使用的是它的第三个版本 POP3。
POP 也使用客户 / 服务器的工作方式。在接收邮件的用户计算机中必须运行 POP 客户程序,而在用户所连接的 ISP 的邮件服务器中运行 POP 服务器程序。
POP3 的一个特点是只要用户从 POP 服务器读取了邮件,POP 服务器就将该邮件删除。总结∶
(1)不要将邮件读取协议 POP 与邮件传送协议 SMTP 弄混
发信人的用户代理向源邮件服务器发送邮件以及源邮件服务器向目的邮件服务器发送邮件,都是使用 SMTP。而 POP 是用户从目的邮件服务器上读取邮件所使用的协议。
(2)邮件发送过程总结
- 客户端建立 TCP 连接至服务器。
- 服务器发送身份信息,确认连接已建立。
- 客户端发送身份信息,服务器确认收到。
- 客户端发送邮件接收者地址,服务器确认收到。
- 客户端发送邮件发送者地址,服务器确认收到。
- 客户端请求发送邮件内容,服务器确认准备好。
- 客户端发送邮件内容,最后以一个仅包含一个点(.)字符的行结束,服务器发回数据已收到的确认。
从上面这个过程可以看出,任何客户端都可以通过 SMTP 向邮件服务器发送邮件,而且邮件发送者的地址是完全可以伪造的,服务器也只有被动接收,这也是垃圾邮件泛滥的原因。
(3)邮件接收过程总结
- 客户端建立 TCP 连接至服务器。
- 服务器发送身份信息,确认连接已建立。
- 客户端发送 USER 命令 + 用户名,服务器确认收到。
- 客户端发送 PASS 命令 + 用户密码,服务器确认收到。
- 客户端发送 LIST 命令,服务器返回当前邮件箱的邮件个数列表。
- 客户端发送 RETR 命令 + 邮件编号,服务器发回相应的邮件内容。
- 客户端在接收完邮件后,可以选择是否发送 DELE 命令 + 邮件编号,通知服务器从邮箱中删除相应的邮件。
从上面这个过程可以看出,POP3 是由客户端决定是否将已收取的邮件保留在服务器的。此外,POP3 采用明文传送用户邮箱密码,这给邮件安全带来了隐患。
可能疑问点∶前面介绍 POP3 的时候说了 POP3 的一个特点是只要用户从 POP 服务器读取了邮件,POP 服务器就将该邮件删除,与现在的描述不是矛盾了吗?
不矛盾,POP 服务器会将用户的邮件从服务器上的信箱中下载到客户端的计算机上,并且在服务器删除这些邮件。虽然现在有些客户端通过设置可以在服务器上保留这些邮件,但是这些邮件只是作为副本保存。
注意∶SMTP 与 POP32012 年已考查一道选择题。
WWW
WWW 的概念和组成结构
WWW 的概念
WWW(World Wide Web,万维网)简称为 3W,它并非某种特殊的计算机网络。万维网是一个大规模的、联机式的信息储藏所。它的特点在于用链接的方法能非常方便地从因特网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息,如图 6-13 所示。WWW 还提供各类搜索引擎,使用户能够方便地查找信息。

WWW 的组成
WWW 把各种信息按照页面的形式组合,一个页面包含的信息可以有文本、图形、图像、声音、动画、链接等各种格式,这样一个页面也称为超媒体(如果页面中只有文字和链接,则称为超文本,注意区分),而页面的链接均称为超链接。
WWW 使用统一资源定位符(URL)来标志 WWW 上的各种文档。URL 的一般格式为
<协议>∶//< 主机 >∶< 端口号 >/< 路径 >
其中常见的协议有 HTTP、FTP 等。主机部分是存储该文档的计算机,可以是域名也可以是 IP 地址,端口号是服务器监听的端口(根据协议可以知道端口号,一般省略),路径一般也可省略,并且在 URL 中的字符对大写或小写没有要求。
万维网以客户 / 服务器方式工作。浏览器是在用户计算机上的万维网客户程序,而万维网文档所驻留的计算机则运行服务器程序,这个计算机称为万维网服务器。客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的文档。完整的工作流程如下∶
- Web 用户使用浏览器(指定 URL)与 Web 服务器建立连接,并发送浏览请求。
- Web 服务器把 URL 转换为文件路径,并返回信息给 Web 浏览器。
- 通信完成,关闭连接。
HTTP
HTP 的操作过程
超文本传送协议(HTTP)是在客户程序(如浏览器)与 WWW 服务器程序之间进行交互所使用的协议。HTTP 是面向事务的应用层协议,它使用 TCP 连接进行可靠传输,服务器默认监听在 80 端口。
从协议执行的过程来说,当浏览器要访问 WWW 服务器时,首先要完成对 WWW 服务器的域名解析。一旦获得了服务器的 IP 地址,浏览器将通过 TCP 向服务器发送连接建立请求。
每个服务器上都有一个服务进程,它不断地监听 TCP 的端口 80,当监听到连接请求后便与浏览器建立连接。TCP 连接建立后,浏览器就向服务器发送要求获取某一 Web 页面的 HTTP 请求。服务器收到 HTTP 请求后,将构建所请求的 Web 页的必需信息,并通过 HTTP 响应返回给浏览器。浏览器再将信息进行解释,然后将 Web 页显示给用户。最后,TCP 连接释放。
因此,HTTP 有两类报文,下面将详细讲解。总结∶TCP 协议族中各种应用层协议与传输层协议的关系总结见表 6-1(重点记住后面 3 个)。


HTTP 的报文结构(了解)HTTP 有两类报文∶
- 请求报文——从客户向服务器发送请求报文,如图 6-14 所示。
- 响应报文——从服务器到客户的回答,如图 6-15 所示。
由于 HTTP 是面向正文的(Text-oriented),所以在报文中的每一个字段都是一些 ASCII 码串,因而每个字段的长度都是不确定的。
报文由 3 个部分组成,即开始行、首部行和实体主体。
在请求报文中,开始行就是请求行。
从图 6-14 和图 6-15 可以看出,两种报文格式的区别就是开始行不同。
- 开始行∶用于区分是请求报文还是响应报文。在请求报文中的开始行称为请求行,而在响应报文中的开始行称为状态行。开始行的 3 个字段之间都以空格隔开。表 6-2 列出了 HTTP 请求报文中常用的几个方法。
- 首部行∶用来说明浏览器、服务器或报文主体的一些信息。
- 实体主体∶在请求报文中一般都不用这个字段,而在有些响应报文中也可能没有这个字段。
补充知识点∶HTTP 的工作方式。HTTP 既可以使用非持久连接,也可以使用持久连接。
非持久连接∶每一个网页元素对象的传输都需要单独建立一个 TCP 连接(“三次握手” 建立)。换句话说,每请求一个万维网文档所需的时间是该文档的传输时间加上两倍往返时间 RTT(一个 RTT 用于 TCP 连接,另一个 RTT 用于请求和接收文档)。
持久连接∶万维网服务器在发送响应后仍然保持这条连接,同一个客户和服务器可以继续在这条连接上传送后续的 HTP 请求和响应报文。
持久连接又分为非流水线(2011 年已经出题)和流水线两种方式。
对于非流水线方式,客户只能在接收到前一个请求的响应后才能发送新的请求。每个引用都必须有一个 RTT 延迟。
而流水线方式是 HTTP 客户每遇到一个对象引用就立即发出一个请求,因而 HTTP 客户可以一个接一个连续地发出各个引用对象的请求。如果所有的请求和响应都是连续发送的,那么所有引用到的对象共经历一个 RTT 延迟
非持续连接对每次请求/响应都建立一次TCP连接。在浏览器请求一个包含100个图片对象
的Web页面时,服务器需要传输1个基本HTML文件和100个图片对象,因此一共是101个对
象,需要打开和关闭TCP连接101次。
使用鼠标单击一个万维网文档时,若该文档除有文本外,还有三幅 gif 图像,则在 HTIP/1.0
中需要建立( )次 UDP 连接和( )次 TCP 连接。
A. 0, 4 B. 1, 3 C. 0, 2 D. 1, 2
Connection:
连接方式,Close表明为非持续连接方式,keep-alive表示持续连接
方式。Cookie值由服务器产生,HTTP请求报文中有Cookie报头表示曾经访问过www.test.edu.cn
服务器。
- 作者:duanren
- 链接:https://tangly1024.com/article/5ca2d754-cbd3-4614-99f2-423767e262c0
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。