Maybe some worked that way... This was probably before that (early-mid 1990s) and worked with shell-only systems and linux, possibly windows too. It took text-only dialup and translated the packets to ASCII. The utility monitored the serial port terminal application on the PC, converted the ASCII back to packets, and sent them to the networking stack. Networking requests on that network device would go to the utility for translation to ASCII and then streamed back to the serial port. On the shell server side with the real network connection, the utility would basically do the same thing, sending bits directly to open ports and intercepting inbounds on those ports sort of like a very stripped down NAT device.
It was all very nifty and probably one of the simplest (and stealthiest) ways to encapsulate tcp-ip to tunnel through any firewall on any port that happened to be open. I bet a smart programmer could re-write it in javascript and hang it on a website, providing a whole second network connection hidden within port 80 traffic, using the web server as a full-up network proxy server for unrestricted network access, all over port 80.
Windows and internet explorer sandboxing may make it hard to actually USE such a virtual network connection, but less secure apps and operating systems shouldn't have any problems redirecting the input/output to and from applications through this virtual network driver. Nobody dials directly into modem banks for unix shell access anymore, but it would be just as fun and a lot faster than tcp-ip over email or tcp-ip over carrier pigeon.