Linux网络之DHCP

DHCP(动态主机配置协议)是用于自动分配IP地址的网络协议,适用于大型局域网环境,采用客户端/服务器模型。DHCP工作流程包括发现、提供、选择和确认四个阶段,确保IP地址的唯一性和有效使用。它有自动分配、动态分配和手工分配三种地址分配方式。DHCP服务器管理IP租约,通过租约更新、续约和释放机制,有效地管理和使用IP资源。
摘要由CSDN通过智能技术生成

DHCP简介

DHCP基本概念

DHCP(动态主机配置协议)(Dynamic Host Configuration Protocol)是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。默认情况下,DHCP作为Windows Server的一个服务组件不会被系统自动安装,还需要管理员手动安装并进行必要的配置。

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。

DHCP协议采用客户端/服务器模型,主机地址的动态分配任务由网络主机驱动。
当DHCP服务器接收到来自网络主机申请地址的信息时,才会向网络主机发送相关的地址配置等信息,以实现网络主机地址信息的动态配置。

DHCP具有以下功能

  1. 保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。
  2. DHCP应当可以给用户分配永久固定的IP地址。
  3. DHCP应当可以同用其他方法获得IP地址的主机共存(如手工配置IP地址的主机)。
  4. DHCP服务器应当向现有的BOOTP客户端提供服务。

DHCP有三种机制分配IP地址:

  • 自动分配方式(AutomaticAllocation),DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。

  • 动态分配方式(Dynamic Allocation),DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。

  • 手工分配方式(Manual Allocation),客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。

三种地址分配方式中,只有动态分配可以重复使用客户端不再需要的地址。 DHCP消息的格式是基于BOOTP(Bootstrap Protocol)消息格式的,这就要求设备具有BOOTP中继代理的功能,并能够与BOOTP客户端和DHCP服务器实现交互。BOOTP中继代理的功能,使得没有必要在每个物理网络都部署一个DHCP服务器。RFC 951和RFC 1542对BOOTP协议进行了详细描述。

DHCP的优点

  • 减少管理员的工作量

  • 避免IP地址冲突

  • 当前网络更改IP地址段时,不需要再重新配置每个用户的IP地址

  • 提高IP地址的利用率

  • 方便客户端的配置

DHCP协议

DHCP报文共有一下几种:

DHCP DISCOVER 客户端开始DHCP过程发送的包,是DHCP协议的开始
DHCP OFFER 服务器接收到DHCP DISCOVER之后做出的响应,它包括了给予客户端的IP(yiaddr)、客户端的MAC地址、租约过期时间、服务器的识别符以及其他信息
DHCP REQUEST 客户端对于服务器发出的DHCP OFFER所做出的响应。在续约租期的时候同样会使用。
DHCP ACK 服务器在接收到客户端发来的DHCP REQUEST之后发出的成功确认的报文。在建立连接的时候,客户端在接收到这个报文之后才会确认分配给它的IP和其他信息可以被允许使用。
DHCP NAK DHCP ACK的相反的报文,表示服务器拒绝了客户端的请求。
DHCP RELEASE 一般出现在客户端关机、下线等状况。这个报文将会使DHCP服务器释放发出此报文的客户端的IP地址
DHCP INFORM 客户端发出的向服务器请求一些信息的报文
DHCP DECLINE 当客户端发现服务器分配的IP地址无法使用(如IP地址冲突时),将发出此报文,通知服务器禁止使用该IP地址。

DHCP 协议包的组成

Xid 随机生成的一段字符串,两个数据包拥有相同的xid说明他们属于同一次会话
Ciaddr 客户端会在发送请求时将自己的ip地址放在此处
Yiaddr 服务器会将想要分配给客户端的ip地址放在此处
Siaddr 一般来说是服务器的ip地址.但是注意!根据openwrt源码给出的注释,当报文的源地址、siaddr、option­>server_id字段不一致(有经过跨子网转发)时,通常认为option­>srever_id字段为真正的服务器ip,siaddr有可能是多次路由跳转中的某一个路由的ip (下图中wireshark抓包中也有标明siaddr为nextserver ip address)
Chaddr 客户端的mac地址
Giaddr 如果需要跨子网进行DHCP地址发放,则在此处填入经过的路由器的ip地址
Sname 服务器主域名
Options 可以自由添加的部分,用于存放客户端向服务器请求信息和服务器的应答信息

在这里插入图片描述

DHCP工作原理

DHCP 客户端

  • DHCP客户端一般来说是局域网中独立的PC主机。
  • DHCP客户端发出的DHCP DISCOVER包是DHCP协议的开始。
  • 延续租期、发现、释放IP地址等大多数DHCP中的行为都是由DHCP客户端主动发起。

DHCP 自动状态机

  • DHCP获得ip地址的4步骤:discover­>offer­>request­>ack(nak)
  • DHCP刷新租期的步骤:request­>ack(nak)
  • DHCP释放ip的步骤:release

wnr2000v5 1.0.0.8的代码中没有发现rebooting、init­reboot状态。所以DHCP client的状态一般从init开始,完整的状态机如下图(红色代表客户端的状态跳转):
在这里插入图片描述

服务端
  DHCP SERVER指的是服务器端,在路由器上体现的就是给LAN端动态分配IP的功能。DHCP SERVER负责接收客户端的DHCP请求,管理LAN端所有的IP网络设定资料,相比于BOOTP,DHCP通过“租约”来实现动态分配IP的功能,实现IP的时分复用,从而解决IP资源短缺的问题。其地址分配方式有三种,分别是人工配置(由管理员对每台具体的计算机指定一个地址),自动配置(服务器为第一次连接网络的计算机分配一个永久地址),动态配置(在一定的期限内将地址租给计算机,租期结束后客户必须续租或者停用该地址),而对于路由器,经常使用的地址分配方式是动态配置。

两个租约表

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值