我知道这是 DHCP 过程:
- 发现:主机广播“DHCP发现”消息
- Offer : DHCP 服务器响应“DHCP offer”消息
- 请求:主机请求 IP 地址:“DHCP 请求”消息
- 确认:DHCP 服务器发送地址:“DHCP 确认”消息
我的问题是,如果发送计算机还没有 IP,DHCP 服务器如何知道谁发送了广播?
我知道这是 DHCP 过程:
我的问题是,如果发送计算机还没有 IP,DHCP 服务器如何知道谁发送了广播?
如果发送计算机还没有 IP,DHCP 服务器如何知道谁发送了广播?
服务器通常通过其 MAC 地址来识别客户端。但是,它可能会使用字段“客户端标识符”选项(如果存在)。
也可以看看:
发送计算机可通过其物理地址(MAC 地址)得知。
通过广播域发送的任何帧都在其 PDU 中设置了一些位,用于标识该域中的发送设备:MAC 地址。该地址是将消息传送到某个目的地(在本例中为 DHCP 客户端)所需的唯一地址。在这种特殊情况下,当广播消息被发送到 255.255.255.255 时,特殊的 ff:ff:ff:ff:ff:ff MAC 地址用于目的地,这意味着域中的所有设备都应该收到该消息。下表包含 DHCPDISCOVER 和 DHCPOFFER 消息的某些属性的值:
Attribute | DHCPDISCOVER | DHCPOFFER
-----------------+-------------------+-------------------
Source MAC | <Client MAC> | <Server MAC>
Destination MAC | ff:ff:ff:ff:ff:ff | <Client MAC>
Source IP | 0.0.0.0 | <Server IP>
Destination IP | 255.255.255.255 | 255.255.255.255
Transport | UDP | UDP
Source Port | 68 | 67
Destination Port | 67 | 68
当客户端发送 DHCPDISCOVER 消息时,广播域中的每个设备都会收到该消息,其中包含客户端自己的 MAC 地址作为源。该消息的接收设备之一是 DHCP 服务器,它反过来可能会以 DHCPOFFER 响应客户端的 MAC 地址,这就是客户端获取消息的原因。
如果广播域恰好也是一个冲突域(如 HUB),那么连接在该网络中的每个设备都会收到通过该网络发送的每条消息,并且除了拥有该消息的目标 MAC 地址的设备之外的所有设备都将默默地丢弃该消息。相反,如果网络被交换(或桥接),那么它是一个广播域而不是一个冲突域(两个设备之间的每一个成对的物理连接都是一个冲突域)。在这样的网络中,交换机或网桥了解 IP 协议以及地址解析协议 (ARP),这有助于设备记住在哪个端口中找到了原始 MAC 地址以及何时将消息发送到特定 MAC 地址,从而创建一个MAC地址映射-IP地址。
当 DHCP 服务器向已知 MAC 地址发送消息时,例如 DHCP 客户端的 MAC 地址,中间交换机或网桥确切地知道它们应该将消息传输到哪个端口,因为它们记得 DHCPDISCOVER(带有源 MAC 地址匹配当前消息的目的地)来自。在他们不记得的情况下,他们只是将消息发送到每个端口,类似于 HUB 的情况(例如,这是 ARP 中毒的目的)。