2012-08-06 8 views
11

DNS-SD를 통해 서비스가 검색되면 해당 호스트의 주소가 정확히 어떻게 결정되며 시간/오버 헤드가 훨씬 많이 걸립니까?mDNS가 주소를 정확히 해석하는 방법은 무엇입니까?

또한 JmDNS 또는 Bonjour를 사용하는 경우 serviceFoundserviceResolved에 대한 콜백이 있습니다. 특정 서비스를 게시하는 장치의 IP 주소에 관심이 있다면 serviceFoundserviceResolved을 모두 통과하는 것보다 주소를 가져 오는 방법이 더 빠르고 효율적입니까?

답변

23

DNS-SD

덕분 특정 멀티 캐스트 어드레스로 UDP를 통해 DNS 패킷을 송신함으로써 멀티 캐스트 DNS 작동 (MDNS)를 사용한다. 네트워크의 모든 MDN 가능 호스트도이 주소를 수신합니다. 그것은 UDP를 사용하므로 오버 헤드가 매우 낮습니다. 또한 클라이언트는 광범위한 캐싱을 사용하여 네트워크의 채터가 최소로 유지되도록 설계되었습니다.

서비스 검색은 두 단계 프로세스입니다. 첫 번째 단계는 특정 서비스를 제공하는 모든 호스트의 이름을 찾는 것입니다 (예 : 인쇄). 이것은 아직 당신에게 IP 주소를주지 않을 것이고 대신에 그것은 당신에게 mdns 이름 (.local으로 끝남)을 제공합니다. 이는 IP가 변경 될 수 있기 때문입니다. 반면 이름은 변경되지 않습니다.

서비스 검색의 두 번째 단계는 mdns보다 호스트의 .local 이름을 확인하는 것입니다. 너는 foo.localfoo.local 인 멀티 캐스트를 통해 패킷을 볼 것이며, IP 주소, 포트 번호 및 기타 정보와 함께 브로드 캐스트를 통해 응답합니다.

+0

이 쿼리에 도움주세요. http://stackoverflow.com/questions/40662608/service-discovery-using-dns-sd – Daemon