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

Здесь мы будет обсуждать несколько примеров и основных методов
обеспечения безопасности системы. Конечно, охваченные темы не могут
решить всех проблем безопасности, с которыми вы столкнетесь; они
просто служат иллюстрацией проблем, которые могут возникнуть. Поэтому,
необходимо прочитать хорошую книгу по безопасности, особенно
администратору сетевой системы. Simon Garfinkel "Практическая UNIX
Безопасность" ( см. [ GETST "безопасность"]) -- очень рекомендую.

Безопасность системы начинается с хорошего администрирования
системы. Это включает в себя проверку собственности и разрешений всех
жизненено важных файлов и каталогов, контроль использования
привилигерованных прав, и т.д.. COPS программа, например, будет
проверять вашу файловую систему и общие файлы конфигурации на
необычных разрешения и другие аномалии. Также следует ввести
определенные правила по созданию пользовательских паролей, которые
позволяли бы уменьшить вероятность их подбора. Например, потребовать
чтобы пароль имел по крайней мере пять букв, и содержал как верхние

- 30 -

так и низкие регистры и цифры.

При создании сервиса доступного по сети, постарайтесь дать ему
"наименьшие привилегии," удастовертесь что Вы не разрешаете ему делать
вещи, которые не требуются для его работы. Например, Вы должны делать
программы с привилегии root только, когда они действительно нуждаются
в этом. Например, если Вы хотите разрешить бездисковым хостам
загружаться от вашей машины, Вы должны обеспечить TFTP (тривиальный
сервис передачи файла) так, чтобы они загружали основные файлы
конфигурации из дириктории /boot. Однако, когда используется
неограниченный TFTP, это позволяет любому прочитать общедоступные
файлы с вашей машины. Если это не то, что Вы хотите, почему бы не
ограничить TFTP сервис дирикторией /boot?

По той же самой причине, Вы могли бы захотеть ограничить доступ к
определенным услугам пользователям с определенных хостов. В главе 10.,
мы представляем tcpd, который делает это для разнообразных сетевых
приложений.

Другой важный пункт -- избегайте "опасного" программного
обеспечения. Конечно, любое программное обеспечение, которое Вы
используете может быть опасно, потому что программное обеспечение
может иметь ошибки, так что умные люди могли бы использовать их чтобы
получить доступ к вашей системе. Подобные вещи случаются и нет никакой
полной защиты против этого. Эта проблема касается как бесплатного, так
и коммерческого программного обеспечения. Однако, программы, которые
требуют специальных привилегий несоизмеримо опаснее чем другие, потому
что любая лазейка может иметь непоправимые последствия. Если Вы
устанавливаете сетевую программу будте вдвойне осторожны и ничего не
пропускаете в документации, чтобы случайно не нарушить безопасность
системы. Вы не можете исключить того, что ваши предосторожности могут
потерпеть неудачу, независимо от того насколько осторожный Вы были.
Поэтому Вы должны удостовериться, что Вы обнаружите злоумышленников
сразу же после их появления. Хорошее начало -- проверка log файлов
системы, но злоумышленник вероятно умный человек, и будет удалять
любые очевидные следы перед уходом. Однако, имеются инструменты
подобно tripwire, которые позволяют Вам проверять жизненно важные
системные файлы и регистрировать были ли их содержание или разрешения

- 31 -

изменены. Tripwire вычисляет различные сильные контрольные суммы по
этим файлам и хранит их в базе данных. Потом контрольные суммы
повторно вычисляются и сравниваются с сохраненными для обнаружения
любых модификации.

2.6. Обзор следующих глав

Следующие несколько глав будут иметь дело с конфигурированием
Linux для TCP/IP сети, и с управлением некоторыми главными
приложениями. Прежде чем пачкать наши руки редактированием файлов и
подобными вещами мы немного исследуем IP в 3 главе. Если Вы уже знаете
относительно IP маршрутизации, и как выполняется address resolution,
Вы можете пропустить эту главу.

Глава 4. Обсуждение основных проблем конфигурации, типа установка
ядра и введения вашей Ethernet карты. Конфигурация ваших
последовательных портов охвачена в отдельной главе, потому что их
обсуждение не относится только к TCP/IP сети, но и к UUCP.

Глава 6. Помогает Вам отконфигурировать вашу машину для TCP/IP.
Она также описывает несколько полезных инструментов, которые Вы можете
использовать для проверки и отладки ваших установок Следующая глава
рассказывает как конфигурировать hostname resolution и объясняет как
установить сервер имен.

Это сопровождается двумя главами показывающими конфигурирование и
использование SLIP и PPP. Глава 8. Объясняет как установить SLIP связь
и дает детальные рекомендации по запуску программ, которые позволяют
автоматизировать большинство необходимых шагов. Глава 9. охватывает
PPP и pppd.

Глава 10. Дает короткое представление о некоторых из наиболее
важных сетевых приложений, типа rlogin, rcp, и т.д., Она также
охватывает услуги inetd и описывает как Вы можете ограничить
определенные услуги для набора каких-либо хостов.

Следующие две главы обсуждают NIS, Сетевую Информационную
Систему, и NFS, Сетевую Файловую Систему. NIS - полезный инструмент

- 32 -

для распространения административной информации типа паролей
пользователя в локальной сети. NFS позволяет Вам распределить файлы
между несколькими хостами в вашей сети.

Глава 13. Дает Вам представление об администрированию Taylor
UUCP, бесплатного UUCP пакета.

Остаток книги посвящен детальному путешествию по электронной
почте и Usenet Новостям. Глава 14. представляет Вам основные
концепциям электронной почты, типа того как выглядит адрес электронной
почты и как система обработки почты получает ваше сообщение

Главы 15. И 16. Охватывают установку smail и sendmail, два агента
транспортировки почты, которых Вы можете использовать в Linux. Эта
книга описывает оба из них, потому что smail более легкий для
установки (для начинающих), в то время как sendmail более гибок.

Главы 17. И 18. Объясняют пути управления новостями в Usenet и
как установить и использовать C news, популярный пакет программ для
управления Usenet новостями.

Глава 19. Кратко охватывает запуск NNTP daemon, чтобы обеспечить
доступ к новостям для вашей локальной сети.

Глава 20. Наконец показывает Вам как конфигурировать и
обслуживать различные newsreader.
.
- 33 -


3. Проблемы TCP/IP сети

Теперь обратимся к деталям того как вы будете присоединять вашу
Linux машину к сети TCP/IP, включая работу с IP адресами, именами
хостов, и чуть-чуть проблемы маршрутизации. Эта глава дает Вам основу,
которая поможет Вам понять, что требуется для установки системы, в то
время как следующие главы будут охватывать инструменты, с помощью
которых это достигается.


3.1. Сетевой интерфейс

Чтобы скрыть разнообразное оборудование, которое может
использоваться в сетевой среде, TCP/IP определяет абстрактный
интерфейс, через который можно обращаться к аппаратным средствам ЭВМ.
Этот интерфейс предлагает набор действий который является одинаковым
для всех типов аппаратных средств и в основном имеет дело с посылкой и
получением пакетов.

Для каждого переферийного устройства, которое Вы хотите
использовать, в ядре должен быть представлен соответствующий интерфейс
Например, Ethernet интерфейсы в Linux названы eth0 и eth1, а
интерфейсы SLIP -- sl0, sl1, и т.д.. Эти названия интерфейса
используются при конфигурировании, когда Вы хотите определить ядру
специфическое физическое устройство. Они не имеют никакого
назначения кроме этого.

Чтобы работать в TCP/IP сети, данному интерфейсу должен быть
назначен IP адрес, который служит как идентификатор при общении с
остальным миром. Этот адрес различен в зависимости от названия
интерфейса упоминаемого выше; если Вы сравниваете интерфейс с дверью,
тогда адрес подобен пластине с именем, прикрепленной на ней.

Конечно, имеются другие параметры устройства которые необходимо
отрегулировать; один из них - максимальный размер дэйтаграм который
может быть обработан данной частью аппаратуры, также называемый
Maximum Transfer Unit, или MTU. Другие параметры будут представлены

- 34 -

позже.

3.2. IP адреса

Kак упоминается в предыдущей главе, адреса понятные в
соответствии c IP -- это 32-битовые числа. Каждая машине в данной сети
должен быть назначена уникальный адрес.

В локальной сети, которая не использует TCP/IP для связи с
другими сетями, Вы может назначить эти номера согласно вашим
персональным предпочтениям. Однако, для участков Inetrnet, номера
назначаются NIC.

Для более легкого чтения, IP адреса разбивают на четыре 8 битовых
числа, названных octets. Например, quark.physics.groucho.edu имеет IP
адрес 0x954C0C04, который записывается как 149.76.12.4. Этот формат
часто называют dotted quad notation.

Другая причина для такой записи то, что IP адреса разбиваются на
номер сети, который написан в первых octets, и номер хоста, который
является остатком. При обращении к NIC за адресами, Вы не получаете
адрес для каждого отдельного хоста, которые Вы планируете поставить.
Вместо этого, Вам дают сетевой номер, и позволяющий назначать машинам
любые IP адреса из заданного таким образом диапазона.

В зависимости от размера сети, хост часть можем быть меньшей или
большей. В зависимости от различные потребностей имеются несколько
классов сетей, определяющих различное разбиение IP адресов.

Класс A включает сети от 1.0.0.0 до 127.0.0.0. Сетевой номер содержится в
первом octet, что предусматривает 24 разрядную хост часть, сеть
приблизительно из 1.6 миллион хостов.

Класс B содержит сети от 128.0.0.0 до 191.255.0.0; сетевой номер находится в
первых двух octets. Это предполагает 16320 сетей с 65024 хостами
каждый.

Класс C диапазон сетей от 192.0.0.0 до 223.255.255.0, с сетевой номер

- 35 -

содержится в первых трех octets. Это предполагает почти 2 миллиона
сетей по 254 хоста.

Классы D, E, и F Адреса попадающие в диапазон от 224.0.0.0 до 254.0.0.0
являются или экспериментальным, или сохранены для будущего
использования и не определяют какую-либо сеть.

Если мы вернемся к примеру в предыдущей главе, мы увидим что
149.76.12.4, адрес quark, относится к хосту 12.4 в сети 149.76.0.0
класса B.

Вы можете заметить, что в вышеупомянутом списке для каждого octet
в части хоста возможны не все значения. Это потому что номера хоста со
всеми octets равными 0 или 255 сохранены для специальных целей. Адрес
в котором все биты хост части -- ноль относится ко всей сети, а где
все биты хост части 1 назван broadcast (широковещательным) адресом. Он
относится ко всем хостам из указанной сети. Таким образом,
149.76.255.255 не существующий адрес хоста, он относится ко всем
хостам сети 149.76.0.0.

Имеются еще два зарезервированных адреса, 0.0.0.0 и 127.0.0.0.
Первый назван default route(путь по умолчанию), последний loopback
(кольцевым) адресом. default route используется при маршрутизации IP
дэйтаграм, с которыми мы будет иметь дело ниже.

Сеть 127.0.0.0 сохранена для IP работы внутри хоста. Обычно,
адрес 127.0.0.1 будет назначен специальному интерфейсу на вашем хосте,
так называемому интерфейсу loopback, который действует подобно
закрытому кругообороту. Любой IP пакет переданный ему от TCP или UDP
будет возвращен к ним как будто он только что прибыл из некоторой
сети. Это позволяет тестировать сетевое программное обеспечение без
использования "реальной" сети. Также он полезен, когда Вы хотите
использовать сетевое программное обеспечение на автономном хосте.
Например, большое количество UUCP участков не имеют IP связи вообще,
но все же хотят управлять INN системой новостей. Однако для правильной
работы под Linux, INN требует интерфейса loopback.

3.3. Address Resolution(поиск по адресу).

- 36 -


Теперь, когда вы видели как создаются IP адреса, Вы можете
спросить как же они используются в Ethernet при адресации различных
хостов? В конце концов Ethernet протокол опознает хосты по шести
байтовому адресу, который не имеет абсолютно ничто общего с IP
адресом.

Именно поэтому необходим механизм, переводящий IP адреса в адреса
Ethernet. Это так называемый Address Resolution Protocol (Протокол
Решения Адреса), или ARP. Фактически, ARP не ограничен Ethernet, он
используется и на сетях других типов. Идея, лежащая в основе ARP
аналогична способу применяемому большинством людей, когда они хотят
найти господина X. Они ходят по толпе и выкрикивают его имя. И если он
там, он откликнется.

Когда ARP хочет выяснять Ethernet адрес соответствующий данному
IP адрес, он использует особенность Ethernet известную как
"broadcast"(широковещательное), когда дэйтаграмы адресовываются
одновременно всем станциям в сети. Широковещательная дэйтаграма
посланная ARP содержит запрос с IP адресом. Каждый хост сравнивает его
с собственным адресом, и если они совпадают, возвращает ARP-ответ на
спрашивающий хост. Спрашивающий хост может теперь извлечь Ethernet
адрес отправителя из этого ответа.

Конечно Вы могли бы удивиться как хост может знать на котором из
миллионов Ethernet во всем мире должен находить желаемый хост, и
почему это вообще должен быть Ethernet. Все это называется
Routing(маршрутизация), а именно выяснение физического местоположения
хоста в сети. Это и будет темой следующей секции.

Давайте пока еще поговорим об ARP. Если хост обнаружил Ethernet
адрес, он сохранит его в ARP кэше, чтобы, когда в следующий раз
потребуется послать дэйтаграму рассматриваемому хосту, не требовалось
тратить время на его поиск. Однако, он не знает сохранить ли эту
информацию навсегда; например, на удаленном хосте могут поменять
Ethernet карту, так что хранимая информация окажется не верной. Что
потребует через некоторое время еще раз полностью повторить
описанную процедуру.

- 37 -


Иногда, также необходимо выяснять IP адрес связанный с данным
Ethernet адресом. Это случается, когда бездисковая машина хочет
загрузится с сервера по сети, что является весьма общей ситуацией для
локальных сетей. Бездисковый клиент, однако, не имеет никакой
информацию относительно себя кроме Ethernet адреса! Он посылает
широковещательное сообщение содержащее просьбу к серверу сообщить ему
его IP адрес. Для этого существует другой протокол, называемый
Reverse Address Resolution Protocol (Реверсивный ARP), или RARP. А
также BOOTP протокол, который служит для определения процедуры
загрузки бездисковых клиентов по сети.

3.4. IP маршрутизация

3.4.1. IP Сети

<> Когда Вы пишете письмо, Вы обычно помещаете на конверте полный
адрес: страну, штат, почтовый индекс, и т.д.. После того, как Вы
опускаете его в почтовый ящик, почта доставит его по месту назначения:
оно будет послано обозначенной стране, чья национальное почта пошлет
его в требуемый штат, и т.д.. Преимущество этой иерархической схемы
довольно очевидно: Везде, где Вы отправляете по почте письмо, местный
начальник почтового отделения будет точно знать, куда передать это
письмо, и не должен заботиться, которым путем письмо будет
путешествовать.

IP сети построины подобным образом. Весь Inetrnet состоит из
набора сетей, названных автономными системы. Каждая такая система
производит всю маршрутизацию между своими членами так, что задача
посылки дэйтаграм сведена к обнаружению пути к сети с требуемым
хостом. Это означает, что как только дэйтаграма вручена любому хосту
который находится в той же сети, обработка выполняется исключительно
данной сетью.

3.4.2. Подсети

Эта структура отражена в разбиении IP адреса на хост и сетевую
части, как объяснено выше. ПО умолчанию, сеть мест назначения

- 38 -

получается из сетевой части IP адреса. Таким образом, хосты с
идентичными IP адресами сети должны располагаться в пределах одной
сети, и наоборот. (2)

Имеет смысл предложить подобную схему также и внутри сети, так
как она может состоять из набора сотен меньших сетей, где самыми
маленькими единицами являются физические сети типа Ethernets. Поэтому,
IP позволяет Вам поделить IP сеть на несколько подсетей.

Подсеть принимает ответственность за доставку дэйтаграм для
определенного диапазона IP адресов. Как с классами A, B, или C, она
идентифицируется сетевой частью IP адресов. Однако, сетевая часть
теперь расширена, чтобы включить некоторые биты от хост части. Число
битов которые интерпритируются как номер в подсети задается так
называемой subnet(подсетевой) маской, или netmask. Это - 32 разрядное
число, которое определяет разрядную маску для сетевой части IP
адреса.

Сеть Groucho Marx Университета - пример такой сети. Она имеет
класс B с сетевым номером 149.76.0.0, и netmask поэтому равен
255.255.0.0.

Внутри, сеть GMU состоит из нескольких меньших сетей, типа
локальных сетей различных отделов. Так что диапазон IP адресов разбит
на 254 подсети, от 149.76.1.0 до 149.76.254.0. Например, отдел
теоретической физики имеет номер 149.76.12.0. Университетский
оптиковолоконный кабель тоже сеть с собственным номером 149.76.1.0.
Эти подсети имеют одинаковый сетевой IP адрес, в то время как третья
octet используется, чтобы различать их между собой. Таким образом
они будут использовать подсетевую маску 255.255.255.0.

Картинка 3.4.2 показывает как 149.76.12.4, адрес quark,
интерпритируется по-разному когда адрес принят как обычный адрес сети
класса B, и когда используется с подсетью.

Стоит заметить что subnetting (так названа техника создания
подсетей) -- чисто внутреннее дело сети. Подсети создаются сетевым
владельцем ( или администратором). Часто, подсети создаются чтобы

- 39 -

отразить существующие границы, будь они физические (два Ethernets),
административные (между двумя отделами) или географические. Однако,
эта структура воздействует только на внутреннее поведение сети, и
полностью невидима для внешнего мира.

3.4.3. Gateways

Subnetting - не только организационная деление, но часто и
естественное следствие границ аппаратных средств. Знания хоста о
строении данной физической сети, типа Ethernet, являются очень
ограниченными: Единственные хосты, с которыми они способны говорить
непосредственно, те, что находятся в той же сети. Ко всем другим
хостам они могут обращаться только через так называемый gateways.
Gateway -- хост который связан с двумя или больше физическими сетями
одновременно и конфигурирован так, чтобы перекачивать пакеты между
ними.

IP достаточно легко распознать находится ли хост на местной
физической сети, различные физические сети должны принадлежать
различным IP сетям. Например сетевой номер 149.76.4.0 сохранен для
хостов в локальной сети математиков. При посылке дэйтаграм к quark,
сетевое программное обеспечение на erdos немедленно видит по IP
адресу, 149.76.12.4, что хост места назначения находится в другой
физической сети, и поэтому может быть достигнут только через gateway
(sophus по умолчанию).

Sophus непосредственно связан с двумя отличными подсетями:
отделом математики, и университетской магистралью. Они доступы через
различные интерфейсы (eth0 и fddi0 соответственно). Но какой IP адрес
мы ему назначаем? 149.76.1.0 или 149.76.4.0?

Ответ: оба. При разговоре с сервером в локальной сети
математиков, sophus использует IP адрес 149.76.4.1, а при разговоре с
хостом на магистраль, он должен использовать 149.76.1.4.

Таким образом, gateway получает по одному IP адресу на каждую
сеть, к которой он подключен. Эти адреса (вместе с netmask) привязаны
к интерфейсу через, который обращаются подсети. Таким образом,

- 40 -

интерфейсы и адреса sophus связаны так:

----------------------------------------
+-------+-------------+----------------+
| Интерфейс| адрес | Netmask |
+-------+-------------+----------------+
+-------+-------------+----------------+
| Eth0 | 149.76.4.1 | 255.255.255.0 |
| fddi0 | 149.76.1.4 | 255.255.255.0 |
| Lo | 127.0.0.1 | 255.0.0.0 |
+-------+-------------+----------------+
+-------+-------------+----------------+

Последняя запись описывает loopback интерфейс lo.

На картинке 3.4.3 изображена топология части сети Groucho Marx Университета
(GMU). Хосты, находящиеся в двух подсетях в то же самое время показываются с
обоими адресами.

Вообще, Вы можете не обращать внимание на различия между адресами
хоста и интерфейса. Относитесь к адресу хоста, который находятся
только в одной сети, как к адресу того и другого, хотя строго говоря
это Ethernet интерфейс имеет IP адрес. Однако, это различие ощутимо
только, когда Вы работаете с gateway.

3.4.4. Таблица маршрутизации

Теперь сосредоточим наше внимание на том, как IP выбирает gateway
при доставке дэйтаграм к определенной сети.

Как мы видели раньше erdos, когда передавал дэйтаграмы для quark,
проверил место назначения и нашел, что его нет в местной сети. Поэтому
он посылает ее gateway, sophus, который теперь сталкивается с той же
самой задачей. Sophus определяет, что quark не находится в сетях, с
которыми он непосредственно связан, так что он передает эту дэйтаграм
другому gateway, чтобы он перенаправил ее дальше. Правильный выбор был
бы niels (gateway Отдела Физики). Но sophus нуждается в некоторой
информации чтобы определить подходящий gateway.

- 41 -


Для этого используется таблица IP маршрутизации, которая
определяет какие сети присоединены с помощью каких gateways.
Обязательно должен быть указан маршрут по умолчанию (the default
route), по которому будут направляться все пакеты с адресами в
неизвестных сетях. Этот gateway связан с сетью 0.0.0.0.. На sophus,
эта таблица могла бы напоминать эту:

-----------------------------------------
+------------+-------------+------------+
| Сеть | Gateway | Интерфейс |
+------------+-------------+------------+
+------------+-------------+------------+
| 149.76.1.0 | - | Fddi0 |
| 149.76.2.0 | 149.76.1.2 | fddi0 |
| 149.76.3.0 | 149.76.1.3 | fddi0 |
| 149.76.4.0 | - | Eth0 |
| 149.76.5.0 | 149.76.1.5 | fddi0 |
|... | ... | ... |
| 0.0.0.0 | 149.76.1.2 | fddi0 |
+------------+-------------+------------+
+------------+-------------+------------+

Маршруты к сетям, с которыми sophus связан непосредственно
обозначаются "-" в столбце gateway.

Таблицы маршрутизации могут быть построены различными средствами.
Для маленькой сети, наиболее эффективно строить их вручную и
передавать их IP, используя маршрутизирующую команду во время загрузки
системы. (см. главу 6.). Для больших сетей, они строятся и
регулируются во время работы маршрутизирующих демонов; они запускаются
на центральном хосте и обмениваются информацией с другими компьютерами
для вычисления "оптимального" маршрута между членами сетей.

В зависимости от размера сети используются различные протоколы
маршрутизации. Для маршрутизации в автономной системе (типа
университетского городка), лучше подходит RIP, Routing Information
Protocol (протокол маршрутной информации), который предложен в BSD

- 42 -

демоне. Для маршрутизации между автономными системами используются
внешние протоколы маршрутизации типа EGP (Внешний Gateway Протокол),
или BGP ( Пограничный Gateway Протокол); они ( а также RIP) были
предложены в gated демоне( University of Cornell's).

3.4.5. Метрические значения

Динамическая маршрутизация основанная на RIP выбирает самый
лучший маршрут к некоторому хосту или сети, основываясь на наборе
"hops"(перелетов), то есть gateways дэйтаграм, рассылаемых перед
передачей основной информации. Чем более короткий маршрут, тем лучше
RIP его оценивает. Очень длинные маршруты с 16 или больше перелетов
рассматриваются как неподходящие и отвергаются.

Чтобы использовать RIP для управления информацией,
маршрутизируемой внутри вашей сети, Вы должны запустить gated на всех
хостах. Во время загрузки gated проверяет все активные сетевые
интерфейсы. Если имеется больше чем один активный интерфейс ( не
считая loopback ), это предполагает что хост передает пакеты между
несколькими сетями, и будет активно обмениваться маршрутной
информацией. Иначе, он будет только пассивно получать RIP пакеты и
модернизировать локальную таблицу маршрутизации.

Получив информацию от локальной таблицы маршрутизации, gated
вычисляет длину маршрута по так называемому метрическому значению
связанному с записью в таблице. Это метрическое значение задается
администратором системы при конфигурировании маршрута и должна
отражать фактическую трудоемкость использования этого маршрута.
Поэтому, размер маршрута к подсети, с которой хост непосредственно
связан, должно всегда быть установлено в ноль, в то время как
маршрут проходящий через два gateways должен иметь размер два. Однако,
обратите внимание на то, что Вы не должны беспокоиться относительно
метрик, когда Вы не используете RIP или gated.

3.5. The Internet Control Message Protocol
(Межсетевой протокол контрольных сообщений)

IP имеет протокол-компаньон, что ж мы до сих пор не поговорили о

- 43 -

нем. Это межсетевой протокол контрольных сообщений (ICMP) и
используется он сетевым кодом ядра, чтобы передавать сообщения об
ошибках и т. п. другим хостам. Например, предположите что Вы
находитесь на erdos и хотите использовать telnet через 12345 порт на
quark, но на этом порте отсутствует слушающий процесс. Когда приходит
первый TCP пакет на этот порт, ядро определит это и отошлет ICMP
сообщение.

Имеются множество ICMP сообщений, большинство из них сообщают о
каких-либо ошибках. Однако, имеется очень интересное сообщение
названное Перенаправляющим сообщением (Redirect message). Оно
генирируется модулем маршрутизации, когда он обнаруживает что другой