2012-08-06 41 views
11

Khi dịch vụ được phát hiện qua DNS-SD, địa chỉ của máy chủ đó được giải quyết chính xác như thế nào và có cần nhiều thời gian/chi phí hơn không?MDNS xác định chính xác địa chỉ như thế nào?

Ngoài ra, nếu tôi đang sử dụng JmDNS hoặc Bonjour, bạn có thể gọi lại cho cả hai số serviceFoundserviceResolved. Nếu tôi chỉ quan tâm đến địa chỉ IP của thiết bị xuất bản một dịch vụ nhất định, có cách nhanh hơn/hiệu quả hơn để nhận địa chỉ hơn là đi qua cả hai serviceFoundserviceResolved không?

Cảm ơn

Trả lời

23

DNS-SD sử dụng DNS đa hướng (MDNS) hoạt động bằng cách gửi gói DNS qua UDP tới địa chỉ phát đa hướng nhất định. Tất cả các máy chủ có khả năng mdns trong mạng cũng nghe địa chỉ này. Nó sử dụng UDP vì vậy, nó khá thấp. Ngoài ra, các khách hàng được thiết kế theo cách mà số lượng trò chuyện trên mạng được giữ ở mức tối thiểu, bằng cách sử dụng bộ đệm ẩn rộng rãi.

Khám phá dịch vụ là quy trình gồm hai bước. Bước đầu tiên là tìm tên của tất cả các máy chủ cung cấp một dịch vụ nhất định (ví dụ: in). Điều này sẽ không cung cấp cho bạn địa chỉ IP, thay vào đó nó cung cấp cho bạn tên mdns (kết thúc bằng .local). Điều này là do ip có thể có thể thay đổi, trong khi tên sẽ không.

Bước thứ hai trong khám phá dịch vụ là giải quyết tên .local của máy chủ lưu trữ qua mdns. Bạn yêu cầu qua multicast người foo.local là, foo.local sẽ thấy gói đó và phản hồi qua phát sóng với địa chỉ ip, số cổng và thông tin khác của nó.

+0

Vui lòng trợ giúp với truy vấn này http://stackoverflow.com/questions/40662608/service-discovery-using-dns-sd – Daemon

Các vấn đề liên quan