The goal of the project is essentially to make a customized VPN-like application. Just like in a normal VPN application, when you connect to the VPN server you can send and receive network packets using the IP address of the VPN server (and perhaps also access shared network drives) , but the biggest difference here is that you can not just connect to an open/filtered port as on a normal server! The VPN servers will be ordinary home or work computers that have firewalls and can be behind a NAT. You have to come with a solution to forward packets in such a way that these computers behind firewalls and NATs can act as VPN servers and make an easy to use application to connect to these VPN servers.