当主机发送 DHCP Discover(端口 67,UDP)时,为什么所有主机(DHCP 服务器除外)都不回复 ICMP“端口不可达”消息。这会导致大量无用数据通过网络。
答案1
这会导致大量无用数据通过网络。
嗯,这就是他们不回复的原因。
这是在RFC 1122(“互联网主机的要求——通信层”),第3.2.2,并且评论中特别指出了UDP广播是原因:
接收以下信息时不得发送 ICMP 错误消息:
- ICMP 错误消息,或
- 发往 IP 广播或 IP 多播地址的数据报,或
- 作为链路层广播发送的数据报,或
- 非初始片段,或
- 源地址未定义单个主机的数据报——例如零地址、环回地址、广播地址、多播地址或 E 类地址。
讨论:
这些规则将防止主机响应广播数据报返回 ICMP 错误消息而导致的“广播风暴”。例如,广播到不存在端口的 UDP 段可能会触发来自所有没有该目标端口客户端的机器的 ICMP 目标不可达数据报洪流。在大型以太网上,由此产生的冲突可能会导致网络在一秒钟或更长时间内无法使用。
IPv4 DHCP“发现”数据包同时匹配第 2 个和第 3 个条件。