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

三、新主机选择DHCP Offer(DHCP request)
为什么叫选择DHCP Offer?因为如果有多个DHCP server,他们都会发送DHCP Offer广播包,此时新主机(DHCP client)会收到多个包,通常会选择最先到达的DHCP Offer。选择好offer之后此时的客户端仍然没有IP地址,继续发送广播包,称为DHCP request。
- 设置MAC地址信息,设置IP信息(0.0.0.0和255.255.255.255),设置UDP信息
- 设置Boot request接受的DHCP offer中的IP地址、DHCP server的IP地址、以及要下一次收到ACK的广播或单播模式。
- 通过广播包告诉所有DHCP server,我接受了那个DHCP server的Offer,请其他DHCP server撤销提供的IP地址

四、最终确认(DHCP ACK)
DHCP server收到DHCP request后会使用广播或单播的模式发送一个ACK包作为最终确认,完成这一步新机器的IP地址就设置完成了。
- 组装MAC头,根据request要求用单播还是广播(Bootp flags:BROADCAST设1为广播,设0为单播),单播设置新机器的MAC地址,广播则仍然是
ff:ff:ff:ff:ff:ff,同理组装IP头,UDP头 - 组装应用层BOOTP头,包含要分配给主机的IP地址,主机网卡的MAC地址,以及子网掩码、网关、DNS、租期、续约时间等。

DHCP租约更新
通过以上内容我们知道DHCP分配的IP地址有租约一说,租期到了就需要收回地址,如果主机IP在租期到期后还需要继续使用,那么就要主动向DHCP server以单播的形式发送DHCP request来请求续租。
- 一般在租期过去1/2时发送请求DHCP request请求。
- 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安装过程
- 配置DHCP的
next-server指向PXE server的地址,再配置filename指向启动文件pxelinux.0 - 主机拿到IP地址的同时也会收到PXE server的IP地址和启动文件pxelinux.0路径,主机的PXE client通过TFTP下载pxelinux.0并执行,拿到pxelinux.cfg,该配置文件有内核、initramfs的路径。
- PXE client读取配置文件后逐个请求,完成安装后重启并从硬盘启动操作系统。
如果需要一些定制化的配置可以使用kickstart配置文件。

学习自:
《趣谈网络协议》刘超
《图解TCP/IP》
《图解HTTP》
《网络是怎样连接的》
DHCP和PXE是怎么工作的的更多相关文章
- DHCP和PXE
继续学习,Let's go!DHCP和PXE都是什么呢?如果非科班出身,可能一脸懵逼,好多东西需要去学习了,真的,继续学吧,付出不一定会有回报,不付出肯定就是等死了,呵呵! 一.DHCP 真正需要手动 ...
- 第4讲 | DHCP与PXE:IP是怎么来的,又是怎么没的?
第4讲 | DHCP与PXE:IP是怎么来的,又是怎么没的? linux 配置网络IP地址: 使用 net-tools: sudo ifconfig eth1 10.0.0.1/24 sudo ifc ...
- DHCP(动态主机配置协议)工作流程
一.DHCP的作用 我们先来看一下什么是DHCP,DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)它可以为客户机自动分配IP地址.子网掩码以及缺省网 ...
- CentOS6下DHCP服务(一)工作原理及安装配置说明
1.DHCP服务用途 DHCP是Dynamic Host Configuration Protocol的简写,DHCP服务器最主要的工作就是自动地将网络参数分配给网络中的每台计算机,让客户端的计算机在 ...
- DHCP服务+PXE自动安装系统
DHCP服务+PXE自动安装系统 DHCP安装 安装DHCP服务器 yum install dhcp -y 安装完dhcp默认无法启动,需要编辑配置文件设置分配地址范围等相关信息,服务器自身IP地址要 ...
- 4 (计算机网络) DHCP与PXE:IP是怎么来的,又是怎么没的?
如何配置 IP 地址? 那如何配置呢?如果有相关的知识和积累,你可以用命令行自己配置一个地址.可以使用 ifconfig,也可以使用 ip addr.设置好了以后,用这两个命令,将网卡 up 一下,就 ...
- [无人值守安装操作系统]__RHEL6__FTP+TFTP+DHCP+Kickstart+PXE
实验环境 1.实验平台:VMware Workstation 10 2.实验OS:RHEL6 3.服务器A: (1) 10.0.10.158 (2) DHCP/FTP/TFTP (3) 有可使用的yu ...
- linux dhcp搭建及pxe无人值守装机
DHCP动态主机配置协议:由IETF组织制定,用来简化主机ip地址分配管理可以自动分配的入网参数ip地址/子网掩码/广播地址默认网关地址DNS服务器地址 ----------------------- ...
- DHCP协议和PXE
在学习IP地址基本概念之后,需要了解到如果需要和其他机器通讯,我们就需要一个通讯地址,我们需要给网卡配置一个地址. 如何配置 IP 地址? 可以用命令行自己配置一个地址.可以使用 ifconfig,也 ...
- dhcp、tftp及pxe简介
DHCP: 全称:Dynamic Host Configuration Protocol 动态主机配置协议 DHCP配置内容: IP/Netmask Gateway DNS Server bootp ...
随机推荐
- 前台vue发送json格式,后台srpeingboot不能自动处理解决办法
使用HashMap解决,如下图
- charAt和substring方法的使用
charAt和substring方法的使用 一.charAt的相关应用 1.charAt方法 charAt截取单个字符,参数index范围从0开始,length-1截止. 2.语法 public ch ...
- 力扣 662 https://leetcode.cn/problems/maximum-width-of-binary-tree/
需要了解树的顺序存储 如果是普通的二叉树 ,底层是用链表去连接的 如果是满二叉树,底层用的是数组去放的,而数组放的时候 会有索引对应 当前父节点是索引i,下一个左右节点就是2i,2i+1 利用满二叉树 ...
- 配置http协议访问Harbor镜像仓库
解决http: server gave HTTP response to HTTPS client问题,此问题在上传与下载时均可能出现. 由于docker镜像拉取与推送服务使用的是https协议,但是 ...
- org.apache.hadoop.mapred.InvalidInputException: Input path does not exist: hdfs://localhost:9000/usr/local/spark/zytdemo
意思说在 hdfs://localhost:9000/usr/local/spark/zytdemo找不到响应的文件,我们可以分析的得到他并不是加载本地文件,而是区hdfs上查找. 这是由于我们在之前 ...
- 文心一言 VS 讯飞星火 VS chatgpt (65)-- 算法导论6.5 4题
四.在 MAX-HEAP-INSERT 的第 2行,为什么我们要先把关键字设为 -∞ ,然后又将其增加到所需的值呢? 文心一言: 在 MAX-HEAP-INSERT 算法的第二行将关键字设为 -∞,是 ...
- 代码随想录算法训练营第二天| LeetCode 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II
977.有序数组的平方 题目链接:https://leetcode.cn/problems/squares-of-a-sorted-array/ 文章讲解:https://programmercarl ...
- 【技术实战】Vue技术实战【五】
需求实战一 效果展示 代码展示 <template> <div class="home-component"> <div class="pr ...
- React错误: Can't resolve 'react-dom/client'
错误截图 解决方案 当你的react版本低于18时,但仍然报这个错误,可以采用如下方案 意外的发现当我采用上述方案时,我的React路由跳转时,页面不刷新的问题也解决了,很神奇,日后技艺精进再补充.
- Print, printf, println的区别
print 非格式,打印变量的值,不换行 printf 支持格式化输出,不换行 println 非格式,打印变量的值 ,换行