What can you do if a firewall blocks all usual TCP/UDP connections to the Internet? There is one way to establish such a connection if the firewall allows recursive DNS requests to external DNS servers. It's called "DNS tunneling". The article explains how DNS tunneling works, and gives an idea how it can be implemented in pure Java.