Туннелирование IP-данных с использованием ICMP-пакетов
ICMP-пакеты используются для инкапсуляции IP-дейтаграмм. Эта дейтаграмма IP может представлять собой: пакет UDP, часть сегмента TCP, часть блока данных протокола SCTP/GRE/MPLS или любой другой протокол выше уровня 2.
Туннелирование данных TCP через ICMP
Пакеты ICMP используются для инкапсуляции сегментов TCP или дейтаграмм IP, которые состоят только из сегментов TCP.
Эхо-запрос ICMP позволяет отправителю указать полезную нагрузку. "Взлом" ICMP может, например, использовать этот факт и поместить пакет TCP в полезную нагрузку. Что-то на принимающей стороне должно было бы знать это и играть в игру. Если вы проявите творческий подход к другим типам запросов ICMP, вы, вероятно, могли бы многое сделать.
Отличным примером изменения протокола в сторону, для которой он не предназначен, является iodine
(http://code.kryo.se/iodine/), который туннелирует IP через DNS-запросы.
(Примечание: обратите внимание, что в заголовке IP есть "поле протокола", которое определяет, какой протокол верхнего уровня транспортируется. TCP - это протокол № 6, GRE - это протокол № 47 и т.д. (Http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml).