mDNS는 멀티캐스트 DNS로, 주로 LAN 내 호스트들이 전통적인 DNS 서버 없이 서로 탐색하고 통신할 수 있도록 하며, 사용되는 포트는 다음과 같습니다5353, DNS 프로토콜을 따르고 기존의 DNS 정보 구조, 문법, 리소스 레코드 유형을 사용합니다. 새로운 액션 코드나 응답 코드도 명시되지 않습니다. LAN에서는 기기와 기기가 통신하기 전에 서로의 IP 주소를 알아야 하며, 대부분의 경우 기기의 IP는 고정 IP가 아니라 DHCP 프로토콜을 통해 동적으로 할당된 IP 주소입니다. 기기를 발견하는 방법은 MDNS를 통해 기기의 기술을 보여주는 것입니다. 예를 들어, 사물인터넷 기기와 앱 간의 통신이 특정 정보를 전송하고, 관심 있는 장치가 응답하여 LAN 기기를 발견합니다. 물론 mDNS는 이보다 더 강력합니다.
서비스 등록
먼저, 새로운 .NET Core 3.1 프로젝트를 만들고 nuget 명령어를 사용해 다음 패키지를 참조하세요:
현재 서비스 이름과 주소는 방송을 통해 다음 코드로 확인됩니다:
서비스 발견
.NET/C# 코드를 통해 달성할 수 있는 서비스 발견은 다음과 같습니다:
또한 모든 방송을 수신하기 위해 서비스 디스커버리를 활성화할 수 있으며, 코드는 다음과 같습니다:
서버: CentOS 리눅스 릴리스 7.8.2003 (코어), avahi 및 avahi-tools 도구를 설치하면 서비스를 탐색할 수 있으며, 설치 명령은 다음과 같습니다:
avahi-daemon은 Linux 운영체제에서 실행되며 클라이언트 머신에서 네트워크 기반 Zeroconf 서비스에 대한 조회를 구현하는 서비스 데몬입니다. 이 서비스는 Zeroconf 네트워크를 위한 DNS 서비스 탐색과 DNS 멀티캐스트 명세를 구현할 수 있습니다. 사용자 프로그램은 Linux D-Bus 메시징을 통해 발견된 네트워크 서비스와 자원에 대한 알림을 받습니다. 이 데몬은 사용자 프로그램 응답을 캐싱하여 응답으로 인한 네트워크 트래픽을 줄이는 데 도움을 줍니다. avahi-daemon.service 서비스를 다음 명령어로 실행하세요:
avahi-tools를 설치한 후 avahi-browse 명령어를 사용할 수 있습니다.
LAN 내 모든 MDNS 서비스를 다음 명령어로 확인할 수 있습니다:
지정된 서비스를 쿼리하기 위한 명령은 다음과 같습니다:
.NET Core 애플리케이션을 종료하고 다른 서버에서 서비스를 쿼리하면 다음과 같은 오류가 보고됩니다:
+ eth0 IPv4 테스트 _itsvse_discovery._tcp local 도메인 'local'에서 '_itsvse_discovery._tcp' 타입의 서비스 'test' 해결 실패: 타임아웃 도달
첨부된 소스 코드는 다음과 같습니다:
관광객 여러분, 이 게시물의 숨겨진 내용을 보고 싶으시다면 부탁드립니다 회답
(끝)
|