DHCP和PXE是怎么工作的

dhcp,pxe,怎么,工作 · 浏览次数 : 22

小编点评

**新机器申请IP地址的过程** 1. **DHCP Discover** - 主机发送DHCP Discover包,询问网络中是否有可用的IP地址。 - 广播包封装了UDP,包含DHCP Discover 包的源地址(新机器的MAC地址)、目标地址(255.255.255.255)。 2. **DHCP Offer** - 服务器收到 DHCP Discover 包,发现新的主机申请了IP地址。 - 服务器保留一个IP地址,并为新主机分配一个IP地址(0.0.0.0)。 - 服务器填充自己的IP地址、广播地址等信息到网络层。 3. **DHCP Request** - 新主机发送DHCP request包,请求服务器分配IP地址。 - 包包含新主机IP地址、DNS服务器地址、子网掩码、网关、DNS等信息。 4. **DHCP ACK** - 服务器收到 DHCP request 包,并发送 DHCP ACK包,确认新主机申请的IP地址。 - 服务器返回新的租期给新主机。 5. **DHCP Renewal** - 当租期到期后,新主机需要重新申请IP地址。 - 新主机发送 DHCP request 包,请求续租。

正文

dhcp(Dynamic Host Configuration Protocol):配置一段共享IP地址,为新上线的机器分配IP地址,回收下线机器的IP地址。

正常情况下主机(DHCP client)和DHCP server交互通过四个数据包完成IP的配置,分为DHCP Discover、DHCP Offer、DHCP request、DHCP ACK四步:

如何为新机器分配IP

不完整的包是无法在网络上传输的

一、客户端申请地址(DHCP Discover)

新的机器上线还没有合法的IP地址时,会使用0.0.0.0255.255.255.255这个地址发送广播包,广播包封装了UDP,UDP封装了BOOTP(Bootstrap Protocol)。这个包发出Boot request,意在告诉局域网中的主机,我还没有IP地址,我的MAC地址是xx:xx:xx:xx:xx:xx,谁能给我一个IP地址?

物理层:包含网卡信息、使用了DHCP协议的UDP包等信息
数据链路层:包含主机MAC地址,广播MAC地址ff:ff:ff:ff:ff:ff等信息
网络层:包含TTL、主机IP地址、广播地址等信息
传输层:udp的端口号等信息
应用层:Boot request中包含当前主机IP地址、DNS服务器地址(此时的主机一无所知,置为0.0.0.0),需要获取的子网掩码、网关、DNS等信息

后续主机和DHCP传输的四个包都是一步一步对以上信息的填补。

二、DHCPserver分配地址(DHCP Offer)

  1. 局域网中的主机收到网络包判断如果不是发给自己的则丢弃,DHCP服务器发现了dhcp类型的包,于是接收并解开分析,发现有一个新主机向自己申请IP地址,于是DHCP server会保留一个IP地址(期间不会分配给别人)。
  2. 新主机还没有分配到IP地址,DHCP server仍然需要使用⁄广播包的方式发送,在数据链路层添加自己的MAC地址,设置广播MAC地址。填充自己的IP地址到网络层,设置UDP端口信息,在Boot reply中设置Boot request请求的内容,并附加租约时间
  3. 发送广播包

三、新主机选择DHCP Offer(DHCP request)

为什么叫选择DHCP Offer?因为如果有多个DHCP server,他们都会发送DHCP Offer广播包,此时新主机(DHCP client)会收到多个包,通常会选择最先到达的DHCP Offer。选择好offer之后此时的客户端仍然没有IP地址,继续发送广播包,称为DHCP request。

  1. 设置MAC地址信息,设置IP信息(0.0.0.0和255.255.255.255),设置UDP信息
  2. 设置Boot request接受的DHCP offer中的IP地址、DHCP server的IP地址、以及要下一次收到ACK的广播或单播模式。
  3. 通过广播包告诉所有DHCP server,我接受了那个DHCP server的Offer,请其他DHCP server撤销提供的IP地址

四、最终确认(DHCP ACK)

DHCP server收到DHCP request后会使用广播或单播的模式发送一个ACK包作为最终确认,完成这一步新机器的IP地址就设置完成了。

  1. 组装MAC头,根据request要求用单播还是广播(Bootp flags:BROADCAST设1为广播,设0为单播),单播设置新机器的MAC地址,广播则仍然是ff:ff:ff:ff:ff:ff,同理组装IP头,UDP头
  2. 组装应用层BOOTP头,包含要分配给主机的IP地址,主机网卡的MAC地址,以及子网掩码、网关、DNS、租期、续约时间等。

DHCP租约更新

通过以上内容我们知道DHCP分配的IP地址有租约一说,租期到了就需要收回地址,如果主机IP在租期到期后还需要继续使用,那么就要主动向DHCP server以单播的形式发送DHCP request来请求续租。

  1. 一般在租期过去1/2时发送请求DHCP request请求。
  2. DHCP server收到请求后会发送DHCP ACK,如果续约成功则返回新的租期给主机;如果DHCP server不允许主机继续使用IP,则DHCP ACK应答会告诉主机。申请失败后主机继续使用该IP,直到7/8时主机再次发送DHCP request请求,如果失败则该地址被释放。

HDCP与PXE

通过DHCP server和PXE server(Pre-boot Execution Environment)、TFTP server可以做到批量安装操作系统。

主机启动是通过BIOS读取MBR(Master Boot Record)来启动GRUB -> 通过GRUB加载内核、initramfs文件 -> 再由内核启动初始化操作系统。所以将PXE client放在BIOS里面,BIOS将PXE client调入内存,通过PXE client与PXE server传输数据和执行指令可以完成操作系统的自动安装

PXE安装过程

  1. 配置DHCP的next-server指向PXE server的地址,再配置filename指向启动文件pxelinux.0
  2. 主机拿到IP地址的同时也会收到PXE server的IP地址和启动文件pxelinux.0路径,主机的PXE client通过TFTP下载pxelinux.0并执行,拿到pxelinux.cfg,该配置文件有内核、initramfs的路径。
  3. PXE client读取配置文件后逐个请求,完成安装后重启并从硬盘启动操作系统。

如果需要一些定制化的配置可以使用kickstart配置文件。

学习自:
《趣谈网络协议》刘超
《图解TCP/IP》
《图解HTTP》
《网络是怎样连接的》

与DHCP和PXE是怎么工作的相似的内容:

DHCP和PXE是怎么工作的

dhcp(Dynamic Host Configuration Protocol):配置一段共享IP地址,为新上线的机器分配IP地址,回收下线机器的IP地址。 正常情况下主机(DHCP client)和DHCP server交互通过四个数据包完成IP的配置,分为DHCP Discover、DHCP

解密网络通信的关键技术(下):DNS、ARP、DHCP和NAT,你了解多少?

本文探讨了动态主机配置协议(DHCP)和网络地址转换(NAT)技术的工作原理和应用。DHCP通过简化IP地址配置过程实现了动态地址分配,而NAT则解决了IPv4地址紧缺问题。我们还介绍了DHCP中继代理和NAT中的网络地址与端口转换(NAPT)概念。然而,这些技术也存在一些限制,如无法主动建立连接和...

解密网络通信的关键技术(上):DNS、ARP、DHCP和NAT,你了解多少?

在当今互联网时代,我们每天都在与各种技术打交道。但你是否了解这些技术背后的关键角色?DNS域名解析、ARP协议、DHCP动态获取IP地址以及NAT网络地址转换,它们是网络通信的支柱。DNS帮助我们将域名转换为IP地址,ARP协议获取下一跳的MAC地址,DHCP协议动态分配IP地址,而NAT则将私有I...

Wireshark抓包分析理解DHCP协议及工作流程

文章详细描述了DHCP报文的封装格式和具体字段,包括操作类型、硬件地址类型、长度、随机数、标志位等,并对选项字段中的常见选项进行了解释。随后,文章列举了DHCP的八种报文类型,并解释了每种报文的含义和作用。 文章的核心部分是DHCP的工作流程,分为四个阶段:发现(Discover)、提供(Offe...

DHCP欺骗劫持与防御策略

DHCP欺骗劫持与防御策略 一、任务目的 掌握DHCP的欺骗原理与DHCP监听配置 二、任务设备、设施 ensp win10 VMware typora win7 三、任务拓扑结构图 四、基本配置 1.接口IP与默认路由配置(在这里同样可以使用ospf,加上反掩码效果一样) R1 system-vi

[转帖]一文看懂 .dockerignore

https://dhcp.cn/k8s/docker/dockerignore.html#dockerignore-%E8%AF%A6%E7%BB%86%E4%BB%8B%E7%BB%8D 一文看懂 .dockerignore 在 dockerfile 同级目录中创建名为 .dockerignore

Python3.10动态修改Windows系统(win10/win11)本地IP地址(静态IP)

一般情况下,局域网里的终端比如本地服务器设置静态IP的好处是可以有效减少网络连接时间,原因是过程中省略了每次联网后从DHCP服务器获取IP地址的流程,缺点是容易引发IP地址的冲突,当然,还有操作层面的繁琐,如果想要切换静态IP地址,就得去网络连接设置中手动操作,本次我们使用Python3.10动态地