关于DHCP工作过程的讨论

2014-07-03 15:51吴琛
科技与创新 2014年7期
关键词:IP地址互联网

吴琛

摘 要:随着互联网的普及,人们工作、学习和生活都与网络的联系越来越紧密,搭建了许多不同的网络,比如企业网、校园网和城区网等。网络管理是大型计算机网络成功的关键,利用动态主机分配协议(DHCP)服务已经相当流行,DHCP的运用也越来越被重视。在实际操作过程中, DHCP服务器的构建也越来越常见。采用DHCP技术动态地为主机配置参数,可以有效解决目前IP地址资源不足和用户移动性等问题,并能减轻大型网络管理员的工作量,减少手工网络配置的错误,可以快速搭建一个大型网络或修改其网络配置。通过Sniffer软件捕捉DHCP数据包,详细讨论了DHCP的工作过程。

关键词:互联网;DHCP;IP地址;MAC地址

中图分类号:TP393.071 文献标识码:A 文章编号:2095-6835(2014)07-0138-03

1 DHCP介绍

随着计算机的普及,现代生活朝着网络化、信息化的方向发展,无论在学习、生活还是科研应用等领域,都离不开网络。在这个网络时代,网上沟通与交流已经成为人们不可分割的一部分。要实现这些网上交流,网络协议是必不可少的。各客户端之间的交流必须要通过服务器来进行,服务器在管理众多客户时,通过发放IP地址来为客户提供上网服务,使客户可以轻松地在网上畅游。但是,对管理员而言,如果需要一个一个地在客户端上设置IP地址,对大中型网络来说,其繁重的工作量是不可想象的,无法令人承受。那么,怎么解决这个问题呢?DHCP便应运而生了。DHCP可以帮助管理员自动将IP地址分配给每一个发出申请的用户,而不需要管理员对每一个客户端进行手动设置,这为管理员对网络的管理提供了极大的便利,在减轻了管理员工作强度的同时,还大大提高了工作效率。

TCP/IP网络中的每个主机都需要一个IP地址,网络中的主机通过IP地址通信。关于IP地址及其相关配置,可通过以下两种方式获得:手工配置和自动获得。

如果网络主机数目较少,可手工为网络中的主机分配IP地址。但在某些情况下,网络管理员手工为每台计算机分配IP地址时,就显得力不从心,这就需要动态IP地址方案。在该方案中,每台主机并不设定静态IP地址,而是在开机时被分配IP地址,所以,这台计算机就被称为DHCP客户端。在网络中提供DHCP服务的计算机被称为是DHCP服务器。DHCP服务器为网络中的计算机动态分配IP地址,并提供子网掩码、默认网关和DNS服务器的IP地址等。

通过DHCP服务,可以减少管理员的工作量,还可避免IP地址的冲突。要想大批量配置计算机的IP地址和相关设置,只要在DHCP服务器上设置即可,管理员不必对每一台计算机都进行配置。

2 DHCP的使用场合

需要使用DHCP服务的场合有以下几种:①网络规模较大,网络中的主机数很多,要在网络中增删主机或重新配置网络时,使用手工分配的工作量会很大,而且容易出错,比如会导致IP地址冲突等。②网络中的主机多,而IP地址不够用,此时,可使用DHCP服务器解决这一问题。例如网络上有100台主机,采用静态地址方案时,每个主机都要分配一个IP地址,总共需要100个IP地址。然而,这100台主机并不同时开机,甚至可能只有20台同时开机,这样就浪费了80个IP地址。这种情况对Internet服务提供商(ISP)来说更为严重。如果ISP有10 000个用户,是否需要10 000个IP地址?解决这个问题的最好方法就是使用动态地址方案,即DHCP。③移动客户要在不同子网中移动时,就需要获得不同子网的IP地址,DHCP服务可以有效解决这一问题。随着移动办公的普及,当计算机在不同子网移动时,需要改变IP地址,并且移动的计算机需要在每个网络中都占用1个IP地址。

3 DHCP工作过程

该实验的网络拓扑如图1所示。

路由器R1为DHCP服务器,R2为DHCP客户端。在PC上安装Sniffer软件,通过捕获DHCP数据包,分析IP地址获取的全过程。

3.1 捕获包

为了便于分析,把计算机连接到1台单独的交换机上,关闭计算机上无关的应用程序,这样做的目的是仅捕获相关的包。

运行R1和R2,R1的配置如下:

Router>en

Router#conf t

Router(config)#host R1

R1(config)#int fa0/0

R1(config-if)#ip address 192.168.0.1 255.255.255.0

R1(config-if)#no shut

R1(config-if)#exit

//接下来这段是DHCP服务器的配置

R1(config)#ip dhcp excluded-address 192.168.0.1 //把R1排除出地址池

R1(config)#ip dhcp excluded-address 192.168.0.2 //把PC排除出地址池

R1(config)#ip dhcp pool nat-pool //配置DHCP地址池

R1(dhcp-config)#network 192.168.0.0 255.255.255.0 //要配置的网段

R1(dhcp-config)#default-router 192.168.0.1 //要配置的网关

R1(dhcp-config)#dns-server 218.2.135.1 //要配置的DNS服务器

R2的配置如下:

Router>en

Router#conf t.

Router(config)#host R2

R2(config)#int fa0/0

R2(config-if)#ip address dhcp

注意:先不要打开R2的Fa0/0端口。

运行Sniffer软件,开始抓包。打开R2的Fa0/0端口。当R2的屏幕出现以下所示的信息时,停止Sniffer的包捕获。

R2(config)#int fa0/0

R2(config-if)#ip address dhcp

R2(config-if)#

R2(config-if)#no sh

R2(config-if)#

*Mar 22 13:21:59.555: %LINK-3-UPDOWN: Interface FastEthernet0/0,changed state to up

*Mar 22 13:21:59.555: %ENTITY_ALARM-6-INFO: CLEAR INFO Fa0/0 Physical Port Administrative State Down

*Mar 22 13:22:00.555: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up

*Mar 22 13:22:09.267: %DHCP-6-ADDRESS_ASSIGN: Interface FastEthernet0/0 assigned DHCP address 192.168.0.5,mask 255.255.255.0,hostname R2

Sniffer捕获的包如图2所示。这里捕获的包保存在sniffer-dhcp.cap文件中,如果计算机上还有其他的应用程序包,可能会夹杂其他的数据包,但图中显示的数据包应该都在。

3.2 分析包

当DHCP客户端登录进入网络时,通过以下步骤获取IP地址。

DHCP客户端(R2)先发送DHCP Discover信息。如图2所示,该数据包的源MAC地址是“ca08.0974.0000”,即路由器R2 Fa0/0端口的MAC,目的MAC地址是“FFFFFFFFFFFF”,广播MAC地址,因为客户端现在还并不知道DHCP服务器的MAC地址;源IP地址是“0.0.0.0”,因为路由器R2现在还没有IP地址,目的IP地址是“255.255.255.255”,因为客户端现在还并不知道DHCP服务器的IP地址;DHCP使用的是UDP协议,客户端的端口号是68,服务器端的端口号是67;数据包的用途是“DHCP Discover”。

R1(DHCP服务器)收到R2(DHCP客户端)广播的DHCP Discover报文后,它发现DHCP地址池中的IP地址“192.168.0.5”可以被租用。R1在提供地址前,先要发送一个ARP查询包,查询该地址是否已被使用,如果收到ARP应答包,则表明该地址已被使用,R1会从地址池中换一个地址再试;如果没有收到ARP应答,表明该地址未被使用。如图3所示,ARP查询包也是一个广播包,源MAC地址“cc07.0974.0000”,即R1的Fa0/0端口的MAC地址,目的MAC地址是广播地址,因为要向全网查询;源IP地址是192.168.0.1,目的IP地址是192.168.0.5.

R1向R2发送DHCP Offer报文,其中包括要租用的IP地址。如图4所示,该数据包源MAC地址为“cc07.0974.0000”,即R1的Fa0/0端口的MAC地址,目的MAC地址是广播MAC地址,因为DHCP服务器要通知网络上的其他DHCP服务器,该地址已被使用。源IP地址是R1的IP地址“192.168.0.1”,目的IP地址是广播地址,因为此时R2仍没有IP地址。DHCP使用的是UDP协议,源端口变成了67,目的端口是68;DHCP Offer中包含了要分配客户端的IP地址和客户端的MAC地址;该数据包的用途是DHCP Offer。

如果没有DHCP服务器对客户端的请求进行响应,则客户端就无法获得IP地址,初始化失败。但客户端会每隔一段时间发送几个DHCP Discover报文,直到收到DHCP Offer。如果是Windows的客户端,在多次尝试失败后,客户端将被分配1个169.254.0.0/16网段的IP地址,但客户端仍会继续尝试联系DHCP服务器,一旦获得DHCP Offer,客户端便会使用新获得的IP地址替换169.254.0.0/16网段的IP地址。

R2收到DHCP Offer报文后,发送DHCP Request租约选择报文到服务器,表示它将使用所提供的IP地址。如图5所示,该数据包的源MAC地址是R2的MAC地址,目的MAC地址是广播地址,因为客户端要通知网络上的其他DHCP服务器该地址已使用,以避免IP地址冲突。源IP地址是“0.0.0.0”,目的IP地址是“255.255.255.255”。DHCP使用的是UDP协议,源端口是68,目的端口是67;DHCP Request包含了DHCP服务器和客户端要使用的IP地址;该数据包的用途是DHCP Request。

R1收到DHCP租约选择信息后,发送DHCP Ack确认信息,以确定此租约的 成立。如图6所示,该数据包的源MAC地址是R1的MAC地址,目的MAC地址是广播地址,因为DHCP服务器要通知网络上的其他DHCP服务器该地址已被使用,以避免IP地址冲突。源IP地址是R1的IP地址,目的IP地址是广播地址,因为此时客户端仍没有IP地址;DHCP使用的是UDP协议,源端口是67,目的端口是68.除了DHCP服务器地址、要提供的IP地址和客户端的MAC地址外,DHCP Ack报文中还包含其他DHCP选项信息,比如子网掩码、默认网关、DNS服务器等。

客户端收到DHCP Ack信息后,利用其中的信息配置它的TCP/IP属性,并发送一个ARP Reply报文。该报文如图7所示,源MAC地址为R2的MAC地址,目的MAC为广播MAC地址,因为它要通知网络上的其他设备该IP地址已被使用,以免IP地址冲突;ARP Reply包的源IP地址和目的IP地址都是192.168.0.5.

综上所述,DHCP的工作过程如图8所示,即IP租约请求—IP租约提供—IP租约选择—IP租约确认。

〔编辑:白洁〕

Router(config)#host R2

R2(config)#int fa0/0

R2(config-if)#ip address dhcp

注意:先不要打开R2的Fa0/0端口。

运行Sniffer软件,开始抓包。打开R2的Fa0/0端口。当R2的屏幕出现以下所示的信息时,停止Sniffer的包捕获。

R2(config)#int fa0/0

R2(config-if)#ip address dhcp

R2(config-if)#

R2(config-if)#no sh

R2(config-if)#

*Mar 22 13:21:59.555: %LINK-3-UPDOWN: Interface FastEthernet0/0,changed state to up

*Mar 22 13:21:59.555: %ENTITY_ALARM-6-INFO: CLEAR INFO Fa0/0 Physical Port Administrative State Down

*Mar 22 13:22:00.555: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up

*Mar 22 13:22:09.267: %DHCP-6-ADDRESS_ASSIGN: Interface FastEthernet0/0 assigned DHCP address 192.168.0.5,mask 255.255.255.0,hostname R2

Sniffer捕获的包如图2所示。这里捕获的包保存在sniffer-dhcp.cap文件中,如果计算机上还有其他的应用程序包,可能会夹杂其他的数据包,但图中显示的数据包应该都在。

3.2 分析包

当DHCP客户端登录进入网络时,通过以下步骤获取IP地址。

DHCP客户端(R2)先发送DHCP Discover信息。如图2所示,该数据包的源MAC地址是“ca08.0974.0000”,即路由器R2 Fa0/0端口的MAC,目的MAC地址是“FFFFFFFFFFFF”,广播MAC地址,因为客户端现在还并不知道DHCP服务器的MAC地址;源IP地址是“0.0.0.0”,因为路由器R2现在还没有IP地址,目的IP地址是“255.255.255.255”,因为客户端现在还并不知道DHCP服务器的IP地址;DHCP使用的是UDP协议,客户端的端口号是68,服务器端的端口号是67;数据包的用途是“DHCP Discover”。

R1(DHCP服务器)收到R2(DHCP客户端)广播的DHCP Discover报文后,它发现DHCP地址池中的IP地址“192.168.0.5”可以被租用。R1在提供地址前,先要发送一个ARP查询包,查询该地址是否已被使用,如果收到ARP应答包,则表明该地址已被使用,R1会从地址池中换一个地址再试;如果没有收到ARP应答,表明该地址未被使用。如图3所示,ARP查询包也是一个广播包,源MAC地址“cc07.0974.0000”,即R1的Fa0/0端口的MAC地址,目的MAC地址是广播地址,因为要向全网查询;源IP地址是192.168.0.1,目的IP地址是192.168.0.5.

R1向R2发送DHCP Offer报文,其中包括要租用的IP地址。如图4所示,该数据包源MAC地址为“cc07.0974.0000”,即R1的Fa0/0端口的MAC地址,目的MAC地址是广播MAC地址,因为DHCP服务器要通知网络上的其他DHCP服务器,该地址已被使用。源IP地址是R1的IP地址“192.168.0.1”,目的IP地址是广播地址,因为此时R2仍没有IP地址。DHCP使用的是UDP协议,源端口变成了67,目的端口是68;DHCP Offer中包含了要分配客户端的IP地址和客户端的MAC地址;该数据包的用途是DHCP Offer。

如果没有DHCP服务器对客户端的请求进行响应,则客户端就无法获得IP地址,初始化失败。但客户端会每隔一段时间发送几个DHCP Discover报文,直到收到DHCP Offer。如果是Windows的客户端,在多次尝试失败后,客户端将被分配1个169.254.0.0/16网段的IP地址,但客户端仍会继续尝试联系DHCP服务器,一旦获得DHCP Offer,客户端便会使用新获得的IP地址替换169.254.0.0/16网段的IP地址。

R2收到DHCP Offer报文后,发送DHCP Request租约选择报文到服务器,表示它将使用所提供的IP地址。如图5所示,该数据包的源MAC地址是R2的MAC地址,目的MAC地址是广播地址,因为客户端要通知网络上的其他DHCP服务器该地址已使用,以避免IP地址冲突。源IP地址是“0.0.0.0”,目的IP地址是“255.255.255.255”。DHCP使用的是UDP协议,源端口是68,目的端口是67;DHCP Request包含了DHCP服务器和客户端要使用的IP地址;该数据包的用途是DHCP Request。

R1收到DHCP租约选择信息后,发送DHCP Ack确认信息,以确定此租约的 成立。如图6所示,该数据包的源MAC地址是R1的MAC地址,目的MAC地址是广播地址,因为DHCP服务器要通知网络上的其他DHCP服务器该地址已被使用,以避免IP地址冲突。源IP地址是R1的IP地址,目的IP地址是广播地址,因为此时客户端仍没有IP地址;DHCP使用的是UDP协议,源端口是67,目的端口是68.除了DHCP服务器地址、要提供的IP地址和客户端的MAC地址外,DHCP Ack报文中还包含其他DHCP选项信息,比如子网掩码、默认网关、DNS服务器等。

客户端收到DHCP Ack信息后,利用其中的信息配置它的TCP/IP属性,并发送一个ARP Reply报文。该报文如图7所示,源MAC地址为R2的MAC地址,目的MAC为广播MAC地址,因为它要通知网络上的其他设备该IP地址已被使用,以免IP地址冲突;ARP Reply包的源IP地址和目的IP地址都是192.168.0.5.

综上所述,DHCP的工作过程如图8所示,即IP租约请求—IP租约提供—IP租约选择—IP租约确认。

〔编辑:白洁〕

Router(config)#host R2

R2(config)#int fa0/0

R2(config-if)#ip address dhcp

注意:先不要打开R2的Fa0/0端口。

运行Sniffer软件,开始抓包。打开R2的Fa0/0端口。当R2的屏幕出现以下所示的信息时,停止Sniffer的包捕获。

R2(config)#int fa0/0

R2(config-if)#ip address dhcp

R2(config-if)#

R2(config-if)#no sh

R2(config-if)#

*Mar 22 13:21:59.555: %LINK-3-UPDOWN: Interface FastEthernet0/0,changed state to up

*Mar 22 13:21:59.555: %ENTITY_ALARM-6-INFO: CLEAR INFO Fa0/0 Physical Port Administrative State Down

*Mar 22 13:22:00.555: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up

*Mar 22 13:22:09.267: %DHCP-6-ADDRESS_ASSIGN: Interface FastEthernet0/0 assigned DHCP address 192.168.0.5,mask 255.255.255.0,hostname R2

Sniffer捕获的包如图2所示。这里捕获的包保存在sniffer-dhcp.cap文件中,如果计算机上还有其他的应用程序包,可能会夹杂其他的数据包,但图中显示的数据包应该都在。

3.2 分析包

当DHCP客户端登录进入网络时,通过以下步骤获取IP地址。

DHCP客户端(R2)先发送DHCP Discover信息。如图2所示,该数据包的源MAC地址是“ca08.0974.0000”,即路由器R2 Fa0/0端口的MAC,目的MAC地址是“FFFFFFFFFFFF”,广播MAC地址,因为客户端现在还并不知道DHCP服务器的MAC地址;源IP地址是“0.0.0.0”,因为路由器R2现在还没有IP地址,目的IP地址是“255.255.255.255”,因为客户端现在还并不知道DHCP服务器的IP地址;DHCP使用的是UDP协议,客户端的端口号是68,服务器端的端口号是67;数据包的用途是“DHCP Discover”。

R1(DHCP服务器)收到R2(DHCP客户端)广播的DHCP Discover报文后,它发现DHCP地址池中的IP地址“192.168.0.5”可以被租用。R1在提供地址前,先要发送一个ARP查询包,查询该地址是否已被使用,如果收到ARP应答包,则表明该地址已被使用,R1会从地址池中换一个地址再试;如果没有收到ARP应答,表明该地址未被使用。如图3所示,ARP查询包也是一个广播包,源MAC地址“cc07.0974.0000”,即R1的Fa0/0端口的MAC地址,目的MAC地址是广播地址,因为要向全网查询;源IP地址是192.168.0.1,目的IP地址是192.168.0.5.

R1向R2发送DHCP Offer报文,其中包括要租用的IP地址。如图4所示,该数据包源MAC地址为“cc07.0974.0000”,即R1的Fa0/0端口的MAC地址,目的MAC地址是广播MAC地址,因为DHCP服务器要通知网络上的其他DHCP服务器,该地址已被使用。源IP地址是R1的IP地址“192.168.0.1”,目的IP地址是广播地址,因为此时R2仍没有IP地址。DHCP使用的是UDP协议,源端口变成了67,目的端口是68;DHCP Offer中包含了要分配客户端的IP地址和客户端的MAC地址;该数据包的用途是DHCP Offer。

如果没有DHCP服务器对客户端的请求进行响应,则客户端就无法获得IP地址,初始化失败。但客户端会每隔一段时间发送几个DHCP Discover报文,直到收到DHCP Offer。如果是Windows的客户端,在多次尝试失败后,客户端将被分配1个169.254.0.0/16网段的IP地址,但客户端仍会继续尝试联系DHCP服务器,一旦获得DHCP Offer,客户端便会使用新获得的IP地址替换169.254.0.0/16网段的IP地址。

R2收到DHCP Offer报文后,发送DHCP Request租约选择报文到服务器,表示它将使用所提供的IP地址。如图5所示,该数据包的源MAC地址是R2的MAC地址,目的MAC地址是广播地址,因为客户端要通知网络上的其他DHCP服务器该地址已使用,以避免IP地址冲突。源IP地址是“0.0.0.0”,目的IP地址是“255.255.255.255”。DHCP使用的是UDP协议,源端口是68,目的端口是67;DHCP Request包含了DHCP服务器和客户端要使用的IP地址;该数据包的用途是DHCP Request。

R1收到DHCP租约选择信息后,发送DHCP Ack确认信息,以确定此租约的 成立。如图6所示,该数据包的源MAC地址是R1的MAC地址,目的MAC地址是广播地址,因为DHCP服务器要通知网络上的其他DHCP服务器该地址已被使用,以避免IP地址冲突。源IP地址是R1的IP地址,目的IP地址是广播地址,因为此时客户端仍没有IP地址;DHCP使用的是UDP协议,源端口是67,目的端口是68.除了DHCP服务器地址、要提供的IP地址和客户端的MAC地址外,DHCP Ack报文中还包含其他DHCP选项信息,比如子网掩码、默认网关、DNS服务器等。

客户端收到DHCP Ack信息后,利用其中的信息配置它的TCP/IP属性,并发送一个ARP Reply报文。该报文如图7所示,源MAC地址为R2的MAC地址,目的MAC为广播MAC地址,因为它要通知网络上的其他设备该IP地址已被使用,以免IP地址冲突;ARP Reply包的源IP地址和目的IP地址都是192.168.0.5.

综上所述,DHCP的工作过程如图8所示,即IP租约请求—IP租约提供—IP租约选择—IP租约确认。

〔编辑:白洁〕

猜你喜欢
IP地址互联网
IP地址管理模式
“互联网+”环境之下的著作权保护
“互联网+”对传统图书出版的影响和推动作用
从“数据新闻”看当前互联网新闻信息传播生态
互联网背景下大学生创新创业训练项目的实施
以高品质对农节目助力打赢脱贫攻坚战
《IP地址及其管理》教学设计
计算机的网络身份IP地址
轻松明白网络IP地址以及子网划分问题