How does BitTorrent work with only outbound connections?

Solution 1:

As far as I know, It works using reverse connections - basically, your client does an outgoing connection which is kept open by the remote machine and they pump data through that same connection.

If everyone used this and no one had ports setup, it would most likely fail. When I have used Bittorent with ports disabled, I get horrendous speeds, but it does work which is why I think it works like this.

Solution 2:

BitTorrent works using P2P connection. Therefore there must be a way to direct connecting to peer. As you know, NAT breaks P2P to working. But there is some solution for this to works. Most (as I know all) is based on STUN protocol.

Each client get its public IP and temporary port number (UDP) using STUN server. STUN server helps client to detect presence of NAT and detecting public ip + temporary port number (assigned by NAT). Then client tries to establish a direct connection to other peer using punching hole technique (see wikipedia).

If you enabled UPnP also there is another solution too.

For more information see NAT Traversal on wikipedia.