Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ССиСК для ИЭФ.doc
Скачиваний:
20
Добавлен:
01.09.2019
Размер:
1.07 Mб
Скачать

Формат пакета arp

На Рис.26 показан формат ARP запроса и формат ARP ответа, в случае использования MAC и IP адресов. (ARP можно использовать в других сетях, при этом он способен устанавливать соответствие не только для IP адресов. Первые четыре поля, следующие за полем типа фрейма, указывают на типы и размеры заключительных четырех полей.)

Рис.26

Два первых поля в Ethernet заголовке – поля MAC-адресов источника и назначения. Специальный MAC-адрес назначения, состоящий из всех единиц, означает широковещательный адрес. Фреймы с таким адресом будут получены всеми Ethernet интерфейсами на кабеле.

Двухбайтовый тип фрейма (frame type) Ethernet указывает, данные какого типа, пойдут следом. Для ARP запроса или ARP отклика это поле содержит 0x0806.

Выражения аппаратный (hardware) и протокол (protocol) используются для описания полей в пакетах ARP. Например, ARP запрос запрашивает аппаратный адрес (в данном случае MAC-адрес) соответствующий адресу протокола (в данном случае IP адрес).

Поле hard type указывает на тип аппаратного адреса. Для Ethernet это значение равно единице.

Prot type указывает тип адреса протокола, к которому будет приведено соответствие. Для IP адресов используется значение 0x0800. По своему целевому назначению это значение соответствует полю типа во фрейме Ethernet, который содержит IP пакет.

Два следующих однобайтных поля, hard size и prot size, указывают на размеры в байтах аппаратного адреса и адреса протокола. В ARP запросах и откликах они составляют 6 для MAC-адреса и 4 для IP адреса.

Поле op указывает на тип операции: ARP запрос (значение устанавливается в 1), ARP отклик (2), RARP запрос (3) и RARP отклик (4). Это поле необходимо, так как поля типа фрейма (frame type) одинаковы для ARP запроса и ARP отклика.

Следующие четыре поля: аппаратный адрес отправителя (MAC-адрес в данном примере), адрес протокола (IP адрес), аппаратный адрес назначения и адрес протокола назначения. Обратите внимание, что в данном случае происходит некоторое дублирование информации: аппаратный адрес отправителя может быть получен как из Ethernet заголовка, так и из ARP запроса.

Для ARP запроса все поля заполнены, за исключением аппаратного адреса назначения. Когда система получает ARP запрос, который предназначается ей, она вставляет свой аппаратный адрес, меняет местами адреса источника и назначения, устанавливает поле op в значение 2 и отправляет отклик.

Протокол управления сообщениями Internet (icmp – Internet Control Message Protocol)

Обычно считается, что ICMP это часть уровня IP. С его помощью передаются сообщения об ошибках и сообщения о возникновении условий и ситуаций, которые требуют к себе особого внимания. ICMP сообщения обрабатываются IP уровнем или более высокими уровнями (TCP или UDP). При появлении некоторых ICMP сообщений генерируются сообщения об ошибках, которые передаются пользовательским процессам.

ICMP сообщения передаются внутри IP пакетов, как показано на Рис.27.

Рис.27

Спецификация ICMP находится в RFC-792. На Рис.28 показан формат ICMP сообщения. Первые 4 байта одинаковы для всех сообщений, однако остальные отличаются в зависимости от типа сообщения.

Существует 15 различных значений для поля типа (type), которые указывают на конкретный тип ICMP сообщения. Для некоторых ICMP сообщений используются различные значения в поле кода (code) – причина ошибки (например, 0 – сеть недоступна), подобным образом осуществляется дальнейшее подразделение ICMP сообщений.

Поле контрольной суммы (checksum) охватывает ICMP сообщение целиком. Контрольная сумма ICMP присутствует всегда.

8-bit

type

8-bit

code

16-bit

checksum (for entire ICMP message)

Contents depend on type and code

Рис.28

Сообщение ICMP всегда содержит заголовок и первые 64 бита данных пакета IP, который вызвал ошибку. Это делается для того, чтобы узел-отправитель смог более точно проанализировать причину ошибки, так как все протоколы прикладного уровня стека TCP/IP содержат наиболее важную информацию для анализа в первых 64 битах своих сообщений.

В Табл.29 приведены возможные типы ICMP сообщений (как они определяются полями: type и code).

Последние две колонки в Табл.29 указывают, является ли ICMP сообщение запросом (query) или сообщением об ошибке (error). Подобное разделение необходимо, потому что сообщения об ошибках ICMP иногда обрабатываются специальным образом. Например, ICMP сообщение об ошибке никогда не генерируется в ответ на ICMP сообщение об ошибке. (Если не придерживаться этого правила, то ошибка будет генерироваться на ошибку до бесконечности.)

Когда посылается ICMP сообщение об ошибке, оно всегда содержит IP заголовок и первые 8 байт IP датаграммы, которая вызвала генерацию ICMP ошибки. Это позволяет принимающему ICMP модулю установить соответствие между полученным сообщением, одним из конкретных протоколов (TCP или UDP из поля протоколов в IP заголовке) и с одним из конкретных пользовательских процессов (с помощью номера порта TCP или UDP, который содержится в TCP или UDP заголовке в первых 8 байтах IP пакета).

Сообщение об ошибке ICMP никогда не генерируется в ответ на:

  • ICMP сообщение об ошибке. (ICMP сообщение об ошибке, однако, может быть сгенерировано в ответ на ICMP запрос.)

  • Пакет, направляющийся на широковещательный IP адрес или групповой адрес IP (адрес класса D).

  • Пакет, который посылается широковещательным запросом на канальном уровне.

  • Фрагмент пакета, который не является первым. Пакет, адрес источника которого не указывает на конкретный хост. Это означает, что адрес источника не может быть нулевым, loopback-адресом, широковещательным или групповым адресом.

тип

код

Описание

запрос

ошибка

0

0

эхо-отклик (отклик-Ping)

·

3

назначение недоступно:

0

сеть недоступна – network unreachable

·

1

хост недоступен – host unreachable

·

2

протокол недоступен – protocol unreachable

·

3

порт недоступен – port unreachable

·

4

необходима фрагментация, однако установлен бит “не фрагментировать” – fragmentation needed but don’t-fragment bit set

·

5

не работает маршрутизация от источника – source route failed

·

6

неизвестна сеть назначения – destination network unknown

·

7

неизвестен хост назначения – destination host unknown

·

8

хост источник изолирован – source host isolated

·

9

сеть назначения закрыта администратором – destination network administrativrly prohibited

·

10

хост назначения закрыт администратором – destination host administrativrly prohibited

·

11

сеть недоступна для TOS – network unreachable for TOS

·

12

хост недоступен для TOS – host unreachable for TOS

·

13

связь административно закрыта путем фильтрации – communication administratively prohibited by filtering

·

14

нарушено старшинство для хоста – host precedence violation

·

15

старшинство разъединено – precedence cutoff in effect

·

4

0

подавление источника (элементарное управление потоком данных) – source quench

·

5

перенаправление – redirect

0

перенаправление в сеть – redirect for network

·

1

перенаправление в хост – redirect for host

·

2

перенаправление для типа сервиса и сети – redirect for type-of-service and network

·

3

перенаправление для типа сервиса и хоста – redirect for type-of-service and host

·

8

0

эхо запрос – echo request (Ping запрос)

·

9

0

объявление маршрутизатора – router advertisement

·

10

0

запрос к маршрутизатору – router solicitation

·

11

время истекло – time exceeded:

0

время жизни стало равным 0 в процессе передачи – time-to-live equals 0 during transit (Traceroute)

·

1

время жизни стало равным 0 в процессе повторной сборки – time-to-live equals 0 during reassembly

·

12

проблемы с параметрами – parameter problem:

0

неверный IP заголовок – IP header bad

·

1

отсутствует необходимая опция – required option missing

·

13

0

запрос временной метки – timestamp request

·

14

0

отклик с временной метки – timestamp reply

·

15

0

информационный запрос – information request

·

16

0

информационный отклик – information reply

·

17

0

запрос маски адреса – address mask request

·

18

0

отклик с маской адреса – address mask reply

·

Таблица.29

Примеры сообщения ICMP:

  1. ICMP эхо-запрос/ответ (Ping request and reply). Во многих операционных системах используется утилита ping, которая предназначена для тестирования достижимости узлов. Эта утилита обычно посылает серию эхо-запросов к тестируемому узлу и предоставляет пользователю статистику об утерянных эхо-ответах и среднем времени реакции сети на запросы. Протокол ICMP предоставляет сетевым администраторам средства для тестирования достижимости узлов сети. Эти средства представляют собой очень простой эхо-протокол, включающий обмен двумя типами сообщений: эхо-запрос и эхо-ответ. Компьютер или маршрутизатор посылают по интерсети эхо-запрос, в котором указывают IP-адрес узла, достижимость которого нужно проверить. Узел, который получает эхо-запрос, формирует и отправляет эхо-ответ и возвращает сообщение узлу – отправителю запроса. В запросе могут содержаться некоторые данные, которые должны быть возвращены в ответе. Пакеты Ping не ставятся в очередь, и не посылаются в буфер, т.е. время посылки ответа на ICMP-запрос не зависит от загруженности сервера. Обработка этих сообщений происходит на уровне процессора. Так как эхо-запрос и эхо-ответ передаются по сети внутри IP-пакетов, то их успешная доставка означает нормальное функционирование всей транспортной системы интерсети. Формат ICMP запроса/ответа маски адреса (address mask request and reply) показан на Рис.30.

Рис.30

Формат ICMP запроса/ответа временной метки (timestamp request and reply) изображен на Рис.31

Рис.31

Поле Identifier и Sequence number – определяются в ходе передачи.

32-бит – временная метка, т.е. время посылки данного сообщения.

По ней можно определить время двойного перехода: (32-bit originate timestamp – временная метка посылки пакета) – (32-bit receive timestamp – времен. метка получения пакета)

32-bit transmit timestamp – временная метка переданного пакета

  1. ICMP о недостижимости узла назначения (ICMP unreachable message). Когда маршрутизатор не может передать или доставить IP-пакет, он отсылает узлу, отправившему этот пакет, сообщение "Узел назначения недостижим" (тип сообщения – 3). Это сообщение содержит в поле кода значение, уточняющее причину, по которой пакет не был доставлен (Рис.32).

Рис.32

Маршрутизатор, обнаруживший по какой-либо причине, что он не может передать IP-пакет далее по сети, должен отправить ICMP-сообщение узлу-источнику, и только потом отбросить пакет. Кроме причины ошибки, ICMP-сообщение включает также заголовок недоставленного пакета и его первые 64 бита поля данных.

Узел или сеть назначения могут быть недостижимы из-за временной неработоспособности аппаратуры, из-за того, что отправитель указал неверный адрес назначения, а также из-за того, что маршрутизатор не имеет данных о маршруте к сети назначения.

Недостижимость протокола и порта означают отсутствие реализации какого-либо протокола прикладного уровня в узле назначения или же отсутствие открытого порта протоколов UDP или TCP в узле назначения.

Ошибка фрагментации возникает тогда, когда отправитель послал в сеть пакет с признаком DF, запрещающим фрагментацию, а маршрутизатор столкнулся с необходимостью передачи этого пакета в сеть со значением MTU меньшим, чем размер пакета.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]