44502 (663319), страница 6
Текст из файла (страница 6)
ются новые протоколы маршрутизации. Эти изменения должны учитываться в
программном обеспечении всех машин.
Несколько более специальная проблема связана с бездисковыми рабочими
станциями. По своей природе бездисковые машины сильно зависят от сети и
от файл-серверов, с которых они осуществляют загрузку программ, и где
располагается их область своппинга. Исполнение программ, следящих за
широковещательными передачами в сети, на бездисковых машинах связано с
большими трудностями. Протоколы маршрутизации построены в основном на
широковещательных передачах. Например, все сетевые шлюзы могут широкове-
щательно передавать содержание своих таблиц маршрутов через каждые 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 поддерживают информацию о состоянии соединения,
называемого виртуальным каналом. Этот виртуальный канал потребляет