Private IP address space is defined in
RFC1918: Address Allocation for Private Internets.
The three address ranges reserved for private address space are:
10.0.0.0 - 10.255.255.255 (10/8 prefix)
172.16.0.0 - 172.31.255.255 (172.16/12 prefix)
192.168.0.0 - 192.168.255.255 (192.168/16 prefix)
These address spaces are special, in that they can be re-used over and over again by every private network. However, because of this, these address spaces are also unroutable.
What this means is that your router cannot know how to get to 10.1.1.1 -- because it could never know
which 10.1.1.1 you are trying to reach.
The work-around to this is
Network Address Translation (NAT).
NAT converts between public addresses and private addresses.
To connect to your friends machine, he is going to have to use NAT to map his private IP address to a public IP address.
Because of the shortage of public IP addresses, most NAT implementations allow you to map
many private IP addresses to
one public IP address. In these systems, each port on the public IP address can be assigned to a different private IP address.
So, your buddy should be able to configure his router to map port 5646 (for example) of his public IP address to one of his private IP addresses.