Dynamic Host Configuration Protocol
一.两个用于描述协议的工具
1.1 MSC(Message Sequence Chart)

该消息序列图由实体、消息及动作构成,并包含时间线。 其主要作用是从全局层面阐述协议的功能特性。 采用该图表定义为整体性是基于其涵盖所有实现中的实体,并与仅针对单一实体的STD作对比分析。
电话呼叫时的MSC图:

从观察中可以看出,在系统运行过程中实体触发特定的动作序列:当某个实体执行操作时会生成相应的消息,并促使其他相关的实体根据接收到的消息继续执行一系列的动作步骤
如何绘制一张Message Sequence Chart?首先需要明确协议中的所有参与者或实体。对于每一个具体参与者而言,请明确它能执行的操作以及能发送的信息类型。然后需要分析各参与方之间的相互作用机制。
1.2 STD(State Transition Diagram)

STD同样也被用来介绍协议功能,在对比中可以发现 MSC 更注重整体性描述而 STD 则聚焦于协议中的具体实体。其中包含三个核心要素:事件、消息和状态。其中事件与状态都属于 STD 要描述的核心要素部分 而消息则分为两种类型 入站消息源自其他实体而出站消息则由本实体产生
通过查看上图可以看到, 绘制一张STD图的第一步是列出该实体在协议中可能存在的所有状态. 接下来需要明确状态之间的转换条件(如接收消息或事件)以及转换结果(如发送消息). 这将有助于更好地理解协议的运行机制.

1.3 TLV
在message中存在多个字段(fields),每个字段都对应特定的功能(function)。例如,在TCP packet这个message中包含一个名为Source IP Address的字段(field),它主要用于记录发送该TCP packet所来自的源主机的信息(information)。为了满足实现特定功能的需求(requirement),其中一些字段长度不固定(variable length)。例如,在TFTP message中存在一个称为Error域的部分(section),用于存储错误提示这一可变长的信息(information)。
那么问题就转化为:我们如何处理message中长度可变的field?采用TLV格式(或采用编码风格)。
TLV是type-length-value的代表,在数据传输中被用于组织可变长度的信息字段以便于解码:其中包含一个固定长度的部分用于标识信息类型;接着存储字段长度;最后以可变长度的形式存储实际的数据内容其具体长度由之前的字段给出

二.IP address allocation --- DHCP介绍
该技术标准以其独特的功能著称。其全称为Dynamic Host Configuration Protocol(DHC),负责为接入网络的各种设备设置相关的系统信息。其中最重要的便是IP地址设置。在网络安全相关的系统参数设定中,参数值的确定通常遵循一定的原则与标准。网络相关参数设定主要有静态赋值与动态赋值两种方式:静态赋值(如用户自行输入)与动态赋值(由服务器端自动完成)。目前广泛采用的是基于计算机网络环境下的动态赋值策略。该技术标准包含的主要组件有两部分:Bootstrap Protocol与Dynamic Host Configuration Protocol(DHC)。两者的区别在于 former采用自适应方法实现服务发现机制而后者则通过协商机制实现服务发现过程的不同阶段特性。
| DHCP | BOOTP | |
|---|---|---|
| 功能 | 为主机(有硬盘和boot file的)配置相关网络信息 | 主机可以使用BOOTP获取IP地址,但是最重要的功能是无盘工作站使用该协议和TFTP获取boot file。 |
| 传输层 | UDP, DHCP client的port为67。 | UDP |
| 配置的有效期 | 网络配置信息存在有效期。到期后会重新分配。 | 有效期无限制,即不会重新绑定或是更新网络配置 |
| message格式 | 两者相同 |
三.DHCP涉及的实体以及有效期
3.1 DHCP server

3.2 DHCP client

3.3 DHCP lease

四.DHCP message


重点需要介绍的领域(field)是OPTIONS. 其长度可变,并遵循TLV编码格式. 当其type字段值为53时(表示OPTIONS存储的DHCP message的类型信息)的情况将得到详细讨论.
当前情况下, length和type都占用一个字节. 其中, type的值为53, length的值为1. 此外, value也占用一个字节, 并且其可能的取值包括:
赋值变量value初始化为1;通过调用DCHPOFFER函数返回指定的数值3;执行DCHPREQUEST操作会设置响应码参数为4;当遇到DCHPDECLINE情况时会发送回执信息并指定拒绝码5;接收ACK信号则表示成功操作且响应状态参数设置为6;接收到NAK信号则表明失败操作并指定退还会话的状态参数7;释放资源并发送RELEASE信息后会设置返回码8;最后执行INFORM操作会提供系统相关信息


五.DHCP operation
DHCP主要包含三种操作, 分别而言涉及IP地址的注册、释放前以及更新其租赁期. 每个操作都对应不同的功能, 并且我们为每个功能绘制了相应的MSC图.
5.1 IP地址获取

根据上述描述,在ip地址获取过程中我们可以识别出三个关键实体:dhcp主机、dhcp服务器以及无法响应回应的dhcp服务器(即未被offer接受的dhcp服务器)。


5.2 Early Lease Termination(提前放弃IP地址)


5.3 Lease Renewal
IP地址的租期到了需要更新。
注意:当客户遭到选中服务器的 DHCPNAK 拒绝后(即 DHCP 报告失败),该客户将无法访问第三号或第四号图。这四个图表之间具有平等的关系(这一点在查看 STD 时尤其明显)。




