Многоуровневая архитектура стека протоколов TCP ЯР делает возможной передачу трафика какого-либо типа поверх другого. Например, прикладные службы могут использовать в качестве протокола транспортного уровня TCP или UDP. В стандартных реализациях стека TCP/IP можно выделить четыре уровня.
Однако теоретически можно добавить ещё один уровень (над прикладными службами) и передавать произвольный трафик (как правило, это также трафик какой-либо прикладной службы) поверх прикладного.
Очевидно, программа для реализации описанного механизма должна иметьраспределённую архитектуру.
Задачи клиентской части:
o Ожидать соединения со стороны локального пользователя (по возможности, быть привязанной к интерфейсу 127.0.0.1)
o Упаковывать пользовательский трафик в трафик заданного типа и перенаправлять его серверной части (на другой конец туннеля).
Задачи серверной части:
o Ожидать соединения со стороны клиентской части
o Распаковывать трафик, отделяя от него информацию, связанную с работой туннеля
o Осуществлять взаимодействие с целевым сервером
Схема взаимодействия клиента с целевым сервером показана на следующем рисунке:
Реализации клиентской и серверной частей программы, выполняющей туннелирование, для различных ОС можно найти по адресу: http://www.nocrew.org/software/httptunnel.html