Может ли кто-нибудь объяснить разницу между туннелированием IP-данных с использованием пакетов ICMP и туннелированием данных TCP через ICMP?

Очевидно, я знаю, что это будет иметь отношение к различным уровням OSI, но что на самом деле делается на другом уровне?

Я немного понимаю общую концепцию туннелирования, но не "туннелирование IP или TCP через ICMP", что на самом деле происходит?

1 ответ1

0

Туннелирование 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).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .