DHCP-packet

DHCP

Dynamic Host Configuration Protocol,动态主机配置协议,采用C/S模式,主要应用在为客户机自动分配IP地址、子网掩码、缺省网关、DNS服务器的IP地址等。

基于UDP协议,采用的知名端口号如下:

DHCP server:67

DHCP client:68

DHCPv6 Client:546


协议报文

DHCP一共有8种报文,按照客户端和服务器可分为:

server(reply):dhcp offer、dhcp ACK、dhcp NAK

client(request):dhcp discover、dhcp request、dhcp release、dhcp decline、dhcp inform


DHCP Discover

广播报文,dhcp client并不知道server的IP,因此客户端会在本地网络内广播发送discover报文,以期望发现网络中的dhcp服务器。所有收到discover报文的dhcp服务器都会回复应答报文,如此dhcp客户端可以知道网络中dhcp服务器的位置。

DHCP Offer

广播/单播,dhcp server收到discover报文后,就会在配置的地址池pool中查找一个合适的IP地址,加上相应的租期和其他配置信息(路由、DNS等),构造一个offer报文,发送给dhcp client,通知客户端可以为它提供IP地址。但是这个报文只是告诉dhcp客户端可以提供这个IP地址,并不是直接可以用,还需要客户端进行地址冲突检测,通常是发送ARP报文来确定此IP是否已经被占用。DHCP offer报文以广播或者单播回复,依赖于discover报文中的Flags。

DHCP Request

广播/单播,dhcp server可能会收到很多offer请求报文,所以必须在这些应答中选择一个,通常的策略是选择收到的第一个报文作为自己的目标服务器,并向这个服务器发送广播的request报文,通告自己选择的服务器,希望获得分配的IP地址。广播也是为了通知其他服务器,如果没有被选中,则需要删除相关信息。

dhcp client在成功获取IP地址后,在地址使用租期到达50%时,会向服务器发送单播request请求报文,请求续延租约,如果没有收到ACK,在租期到达87.5%时,会再次发送单播的request请求报文,请求续延租约。

DHCP ACK

广播/单播,dhcp server收到request请求报文后,根据request报文中携带的用户MAC来查找有没有相应的租约记录,如果有,则发送ACK应答报文,通知用户可以使用分配的IP地址。

DHCP NAK

广播/单播,如果dhcp server收到request请求报文后,没有发现相应的租约记录或者 由于某些原因无法正常分配IP地址,则向DHCP客户端发送NAK应答报文。

DHCP Release

单播,当dhcp client不再需要使用分配IP地址时,就会主动向DHCP server发送Release请求报文,通知服务器不再需要分配IP地址,请求服务器释放对应IP地址。

DHCP Decline

单播,dhcp client收到server的ACK报文后,通过地址冲突检测,发现服务器分配的IP地址冲突或者由于其他原因不可使用,则会向DHCP服务器发送DHCP Decline请求报文,通知服务器IP不可用。

DHCP Inform

单播,DHCP客户端如果需要从DHCP服务器端获取更为详细的配置信息,则向DHCP服务器发送Inform请求报文;DHCP服务器在收到该报文后,将根据租约进行查找到相应的配置信息后,向DHCP客户端发送ACK应答报文。目前基本上不用了。


DHCP Client重新登录

DHCP客户机每次重新登录网络时,就不需要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ACK确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时(比如此IP地址已分配给其它DHCP客户机使用),则DHCP服务器给 DHCP客户机回答一个DHCP NAK否认信息。当原来的DHCP客户机收到此DHCP NAK否认信息后,它就必须重新发送DHCP discover发现信息来请求新的IP地址。
 


 DHCP报文格式

 

 解析:

1、OP

报文操作类型,1:请求报文,2:应答报文

2、Htype

客户端MAC地址类型,指明网络类型,1:Ethernet MAC

3、Hlen

客户端MAC地址长度,以太网MAC地址长度6

4、Hops

DHCP报文经过的DHCP中继数目,默认为0.dhcp请求报文每经过一个中继增加1,如果需要经过路由,同样+1

5、Xid

客户端通过dhcp discover报文发起一次请求报文时选择的随机数,相当于请求标识,一次IP请求过程,所有的xid都是一样的。

6、secs

客户端从获取IP地址或者续约过程开始到现在所消耗的时间,以秒为单位。在没有获取到IP之前,这个值一直为0。

7、flags

标志位,只使用第15比特(最左边),是广播应答标识位,0表示单播,1表示广播。

8、ciaddr

dhcp客户端ip地址,仅在服务器发送的ACK报文中显示,其他报文均显示0。因为,在ACK之前,IP地址还没有真正分配给客户端。

9、yiaddr

dhcp服务器分配给客户端的IP地址。仅在dhcp服务器发送的offer和ACK报文中显示,其他报文显示0.

10、siaddr

下一个为dhcp客户端分配IP地址等信息的dhcp服务器IP地址。仅在dhcp offer、ACK中显示,其他报文均显示0.

11.、giaddr

dhcp客户端发出请求报文后经过的第一个dhcp中继的IP地址。如果没有经过中继,则显示0。

12、chaddr

dhcp客户端MAC地址。在每个报文中都会显示对应dhcp客户端的MAC地址。

13、sname

为dhcp客户端分配IP地址的dhcp服务器名称(DNS域名格式),在offer和ACK报文中显示发送报文的dhcp服务器名称,其他报文显示0.

14、File

dhcp服务器为客户端指定的启动配置文件名称和路径信息。仅在dhcp offer报文中显示,其他报文中显示为空。

15、options

可选项字段,长度可变,格式为“代码+长度+数据”

option82是华为自定义的。


THANKS!

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值