当前位置:网站首页>Dynamic Host Configuration Protocol
Dynamic Host Configuration Protocol
2022-06-28 00:26:00 【竹某】
一.两个用于描述协议的工具
1.1 MSC(Message Sequence Chart)

消息序列图包括:实体、消息和动作,以及时间线。 其作用是从整体的交互上上描述协议的功能。之所以说是整体上,是因为其涵盖了协议实现上的全部实体,区别于STD只描述一个实体。交互由message和action来体现。
电话呼叫时的MSC图:

可以看出,entity产生action,action产生message,message又往往带来其他entity的action。
如何画出一张MSC?首先确定协议中全部的实体。对于每一个实体,确定其能够做的action和能够发出的么message。再之后才是确定各个实体间的交互关系。
1.2 STD(State Transition Diagram)

STD同样也是用于介绍协议功能的,只不过相较于MSC侧重于整体,STD侧重于协议中的一个实体。 STD中包含:event,message,state。event和state都属于STD描述的实体,而incoming message来自于其他实体,而outgoing message来自于该实体。
从上图可知,画出一张STD图我们需要首先列举出协议中该实体可能处于的所有的state。之后再明确state间的转化条件(incoming message或是event)和转化结果(outgoing message)。

1.3 TLV
我们知道message中有许多field,其对应着不同的功能。比如TCP packet这个message中有一个Source IP Address的field,其作用是存放发送该TCP packet的源主机的IP地址。 而出于实现特定的功能考虑,有些field是不定长的(variable length),比如TFTP message中的Error域,为了存放错误提示这一可变长的字符串,Error域本身就是不定长的。
那么问题就是我们如何处理message中可变长的field呢?TLV格式(或说编码风格)。
TLV是type-length-value的缩写,其表示可变长的field中存储的信息应该这样组织以便解码:存放定长的type,指示类型(比如不同的错误类型);存放定长的length,指示value的长度;存放可变长的value,其长度由length给定。

二.IP address allocation --- DHCP介绍
DHCP的全称是动态主机配置协议,作用是为想要接入网络的主机配置相关信息,其中最主要的就是IP地址。 网络相关配置信息的配置有两种分配方式:静态分配(即由用户手动输入)和动态分配(由一个server进行分配)。 常用的动态配置协议分为两种:BOOTstrap Protocol和DHCP。两者的差别和相同点为:
| 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; DHCPDISCOVER value = 2; DCHPOFFER value = 3;DHCPREQUEST value = 4; DHCPDECLINE value = 5; DHCPACK value = 6;DHCPNAK value = 7; DHCPRELEASE value = 8;DHCPINFORM


五.DHCP operation
DHCP主要包含三种操作,分别时IP address的获取,提前释放IP地址,更新IP地址的租期。各个操作对应着不同的功能,我们可以分别为其画出MSC图。
5.1 IP地址获取

从上述的对IP地址获取过程的描述中,我们可以提炼出三个entity:DHCP host, DHCP server和other DHCP server(offer未被接受的server)。

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

5.3 Lease Renewal
IP地址的租期到了需要更新。
注意,client被selected server拒绝后(DHCPNAK),是不会进入第三或是第四张图的。这四张图是并列的关系(这点在结合STD看就很明显)。


边栏推荐
- Numpy----np.meshgrid()
- Jenkins - 内置变量访问
- Jenkins - 訪問 Jenkins 自定義參數變量,處理變量值中含有空格
- The interviewer asked: can you simulate the new operator of JS
- 766. toplitz matrix
- Description du format geojson (détails du format)
- Numpy----np. meshgrid()
- 机器学习笔记 - 时间序列作为特征
- Appium自动化测试基础 — ADB常用命令(一)
- Google Earth engine (GEE) -- an error caused by the imagecollection (error) traversing the image collection
猜你喜欢

STM32的通用定时器与中断

Cesium 获取屏幕所在经纬度范围

ShardingSphere-proxy-5.0.0建立mysql读写分离的连接(六)

766. toplitz matrix
![[Yongyi XY chair] trial experience](/img/9e/9814bf21a79214d21d2a257c725147.jpg)
[Yongyi XY chair] trial experience

Raspberry pie realizes intelligent cooling by temperature control fan
![[embedded foundation] memory (cache, ram, ROM, flash)](/img/bd/d952ebd4033a993dd16cd792bb3e1e.png)
[embedded foundation] memory (cache, ram, ROM, flash)

Voice network VQA: make the user's subjective experience of unknown video quality in real-time interaction known

Embedded must learn! Detailed explanation of hardware resource interface - based on arm am335x development board (Part 2)

【ELT.ZIP】OpenHarmony啃论文俱乐部—数据密集型应用内存压缩
随机推荐
Cesium Click to draw polygons (dynamically draw polygons)
Description du format geojson (détails du format)
[embedded foundation] memory (cache, ram, ROM, flash)
面试官问:能否模拟实现JS的new操作符
深入解析kubernetes controller-runtime
Embedded must learn! Detailed explanation of hardware resource interface - based on arm am335x development board (Part 2)
Jenkins - Pipeline syntax
Cesium 多边形(polygon)extrudedHeight 和 height 的区别
Four classic training modes in comparative learning
Jenkins - 訪問 Jenkins 自定義參數變量,處理變量值中含有空格
Cesium 点击绘制多边形(动态绘制多边形)
SQL 注入绕过(三)
Jenkins - Copy Artifact 插件 Build 之间数据共享传递
Jenkins - Pipeline 概念及创建方式
Based on am335x development board arm cortex-a8 -- acontis EtherCAT master station development case
Database query optimization: master-slave read-write separation and common problems
Jenkins - accédez à la variable de paramètre personnalisée Jenkins, en traitant les espaces dans la valeur de la variable
[Yocto RM] 2 - Yocto Project Terms
[Yocto RM]9 - QA Error and Warning Messages
Numpy----np.meshgrid()