Today I learned about uPnP.
I came across a blog post by Kevin Norman who talks about how his NAS punched its way through the local consumer router, exposing itself to the world. This sparked my attention, as how could it even do such a thing without human input? From what I remember with my time sitting in a networking class, you had to manually forward ports to allow a locally hosted website to be accessible from the public web. Ends up this isn't the case anymore with a technology called uPnP.
uPnP stands for Universal Plug and Play. It is a set of networking protocols built on top of TCP/IP stack. According to uPnP-hacks.com it was created back in the 1990s by Microsoft as a competing protocol to Sun's JINI. The main reason for it's development was to allow networking devices to attach themselves to networks in comparison to how a hot swappable hard drive can be added to your NAS box.
Some interesting use cases:
- Discover an xBox on the network.
- Allow your IP Webcam to be publicly accessible.
- Retrieve music and video from a media server.
- Allow smart home appliances to discover each other and share info.
- Enable syncing of local IoT devices
While going down this rabbit hole of discovery I came across one of my own favorite project uses uPnP for local discovery. WLED.