2

我正在使用 Microchip 的 TCP/IP 堆栈,并且我的设备的主机名没有被广播,尽管我可以使用其 DHCP 分配的 IP 访问它。

所以问题是,网络设备用来广播其主机名的协议是什么,以便当我看到网络中的设备列表时,我可以通过名称识别它?

是 NetBIOS 名称服务还是其他?提前致谢。

4

3 回答 3

6

为网络上的主机指定主机名的最与网络无关的方法是通过DNS,您的设备本身无法控制它,但一切都不会丢失。

在大多数环境中,DHCP 和 DNS 服务器是绑定的(Windows 网络中的 AD,Linux 上的 DNSMasq 等),因此您最好的选择是依赖这种行为。当您使用 DHCP 请求 IP 时,DHCP 协议允许您指定要使用的主机名,如果网络设置为允许由 DNS 服务器创建和维护 DNS 条目,您在通常会使用 DHCP 请求。

DHCP 参数称为“主机名”。此参数的网络协议文档位于RFC 2132中,并在此处进行了说明。

于 2010-01-19T15:25:03.123 回答
0

有支持此功能的 WINS(基于 NetBIOS)。

ZeroConf/Bonjour 提供“服务广告”协议,但我猜这不是你想要的。

在“普通”基于 IP 的网络中,名称解析将通过 DNS 层:DNS 服务器传播它们的数据库(当然,如果也有指示),但在这一层没有“广播”的概念。

于 2010-01-15T19:04:04.407 回答
0

我想你现在已经解决了这个问题,但我修改了 Microchip 堆栈中的 dchp.c 文件,并将以下内容添加到 _DHCPSend() 的选项部分。

// host name
i = strlen(AppConfig.NetBIOSName);
UDPPut(12);     //host name code
UDPPut(i);      //length
UDPPutString(AppConfig.NetBIOSName);

这对我有用。

于 2010-03-15T16:37:54.310 回答