Microchip社のTCP/IPスタックを使用していますが、DHCPで割り当てられたIPを使用してアクセスできますが、デバイスのホスト名はブロードキャストされていません。
問題は、ネットワークデバイスがホスト名をブロードキャストするために使用するプロトコルは何ですか。ネットワーク内のデバイスのリストを表示したときに、名前で識別できるようにするためです。
それはNetBIOSネームサービスか何か他のものですか?前もって感謝します。
Microchip社のTCP/IPスタックを使用していますが、DHCPで割り当てられたIPを使用してアクセスできますが、デバイスのホスト名はブロードキャストされていません。
問題は、ネットワークデバイスがホスト名をブロードキャストするために使用するプロトコルは何ですか。ネットワーク内のデバイスのリストを表示したときに、名前で識別できるようにするためです。
それはNetBIOSネームサービスか何か他のものですか?前もって感謝します。
ネットワーク上のホストのホスト名を指定する最もネットワークに依存しない方法は、デバイス自体が制御できないDNSを使用することですが、すべてが失われるわけではありません。
ほとんどの環境では、DHCP サーバーと DNS サーバーは関連付けられているため (Windows ネットワークの AD、Linux の DNSMasq など)、この動作に依存するのが最善の選択肢です。DHCP を使用して IP を要求すると、DHCP プロトコルにより、使用するホスト名を指定できます。ネットワークが DNS サーバーによって DNS エントリを作成および維持できるように設定されている場合は、通常、DHCP 要求が使用されます。
DHCP パラメータは「Hostname」と呼ばれます。このパラメータのネットワーク プロトコル ドキュメントはRFC 2132にあり、ここで説明されています。
この機能をサポートする WINS (NetBIOS ベース) があります。
「サービス広告」プロトコルを提供する ZeroConf/Bonjour がありますが、それはあなたが求めているものではないと思います。
「通常の」IP ベースのネットワークでは、名前解決は DNS レイヤーを経由します。DNS サーバーはデータベースを伝達しますが (もちろん指示があれば)、このレイヤーには「ブロードキャスト」の概念はありません。
これで解決したと思いますが、Microchip スタックの dchp.c ファイルを変更し、_DHCPSend() のオプション部分に次を追加しました。
// host name
i = strlen(AppConfig.NetBIOSName);
UDPPut(12); //host name code
UDPPut(i); //length
UDPPutString(AppConfig.NetBIOSName);
これは私にとってはうまくいきました。