9/01/2014

uPnP/DNLA/Avahi/Bonjour

1. Zero Configuration Networking(ZeroConf) 

zeroconf는 TCP/IP기반에서 사용가능한 network를 자동으로 만들어주는 기술의 집합을 말하며, 3가지의 핵심기술은 다음과 같다.
  1. automatic assignment of numeric network addresses for networked devices
  2. automatic distribution and resolution of computer hostnames
  3. automatic location of network services, such as printing devices.
상위내용을 간단히 번역하면 다음과 같다.
  1. network address의 주소 자동할당
  2. 컴퓨터호스트이름을 배포와 해석 
  3. 네트워크서비스의 자동위치 (프린터서버 처럼 자동검색) 

자세한 내용은 아래 참고
  https://en.wikipedia.org/wiki/Zero-configuration_networking


2. Window의 UPnP(Universal Plug and Play)

UPnP에서 사용되는 SSDP는 Window XP에서 사용되었다고 하며, 상위 Zeroconf를 보면 대충 구성의 흐름을 알수가 있다.
SSDP기반으로 간단한 프로토콜이지만 DDOS 공격 등 문제점으로 현재 다른 Zeroconf기능을 사용하는 추세이다.

TCP기반으로 HTTP기반으로 XML와 SOAP/HTML등 구성을 볼수 있다.

UDP기반이며 Multicast를 이용하여 이를 구성하고 통신한다.

  • HTTPMU ( HTTP Multicast)
  • HTTPU ( HTTP UDP)

  • Protocol 구성 
1. addressing
2. discovery
3. description
4. control
5. eventing
6. presentation


  https://en.wikipedia.org/wiki/Universal_Plug_and_Play
  https://en.wikipedia.org/wiki/Simple_Service_Discovery_Protocol
  https://en.wikipedia.org/wiki/Internet_Gateway_Device_Protocol
  https://hackaday.com/tag/upnp/

UPNP Spec
  http://www.upnp.org/upnp-resources/upnp
  https://openconnectivity.org/developer/specifications/upnp-resources/upnp

UPNP 한글설명 및 자료
  http://onecellboy.tistory.com/2
  http://talag.blog.me/70032091293

UPNP구조
  https://www.slideshare.net/701vivek/upnp-f

UPNP의 PTP 와 Multicast
  https://embeddedinn.wordpress.com/tutorials/upnp-device-architecture/

UPNP관련 자료
  https://blog.naver.com/kittenjun/18249127

UPNP 관련 다이어그램
  https://www.artima.com/spontaneous/upnp_digihome2.html

UPNP 사용법
  https://blog.djjproject.com/85
  https://blog.djjproject.com/309
  https://superuser.com/questions/1240504/upnp-device-detection
  https://stackoverflow.com/questions/18363833/how-can-i-list-upnp-server-renderer-in-command-line-console-mode-on-linux

2.1 SSDP(Simple Service Discovery Protocol)

UPNP의 한 종류로 아래와 Multicast 기반의  두가지 메소드를 볼수가 있다.
  1. NOTIFY/HTTP :  multicast group에  서비스정보를 설정 or 철수 
  2. M-SEARCH/HTTP:  Client는 가능한 서비스를 찾기 원해  찾음 

항상 주의해서 봐야할 곳은 멀티캐스트 주소포트 UDP/TCP
  • IPv4 Multicast Address: 239.255.255.250
  • UDP Port: 1900
2번 후 multicast가 아닌 unicast로 HTTP로 응답

sudo apt install minissdpd

  https://en.wikipedia.org/wiki/Simple_Service_Discovery_Protocol
  https://wiki.wireshark.org/SSDP
  https://en.wikipedia.org/wiki/Internet_Gateway_Device_Protocol
  https://onecellboy.tistory.com/287


SSDP (Upnp)
  http://www.packetinside.com/2010/06/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%ED%8A%B8%EB%9E%98%ED%94%BD%EC%97%90%EC%84%9C-%EB%A7%8E%EC%9D%B4-%EB%B3%B4%EC%9D%B4%EB%8A%94-ssdp-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C%EC%9D%98-%EC%A0%95%EC%B2%B4%EB%8A%94.html

2.2 DLNA

minidlna 사용법
  https://help.ubuntu.com/community/MiniDLNA
  https://blog.djjproject.com/257

  https://www.cnx-software.com/2016/08/16/setup-a-dlna-upnp-server-in-linux-for-smoother-videos-streaming-with-kodi/

추후 다시 DLNA 하게 된다면 그때 다시 정리

  http://rakuraku.tistory.com/46
  http://blog.naver.com/PostView.nhn?blogId=bit4rain&logNo=40149727745&parentCategoryNo=&categoryNo=&viewDate=&isShowPopularPosts=false&from=postView

2.3 WS-Discovery

Multicast Address: 239.255.255.250
Port: 3702


3. Zeroconf의 주요 구현물 


3.1 Linux의 Avahi 

현재 Avahi가 UPNP를 지원하지는 않으며, UPNP가 가지고 있는 문제점으로 인하여 mDNS기술에 집중하고 있다고 한다.

  https://www.avahi.org/
  https://en.wikipedia.org/wiki/Avahi_(software)

Avashi 기본사용법
  https://onecellboy.tistory.com/287

나중에 자세히 안 다면 추후 추가

mDNS(multicast DNS)
  https://en.wikipedia.org/wiki/Multicast_DNS
  https://tools.ietf.org/html/rfc6762

3.2 Apple의 Bonjour 

추후 추가


4. 동작기능 확인 

 $ cat /etc/services |grep dns
mdns  5353/tcp   # Multicast DNS
mdns  5353/udp

$ cat /etc/services |grep 1900
ssdp            1900/tcp                # SSDP
ssdp            1900/udp                # SSDP


AVAHI 와 SSDP 서비스 확인
  https://www.gabrielemerli.com/?p=1807