应用层

大纲要求

(一)网络应用模型

  1. 客户/服务器模型

  2. P2P模型

(二)DNS系统

  1. 层次域名空间
  2. 域名服务器
  3. 域名解析过程

(三)FTP

  1. FTP的工作原理
  2. 控制连接与数据连接

(四)电子邮件

  1. 电子邮件系统的组成结构
  2. 电子邮件格式与MIME
  3. SMTP与POP3

(五)WWW

  1. WWW的概念与组成结构
  2. HTTP

核心考点

  1. (★★)域名解析过程
  2. (★★)FTP的工作原理
  3. (★★)HTTP

网络应用模型

本章复习建议∶应用层中的内容主要以概念性为主,而且与网络技术的日常应用息息相关。本章以选择题为主,重点把握应用层的相关概念、协议、服务过程和原理。

每个应用层协议都是为了解决某一类应用问题,而问题的解决又往往是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成的。应用层的具体内容就是规定应用进程在通信时所遵循的协议。这些应用进程之间相互通信和协作通常采用一定的模式,常见的有客户/服务器模型P2P模型。

客户/服务器模型(C/S 模型)

客户(Client)和服务器(Server)都是指通信中所涉及的两个应用进程

image-20200919204228948

如图6-1所示,客户/服务器模型所描述的是进程之间的服务和被服务的关系。服务可以是任意的应用,如文件传输服务、电子邮件服务等。在这个模型中,客户是服务的请求方,服务器是服务的提供方。例如,主机A向主机B发出服务请求,主机A是客户机;而主机B向主机A提供服务,主机B是服务器。

在客户机上运行的软件通常是被用户(如操作计算机的人)调用后运行,在打算通信时主动向服务器发起通信。因此,客户程序必须知道服务器程序的地址

此外,客户机上一般不需要特殊的硬件和复杂的操作系统。而服务器上运行的软件则是某些专门用来提供某种服务的程序,可同时处理多个远地或本地客户的请求。系统启动后即自动调用并一直不断地运行着,被动地等待并接受来自各地客户的通信请求。因此,服务器程序不需要知道客户程序的地址。服务器一般需要强大的硬件和高级的操作系统支持。

故事助记∶可以将服务器想象成一个大超市,去超市买东西的顾客称为客户。只有超市开着门(服务器开机,一般服务器都是永久开机的),才可向客户提供服务。客户必须知道超市的地址才可以去超市买东西(访问服务器),而超市肯定不需要知道每个顾客住在哪里,所以服务器不需要知道客户的地址。

客户/服务器模型主要特点如下∶

  1. 网络中各计算机的地位不平等,服务器可以通过对用户权限的限制来达到管理客户机的目的,使它们不能随意存储数据,更不能随意删除数据,或进行其他受限的网络活动。
  2. 整个网络的管理工作由少数服务器承担,所以网络的管理非常集中和方便。这一优势在大规模网络中更加明显。
  3. 可扩展性不佳。由于受服务器硬件和网络带宽的限制,服务器所能支持的客户数比较有限,当客户数增长较快时,会急剧影响网络应用系统的效率。

针对以上客户/服务器模型的一些限制,P2P模型改变了这种模式,下面详细讲解。

P2P模型

如图6-2所示,P2P模型指两个主机在通信时并不区分哪一个是服务请求方还是服务提供方。只要两个主机都运行了P2P软件,它们就可以进行平等的对等连接通信,比如双方都可以下载对方已经存储在硬盘中的共享文档(而在客户/服务器模型下,只有当客户机主动发起请求时,才能从服务器获得文档,或将文档传递给服务器,而且多个客户机之间如果想要共享文件,只能通过服务器中转)。例如,大家现在常用的QQLive和电驴等软件就是使用P2P模型。

image-20200919204700311

实际上,P2P模型从本质上来看仍然是使用客户/服务器方式,只是对等连接中的每一个主机既是客户又是服务器。例如,当主机C请求D的服务时,C是客户,D是服务器,,但如果C同时又向F提供服务,那么C又同时起着服务器的作用。

P2P模型带来的好处是,任何一台主机都可以成为服务器,改变了原来需要专用服务器的模式,很显然,多个客户机之间可以直接共享文档。此外,可以借助P2P网络模型,解决专用服务器的性能瓶颈问题(如播放流媒体时对服务器的压力过大,而通过P2P模型,可以利用大量的客户机来提供服务)。

P2P 模型主要特点如下∶

  1. 繁重的计算机任务可以被分配到各个节点上,利用每个节点空闲的计算能力和存储空间,聚合实现强大的服务。
  2. 系统可扩展性好。传统的服务器有连接带宽的限制,只能达到一定的客户端连接数。但是在P2P模型中,能避免这个问题。
  3. 网络更加健壮,不存在中心节点失效的问题。当一部分节点连接失败之后,其余的节点仍然能形成完整的网络。

DNS系统

DNS系统的概念

背景∶如果现在不允许你通过www.csbji.com来访问天勤论坛的主页,请问还有什么方式?

可直接使用存放天勤论坛主页的服务器的IP地址(116.255.186.25)来访问。当然,如果现在整个网络只有几个网站,人们通过记忆其服务器的IP地址来访问还是可以勉强记住的,但是成千上万的网站都需要记忆其服务器的IP地址才能正确访问,相信没有几个用户能爱上网络,于是就出现了域名。

这样,人们就可以通过便于记忆的域名来访问网站了。但是这个是表面上的,其实真正访问还是要通过IP地址,那么我们自然就想到应该存在一个东西,即可以将域名转换成相对应的IP地址,于是DNS系统就诞生了

从概念上可以将DNS分为3个部分∶层次域名空间域名服务器解析器,下面一一讲解。

注意∶域名中的"点"和点分十进制IP地址中的"点"并无一一对应的关系。

点分十进制IP地址中一定是包含3个"点"(如天勤论坛服务器IP地址116.255.186.25),但每一个域名中"点"的数目则不一定正好是3个(如www.csbii.com只有两个点)。

层次域名空间

因特网采用了层次树状结构的命名方法。

任何一个连接在因特网上的主机或路由器都有一个唯一的层次结构的名字,即域名(Domain Name)。域还可以被划分为子域,而子域还可被划分为子域的子域,这样就引入了顶级域名、二级域名、三级域名等。每个域名都由标号序列组成(各标号分别代表不同级别的域名),各标号之间用点隔开,格式如下∶

image-20200919205749948

注意∶级别最低的域名写在最左边,而级别最高的顶级域名写在最右边,且域名没有大小写之分,如WWW.CSBIJL.COMwww.csbiji.com均可访问天勤论坛。

image-20200919205622595

下面看一个域名实例,如图6-3所示。
顶级域名(Top Level Domain,TLD)主要分为以下三大类∶

  1. 国家顶级域名(nTLD),如.cn表示中国、.us表示美国、.k表示英国等。

  2. 通用顶级域名(gTLD),最早的顶级域名如下:

    image-20200919205929593

  3. 基础结构域名(Infrastructure Domain),这种顶级域名只有一个,即 arpa,用于反向域名解析,因此又称为反向域名。

图6-4展示了因特网的域名空间。

image-20200919210005797

域名服务器

因特网的域名系统(DNS)被设计成一个联机分布式的数据库系统,并采用客户/服务器模型名字到域名的解析是由若干个域名服务器来完成的,域名服务器程序在专设的节点上运行,运行该程序的机器称为域名服务器。

一个服务器所负责管辖的(或有权限的)范围称为区(Zone)。

如图6-5所示,各单位根据具体情况来划分自己管辖范围的区,但在一个区中的所有节点必须是能够连通的。每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射

DNS 服务器的管辖范围不是以"域"为单位,而是以"区"为单位,区一定小于或等于域。

因特网上的域名服务器系统是按照域名的层次来安排的,每个域名服务器都只对域名体系中的一部分进行管辖。因此,共有以下4种不同类型的域名服务器。

  1. 根域名服务器(最高层次的域名服务器)。根域名服务器是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址。不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助于根域名服务器

    注意∶根域名服务器用来管辖顶级域名(如.com),它并不直接把待查询的域名转换成IP 地址而是告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询

image-20200919210648792

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

在图6-6中,10.10.0.21就是浙江大学使用的本地DNS服务器。

image-20200919211906738

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

DNS服务器的树状结构如图6-7所示。

image-20200919211935346

域名解析过程

主机向本地域名服务器的查询都是采用递归查询(这个要记住,如图6-8和图6-9所示)。

如果主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS 客户的身份向其他域名服务器继续发出查询请求报文

本地域名服务器向根域名服务器的查询通常采用迭代查询,当然也可以采用递归查询,这取决于最初的查询请求报文的设置要求使用哪一种查询方式。下面分别介绍这两种查询方式。

迭代查询

当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的IP地址要么告诉本地域名服务器"下一步应当向哪一个域名服务器进行查询",然后让本地域名服务器进行后续的查询,如图6-8所示。

image-20200919212727787

注意∶因为主机向本地域名服务器的查询都是采用递归查询,所以迭代查询又称为递归与迭代相结合的查询方式。相比递归查询,这种方式更常用。

递归查询

递归查询是指本地域名服务器只需向根域名服务器查询一次,后面的几次查询都是在其他几个域名服务器之间进行的(见图6-9步骤③~⑥)。

如图6-9所示,在步骤⑦中,本地域名服务器从根域名服务器得到了所需的IP地址,最后在步骤⑧中,本地域名服务器把查询结果告诉主机 m.xyzcom

image-20200919212753518

补充知识点∶

  1. 连接在因特网上的主机名必须是唯一的吗?

    解析∶这是肯定的。因特网不允许有两台(或更多的)主机具有同样的主机名。但是必须注意,这里所说的"主机名"是指主机的"全名"(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.comwww.renren.com 都是对应人人网。

  2. 在因特网中通过域名系统查找某台主机的IP地址,和在电话系统中通过114查号台查找某个单位的电话号码相比,有何异同之处?

    解析∶相同之处∶

    电话系统∶在电话机上只能拨打被叫用户的电话号码才能进行通信。114查号台将被叫用户名字转换为电话号码告诉主叫用户。

    因特网∶在 IP数据报上必须填入目的主机的IP地址才能发送出去。域名系统将目的主机名字解析为(转换为)32位二进制数的IP地址返回给源主机。

    不同之处∶

    电话系统∶必须由主叫用户拨打114才能进行查号。如果要查找非本市的电话号码,则必须拨打长途电话。例如,要在南京查找北京的民航售票处的电话号码,则南京的114 查号台无法给你回答。你在南京必须拨打010-114(长途电话)进行查询。

    因特网∶只要源主机上的应用程序遇到目的主机名需要转换为目的主机的IP地址,就由源主机自动向域名服务器发出DNS查询报文。不管将该主机的域名解析出来的DNS 服务器距离源主机有多远,它都能自动将解析的结果返回给源主机。所有这些复杂的查询过程对用户来说都是透明的,用户感觉不到这些域名解析过程。

    有一种方法可以使用户体会到域名解析是需要一些时间的。在使用浏览器访问某个远地网站时,将网页地址中的域名换成为它的点分十进制数的IP地址,看找到这个网站时是否要节省一些时间。

  3. ARP和 DNS是否有些相似?它们有何区别?

    解析∶ARP和 DNS的相之处仅仅是在形式上都是主机发送出请求,然后从相应的服务器收到所需的回答。另外一点是,这两个协议经常是连在一起使用的。但重要是,这两个协议是完全不同的。

    DNS是应用层协议,用来请求域名服务器将连接在因特网上的某个主机的域名解析为32位二进制数的IP地址。在大多数情况下,本地的域名服务器很可能还不知道所请求的主机的IP地址,于是还要继续寻找其他的域名服务器。这样很可能要在因特网上寻找多次才能得到所需的结果,最后将结果发送给原来发出请求的主机。

    ARP是网络层协议,它采用广播方式请求将连接在本地以太网上的某个主机或路由器的32位的 IP地址解析为 48 位的以太网硬件地址

  4. 名字的高速缓存是什么?

    解析∶每个域名服务器都维护一个高速缓存存放最近用过的名字以及从何处获得名字映射信息的记录。这样可大大减轻根域名服务器的负荷,使因特网上的DNS查询请求和回答报文的数量大为减少。

    为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器,并处理超过合理时间的项(如每个项目只存放两天)。当权限域名服务器回答一个查词请求时,在响应中都指明绑定有效存在的时间值。增加此时间值可减少网络开销,而减少此时间值可提高域名转换的准确性。

  5. 关于递归和迭代的记忆方式。

    解析∶不少考生知道有递归和迭代两种解析方式,但是做题的时候,经常忘记了到底哪种是递归,哪种是迭代,于是又需要翻阅教材。下面给出一个过目不忘的记忆方法。

    方法∶递归中有一个"递"可以联想为"弟"。记住一句话∶我一定要找到弟弟才回来,就是说递归一定要找到主机需要的 IP地址才返回

image-20200919214050240

解析∶A。首先,如果主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份向其他服务器继续发出查询请求报文,而不是让该主机自己进行下一步的查询,所以主机只需向本地域名服务器发送一条域名请求即可;其次,题目已经说明用递归方法解析另一个网络某主机域名,所以现在需要在脑海中形成一个概念(什么是递归),用一句话来记忆∶递归=直到找到"弟弟"才回来(递和弟是谐音,就是说递归方法解析一定要查到主机需要的IP地址才返回,所以本地域名服务器只需发送一条域名请求给根域名服务器即可,然后依次递归,最后再依次返回结果。

FTP

FTP的工作原理

文件传送协议(FTP)是因特网上最广泛使用的传送协议。FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。FTP屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。

FTP只提供文件传送的一些基本服务,它使用TCP可靠地传输服务。FTP使用客户/服务器模型

一个FTP服务器进程可同时为多个客户进程提供服务

FTP的服务器进程由两大部分组成,一个主进程负责接收新的请求;另外有若干个从属进程,负责处理单个请求。主进程的工作步骤如下∶

  1. 打开熟知端口(端口号为21),使客户进程能够连接上。
  2. 等待客户进程发出连接请求。
  3. 启动从属进程来处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建一些其他子进程。
  4. 回到等待状态,继续接收其他客户进程发来的请求。主进程与从属进程的处理是并发进行的

控制连接与数据连接

在进行文件传输时,FTP的客户机和服务器之间要建立两个TCP连接一个用于传输控制命令和响应,称为控制连接;另一个用于实际的文件内容传输,称为数据连接,如图6-10 所示。

image-20200919214557831

FTP服务器监听在21号端口,等待客户机连接,建立在这个端口上的连接称为控制连接,客户机可以通过这个连接向服务器发送各种请求,如登录、改变当前目录、切换数据传输模式、列目录内容、上传文件等。

当需要传送文件时,服务器和客户机之间要建立另外一个连接,这个称为数据连接

控制连接在整个会话期间一直保持打开,FTP客户机发出的传送请求通过控制连接发送给服务器端的控制进程,但控制连接不用于传送文件。

实际用于传送文件的是数据连接。服务器端的控制进程在接收到FTP客户机发送来的文件传输请求后就创建数据传送进程和数据连接,用来连接客户端和服务器端的数据传送进程。

数据传送进程实际完成文件的传送,在传送完毕后关闭数据传送连接并结束运行。

可能疑问点∶FTP在进行文件传输时,同时在端口20和端口21建立TCP连接,其端口21用于控制连接,端口20用于数据连接,既然是TCP,不应该是端对端的吗?应该一个时间段内只被一个客户进程独占才对,这不是和一个FTP服务器可以同时为多个客户进程服务相矛盾了吗?

解析∶服务器在收到客户机的请求后会和客户机重新商议端口的问题,即考虑使用临时端口来替换出20号、21号端口。因此,服务器就可以继续使用20号和21号端口进行监听,所以不存在端口被一直占着的问题。这个问题不是重点,知道就好,不需要纠结。

image-20200919214834459

解析∶A。FTP需要保证可靠,故需要用到可靠的TCP,而不使用不可靠的UDP,所以排除选项C和D。显然,传输命令用控制连接,传输数据用数据连接。

电子邮件

电子邮件的组成构成

电子邮件又称为 E-mail,是目前因特网上使用最频繁的一种服务。它为因特网用户提供了一种快速、便捷、廉价的通信方式。电子邮件把邮件发送到因特网服务提供商(Intemet Service Provider,ISP)的邮件服务器,并放在其中的收信人邮箱中,收信人可随时上网到ISP 的邮件服务器进行读取。
一个电子邮件系统有以下3个主要构件。

  1. 用户代理∶用户与电子邮件系统的接口,如Outlok、Foxmail。其基本功能是撰写、显示和处理。
  2. 邮件服务器∶因特网上所有的ISP都有邮件服务器,功能是发送和接收邮件,同时还要向发信人报告邮件传送的情况(已交付、被拒绝、丢失等)。
  3. 电子邮件使用的协议,如简单邮件传送协议(Simple MailTransfer Protocol,SMTP)、邮局协议版本3(Post Offce Protocol-Version3,POP3)等。

电子邮件的发送和接收过程(见图6-11)如下∶

  1. 发信人调用用户代理来编辑要发送的邮件。用户代理用SMTP把邮件传送给发送端邮件服务器。
  2. 发送端邮件服务器将邮件放入邮件缓存队列中,等待发送。
  3. 运行在发送端邮件服务器的SMTP客户进程发现在邮件缓存中有待发送的邮件,就向运行在接收端邮件服务器的SMIP服务器进程发起 TCP连接的建立。
  4. TCP连接建立后,SMTP客户进程开始向远程的SMIP服务器进程发送邮件。当所有的待发送邮件发完了,SMTP就关闭所建立的TCP连接。
  5. 运行在接收端邮件服务器中的SMTP服务器进程收到邮件后,将邮件放入收信人的用户邮箱中,等待收信人在方便时进行读取。

image-20200919215150645

  1. 收信人在打算收信时,调用用户代理,使用POP3(或 IMAP)将自己的邮件从接收端邮件服务器的用户邮箱中取回(如果邮箱中有来信)。

电子邮件格式与MIME

电子邮件格式

电子邮件由信封和内容两部分组成。一般只规定了邮件内容中的首部格式,而邮件的主体部分由用户自由撰写。用户写好首部后,邮件系统自动将信封所需的信息提取出来并写在信封上。

邮件内容首部包含一些关键字,后面加上冒号,如"To∶"是收信人的邮件地址,"Subject∶"是邮件的主题等。

补充知识点∶电子邮件地址的格式。TCP/IP体系的电子邮件系统规定电子邮件地址的格式∶收件人邮箱名@邮箱所在主机的域名,符号"@"读作"at",表示"在"的意思。例如,电子邮件地址 zhangsan@zju.edu.cn

MIEM

由于SMTP只限于传送一定长度的7位 ASCI码邮件,于是提出了通用因特网邮件扩充(Multipurpose Internet Mail Extensions,MIME)。

MIME的意图是继续使用目前的【RFC 822】格式,但==增加了邮件主体的结构=,并定义了传送非 ASCII码的编码规则。MIME与SMTP的关系如图6-12所示。

关于 MIME 首部的格式不需要掌握,但是MIME 定义了==两种将非 ASCII码字符转换为ASCII码字符的编码方法需要提一下(笔者认为考的概率不大,因为重点在 MIME 协议的作用上,而不在于协议),下面一一讲解。

image-20200919215327049

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位。回车和换行都忽略,它们可在任何地方插入,参考下面的例子。

image-20200919215648162

SMTP与POP3

SMTP

SMTP所规定的就是在两个相互通信的SMTP进程之间应如何交换信息

SMTP运行在TCP基础之上使用25号端口,也使用客户/服务器模型

SMTP规定了14条命令21种应答信息(不用记忆)。

SMTP通信的3个阶段如下∶

  1. 连接建立。连接是在发送主机的SMTP客户和接收主机的SMTP服务器之间建立的。SMTP不使用中间的邮件服务器。
  2. 邮件传送。
  3. 连接释放。邮件发送完毕后,SMTP应释放TCP连接。

POP3

POP是一个非常简单,但功能有限的邮件读取协议。现在使用的是它的第三个版本POP3。

POP也使用客户/服务器的工作方式。在接收邮件的用户计算机中必须运行 POP客户程序,而在用户所连接的ISP的邮件服务器中运行 POP服务器程序。

POP3的一个特点是只要用户从POP服务器读取了邮件,POP服务器就将该邮件删除。总结∶

(1)不要将邮件读取协议POP与邮件传送协议 SMTP弄混

发信人的用户代理向源邮件服务器发送邮件以及源邮件服务器向目的邮件服务器发送邮件,都是使用SMTP。而POP是用户从目的邮件服务器上读取邮件所使用的协议

(2)邮件发送过程总结

  1. 客户端建立TCP连接至服务器。
  2. 服务器发送身份信息,确认连接已建立。
  3. 客户端发送身份信息,服务器确认收到。
  4. 客户端发送邮件接收者地址,服务器确认收到。
  5. 客户端发送邮件发送者地址,服务器确认收到。
  6. 客户端请求发送邮件内容,服务器确认准备好。
  7. 客户端发送邮件内容,最后以一个仅包含一个点(.)字符的行结束,服务器发回数据已收到的确认。

从上面这个过程可以看出,任何客户端都可以通过SMTP向邮件服务器发送邮件,而且邮件发送者的地址是完全可以伪造的,服务器也只有被动接收,这也是垃圾邮件泛滥的原因。

(3)邮件接收过程总结

  1. 客户端建立 TCP连接至服务器。
  2. 服务器发送身份信息,确认连接已建立。
  3. 客户端发送USER命令+用户名,服务器确认收到。
  4. 客户端发送PASS命令+用户密码,服务器确认收到。
  5. 客户端发送LIST命令,服务器返回当前邮件箱的邮件个数列表。
  6. 客户端发送RETR命令+邮件编号,服务器发回相应的邮件内容。
  7. 客户端在接收完邮件后,可以选择是否发送DELE 命令+邮件编号,通知服务器从邮箱中删除相应的邮件。

从上面这个过程可以看出,POP3是由客户端决定是否将已收取的邮件保留在服务器的。此外,POP3采用明文传送用户邮箱密码,这给邮件安全带来了隐患。

可能疑问点∶前面介绍POP3的时候说了POP3的一个特点是只要用户从POP服务器读取了邮件,POP服务器就将该邮件删除,与现在的描述不是矛盾了吗?

不矛盾,POP服务器会将用户的邮件从服务器上的信箱中下载到客户端的计算机上,并且在服务器删除这些邮件。虽然现在有些客户端通过设置可以在服务器上保留这些邮件,但是这些邮件只是作为副本保存。

注意∶SMTP与POP32012年已考查一道选择题。

WWW

WWW的概念和组成结构

WWW的概念

WWW(World Wide Web,万维网)简称为3W,它并非某种特殊的计算机网络。万维网是一个大规模的、联机式的信息储藏所。它的特点在于用链接的方法能非常方便地从因特网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息,如图6-13所示。WWW还提供各类搜索引擎,使用户能够方便地查找信息。

image-20200919221759652

WWW的组成

WWW把各种信息按照页面的形式组合,一个页面包含的信息可以有文本、图形、图像、声音、动画、链接等各种格式,这样一个页面也称为超媒体(如果页面中只有文字和链接,则称为超文本,注意区分),而页面的链接均称为超链接。
WWW使用统一资源定位符(URL)来标志WWW上的各种文档。URL的一般格式为

<协议>∶//<主机>∶<端口号>/<路径>

其中常见的协议有HTTP、FTP等。主机部分是存储该文档的计算机,可以是域名也可以是IP地址,端口号是服务器监听的端口(根据协议可以知道端口号,一般省略),路径一般也可省略,并且在 URL中的字符对大写或小写没有要求。

万维网以客户/服务器方式工作。浏览器是在用户计算机上的万维网客户程序,而万维网文档所驻留的计算机则运行服务器程序,这个计算机称为万维网服务器。客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的文档。完整的工作流程如下∶

  1. Web用户使用浏览器(指定URL)与Web服务器建立连接,并发送浏览请求。
  2. Web服务器把URL转换为文件路径,并返回信息给 Web浏览器。
  3. 通信完成,关闭连接。

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个)。

image-20200919222104662

HTTP的报文结构(了解)HTTP有两类报文∶

  1. 请求报文——从客户向服务器发送请求报文,如图6-14所示。
  2. 响应报文——从服务器到客户的回答,如图6-15所示。

image-20200919222423158

由于HTTP是面向正文的(Text-oriented),所以在报文中的每一个字段都是一些 ASCII码串,因而每个字段的长度都是不确定的。

报文由3个部分组成,即开始行首部行实体主体

在请求报文中,开始行就是请求行。

从图6-14和图6-15可以看出,两种报文格式的区别就是开始行不同。

  1. 开始行∶用于区分是请求报文还是响应报文。在请求报文中的开始行称为请求行,而在响应报文中的开始行称为状态行。开始行的3个字段之间都以空格隔开。表6-2列出了HTTP请求报文中常用的几个方法。
  2. 首部行∶用来说明浏览器、服务器或报文主体的一些信息。
  3. 实体主体∶在请求报文中一般都不用这个字段,而在有些响应报文中也可能没有这个字段。

补充知识点∶HTTP的工作方式。

解析∶HTTP既可以使用非持久连接,也可以使用持久连接。

非持久连接∶每一个网页元素对象的传输都需要单独建立一个TCP连接("三次握手"建立)。换句话说,每请求一个万维网文档所需的时间是该文档的传输时间加上两倍往返时间 RTT(一个RTT用于TCP连接,另一个RTT用于请求和接收文档)。

持久连接∶万维网服务器在发送响应后仍然保持这条连接,同一个客户和服务器可以继续在这条连接上传送后续的HTP请求和响应报文

持久连接又分为非流水线(2011年已经出题)和流水线两种方式。

对于非流水线方式,客户只能在接收到前一个请求的响应后才能发送新的请求

流水线方式是HTTP客户每遇到一个对象引用就立即发出一个请求,因而HTTP客户可以一个接一个连续地发出各个引用对象的请求

如果所有的请求和响应都是连续发送的,那么所有引用到的对象共经历一个RTT 延迟,而不是像非流水线那样,每个引用都必须有一个RTT延迟

posted @ 2020-09-19 20:39  DearLeslie  阅读(796)  评论(0编辑  收藏  举报