My understanding is that packets sent from computers behind the same router to an external address will have the same public IP address from the perspective of the external service being contacted.
First question: I want to verify that although they share the same public IP, the port number attached to the public IP will be unique, correct? Its by having a unique port that two computers behind a home router (sharing the same public IP) can connect to a game server and can be uniquely identified (via unique ports), correct?
Second question: I was reading about how Quake did its networking and it appears old routers would sometimes change a computers public port mid-game causing clients to no longer match their port stored on the game server. John Carmack ended up having to generate a "qport" (a random number at connection time) which would uniquely identify the client even if their real port changed. Is this still necessary?
TL;DR The ultimate point of this post is to verify that I can reliably use a clients IP address and port to uniquely identify them on the server. I'm wanting to make sure two home computers sharing the same router (and thus same public IP) appear unique due to them each getting a unique public port.