My son asked me to explain port forwarding to him last night: he's trying to set up a Minecraft server on his laptop so that his friends can play on it, but he needed to give them his IP address, and this keeps changing.
As I struggled to explain, I realised that I didn't fully understand port forwarding myself. I could see exactly what his problem was, but even though I've been using the internet for 16 years, it had never occurred to me to really wonder how external computers can communicate with a computer that's inside a local network.
We've cracked the port forwarding problem now, after he found out how to do it on YouTube, and then talked me through configuring our router to forward requests to port 25565 to his server. It turns out that I did know what was going on after all: I'd just never got all the pieces properly together in my head before. Going through this exercise forced me to.
My son is still only eleven, and already I'm having to up my game to keep up with him.
One thing I don't understand: how did our router have an up to date list of possible games built into it? Is this coming from our ISP? Nearly all the games are ones we've never used, so it's unlikely it found out from our own computers.