zeroconf는 TCP/IP기반에서 사용가능한 network를 자동으로 만들어주는 기술의 집합을 말하며, 3가지의 핵심기술은 다음과 같다.
- automatic assignment of numeric network addresses for networked devices
- automatic distribution and resolution of computer hostnames
- automatic location of network services, such as printing devices.
- network address의 주소 자동할당
- 컴퓨터호스트이름을 배포와 해석
- 네트워크서비스의 자동위치 (프린터서버 처럼 자동검색)
자세한 내용은 아래 참고
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 구성
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 기반의 두가지 메소드를 볼수가 있다.
- NOTIFY/HTTP : multicast group에 서비스정보를 설정 or 철수
- M-SEARCH/HTTP: Client는 가능한 서비스를 찾기 원해 찾음
항상 주의해서 봐야할 곳은 멀티캐스트 주소와 포트 및 UDP/TCP
- IPv4 Multicast Address: 239.255.255.250
- UDP Port: 1900
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