DNS đa tuyến – Wikipedia

Trong mạng máy tính, giao thức DNS đa hướng ( mDNS ) phân giải tên máy chủ thành địa chỉ IP trong các mạng nhỏ không bao gồm máy chủ tên cục bộ. Đây là một dịch vụ cấu hình không, sử dụng các giao diện lập trình, định dạng gói và ngữ nghĩa hoạt động giống như Hệ thống tên miền unicast (DNS). Mặc dù Stuart Cheshire đã thiết kế mDNS như một giao thức độc lập, nhưng nó có thể hoạt động cùng với các máy chủ DNS tiêu chuẩn. [1]

Giao thức mDNS được xuất bản dưới dạng RFC 6762, sử dụng các gói Giao thức gói dữ liệu người dùng đa tuyến IP (UDP) và được triển khai bởi Apple Bonjour và các gói phần mềm Avahi mã nguồn mở. Android chứa một triển khai mDNS. [2] mDNS cũng đã được triển khai trong Windows 10, nhưng việc sử dụng nó bị giới hạn trong việc khám phá các máy in được nối mạng. [3]

mDNS có thể hoạt động cùng với DNS Service Discovery (DNS-SD), một số 0 đồng hành -Kiểm soát cấu hình được chỉ định riêng trong RFC 6763. [4]

Tổng quan về giao thức [ chỉnh sửa ]

Khi máy khách mDNS cần giải quyết tên máy chủ, nó sẽ gửi một thông báo truy vấn đa hướng IP yêu cầu máy chủ lưu trữ có tên đó để xác định chính nó. Máy mục tiêu đó sau đó sẽ gửi tin nhắn bao gồm địa chỉ IP của nó. Tất cả các máy trong mạng con đó sau đó có thể sử dụng thông tin đó để cập nhật bộ đệm mDNS của chúng.

Bất kỳ máy chủ lưu trữ nào cũng có thể từ bỏ yêu cầu của mình đối với một tên miền bằng cách gửi gói phản hồi có thời gian tồn tại (TTL) bằng 0.

Theo mặc định, mDNS chỉ và độc quyền giải quyết các tên máy chủ kết thúc bằng .local tên miền cấp cao nhất (TLD). Điều này có thể gây ra sự cố nếu tên miền đó bao gồm các máy chủ không triển khai mDNS nhưng có thể được tìm thấy thông qua máy chủ DNS unicast thông thường. Giải quyết các xung đột như vậy đòi hỏi các thay đổi cấu hình mạng vi phạm mục tiêu cấu hình không.

Cấu trúc gói [ chỉnh sửa ]

Tin nhắn mDNS là gói UDP đa hướng được gửi đến các vị trí sau:

Cấu trúc tải trọng dựa trên định dạng gói DNS unicast, bao gồm hai phần, tiêu đề và dữ liệu. [5]

Tiêu đề giống hệt với tiêu đề được tìm thấy trong DNS unicast, như là các phần phụ trong phần dữ liệu: truy vấn, câu trả lời, máy chủ tên có thẩm quyền và các bản ghi bổ sung.

Số lượng bản ghi trong mỗi phần phụ khớp với giá trị của trường * COUNT tương ứng trong tiêu đề.

Truy vấn [ chỉnh sửa ]

Định dạng dây cho các bản ghi trong phần truy vấn được sửa đổi một chút từ DNS unicast, thêm một trường một bit. [1]

Phần truy vấn mDNS lĩnh vực
Trường Mô tả Bit dài
QNAME Tên của nút mà truy vấn liên quan đến Biến
QTYPE Loại truy vấn, tức là loại RR cần được trả lại trong các phản hồi. 16
UNICAST-RESPONSE Cờ Boolean cho biết liệu có đáp ứng unicast hay không 1
QCLASS Mã lớp, 1 a.k.a. "IN" cho các mạng Internet và IP 15

Giống như trong DNS unicast, trường QNAME bao gồm một loạt các trường con chiều dài / giá trị được gọi là "nhãn". Mỗi nhãn đại diện cho một trong các chuỗi con được phân tách bằng dấu chấm trong một tên miền đủ điều kiện (FQDN). Danh sách được kết thúc bởi một byte đơn, đại diện cho "gốc" của DNS.

Trường UNICAST-RESPONSE được sử dụng để giảm thiểu các chương trình phát sóng không cần thiết trên mạng: nếu bit được đặt, người trả lời NÊN gửi phản hồi trực tiếp đến nút yêu cầu thay vì phát phản hồi tới toàn bộ mạng.

Trường QCLASS giống hệt với trường được tìm thấy trong DNS unicast.

Bản ghi tài nguyên [ chỉnh sửa ]

Tất cả các bản ghi trong câu trả lời, máy chủ tên có thẩm quyền và phần bản ghi bổ sung có cùng định dạng và được gọi chung là "Bản ghi tài nguyên" (RR) .

Bản ghi tài nguyên trong mDNS cũng có định dạng chung được sửa đổi một chút từ DNS unicast:

Các trường Bản ghi tài nguyên mDNS
Trường Mô tả Bit dài
RRNAME Tên của nút mà bản ghi liên quan đến Biến
RRTYPE Loại Bản ghi tài nguyên 16
CACHE-FLUSH Cờ Boolean cho biết liệu các bản ghi lưu trữ đã lỗi thời có nên bị xóa hay không 1
RRCLASS Mã lớp, 1 a.k.a. "IN" cho các mạng Internet và IP 15
TTL Khoảng thời gian (tính bằng giây) mà RR nên được lưu vào bộ nhớ cache 32
RDLENGTH Số nguyên biểu thị độ dài (tính bằng octet) của trường RDATA 16
RDATA Dữ liệu tài nguyên; cấu trúc bên trong thay đổi theo RRTYPE Biến

Bit CACHE-FLUSH được sử dụng để chỉ thị cho các nút lân cận rằng bản ghi sẽ ghi đè lên, thay vì được thêm vào, bất kỳ mục được lưu trong bộ nhớ cache hiện có nào cho RRNAME và RRTYPE này.

Các định dạng của các trường RDATA giống như các định dạng được tìm thấy trong DNS unicast. Tuy nhiên, DNS Service Discovery (DNS-SD), trường hợp sử dụng phổ biến nhất cho mDNS, chỉ định sửa đổi nhỏ cho một số định dạng của chúng (đáng chú ý là các bản ghi TXT).

Ví dụ [ chỉnh sửa ]

Cố gắng ping máy chủ appletv.local sẽ khiến máy tính của mDNS phát đa phương tiện sau gói:

 00 00 ID giao dịch 00 00 Cờ 00 01 Số câu hỏi 00 00 Số câu trả lời 00 00 Số lượng hồ sơ tài nguyên thẩm quyền 00 00 Số lượng hồ sơ tài nguyên bổ sung 07 61 70 70 6c 65 74 76 "appletv" 05 6c 6f 63 61 6c "cục bộ" 00 Kẻ hủy diệt 00 01 Loại (Bản ghi) 00 01 Lớp 

Máy chủ appletv.local sẽ phản hồi bằng cách đa tuyến hóa gói phản hồi mDNS của nó. Ví dụ:

 00 00 84 00 00 00 00 01 00 00 00 02 07 61 70 70 6c 65 74 76 05 6c 6f 63 61 6c 00 00 01 80 01 00 00 78 00 00 04 99 6d 07 5a c0 0c 00 1c 80 01 00 00 78 00 00 10 xu 80 00 00 00 00 00 00 02 23 32 ff phong b1 21 52 c0 0c 00 2f 80 01 00 00 78 00 00 08 c0 0c 00 04 40 00 00 08 

Trong tiêu đề của nó, các trường khác không là Cờ từ (84 00), ANCOUNT từ (00 01) và ARCOUNT từ (00 02). Dữ liệu lại bắt đầu với FQDN (hex 07 61 70 70 6c 65 74 76 05 6c 6f 63 61 6c 00 cho appletv.local), theo sau là thông tin DNS của máy chủ đó:

  • mã loại địa chỉ A / IPv4 (hex 00 01),
  • mã lớp IPv4 (hex 80 01),
  • IPv4 TTL (hex 00 00 78 00 trong 30720 giây),
  • Độ dài IPv4 (hex 00 04),
  • bốn byte địa chỉ IPv4 (hex 99 6D 07 5A hoặc 153.109.7.90 trong ký hiệu thập phân rải rác),
  • offset FQDN (hex C0 0C cho byte 12), [19659077] mã loại địa chỉ AAAA / IPv6 (hex 00 1C),
  • mã lớp IPv6 (hex 80 01),
  • IPv6 TTL (lại là hex 00 00 78 00),
  • độ dài IPv6 ( hex 00 10),
  • 16 byte địa chỉ IPv6 (hex FE 80 00 00 00 00 00 02 23 32 FF FE B1 21 52),
  • offset FQDN (hex C0 0C cho byte 12), [19659077] mã loại NSEC (hex 00 2F),
  • mã lớp NSEC (hex 80 01),
  • NSEC TTL (lại là hex 00 00 78 00),
  • độ dài NSEC (hex 00 08, đối với bản ghi phần tên 8 byte) và
  • khối 8 NSEC và byte bitmap (hex C0 0C 00 04 40 00 00 08)

Xem thêm [ chỉnh sửa ] [Năm19659095] Tài liệu tham khảo [ chỉnh sửa ]

Liên kết ngoài [ chỉnh sửa ]