课程地址:【计算机网络微课堂(有字幕无背景音乐版)】 https://www.bilibili.com/video/BV1c4411d7jb/?share_source=copy_web&vd_source=b1cb921b73fe3808550eaf2224d1c155
目录
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来自动获取到网络配置信息?