Who ever has travelled using UMTS and EDGE/GSM may have noticed that Connections there are not very reliable. Under Linux and Mac OS X however, when the connection gets lost for a shorter period of time, at least not all sockets are released. Under Windows, it seems like as soon as the System notices that there is no internet connection, all the open sockets fail for some reason I dont really understand.
Anyway, losing a connection because the train stops exactly inside a dead spot and exactly 10 seconds longer than the TCP-Timeout is annoying. For Webbrowsing, your AJAX-Interfaces get totally confused, and your browser will tell you about timeouts. For Chatting, you will lose your online-status and at least ICQ may even swallow some of your messages, which confuses your OTR-Plugin if you use it.
Currently, I always use a compressing Socks-Proxy through a SSH-Connection – for the sake of privacy (encryption) and speed (since in a EDGE-Connection, full compression really can boost the speed). For chatting, I sometimes just log in to some remote computer via NX – which is good enough for Pidgin most of the time, and can resume sessions mostly – so does the “caching” for me in a very obscure way with a lot of overhead.
The encryption as such is a very desirable thing. I am not sure how good UMTS encrypts the traffic, but I wouldnt be surprised if it was already cracked – most people wont care about encryption.
Compression is a desirable thing when using EDGE or GSM, i.e. on slow connections. On HSUPA-Connections, compression mostly even slows down the connection speed and adds latency. So a software that determines the current connection speed and adapts its compression level automatically would be a nice thing.
Caching and keeping TCP-Connections alive transparently while automatically reconnecting on a lost connection is also a very desirable thing. Like in ICQ, cache the messages you send on your PC, and the messages others send on the remote machine and send them as soon as you get your connection back. Of course, this has some limits. There can still be Ping Timeouts on a protocol level. But at least for short connection-losses which assign a new IP-address you will keep your old IP address and can continue chatting. And for well-known Protocols like ICQ and IRC, it could be possible to add a transparent protocol-aware proxy which uses its knowledge about the protocol to keep the connection alive.
One could do all this through a virtual network interface, but this adds complexity without any real advantage. Socks5 is a very good protocol and every good client supports it natively. It can be run as a user and doesnt need any root-privileges.
Well, some of the functionalities I mentioned are already there in some crude form. For chats, there is the Quassel IRC Framework which one can use with BitlBee to connect to ICQ in theory. Automatically reconnecting after connection break is afaik possible with some SSH-Implementations (but I dont actually know), at least some VPN-Solutions should allow it.
But its pretty hard to get all this done – just for a few hours of travelling. Would be nice if there was such a software.