Es scheint mir, dass viele der Probleme mit DNS, insbesondere Sicherheitsprobleme, die Ursache dafür haben, dass DNS über UDP implementiert wird; zum Beispiel muss der Responder nicht derjenige sein, von dem er sagt, dass er ist.
Ich kenne die Details des mDNS-Protokolls nicht (von denen ich annehme, dass es viel neuer ist als DNS), vielleicht kümmert es sich um diese Probleme in seiner Anwendungsebene. Kann mir das jemand etwas näher bringen?
Das "m" in mDNS steht für "Multicast". Eine mDNS-Abfrage ist eine normale DNS-Abfrage Multicast (alias Broadcast) an das lokale Subnetz. Jeder Host im Subnetz empfängt alle mDNS-Abfragepakete und antwortet auf die für seinen Hostnamen. Da es nicht möglich ist, eine TCP-Übertragung durchzuführen, konnten Sie mDNS nicht über TCP implementieren.
Es gibt jedoch einen grundlegenderen Punkt, mDNS ist bereits völlig unsicher. Wie Sie darauf hinweisen, kann jeder auf jede Anfrage antworten, so dass Sie ziemlich genau allen Hosts im Netzwerk vertrauen müssen. Das Wechseln zu TCP (wenn Sie könnten) würde dieses Problem nicht beheben.