SendIP модуль icmp

  • 22 January 2010
  • taku

Для того чтобы разобраться в этой прекрасной программке приведу мануал

в частях icmp ipv4 tcp udp возможно позже появиться доп. информация оставшихся протоколов.

сама программа ставиться из репозитария или береться на просторах сети.

sendip — Send arbitrary IP packets

SYNOPSIS

sendip [-v] [-d data] [-h] [-f datafile] [-p module] [module options] hostname

OPTIONS

-d data

add this data as a string to the end of the packet Data can be: rN to generate N random(ish) data bytes; 0x or 0X followed by hex digits; 0

followed by octal digits; any other stream of bytes

-f datafile

read packet data from file

-h     print this message

-p module

load the specified module (see below)

-v     be verbose

Modules are loaded in the order the -p option appears.  The headers from each module are put immediately inside the headers from the previos model in the final packet.

For example, to embed bgp inside tcp inside ipv4, do sendip -p ipv4 -p tcp -p bgp ….

Modules available at compile time:

ipv4 ipv6 icmp tcp udp bgp rip ntp

Часть первая SendIP модуль icmp

Сперва немного теории, рассмотрим протокол ICMP, используеться для передачи сообщений об ошибках, возникающих в сети при обмене информацией. Сообщения ICMP можно условно разделить на парные и непарные. Парные сообщения состоят из двух компонентов – запрос (Request) и ответ (Reply). Сообщение типа ответ высылается станцией назначения только в ответ на полученное от источника сообщение типа запрос. К сообщениям такого типа относятся Echo Request/Reply. Особенно интересны непарные сообщения формируются они асинхронно при возникновении какой либо проблемы при передаче дейтаграммы, и передается в адрес источника данной дейтаграммы. К сообщениям подобного типа относятся сообщения Destination Unreachable и Source Quench. Ниже будут рассмотрены непарные сообщения.

Сообщения ICMP. Заголовки всех сообщений ICMP имеют примерно одинаковый формат. В четырех первых байтах заголовка сообщений ICMP размещаются поля TYPE, CODE и CHECKSUM.

В поле TYPE заголовка сообщений ICMP размещается код, который соответствует типу сообщения.

В поле CODE некоторых сообщений ICMP может быть размещен код дополнительной диагностической информации.

В поле CHECKSUM заголовка сообщений ICMP размещается контрольная сумма данного сообщения. Эта контрольная сумма вычисляется суммированием всех полей, начиная с поля TYPE. При вычислении контрольной суммы значение поля CHECKSUM полагается равным 0.

Сообщение Type 3 (Destination Unreachable) (цель недоступна) — принадлежит к непарным сообщениям ICMP. Это сообщение формируется в том случае, если запрошенный сетевой ресурс является недоступным для запрашивающей его станции.

В поле CODE сообщения Destination Unreachable размещается код, который соответствует типу запрошенного недоступного сетевого ресурса или конкретизирует причину, из-за которой этот ресурс недоступен в данном случае. Возможные значения поля CODE приведены в таблице:

CODE

Значение

0

Нет доступа (Network Unreachable)

1

Хост не доступен (Host Unreachable)

2

Протокол не доступен (Protocol Unreachable)

3

Порт недоступен (Port Unreachable)

4

Требуется фрагментация, но установлен флаг DF (не фрагментировать) (Fragmentation Need & DF set)

5

Отказ при маршрутизации Source route (Source Route Failed)

6

Неизвестна сеть адресата (Destination Network Unknown)

7

Неизвестен хост-адресат (Destination Host Unknown)

8

Хост-отправитель изолирован (Source Host Isolated)

9

Связь с сетью адресата запрещена административными мерами (Communication with destination Network Administratively Prohibited)

10

Связь с хостом-адресатом запрещена административными мерами (Communication with destination Host Administratively Prohibited)

11

Сеть адресата недоступна для заданного типа обслуживания (TOS) (Network Unreachable for type of service)

12

Хост-адресат недоступен для заданного типа обслуживания (TOS)(Host Unreachable for type of service)

Сообщения данного типа могут быть сформированы как станцией назначения (CODE=2 и 3), так и одним из промежуточных маршрутизаторов – шлюзов (CODE=0,1,6 и т.д.). При этом в качестве адреса источника должен быть указан IP адрес узла, который обнаружил проблему. Например, сообщение №1 — Host Unreachable может быть сформировано последним маршрутизатором, который пытается доставить сообщение до хоста по непосредственно подключенной сети. Для того, чтобы станция – источник смогла правильно интерпретировать диагностическое сообщение, в тело сообщения Destination Unreachable помещается заголовок и первые 8 байт исходной дейтаграммы.

Сообщение Type 11 (Time Exceeded) – (истекло время) принадлежит к непарным сообщениям ICMP. Это сообщение должно быть сформировано в том случае, если в процессе передачи дейтаграммы истекло допустимое время её существования в сети или на хосте.

Значение поля CODE в сообщении Time Exceeded используется для уточнения причины, по которой дейтаграмма прекратила существование:

•  CODE=0 - время жизни (TTL) истекло во время передачи;
•  CODE=1 – истекло время сборки фрагментов.

Сообщение Type 4 (Source Quench) – (сдерживание источника) принадлежит к непарным сообщениям ICMP. Это сообщение должно быть сформировано в том случае, если в процессе передачи дейтаграммы возникла угроза перегрузки.

При получении от станции назначения или одной из промежуточных станций сообщения Source Quench, источник должен, используя специальные процедуры уменьшить скорость информационного обмена в указанном направлении.

При передаче этого сообщения в качестве адреса назначения должен быть использован адрес IP источника первичного сообщения. Для того, чтобы станция – источник смогла правильно интерпретировать диагностическое сообщение, в тело сообщения Destination Unreachable помещается заголовок и первые 8 байт исходной дейтаграммы.

Сообщение Type 5 (Redirect) – (изменение маршрута) принадлежит к непарным сообщениям ICMP. Это сообщение должно быть сформировано в том случае, если при получении дейтаграммы шлюз обнаруживает, что для её передачи был выбран неудачный маршрут. На рисунке приведен пример использования сообщения Redirect для изменения неверного маршрута.

Пример: хост А(192.168.10.100) отправляет пакет в направлении хоста В(192.168.18.201) используя для этого в качестве шлюза маршрутизатор gw1. После того, как маршрутизатор gw1 получает дейтаграмму, он определяет, что данная дейтаграмма адресована в направлении 192.168.10.0. Кратчайший маршрут для достижения этой сети для маршрутизатора gw1 лежит через маршрутизатор gw2, который в данном случае подключен к тому сегменту сети, из которого была получена принятая дейтаграмма.

Рис. 1

Маршрутизатор gw1 направляет дейтаграмму по направлению gw2 зеленым показано на рисунке и одновременно формирует сообщение ICMP Redirect, в котором он рекомендует хосту А впредь для передачи дейтаграмм в направлении сети использовать в качестве шлюза маршрутизатор gw2.

Сообщения данного типа могут быть сформированы только маршрутизатором – шлюзом. В заголовке сообщения ICMP Redirect размещается IP адрес шлюза, который рекомендуется использовать для достижения сетевого ресурса, указанного в исходной дейтаграмме и тип маршрута, который должен быть изменен по предложению источника сообщения ICMP. В таблице приведены используемые значения поля CODE сообщения ICMP Redirect и соответствующие им рекомендации по изменению маршрута:
Codes
0 Перенаправление дейтаграмм для сети или подсети
1 Перенаправление дейтаграмм для хоста
2 Перенаправление дейтаграмм для указанного типа сервиса (TOS) и сети
3Перенаправление дейтаграмм для указанного типа сервиса (TOS) и хоста
Полные данные изложены в RFC2939

возможные параметры для ./icmp.so:

-ct x  ICMP message type выбираем один из 41 типа сообщений см. RFC2939

Default: ICMP_ECHO (8), or ICMP6_ECHO_REQUEST (128) if embedded in an IPv6 packet

-cd x  ICMP code аналогично типам сообщений выбираем год выбранного ранее сообщения.

Default: 0

-cc x  ICMP checksum

Default: Correct

Комментарии

Добавить комментарий

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и абзацы переносятся автоматически.