How does peer to peer networking work in video games. For example, if I wanted my friend to join my game why wouldn't I have to port forward. Surely they would have to send a network request to my router which means I would have to port forward (which isn't the case). Why doesn't this have to happen and how does it difference from having a dedicated server?