BOOTP 是如何工作的?
先决条件:引导协议
BOOTP 协议是一种网络协议,BOOTP 的主要目标是从服务器中查找 IP 地址。它是为取代 RARP 而开发的。 BOOTP 旨在让系统在启动后发现它们需要什么才能函数运行。它使用一个中继代理来侦听 UDP 的 68 端口,这让本地网络通过使用标准 IP 路由来传输数据包,只允许一个 BOOTP 服务器来协助多个子网上的主机。后来,BOOTP 被称为 DHCP 的更先进和有效的协议所取代,它具有更大的灵活性和更多的选项。
在引导过程中,它用于创建网络连接。 BOOTP最初使用软盘,但很快就集成到网卡和主板中,这样就不需要外接驱动器,也可以启动初始网络连接,后来该过程被添加到主板和网卡的BIOS中,可以直接联网开机。
它是一种广播协议,因为它需要发送消息才能从网络中的主机获取资源或答案。 BOOTP 计划用于无盘系统,因为它们需要一种可以与服务器通信以获取其网络地址和其他一些信息(例如使用哪个操作系统)的协议。然后计算机通过 TFTP 下载操作系统。
BOOTP的工作
BOOTP客户端在启动时不知道自己的IP地址,也不知道BOOTP服务器的IP地址,所以它会在网络中广播一个携带其MAC地址的消息。这个通用广播消息被称为“BOOTREQUEST”,这个请求被发送到广播地址。然后,它被侦听 UDP 端口 67 的服务器拾取,在收到请求后,它通过将 IP 地址分配给客户端的 MAC 地址来处理它。它回复客户端的请求称为“BOOTREPLY”,其中包含网络信息并通过广播发送回客户端,并具有以下信息:
- 客户端的 IP 地址(ciaddr 和 yiaddr)、默认网关地址(giaddr)和子网掩码。
- BOOTP 服务器 (siaddr) 的主机名和 IP 地址。
- 包含引导映像的服务器的 IP 地址。
从 BOOTP 服务器获取数据后,它初始化 TCP/IP 堆栈并对其进行配置,然后连接到包含引导映像的服务器。最后,客户端加载图像并使用数据加载和启动其操作系统。
BOOTP 消息格式:
Bits | Description |
---|---|
0 – 7 | Opcode |
8 – 15 | Hardware type |
16 – 23 | Hardware address length |
24 – 31 | Hop count |
32 – 63 | Transaction ID |
64 – 79 | secs |
80 – 95 | Flags |
96 – 127 | Client IP |
128 – 159 | Your IP |
160 – 191 | Server IP |
192 – 223 | Gateway IP |
224 – 351 | Client hardware address (16 bytes) |
352 – 863 | Server hostname (64 bytes) |
864 – 1887 | Boot filename (128 bytes) |
1888 – 2400 | Manufacturer-specific information (64 bytes) |
结论:
- 它通过 BOOTP 服务器为主机分配 IP 地址。
- BOOTP 是 RARP 的继承者。
- 它使用IP和UDP。因此,它是可路由的。
- BOOTP 服务器保存一个包含 IP 地址、MAC 地址和其他信息的日志。
- 现在 BOOTP 已不再使用,因为它已被 DHCP 取代。