Ответ
DHCP (Dynamic Host Configuration Protocol) автоматически назначает IP-адреса и другие сетевые параметры устройствам в сети. Работает по модели клиент-сервер через UDP (порты 67/сервер, 68/клиент).
Основные этапы:
- DISCOVER — клиент ищет сервер (broadcast).
- OFFER — сервер предлагает IP.
- REQUEST — клиент подтверждает выбор.
- ACK — сервер фиксирует аренду.
Пример кода (упрощённый DHCP-клиент на Go):
package main
import (
"net"
"log"
)
func main() {
conn, err := net.ListenPacket("udp4", ":68")
if err != nil {
log.Fatal(err)
}
defer conn.Close()
buf := make([]byte, 1024)
n, _, err := conn.ReadFrom(buf)
if err != nil {
log.Fatal(err)
}
log.Printf("Received DHCP packet: %x", buf[:n])
}
Нюансы:
- Аренда адресов (lease time).
- Резервирование IP по MAC.
- Опции (DNS, шлюз, маска).