本系列文章为湖南科技大学高军老师的计算机网络微课堂学习笔记,前面的系列文章链接如下:
计算机网络:P1-概述
计算机网络:P2-物理层
计算机网络:P3.1-数据链路层(上)
计算机网络:P3.2-数据链路层(中)
计算机网络:P3.3-数据链路层(下)
计算机网络:P4.1-网络层(上)
计算机网络:P4.2-网络层(中)
计算机网络:P4.3-网络层(下)
计算机网络:P5.1-运输层(上)
计算机网络:P5.2-运输层(下)

文章目录

  • 一、应用层概述
  • 二、客户-服务器方式和对等方式
  • 三、动态主机配置协议DHCP
  • 四、域名系统DNS
  • 五、文件传输协议FTP
  • 六、电子邮件
  • 七、万维网WWW

一、应用层概述

前言

在之前的课程中,我们按计算机网络体系结构由低到高的顺序依次学习了物理层、数据链路层、网络层、运输层。
①物理层解决使用何种信号来传输比特的问题。
②数据链路层解决分组在一个网络或一段链路上传输的问题。
③网络层解决分组在多个网络上传输和路由的问题。
④运输层解决进程之间基于网络的通信问题。
⑤计算机网络体系结构中的应用层享受其下各层提供的服务,解决通过应用进程的交互来实现特定网络应用的问题

应用层

应用层是计算机网络体系结构的最顶层,其功能是设计和建立计算机网络的最终目的,也是计算机网络中发展最快的部分。
----从早期基于文本的应用(例如电子邮件、远程登录、文件传输、新闻组等)
----到20世纪90年代将因特网带入千家万户的万维网WWW。
----再到当今流行的即时通信、P2P文件共享以及各种音视频应用
----网络应用一直层出不穷。此外,计算设备的小型化和无处不在,宽带住宅接入和无线接入的日益普及和迅速发展,为未来更多的新型网络应用提供了广阔的舞台。

学习重点

在本章中,我们将以一些经典的网络应用为例,来学习有关网络应用的原理、协议和实现方面的知识。
例子: 我们在浏览器的地址栏中输入某个网站的域名后,就可以访问该网站的内容。这就是推动因特网飞速发展的万维网应用,其相关的应用层协议为超文本传送协议HTTP。用户在浏览器地址栏中输入的是"见名知意"的域名,而TCP/IP体系的网际层使用IP地址来标识目的主机。从域名到IP地址的转换工作由属于应用层范畴的域名系统DNS在后台帮用户自动完成,以方便用户的使用。

除了万维网应用和域名系统外。常见的应用还有动态主机配置、电子邮件、文件传送和P2P文件共享、多媒体网络应用等。我们将在本篇博客的后续章节中分别介绍这些网络应用的相关协议和基本工作原理。

小测验

1、在计算机网络体系结构中,应用层的主要功能是
A. 实现进程之间基于网络的通信
B. 通过进程之间的交互来实现特定网络应用
C. 实现分组在多个网络上传输
D. 透明传输比特流
答案:B

2、以下不属于TCP/IP体系结构应用层范畴的是
A. HTTP
B. DNS
C. DHCP
D. UDP
答案:D

二、客户-服务器方式和对等方式

客户/服务器方式、对等方式

我们知道,网络应用程序运行在处于网络边缘的不同端系统上,通过彼此间的通信来共同完成某项任务。因此,开发一种新的网络应用首先要考虑的问题就是网络应用程序在各种端系统上的组织方式和它们之间的关系。目前流行的主要有以下两种:
①客户/服务器方式,也称为C/S(Client/Server)方式。
②对等方式,也称为P2P(Peer-to-Peer)方式。

客户/服务器方式(C/S方式)

客户和服务器是指通信中所涉及的两个应用进程,客户服务器方式所描述的是进程之间服务和被服务的关系。
例子: ①如图所示,处于网络边缘的主机A中运行的是客户程序,正在运行的客户程序称为客户进程,也可简称为客户。需要注意的是,运行客户进程的主机应称为客户计算机,但有时也简称为客户。
②处于网络边缘的主机B中运行的是服务器程序,正在运行的服务器程序称为服务器进程,也可简称为服务器。需要注意的是,运行服务器进程的主机应称为服务器计算机,但有时也简称为服务器。
③在客户/服务器方式下,客户向服务器请求服务。服务器收到服务请求后向客户提供服务。也就是说,客户是服务的请求方,服务器是服务的提供方。服务器总是处于运行状态,并等待客户的服务请求。服务器具有固定的运输层端口号,例如HTTP服务器的默认端口号为80。而运行服务器的主机也具有固定的IP地址。

C/S方式特点:
①C/S方式是因特网上传统的、同时也是最成熟的方式,很多我们熟悉的网络应用采用的都是C/S方式。包括万维网、电子邮件、文件传输等。
②基于C/S方式的应用服务通常是服务集中型的,即应用服务集中在网络中比客户计算机少得多的服务器计算机上。
③由于一台服务器计算机要为多个客户机提供服务,在C/S应用中,常会出现服务器计算机跟不上众多客户机请求的情况。
为此,在C/S应用中,常用计算机群集或服务器场来构建一个强大的虚拟服务器。

对等方式(P2P方式)

在P2P方式中,没有固定的服务请求者和服务提供者。分布在网络边缘各端系统中的应用进程是对等的,被称为对等方。对等方相互之间直接通信。每个对等方既是服务的请求者,又是服务的提供者。
例子: 如图所示,处于网络边缘的主机C、D、E、F中运行着同一种P2P程序,例如某种网络下载工具软件。E和F中的P2P进程互为对等方、C和D中的P2P进程互为对等方、而E中的P2P进程还和D中的P2P进程互为对等方。我们可以想象成E的P2P进程正在从F下载文件,与此同时还为D的P2P进程提供下载服务。

目前在因特网上流行的P2P应用主要包括P2P文件共享、即时通信、P2P流媒体、分布式存储等。
P2P方式的特点:
①基于P2P的应用是服务分散型的。因为服务不是集中在少数几个服务器计算机中,而是分散在大量对等计算机中。这些计算机并不为服务提供商所有,而是为个人控制的桌面计算机和笔记本电脑,他们通常位于住宅、校园和办公室中。
②P2P方式的最突出特性之一就是它的可扩展性。因为系统每增加一个对等方,不仅增加的是服务的请求者,同时也增加了服务的提供者。系统性能不会因为规模的增大而降低。
③P2P方式具有成本上的优势,因为它通常不需要庞大的服务器设施和服务器带宽。为了降低成本,服务提供商对于将P2P方式用于应用的兴趣越来越大。

小测验

1、用户提出服务请求,网络将用户请求传送到服务器;服务器执行用户请求,完成所要求的操作并将结果送回用户,这种工作方式称为
A. C/S方式
B. P2P方式
C. CSMA/CD方式
D. PPP方式
答案:A

2、以下有关P2P方式的叙述中,错误的是
A. 没有固定的服务请求者和服务提供者
B. 对等方相互之间直接通信
C. 每个对等方既是服务的请求者,又是服务的提供者
D. 基于P2P的应用是服务集中型的,因为服务集中在少数几个服务器计算机中
答案:D

三、动态主机配置协议DHCP

DHCP的作用

例子: 如图所示,有这样一个网络拓朴。我们应该给网络中的各主机设置怎样的网络相关配置信息,才能使他们可以正常访问网络中的web服务器?

思路: 根据我们之前课程所介绍过的相关知识可知,需要给网络中的各主机正确配置IP地址、子网掩码、默认网关、DNS服务器等网络相关配置信息。例如,下图是我们给两台主机手工配置的网络相关配置信息。试想一下,如果网络中的主机数量比较多,则这种手工配置的工作量就比较大,并且容易出错。

如果我们给网络中添加一台DHCP服务器,在该服务器中设置好可为网络中其它各主机配置的网络配置信息。网络中各主机开机后自动启动DHCP程序,向DHCP服务器请求自己的网络配置信息。这样,网络中的各主机就都可以从DHCP服务器自动获取网络配置信息,而不用手工参与。

举例说明DHCP的工作过程

背景: 假设网络中有两台DHCP服务器和多台用户主机。为了简单而有效地描述DHCP的工作过程,我们画出网络中的这两台DHCP服务器和一台用户主机。
----DHCP使用客户/服务器方式。在DHCP服务器上运行DHCP服务器进程,也可简称为DHCP服务器。在用户主机上运行DHCP客户进程,也可简称为DHCP客户。
----DHCP是TCP/IP协议体系应用层中的协议,它使用运输层的UDP所提供的服务。也就是说,DHCP报文在运输层会被封装成为UDP用户数据报。
----DHCP服务器使用的UDP端口是67,DHCP客户使用的UDP端口是68,这两个UDP端口都是熟知端口。
----封装有DHCP报文的UDP用户数据报在网络层会被封装成IP数据报,然后再根据所使用的网络接口封装成相应的数据链路层的帧进行发送,例如封装成以太网帧。为了简单起见,在后续描述过程中除非有特别需要,否则我们将不再每次描述DHCP报文逐层封装的过程。

DHCP客户与DHCP服务器的交互过程:
当启用主机的DHCP后,DHCP客户将广播发送DHCP发现报文。
----封装该报文的IP数据报的源IP地址为0.0.0.0,这是因为主机目前还未分配到IP地址,因此使用该地址来代替。
----目的IP地址为广播地址255.255.255.255,之所以进行广播发送,是因为主机现在并不知道网络中有哪几个DHCP服务器,它们的IP地址各是什么。

由于是广播的IP数据报,因此网络中的所有设备都会收到该IP数据报,并对其层层解封,解封出封装有DHCP发现报文的UDP用户数据报。
----对于DHCP客户,其应用层没有监听该UDP用户数据报的目的端口67的进程,也就是DHCP服务器进程,因此无法交付DHCP发现报文,只能丢弃。
----而对于DHCP服务器,其应用层始终运行着的DHCP服务器进程,因此会接受该DHCP发现报文并做出响应。
DHCP报文的格式比较复杂,对于DHCP发现报文,我们只需要知道其内部封装有事务ID和DHCP客户端的MAC地址即可。
DHCP服务器收到DHCP发现报文后,根据其中封装的DHCP客户端的MAC地址来查找自己的数据库,看是否有针对该MAC地址的配置信息。如果有,则使用这些配置信息来构建并发送DHCP提供报文。如果没有,则采用默认配置信息来构建并发送DHCP提供报文。
----封装该报文的IP数据报的源IP地址为DHCP服务器的IP地址。
----目的IP地址仍为广播地址。仍然使用广播地址的原因是主机目前还没有配置IP地址,为了使主机可以收到,只能发送广播。
----这样一来,网络中的所有设备都会收到该IP数据报,并对其层层解封,解封出封装有DHCP提供报文的UDP用户数据报。
----对于DHCP服务器,其应用层没有监听该UDP用户数据报目的端口68的进程,也就是DHCP客户进程,因此无法交付DHCP提供报文,只能丢弃。
----而对于DHCP客户,其应用层运行着DHCP客户进程,因此会接受该DHCP提供报文并作出相应处理。

DHCP客户会根据DHCP提供报文中的事务ID来判断该报文是否是自己所请求的报文。换句话说,如果该事务ID与自己之前发送的DHCP发现报文中封装的事务ID相等,就表明这是自己所请求的报文,就可以接受该报文,否则就丢弃该报文。DHCP提供报文中还封装有配置信息,例如IP地址、子网掩码、地址租期、默认网关、DNS服务器等。需要注意的是,DHCP服务器从自己的IP地址池中挑选待租用给主机的IP地址时,会使用ARP来确保所选IP地址未被网络中其他主机占用。

在本例中,DHCP客户会收到两个DHCP服务器发来的DHCP提供报文,DHCP客户从中选择一个。一般来说,选择先到的那个,并向所选择的DHCP服务器发送DHCP请求报文。
----封装该报文的IP数据报的源地址仍为0.0.0.0,因为此时DHCP客户才从多个DHCP服务器中挑选一个作为自己的DHCP服务器,它首先需要征得该服务器的同意,之后才能正式使用向该DHCP服务器租用的IP地址。
----目的IP地址仍为广播地址,这样做的目的是不用向网络中的每一个DHCP服务器单播发送DHCP请求报文,来告知它们是否请求它们作为自己的DHCP服务器。
----DHCP请求报文中封装有事务ID、DHCP客户端的MAC地址,接受的租约中的IP地址,提供此租约的DHCP服务器端的IP地址等信息。

在本例中,假设DHCP客户选择DHCP服务器1作为自己的DHCP服务器,并且DHCP服务器1接受该请求。于是,DHCP服务器1给DHCP客户发送DHCP确认报文,封装该报文的IP数据报的源IP地址为DHCP服务器1的IP地址,目的IP地址仍为广播地址。

DHCP客户收到该确认报文后,就可以使用所租用到的IP地址了。需要注意的是,在使用租用的IP地址之前,主机还会使用ARP检测该IP地址是否已被网络中其他主机占用。
----若被占用,DHCP客户会给DHCP服务器发送DHCP谢绝报文来谢绝IP地址租约,并重新发送DHCP发现报文。
----若未被占用,则可以使用租约中的IP地址与网络中的其他主机通信了。

当租用期过了一半时,DHCP客户会向DHCP服务器发送DHCP请求报文来请求更新租用期。封装该报文的IP数据报的源IP地址为DHCP客户之前租用的IP地址,目的IP地址为DHCP服务器的地址。

----DHCP服务器若同意,则发回DHCP确认报文。这样,DHCP客户就得到了新的租用期。
----DHCP服务器若不同意,则发回DHCP否认报文。这时,DHCP客户必须立即停止使用之前租用的IP地址,并重新发送DHCP发现报文来重新申请IP地址。
----DHCP服务器若未作出响应,则在租用期过了百分之八十七点五时,DHCP客户必须重新发送DHCP请求报文,然后继续等待DHCP服务器可能作出的反应。若DHCP服务器未作出反应,则当租用期到期后,DHCP客户必须立即停止使用之前租用的IP地址,并重新发送DHCP发现报文来重新申请IP地址。

DHCP客户可以随时提前终止DHCP服务器所提供的租用期,这时只需要向DHCP服务器发送DHCP释放报文段即可。

总结: 综上所述,我们将整个划分为以下几部分:
①DHCP客户寻找DHCP服务器。
②DHCP服务器向DHCP客户提供IP地址租用。
③DHCP客户接受IP地址租约。
④DHCP服务器确认IP地址租约。
⑤DHCP客户进行IP地址续约。
⑥DHCP客户可以随时解除IP地址租约。

注意: DHCP服务器在给DHCP客户挑选IP地址时,使用ARP来确保所挑选的IP地址未被网络中其他主机占用。而DHCP客户在使用所租用的IP地址之前,也会使用ARP来检测该IP地址是否已被网络中其他主机占用。

DHCP中继代理

如图所示,有这样一个网络拓扑。请大家思考一下,该网络中的各主机是否可以通过DHCP来自动获取到网络配置信息呢?

答案: 不能。原因很简单,该网络中的主机广播发送DHCP发现报文,但该广播报文不会被路由器转发,而是丢弃。

解决方案: 给该路由器配置DHCP服务器的IP地址,并使之成为DHCP中继代理。这样,该网络中的各主机就可以通过DHCP来自动获取到网络配置信息了。当该路由器收到广播的DHCP发现报文后,会将其单播转发给DHCP服务器。DHCP客户和DHCP服务器通过该路由器的后续交互过程我们就不再赘述了。

使用DHCP中继代理的主要原因是我们并不愿意在每一个网络上都设置一个DHCP服务器,因为这样会使DHCP服务器的数量太多。

小测验

1、DHCP的作用是
A. 通过IP地址来获取MAC地址
B. 通过域名来获取IP地址
C. 使网络中各主机自动从DHCP服务器获取IP地址、默认网关等网络配置信息
D. 使网络中各主机自动从DHCP服务器获取MAC地址和域名
答案:C你选对了

2、封装DHCP DISCOVER报文的IP数据报,其首部中源IP地址字段的值和目的IP地址字段的值分别是
A. 0.0.0.0,1.1.1.1
B. 1.1.1.1,0.0.0.0
C. 0.0.0.0,255.255.255.255
D. 255.255.255.255,1.1.1.1
答案:C

四、域名系统DNS

举例说明域名系统DNS(Domain Name System)的作用

如图所示,因特网中的某台主机要访问某台web服务器。我们只需在用户主机中运行某个浏览器软件,在其地址栏中输入要访问的web服务器的域名,并按下回车键,即可访问到web服务器所提供的内容。这是大家最常用的一种网络应用。

接下来,我们在用户主机中使用ping命令来测试一下用户主机与web服务器的连通性。可以看到,我们ping的是web服务器的域名,但ping命令实际上ping的是web服务器的IP地址。这与我们之前课程中所介绍的TCP/IP体系采用IP地址进行寻址的知识是一致的。也就是说,即使不使用域名,也可以通过IP地址来寻址目的主机。但域名与IP地址相比,便于人们记忆。因此,对于大多数网络应用,我们一般使用域名来访问目的主机,而不是直接使用IP地址来访问。

对于本例,简单来说,当我们在浏览器地址栏中输入某个web服务器的域名时,用户主机会首先在自己的DNS高速缓存中查找该域名所对应的IP地址。如果没有找到,则会向网络中的某台DNS服务器查寻,DNS服务器中有域名和IP地址映射关系的数据库。当DNS服务器收到DNS查寻报文后,在其数据库中进行查寻,之后将查寻结果发送给用户主机。现在,用户主机中的浏览器可以通过Web服务器的IP地址对其进行访问了。

思考: 因特网是否可以只使用一台DNS服务器呢?
回答: 尽管理论上是可行的,但在实践中这种做法并不可取。因为因特网的规模很大,这样的域名服务器肯定会因为超负荷而无法正常工作。而且,一旦域名服务器出现故障,整个因特网就会瘫痪。早在1983年,因特网就开始采用层次结构的命名树作为主机的名字,也就是我们所谓的域名。并使用分布式的域名系统。域名系统使大多数域名都在本地解析,仅少量解析需要在因特网上通信。因此系统效率很高。由于域名系统是分布式系统,即使单个域名服务器出现了故障,也不会妨碍整个系统的正常运行。

域名结构

①因特网域名系统采用层次树状结构的域名结构。
②域名的结构由若干个分量组成,各分量之间用点隔开,分别代表不同级别的域名。如图所示:

----每一级的域名都由英文字母和数字组成,不超过63个字符,不区分大小写字母。
----级别最低的域名写在最左边,而级别最高的顶级域名写在最右边。
----完整的域名不超过255个字符。
③域名系统既不规定一个域名需要包含多少个下级域名,也不规定每一级的域名代表什么意思。
④各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由因特网名称与数字地址分配机构进行管理。
例子: 这是湖南科技大学网络信息中心的域名。

cn是顶级域名,表示中国。edu是在其下注册的二级域名,表示教育机构。hnust是在edu下注册的三级域名,表示湖南科技大学。nic是由我校自行管理的四级域名,表示网络信息中心。

顶级域名TLD(Top Level Domain)

①顶级域名分为以下三类:
----国家顶级域名nTLD,采用ISO3166的规定。如cn表示中国,us表示美国,uk表示英国。
----通用顶级域名gTLD,最常见的通用顶级域名有七个。即com表示公司企业,net表示网络服务机构,org表示非营利性组织,int表示国际组织,edu表示美国教育机构、gov表示美国政府部门、mil表示美国军事部门。
----反向域arpa,用于反向域名解析,即IP地址反向解析为域名。
②在国家顶级域名下注册的二级域名均由该国自行确定。例如,顶级域名为jp的日本,将其教育和企业机构的二级域名定为ac和co,而不用edu和com。
③我国则将二级域名划分为以下两类:
----类别域名,共7个。ac表示科研机构。com表示工、商、金融等企业,edu表示教育机构,gov表示政府部门,net表示提供网络服务的机构,mil表示军事机构,org表示非营利性组织。
----行政区域名,共34个,适用于我国的各省、自治区。例如bj为北京市,sh为上海市。js为江苏省等等。
注意: 需要注意的是,名称相同的域名,其等级未必相同。例如,com是通用顶级域名。但我国顶级域名cn下也有一个名称为com的二级域名。

因特网的域名空间

例子: 因特网的域名空间实际上是一棵倒着生长的树,在最上面的是根,但没有对应的域名。
----根下面一级的节点就是顶级域名。顶级域名可往下划分出二级域名,例如这是表示公司企业的顶级域名com下面划分有cctv、ibm、ti等二级域名,分别表示中央电视台、IBM公司、TI公司。
----这是表示中国的顶级域名CN下面划分的二级域名。图中所示的域名分别表示上海、北京、教育机构、政府部门等。
----二级域名再往下划分就是三级域名。例如,这是表示中央电视台的二级域名cctv下划分的三级域名mail,表示邮件系统。这是表示我国教育机构的二级域名edu下划分的三级域名,图中所示的域名分别表示清华大学、湖南科技大学、复旦大学、北京大学。
----三级域名再往下划分就是四级域名。例如,这是表示湖南科技大学的三级域名hnust下划分的一些四级域名,分别表示湖南科技大学的网络信息中心、图书馆、邮件系统、教务处。

特点: 上述这种按等级管理的命名方法,便于维护域名的唯一性,并且也容易设计出一种高效的域名查询机制。需要注意的是,域名只是个逻辑概念,并不代表计算机所在的物理地点。

域名服务器

①域名和IP地址的映射关系必须保存在域名服务器中,供所有其他应用查询。显然,不能将所有信息都储存在一台域名服务器中。DNS使用分布在各地的域名服务器来实现域名到IP地址的转换。
②域名服务器可以划分为以下四种不同类型:
----根域名服务器。根域名服务器是最高层次的域名服务器,每个根域名服务器都知道所有的顶级域名服务器的域名及其IP地址。因特网上共有13个不同IP地址的根域名服务器,尽管我们将这13个根域名服务器中的每一个都视为单个的服务器,但每台服务器实际上是由许多分布在世界各地的计算机构成的服务器群集。当本地域名服务器向根域名服务器发出查询请求时,路由器就把查询请求报文转发到离这个DNS客户最近的一个根域名服务器,这就要加快了DNS的查询过程,同时也更合理地利用了因特网的资源。根域名服务器通常并不直接对域名进行解析,而是返回该域名所属顶级域名的顶级域名服务器的IP地址。
----顶级域名服务器,这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。当收到DNS查询请求时,就给出相应的回答。可能是最后的结果,也可能是下一级权限域名服务器的IP地址。
----权限域名服务器。这些域名服务器负责管理某个区的域名,每一个主机的域名都必须在某个权限域名服务器处注册登记。因此,权限域名服务器知道其管辖的域名与IP地址的映射关系。另外,权限域名服务器还知道其下级域名服务器的地址。
----本地域名服务器。本地域名服务器不属于上述的域名服务器的等级结构。当一个主机发出DNS请求报文时,这个报文就首先被送往该主机的本地域名服务器。本地域名服务器起着代理的作用,会将该报文转发到上述的域名服务器的等级结构中。每一个因特网服务提供者、一个大学、甚至一个大学里面的学院都可以拥有一个本地域名服务器,它有时也称为默认域名服务器。本地域名服务器离用户较近,一般不会超过几个路由器的距离,也有可能就在同一个局域网中。本地域名服务器的IP地址需要直接配置在需要域名解析的主机中。

域名解析

域名解析包含以下两种查询方式。
①递归查询
假设图中的主机想知道域名y.abc.com的IP地址。

主机首先向其本地域名服务器进行递归查询。

本地域名服务器收到递归查询的委托后,也采用递归查询的方式向某个根域名服务器查询。

根域名服务器收到递归查询的委托后,也采用递归查询的方式向某个顶级域名服务器查询。

顶级域名服务器收到递归查询的委托后,也采用递归查询的方式向某个权限域名服务器查询。

当查询到域名所对应的IP地址后,查询结果会在之前受委托的各域名服务器之间传递,最终传回给用户主机。

②迭代查询
主机首先向其本地域名服务器进行递归查询。

本地域名服务器采用迭代查询,它先向某个根域名服务器查询

根域名服务器告诉本地域名服务器下一次应查询的顶级域名服务器的IP地址。

本地域名服务器向顶级域名服务器进行迭代查询。

顶级域名服务器告诉本地域名服务器下一次应查询的权限域名服务器的IP地址。

本地域名服务器向权限域名服务器进行迭代查询。

权限域名服务器告诉本地域名服务器所查询的域名的IP地址。

本地域名服务器最后把查询结果告诉主机。

总结: 由于递归查询对于被查询的域名服务器负担太大,通常采用以下模式:从请求主机到本地域名服务器的查询采用递归查询方式,而其余的查询是迭代查询方式。
高速缓存的使用:
为了提高DNS的查询效率,并减轻根域名服务器的负担和减少因特网上的DNS查询报文数量,在域名服务器中广泛地使用了高速缓存。高速缓存用来存放最近查询过的域名,以及从何处获得域名映射信息的记录。
例子: 如图所示,如果不久前已经有用户查询过域名为y.abc.com的IP地址,则本地域名服务器的高速缓存中应该存有该域名对应的IP地址。当主机向本地域名服务器递归查询该域名时,本地域名服务器就没有必要再向某个根域名服务器进行迭代查询了,而是直接把高速缓存中存放的上次查询结果即该域名的IP地址告诉用户主机。

注意: ①由于域名到IP地址的映射关系并不是永久不变。为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器并删除超过合理时间的项。例如,每个项目只存放两天。
②不但在本地域名服务器中需要高速缓存,在用户主机中也很需要。许多用户主机在启动时从本地域名服务器下载域名和IP地址的全部数据库,维护存放自己最近使用的域名的高速缓存,并且只在从缓存中找不到域名时才向域名服务器查询。同理,主机也需要保持高速缓存中内容的正确性。

例题

【2010年题40】如果本地域名服务器无缓存,当采用递归方法解析另一网络某主机域名时,用户主机、本地域名服务器发送的域名请求消息数分别为 (A)
A. 一条、一条
B. 一条、多条
C. 多条、一条
D. 多条、多条
解析: 本题考查的内容就是我们刚刚才介绍过的采用递归查询方式进行域名解析的过程。这是主机给其本地域名服务器发送的一条DNS查询。由于题目给定本地域名服务器无缓存,因此本地域名服务器收到主机的委托查询后,会向某个根域名服务器发送一条DNS查询。

例题

【2016年题40】假设所有域名服务器均采用迭代查询方式进行域名解析,当H4访问规范域名为www.abc.xyz.com的网站时,域名服务器201.1.1.1在完成该域名解析过程中,可能发出DNS查询的最少和最多次数分别是 ©
A. 0,3
B. 1,3
C. 0,4
D. 1,4

解析: 若主机H4的DNS高速缓存中有该域名的DNS信息时,不需要查询任何域名服务器。这样,H4无需向图中的默认域名服务器发出DNS查询,该域名服务器也无需发出DNS查询。题目给定采用迭代查询方式进行域名解析,在最坏的情况下需要图中的本地域名服务器依次向以下域名服务器发出共4次DNS查询:
根域名服务器。
顶级域名服务器点(.com)
权限域名服务器(xyz.com)
权限域名服务器(abc.xyz.com)

注:

需要注意的是,DNS报文使用运输层的UDP协议进行封装,运输层端口号为53。至于DNS报文的格式,就不再赘述了。另外,DNS污染等安全问题已超出了本系列课程的教学大纲,有兴趣的同学可自行查阅相关资料。

小测验

1、在DNS的递归查询中,最终给DNS客户返回所查询到的IP地址的DNS服务器是
A. 最开始连接的服务器
B. 最后连接的服务器
C. 目的地址所在服务器
D. 不确定
答案:A

2、若本地域名服务器无缓存,用户主机采用递归查询向本地域名服务器查询另一网络某主机域名所对应的IP地址,而本地域名服务器采用迭代查询向其他域名服务器进行查询,则用户主机和本地域名服务器发送的域名请求条数分别为
A. 1条,1条
B. 1条,多条
C. 多条,1条
D. 多条,多条
答案:B

五、文件传输协议FTP

文件传输协议FTP

①将某台计算机中的文件通过网络传送到可能相距很远的另一台计算机中,是一项基本的网络应用,即文件传送。
②文件传送协议FTP是因特网上使用的最广泛的文件传送协议。
----FTP提供交互式的访问,允许客户指明文件的类型与格式。例如,指明是否使用ASCII码,并允许文件具有存取权限(比如访问文件的用户必须经过授权,并输入有效的口令)。
----FTP屏蔽了各计算机系统的细节,因而适用于在异构网络中任意计算机之间的传送文件。
③在因特网发展的早期阶段,用FTP传送文件约占整个因特网的通信量的1/3。而由电子邮件和域名系统所产生的通信量还要小于FTP所产生的通信量。只是到了1995年,万维网的通信量才首次超过了FTP。

FTP的应用

FTP采用客户/服务器方式。
因特网上的FTP客户计算机可将各种类型的文件上传到FTP服务器计算机,FTP客户计算机也可以从FTP服务器计算机下载文件。

根据应用需求的不同,FTP服务器可能需要一台高性能、高可靠性的服务器计算机,也可能只需要一台普通的个人计算机即可。例如,本例也可以采用普通的个人计算机作为FTP服务器计算机。为了简单起见,我们假设FTP客户计算机与FTP服务器计算机处于同一个局域网中。我们在FTP服务器计算机中创建FTP服务器,可以使用第三方的FTP服务器软件,也可以使用操作系统自带的FTP服务器软件。例如,我们可以在Windows系统中使用其自带的FTP服务器功能创建一个FTP服务器站点,假设这是我所创建的FTP服务器的IP地址。

我们可以在FTP客户计算机中使用浏览器软件,通过该地址来访问FTP服务器。需要注意的是,这里使用的是文件传送协议FTP,而不是浏览器最常用的超文本传送协议HTTP。

我们也可以在FTP客户计算机中使用Windows系统自带的命令行工具,通过该地址来访问FTP服务器。例如,这是连接FTP服务器,采用匿名登录,因此无需输入密码。登录成功后,可以列出FTP服务器当前目录下的所有文件和文件夹,可从FTP服务器下载文件,也可向FTP服务器上传文件。

命令行方式需要用户记住相关命令,这对普通用户而言并不友好。因此,大多数用户在FTP客户计算机上使用第三方的FTP客户工具软件,通过友好的用户界面来完成FTP服务器的登录以及文件的上传和下载。

FTP的常见用途是在计算机之间传输文件,尤其适用于批量传输文件。FTP的另一个常见用途是让网站设计者将构成网站内容的大量文件批量上传到他们的web服务器。

FTP的基本工作原理

①主动模式
FTP服务器监听熟知端口号21,FTP客户随机选择一个临时端口号与其建立TCP连接,这条TCP连接用于FTP客户与服务器之间传送FTP的相关控制命令。也就是说,这条TCP连接是FTP客户与服务器之间的命令通道。

当有数据要传输时,FTP客户通过命令通道告知FTP服务器来与自己的另一个临时端口号建立TCP连接,即建立数据通道。这是FTP客户随机选择的另一个端口号,FTP服务器使用自己的熟知端口号20与其建立TCP连接。这条TCP连接用于FTP客户与服务器之间传送文件。也就是说,这条TCP连接是FTP客户与服务器之间的数据通道。

注: 由于在建立数据通道时,FTP服务器主动连接FTP客户,因此称为主动模式。需要注意的是,控制连接在整个会话期间一直保持打开,用于传送FTP相关的控制命令。而数据连接用于文件传输,在每次文件传输时才建立,传输结束就关闭。
②被动模式
对于FTP客户与服务器之间命令通道的建立,它与主动模式并没有什么不同。不同之处在于,当有数据要传输时,FTP客户通过命令通道通知FTP服务器开启某个协商好的临时端口,被动等待来自FTP客户的TCP连接已建立数据通道。FTP客户发起与FTP服务器的TCP连接以建立数据通道。由于在建立数据通道时,FTP服务器被动等待FTP客户的连接,因此称为被动模式。

例题

【2009年题40】FTP客户和服务器间传递FTP命令时,使用的连接是 (A)
A. 建立在TCP之上的控制连接
B. 建立在TCP之上的数据连接
C. 建立在UDP之上的控制连接
D. 建立在UDP之上的数据连接
解析: FTP客户和服务器之间要建立以下两个并行的TCP连接:
①控制连接。在整个会话期间一直保持打开,用于传送FTP相关控制命令。
②数据连接。用于文件传输,在每次文件传输时才建立,传输结束就关闭。

例题

【2017年题40】下列关于FTP协议的叙述中,错误的是 (C)
A. 数据连接在每次数据传输完毕后就关闭
B. 控制连接在整个会话期间保持打开状态
C. 服务器与客户端的TCP 20端口建立数据连接
D.客户端与服务器的TCP 21端口建立控制连接
解析: FTP客户和服务器之间要建立控制连接和数据连接这两个并行的TCP连接。控制连接在整个会话期间都保持打开状态,而数据连接在每次文件传输时才建立,传输结束就关闭。默认情况下,FTP使用TCP21号端口进行控制连接,TCP20号端口进行数据连接。但是,是否使用TCP20号端口建立数据连接与传输模式有关。主动方式使用TCP20号端口,而被动方式由服务器和客户端自行协商决定。

小测验

1、以下关于FTP的描述中,错误的是
A. FTP使用控制连接、数据连接来完成文件的传输
B. 用于控制连接的TCP连接在服务器端使用的熟知端口号为21
C. 用于控制连接的TCP连接在客户端使用的端口号为20
D. 数据连接用于文件传输,在每次文件传输时才建立,传输结束就关闭
答案:C

2、FTP客户发起对FTP服务器连接的第一阶段是建立
A. 传输连接
B. 数据连接
C. 会话连接
D. 控制连接
答案:D

六、电子邮件

电子邮件

①电子邮件是因特网上最早流行的一种应用,并且仍然是当今因特网上最重要、最实用的应用之一。
②传统的电话通信属于实时通信,存在以下两个缺点:
----电话通信的主叫和被叫双方必须同时在场。
----一些不是十分紧迫的电话,也常常不必要的打断人们的工作和休息。
③而电子邮件与邮政系统寄信相似。
----发件人将邮件发送到自己使用的邮件服务器。
----发件人的邮件服务器将收到的邮件按其目的地址转发到收件人邮件服务器中的收件人邮箱。
----收件人在方便的时候访问收件人邮件服务器中自己的邮箱,获取收到的电子邮件。
④电子邮件使用方便,传递迅速而且费用低廉。它不仅可以传送文字信息,而且还可以附上声音和图像。
⑤由于电子邮件的广泛使用,现在许多国家已经正式取消了电报业务。在我国电信局的电报业务也因电子邮件的普及而濒临消失。

电子邮件系统的构成

①电子邮件系统采用客户/服务器方式。
②其三个主要组成构件是:用户代理、邮件服务器以及电子邮件所需的协议。
例: 下图假设这是邮件的发送方,这是邮件的接收方。在发送方的计算机中,需要使用用户代理来发送邮件。在接收方的计算机中,同样也需要使用用户代理来接收邮件。用户代理是用户与电子邮件系统的接口,又称为电子邮件客户端软件。

这是发送方使用的邮件服务器,例如QQ邮件服务器。这是接收方使用的邮件服务器,例如谷歌邮件服务器。邮件服务器是电子邮件系统的基础设施,因特网上所有的服务提供商都有邮件服务器,其功能是发送和接收邮件,同时还要负责维护用户的邮箱。

如图所示,我们可以简单的认为邮件服务器中有很多邮箱,还有用来缓存待转发邮件的缓存。

发送方使用用户代理通过邮件发送协议(例如SMTP)将邮件发送给发送方邮件服务器。

发送方邮件服务器同样通过邮件发送协议将该邮件发送给接收方邮件服务器。

接收方在方便的时候使用用户代理通过邮件读取协议(例如POP3)从接收方邮件服务器读取邮件。

也就是说,电子邮件所需的协议包括邮件发送协议和邮件读取协议两类。接下来,我们更进一步说明上述的邮件发送和接收过程。

邮件发送和接收过程详解

发送方的用户代理作为SMTP客户,与发送方邮件服务器中的SMTP服务器进行TCP连接,然后基于这条连接使用SMTP协议来发送邮件给发送方邮件服务器。

发送方邮件服务器中的SMTP客户与接收方邮件服务器中的SMTP服务器进行TCP连接,然后基于这条连接使用SMTP协议来发送已收到的待转发邮件给接收方邮件服务器。

接收方用户代理作为POP3客户,与接收方邮件服务器中的POP3服务器进行TCP连接,然后基于这条连接使用POP3协议从接收方邮件服务器读取邮件。

可以看到,邮件发送协议的使用范围包含发送方用户代理到发送方邮件服务器、发送方邮件服务器到接收方邮件服务器这两部分。邮件读取协议的使用范围只有接收方用户代理到接收方邮件服务器这一部分。

简单邮件传送协议SMTP的基本工作原理

接下来我们介绍属于邮件发送协议的简单邮件传送协议SMTP(Simple Mail Transfer Protocol)的基本工作原理。我们以发送方邮件服务器使用SMTP协议给接收方邮件服务器发送待转发的邮件为例。
例子: 发送方邮件服务器周期性地扫描邮件缓存,如果发现有待转发的邮件,则发送方邮件服务器中的SMTP客户会与接收方邮件服务器中的SMTP服务器进行TCP连接,端口号为25。之后SMTP客户就可以基于这条TCP连接给SMTP服务器发送SMTP命令,共14条。SMTP服务器也会给SMTP客户发送相应的应答,共21种。SFTP客户与服务器之间通过命令与应答的交互方式,最终实现SMTP客户发送邮件给SMTP服务器。

流程:
当TCP连接建立成功后,SMTP服务器会主动推送服就绪应答给SMTP客户。应答代码220后面可能跟有描述信息。例如,这是网易邮件服务器给出的描述信息。
SMTP客户收到该应答后,向服务器表明身份,告知自己SMTP服务器的域名。具体命令为HELO,其后为命令参数。
SMTP服务器若认为身份有效,则发回应答代码250,否则发回其他代码,例如421表示服务不可用。
SMTP客户收到该应答后,使用命令MAIL FROM来告诉服务器邮件来自何方。
SMTP服务器若认为合理,则发回应答代码250,否则发回其他错误代码。
SMTP客户收到该应答后,使用命令RCPT TO来告诉服务器邮件去往何方,也就是收件人邮箱。
SMTP服务器中如果有该收件人邮箱,则发回应答代码250,否则返回其他错误代码。
SMTP客户收到该应答后,使用DATA命令来告诉服务器自己准备发送邮件内容了。
SMTP服务器如果准备好接收,发回应答代码354,否则发回其他错误代码。
SMTP客户收到该应答后就向服务器发送邮件内容。
SMTP客户发送完邮件内容后,还要发送结束符。
SMTP服务器若收件成功,则发回应答代码250,否则发回其他错误代码。
SMTP客户收到该应答后,使用命令QUIT向服务器请求断开连接。
SMTP服务器发回应答代码221,表示接受请求并主动断开连接。

需要说明的是,为了简单起见,我们省略了可能需要的认证过程,还省略了应答代码后面一般都跟随的简单描述信息。不同的SMTP服务器给出的相同应答代码,其后面跟随的描述信息可能不同。

电子邮件的信息格式

电子邮件的信息格式并不是由SMTP协议定义的,而是在RFC822文档中单独定义,该文档已在2008年更新为 RFC5322。一个电子邮件有信封和内容两部分,而内容又由首部和主体两部分构成。首部和主体的信息都需要由用户来填写。

首部中包含有一些关键字,后面加上冒号。例如:
----关键字From后面填入发件人的电子邮件地址,一般由邮件系统自动填入。
----关键字To后面填入一个或多个收件人的电子邮件。
----关键字Cc后面填入一个或多个收件人以外的抄送人的电子邮件地址。抄送人收到邮件后,可看可不看邮件,可回可不回邮件。
----关键字Subject后面填入邮件的主题,它反映了邮件的主要内容。
很显然,最重要的关键字是To和Subject,它们往往是必填选项。用户写好首部后,邮件系统将自动地将信封所需的信息提取出来,并写在信封上,所以用户不需要填写电子邮件信封上的信息。在填写完首部各关键字的内容后,用户还需要撰写邮件的主体部分,这才是用户想传递给收件人的核心信息。

SMTP支持的数据格式

SMTP协议只能传送ASCII码文本数据,不能传送可执行文件或其它的二进制对象。也就是说SMTP不能传送带有图片、音频或视频数据的多媒体邮件。并且,许多其他非英语国家的文字,例如中文、俄文、甚至带有重音符号的法文或德文也无法用SMTP传送。为解决SMTP传送非ASCII码文本的问题,提出了多用途因特网邮件扩展MIME。
例: 如图所示,SMTP协议只能传送ASCII码文本数据,这是电子邮件的收发双方。假设发送方发送的电子邮件中包含有非ASCII码数据,则不能直接使用SMTP进行传送。需要通过MIME进行转换,将非ASCII码数据转换为ASCII码数据,然后就可以使用SMTP进行传送了。接收方也要使用MIME对接收到的ASCII数据进行逆转换,这样就可以得到包含有非ASCII码数据的电子邮件。

为了实现这种转换,新增了一些内容:
----MIME增加了五个新的邮件首部字段,这些字段提供了有关邮件主体的信息。
----定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。
----定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。
实际上,MIME不仅仅用于SMTP,也用于后来的同样面向ASCII码字符的超文本传送协议HTTP。

邮件读取

到目前为止,我们已经介绍完了涉及邮件发送的相关内容,接下来我们介绍涉及邮件读取的相关内容。常用的邮件读取协议有以下两个:
①邮局协议POP(Post Office Protocol)。POP3是其第三个版本,是因特网正式标准。POP3是非常简单、功能有限的邮件读取协议,用户只能以下载并删除方式或下载并保留方式从邮件服务器下载邮件到用户计算机,不允许用户在邮件服务器上管理自己的邮件。
②因特网邮件访问协议IMAP(Internet Message Access Protocol)。IMAP4是其第四个版本,目前还只是因特网建议标准。
IMAP4是功能比POP3强大的邮件读取协议。用户在自己的计算机上就可以操控邮件服务器中的邮箱,就像在本地操控一样。因此,IMAP是一个联机协议。
总结:POP3和IMAP4都采用基于TCP连接的客户/服务器方式。POP3使用熟知端口110,MP4使用熟知端口143。有关TOP3协议和IMAP4协议的具体内容,有兴趣的同学可自行查阅相关资料,我们就不再深入介绍了。实际上,本节课涵盖了电子邮件系统涉及到的各方面基本内容,对于了解电子邮件系统的基本工作原理来说已经足够了。如果同学们将来要进行电子邮件系统相关程序设计,例如编写一个电子邮件客户端软件,则还需要对相关协议的RFC文档进行深入阅读。

基于万维网的电子邮件

现在越来越多的用户使用基于万维网的电子邮件。通过浏览器(提供用户名和口令)登录邮件服务器万维网网站,就可以撰写、收发、阅读和管理电子邮件。这种工作方式与IMAP很类似。不同的是,用户计算机无需安装专门的用户代理程序,也就是电子邮件客户端软件,只需要使用通用的万维网浏览器即可。邮件服务器网站通常都提供非常强大和方便的邮件管理功能,用户可以在邮件服务器网站上管理和处理自己的邮件。而不需要将邮件下载到本地进行管理。
例子: 假设用户A和B都使用网易邮件服务器,这是用户A的电子邮件地址,这是用户B的电子邮件地址。用户A要给用户B发送邮件,用户A使用浏览器登录邮件服务器网站,撰写并发送邮件给用户B。用户B也使用浏览器登录邮件服务器网站,读取收到的邮件。用户A和B在发送和接收邮件时,与服务器之间使用的都是HTTP协议,而不需要使用我们之前介绍过的SMTP和POP3协议。HTTP协议是超文本传送协议,我们将在后续课程中介绍。

再来看另一种情况。假设用户A使用网易邮件服务器,这是他的电子邮件地址。用户C使用谷歌邮件服务器,这是他的电子邮件地址。用户A要给用户C发送邮件,用户A使用浏览器登录自己的邮件服务器网站,撰写并发送邮件给用户C,使用的是HTTP协议。用户A的邮件服务器使用SMTP将邮件发送给用户C的邮件服务器。用户C也使用浏览器登录自己的邮件服务器网站,读取收到的邮件,使用的也是HTTP协议。

例题

【2012年题40】若用户1与用户2之间发送和接收电子邮件的过程如下图所示,则图中①②③阶段分别使用的应用层协议可以是 (D)
A. SMTP、SMTP、SMTP
B. POP3、SMTP、POP3
C. POP3、SMTP、SMTP
D. SMTP、SMTP、POP3

解析: 题目所给的四个选项中只出现了两种协议。一种是用于邮件发送的简单邮件传送协议SMTP,另一种是用于邮件读取的邮局协议POP3。阶段一是用户1的用户代理程序向用户1的邮件服务器发送邮件,应该使用SMTP协议。阶段2是用户1的邮件服务器给用户2的邮件服务器发送邮件,也应该使用SMTP协议。阶段3是用户2的用户代理程序从用户2的邮件服务器读取邮件,应该使用POP3协议。

例题

【2013年题40】下列关于SMTP协议的叙述中,正确的是 (A)
Ⅰ 只支持传输7比特ASCII码内容
Ⅱ 支持在邮件服务器之间发送邮件
Ⅲ 支持从用户代理向邮件服务器发送邮件
Ⅳ 支持从邮件服务器向用户代理发送邮件
A. 仅I、II和III
B. 仅I、I和IV
C. 仅I、II和IV
D. 仅Il、III和IV
解析:
如图所示,这是我们之前介绍过的SMTP协议,只支持传送ASCII文本数据。如果电子邮件中包含有非ASCII码数据,需要经过MIME转换变成ASCII码数据后,才能使用SMTP协议进行传输。因此,叙述Ⅰ正确。

再来看我们之前介绍过的这幅图,邮件服务器之间发送邮件,采用的是SMTP协议,因此叙述Ⅱ正确。用户代理给邮件服务器发送邮件也使用SMTP协议,因此叙述Ⅲ也正确。用户代理从邮件服务器读取邮件时,使用的是POP3协议,还可以使用功能更强的IMAP协议,因此叙述Ⅳ错误。

例题

【2018年题40】无需转换即可由SMTP协议直接传输的内容是 (D)
A. JPEG图形
B. MPEG视频
C. EXE文件
D. ASCII文本

小测验

1、SMTP、POP3分别基于运输层的
A. TCP,TCP
B. TCP,UDP
C. UDP,UDP
D. UDP,TCP
答案:A

2、不能用于用户从邮件服务器接收电子邮件的协议是
A. HTTP
B. POP3
C. SMTP
D. IMAP
答案:C

七、万维网WWW

万维网

①万维网并非某种特殊的计算机网络,它是一个大规模的、联机式的信息储藏所,是运行在因特网上的一个分布式应用。
②它利用网页之间的超链接,将不同网站的网页链接成一张逻辑上的信息网。
③万维网是欧洲粒子物理实验室的蒂姆伯纳斯.李(Tim Berners-Lee)最初于1989年3月提出的。
1993年2月,诞生了世界上第一个图形界面的浏览器mosaic。

1995年,著名的网景浏览器上市。目前比较流行的浏览器有Chrome浏览器、火狐浏览器、Safari浏览器、欧朋浏览器、IE浏览器。浏览器最重要的部分是渲染引擎,也就是浏览器内核,负责对网页内容进行解析和显示。这是上述各浏览器使用的内核。
不同的浏览器内核对网页内容的解析也有所不同,因此同一网页在不同内核的浏览器里的显示效果可能不同。网页编写者需要在不同内核的浏览器中测试网页显示效果。

万维网的应用

例子: 我们在用户主机中使用浏览器来访问湖南科技大学的万维网服务器,也就是访问湖南科技大学的官方网站。
我们在浏览器的地址栏中输入湖南科技大学官方网站的域名,并按下回车键后,浏览器将发送请求报文给服务器。服务器收到请求报文后执行相应操作,然后给浏览器发回响应报文。浏览器解析并渲染响应报文中的内容,这样我们就可以看到网站首页了。

统一资源定位符URL

为了方便地访问在世界范围的文档,万维网使用统一资源定位符URL来指明因特网上任何种类资源的位置。统一资源定位符的一般形式由以下四个部分组成,分别是协议、主机、端口、路径。

我们之前在浏览器地址栏中输入的是湖南科技大学官方网站的域名,目的是获取网站首页的内容,其对应的统一资源定位符如图所示。

当我们点击网页中的某个超链接时,将跳转到另一个网页。可以看到,这是该网页相应的统一资源定位符。其中,协议、主机和端口与网站首页相同,不同的是路径和网页文件。

万维网文档

这是我们之前访问的湖南科技大学官方网站的首页,我们可以将其另存为文件。可以看到有一个扩展名为html的文件和一个文件夹。

我们打开该文件夹,看看其内容。这三个扩展名为html的文件是HTML文档。这五个扩展名为JS的文件是JavaScript文档。这两个扩展名为css的文件是CSS文档。其他的JPG文件和PNG文件是图片文件。

HTML(HyperText Markup Language)是超文本标记语言的英文缩写词,它使用多种标签来描述网页的结构和内容。
CSS(Cascading Style Sheets)是层叠样式表的英文缩写词,它从审美的角度来描述网页的样式。
JavaScript是一种脚本语言,用来控制网页的行为。由html、CSS、javascript编写的万维网文档由浏览器内核负责解释和渲染。
例子: 这是用HTML编写的最简单的HTML文档,用浏览器打开该HTML文档,可以看到浏览器渲染出了一个非常简单的网页。在HTML文档中,使用两个html标签来定义HTML文档的范围。在其内部使用两个head标签定义HTML文档的首部。使用两个body标签定义HTML文档的主体。首部中,两个title标签之间的内容被渲染为网页的标题。两个p标签之间的内容被渲染为一个文本段落。

通过本例可以看出,HTML使用多种标签来描述网页的结构和内容。但是所呈现出来的内容样式过于简单,或者说不够美观。我们可以在CSS文档中定义一些所需要的样式,对网页显示内容进行美化。
例子: 我们编写了这样一个CSS文档。在其中定义了一种样式,即颜色为深粉色,字体大小为36个像素。然后,我们在之前编写好的HTML文档的首部使用link标签,将该CSS文档引入。将样式名称指定给主体中需要更改样式的那个p标签。

现在我们在浏览器中进行刷新,就可以看到浏览器重新渲染出了网页内容。可以看到,Hello word段落的颜色和字体大小都发生了相应的变化。

接下来,我们再给该网页添加一个按钮。在之前的HTML文档的主体中,使用button标签来添加一个按钮。我们为该按钮指定一个发生单击事件时应该调用的处理函数,然后用JavaScript脚本语言来编写一个JS文档。在该文档中编写单击事件处理函数的具体实现代码。在HTML文档的首部,使用script标签将该JS文档引入。在事件处理函数中,通过元素的ID来找到相应的元素,也就是显示Hello world的p标签,然后更改其显示内容。

现在,我们在浏览器中进行刷新,就可以看到我们所添加的按钮。当我们用鼠标点击该按钮时,Hello word变成了谢谢你的赞。

通过上述举例,相信同学们对HTML文档、CSS文档、javascript文档已经有了初步的认识。至于这些文档的具体编写,属于web前端开发的基础,并不属于本课程的教学大纲,我们就不再深入介绍了。需要大家注意的是,这些文档都部署在服务器端。有一些是外部前端人员开发设计好的静态页面,有一些是服务器后端程序根据用户需求自动生成的动态页面。他们都需要从服务器传送给用户的浏览器进行解析和渲染。这就不得不提到TCP/IP体系应用层中的一个非常重要的协议,即超文本传输协议HTTP。

超文本传输协议HTTP

超文本传输协议HTTP(HyperText Transfer Protocol)定义了浏览器(即万维网客户进程)怎样向万维网服务器请求万维网文档,以及万维网服务器怎样把万维网文档传送给浏览器。
例子: 我们使用用户主机来访问湖南科技大学的万维网服务器。可以看成是用户主机中的浏览器进程(即客户进程)与服务器中的服务器进程基于因特网的通信。浏览器进程首先发起与服务器进程的TCP连接,使用熟知端口号80。基于这条已建立好的TCP连接,浏览器进程向服务器进程发送HTTP请求报文,服务器进程收到后执行相应操作,然后给浏览器进程发回HTTP响应报文。

①HTTP/1.0采用非持续连接方式。在该方式下,每次浏览器要请求一个文件,都要与服务器建立TCP连接,当收到响应后就立即关闭连接。我们来举例说明:
----客户与服务器之间通过三报文握手进行TCP连接。在这三个报文中的最后一个报文的数据载荷部分携带有HTTP请求报文。
----服务器收到后给客户发回HTTP响应报文。
以上两次请求和响应所耗费的时间为2RTT,再加上文档的传输时延,可以看到请求一个万维网文档所需的时间为2RTT+文档的传输时延。
总结: 每请求一个文档就有两倍RTT的开销。若一个网页上有很多引用对象,例如图片等。那么请求每一个对象都需要额外花费两倍的RTT的时间。为了减少时延,浏览器通常会建立多个并行的TCP连接,同时请求多个对象。但是这会大量占用万维网服务器的资源,特别是万维网服务器往往同时服务于大量客户的请求,这会使其负担很重。

②HTTP/1.1采用持续连接方式。在该方式下,万维网服务器在发送响应后仍然保持这条连接,使同一个客户和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。这并不局限于传送同一个页面上引用的对象,而是只要这些文档都在同一个服务器上就行。为了进一步提高效率,HTTP/1.1的持续连接还可以使用流水线方式工作,即浏览器在收到HTTP的响应报文之前,就能够连续发送多个请求报文。这样的一个接一个的请求报文到达服务器后,服务器就发回一个接一个的响应报文。这样就节省了很多个RTT时间,使TCP连接中的空闲时间减少,提高了下载文档的效率。

HTTP的报文格式

HTTP是面向文本的,其报文中的每一个字段都是一些ASCII串,并且每个字段的长度都是不确定的。
HTTP请求报文的格式:
我们用很窄的小格子表示空格,用标有CRLF的格子表示回车换行。
①HTTP请求报文的第一行是请求行。由方法字段开始,其后跟一个空格,后跟统一资源定位符URL字段,其后跟一个空格,后跟版本字段,最后是回车换行。
②从第二行开始就是首部行。每一个首部行由首部字段名开始,其后跟一个冒号,再跟一个空格,然后是该字段的取值,最后是回车换行。
③可以有多个首部行
④在最后的首部行下面是一个空行,在空行下面是实体主体,通常不使用。

我们来举例说明HTTP请求报文的格式,这是浏览器发送的HTTP请求报文的具体内容。
第一行为请求行。指明了方法GET、统一资源定位符URL以及HTTP的版本。
这是第一个首部行,首部字段名为Host,其值为湖南科技大学官方网站的域名。
这是第二个首部行。首部字段名为Connection,其值为close。这是告诉服务器发送完请求的文档后就可以释放连接。
这是第三个首部行。首部字段名为User-Agent,其值是浏览器的类型及版本。
这是第四个首部行。首部字段名为Accept-Language,其值为cn,这是告诉服务器用户希望优先得到中文版本的文档。
在最后一个首部行的下面是一个空行。该HTTP请求报文没有实体主体。

HTTP请求报文支持以下方法,我们就不再逐一介绍了。

HTTP响应报文的格式:
HTTP响应报文的第一行是状态行,由版本字段开始,其后跟一个空格,后跟状态码字段,其后跟一个空格,后跟短语字段,最后是回车换行。除状态行外,HTTP响应报文的其他部分与HTTP请求报文格式的对应部分是相似的。我们就不再赘述了。状态行中的状态码共分为五大类共33种。

我们举例说明响应报文中常见的状态行。

①该状态行表示服务器接受了请求。HTTP/1.1表示版本,202是状态吗,Accepted是短语,也就是对状态码的简单描述。
②该状态行表示请求错误。
③该状态行表示找不到所请求的页面。
一般来说,浏览器并不会直接显示出服务器发来的这些状态行信息,而是以更友好的形式向用户告知服务器所返回的状态信息。例如,当我们访问某些网站时,浏览器可能会显示类似该图所示的提示信息。其背后的本质是浏览器收到了包含这条状态行的响应报文。

Cookie

在我们访问网站时,浏览器通常会使用Cookie在服务器上记录用户信息。
①早期的万维网应用非常简单,仅仅是用户查看存放在不同服务器上的各种静态的文档。因此,HTTP被设计成为一种无状态的协议。这样可以简化服务器的设计。
②现在用户可以通过万维网进行各种复杂的应用,比如网上购物、电子商务等。这些应用往往需要万维网服务器能够识别用户。例如,我们使用浏览器在某个网站上已经注册了自己的账号,当在该网站上登录自己的账号时,除了输入用户名和密码外,我们还可以选择记住我选项。这样,当我们下一次使用该浏览器再次访问该网站时,网站可以自动识别出我们,而不用我们再次输入账号信息。
③Cookie提供了一种机制,使得万维网服务器能够记住用户,而无需用户主动提供用户标识信息。也就是说,Cookie是一种对无状态的HTTP进行状态化的技术。

Cookie的工作原理

我们来举例说明Cookie的工作原理。
①用户主机中的浏览器进程首先与万维网服务器中的服务器进程建立TCP连接。
②当用户的浏览器进程初次向服务器进程发送HTTP请求报文时,服务器进程就会为其产生一个唯一的Cookies识别码,并以此为索引在服务器的后端数据库中创建一个项目,用来记录该用户访问该网站的各种信息。
③接着就会给浏览器进程发回HTTP响应报文。在响应报文中,包含有一个首部字段为Set-Cookie的首部行,该字段的取值就是Cookie识别码。
④当浏览器进程收到该响应报文之后,就在一个特定的Cookie文件中添加一行,记录该服务器的域名和Cookie的识别码。
⑤当用户再次使用浏览器访问这个网站时,每发送一个HTTP请求报文,浏览器都会从Cookie文件中取出该网站的Cookie识别码,并放到HTTP请求报文的Cookie首部行中。
⑥服务器根据Cookie识别码就可以识别出该用户,并返回该用户的个性化网页。

万维网缓存与代理服务器

①在万维网中还可以使用缓存机制,以提高万维网的效率。
②万维网缓存又称为Web缓存(Web Cache),可位于客户机,也可位于中间系统上。位于中间系统上的Web缓存又称为代理服务器。
③Web缓存把最近的一些请求和响应暂存在本地磁盘中。当新请求到达时,若发现这个请求与暂时存放的请求相同,就返回暂存的响应,而不需要按统一资源定位符URL的地址再次去因特网访问该资源。
例子: 假设这是因特网上的某台万维网服务器。为了与万维网代理服务器的名称区分,我们简称该服务器为原始服务器。这是校园网中的某台万维网代理服务器,我们简称其为代理服务器。

当校园网中的某台主机要访问因特网上的原始服务器时,它首先会向校园网中的代理服务器发送请求。若代理服务器中存放有所请求的对象,则代理服务器会向该主机发回包含所请求对象的响应。

若代理服务器中没有所请求的对象,则代理服务器会向因特网上的原始服务器发送请求。原始服务器将包含有所请求对象的响应发回给代理服务器。代理服务器将该响应存入Web缓存,然后给主机发会该响应。

可以想象,如果Web缓存的命中率比较高,则路由器R1和R2之间的链路上的通信量将大大减少。因而可以减少校园网各主机访问因特网的时延。

疑问: 有的同学可能会有这样的疑问。原始服务器中含有某个文档,这是该文档在代理服务器中拥有副本。假设原始服务器中的该文档已被更改,之后校园网中的某台主机要请求该文档。它首先向校园网中的代理服务器发送请求,代理服务器找到该文档后,将其封装在响应报文中发回给主机。这样,主机所请求到的文档与原始服务器中的文档就不一致了。

回答: 实际上,原始服务器通常会为每个响应的对象设定一个修改时间字段和一个有效日期字段。
----当校园网中的某台主机要请求原始服务器中的该文档时,它首先向校园网中的代理服务器发送请求。
----若代理服务器中的该文档未过期,则代理服务器将其封装在响应报文中发回给主机。

----若代理服务器中的该文档已过期,则代理服务器会向因特网上的原始服务器发送请求。在请求报文中,包含有一个首部字段为if-modified-since的首部行,该字段的取值就是该文档的修改日期。

----原始服务器根据该文档的修改日期,就可判断出代理服务器中存储的该文档是否与自己存储的该文档一致。如果一致,则给代理服务器发送不包含实体主体的响应,状态码为304,短语为Not Modified,代理服务器重新更新该文档的有效日期,然后将该文档封装在响应报文中发回给主机。

如果不一致,则给代理服务器发送封装有该文档的响应报文,如图所示。这样,代理服务器就更新了该文档,然后将更新后的该文档封装在响应报文中发回给主机。

例题

【2015年题40】某浏览器发出的HTTP请求报文如下
GET /index.html HTTP/1.1
Host: www.test.edu.cn
Connection: Close
Cookie: 123456
下列叙述中,错误的是 (C)
A. 该浏览器请求浏览index.html
B. index.html存放在www.test.edu.cn上
C. 该浏览器请求使用持续连接
D. 该浏览器曾经浏览过www.test.edu.cn
解析: 请求报文的第一行为请求行,指明了方法GET、所请求对象的统一资源定位符URL、以及HTTP的版本。因此,选项A的描述正确。
请求行下面的第一个首部行,首部字段名为Host,其值为网站的域名。因此,选项B的描述正确。
第二个首部行,首部字段名为Connection,其值为Close。这是告诉服务器发送完请求的文档后就可以释放连接,即非持续连接。若是持续连接方式,取值应为keep alive而不是Close。因此,选项C的描述错误。
第三个首部行,首部字段名为Cookie,其实是服务器给浏览器生成的Cookie识别码,表明该浏览器曾经访问过该网站。
因此,选项D的描述正确。

例题

【修改自2011年题47第(3)问】假设HTTP1.1协议以持续的非流水线方式工作,一次请求-响应的时间为RTT,rfc.html页面引用了2个JPEG小图像,则浏览器从开始建立TCP连接到收到全部内容为止,需要多少个RTT?
答案: 4个
解析: 浏览器与服务器之间通过三报文握手进行TCP连接。
----在这三个报文中的最后一个报文的数据载荷部分携带有HTTP请求报文,请求的对象是rfc.html页面。
----服务器收到后,给客户发回包含有该对象的HTTP响应报文。
----由于rfc.html页面中引用了另外两个jpeg小图像,则浏览器会继续依次分别请求这两个对象。
很显然,浏览器从开始建立TCP连接到收到全部内容为止只需要4个RTT。

小测验

1、SMTP、POP3分别基于运输层的
A. TCP,TCP
B. TCP,UDP
C. UDP,UDP
D. UDP,TCP
答案:A

2、不能用于用户从邮件服务器接收电子邮件的协议是
A. HTTP
B. POP3
C. SMTP
D. IMAP
答案:C

计算机网络:P6-应用层相关推荐

  1. 【计算机网络】应用层 : 总结 ( 网络应用模型 C/S P2P | 域名解析 DNS | 文件传输协议 FTP | 电子邮件 | 万维网 与 HTTP ) ★★★

    文章目录 一.网络应用模型 ★ 二.域名解析过程 ★ 三.FTP 文件传输协议 四.电子邮件★ 五.万维网 和 HTTP 协议★ 一.网络应用模型 ★ 网络应用模型 : ① 客户 / 服务器 模型 ( ...

  2. 自顶向下计算机网络学习 应用层

    自顶向下计算机网络学习 应用层 一.应用层协议原理 1. 网络应用的体系结构 1.1 客户-服务器(C/S)体系结构 1.2 对等体(P2P)体系结构 1.3 混合体:客户 - 服务器和对等体系结构 ...

  3. 计算机网络原理 - 应用层

    计算机网络原理 - 应用层 应用层 应用层是主机上进程之间的交互,不同的进程内可以有多个线程,多线程处理数据 2.1 应用层协议原理 研发网络应用的核心是写出能够运行在不同端系统和通过网络彼此通信的程 ...

  4. 计算机网络自顶向下 应用层 习题

    计算机网络自顶向下 应用层 习题 假定你想尽快地处理从远程客户到服务器的事务,你将使用 UDP 还是 TCP?为什么? 答:我会使用UDP, 因为TCP是面向连接的, 在传输之前需要进行三次握手. 而 ...

  5. 计算机网络笔记----应用层

    应用层 应用层协议原理 网络应用程序的体系结构 客户-服务器体系结构 P2P体系结构 进程通信 进程与计算机网络之间的接口 进程寻址 可供应用程序使用的运输服务 可靠数据传输 吞吐量 定时 安全性 因 ...

  6. 计算机网络自顶向下-应用层

    一.简介: 网络应用是计算机网络存在的理由,没有了应用也不存在任何的网络协议.我们学习网络应用的原理和实现方面知识,从定义应用层概念开始,其中包括网络服务.客户]服务器.进程和运输层接口. 其中包括我 ...

  7. 计算机网络之应用层图解,秒解应用层HTTP,期末考试不担心!!

    应用层 已同步微信公众号:乐享Coding,期待你的关注! 应用层是计算机网络体系结构的最顶层,是设计和建立计算机网络的最终目的,也是计算机网络中发展最快的部分. 首先对应用层要有个大概了解,思维导图 ...

  8. 计算机网络之应用层(DNS域名系统)

    应用层作为和用户直接交互的一层,它具体的内容就是规定应用进程在通信时所需要遵循的协议. 应用层的很多协议都是基于客户-服务器方式(C-S方式),即便是 P2P 的方式,本质上也只是一种特殊的客户-服务 ...

  9. 计算机网络体系结构 - 应用层

    一.应用层协议 (1)域名系统(Domain Name System,DNS):用于实现网络设备名字到IP地址映射的网络服务. (2)文件传输协议(File Transfer Protocol,FTP ...

  10. 计算机网络之应用层(文件传送协议、万维网)

    文件传送协议 FTP 文件传送协议 FTP 的概述 文件传送协议 FTP(file transfer protocol)是互联网上使用得最广泛的文件传送协议(应用层协议),基于可靠的 TCP 协议.F ...

最新文章

  1. yolov3剪枝 SlimYOLOv3
  2. vue-cli4入门
  3. Effective C++笔记(一)——条款26-29
  4. 全文检索技术介绍与使用方法
  5. Android NDK--自己编写调用JNI
  6. chmod命令-权限
  7. 深入浅出 妙用Javascript中apply、call、bind
  8. Bean和Spirng模块
  9. 常用m脚本控制simulink模块方法
  10. 手机新建相册之后把照片文件放哪
  11. 计算机word保存如何操作,电脑word怎么保存 在电脑上word打字怎么保存
  12. explain的使用
  13. Metasploit后门渗透Linux系统以及跨平台后门生成
  14. android圆角设置
  15. 德国精品软件 小红伞杀毒软件 AntiVir
  16. 创建菜单栏、菜单、菜单项
  17. mysql 频繁连接中断_记一次网络原因导致的mysql连接中断问题(druid)
  18. 不寻常的单元测试,第1部分:带蝙蝠的bash脚本
  19. Windows登录类型及安全日志解析
  20. OCR识别PDF文件

热门文章

  1. python scrap_Scrap简介
  2. 注意力经济时代,网红是下一个风口?
  3. 商汤科技2023春季校园招聘正式启动!
  4. JAVA课程设计——农村人口管理系统 D4 功能实现(户头增删改查)
  5. 职场办公居然不会打印?纸型、单双面及PPT打印设置,干货教程!
  6. 如何将视频进行压缩?视频压缩选择什么工具好?
  7. mac下本地调试微信网页
  8. Linux 时间同步systemd-timesyncd介绍
  9. roku能不能安装软件_如何在Roku上禁用自定义广告和跟踪
  10. 获取距离某坐标附近一定范围内的点的两种方式