DHCP动态主机配置协议,简单点说,就是提供了自动获取ip地址的功能,基于四层的UDP协议;

以下描述此协议的整个工作流程:

(1) 客户端发送discovery报文,二三层广播报文,源ip地址全0;

(2)服务器收到discovery报文之后,进行ip地址分配,找到ip地址,并且进行arp探测,当发现

此ip地址空闲之后,组offer报文,发送给客户端,内部包含有ip地址,客户端mac地址,租约时间等信息;

(3)客户端收到offer报文之后,会选择一个(一般是第一个)进行应答,并且发送request报文到服务器,同时也会进行

ARP探测,当发现有ip地址冲突的时候,会发送decline报文到服务器终止使用该ip地址,然后重新发送discovery;

(4)服务器发送ack报文确认地址,客户端收到ack之后,开始使用该ip地址;

---以上流程报文均为广播;

(5)客户端会在租约时间的1/2和3/4时间开始尝试续租该ip地址,成功则继续使用,否则到达租期后

不能继续使用,需要施放该ip地址,并且重新发discovery;

(6)客户端可以发送release报文随时放弃该ip地址的使用;

我们重点说下服务器的一些实现问题:

1. 建立bit数组,在bit数组中将分配出去或者不能够分配的地址进行标记;

比较烂的实现是每次收到discovery请求之后,先随机一个地址,然后每个地址都去lease链表中查找,

看是否这个lease被分配出去;一开始性能还好,但是当分配的地址接近极限的时候,会出现n*n次遍历

的情况,从而大大影响到性能;

使用bit数组保存地址,每次直接以32个的方式遍历数组,找到不是0xffffffff的区间,然后按照bit查找空闲

bit,从而确定空闲地址;最多只需要n/32次遍历;性能将会大大提升;

2.使用最老租约:

某些时候,客户端可能下线的时候并没有通知服务器,这时候如果服务器的地址池已经使用完,可以选择最早

分配出去的的租约ip进行arp探测,如果已经不在使用,则分配该ip地址给新的客户端;此处涉及到的lease链表

的维护,最好保证每次更新或者添加都使用尾插法,这样就保证了直接取第一个节点就一定是最老的租约,缩短

了遍历的时间;

3.arp防冲突:

arp放冲突这里主要是要保存一些正在arp地址的缓存信息,首先可以防止探测同一个ip地址被多次发送arp;

arp防冲突通常会使用一个定时器,如果超时仍然没有发现冲突,则发送offer报文;否则,需要继续查找下

一个可用ip地址,注意下次查找的地址不能是以前探测冲突的,如果冲突需要在bit数组中打标记;

4.offer包文和ack报文对lease的处理:

offer发送时,会产生一个tmplease插入到lease链表,当发送ack的时候才变成正式的lease,即标记已分配;

如果一个offer的ip地址是一个已经存在的地址,会将原有的lease删除,然后重新添加;在某些测试工具的异常

场景下,ip地址已经分配出去,这时候来了discovery,并且没有检测到冲突,因为工具不回复arp,所以会删除

掉lease,发送offer,但是工具发现自己已经有ip地址了,所以不予回应,导致lease被误删了;这会导致ha情况下

某些同步上的异常情况出现;

先简单的写这么多,后面想起来再写,思路有点乱了;

常见协议基础知识总结--DHCP协议的更多相关文章

  1. 常见协议基础知识总结--FTP协议

    FTP协议是一种基于客户端和服务器的文件传输协议,属于应用层协议,基于传输层的TCP协议: FTP主要分成主动模式和被动模式两种传输方式, 方式是相对服务器而言的,服务器主动发起数据连接即主动方式,使 ...

  2. 【RL-TCPnet网络教程】第25章 DHCP动态主机配置协议基础知识

    第25章      DHCP动态主机配置协议基础知识 本章节为大家讲解DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),通过前面章节对TCP和UDP ...

  3. 【RL-TCPnet网络教程】第41章 HTTP超文本传输协议基础知识

    第41章      HTTP超文本传输协议基础知识 本章节为大家讲解HTTP(HyperText Transfer Protocol,超文本传输协议),从本章节开始,正式进入嵌入式Web的设计和学习. ...

  4. 【RL-TCPnet网络教程】第35章 FTP文件传输协议基础知识

    第35章      FTP文件传输协议基础知识 本章节为大家讲解FTP(File Transfer Protocol,文件传输协议)的基础知识,方便后面章节的实战操作. (本章的知识点主要整理自网络) ...

  5. 【RL-TCPnet网络教程】第33章 SMTP简单邮件传输协议基础知识

    第33章      SMTP简单邮件传输协议基础知识 本章节为大家讲解SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)的基础知识,方便后面章节的实战操作. (本 ...

  6. 【RL-TCPnet网络教程】第16章 UDP用户数据报协议基础知识

    第16章      UDP用户数据报协议基础知识 本章节为大家讲解UDP(User Datagram Protocol,用户数据报协议),需要大家对UDP有个基础的认识,方便后面章节UDP实战操作. ...

  7. IOS Socket 01-网络协议基础知识

    1. 网络参考模型 OSI参考模型                                          TCP/IP参考模型 2. 七层简述 1)物理层:主要定义物理设备标准,如网线的接 ...

  8. TCP/IP网络协议基础知识集锦[转]

    引言 本篇属于TCP/IP协议的基础知识,重点介绍了TCP/IP协议簇的内容.作用以及TCP.UDP.IP三种常见网络协议相关的基础知识. 内容 TCP/IP协议簇是由OSI七层模型发展而来的,之所以 ...

  9. JAVA基础知识|TCP/IP协议

    虽然写代码也有一定的年头了,但是对于一些基础概念,还是很模糊.这在后来的学习过程中,带来了很大的痛苦,所以痛定思痛,决心重新学习这些概念.并把自己的理解和查询的资料做一些整合,便于以后查阅! 一.什么 ...

随机推荐

  1. zabbix 一些问题随记

    1. zabbix运行不了,显示被锁,去检查日志中的报错 2. 配置界面,连接不到数据库,检查server配置文件,mysql授权命令要准确,重启 3. 显示没有php文件,下载即可,或者修改网页访问 ...

  2. Cassandra 常见错误索引

    类型错误 类型错误调试的技巧 有时候,类型错误提示比较不友好,比如不知道哪个字段出错. 在php中可以用 //过滤几个数据进行操作,逐个检查,或者折半查找错误 $data = array_splice ...

  3. Spring MVC前台POST/GET方式传参数的方法

    假设前台通过submit传值,代码如下: <form action="testPost.do" method="post"> 页码:<inpu ...

  4. React & shit Antd

    React & shit Antd https://ant.design/components/tooltip-cn/ https://ant.design/components/tag-cn ...

  5. Redis学习笔记之基础篇

    Redis是一款开源的日志型key-value数据库,目前主要用作缓存服务器使用. Redis官方并没有提供windows版本的服务器,不过微软官方开发了基于Windows的Redis服务器Micro ...

  6. JavaScript正则表达式大全

    一.校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^\d{n}$ 3 至少n位的数字:^\d{n,}$ 4 m-n位的数字:^\d{m,n}$ 5 零和非零开头的数字:^(0|[1-9 ...

  7. 2018-8-10考试 T3. 朝暮(akekure)

    题目大意:有$n$个点和$m$条边的图($n - 1 \leq m \leq n + 5$),每个点要么黑要么白,两个黑点不可以相邻,问方案数 题解:可以发现当图为一棵树的时候只需要一个树形$DP$ ...

  8. [洛谷P4782]【模板】2-SAT 问题

    题目大意:有$n$个布尔变量 $x_1 \sim x_n$,另有$m$个需要满足的条件,每个条件的形式都是"$x_i$ 为$true/false$或$x_j$为$true/false$&qu ...

  9. Contest Hunter 模拟赛09 C [树形dp+差分]

    题面 传送门 思路 又双叒叕是一道差分题我没想出来......记录一下 首先这个"所有祖先都比自己小"等价于"父亲比自己小" 这题的基础dp方程很显然,$dp[ ...

  10. [poj] 2396 [zoj] 1994 budget || 有源汇的上下界可行流

    poj原题 zoj原题 //注意zoj最后一行不要多输出空行 现在要针对多赛区竞赛制定一个预算,该预算是一个行代表不同种类支出.列代表不同赛区支出的矩阵.组委会曾经开会讨论过各类支出的总和,以及各赛区 ...