Listen server port forwarding question

I am sort of confused about how you are supposed to implement a listen server in a non LAN environment. For example, let’s say I wanted to create a coop 2 player game. So one day PlayerA might want to host, the next PlayerB may want to host. From what I understand, the only way a given player can host a public game with a listen server architecture is if they have the correct port open on their router (7777) by default. However, I cant remember the last time I bought a game, and had to go into my router settings to change it ports so I could play the game, so I feel like I am missing something obvious. I guess my question is this, if people are using a listen server architecture for their games, how are they getting around the port forwarding problem so the user doesn’t have to adjust their router settings to host a public game.
Thanks!

Small update in case anyone else has this issue, apparently there are software libraries that can open up ports on your router. I have not tried this, but i just wanted to share in case anyone else had this question:

3 years later and here I am asking the same question you had. Thanks for posting that link- looks like a good lead.

If, however, anyone happened to both read this and know how to make UE4 plugins… Just sayin’- I’d pay good money for something that would just work out of the box and let me get back to messing around with blueprints.

this is one of the benefits of using steam… I am by no means an expert - I believe the tech you need is stuff like STUN, TURN ,ICE