【网络协议详解】——DHCP系统协议(学习笔记)

目录

  • 1. DHCP概述
  • 2. 工作过程
  • 3. DHCP的报文格式
  • 4. DHCP中继代理
  • 5. 实验:DHCP配置

1. DHCP概述

动态主机配置协议DHCP(Dynamic Host Configuration Protocol)提供了一种机制,称为即插即用连网(plug-and-play networking)。这种机制允许一台计算机加入新网络时可自动获取IP地址等网络配置信息而不用手工参与

DHCP目前是因特网草案标准[RFC 2131,RFC 2132]。

DHCP 使用客户——服务器方式

需要 IP 地址的主机在启动时就向 DHCP 服务器广播发送发现报文(DHCP Discover),这时该主机就成为 DHCP 客户。

本地网络上所有主机都能收到此广播报文,但只有 DHCP 服务器才回答此广播报文。

DHCP 服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的 IP 地址池(address pool)中取一个地址分配给该计算机。DHCP 服务器的回答报文叫做提供报文(DHCP Offer)。

2. 工作过程

  • DHCP报文在运输层使用UDP协议封装
    • DHCP客户使用的UDP端口号为68
    • DHCP服务器使用的UDP端口号为67
  • DHCP客户在未获取到IP地址时使用地址0.0.0.0

DHCP主要使用以下报文来实现其功能:

  • DHCP DISCOVER发现报文,DHCP客户端用来寻找DHCP服务器,广播
    • 事务ID
    • DHCP客户端的MAC地址
  • DHCP OFFER提供报文,DHCP服务器用来响应DHCP Discover报文,单播
    • 事务ID
    • 配置信息:
      • IP地址(使用ARP确保所选IP地址未被网络中其他主机占用)
      • 子网掩码
      • 地址租期
      • 默认网关
      • DNS服务器
  • DHCP REQUEST请求报文,DHCP客户端请求配置确认,或者续借租期。广播
    • 事务ID
    • DHCP客户端的MAC地址
    • 接受的租约中的IP地址
    • 提供此租约的DHCP服务器端的IP地址
  • DHCP ACK确认报文,DHCP服务器对Request报文的确认响应,单播
  • DHCP NACK否认报文,DHCP服务器对Request报文的确认响应,广播
  • DHCP RELEASE释放报文,DHCP客户端要释放地址时用来通知DHCP服务器,单播
  • DHCP DECLINE谢绝报文,客户端收到DHCP服务器的地址后,通过地址冲突检测发现服务器分配的地址冲突或者由于其他原因导致不能使用,则会向DHCP服务器发送Decline请求报文;目的为通知服务器所分配的IP地址不可用,以期获得新的IP地址
  • DHCP INFORM请求更多信息报文,向DHCP服务器请求更为详细的配置信息;DHCP服务器在收到该报文后,将根据租约进行查找到相应的配置信息后,向DHCP客户端发送ACK应答报文;目前基本不用。

DHCP工作过程可以分为以下阶段:

  • 地址自动分配过程
    • 发现阶段
    • 提供阶段
    • 选择阶段
    • 确认阶段
  • 地址续约过程
  • 释放过程

【网络协议详解】——DHCP系统协议(学习笔记)_第1张图片

  • DHCP客户机首先进行广播寻找DHCP服务器(DHCP DISCOVER),源地址为本机0.0.0.0,目的地址为广播地址255.255.255.255

  • DHCP服务器收到后,返回DHCP OFFER消息,其中包含提供给DHCP客户机的IP地址(使用ARP确保所选IP地址未被网络中其他主机占用)和相关配置信息。源地址为DHCP服务器地址,目的地址为广播地址(因为此时目的客户机还没有IP地址)

  • 客户机可能会收到多个DHCP提供消息,一般以收到的第一个为准。此时客户机知道DHCP服务器可以给它分配地址,因此发送DHCP REQUEST报文来请求分配IP地址,报文的源地址为0.0.0.0,目的地址为255.255.255.255

  • DHCP收到请求信息后,查看其中事务ID是否相符,若不符则丢弃;符合则从地址池中取得一个IP地址,并通过ARP协议确认此地址未被使用后,将其封装进DHCP ACK信息中,报文源地址为DHCP服务器地址,目的地址为广播地址

  • 客户机收到DHCP确认信息后,查看其中事务ID是否相符,不符则丢弃;符合则再次使用ARP确认IP地址没有被使用

    • 若被占用:给DHCP服务器发送DHCP DECLINE报文撤销IP地址租约,并重新发送DHCP DISCOVER报文;
    • 若未被占用:可以使用租约中的IP地址与网络中其他主机通信了。
  • 当IP地址租约达到0.5倍时间时,客户机会再次向DHCP服务器发送请求信息更新租用期。源地址为租用的IP地址,目的地址为DHCP服务器地址。此时DHCP服务器会出现以下三种情况:

    • 收到请求后,返回确认报文DHCP ACK),其中有新的IP地址租期,重新设置计时器。
    • 收到请求后,返回否认报文DHCP NACK),则客户机收到后立刻停止使用IP地址并重新发送DHCP DISCOVER报文
    • 不响应。则在租期达到0.875倍时,DHCP客户必须重新发送DHCP REQUEST报文,继续等待DHCP服务器可能做出的反应。若依然无反应,则租用期到后,客户机必须立刻停止使用当前IP地址,并重新发送DHCP DISCOVER报文来重新申请IP地址。
  • 客户端可随时终止DHCP服务器提供的租用期,这时只需要向DHCP服务器发送DHCP RELEASE即可。源地址0.0.0.0,目的地址255.255.255.255

3. DHCP的报文格式

【网络协议详解】——DHCP系统协议(学习笔记)_第2张图片

  • 操作码字段长度为8比特,定义了DHCP报文的类型:请求(1)、提供(2)。
  • 硬件类型字段长度为8比特,定义了物理网络的类型。为 1 时表示为最常见的以太网 MAC 地址类型。
  • 硬件长度字段为8比特,定义了以字节为单位的物理地址的长度。
  • 跳数字段长度为8比特,定义分组可经历的最大跳数。
  • 事务标识字段长度为4字节,该字段携带了一个整数,用来对回答和请求进行匹配。
  • 秒数字段长度为16比特,表示DHCP 客户从获取到 IP 地址或者续约过程开始到现在所过去的秒数。
  • 标志字段长度为16比特,只使用了最左一位,其余位都应当置0,指明服务器是否强制使用广播应答(而不是单播)(1广播,0单播)
  • 客户IP地址字段长度为4字节,包含客户IP地址,在确认报文中才会填入。
  • 你的IP地址字段长度为4字节,包含客户IP地址。该字段由服务器(在应答报文中)在客户的请求下填入。
  • 服务器IP地址字段长度为4字节,包含服务器IP地址。
  • 网关IP地址字段长度为4字节,中继的IP地址。
  • 客户硬件地址字段长度为16字节,指明客户的物理地址。
  • 服务器名字段长度为64字节,指明服务器的名字。
  • 引导文件名字段长度为128字节,由服务器为 DHCP 客户端指定的启动配置文件名称及路径信息。
  • 选项字段长度可变,可以携带附加信息(如网络掩码或默认路由器地址)和携带某些厂商特定的信息,该字段只用在应答报文中。

【网络协议详解】——DHCP系统协议(学习笔记)_第3张图片

选项由三个字段组成:

  • 标记字段
  • 长度字段
  • 值字段
标记 长度符 说明
0 填充
1 4 子网掩码 子网掩码
3 可变 IP地址 默认路由器
6 可变 IP地址 DNS服务器
12 可变 DNS名 主机名
13 2 整数 引导文件大小
53 1 稍后讨论 用于动态配置
128~254 可变 特定信息 厂商相关
255 列表结束

4. DHCP中继代理

在每一个网络上都设置一个DHCP服务器会使DHCP服务器的数量太多。因此现在是使每一个网络至少有一个DHCP中继代理(通常是一台路由器),它配置了DHCP服务器的IP地址信息,作为各网络中计算机与DHCP服务器的桥梁。

【网络协议详解】——DHCP系统协议(学习笔记)_第4张图片

5. 实验:DHCP配置

【网络协议详解】——DHCP系统协议(学习笔记)_第5张图片

设备名 端口 ip地址 掩码
R1 f0/0 192.168.1.1 255.255.255.0
f0/1 192.168.2.1 255.255.255.0
PC1 E0 DHCP获取 DHCP获取
PC2 E0 DHCP获取 DHCP获取

实验步骤:

一、基本配置

R1(config)#int f0/0
R1(config-if)#ip add 192.168.1.1 255.255.255.0
R1(config-if)#no shut
R1(config)#int f0/1
R1(config-if)#ip add 192.168.2.1 255.255.255.0
R1(config-if)#no shut

二、在R1上配置DHCP–192.168.1.0网段
(1)建立DHCP地址池

R1(config)#ip dhcp pool ttoken1

(2)设置DHCP地址池的网络地址和掩码

R1(dhcp-config)#network 192.168.1.0 255.255.255.0    

(3)设置客户端默认网关

R1(dhcp-config)#default-router 192.168.1.1 

(4)设置域名服务器

R1(dhcp-config)#dns-server 192.168.1.100 

三、在R1上配置DHCP–192.168.2.0网段
(1)建立DHCP地址池

R1(config)#ip dhcp pool ttoken2

(2)设置DHCP地址池的网络地址和掩码

R1(dhcp-config)#network 192.168.2.0 255.255.255.0    

(3)设置客户端默认网关

R1(dhcp-config)#default-router 192.168.2.1 

(4)设置域名服务器

R1(dhcp-config)#dns-server 192.168.2.100 

四、在R1和SW1、R1和SW2的链路上开启抓包
五、在PC1和PC2配置DHCP

PC-1> ip dhcp
DDORA IP 192.168.1.2/24 GW 192.168.1.1
PC-2> ip dhcp
DDORA IP 192.168.2.2/24 GW 192.168.2.1

【网络协议详解】——DHCP系统协议(学习笔记)_第6张图片


❗ 转载请注明出处
作者:HinsCoder
博客链接: 作者博客主页

你可能感兴趣的:(TCP/IP网络协议原理与分析,网络协议,学习,笔记,经验分享,网络)