网络基础篇- 1 DHCP协议

最近在做一个需求要使用到DHCP relay,看着简单,但感觉实现的不好。所以去熟悉了下这两个概念。这里记录下。

(1) DHCP协议 交互过程

(2)DHCP RELAY 交互过程

-----------------------------------------------------------------------------------------------------------------------------

目录

一 DHCP协议

(1)DHCP Discover 

(2)DHCP Offer

(3)DHCP Request

(4)DHCP ACK

(5)DHCP Release

(6)DHCP续租

(7)多SERVER的IP分配

二、抓包说

三 具体使用

一 DHCP协议

名字:Dynamic Host Configuration Protocol -> DHCP

前身:Bootp  老版本的Wireshark是需要使用bootp来进行过滤

传输层:UDP    端口号:’DHCP server’67 ‘DHCP client’68

DHCP协议采用UDP作为传输协议,主机发送请求消息到DHCP服务器的67号端口,DHCP服务器回应应答消息给主机的68号端口,交互图如下:

                

(1)DHCP Discover 

DHCP Client以广播的方式发出DHCP Discover报文。

所有的DHCP Server都能够接收到DHCP Client发送的DHCP Discover报文,所有的DHCP Server都会给出响应,向DHCP Client发送一个DHCP Offer报文。

(2)DHCP Offer

DHCP Offer报文中“Your(Client) IP Address”字段就是DHCP Server能够提供给DHCP Client使用的IP地址,且DHCP Server会将自己的IP地址放在“option”字段中以便DHCP Client区分不同的DHCP Server。DHCP Server在发出此报文后会存在一个已分配IP地址的纪录。

DHCP Client只能处理其中的一个DHCP Offer报文,一般的原则是DHCP Client处理最先收到的DHCP Offer报文。

(3)DHCP Request

DHCP Client会发出一个广播的DHCP Request报文,在选项字段中会加入选中的DHCP Server的IP地址和需要的IP地址。

DHCP Server收到DHCP Request报文后,判断选项字段中的IP地址是否与自己的地址相同。如果不相同,DHCP Server不做任何处理只清除相应IP地址分配记录;如果相同,DHCP Server就会向DHCP Client响应一个DHCP ACK报文,并在选项字段中增加IP地址的使用租期信息。

(4)DHCP ACK

DHCP Client接收到DHCP ACK报文后,检查DHCP Server分配的IP地址是否能够使用。如果可以使用,则DHCP Client成功获得IP地址并根据IP地址使用租期自动启动续延过程;如果DHCP Client发现分配的IP地址已经被使用,则DHCP Client向DHCPServer发出DHCP Decline报文,通知DHCP Server禁用这个IP地址,然后DHCP Client开始新的地址申请过程。

(5)DHCP Release

DHCP Client在成功获取IP地址后,随时可以通过发送DHCP Release报文释放自己的IP地址,DHCP Server收到DHCP Release报文后,会回收相应的IP地址并重新分配。

(6)DHCP续租

参考:

路由交换基础——DHCP工作原理及DHCP Relay_网络¥安全联盟站的博客-CSDN博客_dhcp relay 原理

在使用租期超过50%时刻处,DHCP Client会以单播形式向DHCP Server发送DHCPRequest报文来续租IP地址。如果DHCP Client成功收到DHCP Server发送的DHCP ACK报文,则按相应时间延长IP地址租期;如果没有收到DHCP Server发送的DHCP ACK报文,则DHCP Client继续使用这个IP地址。

在这里插入图片描述

 

在使用租期超过87.5%时刻处,DHCP Client会以广播形式向DHCP Server发送DHCPRequest报文来续租IP地址。如果DHCP Client成功收到DHCP Server发送的DHCP ACK报文,则按相应时间延长IP地址租期;如果没有收到DHCP Server发送的DHCP ACK报文,则DHCP Client继续使用这个IP地址,直到IP地址使用租期到期时,DHCP Client才会向DHCP Server发送DHCP Release报文来释放这个IP地址,并开始新的IP地址申请过程。

在这里插入图片描述

 对应的时间如下

 

(7)多SERVER的IP分配

需要说明的是:DHCP客户端可以接收到多个DHCP服务器的DHCPOFFER数据包,然后可能接受任何一个DHCPOFFER数据包,但客户端通常只接受收到的第一个DHCPOFFER数据包。另外,DHCP服务器DHCPOFFER中指定[1] 的地址不一定为最终分配的地址,通常情况下,DHCP服务器会保留该地址直到客户端发出正式请求。

正式请求DHCP服务器分配地址DHCPREQUEST采用广播包,是为了让其它所有发送DHCPOFFER数据包的DHCP服务器也能够接收到该数据包,然后释放已经OFFER(预分配)给客户端的IP地址。

如果发送给DHCP客户端的地址已经被其他DHCP客户端使用,客户端会向服务器发送DHCPDECLINE信息包拒绝接受已经分配的地址信息。

在协商过程中,如果DHCP客户端发送的REQUEST消息中的地址信息不正确,如客户端已经迁移到新的子网或者租约已经过期,DHCP服务器会发送DHCPNAK消息给DHCP客户 端,让客户端重新发起地址请求过程。

二、抓包说明

 关于dhcp的协议字段说明:

OP:若是client送给server的封包,设置为1,反方向为2

Htype:硬件类别,ethernet 为1

Hlen:硬件长度,ethernet为6

Hops:若数据包需经过router发送,每站加1,若在同一网内,为0

Transaction ID:事务ID 是个随机数,用于客户和服务器之间匹配请求和相应信息

Seconds:由用户指定的时间,指开始地址获取和更新进行后的时间

Flags:从0—15bits,最左一bit为1时表示server将以广播方式传递封包给client,其余尚未使用

Ciaddr:用户IP地址

Siaddr:用于bootsrtap过程中的IP地址(服务器的IP地址)

Chaddr:client的硬件地址

Sname:可选server的名称,以0x00结尾

File:启动文件名

Options:厂商标识,可选的参数字段

因为下面是老的版本,抓出来现实的bootp协议段,其实也就是dhcp了

 (1)DHCP discover阶段:

(2)DHCP offer阶段

(3)DHCP request阶段

(4)DHCP ack阶段

那简单的总结如下:

阶段

源MAC

目标MAC

源IP

目标IP

Discover

PC机的MAC

全FF

0.0.0.0

255.255.255.255

Offer

Dhcp服务器或者中继器路由的MAC

Dhcp客户机的MAC

Dhcp服务器或者中继路由器的IP地址

准备分配的IP地址

Request

PC机的MAC

全FF

0.0.0.0

255.255.255.255

Ack

Dhcp服务器或者中继器路由的MAC

Dhcp客户机的MAC

Dhcp服务器或者中继路由器的IP地址

准备分配的IP地址

其中 DHCPTransaction  ID是由客户机产生一个随机数获得,不同MAC地址产生的Transaction ID不同,Transaction  ID是区分不同DHCP请求的标识

接下来的一篇汇总下中继的资料。

三 具体使用

在busybox中会有udhcpc,udhcpd,会觉得奇怪,他们代表的意思是:

udhcpc是dhcp拨号的客户端

udhcpd是dhcp拨号的服务器端

只用在busybox中打开对应的配置option,就可以在编译出来的文件系统中对应的bin文件了。

设备一般作为客户端,去找server拿ip。在设备里面一般会有一个default.script,里面记录了如何获取ip,并把ip写到对应接口上去。还有renew的选项,进行重新获取ip或续租。想了解这一块,可以去读读这个脚本。

比如像下面的操作:

 udhcpc -f -i wlan-s /usr/share/udhcpc/default.script -S

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值