dhcp 续约review报文_Linux的私房菜 DHCP

ee719695ea4ab0dc2f3c2a428766ff4d.png

DHCP服务

DHCP的全称是动态主机配置协议,用来自动给客户机分配TCP/IP信息的网络协议。

Dynamic Host Configuration Protocol,前身是BOOTP协议,是一个局域网的网络协议,使用UDP协议工作,统一使用两个IANA分配的端口:67(服务器端),68(客户端)

8875043c22b3e0a13b243173c0e4887d.png

DHCP实际上是在应用层实现,请求报文分装在UDP数据报文中,其中UDP是不可靠的,面向无连接的传输协议。

DHCP通常被应用于局域网环境,其主要作用是用于集中管理,分配IP地址,客户端client动态获得IP地址,Gateway地址,DNS服务器地址等信息,并能够提升地址的使用率。

简单来说,DHCP是没有账号密码登录,自动给内网机器分配IP地址信息的协议。在实际应用上,大大减少了管理员的工作量,避免输入错误的可能,避免ip地址冲突;当更改IP地址段时,不需要重新配置每个用户IP地址,提高了IP地址的利用率,方便客户端的配置。

5ddc4fd8cc1ebfed8538262d44df6d88.png

DHCP具体是怎么样的实现流程?

举一个生活列子来说

就是快递员拿着喇叭在楼下喊:

“某某某的快递下楼拿一下”

然后大家都往楼下看

最后真正的收件人回应:

“是我的快递”

然后你两建立连接

当然我这个列子可能不是很恰当,那小编就带大家以原理干货的形式来讲解。

4841171b62c81ea763031de654c8520e.png

发现阶段,即DHCP客户机寻找DHCP服务器的阶段。DHCP客户机以广播方式(因为DHCP服务器的IP地址对于客户机来说是未知的)发送DHCP discover发现信息来寻找DHCP服务器,即向地址255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。

提供阶段,即DHCP服务器提供IP地址的阶段。在网络中接收到DHCP discover发现信息的DHCP服务器都会做出响应,它从尚未出租的IP地址中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含出租的IP地址和其他设置的DHCP offer提供信息。

选择阶段,即DHCP客户机选择某台DHCP服务器提供的IP地址的阶段。如果有多台DHCP服务器向DHCP客户机发来的DHCP offer提供信息,则DHCP客户机只接受第一个收到的DHCP offer提供信息,然后它就以广播方式回答一个DHCP request请求信息,该信息中包含向它所选定的DHCP服务器请求IP地址的内容。之所以要以广播方式回答,是为了通知所有的DHCP服务器,他将选择某台DHCP服务器所提供的IP地址。

确认阶段,即DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到DHCP客户机回答的DHCP request请求信息之后,它便向DHCP客户机发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息,告诉DHCP客户机可以使用它所提供的IP地址。然后DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除DHCP客户机选中的服务器外,其他的DHCP服务器都将收回曾提供的IP地址。

重新登录。以后DHCP客户机每次重新登录网络时,就不需要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ack确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时(比如此IP地址已分配给其它DHCP客户机使用),则DHCP服务器给DHCP客户机回答一个DHCP nack否认信息。当原来的DHCP客户机收到此DHCP nack否认信息后,它就必须重新发送DHCP discover发现信息来请求新的IP地址。

更新租约。DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的信息。

客户端使用续租达到50%,以单播的形式向服务器请求续约。

如果续约失败,则继续使用ip,达到续租的87.5%,以广播的形式向服务器续租。

如果续约失败,客户端则使用租约至100%,重新发送DHCP Discover包,重新广播寻找DHCP服务器。

ff229724a48fe4f9c7c833fd04fb2601.png

步骤如上图所示:

1.客户端广播DHCP discover消息

2.服务器端提供地址续租(offer)

3.客户端选择并请求地址租用(request)

4.服务器确认地址租用给客户端(ACK)

 续约的四部曲,在这里就先告一段落

下面是一些名词解释,以及每个过程的作用

DHCP DISCOVER 

客户端开始DHCP过程发送的包,是DHCP协议的开始

DHCP OFFER

服务器接收到DHCP DISCOVER之后做出的响应,它包括了给予客户端的IP(yiaddr)、客户端的MAC地址、租约过期时间、服务器的识别符以及其他信息

DHCP REQUEST 

客户端对于服务器发出的DHCP OFFER所做出的响应。在续约租期的时候同样会使用。

DHCP ACK 

服务器在接收到客户端发来的DHCP REQUEST之后发出的成功确认的报文。在建立连接的时候,客户端在接收到这个报文之后才会确认分配给它的IP和其他信息可以被允许使用。

DHCP NAK 

DHCP ACK的相反的报文,表示服务器拒绝了客户端的请求。

DHCP RELEASE 

一般出现在客户端关机、下线等状况。这个报文将会使DHCP服务器释放发出此报文的客户端的IP地址

DHCP INFORM 

客户端发出的向服务器请求一些信息的报文

DHCP DECLINE 

当客户端发现服务器分配的IP地址无法使用,如IP地址冲突时,将发出此报文,通知服务器禁止
使用该IP地址。

93048f9ef154951db666f7fa1b11ac00.png

实验环境:

两台虚拟机,网络连接模式定义为VMnet*模式

实验目的:

客户端发送请求给服务端,实现DHCP服务的

”客户端发送数据包“   ”服务器接收“   “客户端发出请求”   “服务端进行接收”

注意事项:

检查防火墙是否关闭:

关闭防火墙

CentOS 6

chkconfig  iptables  off

CentOS 7

systemctl  disable firewalld

检查selinux是否关闭:

getenforce  (Permissive) 显示关闭

修改配置文件

sed -i '7s/enforcing/disabled/' /etc/selinux/config

5d417084514b99709815098ec1d2789f.png

关闭vm虚拟机的dhcp功能  在网络适配器中将其勾掉

实验步骤:

yum -y install dhcp

打开配置文件  vim /etc/dchpd.conf

9a196efe2828d22c8cebe718d8cac408.png

cp-a/usr/share/doc/dhcp4.1.1/dhcpd.conf.sample ./dhcpd.conf

将这个dhcp-4.1.1文件 改名复制到dhcpd.conf中

选择 yes

vim dhcp.conf 

找到subnet 来分配网段

b55a9f3c814ff1a45015b2ac358f1455.png

subnet 192.168.199.0 代表是所有网段的ip

注意!!

客户端和主机ip 不在同一网段,导致互相无法ping通

所以subnet后面的ip 地址必须是和主机ip 同网段。

1d90af986c1fc4d0668823ca44335a7c.png

使用客户端的虚拟机来获取dhcp,在配置文件setup  勾选dhcp

f0967313b9efd165ad2803651d831941.png

重启网络配置  service  network  restart

tail -f  /var/log/messages  监听dhcp 服务

图/ 能能

文/ 能能

97年气氛组的神

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/270975.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

硬件编程:硬件开发中常用的几种通信接口总结

在嵌入式系统中,板上通信接口是指用于将各种集成电路与其他外围设备交互连接的通信通路或总线。以下内容为常用板上通信接口:包括I2C、SPI、UART、1-Wire:I2C总线I2C总线是一种同步、双向、半双工的两线式串行接口总线。这里,半双…

集合初始化时,指定集合初始值大小

集合初始化时,指定集合初始值大小

hadoop常用linux命令,# Hadoop学习笔记(二)——Linux常用命令

ifconfigLinux ifconfig命令用于显示或设置网络设备。ifconfig可设置网络设备的状态,或是显示目前的设置。ifconfig.png语法ifconfig [网络设备][down up -allmulti -arp -promisc][add][del][][io_addr][irq][media][mem_start][metric][mtu][netmask][tunnel][-br…

数据库:计算地球上两个坐标点之间里程

今天给大家分享计算地球上两个坐标点之间里程不同数据库版本的脚本。1、SQLServer脚本–-计算地球上两个坐标点(经度,纬度)之间距离sql函数 CREATE FUNCTION [dbo].[fnGetDistance](LatBegin REAL , LngBegin REAL, LatEnd REAL, LngEnd REA…

使用entrySet遍历Map类集合KV,而不是keySet方式进行遍历

使用entrySet遍历Map类集合KV,而不是keySet方式进行遍历

【Qt开发】Qt Creator在Windows上的调试器安装与配置

Qt Creator在Windows上的调试器安装与配置 如果安装Qt时使用的是Visual Studio的预编译版,那么很有可能就会缺少调试器(Debugger),而使用MSVC的Qt对应的原生调试器是CDB(对应MinGW的Qt使用GDB调试器)。本文…

linux rsync 带密码,Linux配置ssh无密码验证,rsync

1.我先声明主机pangzhiminglinux 192.168.200.129CentOS2 192.168.200.130方法大概是这样:如果想从pangzhiminglinux的普通用户无验证登录到CentOS2的普通用户(单方向的),那么就要在两个主机都建立一个相同名字,相同密码的普通…

Java:Lombok插件用法笔记

1、Lombok是什么东东?官方介绍Lombok项目是一个Java库,它可以自动嵌入你的编辑器和构建工具中,从而减少你的代码量。永远不要再写另一个getter或equals方法,它带有一个注释的你的类有一个功能全面的生成器,自动化你的日…

bzoj2058: [Usaco2010 Nov]Cow Photographs(逆序对)

题目大意:给出n个数的序列,每次可以交换相邻的两个数,问把序列变成编号i在编号i1左边,编号1在编号n右边(一个环)最少需要多少步。如:35421最少交换两次变为34512。 一开始看到这题,只会O(n),后来…

sap实施和开发哪个前景_2021年了!还不知道 SAP顾问的职业前景?

一、先说什么是SAP。百度词条的解释:SAP有两个意思一为“System Applications and Products”的简称,是SAP公司的产品——企业管理解决方案的软件名称。也代指SAP公司。二为SAP开发的ERP(Enterprise-wide Resource Planning)软件名…

Linux找最大最小值的命令,Linux中awk命令正确的求最大值、最小值、平均值、总和...

test.txt文件内容&#xff1a;911352142118求最大值&#xff1a;awk BEGIN {max 0} {if ($10 > max0) max$1} END {print "Max", max} test.txtMax 118求最小值&#xff1a;awk BEGIN {min 65536} {if ($10 < min0) min$1} END {print "Min", min}…

​分布式数据库技术基础:数据分布介绍

1、数据分布的定义数据分布是指在分布式环境中通过合理分布数据&#xff0c;提高数据操作自然并行度&#xff0c;以达到最优的执行效率的目的。在构建分布式数据库系统运行环境时&#xff0c;必须考虑数据如何分布在系统的各个场地上。数据分布主要关注的问题是在分布式数据中&…

uname命令 linux,Linux uname命令详解

Linux uname命令用于显示系统信息。uname可显示电脑以及操作系统的相关信息。语法参数&#xff1a;uname [参数]参数&#xff1a;-a或--all&#xff1a;显示全部的信息&#xff1b;-m或--machine&#xff1a;显示电脑类型&#xff1b;-n或-nodename&#xff1a;显示在网络上的主…

分布式数据库技术基础:数据分片介绍

1、数据分片定义数据分片也成为数据分割&#xff0c;是分布式数据库的特征之一。一般在一个分布式数据库中&#xff0c;全局数据库是由各个局部数据库逻辑组合而成的&#xff0c;反之各个局部数据库是由全局数据库的某种分割逻辑而得的。数据分片得到的各部分元组成为该关系的逻…

分布式数据库技术基础:分布透明性相关知识

1、分布透明性介绍数据分布独立性&#xff1a;主要是指用户或用户程序使用分布式数据库如同使用集中式数据库那样&#xff0c;不必关系全局数据的分布情况。也就是说全局数据的逻辑分片、片段的物理位置分配、各场地数据库的数据模型等情况对用户和用户应用程序是透明的。因此分…

宏基4750网卡驱动linux,宏基4750g网卡驱动下载

宏基4750g网卡驱动是宏基笔记本上网驱动&#xff0c;驱动可以帮助用户体验便捷上网功能&#xff0c;只需要的双击驱动安装就可以完成&#xff0c;网卡驱动是笔记本必备程序&#xff0c;欢迎用户来当易网下载体验&#xff01;驱动介绍Acer宏碁Aspire 4750G笔记本网卡驱动14.4.0.…

python request post 数组_[pve][python]用python3获取pve状态信息

手头的Proxmox VE集群和节点越来越多&#xff0c;需要考虑统一管理了&#xff0c;先定一个小目标——集中状态监控。以前写过检测ceph并用钉钉报警的bash脚本&#xff0c;这次换上洋气的方式&#xff0c;用python来通过pve的api获取其状态信息。首先参考proxmox官方的api(实际上…