DHCP
动态主机配置协议(Dynamic Host Configuration Protocol)
通过 UDP 发送,UDP 封装在 BOOTP 里面。其实 DHCP 是 BOOTP 的增强版。也就是说,去抓包的话,很可能看到的名称还是 BOOTP 协议
租借 IP(主要功能)
sequenceDiagram
客户机 -->> DHCP 服务器: DHCP Discover,拿着自己的 MAC 地址去广播
DHCP 服务器 -->> 客户机: DHCP Offer,拿到对应的 MAC 地址,为 客户机 分配 IP
客户机 -->> DHCP 服务器: DHCP Request,选择一个 IP 地址,并广播
DHCP 服务器 -->> 客户机: DHCP ACK,广播返回,表示自己接受客户机的选择
Note over 客户机,DHCP 服务器: 续租的请求
客户机 -->> DHCP 服务器: DHCP Request,租期过去 50% ,向服务器更新配置
DHCP 服务器 -->> 客户机: DHCP ACK,同意更新,并返回配置
通过 PXE 来安装操作系统
PXE, Pre-boot Execution Environment. 预启动执行环境。
PXE 协议分为客户端和服务器端,由于还没有操作系统,只能先把客户端放在 BIOS 里面。当计 算机启动时,BIOS 把 PXE 客户端调入内存里面,就可以连接到服务端做一些操作了。
首先,PXE 客户端自己也需要有个 IP 地址。因为 PXE 的客户端启动起来,就可以发送一个 DHCP 的请求,让 DHCP Server 给它分配一个地址。
sequenceDiagram
participant a1 as PXE 客户端
participant TFTP Server
a1 -->> DHCP Server: 我来了,IP 和操作系统啥都没有
DHCP Server -->> a1: 给你个 IP 地址,还有启动文件 pxelinux.0 的位置
a1 -->> TFTP Server: 给我启动文件 pxelinux.0 吧
TFTP Server -->> a1: 好,给你
a1 -> a1: 执行 pxelinux.0
a1 -->> TFTP Server: 给个 pxelinux.cfg 配置文件我要根据他来启动系统
TFTP Server -->> a1: 给你配置文件里面有内核和 initramfs 的配置
a1 -> a1: 读配置文件
a1 -->> TFTP Server: 给我 Linux 内核
TFTP Server -->> a1: 好的,给你
a1 -->> TFTP Server: 给我 initramfs
TFTP Server -->> a1: 好的,给你
a1 -> a1: 启动 Linux 内核