dhcp报文_DHCP的工作原理

0285a4e84d57841deecbcb6aba64e1ed.png

DHCP(Dynamic Host Configuration Protoco,动态主机配置协议)通常被应用在大型的局域网络环境中

作用:动态的给局域网主机分配ip地址,网关、DNS等,可以将手动地址配置量,自动分配解决地址冲突问题。

什么意思?我们说电脑上网需要三个要素,分别是IP、网关、DNS三个要素。而刚刚插上的电脑没有IP网关和DNS,这时候我们可以通过DHCP这个协议让它去获取到三个要素,这样就可以实现上网。那么DHCP是怎样去获取到这些地址呢?我们先看一下DHCP的报文类型,报文就像网络协议的语言一样,有了语言才能交流工作。

DCHP一共有六种报文类型,我们平常只用到了四种。

DHCP Discover:客户端用来寻找

DHCP服务器:广播

DHCP Offer:DHCP服务器用来响应,此报文携带了IP地址等配置信息(单播)

DCHP Request:客户端请求地址续租,重启之后也会发,用于确认分配的信息(广播)(续租单播)

DHCP Ack:服务器对request报文的确认响应(单播)

DHCP NAK:服务器对request报文的拒绝响应

DCHP Release:客户端要释放地址时用来通知服务器

那么电脑是如何使用这些报文去获取IP地址的呢 ?

DHCP的工作过程:

DHCP的工作过程大概可分为四步:

1.客户端发广播寻找DHCP服务器

2.DHCP服务器单播回复客户端Offer

3.客户端广播请求这个ip,发广播一方面是为了请求这个地址,另一个方面也是告诉其他的dhcp服务器自己有地址用了

4.服务器发送ACK包

经过以上四个步骤之后客户端就获得了IP地址等信息,客户端在获得IP地址之后发送GARP检测IP地址有没有冲突

举个例子来说:

09584e2b120c6b39f8d4944edc0fb25c.png

​以上图为例子:

1.主机a是刚刚接入网络中的一台主机,在主机a接入之后,就会广播发送Discover包,寻找网络中的DHCP服务器

2.当dhcp服务器收到a的discover包之后,会单播回复给a一个offer包,里面包含着一个ip地址和一些配置信息比如,网关,租期,dns等

3.当主机a收到这个offer包之后确认要使用,就广播发送request请求这个IP地址,发广播的原因可能网络中还有其他的DHCP服务器,告诉他们自己有了IP地址

4.当dhcp服务器收到a的request之后单播发送一个ACK,a收到ack之后就开始使用这个IP地址

以上就是DHCP的工作过程,我们看到从主机寻找到获取地址一共只用到了四种数据包,那么其他两种数据包是在那种情况下被用到的呢?这就扯到了DHCP协议的一个小细节,叫做租期。

DHCP的租期

DHCP服务器给客户端分配到的地址,就会有一个默认的租期为一天,也就是说过了这个租期之后DHCP服务器就会把这个地址收回,客户端就无法使用这个ip进行上网了。租期范围内客户端通过三个定时器来实现续租和释放IP地址

1.租期更新

460f2b8c812ab65b54dbe03cd82feb63.png

​以上图为例,主机a从DHCP服务器获取得到了一个IP地址,ip租约期限到达50%时,主机a会单播发送dhcp request包,来申请延长ip地址的租期,服务器向主机a发送确认报文,给主机a一个新的租期

2.租期重绑定

c775a8b5911dd0d048f9ac8e82ea938d.png

​以上图为例,在主机a在租期达到87.5%时,还没收到服务器的响应报文,会认为dhcp服务器不可用,广播重新发送request申请重绑定。网络上任何一台DHCP服务器都可以应答ack或者nak。

如果收到ack回复主机复位自己的租期为一天,重新更新计时器。如果收到了NAK,客户端会立即停用现有IP,重新申请ip地址。

3.租期失效

bab50873c0fac56bfc7f69603a7b4233.png

以上图为例,在ip租期到达之后,如果没有收到服务器回应,就会发送release报文,释放这个IP地址

客户端不再使用分配地址也会发release,来释放改地址释放之后客户端重新发送discover

此时我们思考一个问题,客户端在请求地址的时候发送一个广播包,我们都知道广播包是无法跨越三层设备的,如果这时候dhcp服务器与客户主机不在同一个网段应该怎么做?

4230a34331efaa9b40c692fdad778714.png

​以上图为例,可以看到电脑和服务器不在同一个网段,还想从dhcp服务器获得地址,这时候就用到了dhcp中继

dhcp中继的作用是可以让路由器转发dhcp的数据报文,这样就可以实现客户端和服务器在不同网段也能获得地址

6963cf3b080da758320d5e0fdb166a7a.gif
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值