본문 바로가기

Software/Network

Device Discovery Protocol - mDNS(Multicast DNS)

Multicast DNS



1. 소개


Multicast Domain Name System(mDNS)는 로컬 네트워크 영역에서 설정없이(zero configuration) 호스트 이름을 찾기 위해서 사용하는 서비스이다. Unicast Domain Name System(DNS)와 유사한 프로그래밍 인터페이스 그리고 패킷을 사용한다. 소형 네트워크 환경에서 별도의 네임서버를 사용하지 않고 호스트를 찾을 수 있다.


mDNS는 멀티캐스트 기술을 이용한다. 애플의 Bonjour와 리눅스의 nss-mdns 서비스가 mDNS를 이용한다.




2. 프로토콜 개요


mDNS 클라이언트는 호스트 이름을 알아야 할 경우 IP 멀티캐스트 쿼리 메시지를 전송한다. 이때 자신의 호스트 이름과 IP 주소 등, 자신을 확인할 수 있는 정보들을 함께 전송한다. 멀티캐스트 채널에 있던 모든 호스트들은 이 정보를 수신해서 mDNS  캐쉬에 업데이트 한다.


패킷 구조를 제외하면 SSDP와 작동방식이 매우 유사함을 알 수 있다.




3. 패킷 구조


mDNS는 멀티캐스트 UDP 패킷이다.

  • MAC 주소는 01:00:5E:00:00:FB(IPv4), 33:33:00:00:00:FB(IPv6)을 사용한다.
  • IPv4 멀티캐스트 주소는 이며, IPv6 멀티캐스트 주소는 이다.
  • UDP 포트 을 사용한다.

mDNS는 DNS 패킷을 모델로 하고 있다. Header와 Data(DNS Section) 두 부분으로 구성된다.


     




  • ID(Transaction ID) : 클라이언트가 보낸 요청과 수신한 응답이 일치하는가의 확인을 위해 사용한다. 일종의 이다.
  • Flags : 패킷의 타입이다. "00 00"은 질의, "84 00"은 응답이다.
패킷의 Data(DNS Query Section) 시작 지점에 FQDN(Fully Qualified Domain Name) 형식의 도메인 이름이 들어간다. 그 뒤에 QTYPE과 QCLASS가 들어간다. 일반적인 호스트 주소일 경우 QTYPE은 1, 인터넷일 경우 QCLASS 1이다.

     


  • 질의 요청인 경우 패킷 데이터는 FQDN 주소와 QTYPE, QCLASS만 들어간다.
  • 응답인 경우, Type, Class, TTL, RDLength, Rdata의 값이 추가된다.


IPv4 응답에서 사용하는 패킷 Data의 구조이다.


Name 

 호스트 이름 

Type 

 QType 

Class 

 QClass 

TTL 

 Time To Live(초) 

RDLength 

 데이터 길이 IPv4 주소라면 00 04 

RData 

 IPv4 주소


참고 : http://www.firewall.cx/networking-topics/protocols/domain-name-system-dns/160-protocols-dns-query.html

반응형