Мы — долго запрягаем, быстро ездим, и сильно тормозим.

RFC
  RFC1180 (TCP/IP)
  RFC791 (IP)
  RFC792 (ICMP)
  RFC793 (TCP)
  RFC768 (UDP)
  RFC1459 (IRC)
  RFC1521 (MIME)
  RFC1951 (DEFLATE)
  RFC2839 (IKS)
Программирование
FreeBSD
man
EXIM


www.lissyara.su —> документация —> RFC —> RFC1180 (TCP/IP)

RFC1180 Семейство протоколов TCP/IP


RFC1180 Семейство протоколов TCP/IP в переводе Брежнева и Смелянского
     
Содержание


1.  Введение .......................................................    1

2.  Основы TCP/IP ..................................................    1

2.1.  Модуль IP создает единую логическую сеть .....................    1
2.2.  Структура связей протокольных модулей ........................    2
2.3.  Терминология .................................................    3
2.4.  Потоки данных ................................................    3
2.5.  Работа с несколькими сетевыми интерфейсами ...................    5

3.  Ethernet .......................................................    6
3.1.  Аналогия с разговором ........................................    7

4.  Протокол ARP ...................................................    7
4.1.  ARP-таблица для преобразования адресов .......................    8
4.2.  Порядок преобразования адресов ...............................    8
4.3.  Запросы и ответы протокола ARP ...............................    9
4.4.  Продолжение преобразования адресов ...........................   10

5.  Межсетевой протокол IP .........................................   11
5.1.  Прямая маршрутизация .........................................   11
5.2.  Косвенная маршрутизация ......................................   12
5.3.  Правила маршрутизации в модуле IP ............................   14
5.4.  IP-адрес .....................................................   15
5.5.  Выбор адреса .................................................   17
5.6.  Подсети ......................................................   17
5.7.  Как назначать номера сетей и подсетей ........................   18
5.8.  Имена ........................................................   19
5.9.  IP-таблица маршрутов .........................................   20
5.10.  Подробности прямой маршрутизации ............................   21
5.11.  Порядок прямой маршрутизации ................................   22
5.12.  Подробности косвенной маршрутизации .........................   22
5.13.  Порядок косвенной маршрутизации .............................   23

6.  Установка маршрутов ............................................   25
6.1.  Фиксированные маршруты .......................................   25
6.2.  Перенаправление маршрутов ....................................   26
6.3.  Слежение за маршрутизацией ...................................   28
6.4.  Протокол ARP с представителем ................................   30

7.  Протокол UDP ...................................................   32
7.1.  Порты ........................................................   33
7.2.  Контрольное суммирование .....................................   33

8.  Протокол TCP ...................................................   34

9.  Протоколы прикладного уровня ...................................   35
9.1.  Протокол TELNET ..............................................   36
9.2.  Протокол FTP .................................................   37
9.3.  Протокол SMTP ................................................   37
9.4.  r-команды ....................................................   37
9.5.  NFS ..........................................................   38
9.6.  Протокол SNMP ................................................   38
9.7.  X-Window .....................................................   38

10.  Взаимозависимость протоколов семейства TCP/IP .................   39

Приложение 1.  Путеводитель по RFC .................................   40

Приложение 2.  Стандарты семейства протоколов TCP/IP ...............   75


1.  Введение

    Семейство протоколов TCP/IP широко  применяется  во  всем  мире  для
объединения компьютеров в сеть Internet.  Единая сеть Internet состоит из
множества сетей различной физической природы,  от  локальных  сетей  типа
Ethernet  и Token Ring, до глобальных сетей типа NSFNET.  Основное внима-
ние в книге уделяется принципам организации  межсетевого  взаимодействия.
Многие технические детали, исторические вопросы опущены.  Более подробную
информацию о протоколах TCP/IP можно найти в RFC (Requests For  Comments)
-  специальных  документах,  выпускаемых  Сетевым  Информационным Центром
(Network Information Center - NIC).  Приложение 1  содержит  путеводитель
по  RFC,  а  приложение 2 отражает положение дел в области стандартизации
протоколов семейства TCP/IP на начало 1991 года.

    В книге приводятся примеры, основанные на  реализации  TCP/IP  в  ОС
UNIX.  Однако основные положения применимы ко всем реализациям TCP/IP.

    Надеюсь, что эта книга будет полезна тем, кто профессионально  рабо-
тает или собирается начать работать в среде TCP/IP: системным администра-
торам, системным программистам и менеджерам сети.

2.  Основы TCP/IP

    Термин "TCP/IP" обычно обозначает все, что связано с протоколами TCP
и  IP.   Он охватывает целое семейство протоколов, прикладные программы и
даже саму сеть.  В состав семейства входят протоколы UDP, ARP, ICMP, TEL-
NET,  FTP  и  многие другие.  TCP/IP - это технология межсетевого взаимо-
действия,  технология  internet.   Сеть,  которая  использует  технологию
internet, называется "internet".  Если речь идет о глобальной сети, объе-
диняющей множество сетей с технологией internet, то ее называют Internet.

2.1.  Модуль IP создает единую логическую сеть

    Архитектура протоколов TCP/IP предназначена для  объединенной  сети,
состоящей  из  соединенных  друг  с  другом шлюзами отдельных разнородных
пакетных подсетей, к которым подключаются разнородные машины.  Каждая  из
подсетей  работает в соответствии со своими специфическими требованиями и
имеет свою природу средств связи.  Однако предполагается, что каждая под-
сеть  может  принять  пакет  информации (данные с соответствующим сетевым
заголовком) и доставить его по указанному адресу в этой  конкретной  под-
сети.   Не  требуется,  чтобы подсеть гарантировала обязательную доставку
пакетов и имела надежный сквозной протокол.  Таким образом,  две  машины,
подключенные к одной подсети могут обмениваться пакетами.

    Когда необходимо передать пакет между машинами, подключенными к раз-
ным подсетям, то машина-отправитель посылает пакет в соответствующий шлюз
(шлюз подключен к подсети также как обычный узел).  Оттуда пакет  направ-
ляется по определенному маршруту через систему шлюзов и подсетей, пока не
достигнет шлюза, подключенного к той же подсети, что и машина-получатель;
там  пакет  направляется  к  получателю.   Объединенная сеть обеспечивает
датаграммный сервис.

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

2.2.  Структура связей протокольных модулей

    Логическая структура сетевого программного обеспечения, реализующего
протоколы  семейства  TCP/IP  в  каждом узле сети internet, изображена на
рис.1.  Прямоугольники обозначают обработку данных, а линии,  соединяющие
прямоугольники,  -  пути  передачи  данных.   Горизонтальная  линия внизу
рисунка обозначает кабель сети Ethernet, которая используется в  качестве
примера  физической  среды;  "o"  - это трансивер.  Знак "*" - обозначает

                         ------------------------------
                         |    прикладные процессы     |
                         |  ... \ | / ... \ | / ...   |
                         |     -------   -------      |
                         |     | TCP |   | UDP |      |
                         |     -------   -------      |
                         |           \    /           |
                         |           ------           |
                         |  -------  | IP |           |
                         |  | ARP |  -*----           |
                         |  -------   |               |
                         |         \  |               |
                         |        --------            |
                         |        | ENET |            |
                         |        ---@----            |
                         |           |                |
                         ------------|-----------------
                                     |
                  -------------------o--------
                   кабель Ethernet

       Рис.1. Структура протокольных модулей в узле сети TCP/IP

IP-адрес, а "@" - адрес узла в сети Ethernet (Ethernet-адрес).  Понимание
этой  логической структуры является основой для понимания всей технологии
internet.  В дальнейшем мы будем часто ссылаться на эту схему.

2.3.  Терминология

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

    Драйвер - это программа, непосредственно взаимодействующая с сетевым
адаптером.   Модуль - это программа, взаимодействующая с драйвером, сете-
выми прикладными программами  или  другими  модулями.   Драйвер  сетевого
адаптера  и,  возможно,  другие  модули,  специфичные для физической сети
передачи данных, предоставляют сетевой интерфейс для протокольных модулей
семейства TCP/IP.

    Название блока данных, передаваемого по сети, зависит  от  того,  на
каком уровне стека протоколов он находится.  Блок данных, с которым имеет
дело сетевой интерфейс, называется кадром;  если  блок  данных  находится
между сетевым интерфейсом и модулем IP, то он называется IP-пакетом; если
он - между модулем IP и модулем UDP, то  -  UDP-датаграммой;  если  между
модулем  IP  и  модулем TCP, то - TCP-сегментом (или транспортным сообще-
нием); наконец, если блок данных находится на уровне  сетевых  прикладных
процессов,  то  он  называется  прикладным сообщением.

    Эти определения, конечно, несовершенны и неполны.   К  тому  же  они
меняются  от   публикации   к  публикации.   Более подробные  определения
можно  найти в RFC-1122,  раздел 1.3.3.

2.4.  Потоки данных

    Рассмотрим потоки данных, проходящие через стек протоколов,  изобра-
женный на рис.1.  В случае использования протокола TCP (Transmission Con-
trol Protocol - протокол управления передачей), данные  передаются  между
прикладным  процессом  и  модулем  TCP.   Типичным  прикладным процессом,
использующим протокол TCP, является модуль FTP (File Transfer Protocol  -
протокол   передачи   файлов).   Стек  протоколов  в  этом  случае  будет
FTP/TCP/IP/ENET.  При использовании протокола UDP (User Datagram Protocol
-  протокол пользовательских датаграмм), данные передаются между приклад-
ным процессом и модулем UDP.  Например, SNMP (Simple  Network  Management
Protocol  -  простой  протокол управления сетью) пользуется транспортными
услугами UDP.  Его стек протоколов выглядит так: SNMP/UDP/IP/ENET.

    Модули TCP, UDP и драйвер Ethernet являются мультиплексорами n x  1.
Действуя  как  мультиплексоры,  они  переключают несколько входов на один
выход.  Они также являются демультиплексорами 1 x n.   Как  демультиплек-
соры,  они переключают один вход на один из многих выходов в соответствии
с полем типа в заголовке протокольного блока данных (рис.2).

    Когда Ethernet-кадр попадает в драйвер сетевого интерфейса Ethernet,
он  может быть направлен либо в модуль ARP (Address Resolution Protocol -
адресный протокол), либо в модуль IP (Internet Protocol - межсетевой про-
токол).   На то, куда должен быть направлен Ethernet-кадр, указывает зна-
чение поля типа в заголовке кадра.

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

    Если UDP-датаграмма попадает в модуль UDP, то на основании  значения
поля  "порт"  в  заголовке  датаграммы определяется прикладная программа,
которой должно быть передано прикладное  сообщение.   Если  TCP-сообщение
попадает в модуль TCP, то выбор прикладной программы, которой должно быть
передано сообщение, осуществляется на основе значения поля "порт" в заго-
ловке TCP-сообщения.

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


         1  2  3 .... n     |           1  2  3 .... n      ^
          \ |  |     /      |            \ |  |     /       |
        -----------------  поток      -------------------  поток
        | мультиплексор |  данных     | демультиплексор |  данных
        -----------------   |         -------------------   |
               |            |                 ^             |
               v            V                 |             |
               1                              1

           Рис.2. Мультиплексор n x 1 и демультиплексор 1 x n

    Данные от прикладного процесса проходят через модули  TCP  или  UDP,
после  чего  попадают  в  модуль IP и оттуда - на уровень сетевого интер-
фейса.

    Хотя технология internet поддерживает много различных сред  передачи
данных,  здесь  мы  будем  предполагать  использование  Ethernet, так как
именно эта среда  чаще  всего  служит  физической  основой  для  IP-сети.
Машина  на  рис.1  имеет  одну точку соединения с Ethernet.  Шестибайтный
Ethernet-адрес является уникальным для каждого сетевого адаптера  и  рас-
познается драйвером.

    Машина имеет также четырехбайтный IP-адрес.  Этот  адрес  обозначает
точку  доступа к сети на интерфейсе модуля IP с драйвером.  IP-адрес дол-
жен быть уникальным в пределах всей сети Internet.

    Работающая машина всегда знает свой IP-адрес и Ethernet-адрес.

2.5.  Работа с несколькими сетевыми интерфейсами

    Машина может быть подключена одновременно к нескольким средам  пере-
дачи данных.  На рис.3 показана машина с двумя сетевыми интерфейсами Eth-
ernet.  Заметим, что она имеет 2 Ethernet-адреса и 2 IP-адреса.

    Из представленной схемы видно, что для машин с несколькими  сетевыми
интерфейсами  модуль  IP выполняет функции мультиплексора n x m и демуль-
типлексора m x n (рис.4).

                    ---------------------------------
                    |      прикладные процессы      |
                    |   ... \ | / .... \ | / ...    |
                    |      -------    -------       |
                    |      | TCP |    | UDP |       |
                    |      -------    -------       |
                    |            \    /             |
                    |            ------             |
                    |   -------  | IP |  -------    |
                    |   | ARP |  -*--*-  | ARP |    |
                    |   -------   |  |   -------    |
                    |        \    |  |    /         |
                    |      --------  --------       |
                    |      | ENET |  | ENET |       |
                    |      ---@----  ---@----       |
                    |         |         |           |
                    ----------|---------|------------
                              |         |
                              |      ---o---------------
                --------------o----          Ethernet 2
                Ethernet 1

         Рис.3. Узел сети TCP/IP с двумя сетевыми интерфейсами

      1  2  3 .... n      |           1  2  3 ...... n      ^
       \ |  |     /       |            \ |  |       /       |
     -----------------  поток        -------------------  поток
     | мультиплексор |  данных       | демультиплексор |  данных
     -----------------    |          -------------------    |
       / |  | ... \       V            / |  | ..... \       |
      1  2  3      m                  1  2  3        m

        Рис.4. Мультиплексор n x m и демультиплексор m x n

Таким образом, он осуществляет  мультиплексирование  входных  и  выходных
данных  в  обоих  направлениях.  Модуль IP в данном случае сложнее, чем в
первом примере, так как может передавать  данные  между  сетями.   Данные
могут  поступать  через  любой  сетевой  интерфейс и быть ретранслированы
через любой другой сетевой интерфейс.  Процесс передачи пакета  в  другую
сеть  называется ретрансляцией IP-пакета.  Машина, выполняющая ретрансля-
цию, называется шлюзом. [1]

    Как показано на рис.5, ретранслируемый пакет не  передается  модулям
TCP или UDP.  Некоторые шлюзы вообще могут не иметь модулей TCP и UDP.

3.  Ethernet

    В этом разделе мы кратко рассмотрим технологию Ethernet.

    Кадр Ethernet содержит адрес назначения, адрес источника, поле  типа
и  данные.  Размер  адреса  в  Ethernet - 6 байт.  Каждый сетевой адаптер
имеет свой Ethernet-адрес.  Адаптер контролирует обмен информацией,  про-

                         -------      -------
                         | TCP |      | UDP |
                         -------      -------
                               \      /
                              ----------
                              |        |
                              |   IP   |
                              |  ____  |
                              | /    \ |
                              ----------
                              /        \
                          данные      данные
                         поступают  отправляются
                          отсюда       сюда

        Рис.5. Пример межсетевой ретрансляции пакета модулем IP

____________________
    [1]   В  документации  по  TCP/IP  термины  шлюз  (gateway)  и   IP-
маршрутизатор (IP-router) часто используются как синонимы.  Мы сочли воз-
можным использовать более распространенный термин "шлюз".
исходящий в сети, и принимает адресованные ему  Ethernet-кадры,  а  также
Ethernet-кадры с адресом "FF:FF:FF:FF:FF:FF" (в 16-ричной системе), кото-
рый обозначает "всем", и используется при широковещательной передаче.

    Ethernet реализует метод МДКН/ОС (множественный доступ  с  контролем
несущей  и  обнаружением  столкновений).  Метод МДКН/ОС предполагает, что
все устройства взаимодействуют в одной среде,  в  каждый  момент  времени
может  передавать  только одно устройство, а принимать могут все одновре-
менно.  Если два устройства пытаются передавать одновременно, то происхо-
дит  столкновение  передач,  и оба устройства после случайного (краткого)
периода ожидания пытаются вновь выполнить передачу.

3.1.  Аналогия с разговором

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

    Каждый человек слышит речь других  людей  (контроль  несущей).   Все
люди в комнате имеют одинаковые возможности вести разговор (множественный
доступ), но никто не говорит слишком долго, так как  все  вежливы.   Если
человек  будет  невежлив,  то  его попросят выйти (т.е.  удалят из сети).
Все молчат, пока кто-то говорит.  Если  два  человека  начинают  говорить
одновременно,  то они сразу обнаруживают это, поскольку слышат друг друга
(обнаружение столкновений).  В этом случае они замолкают и ждут некоторое
время,  после чего один из них вновь начинает разговор.  Другие люди слы-
шат, что ведется разговор, и ждут, пока он кончится, а затем могут начать
говорить  сами.  Каждый человек имеет собственное имя (аналог уникального
Ethernet-адреса). Каждый раз,  когда  кто-нибудь  начинает  говорить,  он
называет  по имени того, к кому обращается, и свое имя, например, "Слушай
Петя, это Андрей, ... ля-ля-ля ..." Если кто-то хочет обратиться ко всем,
то  он говорит: "Слушайте все, это Андрей, ... ля-ля-ля ..." (широковеща-
тельная передача).

4.  Протокол ARP

    В этом разделе мы рассмотрим то, как при посылке IP-пакета определя-
ется  Ethernet-адрес  назначения.  Для отображения IP-адресов в Ethernet-
адреса используется протокол ARP (Address Resolution Protocol -  адресный
протокол).   Отображение  выполняется только для отправляемых IP-пакетов,
так как только в момент отправки создаются заголовки IP и Ethernet.

4.1.  ARP-таблица для преобразования адресов

    Преобразование адресов выполняется путем поиска в таблице.  Эта таб-
лица,  называемая  ARP-таблицей,  хранится в памяти и содержит строки для
каждого узла сети.  В двух столбцах  содержатся  IP-  и  Ethernet-адреса.
Если  требуется преобразовать IP-адрес в Ethernet-адрес, то ищется запись
с соответствующим  IP-адресом.   Ниже  приведен  пример  упрощенной  ARP-
таблицы.

            ---------------------------------------------
            |      IP-адрес           Ethernet-адрес    |
            ---------------------------------------------
            |     223.1.2.1          08:00:39:00:2F:C3  |
            |     223.1.2.3          08:00:5A:21:A7:22  |
            |     223.1.2.4          08:00:10:99:AC:54  |
            ---------------------------------------------

                   Табл.1. Пример ARP-таблицы


    Принято все байты 4-байтного IP-адреса записывать  десятичными  чис-
лами, разделенными точками.  При записи 6-байтного Ethernet-адреса каждый
байт указывается в 16-ричной системе и отделяется двоеточием.

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

4.2.  Порядок преобразования адресов

    В ходе обычной работы сетевая программа, такая как  TELNET,  отправ-
ляет  прикладное сообщение, пользуясь транспортными услугами TCP.  Модуль
TCP посылает соответствующее транспортное сообщение через модуль  IP.   В
результате  составляется  IP-пакет,  который должен быть передан драйверу
Ethernet.   IP-адрес  места  назначения  известен  прикладной  программе,
модулю  TCP  и  модулю IP.  Необходимо на его основе найти Ethernet-адрес
места назначения.  Для определения искомого Ethernet-адреса  используется
ARP-таблица.

4.3.  Запросы и ответы протокола ARP

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

1)   По сети передается широковещательный ARP-запрос.

2)   Исходящий IP-пакет ставится в очередь.

    Каждый сетевой адаптер принимает  широковещательные  передачи.   Все
драйверы  Ethernet  проверяют поле типа в принятом Ethernet-кадре и пере-
дают ARP-пакеты модулю ARP.  ARP-запрос можно интерпретировать так: "Если
ваш  IP-адрес совпадает с указанным, то сообщите мне ваш Ethernet-адрес".
Пакет ARP-запроса выглядит примерно так:

     -----------------------------------------------------------
     |   IP-адрес отправителя              223.1.2.1           |
     |   Ethernet-адрес отправителя        08:00:39:00:2F:C3   |
     -----------------------------------------------------------
     |   Искомый IP-адрес                  223.1.2.2           |
     |   Искомый Ethernet-адрес            <пусто>             |
     -----------------------------------------------------------

                   Табл.2. Пример ARP-запроса


    Каждый модуль ARP проверяет поле  искомого  IP-адреса  в  полученном
ARP-пакете и, если адрес совпадает с его собственным IP-адресом, то посы-
лает ответ прямо по Ethernet-адресу отправителя запроса.  ARP-ответ можно
интерпретировать  так:  "Да, это мой IP-адрес, ему соответствует такой-то
Ethernet-адрес".  Пакет с ARP-ответом выглядит примерно так:

     -----------------------------------------------------------
     |   IP-адрес отправителя              223.1.2.2           |
     |   Ethernet-адрес отправителя        08:00:28:00:38:A9   |
     -----------------------------------------------------------
     |   Искомый IP-адрес                  223.1.2.1           |
     |   Искомый Ethernet-адрес            08:00:39:00:2F:C3   |
     -----------------------------------------------------------

                   Табл.3. Пример ARP-ответа

    Этот ответ получает  машина,  сделавшая  ARP-запрос.   Драйвер  этой
машины  проверяет  поле типа в Ethernet-кадре и передает ARP-пакет модулю
ARP.  Модуль ARP анализирует ARP-пакет и добавляет  запись  в  свою  ARP-
таблицу.

    Обновленная таблица выглядит следующим образом:

            ---------------------------------------------
            |      IP-адрес           Ethernet-адрес    |
            ---------------------------------------------
            |     223.1.2.1          08:00:39:00:2F:C3  |
            |     223.1.2.2          08:00:28:00:38:A9  |
            |     223.1.2.3          08:00:5A:21:A7:22  |
            |     223.1.2.4          08:00:10:99:AC:54  |
            ---------------------------------------------

            Табл.4. ARP-таблица после обработки ответа


4.4.  Продолжение преобразования адресов

    Новая запись в ARP-таблице  появляется  автоматически,  спустя  нес-
колько  миллисекунд  после  того, как она потребовалась.  Как вы помните,
ранее на шаге 2 исходящий IP-пакет был поставлен  в  очередь.   Теперь  с
использованием  обновленной  ARP-таблицы  выполняется  преобразование IP-
адреса в Ethernet-адрес, после чего  Ethernet-кадр  передается  по  сети.
Полностью порядок преобразования адресов выглядит так:

1)   По сети передается широковещательный ARP-запрос.

2)   Исходящий IP-пакет ставится в очередь.

3)   Возвращается ARP-ответ, содержащий информацию о соответствии  IP-  и
    Ethernet-адресов.  Эта информация заносится в ARP-таблицу.

4)   Для преобразования IP-адреса в Ethernet-адрес у  IP-пакета,  постав-
    ленного в очередь, используется ARP-таблица.

5)   Ethernet-кадр передается по сети Ethernet.

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

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

    Следует отметить, что каждая машина имеет отдельную ARP-таблицу  для
каждого своего сетевого интерфейса.

5.  Межсетевой протокол IP

    Модуль IP является базовым элементом технологии  internet,  а  цент-
ральной частью IP является его таблица маршрутов.  Протокол IP использует
эту таблицу при принятии всех решений о маршрутизации IP-пакетов.  Содер-
жание  таблицы  маршрутов  определяется администратором сети.  Ошибки при
установке маршрутов могут заблокировать передачи.

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

5.1.  Прямая маршрутизация

    На рис.6 показана небольшая IP-сеть, состоящая из 3 машин: A, B и C.
Каждая машина имеет такой же стек протоколов TCP/IP как на рис.1.  Каждый
сетевой адаптер этих машин имеет свой Ethernet-адрес.  Менеджер сети дол-
жен присвоить машинам уникальные IP-адреса.

                                 A      B      C
                                 |      |      |
                   --------------o------o------o------
                    Ethernet 1
                    IP-сеть "development"

                        Рис.6. Простая IP-сеть

   Когда A посылает IP-пакет B, то заголовок IP-пакета содержит в  поле
отправителя  IP-адрес  узла A, а заголовок Ethernet-кадра содержит в поле
отправителя Ethernet-адрес A.  Кроме этого, IP-заголовок содержит в  поле
получателя  IP-адрес узла B, а Ethernet-заголовок содержит в поле получа-
теля Ethernet-адрес B.

        -----------------------------------------------------
        |         адрес             отправитель  получатель |
        -----------------------------------------------------
        |   IP-заголовок                A            B      |
        |   Ethernet-заголовок          A            B      |
        -----------------------------------------------------

   Табл.5. Адреса в Ethernet-кадре, передающем IP-пакет от A к B


    В этом простом примере протокол  IP  является  излишеством,  которое
мало  что  добавляет  к  услугам, предоставляемым сетью Ethernet.  Однако
протокол IP требует дополнительных расходов на создание, передачу и обра-
ботку  IP-заголовка.   Когда  в  машине  B модуль IP получает IP-пакет от
машины A, он сопоставляет IP-адрес места  назначения  со  своим  и,  если
адреса совпадают, то передает датаграмму протоколу верхнего уровня.

    В данном случае при взаимодействии A с B используется прямая маршру-
тизация.

5.2.  Косвенная маршрутизация

    На рис.7 представлена более реалистичная картина сети  internet.   В
данном случае сеть internet состоит из трех сетей Ethernet, на базе кото-
рых работают три IP-сети, объединенные шлюзом D.  Каждая IP-сеть включает
четыре  машины;  каждая  машина  имеет  свои  собственные IP- и Ethernet-
адреса.

                             ----- D -------
           A     B     C     |     |       |     E     F     G
           |     |     |     |     |       |     |     |     |
       ----o-----o-----o-----o--   |     --o-----o-----o-----o---
        Ethernet 1                 |          Ethernet 2
        IP-сеть "development"      |          IP-сеть "accounting"
                                   |
                                   |    H     I     J
                                   |    |     |     |
                                 --o----o-----o-----o----------
                                             Ethernet 3
                                             IP-сеть "fuctory"

          Рис.7. Сеть internet, состоящая из трех IP-сетей

    За исключением D все машины имеют стек протоколов, аналогичный пока-
занному  на рис.1.  Шлюз D соединяет все три сети и, следовательно, имеет
три IP-адреса и три Ethernet-адреса.   Машина  D  имеет  стек  протоколов
TCP/IP,  похожий на тот, что показан на рис.3, но вместо двух модулей ARP
и двух драйверов, он содержит три модуля ARP  и  три  драйвера  Ethernet.
Обратим внимание на то, что машина D имеет только один модуль IP.

    Менеджер сети присваивает каждой  сети  Ethernet  уникальный  номер,
называемый  IP-номером  сети.  На рис.7 IP-номера не показаны, вместо них
используются имена сетей.

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

    Когда машина D взаимодействует с машиной A, то  это  прямое  взаимо-
действие.  Когда машина D взаимодействует с машиной E, то это прямое вза-
имодействие.  Когда машина D взаимодействует с машиной H, то  это  прямое
взаимодействие.   Это  так,  поскольку каждая пара этих машин принадлежит
одной IP-сети.

    Однако, когда машина A взаимодействует  с  машинами,  включенными  в
другую  IP-сеть, то взаимодействие уже не будет прямым.  Машина A должена
использовать шлюз D для ретрансляции IP-пакетов в другую IP-сеть.   Такое
взаимодействие называется "косвенным".

    Маршрутизация IP-пакетов выполняется модулями IP и является прозрач-
ной для модулей TCP, UDP и прикладных процессов.

    Если машина A посылает машине E IP-пакет, то  IP-адрес  и  Ethernet-
адрес  отправителя  соответствуют  адресам  A.  IP-адрес места назначения
является адресом E, но поскольку модуль IP в A посылает IP-пакет через D,
Ethernet-адрес места назначения является адресом D.

         ----------------------------------------------------
         |          адрес         отправитель   получатель  |
         ----------------------------------------------------
         |   IP-заголовок             A             E       |
         |   Ethernet-заголовок       A             D       |
         ----------------------------------------------------

   Табл.6. Адреса в Ethernet-кадре, содержащем IP-пакет от A к E
           (до шлюза D)


    Модуль IP в машине D получает IP-пакет и  проверяет  IP-адрес  места
назначения.   Определив,  что  это  не его IP-адрес, шлюз D посылает этот
IP-пакет прямо к E.

         ----------------------------------------------------
         |          адрес        отправитель    получатель  |
         ----------------------------------------------------
         |   IP-заголовок             A             E       |
         |   Ethernet-заголовок       D             E       |
         ----------------------------------------------------

   Табл.7. Адреса в Ethernet-кадре, содержащем IP-пакет от A к E
           (после шлюз D)


    Итак, при прямой маршрутизации  IP-  и  Ethernet-адреса  отправителя
соответствуют  адресам  того  узла,  который  послал  IP-пакет,  а  IP- и
Ethernet-адреса места назначения соответствуют адресам  получателя.   При
косвенной маршрутизации IP- и Ethernet-адреса не образуют таких пар.

    В данном примере сеть internet  является  очень  простой.   Реальные
сети могут быть гораздо сложнее, так как могут содержать несколько шлюзов
и несколько типов физических сред передачи.  В приведенном  примере  нес-
колько  сетей  Ethernet  объединяются шлюзом для того, чтобы локализовать
широковещательный трафик в каждой сети.

5.3.  Правила маршрутизации в модуле IP

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

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

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

    Входящий IP-пакет никогда не ретранслируется через  тот  же  сетевой
интерфейс, через который он был принят.

    Решение о маршрутизации принимается до того, как IP-пакет передается
сетевому драйверу, и до того, как происходит обращение к ARP-таблице.

5.4.  IP-адрес

    Менеджер сети присваивает IP-адреса машинам в соответствии с тем,  к
каким IP-сетям они подключены.  Старшие биты 4-х байтного IP-адреса опре-
деляют номер IP-сети.  Оставшаяся часть IP-адреса  -  номер  узла  (хост-
номер).   Для машины из табл.1 с IP-адресом 223.1.2.1 сетевой номер равен
223.1.2, а хост-номер - 1.  Напомним, что  IP-адрес  узла  идентифицирует
точку доступа модуля IP к сетевому интерфейсу, а не всю машину.

    Существуют 5 классов  IP-адресов,  отличающиеся  количеством  бит  в
сетевом  номере  и  хост-номере.  Класс адреса определяется значением его
первого октета.

    В табл.8 приведено соответствие классов  адресов  значениям  первого
октета и указано количество возможных IP-адресов каждого класса.


                0              8         16          24        31
               ---------------------------------------------------
      Класс A  |0| номер сети |            номер узла            |
               ---------------------------------------------------
               ---------------------------------------------------
      Класс B  |10|      номер сети      |       номер узла      |
               ---------------------------------------------------
               ---------------------------------------------------
      Класс C  |110|          номер сети            | номер узла |
               ---------------------------------------------------
               ---------------------------------------------------
      Класс D  |1110|            групповой адрес                 |
               ---------------------------------------------------
               ---------------------------------------------------
      Класс E  |11110|           зарезервировано                 |
               ---------------------------------------------------

                     Рис.8. Структура IP-адресов

       -------------------------------------------------------
       | Класс Диапазон значений  Возможное      Возможное   |
       |        первого октета   кол-во сетей   кол-во узлов |
       -------------------------------------------------------
       |   A       1 - 126           126          16777214   |
       |   B       128-191          16382           65534    |
       |   C       192-223         2097150           254     |
       |   D       224-239            -             2**28    |
       |   E       240-247            -             2**27    |
       -------------------------------------------------------

            Табл.8. Характеристики классов адресов


    Адреса класса A предназначены  для  использования  в  больших  сетях
общего  пользования.   Они  допускают  большое  количество номеров узлов.
Адреса класса B используются в сетях среднего  размера,  например,  сетях
университетов и крупных компаний.  Адреса класса C используются в сетях с
небольшим числом компьютеров.  Адреса класса D используются  при  обраще-
ниях к группам машин, а адреса класса E зарезервированы на будущее.

    Некоторые IP-адреса являются выделенными и трактуются по-особому.

    ------------------------------
    |         все нули           |  Данный узел
    ------------------------------
    ------------------------------
    |  номер сети |   все нули   |  Данная IP-сеть
    ------------------------------
    ------------------------------
    |   все нули  |  номер узла  |  Узел в данной (локальной) IP-сети
    ------------------------------
    ------------------------------
    |        все единицы         |  Все узлы в данной (локальной) IP-сети
    ------------------------------
    ------------------------------
    |  номер сети |  все единицы |  Все узлы в указанной IP-сети
    ------------------------------
    ------------------------------
    | 127 | что-нибудь (часто 1) |  "Петля"
    ------------------------------

                   Рис.9. Выделенные IP-адреса


    Как показано на рис.9, в выделенных IP-адресах все  нули  соответст-
вуют  либо  данному  узлу, либо данной IP-сети, а IP-адреса, состоящие из
всех единиц, используются при широковещательных передачах.  Для ссылок на
всю IP-сеть в целом используется IP-адрес с нулевым номером узла.  Особый
смысл имеет IP-адрес, первый октет которого равен 127.   Он  используется
для  тестирования  программ  и  взаимодействия процессов в пределах одной
машины.  Когда программа посылает данные по IP-адресу 127.0.0.1, то обра-
зуется  как  бы  "петля".   Данные  не передаются по сети, а возвращаются
модулям верхнего уровня, как только что принятые.  Поэтому в IP-сети зап-
рещается присваивать машинам IP-адреса, начинающиеся со 127.

5.5.  Выбор адреса

    Прежде чем вы начнете использовать сеть с TCP/IP, вы должны получить
один  или несколько официальных сетевых номеров.  Выделением номеров (как
и многими другими вопросами) занимается DDN  Network  Information  Center
(NIC) [2].  Выделение номеров производится  бесплатно  и  занимает  около
недели.   Вы  можете  получить сетевой номер вне зависимости от того, для
чего предназначена ваша сеть.  Даже если ваша сеть не имеет связи с объе-
диненной сетью Internet, получение уникального номера желательно, так как
в этом случае есть гарантия, что в будущем при включении в  Internet  или
при подключении к сети другой организации не возникнет конфликта адресов.

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

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

5.6.  Подсети

    Адресное пространство сети internet может быть разделено на  непере-
секающиеся  подпространства  - "подсети", с каждой из которых можно рабо-
тать как с обычной сетью TCP/IP.  Таким образом единая IP-сеть  организа-
ции может строиться как объединение подсетей.  Как правило, подсеть соот-
ветствует одной физической сети, например, одной сети Ethernet.

    Конечно, использование подсетей необязательно.  Можно просто  назна-
чить  для  каждой  физической  сети  свой  сетевой номер, например, номер
класса C.  Однако такое решение имеет два недостатока.  Первый,  и  менее
существенный,  заключается в пустой трате сетевых номеров.  Более серьез-
ный недостаток состоит в том, что если ваша организация  имеет  несколько
сетевых  номеров, то машины вне ее должны поддерживать записи о маршрутах
доступа к каждой из этих  IP-сетей.   Таким  образом,  структура  IP-сети
организации становится видимой для всего мира.  При каких-либо изменениях
в IP-сети информация о них должна быть учтена в каждой из машин,  поддер-
живающих маршруты доступа к данной IP-сети.

    Подсети  позволяют  избежать  этих  недостатков.   Ваша  организация
должна  получить один сетевой номер, например, номер класса B.  Стандарты
TCP/IP определяют структуру IP-адресов.  Для IP-адресов класса  B  первые
два  октета  являются  номером  сети.   Оставшаяся  часть IP-адреса может
использоваться как угодно.  Например, вы можете решить, что третий  октет
будет  определять номер подсети, а четверый октет - номер узла в ней.  Вы
должны описать конфигурацию подсетей в файлах, определяющих маршрутизацию
IP-пакетов.   Это  описание является локальным для вашей организации и не
видно вне ее.  Все машины вне вашей организации видят  одну  большую  IP-
сеть.   Следовательно,  они должны поддерживать только маршруты доступа к
шлюзам, соединяющим вашу IP-сеть с остальным миром.  Изменения,  происхо-
дящие  в  IP-сети организации, не видны вне ее.  Вы легко можете добавить
новую подсеть, новый шлюз и т.п.

5.7.  Как назначать номера сетей и подсетей

    После того, как решено использовать подсети или множество  IP-сетей,
вы  должны  решить, как назначать им номера.  Обычно это довольно просто.
Каждой физической сети, например, Ethernet или  Token  Ring,  назначается
отдельный  номер подсети или номер сети.  В некоторых случаях имеет смысл
назначать одной физической сети несколько подсетевых номеров.   Например,
предположим,  что  имеется сеть Ethernet, охватывающая три здания.  Ясно,
что при увеличении числа машин, подключенных к  этой  сети,  придется  ее
разделить  на  несколько отдельных сетей Ethernet.  Для того, чтобы избе-
жать необходимости менять IP-адреса, когда это произойдет, можно  заранее
выделить для этой сети три подсетевых номера - по одному на здание.  (Это
полезно и в том случае, когда не  планируется  физическое  деление  сети.
Просто  такая  адресация позволяет сразу определить, где находится та или
иная машина.) Однако прежде, чем выделять три различных подсетевых номера
одной  физической  сети, тщательно проверьте, что все ваши программы спо-
собны работать в такой среде.

    Вы также должны выбрать "маску подсети".  Она  используется  сетевым
программным  обеспечением  для  выделения  номера  подсети из IP-адресов.
Биты IP-адреса, определяющие номер IP-сети, в маске подсети  должны  быть
равны  1,  а  биты,  определяющие номер узла, в маске подсети должны быть
равны 0.  Как уже  отмечалось,  стандарты  TCP/IP  определяют  количество
октетов,  задающих  номер сети.  Часто в IP-адресах класса B третий октет
используется для задания номера подсети.  Это позволяет иметь 256  подсе-
тей,  в каждой из которых может быть до 254 узлов.  Маска подсети в такой
системе равна 255.255.255.0.  Но, если в вашей сети  должно  быть  больше
подсетей,  а  в каждой подсети не будет при этом более 60 узлов, то можно
использовать маску 255.255.255.192.  Это позволяет иметь 1024  подсети  и
до  62  узлов  в  каждой.   (Напомним, что номера узлов 0 и "все единицы"
используются особым образом.)

    Обычно маска подсети  указывается  в  файле  стартовой  конфигурации
сетевого программного обеспечения.  Протоколы TCP/IP позволяют также зап-
рашивать эту информацию по сети.

5.8.  Имена

    Людям удобнее называть машины по именам, а не числами.  Например,  у
машины  по  имени alpha может быть IP-адрес 223.1.2.1.  В маленьких сетях
информация о соответствии имен IP-адресам хранится в  файлах  "hosts"  на
каждом  узле.   Конечно, название файла зависит от конкретной реализации.
В больших сетях эта информация хранится на сервере и  доступна  по  сети.
Несколько строк из файла "hosts" могут выглядеть примерно так:

                       223.1.2.1      alpha
                       223.1.2.2      beta
                       223.1.2.3      gamma
                       223.1.2.4      delta
                       223.1.3.2      epsilon
                       223.1.4.2      iota

В первом столбце - IP-адрес, во втором - название машины.

    В большинстве случаев файлы "hosts" могут  быть  одинаковы  на  всех
узлах.   Заметим,  что  о узле delta в этом файле есть всего одна запись,
хотя он имеет три IP-адреса (рис.11).  Узел delta доступен по  любому  из
этих  IP-адресов.   Какой  из них используется, не имеет значения.  Когда
узел delta получает IP-пакет и проверяет IP-адрес места назначения, то он
опознает любой из трех своих IP-адресов.

    IP-сети также могут иметь имена.  Если у вас есть  три  IP-сети,  то
файл "networks" может выглядеть примерно так:

                     223.1.2        development
                     223.1.3        accounting
                     223.1.4        factory

В первой колонке - сетевой номер, во второй - имя сети.

    В данном примере alpha является узлом номер 1  в  сети  development,
beta является узлом номер 2 в сети development и т.д.

    Показанный выше файл hosts удовлетворяет потребности  пользователей,
но  для  управления  сетью  internet  удобнее иметь названия всех сетевых
интерфейсов.  Менеджер сети,  возможно,  заменит  строку,  относящуюся  к
delta:

                223.1.2.4      devnetrouter     delta
                223.1.3.1      accnetrouter
                223.1.4.1      facnetrouter

    Эти три строки файла hosts задают каждому IP-адресу узла delta  сим-
вольные  имена.   Фактически,  первый  IP-адрес  имеет  два  имени: "dev-
netrouter" и "delta",  которые  являются  синонимами.   На  практике  имя
"delta"  используется как общеупотребительное имя машины, а остальные три
имени - для администрирования сети.

    Файлы hosts и networks используются  командами  администрирования  и
прикладными  программами.  Они не нужны собственно для работы сети inter-
net, но облегчают ее использование.

5.9.  IP-таблица маршрутов

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

    Таблица маршрутов содержит по одной  строке  для  каждого  маршрута.
Основными  столбцами  таблицы  маршрутов являются номер сети, флаг прямой
или косвенной маршрутизации, IP-адрес шлюза и номер сетевого  интерфейса.
Эта  таблица  используется модулем IP при обработке каждого отправляемого
IP-пакета.

    В большинстве систем таблица маршрутов может быть изменена с помощью
команды  "route".   Содержание  таблицы маршрутов определяется менеджером
сети, поскольку менеджер сети присваивает машинам IP-адреса.

5.10.  Подробности прямой маршрутизации

    Рассмотрим более подробно,  как  происходит  маршрутизация  в  одной
физической сети.

               -------------           -------------
               |   alpha   |           |    beta   |
               | 223.1.2.1 |           | 223.1.2.2 |
               |     1     |           |     1     |
               -------------           -------------
                     |                       |
               ------o-----------------------o-------
                    Ethernet 1
                    IP-сеть "development"
                             223.1.2

                  Рис.10. Одна физическая сеть


    Таблица маршрутов в узле alpha выглядит так:

     ----------------------------------------------------------
     |  сеть          флаг вида         шлюз        номер     |
     |              маршрутизации                 интерфейса  |
     ----------------------------------------------------------
     | development     прямая         <пусто>         1       |
     ----------------------------------------------------------

                Табл.9. Пример таблицы маршрутов


В данном простом примере все узлы сети имеют одинаковые  таблицы  маршру-
тов.

    Для сравнения ниже представлена та же таблица,  но  вместо  названия
сети указан ее номер.

     ----------------------------------------------------------
     |  сеть          флаг вида         шлюз        номер     |
     |              маршрутизации                 интерфейса  |
     ----------------------------------------------------------
     | 223.1.2         прямая         <пусто>         1       |
     ----------------------------------------------------------

       Табл.10. Пример таблицы маршрутов с номерами сетей


5.11.  Порядок прямой маршрутизации

    Узел alpha посылает IP-пакет узлу  beta.   Этот  пакет  находится  в
модуле  IP  узла  alpha, и IP-адрес места назначения равен IP-адресу beta
(223.1.2.2).  Модуль IP с помощью маски подсети выделяет  номер  сети  из
IP-адреса  и ищет соответствующую ему строку в таблице маршрутов.  В дан-
ном случае подходит первая строка.

    Остальная информация в найденной строке указывает на то, что  машины
этой  сети  доступны  напрямую  через  интерфейс номер 1.  С помощью ARP-
таблицы выполняется преобразование IP-адреса в соответствующий  Ethernet-
адрес, и через интерфейс 1 Ethernet-кадр посылается узлу beta.

    Если прикладная программа  пытается  послать  данные  по  IP-адресу,
который  не  принадлежит  сети  development, то модуль IP не сможет найти
соответствующую запись в таблице маршрутов.  В этом случае модуль IP отб-
расывает  IP-пакет.   Некоторые реализации протокола возвращают сообщение
об ошибке "Сеть не доступна".

5.12.  Подробности косвенной маршрутизации

    Теперь рассмотрим более сложный  порядок  маршрутизации  в  IP-сети,
изображенной на рис.11.

    Таблица маршрутов в узле alpha выглядит так:

     ----------------------------------------------------------
     |  сеть          флаг вида         шлюз        номер     |
     |              маршрутизации                 интерфейса  |
     ----------------------------------------------------------
     | development     прямая         <пусто>         1       |
     | accounting     косвенная     devnetrouter      1       |
     | factory        косвенная     devnetrouter      1       |
     ----------------------------------------------------------

           Табл.11. Таблица маршрутов в узле alpha

                             -------------
                             |   delta   |
      -------------          | 223.1.2.4 |         -------------
      |   alpha   |          | 223.1.4.1 |         |  epsilon  |
      | 223.1.2.1 |          | 223.1.3.1 |         | 223.1.3.2 |
      |     1     |          | 1   2   3 |         |     1     |
      -------------          -------------         -------------
            |                  |   |   |                 |
      ------o------------------o-  |  -o-----------------o---------
       Ethernet 1                  |      Ethernet 2
       IP-сеть "development"       |      IP-сеть "accounting"
                223.1.2            |               223.1.3
                                   |
                                   |    -------------
                                   |    |    iota   |
                                   |    | 223.1.4.2 |
                                   |    |     1     |
                                   |    -------------
                                   |          |
                                ---o----------o-------------------
                                       Ethernet 3
                                       IP-сеть "factory"
                                                223.1.4

              Рис.11. Подробная схема трех сетей

Та же таблица с IP-адресами вместо названий.

     ----------------------------------------------------------
     |  сеть          флаг вида         шлюз        номер     |
     |              маршрутизации                 интерфейса  |
     ----------------------------------------------------------
     | 223.1.2         прямая         <пусто>         1       |
     | 223.1.3        косвенная      223.1.2.4        1       |
     | 223.1.4        косвенная      223.1.2.4        1       |
     ----------------------------------------------------------

       Табл.12. Таблица маршрутов в узле alpha (с номерами)


В столбце "шлюз" таблицы маршрутов узла alpha указывается IP-адрес  точки
соединения узла delta с сетью development.

5.13.  Порядок косвенной маршрутизации

    Узел alpha посылает IP-пакет узлу epsilon.  Этот пакет  находится  в
модуле  IP  узла  alpha, и IP-адрес места назначения равен IP-адресу узла
epsilon (223.1.3.2).  Модуль  IP  выделяет  сетевой  номер  из  IP-адреса
(223.1.3)  и  ищет соответствующую ему строку в таблице маршрутов.  Соот-
ветствие находится во второй строке.

    Запись в этой строке указывает на то, что машины требуемой сети дос-
тупны через шлюз devnetrouter.  Модуль IP в узле alpha осуществляет поиск
в ARP-таблице, с помощью которого определяет Ethernet-адрес, соответству-
ющий  IP-адресу  devnetrouter.  Затем IP-пакет, содержащий IP-адрес места
назначения epsilon, посылается через интерфейс 1 шлюзу devnetrouter.

    IP-пакет принимается сетевым интерфейсом в узле delta  и  передается
модулю  IP.   Проверяется  IP-адрес  места назначения, и, поскольку он не
соответствует ни одному из собственных IP-адресов delta, шлюз решает рет-
ранслировать IP-пакет.

    Модуль IP в узле delta выделяет сетевой  номер  из  IP-адреса  места
назначения  IP-пакета  (223.1.3)  и ищет соответствующую запись в таблице
маршрутов.  Таблица маршрутов в узле delta выглядит так:

     ----------------------------------------------------------
     |  сеть          флаг вида         шлюз        номер     |
     |              маршрутизации                 интерфейса  |
     ----------------------------------------------------------
     | development     прямая         <пусто>         1       |
     | accounting      прямая         <пусто>         3       |
     | factory         прямая         <пусто>         2       |
     ----------------------------------------------------------

           Табл.13. Таблица маршрутов в узле delta


Та же таблица с IP-адресами вместо названий.

     ----------------------------------------------------------
     |  сеть          флаг вида         шлюз        номер     |
     |              маршрутизации                 интерфейса  |
     ----------------------------------------------------------
     | 223.1.2         прямая         <пусто>         1       |
     | 223.1.3         прямая         <пусто>         3       |
     | 223.1.4         прямая         <пусто>         2       |
     ----------------------------------------------------------

       Табл.14. Таблица маршрутов в узле delta (с номерами)


Соответствие находится во второй строке.  Теперь модуль IP напрямую посы-
лает IP-пакет узлу epsilon через интерфейс номер 3.  Пакет содержит IP- и
Ethernet-адреса места назначения равные epsilon.

    Узел epsilon принимает IP-пакет, и его модуль IP проверяет  IP-адрес
места назначения.  Он соответствует IP-адресу epsilon, поэтому содержаще-
еся  в  IP-пакете  сообщение  передается  протокольному  модулю  верхнего
уровня.

6.  Установка маршрутов

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

6.1.  Фиксированные маршруты

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

    На практике большинство машин автоматически формирует таблицы  марш-
рутов.  Например, UNIX добавляет записи о IP-сетях, к которым есть непос-
редственный доступ.  Стартовый файл может содержать команды

          ifconfig  ie0  128.6.4.4   netmask  255.255.255.0
          ifconfig  ie1  128.6.5.35  netmask  255.255.255.0

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

     ----------------------------------------------------------
     |   сеть         флаг вида         шлюз      интерфейс   |
     |              маршрутизации                             |
     ----------------------------------------------------------
     |  128.6.4        прямая         <пусто>        ie0      |
     |  128.6.5        прямая         <пусто>        ie1      |
     ----------------------------------------------------------

           Табл.15. Автоматически создаваемые записи

Эти записи определяют, что IP-пакеты для  локальных  подсетей  128.6.4  и
128.6.5 должны посылаться через указанные интерфейсы.

    В стартовом файле могут быть команды, определяющие маршруты  доступа
к другим IP-сетям.  Например,

                route  add  128.6.2.0  128.6.4.1   1
                route  add  128.6.6.0  128.6.5.35  0

Эти команды показывают, что в таблицу маршрутов должны быть добавлены две
записи.   Первый  адрес в командах является IP-адресом сети, второй адрес
указывает шлюз, который должен использоваться для доступа  к  данной  IP-
сети,  а третий параметр является метрикой.  Метрика показывает, на каком
"расстоянии" находится описываемая IP-сеть.  В данном  случае  метрика  -
это количество шлюзов на пути между двумя IP-сетями.  Маршруты с метрикой
1 и более определяют первый шлюз на пути к IP-сети.  Маршруты с  метрикой
0  показывают, что никакой шлюз не нужен - данный маршрут задает дополни-
тельный сетевой номер локальной IP-сети.

    Таким образом, команды, приведенные в примере, говорят  о  том,  что
для  доступа  к  IP-сети  128.6.2 должен использоваться шлюз 128.6.4.1, а
IP-сеть 128.6.6 - это просто дополнительный номер  для  физической  сети,
подключенной к интерфейсу 128.6.5.35.

      ---------------------------------------------------------
      |   сеть         флаг вида         шлюз      интерфейс  |
      |              маршрутизации                            |
      ---------------------------------------------------------
      |  128.6.2       косвенная      128.6.4.1       ie0     |
      |  128.6.6        прямая         <пусто>        ie1     |
      ---------------------------------------------------------

          Табл.16. Записи, добавляемые в таблицу маршрутов

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

    Если ваша IP-сеть имеет всего один шлюз, тогда все, что  нужно  сде-
лать,  -  это  установить единственную запись в таблице маршрутов, указав
этот шлюз как маршрут по умолчанию.  После этого можно  не  заботиться  о
формировании маршрутов в других узлах.  (Конечно, сам шлюз требует больше
внимания.)

    Следующие разделы посвящены IP-сетям, где есть несколько шлюзов.

6.2.  Перенаправление маршрутов

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

    Простейший способ поддержания адекватности маршрутов  заключается  в
том,  что изменение таблицы маршрутов каждой машины выполняется по коман-
дам только одного шлюза.  Этот шлюз должен быть установлен как маршрут по
умолчанию.    (В  ОС  UNIX  это  делается  командой  "route  add  default
128.6.4.27 1", где 128.6.4.27 является IP-адресом шлюза.) Как  было  опи-
сано  выше, каждая машина посылает IP-пакет шлюзу по умолчанию в том слу-
чае, когда не находит лучшего маршрута.  Однако,  когда  в  IP-сети  есть
несколько  шлюзов,  этот  метод работает не так хорошо.  Кроме того, если
таблица маршрутов имеет только одну запись о маршруте  по  умолчанию,  то
как  использовать  другие шлюзы, если это более выгодно?  Ответ состоит в
том, что большинство шлюзов способны выполнять  "перенаправление"  в  тех
случаях,  когда  они  получают  IP-пакеты,  для  которых существуют более
выгодные маршруты.  "Перенаправление" является специальным типом  сообще-
ния протокола ICMP (Internet Control Message Protocol - протокол межсете-
вых управляющих сообщений).  Сообщение о перенаправлении содержит  инфор-
мацию,  которую можно интерпретировать так: "В будущем для IP-адреса XXXX
используйте шлюз YYYY, а не меня".  Корректные реализации  TCP/IP  должны
использовать сообщения о перенаправлении для добавления записей в таблицу
маршрутов.  Предположим, таблица маршрутов в  начале  выглядит  следующим
образом:

      --------------------------------------------------------
      |    адрес       флаг вида         шлюз      интерфейс |
      | назначения   маршрутизации                           |
      --------------------------------------------------------
      |  127.0.0        прямая          <пусто>       lo0    |
      |  128.6.4        прямая          <пусто>       pe0    |
      |  default       косвенная       128.6.4.27     pe0    |
      --------------------------------------------------------

            Табл.17. Таблица маршрутов в начале работы

Эта таблица содержит запись о локальной  IP-сети  128.6.4  и  маршрут  по
умолчанию,  указывающий  шлюз  128.6.4.27.  Допустим, что существует шлюз
128.6.4.30, который является лучшим путем доступа к IP-сети 128.6.7.  Как
им  воспользоваться?   Предположим,  что  нужно посылать IP-пакеты по IP-
адресу 128.6.7.23.  Первый IP-пакет пойдет на шлюз по умолчанию, так  как
это  единственный  подходящий  маршрут, описанный в таблице.  Однако шлюз
128.6.4.27 знает, что существует лучший маршрут,  проходящий  через  шлюз
128.6.4.30.  (Как он узнает об этом, мы сейчас не рассматриваем.  Сущест-
вует довольно простой метод определения лучшего маршрута.) В этом  случае
шлюз  128.6.4.27 возвращает сообщение перенаправления, где указывает, что
IP-пакеты для узла 128.6.7.23 должны посылаться  через  шлюз  128.6.4.30.
Модуль  IP на машине-отправителе должен добавить запись в таблицу маршру-
тов:

      --------------------------------------------------------
      |    адрес       флаг вида         шлюз      интерфейс |
      | назначения   маршрутизации                           |
      --------------------------------------------------------
      |  128.6.7.23    косвенная       128.6.4.30     pe0    |
      --------------------------------------------------------

            Табл.18. Новая запись в таблице маршрутов

Все последующие IP-пакеты для узла 128.6.7.23 будут посланы  прямо  через
указанный шлюз.

    До сих пор мы  рассматривали  способы  добавления  маршрутов  в  IP-
таблицу, но не способы их исключения.  Что случится, если шлюз будет вык-
лючен?  Хотелось бы иметь способ возврата к маршруту по  умолчанию  после
того,  как какой-либо маршрут разрушен.  Однако, если шлюз вышел из строя
или был выключен, то он уже не может послать  сообщение  перенаправления.
Поэтому должен существовать метод определения работоспособности шлюзов, с
которыми ваша машина связана непосредственно.  Лучший способ  обнаружения
неработающих  шлюзов основан на выявлении "плохих" маршрутов.  Модуль TCP
поддерживает различные таймеры, которые помогают  ему  определить  разрыв
соединения.  Когда случается сбой, то можно пометить маршрут как "плохой"
и вернуться к маршруту по умолчанию.  Аналогичный метод  может  использо-
ваться  при обработке ошибок шлюза по умолчанию.  Если два шлюза отмечены
как шлюзы по умолчанию, то  машина  может  использовать  их  по  очереди,
переключаясь между ними при возникновении сбоев.

6.3.  Слежение за маршрутизацией

    Заметим,  что  сообщения  перенаправления  не  могут  использоваться
самими  шлюзами.  Перенаправление - это просто способ оповещения обычного
узла о том, что нужно использовать другой шлюз.  Сами шлюзы должны  иметь
полную  картину  о  положении дел в сети internet и уметь вычислять опти-
мальные маршруты доступа к каждой подсети.  Обычно они  поддерживают  эту
картину,  обмениваясь  информацией между собой.  Для этой цели существуют
несколько специальных протоколов  маршрутизации.   Один  из  способов,  с
помощью  которого узлы могут определять действующие шлюзы, состоит в сле-
жении за обменом сообщениями  между  ними.   Для  большинства  протоколов
маршрутизации  существует  программное  обеспечение,  позволяющее обычным
узлам осуществлять такое слежение.  При этом на узлах поддерживается пол-
ная картина положения дел в сети internet точно также, как это делается в
шлюзах.  Динамическая корректировка таблицы маршрутов позволяет  посылать
IP-пакеты по оптимальным маршрутам.

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

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

6.4.  Протокол ARP с представителем

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

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

    Чтобы использовать протокол, нужно настроить узел так, как будто все
машины в мире подключены непосредственно к вашей локальной сети Ethernet.
В ОС UNIX это делается командой "route  add  default  128.6.4.2  0",  где
128.6.4.2  - IP-адрес вашего узла.  Как уже отмечалось, метрика 0 говорит
о том, что все IP-пакеты, которым подходит данный маршрут,  должны  посы-
латься напрямую по локальной сети.

    Когда нужно послать IP-пакет узлу в локальной  сети  Ethernet,  ваша
машина  должна  определить  Ethernet-адрес  этого  узла.   Для  этого она
использует ARP-таблицу.  Если в ARP-таблице уже есть запись, соответству-
ющая IP-адресу места назначения, то из нее просто берется Ethernet-адрес,
и кадр, содержащий IP-пакет, отправляется.  Если  такой  записи  нет,  то
посылается  широковещательный ARP-запрос.  Узел с искомым IP-адресом наз-
начения принимает его и в ARP-ответе сообщает свой  Ethernet-адрес.   Эти
действия соответствуют обычному протоколу ARP, описанному выше.

    Протокол ARP с представителем основан на том, что шлюзы работают как
представители  удаленных  узлов.   Предположим, в подсети 128.6.5 имеется
узел 128.6.5.2 (узел A на  рис.12).   Он  желает  послать  IP-пакет  узлу
128.6.4.194,  который  подключен к другой сети Ethernet (узел B в подсети
128.6.4).  Существует шлюз с IP-адресом 128.6.5.1, соединяющий  две  под-
сети (шлюз R).

                  сеть 1                     сеть 2
                  128.6.5                    128.6.4
        ----o----------------o---    --o---------------o--------
            |                |         |               |
        -------------       -------------       ---------------
        | 128.6.5.2 |       | 128.6.5.1 |       | 128.6.4.194 |
        |     A     |       | 128.6.4.1 |       |      B      |
        -------------       |     R     |       ---------------
                            -------------

       Рис.12. Сеть, использующая протокол ARP с представителем

Если в ARP-таблице узла A нет маршрута доступа к узлу B, то узел A  посы-
лает ARP-запрос узлу B.  Фактически машина A спрашивает: "Если кто-нибудь
знает Ethernet-адрес узла 128.6.4.194, сообщите  мне  его".   Узел  B  не
может ответить на запрос самостоятельно.  Он подключен к другой сети Eth-
ernet и никогда даже не увидит этот  ARP-запрос.   Однако  шлюз  R  может
работать  от его имени.  Шлюз R отвечает: "Я здесь, IP-адресу 128.6.4.194
соответствует Ethernet-адрес 2:7:1:0:EB:CD", где 2:7:1:0:EB:CD в действи-
тельности является Ethernet-адресом шлюза.  Это создает иллюзию, что узел
128.6.4.194 подключен непосредственно к той же локальной  сети  Ethernet,
что и узел A, и имеет Ethernet-адрес 2:7:1:0:EB:CD.  Когда узел A захочет
послать новый IP-пакет узлу B, он  использует  указанный  Ethernet-адрес.
Кадр, содержащий IP-пакет, попадет к шлюзу R, а он переправит его по наз-
начению.

    Заметим, что полученный эффект такой же, как если бы в таблице марш-
рутов была запись

      --------------------------------------------------------
      |    адрес       флаг вида         шлюз      интерфейс |
      | назначения   маршрутизации                           |
      --------------------------------------------------------
      |  128.6.4.194   косвенная       128.6.5.1      pe0    |
      --------------------------------------------------------

за исключением того, что маршрутизация выполняется на уровне модуля  ARP,
а не модуля IP.

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

1)   в IP-сети есть узел, который не умеет работать с подсетями;

2)   в IP-сети есть узел, который не может соответствующим образом реаги-
    ровать на сообщения перенаправления;

3)   нежелательно выбирать какой-либо шлюз как маршрут по умолчанию;

4)   программное обеспечение не способно восстанавливаться при  сбоях  на
    маршрутах.

    Иногда протокол ARP с представителем выбирают из-за удобства.   Дело
в  том,  что он упрощает работу по начальной установке таблицы маршрутов.
Даже в простейших IP-сетях требуется устанавливать маршрут по  умолчанию,
то есть использовать команду типа "route add defailt ...", как в ОС UNIX.
При изменении IP-адреса шлюза  эту  команду  приходится  менять  во  всех
узлах.   Если  же  использовать  протокол  ARP  с  представителем, т.е. в
команде установки маршрута по умолчанию указать метрику 0, то при  замене
IP-адреса  шлюза  команду начальной установки менять не придется, так как
протокол ARP с представителем не требует явного задания  IP-адресов  шлю-
зов.  Любой шлюз может ответить на ARP-запрос.

    Для того, чтобы избавить  пользователей  от  обязательной  начальной
установки  маршрутов, некоторые реализации TCP/IP используют протокол ARP
с представителем по умолчанию в тех случаях, когда не находят  подходящих
записей в таблице маршрутов.

7.  Протокол UDP

    Протокол UDP (User Datagram  Protocol  -  протокол  пользовательских
датаграмм)  является  одним  из  двух  основных протоколов, расположенных
непосредственно над IP.  Он предоставляет прикладным процессам транспорт-
ные услуги, которые не многим отличаются от услуг, предоставляемых прото-
колом IP.  Протокол UDP обеспечивает ненадежную доставку датаграмм  и  не
поддерживает  соединений  из  конца  в  конец.   К заголовку IP-пакета он
добавляет два поля, одно из которых, поле "порт",  обеспечивает  мультип-
лексирование  информации  между  разными прикладными процессами, а другое
поле - "контрольная сумма" - позволяет поддерживать целостность данных.

    Примерами сетевых приложений, использующих UDP, являются  NFS  (Net-
work  File  System  -  сетевая  файловая  система) и SNMP (Simple Network
Management Protocol - простой протокол управления сетью).

7.1.  Порты

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

    Например, сервер SNMP всегда ожидает поступлений  сообщений  в  порт
161.   Если клиент SNMP желает получить услугу, он посылает запрос в UDP-
порт 161 на машину, где работает сервер.  В каждом узле может быть только
один  сервер  SNMP,  так как существует только один UDP-порт 161.  Данный
номер порта является общеизвестным, то есть фиксированным номером, офици-
ально выделенным для услуг SNMP.  Общеизвестные номера определяются стан-
дартами Internet.

    Данные, отправляемые прикладным процессом через модуль  UDP,  дости-
гают   места  назначения  как  единое  целое.   Например,  если  процесс-
отправитель производит 5 записей в UDP-порт, то процесс-получатель должен
будет  сделать 5 чтений.  Размер каждого записанного сообщения будет сов-
падать с размером каждого прочитанного.  Протокол UDP  сохраняет  границы
сообщений,  определяемые  прикладным процессом.  Он никогда не объединяет
несколько сообщений в одно и не делит одно сообщение на части.

7.2.  Контрольное суммирование

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

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

8.  Протокол TCP

    Протокол TCP  предоставляет  транспортные  услуги,  отличающиеся  от
услуг  UDP.  Вместо ненадежной доставки датаграмм без установления соеди-
нений, он обеспечивает гарантированную доставку с установлением  соедине-
ний в виде байтовых потоков.

    Протокол TCP используется в тех случаях,  когда  требуется  надежная
доставка  сообщений.  Он освобождает прикладные процессы от необходимости
использовать таймауты и повторные передачи  для  обеспечения  надежности.
Наиболее  типичными  прикладными  процессами, использующими TCP, являются
FTP (File Transfer Protocol - протокол передачи файлов) и TELNET.   Кроме
того, TCP используют система X-Window, rcp (remote copy - удаленное копи-
рование) и другие "r-команды".  Большие возможности TCP даются  не  бесп-
латно.   Реализация  TCP  требует большой производительности процессора и
большой пропускной способности сети.   Внутренняя  структура  модуля  TCP
гораздо сложнее структуры модуля UDP.

    Прикладные процессы взаимодействуют с модулем TCP через порты.   Для
отдельных  приложений  выделяются общеизвестные номера портов.  Например,
сервер TELNET использует порт номер 23.   Клиент  TELNET  может  получать
услуги  от  сервера,  если  установит  соединение  с TCP-портом 23 на его
машине.

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

    Протокол TCP разбивает поток байт на пакеты; он не сохраняет  границ
между  записями.  Например, если один прикладной процесс делает 5 записей
в TCP-порт, то прикладной процесс на  другом  конце  виртуального  канала
может  выполнить  10 чтений для того, чтобы получить все данные.  Но этот
же процесс может получить все данные сразу, сделав только  одну  операцию
чтения.   Не  существует зависимости между числом и размером записываемых
сообщений с одной стороны и числом и  размером  считываемых  сообщений  с
другой стороны.

    Протокол TCP требует, чтобы все отправленные данные  были  подтверж-
дены  принявшей их стороной.  Он использует таймауты и повторные передачи
для обеспечения надежной доставки.   Отправителю  разрешается  передавать
некоторое  количество данных, недожидаясь подтверждения приема ранее отп-
равленных данных.  Таким образом, между отправленными  и  подтвержденными
данными существует окно уже отправленных, но еще неподтвержденных данных.
Количество байт, которые можно передавать без  подтверждения,  называется
размером окна.  Как правило, размер окна устанавливается в стартовых фай-
лах сетевого программного обеспечения.  Так как TCP-канал  является  дуп-
лексным,  то  подтверждения для данных, идущих в одном направлении, могут
передаваться вместе с данными,  идущими  в  противоположном  направлении.
Приемники  на  обеих  сторонах  виртуального  канала выполняют управление
потоком передаваемых данных для того,  чтобы  не  допускать  переполнения
буферов.

9.  Протоколы прикладного уровня

    Почему существуют два транспортных протокола TCP и UDP, а не один из
них?   Дело в том, что они предоставляют разные услуги прикладным процес-
сам.  Большинство прикладных программ пользуются  только  одним  из  них.
Вы,  как  программист,  выбираете тот протокол, который наилучшим образом
соответствует вашим потребностям.  Если вам нужна надежная  доставка,  то
лучшим может быть TCP.  Если вам нужна доставка датаграмм, то лучше может
быть UDP.  Если вам нужна эффективная доставка по длинному и  ненадежному
каналу  передачи данных, то лучше может подойти протокол TCP.  Если нужна
эффективность на быстрых сетях с короткими соединениями, то лучшим  может
быть  протокол  UDP.  Если ваши потребности не попадают ни в одну из этих
категорий, то выбор транспортного протокола не ясен.   Однако  прикладные
программы  могут  устранять  недостатки  выбранного протокола.  Например,
если вы выбрали UDP, а вам необходима надежность, то прикладная программа
должна  обеспечить  надежность.  Если вы выбрали TCP, а вам нужно переда-
вать записи, то прикладная программа должна  вставлять  маркеры  в  поток
байтов так, чтобы можно было различить записи.

    Какие же прикладные программы доступны в сетях с TCP/IP?

    Общее их количество велико  и  продолжает  постоянно  увеличиваться.
Некоторые  приложения существуют с самого начала развития internet.  Нап-
ример, TELNET и FTP.  Другие появились недавно: X-Window, SNMP.

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

9.1.  Протокол TELNET

    Протокол TELNET позволяет  обслуживающей  машине  рассматривать  все
удаленные  терминалы  как  стандартные  "сетевые  виртуальные  терминалы"
строчного типа, работающие в коде ASCII, а также обеспечивает возможность
согласования  более  сложных  функций  (например, локальный или удаленный
эхо-контроль, страничный режим, высота и ширина  экрана  и  т.д.)  TELNET
работает  на  базе  протокола TCP.  На прикладном уровне над TELNET нахо-
дится либо программа поддержки реального терминала (на стороне  пользова-
теля),  либо  прикладной  процесс  в обсуживающей машине, к которому осу-
ществляется доступ с терминала.

    Работа с TELNET походит на набор телефонного  номера.   Пользователь
набирает на клавиатуре что-то вроде
                             telnet delta

и получает на экране приглашение на вход в машину delta.

    Протокол TELNET существует уже давно.  Он хорошо опробован и  широко
распространен.   Создано множество реализаций для самых разных операцион-
ных систем.  Вполне допустимо, чтобы процесс-клиент работал, скажем,  под
управлением ОС VAX/VMS, а процесс-сервер под ОС UNIX System V.

9.2.  Протокол FTP

    Протокол FTP (File Transfer Protocol  -  протокол  передачи  файлов)
распространен  также  широко  как TELNET.  Он является одним из старейших
протоколов семейства TCP/IP.  Также как TELNET он  пользуется  транспорт-
ными  услугами TCP.  Существует множество реализаций для различных опера-
ционных систем, которые хорошо взаимодействуют между собой.  Пользователь
FTP  может  вызывать  несколько  команд, которые позволяют ему посмотреть
каталог удаленной машины, перейти из одного каталога в  другой,  а  также
скопировать один или несколько файлов.

9.3.  Протокол SMTP

    Протокол SMTP (Simple Mail  Transfer  Protocol  -  простой  протокол
передачи почты) поддерживает передачу сообщений (электронной почты) между
произвольными узлами сети internet.  Имея механизмы промежуточного хране-
ния почты и механизмы повышения надежности доставки, протокол SMTP допус-
кает использование различных транспотных служб.  Он может работать даже в
сетях, не использующих протоколы семейства TCP/IP.  Протокол SMTP обеспе-
чивает как группирование сообщений в адрес одного получателя, так и разм-
ножение  нескольких  копий  сообщения  для передачи в разные адреса.  Над
модулем SMTP располагается почтовая служба конкретных вычислительных сис-
тем.

9.4.  r-команды

    Существует целая серия "r-команд" (от remote -  удаленный),  которые
впервые появились в ОС UNIX.  Они являются аналогами обычных команд UNIX,
но предназначены для работы с удаленными машинами.  Например, команда rcp
является аналогом команды cp и предназначена для копирования файлов между
машинами.  Для передачи файла на узел delta достаточно ввести
rcp file.c delta:

Для выполнения команды "cc file.c" на  машине  delta  можно  использовать
комаду rsh:
rsh delta cc file.c

Для организации входа в удаленную систему предназначена команда rlogin:
rlogin delta

    Команды r-серии используются главным образом в системах,  работающих
под  управлением  ОС  UNIX.   Существуют  также  реализации  для  MS-DOS.
Команды избавляют пользователя от необходимости набирать пароли при входе
в удаленную систему и существенно облегчают работу.

9.5.  NFS

    Сетевая файловая система NFS (Network File System) впервые была раз-
работана  компанией  Sun  Microsystems  Inc.  NFS использует транспортные
услуги UDP и позволяет монтировать в единое целое файловые  системы  нес-
кольких  машин  с ОС UNIX.  Бездисковые рабочие станции получают доступ к
дискам файл-сервера так, как-будто это их локальные диски.

    NFS значительно увеличивает нагрузку на сеть.  Если в сети использу-
ются  медленные линии связи, то от NFS мало толку.  Однако, если пропуск-
ная способность сети позволяет NFS нормально  работать,  то  пользователи
получают большие преимущества.  Поскольку сервер и клиент NFS реализуются
в ядре ОС, все обычные несетевые программы получают возможность  работать
с  удаленными  файлами,  расположенными  на  подмонтированных NFS-дисках,
точно также как с локальными файлами.

9.6.  Протокол SNMP

    Протокол SNMP (Simple Network Management Protocol - простой протокол
управления  сетью)  работает на базе UDP и предназначен для использования
сетевыми управляющими станциями.  Он позволяет управляющим станциям соби-
рать  информацию  о  положении  дел в сети internet.  Протокол определяет
формат данных, их обработка и интерпретация остаются на усмотрение управ-
ляющих станций или менеджера сети.

9.7.  X-Window

    Система X-Window использует протокол X-Window, который  работает  на
базе  TCP,  для  многооконного  отображения графики и текста на растровых
дисплеях рабочих станций.  X-Window - это гораздо больше, чем просто ути-
лита  для  рисования окон; это целая философия человеко-машинного взаимо-
действия.

10.  Взаимозависимость протоколов семейства TCP/IP

    Ниже на рисунке предсавлена  схема  взаимосвязей  между  протоколами
семейства TCP/IP.

    Прикладной    FTP  TELNET  SMTP  TFTP  DNS  Сужба времени  Эхо
    уровень        |      |     |      |    |         |         |
                   --------------      --------------------------
                          |                             |
    Транспортный         TCP      GGP  HMP  EGP        UDP
    уровень               |        |    |    |          |
                          -------------------------------
                                        |
    Межсетевой                       IP/ICMP
    уровень                             |
                      --------------------------------------
                      |            |          |            |
    Сетевой       Локальные     ARPANET     SATNET      Пакетная
    уровень         сети                                радиосеть

     Рис.13. Структура взаимосвязей протоколов семейства TCP/IP

    Подробное описание протоколов можно найти в RFC, тематический  ката-
лог  которых  приведен  в Приложении 1, а состояние стандартов отражено в
Приложении 2.





Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту

Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis

Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS

Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT

В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat

Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp

Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration

Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster

HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS

История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire

Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
2011-01-28, Капитан
Температура в серверной

Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
2011-01-21, m4rkell
Syslog server

Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
2011-01-07, lissyara
Canon/gphotofs

Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
2010-12-13, Al
IPSec

Описание принципов работы IPSEC и способов аутентификации.
2010-12-07, manefesto
FreeBSD on flash

Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
2010-12-05, Fomalhaut
root ZFS, GPT

Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
2010-09-05, Cancer
Настройка аудиоплеера на ximp3

Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
2010-08-31, Cancer
Установка и настройка OpenVPN

На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
2010-08-25, manefesto
freebsd lvm

Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
2010-04-30, gonzo111
proftpd file auth&quota

Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
2010-04-22, lissyara
tw_cli

Пошаговая инструкция по восстановлению RAID на контроллере 3ware, из которого выпал один диск. Настройка мониторинга состояния рейда и отчётов о его состоянии на email.
2010-04-14, fox
MySQL Master+Master

MySQL (Master Master) and (Master Slave) Как настроить репликацию…
2010-03-09, terminus
DNS zones

Краткий ликбез про управление DNS зонами. Примеры проведения делегирования прямых и обратных DNS зон.
2010-03-09, aspera
Squid+AD (group access)

Настройка прокси сервера SQUID с автроризацией пользователей в AD. Разделение пользователей на группы
2010-03-02, BlackCat
Шлюз: Часть 4

Настройка дополнительных сервисов: синхронизация времени (OpenNTPD), клиент DynDNS.org.
2010-03-01, BlackCat
Шлюз: Часть 3

Настройка DHCP и DNS серверов для работы внутри частной сети, c поддержкой внутренних (частных зон) DNS, а так же интеграция DHCP и DNS сервисов.
2010-03-01, BlackCat
Шлюз: Часть 2

Конфигурация МСЭ pf для проброса портов с изменением порта назначения и без, а так же поддержки активного режима FTP и ограничения максимального размера сегмента
2010-03-01, BlackCat
Шлюз: Часть 1

Быстрая настройка шлюза/маршрутизатора с установлением PPPoE-соединения, поддержкой NAT и DNS-forwarding.
2010-02-23, Morty
darkstat

Простая считалка траффика, со встроенным веб-сервером. Очень маленькая, может делать отчеты трафика по хостам, портам, протоколам, а также строить графики
2010-01-23, gonzo111
squid+sams+sqstat

Пилим squid и sams - примеры конфигов с объяснениями. Установка SqStat.
2009-12-19, schizoid
mpd5 + radius + ng_car + Abills

Настройка pppoe-сервера с биллинговой системой Abills и шейпером ng_car
2009-11-16, lissyara
UFS->ZFS

Удалённая миграция с UFS на ZFS. Загрузка с раздела zfs. Настройка для работы с малым количеством памяти под архитектурой i386.
2009-11-13, gx_ua
fusefs-ntfs

Установка, настройка и использование fusefs-ntfs, драйвер NTFS, предназанченного для монтирования NTFS разделов под FreeBSD
2009-11-12, Morty
LiveCD

Создание собственного LiveCD с необходимыми вам изменениями, автоматизирование данного процесса, а так же вариант скоростной сборки СД.
2009-09-27, lissyara
Samba как PDC

Контроллер домена - аналог M$ NT4 домена под самбой, без использования LDAP и прочей хиромантии. Просто и быстро =)
2009-08-30, terminus
ipfw nat

Подробное руководство по ipfw nat, сложные случаи конфигурации.
2009-08-24, levantuev
HotSpot

Установка Hotspot системы в общественное заведение.
2009-08-18, lissyara
diskless

Создание бездисковых терминалов под управлением FreeBSD - с загрузкой по сети. Используются для старта rdesktop и подключения к виндовому серверу терминалов.
2009-07-29, BAV_Lug
Видеонаблюдение

Настройка бюджетного варианта видеонаблюдения на удаленном объекте
2009-07-22, Cancer
OpenLDAP адресная книга

Настройка и создание адресной книги на базе OpenLDAP + phpLDAPadmin
2009-06-30, SergeySL
AimSniff

Руководство по созданию системы мониторинга ICQ-переписки на базе AimSniff, использующей базу данных MySQL для хранения и Web-интерфейс WAS (Web Aim Sniff) для просмотра перехваченных сообщений
2009-06-25, atrium
Управление правами доступа

Полномочия пользователей и файлов, принадлежащих им, формирует концепцию ОС UNIX.
2009-06-16, DNK
Exim+PgSQL

Установка почтовой системы exim+pgsql на FreeBSD 7.1
2009-05-30, mvalery
HDD(mbr) -> HDD(gpt)

Как разбить диск размером более 2TB на разделы, сделать загрузочным, а затем перенести на него информацию с рабочей системы — донора.
2009-05-22, Cancer
SendXMPP

Отправка сообщений на Джаббер сервер по средствам SendXMPP
2009-05-11, Raven2000
Network UPS Tools

Network UPS Tools представляет собой набор программ, которые обеспечивают общий интерфейс для мониторинга и администрирование UPS оборудования.
2009-04-29, m0ps
IPSEC over GRE with RIP

Пример IPSEC over GRE и динамическим роутингом (RIP), с ADSL в качестве последней мили на оборудовании Cisco.
2009-04-24, WhiteBear777
qemu network

Появилась необходимость поставить на БСД эмулятор(qemu) и настроить в качестве гостевой ОС Windows XP, предоставив ей выход в локалку и в сеть internet...
2009-04-22, vp
freebsd + huawei 162 gsm modem

В статье описывается простой способ подключения модема huawei 162 к freebsd + первичная настройка smstools
2009-04-12, mvalery
Мониторинг RAID

Мониторинг из командной строки RAID компаний AMCC 3ware, HighPoint, Dell (Perc 5/i и PERC 6/i) и LSI (MegaRAID SAS 8408E и SAS1078)
2009-04-09, texnotronic
RAID1 via LAN

Функциональности DRBD во FreeBSD можно добиться примонтировав блочное устройство по сети при помощи GEOM Gate (ggate) и добавив его в зеркало с локальным диском средствами gmirror.
2009-04-03, Raven2000
Оптимизация хоста для CMS

В последнее время на старый и не очень быстрый ПК (Celeron 800 RAM 256) мною было навешано с десяток сайтов и некоторые были из серии тяжелых CMS. И так нам дано FreeBSD 7.1 и ~10 сайтов/CMS.
2009-04-01, atrium
VSFTPD + AD && MySQL

Настройка самого безопасного сервера FTP - vsftpd.
2009-03-31, Dron
Peoplenet + C-motech (3G)

Описание подключения к сети Peoplenet посредством 3G модема С-motech CCu-650U на FreeBSD
2009-03-25, lissyara
mod_auth_external

mod_auth_external - авторизация пользователей в apache c помощью внешней программы - например, системных пользователей.
2009-03-24, gx_ua
Lightsquid

Частично lightsquid может заменить sams: быстрая и простая инсталляция, быстрый парсер, cgi скрипт для динамической генерации отчета, нет привязки к БД, различные графические отчеты, мультиязычный инт
2009-03-18, LHC
Установка Zabbix-1.6

Установка и первоначальная настройка системы мониторинга Zabbix (версия 1.6)
2009-03-16, Cancer
Принт-Сервер Samba+LPD & AD

Простейшая настройка Принт-Сервера на FreeBSD используя Samba+LPD & AD
2009-03-04, Mad_caterpillar
ipsec_vpnc

Настройка VPN IPSec концентратора на FreeBSD 6.2 для клиента cisco с использованием ipsec-tools и авторизацией в активной директории
2009-02-18, Andy
Free-SA

Программа анализирует log файлы Squid'а и формирует по ним отчет.
2009-02-02, Cancer
Openfire Jabber Server

Установка Jabber сервера на примере Openfire
2009-01-28, Cancer
mpd5 + сжатие и шифрование

Установка VPN сервера mpd5 + сжатие и шифрование
2009-01-26, vp
freebsd + webcamera

Подключение и настройка вебмкамеры для работы с freebsd на примере Logitech QCam STX
2009-01-10, Grishun_U_S
конфиг для офисов

В статье разбирается конфиг для офиса, пользователи которого имеют строгие ограничения по портам. Заворачиваем www трафик на транспарентный прокси, а остальное NAT'им. Эффективно делим канал интернет
2008-12-27, Storoge
sftp+chroot

Возникла необходимость дать возможность нескольким пользователям заливать на сервер контент для своих сайтов через sftp, чтобы при этом не страдала безопасность.
2008-12-13, Morty
PurefFTPd

Администрирование pureftpd-сервера с помощью вэб интерфейса Usermanager
2008-12-11, lissyara
termlog

Небольшая простая утилита, использующаяся для записи в файл всего что происходит на терминалах системы. Полезно, когда есть доступ по ssh у тех, кому не очень доверяете. Паранойя - это не плохо =)
2008-11-26, Cancer
SQUID+SAMS +Rejik-(ADLDAP)

Установка Прокси сервера SQUID с красивой мордой SAMS и редиректором REJIK,для учета кто куда ходил + графики в pdf,РЕЖИК собственно рубит банеры и запрещает пользователям ходить на запрещенные сайты,
2008-11-22, dvg_lab
php5-oci8

Решение проблем segmentation fault (core dumped) при работе с oracle8-client и php5-oci8
2008-11-21, m0ps
NTP

Пример настройки NTP сервера для локальной сети и клиента, для синхронизации времени с локальный NTP сервером. Обновление ntpd из портов.
2008-11-20, Cancer
SQUID+SAMS +Rejik-(NTLM)

Установка Прокси сервера SQUID с аутентификацией по NTL с красивой мордой SAMS и редиректором REJIK,для учета кто куда ходил + графики в pdf, РЕЖИК собственно рубит банеры и запрещает пользователям хо
2008-11-20, UA
Hotspot

Настройка безпроводной точки доступа (WiFi) на freebsd
2008-11-12, Shaman
Enemy Territory

Появилась у меня такое желание поднять сервер Enemy Territory. Поискал погуглил, ничего толкового не нашел пришлось все самому делать. И вот решил поделиться опытом. Начинаем......
2008-11-11, lissyara
Samba+ NT ACL

Использование vfs самбы - модули full_audit и recycle. Настройка для использования в качестве файлопомойки с 500+ одновременно работающих юзеров. Раздача прав через нативный виндовый интерфейс.
2008-11-11, Raven2000
Upgrading OpenBSD

Сегодня мы будем обновлять OpenBSD. Систему необходимо поддерживать в актуальном виде и следить, чтобы все работало, как часы и все дырки были залатаны до прихода врага =)
2008-11-10, lexy
SMSTools 3

Как автоматизировать отправку и обработку входящих сообщений при помощи мобильного телефона, датакабеля и компа
2008-11-06, Cancer
Asterisk IP PBX

Установка VoiP сервера Asterisk IP PBX для соединения двух шлюзов и АТС
2008-10-30, atrium
Samba & CUPS & AD & ACL

Настройка Samba в роли доменного файл-сервера, и CUPS в роли принт-сервера для Windows клиентов
2008-10-17, Raven2000
src & ports

Конечно, в OpenBSD система портов никогда не сможет быть полной сравнение с той же системой во FreeBSD. Связано это с тем, что разработчики включают в порты лишь те приложение которые протестированн
2008-10-13, Morty
Mysql - базовое описание

Базовое описание и принципы работы с MySQL
2008-10-10, Cancer
exim&dovecot + fetchmail + SSL

Exim & Dovecot + Postfixadmin & Roundcube + Fetchmail & smtp_relay С возможностью отправлять письма через смтп релей провайдера. С использование SSL шифрование: POP3s IMAPs sSMTP
2008-10-09, m0ps
Дополнительные порты для роутера

Увеличение количества Ethernet портов маршрутизатора за счет свободных портов коммутатора пробросив vlan с сабинтерфейса роутера на интерфейс коммутатора.
2008-10-06, princeps
Bacula

Настройка сервера системы резервного копирования Bacula на FreeBSD для бэкапов FreeBSD и Windows машин
2008-10-02, zheromo
Postfix + DBMail

Создание почтовой системы на основе Postfix + DBMail + SASL2 + TLS + DSpam + ClamAV + RoundCubeWebMail
2008-10-02, Cancer
SugarForge CRM

SugarForge CRM предоставляет подавляющее большинство функциональных возможностей CRM систем
2008-09-12, arksu
ng_ipacct + squid

Подсчет трафика с помощью ng_ipacct. Связка ng_ipacct + squid + парсер логов + авторизатор + nginx + mysql и куча служебных скриптов для работы всей системы.
2008-09-03, Raven2000
GLPI

Мне надо было найти замену существующей программы инвентаризации, чтобы за компьютерами, принтерами, картриджами, лицензиями и тп был учет. Желательно с дополнительными бонусами типа системы подачи...
2008-09-03, salimk
POWERDNS

Статья о том как мигрировать с DNS сетвера ISC Bind на POWERDNS
2008-09-03, DNK
Rinetd

Редирект TCP портов с помощью утилиты rinetd - просто до безобразия - само прилодение простое, конфиг в одну строчку - что ещё надо для счастья? =)
2008-09-03, L!Ner
eGroupWare

Это сервер групповой работы. Он укомплектован собственным веб-интерфейсом, который обеспечивает доступ к вашим данным с любой платформы по всей планете.
2008-08-30, jafff
MAC адрес

У девайса VoIP Planet VIP-000 слетел MAC адрес и стал FF-FF-FF-FF-FF-FF, как я его востанавливал
2008-08-30, Morty
clonehdd

Перенесение, бэкапирование HDD,легко и просто
2008-07-31, Raven2000
Proxy Auto Configuration

Возникла необходимость автоматически настраивать прокси для всех компов и не бегать например если поменялось что-то на сервере прокси. Для этого давно существует технология Proxy Auto Configuration.
2008-07-29, f0s
NNTP сервер

Конфигурирование собственного NNTP-сервера.
2008-07-28, Al
spamooborona

настройка yandex spamooborona в качестве smtp-proxy для работы с exim
2008-07-28, Cancer
SQUID+SAMS +Rejik-(NCSA)

Установка Прокси сервера SQUID с красивой мордой SAMS и редиректором REJIK,для учета кто куда ходил + графики в pdf,РЕЖИК собственно рубит банеры и запрещает пользователям ходить на запрещенные сайты,
2008-07-20, Raven2000
Pax

Эта замечательная утилита поставляется с FreeBSD по умолчанию, и она имеет неплохой потенциал. Можно создавать архивы модифицировать их, а так же живьем переносить всю операционную систему с данными
2008-07-16, Andy2k
BIND & AD

Настройка BIND для обслуживания запросов контроллеров Active Directory. Альтернатива поднятию DNS от Microsoft.
2008-07-16, aleksey.kravchenko
Samba (PDC+BDC)

Поднять главный (офис) и резервный (филиал) контроллер домена на базе Samba и OpenLDAP, организовать синхронизацию и репликацию между ними. Запись в LDAP должена выполняться только на PDC.
2008-07-14, aleksey.kravchenko
OpenVPN + LDAP

Статья о том, как настроить OpenVPN с авторизацией пользователей в OpenLDAP.
2008-07-14, aleksey.kravchenko
ProFTPd + LDAP

ProFTPd с авторизацией пользователей в OpenLDAP
2008-07-13, lissyara
Asus Eee PC

Дали на несколько дней поиграться Asus Eee PC - мелкий ноутбок по смешной цене. Ну, первым делом ставим правильный ОС и смотрим - что из этого получиться.
2008-07-09, terminus
DNS сервер Unbound

Установка и настройка кеширующего DNS сервера Unbound под управлением FreeBSD 7.0
2008-07-08, f0s
mozilla autoconfig

Автонастройка браузера и почты Mozilla Seamonkey пользователям
2008-07-05, lissyara
iftop

Утилита предназначена для мониторинга загрузки канала в режиме реального времени - позволяет видеть кто именно занял полосу. Полезно для организаций с FreeBSD на шлюзовой машине.
2008-07-02, manefesto
snd_hda

Патчим snd_hda для корректной работы с наушниками
2008-06-27, Grishun_U_S
dd : бэкапируем windows

Клонирование разделов windows с помощью загрузочного диска FreeBSD
2008-06-25, terminus
DNS сервер NSD

Установка и настройка авторитарного DNS сервера NSD под управлением FreeBSD 7.0
2008-06-17, Al
NetXtreme BCM5722

Драйвер для сетевой карты NetXtreme BCM5722 Gigabit Ethernet
2008-06-15, tango
Amanda

Установка и настройка сервера резервного копирования Amanda на FreeBSD.
2008-06-12, LMik
Виртуальный свитч

Статья описывает создание виртуального коммутатора для соединения удаленных физических ethernet сетей.
2008-06-08, littlesavage
SiS*Mirage*1 на D201GLY2

Как заставить работать видеоrарту SiS*Mirage*1 на материнской D201GLY2
2008-06-06, nsand
Рыбалка на FreeBSD

Стьатья о том как настроить рыбалку со спутника под FreeBSD
2008-06-06, nsand
TT budget S-1401

Настройка драйвера ttbudget (SkyStar3) под FreeBSD
2008-05-30, Andy2k
NOD32 mirror

Скрипт для создания зеркала обновлений для антивируса NOD. Автоматически ищет нужные логин-пароль для получения обновлений. В теории не требует обслуживания.
2008-05-25, Romzes
метаданные exif

Пример сортировки фотографий сделаных разными фотоаппаратами, с разными названиями, датами создания/модификации. Из под консоли, конечно.
2008-05-23, FenX
svn+apache+trac

Установка связки Apache2.2 + Subversion + Trac (Установка и настройка SVN сервера с доступом к репозиториям по http протоколу)
2008-05-22, Grishun_U_S
простой конфиг PF

В статье разбирается простой конфигурационный файл pf "изнутри можно все"
2008-05-20, KrivoSoft
HAVP

HAVP(HTTP AntiVirus proxy)- работает как http прокси, проверяющий файлики используя LibClamav. В заметке описан процес прикручивания антивируса к уже работающему прокси серверу squid.
2008-05-20, Covax
ALTQ в IPFW

Исполльзование ALTQ вместе с IPFW
2008-05-19, nonalog2007
pppoe

Настройка ADSL-модема для подключения к Интернет.
2008-05-04, Abigor
php + mssql

Настройка php на freebsd для работы с базами в mssql по доменной авторизации.
2008-04-28, serge
i386=>amd64

Рассматриваеться способ удаленной миграции с архитектуры i386 на amd64 на рабочем сервере.
2008-04-24, Mr.Y
Lan over Bluetooth

Статья описывает как используя Bluetooth, объединить две FreeBSD машины в сеть.
2008-04-19, lissyara
WiFi WPA

Подключение FreeBSD к беспроводной WiFi сети с использованием шифрования WPA.
2008-04-18, nikll
nginx+php-fpm+mysql

Статья о настройке мощного веб сервера который не ляжет от хорошей нагрузки.
2008-04-16, nikll
qmail-ldap + AD

Статья о том как я прикрутил qmail к АД win2003 (с упровлением почтовыми аккаунтами через консоль mmc из под винды)
2008-04-14, SHPAk
Приглашение csh/tcsh

Приглашение csh/tcsh не всегда удобно. Здесь описано как помянять оное...
2008-04-07, inspirra
deltup, xdelta, bdelta

Некоторые тонкости создания бинарных патчей. И использование "The dynamic deltup server network" для экономии на обновлениях исходников программ устанавливаемых из портов.
2008-04-02, fr33man
exim + cyrus-imapd

Руководство по настройке почтовой системы на базе OpenBSD-4.2: exim + cyrus-imapd + mysql
2008-03-30, Morty
LiveCD (+restore)

LiveCD, который развернет мне на жёсткий диск готовую настроенную систему
2008-03-25, lissyara
BlueTooth mouse

Краткое повествование о том, как привернуть BlueTooth мышь к FreeBSD. Краткое - потому как делается это с полпинка...
2008-03-21, moonug
ProFTPD+iconv

Порт позволяющий включить перекодировку имён файлов в proftpd. Раньше для этого был патч, а щас всё поломали =))
2008-03-11, helloworld
vsftpd + mysql

Настройка фтп сервера vsftpd с пользователями из mysql
2008-03-06, Raven2000
Call of Duty 4

Call of Duty 4: Modern Warfare — компьютерная игра, продолжение серии COD, разработанное студией Infinity Ward. Это первая игра в серии, действие которой происходит не во время мировой войны.
2008-03-04, schizoid
NeTAMS 2

Netams, статистика, биллинг, огрнаичение и подсчет трафика
2008-03-04, schizoid
NeTAMS

Программа для учета и управления сетевым трафиком
2008-03-01, Le1
EA Battlefield 2 server

Установка игрового сервера EA Battlefield 2 под ОС FreeBSD
2008-02-25, dikens3
Dynamic DNS

Свой сервер с динамическим IP-Адресом.
2008-02-23, fr33man
squid ntlm

Настройка Squid с аутентификацией ntlm, под OpenBSD. Решение проблем сборки с поддержкой АД.
2008-02-18, lissyara
BlueTooth

Встала задача залить на Нокию гиг музыки через BlueTooth. ОС - правильный - FreeBSD, вот про то как это сделать из под неё - и рассказ. Также немного про нынешнее состояние дел с голубыми зубами =)
2008-02-17, Raven2000
NFS & Win2k3

При работе с UNIX системами на предприятиях часто приходится организовывать совместную работу с Windows. Необходимо обеспечить взаимодействие UNIX<>WIN бывает, что доступ по FTP или др не устраивает.
2008-02-14, Morty
Lightsquid

Снятие статистики с OOPS, SQUID с помощью lightsquid - нечто на подобии SARGa, и выполняет туже задачу, подбивает статистику пользования прокси сервером
2008-02-14, Morty
OOPS

Краткое описание установки и настройки прозрачного прокси-сервера OOPS
2008-02-12, fr33man
Apache

Настройка web-сервера apache, на базе OpenBSD. Нужен был web сервер. Стандартно нужно было ставить apache. Но я помнил, когда раньше работал с OpenBSD, что апач поставляется вместе с системой. Так
2008-02-11, Raven2000
Установка OpenBSD

OpenBSD — свободная многоплатформенная операционная система, основанная на 4.4BSD — BSD-реализации UNIX системы. Основным отличием OpenBSD от других свободных операционных систем, базирующихся на
2008-01-31, serge
ApacheStats

Сбор статистики с веб-сервера Apache в Cacti с использованием модулей mod_status и mod_info. Отображается число хитов в секунду, загрузка чилдренов и прочая полезная инфа.
2008-01-30, Raven2000
CVSUP и софт через Proxy

При работе за прокси люди испытывают неудобство при обновление портов и установки портов. Хотя, наверное, догадываются, что FreeBSD может элегантно обходить эти камни, но не знают как.
2008-01-25, nikll
kde и smb

статья о том как фрю сделать членом win2003 домена и о том как в кде 3.5 ходить по доменным шарам с нормальной русской кодировкой
2008-01-21, Fastman
Создание программ на QT4/С++

Установка и настройка QT4. Пример создание приложения с GUI.
2008-01-17, Morty
stunnel для pop3,smtp

Создание защищенного подключения для сервисов POP3, SMTP, Imap , www с помощью stunnel
2008-01-09, lissyara
Atheros AR5007EG

Прикручивание карточки Atheros AR5007EG (в ноутбуке Toshiba L40-139) под FreeBSD.
2008-01-04, LMik
growfs

Статья наглядно описывает изменение размера раздела диска в FreeBSD при помощи growfs, без потери данных находящихся на диске.
2007-12-23, serge
FreeBSD на VDS

Рассматривается настройка FreeBSD6.2 на VDS с чистой ОС.
2007-12-22, serge
OTRS на Apache1

Рассматривается установка Open Ticket Request System для работы на хостинг сервере в связке apache1.3 + mod_perl + mysql50.
2007-12-11, INFected
SkyStar-2+SlonAx

Встала задача организовать прием трафика от спутникового провайдера. Естественно на раздающем сервере должна быть FreeBSD. А как же иначе?
2007-12-08, netcat
GEOM-ELI

Шифрование файловых систем посредством класса GEOM-ELI
2007-12-07, helloworld
PVPGN

Настройка сервера Battle.net в небольшой локальной сети.
2007-12-06, seacon
ESET NOD32

Описание настройки антивирусной системы NOD32 ESET File Security
2007-11-23, azu
Bluetooth proximity monitor

Описание и скрипты для отслеживания удаленности bluetooth устройства.
2007-11-19, catdog_
verlihub (p2p)

описывается, как установить, настроить p2p-сервер и как им управлять
2007-11-14, UA
OpenVPN

руководство по настройке openvpn между FreeBSD и Windows
2007-11-11, AlkoGekS
atacontrol

Проверка работы raid-1 с помощью штатной утилиты atacontrol на freebsd 6.2
2007-11-08, Raven2000
Transport Tycoon Deluxe

Transport Tycoon Deluxe (сокращенно - TTD) - экономическая транспортная стратегия, в которой целью игрока является создание максимально доходной транспортной империи.
2007-11-06, lissyara
squid+AD

Инструкция - как авторизовать пользователей в домене, разделив доступ к ресурсам по виндовым группам - кому куда можно, а кому нельзя, с использованием squid2.6. Ну и объяснение - почему пока не 3.0.
2007-11-03, schizoid
icecast2

Вещание интернет радио в локальной сети с помощью icecast2
2007-11-02, AlkoGekS
RoundCube

Возникла необходимость перевести пользователей с squirrelmail на roundcube, завязать все это хотелось на postgresql, чтобы и в ней разобратьс заодно.
2007-10-30, SniZ
queues

Краткая заметка по использованию очередей В IPFW
2007-10-29, s@sh@
LACP и VLAN

Описание настройки LACP отдельно и совместно с VLAN во FreeBSD 7.0
2007-10-26, Al
portaudit

Эти приложение используется для контроля уязвимостей и обновления приложений, установленных из портов.
2007-10-24, -cat-
Заметки об IPFW

Заметки о настройке IPFW, подключение IPFW и NATD, принцип взаимодействия, принципы построения правил IPFW.
2007-10-23, Raven2000
X-Bomber

Представляю вниманию отличную аркаду которая скрасит наш быт и существование в офисном пространстве именуемая как "работа" И так прошу любить и жаловать X-Bomber
2007-10-22, Raven2000
TeamSpeak

Teamspeak (тимспик) — семейство программ, предназначенных для общения голосом в сети. От классического телефона отличается практически неограниченным количеством абонентов, разговаривающих одноврем
2007-10-22, RageLT
Nginx+php+fcgi

"Nginx + PHP + Spawn-fcgi" - установка nginx под FreeBSD и настройка для выполнения PHP скриптов.
2007-10-20, dikens3
UFS2

Как устроена UFS2. Небольшой взгляд изнутри.
2007-10-19, Al
Nagios - мониторинг сети

настройка мониторинга сети с использованием Nagios
2007-10-19, BlackCat
FFS из-под WinXP

Описание програмки для чтения BSD разделов под Windows. К сожалению, диск подключается в режиме только чтения - но и это уже неплохо.
2007-10-14, dikens3
recovery files

Восстановление файлов на FreeBSD с использованием foremost, sleuthkit, photorec. Немного теории о хранении файлов на диске.
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 9 чел.
За последние 30 мин было: 39 человек
За сегодня было
8120 показов,
890 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.1042 секунд
Из них PHP: 78%; SQL: 22%; Число SQL-запросов: 46 шт.
Исходный размер: 357994; Сжатая: 67684