DHCP

动态主机配置协议(Dynamic Host Configuration Protocol)
通过 UDP 发送,UDP 封装在 BOOTP 里面。其实 DHCP 是 BOOTP 的增强版。也就是说,去抓包的话,很可能看到的名称还是 BOOTP 协议

租借 IP(主要功能)

  1. sequenceDiagram
  2. 客户机 -->> DHCP 服务器: DHCP Discover,拿着自己的 MAC 地址去广播
  3. DHCP 服务器 -->> 客户机: DHCP Offer,拿到对应的 MAC 地址,为 客户机 分配 IP
  4. 客户机 -->> DHCP 服务器: DHCP Request,选择一个 IP 地址,并广播
  5. DHCP 服务器 -->> 客户机: DHCP ACK,广播返回,表示自己接受客户机的选择
  6. Note over 客户机,DHCP 服务器: 续租的请求
  7. 客户机 -->> DHCP 服务器: DHCP Request,租期过去 50% ,向服务器更新配置
  8. DHCP 服务器 -->> 客户机: DHCP ACK,同意更新,并返回配置

通过 PXE 来安装操作系统

PXE, Pre-boot Execution Environment. 预启动执行环境。
PXE 协议分为客户端和服务器端,由于还没有操作系统,只能先把客户端放在 BIOS 里面。当计 算机启动时,BIOS 把 PXE 客户端调入内存里面,就可以连接到服务端做一些操作了。
首先,PXE 客户端自己也需要有个 IP 地址。因为 PXE 的客户端启动起来,就可以发送一个 DHCP 的请求,让 DHCP Server 给它分配一个地址。

  1. sequenceDiagram
  2. participant a1 as PXE 客户端
  3. participant TFTP Server
  4. a1 -->> DHCP Server: 我来了,IP 和操作系统啥都没有
  5. DHCP Server -->> a1: 给你个 IP 地址,还有启动文件 pxelinux.0 的位置
  6. a1 -->> TFTP Server: 给我启动文件 pxelinux.0
  7. TFTP Server -->> a1: 好,给你
  8. a1 -> a1: 执行 pxelinux.0
  9. a1 -->> TFTP Server: 给个 pxelinux.cfg 配置文件我要根据他来启动系统
  10. TFTP Server -->> a1: 给你配置文件里面有内核和 initramfs 的配置
  11. a1 -> a1: 读配置文件
  12. a1 -->> TFTP Server: 给我 Linux 内核
  13. TFTP Server -->> a1: 好的,给你
  14. a1 -->> TFTP Server: 给我 initramfs
  15. TFTP Server -->> a1: 好的,给你
  16. a1 -> a1: 启动 Linux 内核