DHCP Basics

Useful Information

MSC

Message Sequence Chart消息序列图

network entity, message, action

image-20230404100249078

STD

State Transition Diagram状态迁移图

定义协议中的状态转换关系

image-20230404100106178

image-20230404100432920

TLV

Type-Length-Value

定义消息中具有可变长度的字段的典型编码样式

包含三个字段type field, a length field, and followed by a value of the specified length

image-20230404100851139

Introduction to DHCP

IP Address Allocation

IP address management

  • Plan / recording / assignment / retrieval(回收) /renumbering(重编码)

    ​ Static allocation 手动配置

    ​ Dynamic allocation 动态配置

    BOOTP (BOOTstrap Protocol) DHCP前身

    DHCP (Dynamic Host Configuration Protocol)

Bootstrap Protocol

diskless workstation(无盘工作站)存不了IP,启动时候要获取IP下载启动文件

obtain boot information such as boot file name (TFTP is used to transfer boot file)

DHCP

Dynamic Host Configuration Protocol

An extension to BOOTP

Provides automatic configuration of remote hosts

Using UDP as its transport protocol

Using port 67 (for server) and 68 (for client)

DHCP client

A DHCP client is an Internet host using DHCP to obtain configuration parameters

such as a network address

DHCP server

A DHCP server is an Internet host that returns configuration parameters to DHCP clients

DHCP Lease(租约)

A DHCP lease is the amount of time that the DHCP server grants to the DHCP client permission to use a particular IP address

DHCP服务器上使用DHCP服务的时间(ip地址租约,由server定义)

A typical server allows its administrator to set the lease time

DHCP Features
  • Simple administration

    不需要在每台客户端机器上手动输入IP地址、子网掩码和默认网关

  • Moving machines

    当将机器移动到不同的子网时,只需移动机器,它就会从该子网上的DHCP服务器获得一个新的IP和子网掩码。

  • Eliminating erroneous IP information

    将人为因素排除在外可以减少IP地址重复等问题

  • Eliminating additional configuration information

    DNS服务器、默认网关和WINS服务器是DHCP可能广泛使用的一些配置选项设置。

  • Efficient use of IP addresses

    DHCP可以帮助充分利用有限的IP地址(回收再利用)。所有可用的IP地址被放入一个池中,供活动客户端使用。处于非活动状态的机器不使用IP地址。

DHCP vs. BOOTP
  • Similarities

The format structure each uses to exchange messages 数据格式相同

The format structure each uses to exchange messages 端口一样

IP address distribution as an integral part of configuration service

  • Differences

产生时间不同

目的不同

BOOTP:Configure diskless workstations

DHCP:Configure frequently relocated networked computers with local hard drives and full boot capabilities

BOOTP没有租期,没法续约

Phases of IP Assignment with DHCP

image-20230404105709427

image-20230404103231293

1 3 只能广播

1要广播:不知道服务器在哪

有很多DHCP服务器提供IP地址(单播:MAC,广播都行)

Client选一个IP然后广播:告诉所有服务器是否选你了

DHCP Protocol 细节

  • DHCP Specifications

RFC 2131, Dynamic Host Configuration Protocol

DHCP服务的8种报文的格式是相同的,不同类型的报文只是报文中的某些字段取值不同。DHCP报文格式基于BOOTP的报文格式。

image-20230404104623167

  • OP :报文的操作类型。分为请求报文和响应报文 request(1) reply(2)

    • 请求报文: DHCP Discover、DHCP Request、DHCP Release、DHCP Inform和DHCP Decline。

    • 应答报文: DHCP Offer、DHCP ACK和DHCP NAK。

  • Htype: DHCP客户端的MAC地址类型。 MAC地址类型其实是指明网络类型 ,Htype值为1时表示为最常见的以太网MAC地址类型。

  • Hlen: DHCP客户端的MAC地址长度。以太网MAC地址长度为6个字节,即以太网时Hlen值为6。

  • Hops:DHCP报文经过的DHCP中继的数目,默认为0。DHCP请求报文每经过一个DHCP中继,该字段就会增加1。没有经过DHCP中继时值为0。( 若数据包需经过router传送,每站加1,若在同一网内,为0。 )

  • TRANSACTION ID :客户端通过DHCP Discover报文发起一次IP地址请求时选择的随机数,相当于请求标识。用来标识一次IP地址请求过程。在一次请求中所有报文的TRANSACTION ID都是一样的。

  • SECONDS DHCP客户端从获取到IP地址或者续约过程开始到现在所消耗的时间,以秒为单位。在没有获得IP地址前该字段始终为0。

  • FLAGS:标志位,只使用第0比特位,是广播应答标识位,用来标识DHCP服务器应答报文是采用单播还是广播发送,0表示采用单播发送方式,1表示采用广播发送方式。其余位 尚未使用 。(即 从0-15bits,最左1bit为1时表示server将以广播方式传送封包给client。

    • B是client设置以选择单播还是广播

      image-20230404105113888

  • CLIENT IP ADDRESS (Ciaddr)

    DHCP客户端的IP地址仅在DHCP服务器发送的ACK报文中显示,在其他报文中均显示0,因为在得到DHCP服务器确认前,DHCP客户端是还没有分配到IP地址的。只有客户端是Bound、Renew、Rebinding状态,并且能响应ARP请求时,才能被填充。

  • YOUR IP ADDRESS(Yiaddr)

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

  • SERVER IP ADDRESS

    下一个为DHCP客户端分配IP地址等信息的DHCP服务器IP地址仅在DHCP Offer、DHCP ACK报文中显示,其他报文中显示为0。( 用于bootstrap过程中的IP地址)

  • ROUTER IP ADDRESS

    relay agent的路由器地址

  • OPTIONS: TLV encoding style 可选项字段,长度可变,TLV encoding,格式为”类型+长度+值”。

    列出部分可选的选项

    其中一种:Message type option

image-20230404105843671

标识这是什么包

DHCP Messages

DHCPDISCOVER - Client broadcast to locate available servers.

DHCPOFFER - Server to client in response to DHCPDISCOVER with offer of configuration parameters.

DHCPREQUEST - Client message to servers either

(a) requesting offered parameters from one server and implicitly declining offers from all others. 从一个服务器请求提供的参数,并隐式地拒绝所有其他服务器提供的参数(在地址获取过程中使用)

(b) confirming correctness of previously allocated address after, e.g., system reboot

电脑重启,确认之前服务器能否使用

(c) extending the lease on a particular network address. 续约时使用

DHCPACK - Server to client with configuration parameters, including committed network address.

DHCPNAK - Server to client indicating client’s notion of network address is incorrect (e.g., client has moved to new subnet) or client’s lease as expired.

DHCPDECLINE - Client to server indicating network address is already in use.

DHCP 客户端收到 DHCP 服务器 ACK 应答报文后,通过地址 冲突检测发现服务器分配的地址冲突或者由于其他原因导致 不能使用,则会向 DHCP 服务器发送 Decline 请求报文

DHCPRELEASE - Client to server relinquishing network address and cancelling remaining lease. 提前解约

DHCPINFORM - Client to server, asking only for local configuration parameters; client already has externally configured network address. For example, it can be used to obtain tunnel endpoint address. DHCP 客户端如果需要从 DHCP 服务器端获取更为详细的配置信息

客户端到服务器,只要求本地配置参数;客户端已经有外部配置的网络地址。例如,可用于获取隧道端点地址。(要特殊类型的数据)

种类 说明
DHCP Discover DHCP 客户端在请求 IP 地址时并不知道 DHCP 服务器的位置,因此 DHCP 客户端会在本地网络内以 广播方式发送 Discover 请求报文,以发现网络中的 DHCP 服务器。所有收到 Discover 报文的 DHCP 服务 器都会发送应答报文, DHCP 客户端据此可以知道网络 中存在的 DHCP 服务器的位置。
DHCP Offer DHCP 服务器收到 Discover 报文后,就会在所配置的 地址池中查找一个合适的 IP 地址加上相应的租约期限其他配置信息(如网关、 DNS 服务器等),构造一 个 Offer 报文,发送给 DHCP 客户端,告知用户本服务 器可以为其提供 IP 地址。但这个报文只是告诉 DHCP 客户端可以提供 IP 地址,最终还需要客户端通过 ARP 来 检测该 IP 地址是否重复。
DHCP Request DHCP 客户端可能会收到很多 Offer 请求报文,所以必须在这些应答中选择一个。通常是选择第一个 Offer 应答报文的服务器作为自己的目标服务器,并向该服务器发送一个广播的 Request 请求报文,通告选择的服务器, 希望获得所分配的 IP 地址。另外, DHCP 客户端在成功获取 IP 地址后,在地址使用租期达到50%时,会向 DHCP服务器发送==单播== Request 请求报文请求续延租约如果没有收到 ACK 报文,在租期达到87.5% 时,会再次发送==广播==的 Request 请求报文以请求续延租约。
DHCP ACK DHCP 服务器收到 Request 请求报文后,根据 Request 报文中携带的用户 MAC 来查找有没有相应的租约记录,如果有 则发送 ACK 应答报文,通知用户可以使用分配的 IP 地址。
DHCP NAK 如果 DHCP 服务器收到 Request 请求报文后,没有发现有相 应的租约记录或者由于某些原因无法正常分配 IP 地址,则向 DHCP 客户端发送 NAK 应答报文,通知用户无法分配合适的 IP 地址。
DHCP Release 当 DHCP 客户端不再需要使用分配 IP 地址时,就会主动向 DHCP 服务器发送 RELEASE 请求报文,告知服务器用户不再需要分配 IP 地址,请求 DHCP 服务器释放对应的 IP 地址。
DHCP Decline DHCP 客户端收到 DHCP 服务器 ACK 应答报文后,通过地址 冲突检测发现服务器分配的地址冲突或者由于其他原因导致 不能使用,则会向 DHCP 服务器发送 Decline 请求报文,通知服务器所分配的 IP 地址不可用,以期获得新的 IP 地址。
DHCP Inform DHCP 客户端如果需要从 DHCP 服务器端获取更为详细的配置信息,则向 DHCP 服务器发送 Inform 请求报文; DHCP 服 务器在收到该报文后,将根据租约进行查找到相应的配置信 息后,向 DHCP 客户端发送 ACK 应答报文。目前基本上不用了。

Major Operations in DHCP

  • Address acquisition

    Getting an IP address

  • Early lease termination

    Returning IP address before lease expires

  • Lease renewal

    Updating a lease

Address Acquisition: phases

地址获取

  • IP lease request

在启动过程中,客户端发送DHCPDISCOVER广播报文,请求DHCP服务器的位置和IP地址信息

The DHCPDISCOVER packet is encapsulated in a UDP/IP packet and is sent to the local subnet broadcast address of 255.255.255.255

  • IP lease offer

​ After requesting a lease, the DHCP client waits for a response and is said to be in a SELECT state

​ Any available DHCP servers with IP addresses to offer respond to the client request with a DHCPOFFER message

  • IP lease selection

​ The client chooses one DHCPOFFER from all the offers it receives, regardless of which subnet the DHCP server is located in

​ The client then sends a broadcast DHCPREQUEST message, requesting a lease

  • IP lease acknowledgment

​ The DHCP server that made the offer responds to the client with a DHCPACKmessage while any other DHCP servers that made an offer withdraw

​ The IP address is assigned to the client

必须会画

image-20230404110922732

image-20230404111205078

DHCPOFFER会收到很多,所以设一个timer,过一定时间收齐了就下一个状态

BOUND稳定有地址状态

Early Lease Termination 提前解约

image-20230404111424431

不返回,直接释放了

image-20230404111518090

Lease Renewal 续约

续约后IP地址不变

image-20230404111703694

T1:0.5 * duration_of_lease租约的一半

T2: 0.875 * duration_of_lease

T1时先找原来的DHCP服务器续约(DHCPACK成功续约重置T1 T2,如果NAK立马释放地址 虽然租期才到T1 租期只能用一半)

如果无响应等到T2找其他服务器

image-20230404111802962

image-20230404112440897

找原始server的DHCPREQUEST是单播

拒绝后全网广播DHCPREQUEST(如果ACK重置T1 T2,如果NAK直接释放IP 虽然租期才到T2)

如果还是无响应:没服务器响应,租约继续到T2结束

image-20230404112452488

Multicast address allocation

组播地址分配

DHCP client alternate configuration

有时候使用静态IP有时候使用动态Ip

DHCP Relay(DHCP中继路由器)

用于连接不同物理网段(称为子网)上的硬件和软件,在每个子网之间转发IP报文

image-20230404222646269

先在子网中广播IP地址

代理路由器收到后检查对应gateway ip 如果为0把自己的IP填进去然后将其转发到子网1中去

image-20220619172108531

image-20220619172118967

image-20220619172125797

image-20220619172134230

image-20220619172143734