课程地址:【计算机网络微课堂(有字幕无背景音乐版)】 https://www.bilibili.com/video/BV1c4411d7jb/?share_source=copy_web&vd_source=b1cb921b73fe3808550eaf2224d1c155
目录
6 应用层
6.1 应用层概述
6.2 客户-服务器方式和对等方式
6.2.1 客户-服务器方式 C/S方式
6.2.2 对等方式 P2P方式
6.3 动态主机配置协议DHCP
6.3.1 DHCP的作用
6.3.2 DHCP的工作过程
6.3.3 DHCP中继代理
6.4 域名系统DNS
6.4.1 域名系统DNS的作用
6.4.2 域名结构-层次树状结构
6.4.3 域名服务器
6.4.4 域名解析过程
6.5 文件传送协议FTP
6.5.1 FTP的应用
6.5.2 FTP的基本工作原理
6.6 电子邮件
6.6.1 电子邮件的概念
6.6.2 电子邮件的接发过程
6.6.3 邮件发送协议SMTP工作原理
6.6.4 电子邮件的信息格式
6.6.5 邮件读取协议
6.6.6 基于万维网的电子邮件
6.7 万维网WWW
6.7.1 概念
6.7.2 浏览器历史与现状
6.7.3 万维网应用
6.7.4 万维网文档
6.7.5 超文本传输协议HTTP
6.7.6 HTTP的报文格式
1 HTTP请求报文格式
2 HTTP响应报文格式
6.7.7 浏览器使用Cookie在服务器上记录用户信息
1 Cookie的作用
2 Cookie的工作原理
6.7.8 万维网缓存与代理服务器
6 应用层
6.1 应用层概述
具体内容如下。
例如,
这就是推动因特网发展的万维网的应用,相关的应用层协议为超文本传送协议HTTP。
用户在浏览器地址栏输入的是见名知意的域名,而TCP/IP体系的网际层使用IP地址来标识目的主机。
从域名到IP地址的转换工作,由属于应用层范畴的域名系统DNS在后台帮用户自动完成,以方便用户使用。
除万维网应用和域名系统外,常见的应用还有动态主机配置、电子邮件、文件传送和P2Peye.com文件共享、多媒体网络应用等。
总结
6.2 客户-服务器方式和对等方式
具体内容如下。
6.2.1 客户-服务器方式 C/S方式
6.2.2 对等方式 P2P方式
总结
6.3 动态主机配置协议DHCP
具体内容如下。
6.3.1 DHCP的作用
假设有这样一个网络拓扑。
问题:应该给网络的各主机,设置怎样的网络相关配置信息,才能使他们可以正常访问网络中的Web服务器。
需要给网络中的各主机正确配置IP地址、子网掩码、默认网关、DNS服务器等相关配置信息。
可以手动给网络中的某些主机配置信息,但是如果网络的主机数量较多,则手工配置的工作量就比较大,且容易出错。
DHCP的作用
如果给网络添加一台DHCP服务器,在该服务器中设置好可为网络中其他各主机配置的网络配置信息。
网络中各主机开机后自动启动DHCP程序,向DHCP服务器请求自己的网络配置信息。这样网络中的各主机就都可以从DHCP服务器自动获取配置信息,而不用手动配置。
6.3.2 DHCP的工作过程
p69 2:00-
DHCP是TCP/IP协议体系应用层中的协议,使用运输层的UDP提供的服务。
DHCP报文的封装过程
DHCP报文在运输层被封装为UCP用户数据报。
DHCP服务器使用的UDP端口是67,DHCP客户使用的UDP端口是68,两个端口都是熟知端口。
封装有DHCP报文的UDP用户数据报,在网络层被封装为IP数据报,然后根据所使用的网络接口,封装成相应的数据链路层的帧进行发送,例如封装成以太网帧。
DHCP客户与DHCP服务器的交互过程
启用主机的DHCP后,DHCP客户广播发送DHCP发现报文。封装该报文的IP数据报的源地址为0.0.0.0,因为主机此时没有分配到IP地址。目的IP地址为广播地址255.255.255.255,之所以广播发送是因为主机不知道网络中有哪几个DHCP服务器及其IP地址。
由于是广播的IP数据报,网络中所有设备都会收到该数据报,并层层解封,解封出封装有DHCP发现报文的UDP用户数据报。
对于DHCP客户,其应用层没有监听该UDP用户数据报的目的端口67的进程,也就是没有DHCP服务器进程,因此无法交付DHCP发现报文只能丢弃。
就是说网络中的其他主机,收到前面说的主机发送的DHCP发现报文后,由于自身没有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服务器1的地址。
DHCP服务器若同意则发回DHCP确认报文。这样DHCP客户就得到了新的租用期。
DHCP服务器若不同意则发回DHCP否认报文。这时DHCP客户必须立即停止使用之前租用的IP地址,并重新发送DHCP发现报文来重新申请IP地址。
DHCP服务器若未作出响应,则租用期过了87.5%时,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地址是否已被网络中其他主机占用。
6.3.3 DHCP中继代理
有这样一个网络拓扑,请大家思考一下该网络中的各主机是否可以通过DHCP来自动获取到网络配置信息?
答案是否定的。
原因很简单,该网络中的主机广播发送DHCP发现报文,但该广播报文不会被路由器转发,而是丢弃。
解决方法是给该路由器配置DHCP服务器的IP地址,并使之成为DHCP中继代理。
这样,该网络中的各主机就可以通过DHCP来自动获取到网络配置信息了。
当该路由器收到广播的DHCP发现报文后,会将其单播转发给DHCP服务器。DHCP客户和DHCP服务器通过该路由器的后续交互过程,我们就不再赘述了。
需要DHCP中继代理的主要原因是,我们并不愿意在每一个网络上都设置一个DHCP服务器,因为这样会使DHCP服务器的数量太多。
总结
6.4 域名系统DNS
具体内容如下。
6.4.1 域名系统DNS的作用
如下图所示,因特网中的某台主机要访问某台Web服务器。
我们只需在用户主机中运行某个浏览器软件,在其地址栏中输入要访问的Web服务器的域名,并按下回车键即可访问到Web服务器所提供的内容。
这是大家最常用的一种网络应用。
接下来我们在用户主机中使用ping命令来测试一下用户主机与Web服务器的连通性。
可以看到,我们ping的是Web服务器的域名,但ping命令实际上拼的是Web服务器的IP地址。
这与我们之前课程中所介绍的TCP/IP体系采用IP地址进行寻址的知识是一致的,也就是说,即使不使用域名,也可以通过IP地址来寻址目的主机。
但域名与IP地址相比,便于人们记忆。
因此,对于大多数网络应用,我们一般使用域名来访问目的主机,而不是直接使用IP地址来访问。
对于本例,简单来说,当我们在浏览器地址栏中输入某个Web服务器的域名时,用户主机会首先在自己的DNS的高速缓存中,查找该域名所对应的IP地址。
如果没有找到,则会向网络中的某台DNS服务器查询。
DNS服务器装有域名和IP地址映射关系的数据库。
当DNS服务器收到DNS查询报文后,在其数据库中进行查询,之后将查询结果发送给用户主机。
现在,用户主机中的浏览器可以通过Web服务器的IP地址对其进行访问了。
请同学们思考一下因特网是否可以只使用一台DNS服务器?
尽管理论上是可行的,但在实践中这种做法并不可取。
因为因特网的规模很大,这样的域名服务器肯定会因为超负荷而无法正常工作,而且一旦域名服务器出现故障整个因特网就会瘫痪。
早在1983年,因特网就开始采用层次结构的命名树作为主机的名字,也就是我们所谓的域名,并使用分布式的域名系统DNS使大多数域名都在本地解析,仅少量解析需要在因特网上通信,因此系统效率很高。
由于域名系统是分布式系统,即使单个域名服务器出现了故障,也不会妨碍整个系统的正常运行。
6.4.2 域名结构-层次树状结构
6.4.3 域名服务器
6.4.4 域名解析过程
高速缓存
练习题
A
练习题2
A
答错啦o(╥﹏╥)o
正确答案C
总结
6.5 文件传送协议FTP
具体内容如下。
6.5.1 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服务器。
6.5.2 FTP的基本工作原理
练习题
A
练习题2
C
竟然是这样的。
总结
6.6 电子邮件
具体内容如下。
6.6.1 电子邮件的概念
这是发送方使用的邮件服务器,例如QQ邮件服务器。这是接收方使用的邮件服务器,例如谷歌邮件服务器。
邮件服务器是电子邮件系统的基础设施,因特网上所有的服务提供商都有邮件服务器,其功能是发送和接收邮件,同时还要负责维护用户的邮箱。
如图所示,我们可以简单的认为邮件服务器中有很多邮箱,还有用来缓存再转发邮件的缓存。
发送方需要用户代理通过邮件发送协议,例如SMTP,将邮件发送给发送方邮件服务器。
发送方邮件服务器同样通过邮件发送协议,将该邮件发送给接收方邮件服务器。
接收方在方便的时候需要用户代理通过邮件读取协议,例如POP3,从接收方邮件服务器读取邮件。
也就是说,电子邮件所接的协议包括邮件发送协议和邮件读取协议两类。
6.6.2 电子邮件的接发过程
发送方的用户代理作为SMTP客户与发送方邮件服务器中的SMTP服务器进行TCP连接,然后基于这条连接使用SMTP协议,来发送邮件给发送方邮件服务器。
发送方邮件服务器中的SMTP客户与接收方邮件服务器中的SMTP服务器进行TCP连接,然后基于这条连接使用SMTP协议来发送已收到的待转发邮件给接收方邮件服务器。
接收方的用户代理作为POP3客户与接收方邮件服务器中的POP3服务器进行TCP连接,然后基于这条连接需要POP3协议从接收方邮件服务器读取邮件。
可以看到这是邮件发送协议的使用范围,包含发送方用户代理到发送方邮件服务器以及发送方邮件服务器到接收方邮件服务器这两个部分。
这是邮件读取协议的使用范围,只有接收方用户代理到接收方邮件服务器这一部分。
6.6.3 邮件发送协议SMTP工作原理
SMTP的基本工作原理。
我们以发送方邮件服务器使用SMTP协议给接收方邮件服务器发送待转发的邮件为例。
发送方邮件服务器周期性地扫描邮件缓存,如果发现有待转发的邮件,则发送方邮件服务器中的SMTP客户会与接收方邮件服务器中的SMTP服务器进行TCP连接,端口号为25。
之后SMTP客户就可以基于这条TCP连接给SMTP服务器发送SMTP命令,共14条,SMTP服务器也会给SMTP客户发送相应的应答,共21种。
SMTP客户与服务器之间通过命令与应答的交互方式最终实现SMTP客户发送邮件给SMTP服务器。
具体过程省略,可见p72.
6.6.4 电子邮件的信息格式
6.6.5 邮件读取协议
6.6.6 基于万维网的电子邮件
练习题
D
答对啦
练习题2
A
答对啦
I
II III 正确
IV 用户代理从邮件服务器读取邮件时,使用的是POP3协议,还可以使用功能更强的IMAP协议。因此IV错误
练习题3
D
总结
6.7 万维网WWW
6.7.1 概念
6.7.2 浏览器历史与现状
浏览器历史
浏览器现状。
6.7.3 万维网应用
举例说明万维网应用。
在用户主机中,使用浏览器来访问湖南科技大学的万维网服务器,也就是访问湖南科技大学的官方网站。
在浏览器的地址栏中输入湖南科技大学官方网站的域名,并按下回车键后。
浏览器将发送请求报文给服务器。
服务器收到请求报文后,执行相应操作,然后给浏览器发回响应报文。
浏览器解析并渲染响应报文中的内容,这样就可以看到网站首页了。
为了方便访问在世界范围的文档,万维网使用统一资源定位符来指明因特网上任何种类资源的位置。
统一资源定位符的一般形式由以下四个部分组成,分别是协议、主机、端口、路径。
前面在浏览器地址栏中输入的是湖南科技大学官方网站的域名,目的是获取网站首页的内容,其对应的统一资源定位符如图所示。
当点击网页中的某个超链接时将跳转到另一个网,可以看到,这是该网页相应的统一资源定位符,其中,协议、主机和端口与网站首页相同,不同的是路径和网页文件。
6.7.4 万维网文档
这是湖南科技大学官方网站的首页,将其另存为文件。
可以看到有一个扩展名为HTML的文件和一个文件夹。
打开该文件夹看看其内容。
这三个扩展名为htm的文件是HTML文档。
这五个扩展名为JS的文件是Java script文档。
这两个扩展名为CSS的文件是CSS文档。
其他的JPG文件和PNG文件是图片文件。
HTML是超文本标记语言的英文缩写词,使用多种标签来描述网页的结构和内容。
CSS是层叠样式表的英文缩写词,从审美的角度来描述网页的样式。
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 world段落的颜色和字体大小都发生了相应的变化。
接下来再给该网页添加一个按钮。
在之前的HTML文档的主体中使用button标签来添加一个按钮。
为该按钮指定一个发生单击事件时应该调用的处理函数,然后用JavaScript的脚本语言来编写一个JS文档。在该文档中,编写单击事件处理函数的具体实现代码。
在HTML文档的首部使用script标签将该JS文档引入。
在事件处理函数中,通过元素的id来找到相应的元素,也就是显示Hello world的p标签,然后更改其显示内容。
现在我们在浏览器中进行刷新就可以看到我们所添加的按钮。当我们用鼠标点击该按钮时,Hello world变成了谢谢你的赞。
通过上述举例,相信大家对HTML文档CSS文档JavaScript文档已经有了初步的认识。
至于这些文档的具体编写,属于web前端开发的基础,并不属于本课程的教学大纲,我们就要不再深入介绍了。
需要大家注意的是,这些文档都部署在服务器端,有一些是web前端人员开发设计好的静态页面,有一些是服务器后端程序根据用户需求自动生成的动态页面。它们都需要从服务器传送给用户的浏览器进行解析和渲染。这就要不得不提到TCP/IP体系应用层中的一个非常重要的协议-超文本传输协议HTTP。
6.7.5 超文本传输协议HTTP
HTTP定义了浏览器,即万维网客户进程,怎样向万维网服务器请求万维网文档,以及万维网服务器怎样把万维网文档传送给浏览器。
使用用户主机来访问湖南科技大学的万维网服务器,可以看成是用户主机中的浏览器进程,即客户进程,与服务器中的服务器进程基于因特网通信。
浏览器进程,首先发起与服务器进程的TCP连接,使用熟知端口号80。基于这条已建立好的TCP连接,浏览器进程向服务器进程发送HTTP请求报文。服务器进程收到后执行相应操作,然后给浏览器进程发回响应报文。
HTTP 1.0采用非持续连接方式,在该方式下。每次浏览器要请求一个文件都要与服务器建立TCP连接,当收到响应后,就立即关闭连接。
举例说明。这是客户与服务器之间通过三报文握手进行TCP连接。
在这三个报文中的最后一个报文的数据载荷部分,携带有HTTP请求报文。服务器收到后,给客户发回HTTP响应报文。
这是一次请求和响应所耗费的时间,记为往返时间RTT。这又是一次请求和响应所耗费的时间RTT。这是文档的传输时延。
可以看到请求一个万维网文档所需的时间为两倍的RTT加文档的传输时延。
每请求一个文档就要有两倍RTT的开销。
若一个网页上有很多引用对象。例如图片等,那么请求每一个对象都需要额外花费两倍的RTT的时间。
为了减少时延,浏览器通常会建立多个并行的TCP连接,同时请求多个对象,但是这会大量占用万维网服务器的资源,特别是万维网服务器往往同时服务于大量客户的请求,这会使其负担很重。
HTTP 1.1采用持续连接方式,在该方式下,万维网服务器在发送响应后,仍然保持这条连接,使同一个客户和该服务器可以继续在这条连接上,传送后续的HTTP请求报文和响应报文。
这并不局限于传送同一个页面上引用的对象,而是只要这些文档都在同一个服务器上就行。
为了进一步提高效率,HTTP1.1的持续连接还可以使用流水线方式工作,即浏览器在收到HTTP的响应报文之前就能够连续发送多个请求报文。这样的一个接一个的请求报文到达服务器后,服务器就发回一个接一个的响应报文。这样就节省了很多个RTT时间,使TCP连接中的空闲时间减少,提高了下载文档的效率。
6.7.6 HTTP的报文格式
1 HTTP请求报文格式
2 HTTP响应报文格式
状态码
常见状态行
浏览器实际的显示信息
6.7.7 浏览器使用Cookie在服务器上记录用户信息
1 Cookie的作用
2 Cookie的工作原理
用户主机中的浏览器进程,首先与万维网服务器中的服务器进程建立TCP连接。
当用户的浏览器进程初次向服务器进程发送HTTP请求报文时,服务器进程就会为其产生一个唯一的Cookie识别码,并以此为索引在服务器的后端数据库中创建一个项目,用来记录该用户访问该网站的各种信息。接着就会给浏览器进程发回HTTP响应报文。在响应报文中包含有一个首部字段为Set-Cookie的首部行,该字段的取值就是Cookie识别码。
当浏览器进程收到该响应报文之后,就在一个特定的Cookie文件中添加一行,记录该服务器的域名和Cookie的识别码。
当用户再次使用浏览器访问这个网站时,每发送一个HTTP请求报文,浏览器都会从Cookie文件中取出该网站的Cookie识别码,并放到HTTP请求报文的Cookie首部行。服务器根据Cookie识别码就可以识别出该用户,并返回该用户的个性化网页。
6.7.8 万维网缓存与代理服务器
具体内容如下。
假设这是因特网上的某台万维网服务器,为了与万维网代理服务器的名称区分,我们简称该服务器为原始服务器。这是校园网中的某台万维网代理服务器,我们简称其为代理服务器。
当校园网中的某台主机要访问因特网上的原始服务器时,它首先会向校园网中的代理服务器发送请求。
若代理服务器中存放有所请求的对象,则代理服务器会向该主机发回包含所请求对象的响应。
若代理服务器中没有所请求的对象,则代理服务器会向因特网上的原始服务器发送请求。原始服务器将包含有锁请求对象的响应发回给代理服务器。
代理服务器将该响应存入Web缓存,然后给主机发回该响应。
可以想象,如果Web缓存的命中率比较高,则路由器R1和R2之间的链路上的通信量将大大减少。因而可以减少校园网各主机访问因特网的时延。
可能会有以下疑问。
这是原始服务器中的某个文档,这是该文档在代理服务器中的副本。
假设原始服务器中的该文档已被更改,之后,校园网中的某台主机要请求该文档。
它首先向校园网中的代理服务器发送请求。代理服务器找到该文档后,将其封装在响应报文中发回给主机,这样主机所请求到的文档,与原始服务器中的文档就不一致了。
实际上,原始服务器通常会为每个响应的对象设定一个修改时间字段和一个有效日期字段。
当校园网中的某台主机要请求原始服务器中的该文档时,它首先向校园网中的代理服务器发送请求。
若代理服务器中的该文档未过期,则代理服务器将其封装在响应报文中发回给主机。
若代理服务器中的该文档已过期,则代理服务器会向因特网上的原始服务器发送请求。
在请求报文中,包含有一个首部字段为if-modified-since的首部行,该字段的取值就是该文档的修改日期。
原始服务器根据该文档的修改日期,就可判断出代理服务器中存储的该文档是否与自己存储的该文档一致。
如果一致,则给代理服务器发送不包含实体主体的响应报文,状态码为304,短语文not modified.
代理服务器重新更新该文档的有效日期,然后将该文档封装在响应报文中发回给主机。
如果不一致,则给代理服务器发送封装有该文档的响应报文,如图所示。
这样代理服务器就更新了该文档。
然后将更新后的该文档封装在响应报文中发回给主机。
练习题
D
错啦,是C
练习题2
2个?
错啦,是4个。
答案
注意:由于rfc.html页面中引用另外2个JPEG小图像,则浏览器会继续依次请求这两个对象。
注意非流水线方式的概念。
总结
完结撒花~