Как уже было сказано, IP обеспечивает ненадежную доставку дейтаграмм без установления соединения. Он был разработан как метод, который делает эффективным использование сетевых ресурсов. Протокол IP – это служба доставки с максимальными усилиями (best-
Протокол IP не имеет механизма, сообщающего об ошибке или исправляющего ее. Протоколу IP также недостает ICMP-
Протокол управления сообщениями Интернета (ICMP – Internet Control
(рис 6.1) Инкапсуляция сообщения ICMPЗначение поля протокола в дейтаграмме IP — это "1", оно указывает, что данные IP — это ICMP-сообщение.
ICMP-сообщения разделены на две широкие категории: отчет об ошибке сообщения и запрос, как это показано на рис. 6.2.
(рис 6.2) Сообщения ICMPСообщение об ошибке переносит данные о проблемах, возникающих при обмене сообщениями, с которыми маршрутизатор или хост (пункт назначения) могут столкнуться, когда они обрабатывают пакет IP.
Сообщения запроса помогают хосту или сетевому менеджеру получить заданную информацию от маршрутизатора или другого хоста. Например, узлы могут обнаружить их соседей. Также хосты могут обнаружить и узнать о маршрутизаторах на их сети, и маршрутизаторы могут помочь узлу переадресовывать его сообщения. Таблица 6.1. перечисляет ICMP-сообщения в каждой категории.
| Категория | Тип | Сообщение |
|---|---|---|
| Сообщения отчета об ошибках | 3 | Конечный пункт не достижим |
| 4 | подавление источника | |
| 11 | Время истекло | |
| 12 | Проблемы параметров | |
| 5 | Переназначение | |
| 8 или 0 | Эхо запрос и ответ | |
| 13 или 14 | Метка времени запрос и ответ | |
| 17 или 18 | Маска адреса запрос и ответ | |
| 10 или 9 | Маршрутизатор затребование и извещение |
ICMP-сообщение имеет 8-байтовый заголовок и раздел данных переменного размера. Хотя общий формат заголовка различен для каждого типа сообщения, первые 4 байта — общие для всех. Как показывает рис. 6.3., первое поле, ICMP, определяет тип сообщения. Поле кода определяет основание для конкретного типа сообщения. Последнее общее поле – это поле контрольной суммы. Остальная часть заголовка задана для каждого типа сообщения.
(рис 6.3) Основной формат ICMPРаздел данных в сообщениях об ошибках доставляет информацию для нахождения первоначального пакета, который содержит ошибку. В сообщениях запроса раздел данных доставляет дополнительную информацию, основанную на типе запроса.
Одна из главных обязанностей ICMP состоит в том, чтобы известить об ошибках. Хотя технологии передачи сегодня предоставляют для передачи все более и более достоверные среды, ошибки все еще существуют и должны быть обработаны. IP, как обсуждалось ранее, является ненадежным
(рис 6.4) Типы сообщений отчета об ошибкахВсе сообщения об ошибках содержат раздел данных (рис. 6.5), который включает заголовок IP первоначальной дейтаграммы плюс первые 8 байт данных в этой дейтаграмме. Первоначальный заголовок дейтаграммы добавляется, чтобы дать первоначальному источнику, который получает сообщение об ошибках, информацию непосредственно о самой дейтаграмме. Включены 8 байт данных, потому что, согласно форматам UDP- и TCP-протоколов, первые 8 байт обеспечивают информацию о номерах порта (UDP и TCP) и порядковом номере (TCP). Эта информация необходима, чтобы источник мог сообщить протоколам (TCP или UDP) об ошибке. ICMP формирует пакет данных об ошибке, который затем инкапсулируется в дейтаграмму IP (см. (рис. 6.5).
(рис 6.5) Содержание поля данных для сообщения об ошибках Когда маршрутизатор не может выбрать маршрут дейтаграмме или хост не может доставить дейтаграмму, она отклоняется, и маршрутизатор или хост посылает назад к хосту источника, который ввел дейтаграмму, сообщение "конечный пункт недостижим". Рис. 6.6. показывает формат сообщения "пункт назначения недостижим".
(рис 6.6) Формат cообщения "конечный пункт недостижим"Поле кода для этого типа определяет причину для удаления дейтаграммы.
Заметим, что не достижимые пунктом назначения сообщения могут быть созданы или маршрутизатором, или хостом пункта назначения. Код 2 и код 3 сообщения могут быть созданы только хостом пункта назначения; сообщения остающихся кодов могут быть созданы только маршрутизаторами.
Заметим также, что даже если маршрутизатор не извещает о недостижимом пункте назначения сообщении, это не обязательно означает, что дейтаграмма доставлена, поскольку существуют протоколы, которые не имеют механизмов подтверждения (например, локальная сеть на основе протокола CSMA-CD).
Протокол IP — протокол без установления соединения. Нет никакого обмена сообщениями между хостом источника, который производит дейтаграмму, маршрутизаторами, направляющими ее, и хостом пункта назначения, который ее обрабатывает. Одно из последствий этого — отсутствие управления потоком. IP не имеет механизма управления потоком. Отсутствие управления потоком может создать главную проблему работе IP в ситуации перегрузки. Хост-источник никогда не знает, не были ли маршрутизаторы или хост пункта назначения переполнены дейтаграммами. Хост-источник никогда не знает, не порождает ли он дейтаграммы быстрее, чем они могут быть отправлены маршрутизаторами или обработаны хостом пункта назначения. Отсутствие управления потоком может создать перегрузку в маршрутизаторах или хосте пункта назначения. Маршрутизатор или хост сделаны так, чтобы ограничивать размер очереди (буфера) для поступающих дейтаграмм, ждущих отправления (в случае маршрутизатора) или обработки (в случае хоста). Если дейтаграммы поступают намного быстрее, чем они могут быть отправлены или обработаны, очередь может переполниться. В этом случае маршрутизатор или хост не имеют никакого выбора, кроме как удалить некоторые из дейтаграмм.
Подавление источника сообщения в ICMP было разработано, чтобы добавить своего рода функцию управления потоком IP. Когда маршрутизатор или хост удаляет дейтаграммы из-за перегрузки, он посылает передатчику дейтаграммы сообщение подавления источника. Это сообщение имеет две цели. Во-первых, оно сообщает источнику, что дейтаграмма была забракована. Во-вторых, оно предупреждает источник, что где-нибудь в пути есть перегрузка и что источник должен замедлить процесс посылки. В общем формате для сообщения "подавление источника" используются в поле тип значение "4", а в поле код - "0".
Есть некоторые пункты, которые заслуживают более подробного пояснения.
Во-первых, маршрутизатор или пункт назначения, который испытывает перегрузку, посылает одно сообщение подавления для каждой забракованной дейтаграммы к хосту источника.
Во-вторых, нет никакого механизма, чтобы сказать источнику, что перегрузка уменьшилась и источник может возобновить посылать дейтаграммы на предыдущей скорости. Источник продолжает понижать скорость, пока не получает больше подавления источника.
В-третьих, перегрузка может быть создана связью либо "один к одному", либо "многие к одному". При связи "один к одному" единственный быстродействующий хост может создавать дейтаграммы быстрее, чем маршрутизатор или хост пункта назначения могут их обработать. В этом случае могут быть полезны сообщения подавления источника. Они дают источнику команду замедлиться. При связи "многие к одному" несколько источников создают дейтаграммы, которые должны быть обработаны маршрутизатором или хостом пункта назначения. В этом случае каждый источник может посылать дейтаграммы на различных скоростях, некоторые из них на низкой скорости, другие — на высокой. В такой ситуации сообщение подавления источника не может быть очень полезно. Маршрутизатор или хост пункта назначения не имеют никакой возможности узнать, какой источник является ответственным за перегрузку. Он может исключить дейтаграмму из очень медленного источника вместо того, чтобы отбросить дейтаграмму из источника, который фактически создал перегрузку.
Сообщение о превышении времени генерируется в двух случаях.
Первый случай. Таблицы маршрутизации используются, чтобы найти следующий участок, который должен получить пакет. Если есть ошибки в одной или более таблицах маршрутизации, пакет может перемещаться по петле или в цикле, идущем от одного маршрутизатора к следующему, или бесконечно проходить ряд маршрутизаторов. Каждая дейтаграмма содержит поле, названное временем жизни, которое контролирует эту ситуацию. Когда дейтаграмма проходит маршрутизатор, значение этого поля уменьшается на "1". Когда значение времени жизни — "0", маршрутизатор удаляет дейтаграмму. Однако когда дейтаграмма удалена, маршрутизатор должен послать первоначальному
Второй случай. Сообщение о превышении времени генерируется, когда все фрагменты, которые составляют сообщение, не достигают хоста пункта назначения в пределах некоторого срока. Когда первый фрагмент прибывает, хост пункта назначения запускает таймер. Если все фрагменты не прибыли за заданное время, пункт назначения удаляет все фрагменты и посылает сообщение о превышении времени первоначальному передатчику.
В общем формате для сообщения "превышение времени" используются в поле тип значение "11", а в поле код - "0" или "1". Код 0 применяется, когда дейтаграмма удалена маршрутизатором из-за значения поля "времени жизни" равного нулю. Код 1 используется, когда удалены поступившие фрагменты дейтаграммы из-за того, что некоторые фрагменты не прибыли в пределах заданного срока.
В сообщении превышения времени код 0 используется только маршрутизаторами, чтобы показать, что значение поля времени жизни — ноль. Код 1 применяется только хостом пункта назначения, чтобы показать, что в пределах установленного времени не прибыли все фрагменты.
Любая неопределенность в заголовке дейтаграммы может создать серьезные проблемы дейтаграммам, проходящим через Интернет. Если маршрутизатор или хост пункта назначения обнаруживают неоднозначное или отсутствующее значение в любом поле дейтаграммы, он удаляет его из дейтаграммы и посылает назад к
Сообщение о проблемах параметров может быть создано маршрутизатором или хостом пункта назначения.
В общем формате для сообщения "проблемы параметров" используются в поле тип значение "12", а в поле код - "0" или "1". Во втором байте вводится 8-
Поле кода в этом случае определяет причину для отказа от дейтаграммы и показывает точно, что вышло из строя:
Когда маршрутизатор должен послать пакет, предназначенный для другой сети, он должен знать IP-адрес следующего соответствующего маршрутизатора. То же самое верно, если передатчик — хост. И маршрутизаторы, и хосты должны иметь таблицу маршрутизации, чтобы найти адрес маршрутизатора или следующего маршрутизатора. Маршрутизаторы принимают участие в процессе модификации таблиц маршрутизации, и процесс модификации производится периодически или постоянно. Маршрутизация является динамической.
Однако хосты не принимают участие в процессе модификации таблиц маршрутизации, потому что хостов в Интернете намного больше, чем маршрутизаторов. Обновление таблиц маршрутизации хостов динамически создает недопустимый трафик. Хосты обычно используют статическую маршрутизацию. Когда хост возникает, его таблица маршрутизации имеет ограниченное число входов. Он обычно знает только адрес IP одного маршрутизатора, заданного по умолчанию. По этой причине хост может послать дейтаграмму, которая предназначена для другой сети, неправильному маршрутизатору. В этом случае маршрутизатор, который получает дейтаграмму, отправит дейтаграмму правильному маршрутизатору. Однако чтобы обновить таблицу маршрутизации хоста, он посылает сообщение переназначения хосту. Это понятие переназначения показано на рис. 6.7. Хост A хочет послать дейтаграмму хосту Б. Маршрутизатор R2 — очевидно самый эффективный выбор направления, но хост не выбрал маршрутизатор R2. Дейтаграмма вместо этого идет в R1. R1, после сравнения со своей таблицей, находит, что пакет должен был уйти в R2. Он посылает пакет R2 и, в то же самое время, посылает сообщение переназначения хосту А. Таблица маршрутизации хоста А может теперь быть модифицирована.
(рис 6.7) Концепция переназначенияФормат сообщения переназначения показан на рис. 6.8. Заметим, что IP-адрес соответствующего адресата дается во второй строке.
(рис 6.8) Формат сообщения "переназначение"Хотя сообщение переназначения относится к сообщениям об ошибке, оно отличается от других сообщений этого класса. В этом случае маршрутизатор не удаляет дейтаграмму, а посылает ее соответствующему маршрутизатору. Поле кода для сообщения переназначения уточняет (детализирует) переназначение:
В дополнение к сообщению ошибки ICMP может также диагностировать некоторые
(рис 6.9) Сообщения запросаЭхо-запрос и сообщения эхо-ответа разработаны для целей диагностики. Сетевые менеджеры и пользователи применяют эту пару сообщений, чтобы идентифицировать
Комбинация сообщений запроса эха и ответа эха определяет, могут ли две системы (хосты или маршрутизаторы) связаться друг с другом.
Хост или маршрутизатор могут послать сообщение запроса эха другому хосту или маршрутизатору. Хост или маршрутизатор, который получает сообщение запроса эха, создает сообщение ответа эха и возвращает его первоначальному передатчику.
Запрос эха и сообщения ответа эха могут использоваться, чтобы определить, есть ли связь на уровне IP. Поскольку ICMP-сообщения инкапсулированы в дейтаграммах IP, получение сообщения ответа эха устройством, которое послало запрос эха, – доказательство, что протоколы IP в передатчике и приемнике связаны друг с другом с использованием дейтаграмм IP. Также это доказательство, что промежуточные маршрутизаторы получают, обрабатывают и устанавливают соединения дейтаграмм IP.
Запрос эха и сообщения ответа эха могут также использоваться хостом, чтобы видеть, достижим ли другой хост. На пользовательском уровне это делается вызовом программы тестирования каналов сетей пакетной коммутации (утилита PING – Packet Internet Groper). Сегодня большинство систем включает в себя версии утилиты PING, которая может создать серию (вместо только одного) запросов эха и сообщений ответа эха, обеспечивая
Запрос эха, вместе с ответом эха, может подтвердить, действительно ли узел функционирует должным образом. Узлу, который должен быть проверен, посылают сообщение запроса эха. Дополнительное поле данных содержит сообщение, которое должно быть повторено отвечающим узлом в его сообщении ответа эха. Рис. 6.10. показывает формат ответа эха и сообщения запроса эха. Идентификатор и поле порядкового номера формально не определены в соответствии с протоколом и могут использоваться произвольно передатчиком. Например, поле идентификатора может определить группу возникших проблем, а порядковый номер может сохранить запись метода обработки конкретных сообщений запроса эха, которые посылает передатчик. Идентификатор часто совпадает с ID процесса, который порождает запрос.
(рис 6.10) Сообщение эхо–запроса и эхо-ответа
Два устройства (хосты или маршрутизаторы) могут использовать запрос метки времени и сообщения запроса, метки времени и ответа, чтобы определить время прохождения "туда и обратно" (round–trip), необходимое для дейтаграммы IP. Он может также применяться, чтобы синхронизировать генераторы в двух устройствах. Формат этих двух сообщений показан на рис. 6.11.
(рис 6.11) Формат сообщения метки времени – запроса и метки времени - ответаТри поля метки времени — каждый 32 бита длиной. Каждое поле может содержать число, которое представляет время, измеренное в миллисекундах от полуночи Универсального времени (прежде называемое Значением времени по Гринвичу). (Заметим, что 32 бита могут представлять числа от 0 до 4,294,967,295, но метка времени в данном случае не может превысить 86 400 000 = 24 x 60 x 60 x 1000.)
Источник создает сообщение запроса метки времени. Источник заполняет поле исходной метки времени значением Универсального времени в соответствии с показанием своих часов во время отправления. Другие два поля метки времени заполнены нулями.
Пункт назначения создает сообщение ответа метки времени. Пункт назначения копирует первоначальное значение метки времени с сообщения запроса в то же самое поле в его сообщении ответа. Затем заполняет поле метки времени получения значением Универсального времени по показанию его часов в тот момент времени, когда запрос был получен. Наконец, он заполняет поле метки времени отправления значением Универсального времени по показанию его часов в тот момент времени, в который сообщение ответа отбывает.
Запрос метки времени и сообщения ответа метки времени могут использоваться, чтобы вычислить одностороннее время или время прохождения туда и обратно, требуемое для дейтаграммы, чтобы пройти от источника до пункта назначения и затем опять назад. Формулы следующие:
Время передачи = значение метки времени получения – значение первоначальной метки времени;
Время приема = время возвращения пакета – значение передачи метки времени;
Время прохождения туда и обратно = время передачи + время получения.
Вычисление посылки и получения времени точны, только если часы в источнике и машинах пункта назначения синхронизированы. Однако вычисление прохождения туда и обратно правильно, даже если пара часов не синхронизирована, потому что при вычислении прохождения туда и обратно каждые часы вносят вклад дважды, таким образом аннулируя любую разницу в синхронизации.
Например, учитывая следующую информацию:
Значение первоначальной метки времени: 46;
Значение метки времени получения: 59;
Значение метки времени отправления: 60;
Время прибытия пакета: 67;
мы можем вычислить время прохождения туда и обратно:
Время передачи = 59 – 46 = 13 миллисекунд;
Время получения = 67 – 60 = 7 миллисекунд.
Учитывая фактическое одностороннее время, запрос метки времени и сообщения ответа, метки времени могут также применяться, чтобы синхронизировать часы в двух устройствах, используя следующую формулу:
Разница во времени = метки времени получения –
-(исходная метка времени + односторонняя продолжительность времени).
Односторонняя продолжительность времени может быть получена любой, при делении продолжительности времени прохождения туда и обратно на два (если мы уверены, что время посылки равно времени получения) или другими средствами. Например, мы можем сказать, что часы в предыдущем примере на 3 миллисекунды вышли из синхронизации, потому что
Разница во времени = 59 – (46 + 10) = 3.
Адрес IP хоста содержит сетевой адрес, адрес подсети и идентификатор хоста. Хост может знать свой полный адрес IP, но он не может знать, какая часть адреса определяет сетевой и адрес подсети и какая часть соответствует идентификатору хоста. Например, хост может знать свой адрес IP на 32 бита как
10011111 00011111 11100010 10101011
Но он не знает, что левые 20 битов — сетевые и адреса подсети, и остающиеся 12 бит — его идентификатор хоста. В этом случае хост нуждается в следующей маске:
11111111 11111111 11110000 00000000
Единицы в маске идентифицируют позицию битов, используемых для сетевого идентификатора (netid) и идентификатора сети (subnetid). Нули идентифицируют позицию битов для хоста (hostid). Например, применяя вышеупомянутую маску к вышеупомянутому адресу, мы имеем

Чтобы получить свою маску, хост посылает сообщение запроса маски адреса маршрутизатору местной сети (LAN). Если хост знает адрес маршрутизатора, он посылает запрос непосредственно маршрутизатору, если не знает, передает сообщение широковещательно. Маршрутизатор, получающий адрес, — сообщение запроса маски — отвечает с сообщением ответа маски адреса, обеспечивая необходимую маску для хоста. Она может быть применена к полному IP-адресу, чтобы получить его адрес подсети.
Формат запроса маски адреса и ответа маски адреса показан на рисунке 6.12. Поле маски адреса в сообщении запроса заполнено нолями. Когда маршрутизатор посылает ответ маски адреса назад хосту, это поле содержит фактическую маску (единицы для netid и subnetid и нули для hostid).
(рис 6.12) Формат сообщения запрос и ответ маскиМаскировка необходима для станций без дискового накопителя во время запуска.
Когда станция впервые загружается извне, она может запросить свой полный IP-адрес, используя протокол определения сетевого адреса по местоположению –
Как мы обсуждали в разделе, посвященном сообщению переназначения, хост, который хочет послать данные хосту на другой сети, должен знать адрес маршрутизаторов, соединенных с его собственной сетью. Также хост должен знать, являются ли маршрутизаторы действующими и исправными. Ходатайство маршрутизатора и сообщения извещения маршрутизатора могут помочь в этой ситуации. Хост может передать широковещательно (или пакетами, рассылаемыми по многим адресам) сообщение ходатайства маршрутизатора. Маршрутизатор или маршрутизаторы, которые получают сообщение ходатайства, широковещательно передают информацию о маршрутизации, используя сообщения извещения маршрутизатора. Маршрутизатор может также периодически посылать сообщения извещения маршрутизатора, даже если никакой хост не ходатайствовал об этом. Заметим, что, когда маршрутизатор посылает извещение, он демонстрирует не только свою собственную активность и исправность, но также и исправность всех маршрутизаторов на сети, о которых он знает. Формат сообщения ходатайства маршрутизатора совпадает с общим форматом, поле тип равно "10", код - "0".
Рис. 6.13. показывает формат сообщения – извещения о связях маршрутизатора. Поле "время жизни" показывает число секунд, в течение которых информация, содержащаяся в формате, не устарела. Каждое сообщение о маршрутизаторе в извещении содержит по крайней мере два поля: адрес маршрутизатора и уровень предпочтения адреса. Уровень предпочтения адреса определяет ранг маршрутизатора.
(рис 6.13) Формат сообщения о связях маршрутизатораПредпочтение адреса используется для выбора маршрутизатора, который назначается по умолчанию. Если уровень предпочтения адреса нулевой, то маршрутизатор можно назначить как выбираемый по умолчанию. Если уровень предпочтения адреса – 8000000016, то этот маршрутизатор никогда не должен выбираться по умолчанию.
В ICMP контрольная сумма вычисляется по полному сообщению (заголовок и данные).
Передатчик выполняет следующие шаги, используя арифметику дополнения единицами:
Приемник выполняет следующие шаги, используя арифметику дополнения единицами:
В данном случае рассматривается упрощенная версия блок-схемы, состоящая из двух модулей. Рис. 6.14. показывает эти два модуля.
(рис 6.14) Блок-схема модулей ICMPОсновные алгоритмы работы модулей ICMP даны на рис. 6.15., рис. 6.16.

(рис 6.16) Алгоритм работы модуля ввода ICMP(рис 6.15) Алгоритм работы модуля вывода ICMPВходной модуль обрабатывает все полученные ICMP-сообщения. Он вызывается, когда ICMP-пакет доставлен к нему от уровня IP. Если полученный пакет — запрос или ходатайство, модуль создает ответ или извещение и отсылает его.
Если полученный пакет — сообщение переназначения, модуль использует информацию, чтобы модифицировать таблицу маршрутизации. Если полученный пакет — сообщение об ошибках, модуль передает протокол о ситуации, которая вызывала ошибку. Алгоритм показан выше на рис. 6.15.
Модуль вывода отвечает за создание запроса ходатайства или сообщения об ошибках, которые нужны протоколам более высокого уровня или протоколам IP. Модуль получает запрос от IP, UDP или TCP, чтобы послать одно из ICMP-сообщений об ошибках. Если запрос от IP, модуль вывода должен сначала проверить, что запрос разрешен. Напомним, что ICMP-сообщение не может быть создано для четырех ситуаций: для пакета IP, несущего сообщение об ошибках ICMP; для фрагментированного пакета IP; для пакетов IP, рассылаемых по многим адресам; или для пакета IP, имеющего адрес IP 0.0.0.0 или 127.X.Y.Z. Алгоритм работы модуля показан на рис.6.16.
Можно отметить, что модуль вывода (оператор 1 на рис. 6.16) может также получить запрос от прикладной программы, чтобы послать один из запросов ICMP или сообщений ходатайства.
198.123.46.219. Если маска подсети 255.255.255.192, каков идентификатор подсети? К какому классу принадлежит сеть?Тип: Эхо-запрос, Идентификатор: 123, Порядковый номер: 25, Сообщение: Hello.
130.45.3.3 и адресом пункта назначения 201.23.4.6. Маршрутизатор не может найти адрес в таблице маршрутизации. Заполните поле IP-адреса пункта назначения (насколько вы можете) для сообщения ICMP.03 0310 20 00 00 00 00Каков тип сообщения? Какой код? Какова цель сообщения?
52,453,000. Если часы передатчика на 5 мсек. медленнее, каково время передачи в одну сторону?13,560,000, 13,562,000, 13,565,300 соответственно. Каково время распространения при передаче? Каково время получения? Какое время туда и обратно? Какова разность между генератором передатчика и приемника?Дополнительный материал для прохождения тестирования к лекции, Вы можете скачать здесь.
Как уже было сказано, IP обеспечивает ненадежную доставку дейтаграмм без установления соединения. Он был разработан как метод, который делает эффективным использование сетевых ресурсов. Протокол IP – это служба доставки с максимальными усилиями (best-
Протокол IP не имеет механизма, сообщающего об ошибке или исправляющего ее. Протоколу IP также недостает ICMP-
Протокол управления сообщениями Интернета (ICMP – Internet Control
(рис 6.1) Инкапсуляция сообщения ICMPЗначение поля протокола в дейтаграмме IP — это "1", оно указывает, что данные IP — это ICMP-сообщение.
ICMP-сообщения разделены на две широкие категории: отчет об ошибке сообщения и запрос, как это показано на рис. 6.2.
(рис 6.2) Сообщения ICMPСообщение об ошибке переносит данные о проблемах, возникающих при обмене сообщениями, с которыми маршрутизатор или хост (пункт назначения) могут столкнуться, когда они обрабатывают пакет IP.
Сообщения запроса помогают хосту или сетевому менеджеру получить заданную информацию от маршрутизатора или другого хоста. Например, узлы могут обнаружить их соседей. Также хосты могут обнаружить и узнать о маршрутизаторах на их сети, и маршрутизаторы могут помочь узлу переадресовывать его сообщения. Таблица 6.1. перечисляет ICMP-сообщения в каждой категории.
| Категория | Тип | Сообщение |
|---|---|---|
| Сообщения отчета об ошибках | 3 | Конечный пункт не достижим |
| 4 | подавление источника | |
| 11 | Время истекло | |
| 12 | Проблемы параметров | |
| 5 | Переназначение | |
| 8 или 0 | Эхо запрос и ответ | |
| 13 или 14 | Метка времени запрос и ответ | |
| 17 или 18 | Маска адреса запрос и ответ | |
| 10 или 9 | Маршрутизатор затребование и извещение |
ICMP-сообщение имеет 8-байтовый заголовок и раздел данных переменного размера. Хотя общий формат заголовка различен для каждого типа сообщения, первые 4 байта — общие для всех. Как показывает рис. 6.3., первое поле, ICMP, определяет тип сообщения. Поле кода определяет основание для конкретного типа сообщения. Последнее общее поле – это поле контрольной суммы. Остальная часть заголовка задана для каждого типа сообщения.
(рис 6.3) Основной формат ICMPРаздел данных в сообщениях об ошибках доставляет информацию для нахождения первоначального пакета, который содержит ошибку. В сообщениях запроса раздел данных доставляет дополнительную информацию, основанную на типе запроса.
Одна из главных обязанностей ICMP состоит в том, чтобы известить об ошибках. Хотя технологии передачи сегодня предоставляют для передачи все более и более достоверные среды, ошибки все еще существуют и должны быть обработаны. IP, как обсуждалось ранее, является ненадежным
(рис 6.4) Типы сообщений отчета об ошибкахВсе сообщения об ошибках содержат раздел данных (рис. 6.5), который включает заголовок IP первоначальной дейтаграммы плюс первые 8 байт данных в этой дейтаграмме. Первоначальный заголовок дейтаграммы добавляется, чтобы дать первоначальному источнику, который получает сообщение об ошибках, информацию непосредственно о самой дейтаграмме. Включены 8 байт данных, потому что, согласно форматам UDP- и TCP-протоколов, первые 8 байт обеспечивают информацию о номерах порта (UDP и TCP) и порядковом номере (TCP). Эта информация необходима, чтобы источник мог сообщить протоколам (TCP или UDP) об ошибке. ICMP формирует пакет данных об ошибке, который затем инкапсулируется в дейтаграмму IP (см. (рис. 6.5).
(рис 6.5) Содержание поля данных для сообщения об ошибкахКогда маршрутизатор не может выбрать маршрут дейтаграмме или хост не может доставить дейтаграмму, она отклоняется, и маршрутизатор или хост посылает назад к хосту источника, который ввел дейтаграмму, сообщение "конечный пункт недостижим". Рис. 6.6. показывает формат сообщения "пункт назначения недостижим".
(рис 6.6) Формат cообщения "конечный пункт недостижим"Поле кода для этого типа определяет причину для удаления дейтаграммы.
Заметим, что не достижимые пунктом назначения сообщения могут быть созданы или маршрутизатором, или хостом пункта назначения. Код 2 и код 3 сообщения могут быть созданы только хостом пункта назначения; сообщения остающихся кодов могут быть созданы только маршрутизаторами.
Заметим также, что даже если маршрутизатор не извещает о недостижимом пункте назначения сообщении, это не обязательно означает, что дейтаграмма доставлена, поскольку существуют протоколы, которые не имеют механизмов подтверждения (например, локальная сеть на основе протокола CSMA-CD).
Протокол IP — протокол без установления соединения. Нет никакого обмена сообщениями между хостом источника, который производит дейтаграмму, маршрутизаторами, направляющими ее, и хостом пункта назначения, который ее обрабатывает. Одно из последствий этого — отсутствие управления потоком. IP не имеет механизма управления потоком. Отсутствие управления потоком может создать главную проблему работе IP в ситуации перегрузки. Хост-источник никогда не знает, не были ли маршрутизаторы или хост пункта назначения переполнены дейтаграммами. Хост-источник никогда не знает, не порождает ли он дейтаграммы быстрее, чем они могут быть отправлены маршрутизаторами или обработаны хостом пункта назначения. Отсутствие управления потоком может создать перегрузку в маршрутизаторах или хосте пункта назначения. Маршрутизатор или хост сделаны так, чтобы ограничивать размер очереди (буфера) для поступающих дейтаграмм, ждущих отправления (в случае маршрутизатора) или обработки (в случае хоста). Если дейтаграммы поступают намного быстрее, чем они могут быть отправлены или обработаны, очередь может переполниться. В этом случае маршрутизатор или хост не имеют никакого выбора, кроме как удалить некоторые из дейтаграмм.
Подавление источника сообщения в ICMP было разработано, чтобы добавить своего рода функцию управления потоком IP. Когда маршрутизатор или хост удаляет дейтаграммы из-за перегрузки, он посылает передатчику дейтаграммы сообщение подавления источника. Это сообщение имеет две цели. Во-первых, оно сообщает источнику, что дейтаграмма была забракована. Во-вторых, оно предупреждает источник, что где-нибудь в пути есть перегрузка и что источник должен замедлить процесс посылки. В общем формате для сообщения "подавление источника" используются в поле тип значение "4", а в поле код - "0".
Есть некоторые пункты, которые заслуживают более подробного пояснения.
Во-первых, маршрутизатор или пункт назначения, который испытывает перегрузку, посылает одно сообщение подавления для каждой забракованной дейтаграммы к хосту источника.
Во-вторых, нет никакого механизма, чтобы сказать источнику, что перегрузка уменьшилась и источник может возобновить посылать дейтаграммы на предыдущей скорости. Источник продолжает понижать скорость, пока не получает больше подавления источника.
В-третьих, перегрузка может быть создана связью либо "один к одному", либо "многие к одному". При связи "один к одному" единственный быстродействующий хост может создавать дейтаграммы быстрее, чем маршрутизатор или хост пункта назначения могут их обработать. В этом случае могут быть полезны сообщения подавления источника. Они дают источнику команду замедлиться. При связи "многие к одному" несколько источников создают дейтаграммы, которые должны быть обработаны маршрутизатором или хостом пункта назначения. В этом случае каждый источник может посылать дейтаграммы на различных скоростях, некоторые из них на низкой скорости, другие — на высокой. В такой ситуации сообщение подавления источника не может быть очень полезно. Маршрутизатор или хост пункта назначения не имеют никакой возможности узнать, какой источник является ответственным за перегрузку. Он может исключить дейтаграмму из очень медленного источника вместо того, чтобы отбросить дейтаграмму из источника, который фактически создал перегрузку.
Сообщение о превышении времени генерируется в двух случаях.
Первый случай. Таблицы маршрутизации используются, чтобы найти следующий участок, который должен получить пакет. Если есть ошибки в одной или более таблицах маршрутизации, пакет может перемещаться по петле или в цикле, идущем от одного маршрутизатора к следующему, или бесконечно проходить ряд маршрутизаторов. Каждая дейтаграмма содержит поле, названное временем жизни, которое контролирует эту ситуацию. Когда дейтаграмма проходит маршрутизатор, значение этого поля уменьшается на "1". Когда значение времени жизни — "0", маршрутизатор удаляет дейтаграмму. Однако когда дейтаграмма удалена, маршрутизатор должен послать первоначальному
Второй случай. Сообщение о превышении времени генерируется, когда все фрагменты, которые составляют сообщение, не достигают хоста пункта назначения в пределах некоторого срока. Когда первый фрагмент прибывает, хост пункта назначения запускает таймер. Если все фрагменты не прибыли за заданное время, пункт назначения удаляет все фрагменты и посылает сообщение о превышении времени первоначальному передатчику.
В общем формате для сообщения "превышение времени" используются в поле тип значение "11", а в поле код - "0" или "1". Код 0 применяется, когда дейтаграмма удалена маршрутизатором из-за значения поля "времени жизни" равного нулю. Код 1 используется, когда удалены поступившие фрагменты дейтаграммы из-за того, что некоторые фрагменты не прибыли в пределах заданного срока.
В сообщении превышения времени код 0 используется только маршрутизаторами, чтобы показать, что значение поля времени жизни — ноль. Код 1 применяется только хостом пункта назначения, чтобы показать, что в пределах установленного времени не прибыли все фрагменты.
Любая неопределенность в заголовке дейтаграммы может создать серьезные проблемы дейтаграммам, проходящим через Интернет. Если маршрутизатор или хост пункта назначения обнаруживают неоднозначное или отсутствующее значение в любом поле дейтаграммы, он удаляет его из дейтаграммы и посылает назад к
Сообщение о проблемах параметров может быть создано маршрутизатором или хостом пункта назначения.
В общем формате для сообщения "проблемы параметров" используются в поле тип значение "12", а в поле код - "0" или "1". Во втором байте вводится 8-
Поле кода в этом случае определяет причину для отказа от дейтаграммы и показывает точно, что вышло из строя:
Когда маршрутизатор должен послать пакет, предназначенный для другой сети, он должен знать IP-адрес следующего соответствующего маршрутизатора. То же самое верно, если передатчик — хост. И маршрутизаторы, и хосты должны иметь таблицу маршрутизации, чтобы найти адрес маршрутизатора или следующего маршрутизатора. Маршрутизаторы принимают участие в процессе модификации таблиц маршрутизации, и процесс модификации производится периодически или постоянно. Маршрутизация является динамической.
Однако хосты не принимают участие в процессе модификации таблиц маршрутизации, потому что хостов в Интернете намного больше, чем маршрутизаторов. Обновление таблиц маршрутизации хостов динамически создает недопустимый трафик. Хосты обычно используют статическую маршрутизацию. Когда хост возникает, его таблица маршрутизации имеет ограниченное число входов. Он обычно знает только адрес IP одного маршрутизатора, заданного по умолчанию. По этой причине хост может послать дейтаграмму, которая предназначена для другой сети, неправильному маршрутизатору. В этом случае маршрутизатор, который получает дейтаграмму, отправит дейтаграмму правильному маршрутизатору. Однако чтобы обновить таблицу маршрутизации хоста, он посылает сообщение переназначения хосту. Это понятие переназначения показано на рис. 6.7. Хост A хочет послать дейтаграмму хосту Б. Маршрутизатор R2 — очевидно самый эффективный выбор направления, но хост не выбрал маршрутизатор R2. Дейтаграмма вместо этого идет в R1. R1, после сравнения со своей таблицей, находит, что пакет должен был уйти в R2. Он посылает пакет R2 и, в то же самое время, посылает сообщение переназначения хосту А. Таблица маршрутизации хоста А может теперь быть модифицирована.
(рис 6.7) Концепция переназначенияФормат сообщения переназначения показан на рис. 6.8. Заметим, что IP-адрес соответствующего адресата дается во второй строке.
(рис 6.8) Формат сообщения "переназначение"Хотя сообщение переназначения относится к сообщениям об ошибке, оно отличается от других сообщений этого класса. В этом случае маршрутизатор не удаляет дейтаграмму, а посылает ее соответствующему маршрутизатору. Поле кода для сообщения переназначения уточняет (детализирует) переназначение:
В дополнение к сообщению ошибки ICMP может также диагностировать некоторые
(рис 6.9) Сообщения запросаЭхо-запрос и сообщения эхо-ответа разработаны для целей диагностики. Сетевые менеджеры и пользователи применяют эту пару сообщений, чтобы идентифицировать
Комбинация сообщений запроса эха и ответа эха определяет, могут ли две системы (хосты или маршрутизаторы) связаться друг с другом.
Хост или маршрутизатор могут послать сообщение запроса эха другому хосту или маршрутизатору. Хост или маршрутизатор, который получает сообщение запроса эха, создает сообщение ответа эха и возвращает его первоначальному передатчику.
Запрос эха и сообщения ответа эха могут использоваться, чтобы определить, есть ли связь на уровне IP. Поскольку ICMP-сообщения инкапсулированы в дейтаграммах IP, получение сообщения ответа эха устройством, которое послало запрос эха, – доказательство, что протоколы IP в передатчике и приемнике связаны друг с другом с использованием дейтаграмм IP. Также это доказательство, что промежуточные маршрутизаторы получают, обрабатывают и устанавливают соединения дейтаграмм IP.
Запрос эха и сообщения ответа эха могут также использоваться хостом, чтобы видеть, достижим ли другой хост. На пользовательском уровне это делается вызовом программы тестирования каналов сетей пакетной коммутации (утилита PING – Packet Internet Groper). Сегодня большинство систем включает в себя версии утилиты PING, которая может создать серию (вместо только одного) запросов эха и сообщений ответа эха, обеспечивая
Запрос эха, вместе с ответом эха, может подтвердить, действительно ли узел функционирует должным образом. Узлу, который должен быть проверен, посылают сообщение запроса эха. Дополнительное поле данных содержит сообщение, которое должно быть повторено отвечающим узлом в его сообщении ответа эха. Рис. 6.10. показывает формат ответа эха и сообщения запроса эха. Идентификатор и поле порядкового номера формально не определены в соответствии с протоколом и могут использоваться произвольно передатчиком. Например, поле идентификатора может определить группу возникших проблем, а порядковый номер может сохранить запись метода обработки конкретных сообщений запроса эха, которые посылает передатчик. Идентификатор часто совпадает с ID процесса, который порождает запрос.
(рис 6.10) Сообщение эхо–запроса и эхо-ответа
Два устройства (хосты или маршрутизаторы) могут использовать запрос метки времени и сообщения запроса, метки времени и ответа, чтобы определить время прохождения "туда и обратно" (round–trip), необходимое для дейтаграммы IP. Он может также применяться, чтобы синхронизировать генераторы в двух устройствах. Формат этих двух сообщений показан на рис. 6.11.
(рис 6.11) Формат сообщения метки времени – запроса и метки времени - ответаТри поля метки времени — каждый 32 бита длиной. Каждое поле может содержать число, которое представляет время, измеренное в миллисекундах от полуночи Универсального времени (прежде называемое Значением времени по Гринвичу). (Заметим, что 32 бита могут представлять числа от 0 до 4,294,967,295, но метка времени в данном случае не может превысить 86 400 000 = 24 x 60 x 60 x 1000.)
Источник создает сообщение запроса метки времени. Источник заполняет поле исходной метки времени значением Универсального времени в соответствии с показанием своих часов во время отправления. Другие два поля метки времени заполнены нулями.
Пункт назначения создает сообщение ответа метки времени. Пункт назначения копирует первоначальное значение метки времени с сообщения запроса в то же самое поле в его сообщении ответа. Затем заполняет поле метки времени получения значением Универсального времени по показанию его часов в тот момент времени, когда запрос был получен. Наконец, он заполняет поле метки времени отправления значением Универсального времени по показанию его часов в тот момент времени, в который сообщение ответа отбывает.
Запрос метки времени и сообщения ответа метки времени могут использоваться, чтобы вычислить одностороннее время или время прохождения туда и обратно, требуемое для дейтаграммы, чтобы пройти от источника до пункта назначения и затем опять назад. Формулы следующие:
Время передачи = значение метки времени получения – значение первоначальной метки времени;
Время приема = время возвращения пакета – значение передачи метки времени;
Время прохождения туда и обратно = время передачи + время получения.
Вычисление посылки и получения времени точны, только если часы в источнике и машинах пункта назначения синхронизированы. Однако вычисление прохождения туда и обратно правильно, даже если пара часов не синхронизирована, потому что при вычислении прохождения туда и обратно каждые часы вносят вклад дважды, таким образом аннулируя любую разницу в синхронизации.
Например, учитывая следующую информацию:
Значение первоначальной метки времени: 46;
Значение метки времени получения: 59;
Значение метки времени отправления: 60;
Время прибытия пакета: 67;
мы можем вычислить время прохождения туда и обратно:
Время передачи = 59 – 46 = 13 миллисекунд;
Время получения = 67 – 60 = 7 миллисекунд.
Учитывая фактическое одностороннее время, запрос метки времени и сообщения ответа, метки времени могут также применяться, чтобы синхронизировать часы в двух устройствах, используя следующую формулу:
Разница во времени = метки времени получения –
-(исходная метка времени + односторонняя продолжительность времени).
Односторонняя продолжительность времени может быть получена любой, при делении продолжительности времени прохождения туда и обратно на два (если мы уверены, что время посылки равно времени получения) или другими средствами. Например, мы можем сказать, что часы в предыдущем примере на 3 миллисекунды вышли из синхронизации, потому что
Разница во времени = 59 – (46 + 10) = 3.
Адрес IP хоста содержит сетевой адрес, адрес подсети и идентификатор хоста. Хост может знать свой полный адрес IP, но он не может знать, какая часть адреса определяет сетевой и адрес подсети и какая часть соответствует идентификатору хоста. Например, хост может знать свой адрес IP на 32 бита как
10011111 00011111 11100010 10101011
Но он не знает, что левые 20 битов — сетевые и адреса подсети, и остающиеся 12 бит — его идентификатор хоста. В этом случае хост нуждается в следующей маске:
11111111 11111111 11110000 00000000
Единицы в маске идентифицируют позицию битов, используемых для сетевого идентификатора (netid) и идентификатора сети (subnetid). Нули идентифицируют позицию битов для хоста (hostid). Например, применяя вышеупомянутую маску к вышеупомянутому адресу, мы имеем

Чтобы получить свою маску, хост посылает сообщение запроса маски адреса маршрутизатору местной сети (LAN). Если хост знает адрес маршрутизатора, он посылает запрос непосредственно маршрутизатору, если не знает, передает сообщение широковещательно. Маршрутизатор, получающий адрес, — сообщение запроса маски — отвечает с сообщением ответа маски адреса, обеспечивая необходимую маску для хоста. Она может быть применена к полному IP-адресу, чтобы получить его адрес подсети.
Формат запроса маски адреса и ответа маски адреса показан на рисунке 6.12. Поле маски адреса в сообщении запроса заполнено нолями. Когда маршрутизатор посылает ответ маски адреса назад хосту, это поле содержит фактическую маску (единицы для netid и subnetid и нули для hostid).
(рис 6.12) Формат сообщения запрос и ответ маскиМаскировка необходима для станций без дискового накопителя во время запуска.
Когда станция впервые загружается извне, она может запросить свой полный IP-адрес, используя протокол определения сетевого адреса по местоположению –
Как мы обсуждали в разделе, посвященном сообщению переназначения, хост, который хочет послать данные хосту на другой сети, должен знать адрес маршрутизаторов, соединенных с его собственной сетью. Также хост должен знать, являются ли маршрутизаторы действующими и исправными. Ходатайство маршрутизатора и сообщения извещения маршрутизатора могут помочь в этой ситуации. Хост может передать широковещательно (или пакетами, рассылаемыми по многим адресам) сообщение ходатайства маршрутизатора. Маршрутизатор или маршрутизаторы, которые получают сообщение ходатайства, широковещательно передают информацию о маршрутизации, используя сообщения извещения маршрутизатора. Маршрутизатор может также периодически посылать сообщения извещения маршрутизатора, даже если никакой хост не ходатайствовал об этом. Заметим, что, когда маршрутизатор посылает извещение, он демонстрирует не только свою собственную активность и исправность, но также и исправность всех маршрутизаторов на сети, о которых он знает. Формат сообщения ходатайства маршрутизатора совпадает с общим форматом, поле тип равно "10", код - "0".
Рис. 6.13. показывает формат сообщения – извещения о связях маршрутизатора. Поле "время жизни" показывает число секунд, в течение которых информация, содержащаяся в формате, не устарела. Каждое сообщение о маршрутизаторе в извещении содержит по крайней мере два поля: адрес маршрутизатора и уровень предпочтения адреса. Уровень предпочтения адреса определяет ранг маршрутизатора.
(рис 6.13) Формат сообщения о связях маршрутизатораПредпочтение адреса используется для выбора маршрутизатора, который назначается по умолчанию. Если уровень предпочтения адреса нулевой, то маршрутизатор можно назначить как выбираемый по умолчанию. Если уровень предпочтения адреса – 8000000016, то этот маршрутизатор никогда не должен выбираться по умолчанию.
В ICMP контрольная сумма вычисляется по полному сообщению (заголовок и данные).
Передатчик выполняет следующие шаги, используя арифметику дополнения единицами:
Приемник выполняет следующие шаги, используя арифметику дополнения единицами:
В данном случае рассматривается упрощенная версия блок-схемы, состоящая из двух модулей. Рис. 6.14. показывает эти два модуля.
(рис 6.14) Блок-схема модулей ICMPОсновные алгоритмы работы модулей ICMP даны на рис. 6.15., рис. 6.16.

(рис 6.16) Алгоритм работы модуля ввода ICMP(рис 6.15) Алгоритм работы модуля вывода ICMPВходной модуль обрабатывает все полученные ICMP-сообщения. Он вызывается, когда ICMP-пакет доставлен к нему от уровня IP. Если полученный пакет — запрос или ходатайство, модуль создает ответ или извещение и отсылает его.
Если полученный пакет — сообщение переназначения, модуль использует информацию, чтобы модифицировать таблицу маршрутизации. Если полученный пакет — сообщение об ошибках, модуль передает протокол о ситуации, которая вызывала ошибку. Алгоритм показан выше на рис. 6.15.
Модуль вывода отвечает за создание запроса ходатайства или сообщения об ошибках, которые нужны протоколам более высокого уровня или протоколам IP. Модуль получает запрос от IP, UDP или TCP, чтобы послать одно из ICMP-сообщений об ошибках. Если запрос от IP, модуль вывода должен сначала проверить, что запрос разрешен. Напомним, что ICMP-сообщение не может быть создано для четырех ситуаций: для пакета IP, несущего сообщение об ошибках ICMP; для фрагментированного пакета IP; для пакетов IP, рассылаемых по многим адресам; или для пакета IP, имеющего адрес IP 0.0.0.0 или 127.X.Y.Z. Алгоритм работы модуля показан на рис.6.16.
Можно отметить, что модуль вывода (оператор 1 на рис. 6.16) может также получить запрос от прикладной программы, чтобы послать один из запросов ICMP или сообщений ходатайства.
198.123.46.219. Если маска подсети 255.255.255.192, каков идентификатор подсети? К какому классу принадлежит сеть?Тип: Эхо-запрос, Идентификатор: 123, Порядковый номер: 25, Сообщение: Hello.
130.45.3.3 и адресом пункта назначения 201.23.4.6. Маршрутизатор не может найти адрес в таблице маршрутизации. Заполните поле IP-адреса пункта назначения (насколько вы можете) для сообщения ICMP.03 0310 20 00 00 00 00Каков тип сообщения? Какой код? Какова цель сообщения?
52,453,000. Если часы передатчика на 5 мсек. медленнее, каково время передачи в одну сторону?13,560,000, 13,562,000, 13,565,300 соответственно. Каково время распространения при передаче? Каково время получения? Какое время туда и обратно? Какова разность между генератором передатчика и приемника?Дополнительный материал для прохождения тестирования к лекции, Вы можете скачать здесь.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.