シナリオは次のとおりです。 autoipとmdns over rndis(USB経由のイーサネット)を使用してホストに接続されている複数のデバイスがあります。 USBで接続すると、PCはrndisデバイスを検出し、両端でIPv4アドレスを選択し、占有されていない場合は保持します。 。デバイスにはホスト名に一意のIDがあるため、PCはID342384734.localを使用してソケットを開くことができ、すべてが正常です。
これで、同時に接続されている2つのデバイスが169.254.42.42などの同じIPを選択することがあります。彼らは、異なるネットワーク上にあり、お互いを見ることができないので、不明です。衝突はありません。 PCは関係ありません。ただし、両方の.local名は同じIPアドレス169.254.42.42で解決されるため、ID1.localとID2.localに対して開かれたソケットは名前解決後に区別できないため、同じデバイスになります。
IPv6を使用するとこの問題は解決しますが、mdns要求に応答するインターフェイスを介してIPに接続するようにソケット()を教えるなど、IPv4の巧妙なソリューションはありますか?
ホストとデバイスは、avahi-daemonとavahi-autoipdを持つLinuxです。