计算机网络—— 应用层(123):应用层概述客户/服务器方式(C/S方式)和对等方式(P2P方式)动态主机配置协议DHCP
Posted 大彤小忆
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络—— 应用层(123):应用层概述客户/服务器方式(C/S方式)和对等方式(P2P方式)动态主机配置协议DHCP相关的知识,希望对你有一定的参考价值。
计算机网络系列内容的学习目录 → \\rightarrow →谢希仁计算机网络学习系列内容汇总。
1. 应用层概述
■ 应用层是计算机网络体系结构的最顶层,是设计和建立计算机网络的最终目的,也是计算机网络中发展最快的部分。
⋄
\\diamond
⋄ 早期基于文本的应用(电子邮件、远程登录、文件传输、新闻组)
⋄
\\diamond
⋄ 20世纪90年代将因特网带入千家万户的万维网www
⋄
\\diamond
⋄ 当今流行的即时通信、P2P文件共享及各种音视频应用
⋄
\\diamond
⋄ 计算设备的小型化和“无处不在”,宽带住宅接入和无线接入的日益普及和迅速发展,为未来更多的新型应用提供了广阔的舞台。
1.1 课后练习
1. 在计算机网络体系结构中,应用层的主要功能是( B )
A. 实现进程之间基于网络的通信
B. 通过进程之间的交互来实现特定网络应用
C. 实现分组在多个网络上传输
D. 透明传输比特流
分析: 在计算机网络体系结构中,应用层的主要功能是通过进程之间的交互来实现特定网络应用。
2. 以下不属于TCP/IP体系结构应用层范畴的是( D )
A. HTTP B. DNS C. DHCP D. UDP
分析: 以下属于TCP/IP体系结构应用层范畴的是HTTP、DNS、DHCP。
2. 客户/服务器方式(C/S方式)和对等方式(P2P方式)
■ 网络应用程序运行在处于网络边缘的不同的端系统上,通过彼此间的通信来共同完成某项任务。
■ 开发一种新的网络应用首先要考虑的问题就是网络应用程序在各种端系统上的组织方式和它们之间的关系。目前流行的主要有以下两种:
⋄
\\diamond
⋄ 客户/服务器(Client/Server,C/S)
⋄
\\diamond
⋄ 方式对等(Peer-to-Peer,P2P)方式
■ 客户/服务器(Client/Server,C/S)方式
⋄
\\diamond
⋄ 客户和服务器是指通信中所涉及的两个应用进程。
⋄
\\diamond
⋄ 客户/服务器方式所描述的是进程之间服务和被服务的关系。
⋄
\\diamond
⋄ 客户是服务请求方,服务器是服务提供方。
⋄
\\diamond
⋄ 服务器总是处于运行状态,并等待客户的服务请求。服务器具有固定端口号(例如HTTP服务器的默认端口号为80),而运行服务器的主机也具有固定的IP地址。
■ C/S方式是因特网上传统的、同时也是最成熟的方式,很多我们熟悉的网络应用采用的都是C/S方式。包括万维网www、电子邮件、文件传输FTP等。
■ 基于C/S方式的应用服务通常是服务集中型的,即应用服务集中在网络中比客户计算机少得多的服务器计算机上。
⋄
\\diamond
⋄ 由于一台服务器计算机要为多个客户机提供服务,在C/S应用中,常会出现服务器计算机跟不上众多客户机请求的情况。
⋄
\\diamond
⋄ 为此,在C/S应用中,常用计算机群集(或服务器场)构建一个强大的虚拟服务器。
■ 对等(Peer-to-Peer,P2P)方式
⋄
\\diamond
⋄ 在P2P方式中,没有固定的服务请求者和服务提供者,分布在网络边缘各端系统中的应用进程是对等的,被称为对等方。对等方相互之间直接通信,每个对等方既是服务的请求者,又是服务的提供者。
■ 目前,在因特网上流行的P2P应用主要包括P2P文件共享、即时通信、P2P流媒体、分布式存储等。
■ 基于P2P的应用是服务分散型的,因为服务不是集中在少数几个服务器计算机中,而是分散在大量对等计算机中,这些计算机并不为服务提供商所有,而是为个人控制的桌面计算机和笔记本电脑,它们通常位于住宅、校园和办公室中。
■ P2P方式的最突出特性之一就是它的可扩展性。因为系统每增加一个对等方,不仅增加的是服务的请求者,同时也增加了服务的提供者,系统性能不会因规模的增大而降低。
■ P2P方式具有成本上的优势,因为它通常不需要庞大的服务器设施和服务器带宽。为了降低成本,服务提供商对于将P2P方式用于应用的兴趣越来越大。
2.2 课后练习
1. 用户提出服务请求,网络将用户请求传送到服务器;服务器执行用户请求,完成所要求的操作并将结果送回用户,这种工作方式称为( A )
A. C/S方式 B. P2P方式 C. CSMA/CD方式 D. PPP方式
分析: 用户提出服务请求,网络将用户请求传送到服务器;服务器执行用户请求,完成所要求的操作并将结果送回用户,这种工作方式称为客户/服务器(C/S)方式。
2. 以下有关P2P方式的叙述中,错误的是( D )
A. 没有固定的服务请求者和服务提供
B. 对等方相互之间直接通信
C. 每个对等方既是服务的请求者,又是服务的提供者
D. 基于P2P的应用是服务集中型的,因为服务集中在少数几个服务器计算机中
分析: 基于C/S方式的应用服务通常是服务集中型的,即应用服务集中在网络中比客户计算机少得多的服务器计算机上。
基于P2P的应用是服务分散型的,因为服务不是集中在少数几个服务器计算机中,而是分散在大量对等计算机中。
3. 动态主机配置协议DHCP
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。默认情况下,DHCP作为Windows Server的一个服务组件不会被系统自动安装,还需要管理员手动安装并进行必要的配置。
DHCP通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。
■ DHCP的作用
首先来举例说明DHCP的作用。如下图所示,有这样一个网络拓扑。思考一下我们应该给网络中的各主机设置怎样的网络相关配置信息才能使它们可以正常访问网络中的外部服务器?
我们需要给网络中的各主机正确配置IP地址、子网掩码、默认网关DNS服务器的网络相关配置信息,例如下图是我们分别给两台主机手工配置的网络相关配置信息。
试想一下,如果网络中的主机数量比较多,则这种手工配置的工作量就比较大,并且容易出错。如果我们给网络中添加一台DHCP服务器,在该服务器中设置好可为网络中其他各主机配置的网络配置信息。网络中各主机开机后自动启动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发现报文,封装该报文的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数据报的源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地址是否已被网络中其他主机占用。
■ DHCP中继代理
如下图所示,有这样一个网络拓扑,思考一下该网络中的各主
机是否可以通过DHCP来自动获取到网络配置信息呢?
答案是否定的。原因很简单,该网络中的主机广播发送DHCP发现报文,但该广播报文不会被路由器转发,而是丢弃。
解决方法是给该路由器配置DHCP服务器的IP地址,并使之成为DHCP中继代理,这样该网络中的各主机就可以通过DHCP来自动获取到网络配置信息了。当该路由器收到广播的DHCP发现报文后,会将其单播转发给DHCP服务器。
使用DHCP中继代理的主要原因是我们并不愿意在每一个网络上都设置一个DHCP服务器,因为这样会使DHCP服务器的数量太多。
3.1 总结
■ 动态主机配置协议DHCP(Dynamic Host Configuration Protocol)提供了一种机制,称为即插即用连网。这种机制允许一台计算机加入新网络时可自动获取IP地址等网络配置信息而不用手工参与。
■ DHCP主要使用以下报文来实现其功能:
⋄
\\diamond
⋄ DHCP DISCOVER:DHCP发现报文
⋄
\\diamond
⋄ DHCP OFFER:DHCP提供报文
⋄
\\diamond
⋄ DHCP REQUEST:DHCP请求报文
⋄
\\diamond
⋄ DHCP ACK:DHCP确认报文
⋄
\\diamond
⋄ DHCP NACK:DHCP否认报文
⋄
\\diamond
⋄ DHCP RELEASE:DHCP释放报文
■ DHCP报文在运输层使用UDP协议封装
⋄
\\diamond
⋄ DHCP客户使用的UDP端口号为68
⋄
\\diamond
⋄ DHCP服务器使用的UDP端口号为67
■ DHCP客户在未获取到IP地址时使用地址0.0.0.0
■ 在每一个网络上都设置一个DHCP服务器会使DHCP服务器的数量太多。因此现在是使每一个网络至少有一个DHCP中继代理(通常是一台路由器),它配置了DHCP服务器的IP地址信息,作为各网络中计算机与DHCP服务器的桥梁。
3.2 课后练习
1. DHCP的作用是( C )
A. 通过IP地址来获取MAC地址
B. 通过域名来获取IP地址
C. 使网络中各主机自动从DHCP服务器获取IP地址、默认网关等网络配置信息
D. 使网络中各主机自动从DHCP服务器获取MAC地址和域名
分析: DHCP的作用是使网络中各主机自动从DHCP服务器获取IP地址、默认网关等网络配置信息。
2. 封装DHCP DISCOVER报文的IP数据报,其首部中源IP地址字段的值和目的IP地址字段的值分别是( C )
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
分析: 封装DHCP DISCOVER报文的IP数据报,其首部中源IP地址字段的值和目的IP地址字段的值分别是0.0.0.0,255.255.255.255。
以上是关于计算机网络—— 应用层(123):应用层概述客户/服务器方式(C/S方式)和对等方式(P2P方式)动态主机配置协议DHCP的主要内容,如果未能解决你的问题,请参考以下文章