DHCP

概要

  • Dynamic Host Configuration Protocol
  • BOOTPを拡張したプロトコル
  • 使用ポートは67/udp(bootps), 68/udp(bootpc)
  • bootpsはDHCPサーバ,bootpcはクライアントが使用

フロー

  1. クライアント→サーバ「DHCP DISCOVER」を送信
  2. クライアント←サーバ「DHCP OFFER」を送信
  3. クライアント→サーバ「DHCP REQUEST」を送信
  4. クライアント←サーバ「DHCP ACK」を送信

宛先とか

  • DISCOVER,REQUEST(クライアント→サーバ)
    • 宛先MAC:broadcast
    • 送信元MAC:クライアント
    • 宛先IP:255.255.255.255
    • 送信元IP:0.0.0.0
  • OFFER,ACK(サーバ→クライアント)
    • 宛先MAC:broadcast
    • 送信元MAC:サーバ
    • 宛先IP:255.255.255.255
    • 送信元IP:サーバ

トランザクションIDによってクライアントは識別されるので通信が可能)

パケットフォーマット

   0                   1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     op (1)    |   htype (1)   |   hlen (1)    |   hops (1)    |
   +---------------+---------------+---------------+---------------+
   |                            xid (4)                            |
   +-------------------------------+-------------------------------+
   |           secs (2)            |           flags (2)           |
   +-------------------------------+-------------------------------+
   |                          ciaddr  (4)                          |
   +---------------------------------------------------------------+
   |                          yiaddr  (4)                          |
   +---------------------------------------------------------------+
   |                          siaddr  (4)                          |
   +---------------------------------------------------------------+
   |                          giaddr  (4)                          |
   +---------------------------------------------------------------+
   |                                                               |
   |                          chaddr  (16)                         |
   |                                                               |
   |                                                               |
   +---------------------------------------------------------------+
   |                                                               |
   |                          sname   (64)                         |
   +---------------------------------------------------------------+
   |                                                               |
   |                          file    (128)                        |
   +---------------------------------------------------------------+
   |                                                               |
   |                          options (variable)                   |
   +---------------------------------------------------------------+


xid:トランザクションID
ciaddr:クライアントIP
yiaddr:割り当てるIP
siaddr:サーバIP
giaddr:DHCPリレーエージェントIP
chaddr:クライアントMAC
options:サブネットマスクやらデフォルトGWやらDNSサーバやら