How does an ipfs node that doesn't accept incoming connections work?

So say I install ipfs on my laptop but haven’t port forwarded the ports on my modem required for it to accept incoming connections and that upnp is not available. How would said ipfs client connect to the peers on then network? How would it receive messages and requests from other ipfs nodes? I am aware that a solution is in place for this as as far as I know it is possible to runa an ipfs node without needing port forwarding.

In addition to this, as a side question, are there any other dificulties involved with creating a mobile ipfs full node to run on phones besides NAT traversal, which already seems to be solved, and battery usage?