文章目录
一、应用层概述
应用层
位于计算机网络结构的最上层,用于解决应用进程的交互以实现特定网络应用的问题。万维网WWW,域名系统DNS,
动态主机配置协议DHCP,电子邮件,文件传送FTP和P2P文件共享,多媒体网络应用,都是属于应用层
的范畴。
目前应用层
流行的两种架构:C/S和P2P。
1.1、C/S架构
C/S架构的全称是服务器/客户端架构
,即将网络中的应用划分为两大类,一类是服务器,一类是客户端。客户端向服务器请求,服务器给予客户端响应。
服务端具有固定的IP和端口,并且应该长期处于运行状态。C/S架构是服务集中型 的,体现在一台服务器要接受N个客户端的请求并处理,客户端必须知道服务器的地址,而服务器不关心客户端的地址。
1.2、P2P架构
相比较于C/S架构,P2P架构中的每一个应用是对等的 ,体现在每个应用既有可能是服务方,也有可能是客户方。例如E从D下载文件,同时F又从E下载文件。
系统增加对等方,不会造成资源的紧张,因为增加一个服务请求者的同时,也是增加了一个服务的提供者。
二、动态主机配置协议DHCP
在网络中,用户主机如果需要访问Web服务器,需要进行IP地址,子网掩码,默认网关,DNS服务器地址等一系列的设置。如果手动地去配置,在现有的网络规模中是不现实的。
解决手动配置的问题,可以引入DHCP服务器。在其中设置好其他主机的配置信息,网络中的各个主机启动后访问DHCP服务器,向服务器请求自己的配置信息,而不用手动配置。
DHCP服务进程
,运行在DHCP服务器上。DHCP客户进程
,运行在用户主机上。为了简化,本笔记中后续的DHCP服务进程
和DHCP客户进程
,都简称为客户进程和服务进程,DHCP服务器
和用户主机
,都简称为服务和客户。
DHCP是应用层的协议 ,使用的是运输层的UDP协议作为支持 ,在运输层会被封装为UDP数据报,服务使用的端口是67 ,客户使用的端口是68
2.1、DHCP发现报文
客户
广播发送DHCP发现报文
,源IP地址为0.0.0.0
。因为目前用户主机还没有被分配IP地址。目标地址为255.255.255.255
。因为目前主机并不知道网络中有哪些具体的服务
。
网络中的所有设备都会收到该IP数据报。并对其层层解封出有DHCP发送报文的UDP数据报:
- 如果是其他
客户进程
监听到了,丢弃该报文,因为客户进程没有监听67端口。 - 如果是
服务进程
监听到了,会接受该报文,并作出响应。
DHCP发现报文
中,还带有事务ID和客户
的MAC地址。
2.2、DHCP提供报文
服务
接收到报文后,根据其中封装的客户
的MAC地址,查找自己的数据库,查询是否有针对该MAC地址的配置信息。
- 如果有,使用配置信息构建并发送DHCP提供报文。
- 如果没有,就使用默认的配置信息构建并发送DHCP提供报文。
然后发送DHCP提供报文
,该报文的源IP地址为服务
的地址,目标IP地址为广播地址。(因为此时客户
还没有获取IP地址,为了使客户
收到只能使用广播)
同样地网络中的所有设备都会收到该IP数据报。并对其层层解封出有DHCP提供报文的UDP数据报。
- 如果是其他
客户进程
监听到了,会接受该报文,并作出响应。 - 如果是
服务进程
监听到了,会丢弃该报文,因为服务进程没有监听68端口。
客户
还会根据事务ID,判断该报文是否是自己发送的请求报文的响应,除了事务ID,DHCP提供报文
还有其他信息:
客户
如果收到了多个服务
的响应报文,则会从其中选择一个。(通常选择先到达的。)并向选择的服务
发送DHCP请求报文
。
2.3、DHCP请求报文
源地址依旧是0.0.0.0,此时客户
还不能使用服务
的DHCP提供报文
中配置信息的IP地址,因为要再次向选择的服务
发起确认。
这时客户不是已经知道具体选择了哪一台DHCP服务了吗,为什么还需要通过广播的方式?
此时的客户端无有效 IP,无法用单播发起定向通信,只能广播。这一点,RFC 2131 明确规定:客户端 在未完成 DHCP 过程前,不能单播通信。)(并且需要通知所有服务器,告诉所有 DHCP Server:我选定了谁,其他人请释放资源。有些网络拓扑中,中继或交换机需要广播才能正确处理
2.4、DHCP确认报文
假设客户
选择服务1
作为自己的服务
。并且服务1
接受该请求,则服务1
会向客户
发送请求的DHCP确认报文
,源IP地址为自身的IP,目的IP地址依旧是广播地址, 这时客户
才可以使用租用的IP地址。
如果客户
通过ARP检测发现有占用的情况,客户
就会给服务发送撤销报文,然后重新走DHCP发现报文
的步骤:
2.5、DHCP的续约与终止
当租用期限过了一半时 ,客户
会向服务
发送DHCP请求报文
,请求更新租用期。这时的源IP地址为客户租用到的IP地址,目的IP地址为服务IP地址。
- 如果
服务
同意续约,则发送DHCP确认报文
,客户
得到新的租用期。 - 如果
服务
不同意续约,则发送DHCP否认报文
,客户
立即停止租用该IP,走DHCP发现报文
的步骤。 - 如果
服务
不响应,则在0.85的租用期时间,客户
发送DHCP请求报文
- 租用期满,
服务
依旧不响应,客户
立即停止租用该IP,走DHCP发现报文
的步骤。
- 租用期满,

并且客户
可以随时停止DHCP的租用 ,需要发送DHCP释放报文
。
服务给客户挑选IP地址时,使用ARP保证地址不被占用。客户在使用该IP之前,也会再次使用ARP进行检查
总结
