dhcp 报文详解

职业培训 培训职业 2024-12-30
各位同学,让我们再次聚焦于DHCP协议,这次我们将深入分析协议报文在地址分配过程中的封装。在开始前,我们回顾一下昨日的讲解。首先,了解DHCP报文的结构,如图所示:OP (1) 操作码(1=bootrequest, 2=bootreply)Htype (1) 硬件地址类型(1=10mb ethernet)Hlen (1) 硬件地

各位同学,让我们再次聚焦于DHCP协议,这次我们将深入分析协议报文在地址分配过程中的封装。在开始前,我们回顾一下昨日的讲解。

首先,了解DHCP报文的结构,如图所示:

OP (1) 操作码(1=bootrequest, 2=bootreply)

Htype (1) 硬件地址类型(1=10mb ethernet)

Hlen (1) 硬件地址长度(以太网为10)

Hops (1) 表示当前DHCP报文经过的DHCP Relay的数目。此字段由客户端设置为0,每经过一个DHCP Relay时,该字段加1。用于限制DHCP报文所经过的DHCP中继数目。服务器与客户端之间的DHCP中继不能超过4次,Hops值不能大于4,否则DHCP报文将被丢弃。

Xid (4) 传输ID,在同服务器交互中由客户端选择

Secs (2) 客户端所使用的地址,在最近一次地址获取/地址更新后所经过的时间

Flags (2) 此字段在BOOTP中保留未用,在DHCP中表示标志字段。标志字段的最高位有意义,其余位置0。最左边的字段解释为广播响应标志位,内容如下:

0:客户端请求服务器以单播形式发送响应报文

1:客户端请求服务器以广播形式发送响应报文

Client IP address (4) 客户机在BOUND,RENEW或REBINDING状态所使用,可以回应ARP请求报文

Your IP address (4) 服务器给客户机分配的IP地址

Server IP address (4) 该字段表示服务器IP地址

Gateway IP address (4) 该字段表示第一个DHCP中继的IP地址。当客户端发出DHCP请求时,如果服务器与客户端不在同一网络中,第一个DHCP中继在转发DHCP请求报文时会将自己的IP地址填入此字段。服务器会根据此字段判断出网段地址,选择地址池为用户分配地址。服务器还会根据此地址将响应报文发送给此DHCP中继,再由DHCP中继将报文转发给客户端。若在到达DHCP服务器前经过了不止一个DHCP中继,第一个DHCP中继后的中继不会改变此字段,只是将Hops数目加1。

Client hardware address (16) 该字段表示客户端的MAC地址。此字段与前面的“Hardware Type”和“Hardware Length”保持一致。对于以太网,当“Hardware Type”和“Hardware Length”分别为“1”和“6”时,此字段必须填入6字节的以太网MAC地址。

Server name (64) 该字段表示客户端获取配置信息的服务器名字。此字段由DHCP Server填写,可选。如果填写,必须是一个以0结尾的字符串,缺省为空。

File (128) 启动文件的名字,在DHCPOFFER报文中给出全名。

Options (可变) 该字段表示DHCP的选项字段,至少为312字节。DHCP通过此字段包含了服务器分配给终端的配置信息,如网关IP地址、DNS服务器的IP地址、客户端可以使用IP地址的有效租期等信息。

接下来,通过构建一个小的网络拓扑,我们将详细分析DHCP报文交互过程。下图展示了试验的拓扑结构,供参考。

配置简单,这里就不详细阐述了。为捕获完整交互过程,设备启动后,在DHCP-SERVER接口GE0/0/0上开启Wireshark。然后对DHCP-SERVER进行配置。

配置完成后,将主机地址获取方式设置为DHCP,在CMD窗口输入ipconfig。此时,Wireshark上可以看到DHCP报文的交互过程。

起初,主机没有地址,也不知网络中的DHCP服务器是谁,因此发送了DHCP DISCOVER报文。此报文源地址为0.0.0.0(没有地址),目标地址为广播地址(共享网络内所有设备),用于寻找网络中的DHCP服务器。

当网络中的DHCP服务器收到DISCOVER时,会响应OFFER报文(你被录取了)。下图展示了OFFER报文的格式,DHCP服务器向主机分配一个地址,并在your ip address字段中填充。

在option字段中包含了掩码信息、网关地址和服务器地址信息。

主机收到OFFER后,确认该地址适合,发送了REQUEST报文请求地址。下图展示了REQUEST报文的格式,主机的需求描述在option字段中。

服务器收到REQUEST后,将地址分配给主机,并在ACK报文的your ip address字段中填充。主机收到ACK后,获取了该地址,并通过option字段获取到其他信息,如掩码、网关、租期等。

通过这四种报文的交互,主机成功获取地址。下图展示了报文交互流程。

至此,本讲解结束,欢迎大家提问和拍砖。顺便提一个问题,我们在抓包时,抓到了一个叫做gratuitous arp的报文,它的作用是什么?希望各位思考后给出答案。

标签

版权声明:本文由哟品培原创或收集发布,如需转载请注明出处。

本文链接:http://www.yopinpei.com/20241230/2/995080

猜你喜欢
其他标签