HTTP Tunneling is a process used to transfer complex data between Java Applets/Applications and Servlets using just the HTTP protocol supported by all web servers. It has several advantages over direct socket connection: 1. It works with all web servers, even public web hosts which won't let you run your own separate server software. 2. It works through HTTP-only firewalls. 3. You can make use of the Servlet API and the powerful features present in existing servers without having to write your own. The disadvantages are: 1. It requires a bit more data to be transferred, enough for some HTTP headers as well as your own data. In most cases, this is not very significant. 2. It implies a "request/response" communication pattern, and is not very good at transferring spontaneous information from the server to the client.