A transparent IP over ICMP tunnel, encapsulating IP traffic inside ICMP echo packets. Unmodified applications can send their traffic via this channel, allowing it to look like ordinary ping traffic (echo packets).
The program is run on two hosts, one as client and one as server. Each side has a TUN device (tun0).
The client reads an IP packet from its tun0, wraps it inside an ICMP echo
packet, and sends it to the server. The server unwraps it and writes the
original packet to its own tun0. The reverse works similarly.
The client sends echo requests and the server sends echo replies, thus looking like standard ping traffic. These packets are told apart from actual ping calls by the identifier bytes within the echo packet structure.
The server only replies to requests, so if the server has outbound packets (for server intiated traffic), it queues them and the client polls on a timer (empty requests) so the server always has a request to reply into.