/
Tags: компьютерные технологии оргсвязь программирование компьютерные сети
ISBN: 5-8046-0041-9
Year: 2004
Text
77m Parker
and Karanjit S. Siyan
TCP/IP
Unleashed
3d edition
SAMS
ББК 32.988.02
УДК 681.324
П18
П18 TCP/IP. Для профессионалов. 3-е изд. / Т. Паркер, К. Сиян. — СПб.: Питер,
2004.— 859 с: ил.
ISBN 5-8046-0041-9
Главной особенностью этой книги является то, что материал в ней изложен с позиций, не
связанных с программированием. Авторы рассказывают о том, как работает протокол TCP/IP, как
он взаимодействует с другими протоколами своего семейства, какие функции выполняет.
Описания сопровождаются подробными инструкциями по установке и настройке протоколов и
служб, приводятся используемые для этого команды и примерные результаты их выполнения. Вы
узнаете, как организовать поддержку TCP/IP во многих операционных системах, включая
Windows 9x, Windows NT, Windows 2000, NetWare и в популярной системе Linux. В книге также
затронуты вопросы безопасности.
ББК 32.988.02
УДК 681.324
Права на издание получены по соглашению с Sams Publishing.
Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного
разрешения владельцев авторских прав.
Информация, содержащаяся в данной книге, получена из источников, рассматриваемых издательством как надежные. Тем не
менее, имея в виду возможные человеческие или технические ошибки, издательство не может гарантировать абсолютную
точность и полноту приводимых сведений и не несет ответственности за возможные ошибки, связанные с использованием книги.
© 2002 by Sams Publishing
ISBN 0-672-32351-6 (англ.) © Перевод на русский язык, ЗАО Издательский дом «Питер», 2004
ISBN 5-8046-0041-9 © Издание на русском языке, оформление, ЗАО Издательский дом «Питер», 2004
Краткое содержание
Благодарности 26
Введение 27
Глава 1. Открытые коммуникации 29
Глава 2. TCP/IP и Интернет 43
Глава 3. Общий обзор TCP/IP 57
Глава 4. Имена и адреса в сетях IP 70
Глава 5. ARP и RARP 99
Глава 6. DNS 123
Глава 7. WINS 138
Глава 8. Автоматизированная настройка TCP/IP 162
Глава 9. Обзор семейства протоколов IP 190
Глава 10. Протокол IP 204
Глава 11. Транспортные протоколы 248
Глава 12. IPv6 306
Глава 13. Маршрутизация в сетях IP 326
Глава 14. Шлюзовые протоколы 347
Глава 15. Протокол RIP 353
Глава 16. Протокол OSPF 385
Глава 17. Протокол IPP 408
Глава 18. Протоколы удаленного доступа 413
Глава 19. Брандмауэры 444
Глава 20. Сетевая и системная безопасность 457
Глава 21. Общая конфигурация 470
Глава 22. Настройка TCP/IP в Windows 95 и Windows 98 485
Глава 23. Настройка TCP/IP в Windows 2000 505
Глава 24. Поддержка IP в Novell NetWare 548
Глава 25. Настройка TCP/IP в системе Linux 563
Глава 26. Whois и Finger 584
Глава 27. Протоколы пересылки файлов 599
Глава 28. Telnet 620
Глава 29. Инструментарий удаленного доступа 636
Глава 30. Протоколы совместного доступа к файловой системе: NFS и SMB/CIFS . . . 648
Глава 31. Интеграция TCP/IP с прикладными службами 667
Глава 32. Почтовые протоколы Интернета 672
Глава 33. Служба HTTP 688
Глава 34. Служба сетевых новостей и протокол NNTP 704
Глава 35. Установка и настройка web-сервера 713
Глава 36. Настройка и оптимизация протоколов в системах семейства Unix .... 729
Глава 37. Реализация DNS 744
Глава 38. Управление сетью TCP/IP 756
Глава 39. Протокол управления сетью SNMP 777
Глава 40. Безопасность передачи данных TCP/IP 790
Глава 41. Инструментарий и методы диагностики 805
Приложение A. RFC и стандарты 828
Приложение Б. Сокращения и акронимы 837
Алфавитный указатель 846
Содержание
Благодарности . 26
Введение 27
От издательства 28
Глава 1. Открытые коммуникации 29
Эволюция открытых сетей 30
Многоуровневая структура коммуникаций 30
Эталонная модель OSI 32
1. Физический уровень 33
2. Канальный уровень 34
3. Сетевой уровень 34
4. Транспортный уровень 35
5. Сеансовый уровень 35
6. Представительский уровень 37
7. Прикладной уровень 37
Использование модели 37
Эталонная модель TCP/IP 40
Анатомия модели TCP/IP 40
Итоги 42
Глава 2. TCP/IP и Интернет 43
История Интернета 43
ARPANET 44
TCP/IP 44
NSF 45
Интернет сегодня 45
RFC и процесс стандартизации 46
Источники информации о RFC 47
Индексы RFC 48
Краткое знакомство со службами Интернета 48
Whois и Finger 48
FTP 48
Telnet 49
Электронная почта 49
World Wide Web 49
Usenet 49
Интрасети и эксграсети 50
Интрасети 50
Преимущества интрасетей 50
Области применения интрасетей 51
Предоставление внешнего доступа к интрасети 51
Будущее Интернета 52
NGI (Next Generation Internet) 52
vBNS 52
Internet2 A2) 53
Так кто же главный в Интернете? 53
ISOC (Internet Society) 53
IAB (Internet Architecture Board) 53
IETF (Internet Engineering Task Force) 54
IESG (Internet Engineering Steering Group) 54
IANA (Internet Assigned Numbers Authority) 54
ICANN (Internet Corporation for Assigned Names and Numbers) 54
InterNIC и другие регистрирующие органы 55
Редактор RFC 55
Поставщики услуг Интернета 55
Итоги 56
Глава 3. Общий обзор TCP/IP 57
Преимущества TCP/IP 57
Уровни и протоколы TCP/IP 58
Архитектура 58
TCP 59
IP 61
Прикладной уровень 63
Транспортный уровень 63
Сетевой уровень 64
Канальный уровень 64
Telnet 64
FTP 64
TFTP 65
SMTP 66
NFS 66
SNMP 67
Место TCP/IP в системе 68
Концепция интрасети 69
Итоги 69
Глава 4. Имена и адреса в сетях IP 70
Адресация в протоколе IP 70
Двоичная и десятичная запись 71
Форматы адресов IPv4 72
КлассА 73
КлассВ 74
Классе 74
Класс D 75
КлассЕ 76
Недостатки схемы адресации IPv4 76
Специальные IP-адреса 77
Адресация сети 78
Направленная широковещательная рассылка 78
Ограниченная рассылка 79
Нулевой IP-адрес 79
IP-адрес хоста в текущей сети 80
Обратная связь 80
Исключение в схеме адресации IP 81
Появление подсетей 81
Подсети 82
Пример использования подсети 85
Маски подсети переменной длины 87
CIDR 88
Бесклассовая адресация 89
Расширенное агрегирование маршрутных данных 89
Суперсети 89
Принцип работы CIDR 90
Открытые адресные пространства 91
RFC 1597 и 1918 91
Адресация в частных сетях 92
Назначение адресов класса С 94
Настройка IP-адресов 95
Адресация в IP версии 6 96
Итоги 98
Глава 5. ARP и RARP 99
Механизмы адресации 99
Адресация в подсетях 100
Физические адреса 100
Адрес LLC 101
Сетевые кадры 102
IP-адреса 103
Общие сведения о протоколе ARP 104
toiuARP 105
Тип оборудования 106
Тип протокола 107
Длина аппаратного адреса (HLen) 108
Длина протокольного адреса (PLen) 108
Код операции 108
Аппаратный адрес отправителя 108
IP-адрес отправителя 108
Аппаратный адрес получателя 108
IP-адрес получателя 108
Схема работы ARP 109
Строение протокола ARP 110
Сетевой мониторинг с использованием ARP 111
Тайм-аут в кэше ARP 111
ARP в мостовых сетях ИЗ
Дублирование адресов и ARP 114
Дублирование IP-адресов клиентов TCP/IP 114
Дублирование IP-адресов на серверах TCP/IP 116
Проверка дублирования адресов ARP 117
Proxy ARP 117
RARP 118
Схема работы RARP 119
Сбой сервера RARP 121
Основные и резервные серверы RARP 121
Команда ARP 122
Итоги 122
Глава 6. DNS 123
Система доменных имен: общие принципы 123
Иерархическое строение DNS 125
Делегирование полномочий 126
Распределенная база данных DNS 127
Домены и зоны 127
Домены верхнего уровня в Интернете 128
Выбор сервера имен 128
Процесс разрешения имен 128
Рекурсивные запросы 128
Итеративные запросы 129
Кэширование 129
Запросы на обратное разрешение 129
Безопасность DNS 129
Ресурсные записи (RR) 129
Ресурсные записи типа SOA 130
Ресурсные записи типа А 132
Ресурсные записи типа NS \ 132
Ресурсные записи CNAME 132
Ресурсные записи PTR 133
Делегированные домены 133
Ресурсные записи HINFO 133
Ресурсные записи ISDN 134
Ресурсные записи MB 134
Ресурсные записи MG 135
Ресурсные записи MINFO 135
Ресурсные записи MR 135
Ресурсные записи MX 135
Ресурсные записи RP 136
Ресурсные записи RT 136
Ресурсные записи ТХТ 136
Ресурсные записи WKS 137
Ресурсные записи типа Х25 137
Итоги 137
Глава 7. WINS 138
NetBIOS 138
Разрешение имен в NetBIOS 141
Динамическое разрешение имен в NetBIOS 143
Преимущества WINS 144
Как работает WINS 144
Настройка клиентов WINS 146
Настройка WINS для прокси-агентов 147
Настройка прокси-агента в NT 4 148
Настройка прокси-агента в Windows 95/98 148
Настройка сервера WINS 148
Администрирование и сопровождение WINS 149
Добавление статических записей 149
Сопровождение базы данных WINS 150
Архивация базы данных WINS 153
Архивация данных реестра 154
Восстановление базы данных WINS 154
Сжатие базы данных WINS 154
Репликация WINS 155
Рекомендации по реализации WINS 156
Интеграция служб разрешения имен 156
Предоставление данных WINS через DHCP 157
Разрешение имен NetBIOS через файл LMHOSTS 158
Итоги 160
Глава 8. Автоматизированная настройка TCP/IP 162
Динамическая настройка конфигурации с применением ВООТР 162
IP-адреса запросов/ответов ВООТР 163
Потеря сообщений ВООТР 166
Формат сообщения ВООТР 166
Фазы ВООТР 168
Дополнительные данные 169
Динамическая настройка с использованием DHCP 171
Распределение IP-адресов в DHCP 171
Назначение IP-адресов в DHCP 172
Формат сообщения DHCP 175
Трассировка протокола DHCP 178
Итоги 189
Глава 9. Обзор семейства протоколов IP 190
Модель TCP/IP 190
Семейство протоколов TCP/IP 190
Протоколе 191
Заголовок IPv4 192
Задачи протокола IP 193
Поврежденные пакеты 194
Протокол TCP 195
Структура заголовка TCP 195
Задачи протокола TCP 197
Протокол UDP 200
Структура заголовка UDP 201
Задачи протокола UDP 201
Сравнение TCP с UDP 202
Итоги 203
Глава 10. Протокол IP 204
Абстрактная модель IP 204
Размер дейтаграммы IP 207
Фрагментация в IP 209
Структура дейтаграмм IP 210
Структура заголовка IP 211
Сетевой порядок байтов 238
Трассировка IP 239
Итоги 247
Глава 11. Транспортные протоколы 248
Протокол TCP 248
Возможности TCP 250
Программная среда хостов TCP 258
Открытие и закрытие соединений TCP 260
Структура пакета TCP 261
Адаптивный тайм-аут в TCP 275
Снижение последствий перегрузки сети в TCP 278
Борьба с синдромом мелкого окна 279
Разрыв соединений TCP 282
Конечный автомат TCP 283
Протокол UDP 298
Структура заголовка UDP 300
Иерархия UDP и инкапсуляция 301
Трассировка UDP 302
Итоги 304
Глава 12. IPv6 306
Дейтаграмма IPv6 307
Классификация приоритетов 309
Потоковые метки 310
128-разрядные IP-адреса 311
Заголовки расширения IP 312
Хосты с несколькими IP-адресами 320
Направленные, групповые и альтернативные адреса 321
Переход с IPv4 на IPv6 323
Итоги 325
Глава 13. Маршрутизация в сетях IP 326
Основы маршрутизации 326
Статическая маршрутизация 327
Недостатки статической маршрутизации 328
Дистанционно-векторная маршрутизация 331
Топологическая маршрутизация 334
Согласование в сетях IP 336
Адаптация к топологическим изменениям 337
Время согласования 342
Построение маршрутов в сетях IP 343
Хранение альтернативных маршрутов 344
Механизм инициирования обновлений 344
Маршрутные метрики 345
Итоги 346
Глава 14. Шлюзовые протоколы 347
Шлюзы, мосты и маршрутизаторы 347
Шлюз 348
Мост 348
Маршрутизатор 349
Автономная система 349
Знакомство со шлюзовыми протоколами 349
Протоколы IGP и EGP 350
Протокол GGP 350
Протокол EGP 351
Протоколы IGP 352
Итоги 352
Глава 15. Протокол RIP 353
RFC 1058 353
Формат пакета RIP 354
Таблица маршрутизации RIP 356
Механика работы RIP 358
Вычисление расстояний 360
Обновление таблицы маршрутизации 365
Проблемы адресации 367
Топологические изменения 370
Согласование 371
Проблема бесконечного отсчета 373
Недостатки RIP 382
Ограничение количества переходов 382
Фиксированные метрики 382
Высокий уровень трафика при обновлении таблиц 383
Медленное согласование 383
Отсутствие распределения нагрузки 383
Итоги 384
Глава 16. Протокол OSPF 385
Происхождение OSPF 385
Принципы работы OSPF 386
Зоны OSPF 387
Типы маршрутизации 389
Межсетевая маршрутизация 390
Обновление маршрутных данных 391
Знакомство со структурами данных OSPF 394
Пакет подтверждения состояния канала 400
Построение маршрутов 401
Автоматическое вычисление 401
Использование стоимости маршрутов по умолчанию 402
Ручная настройка значений 403
Дерево кратчайших путей 404
Дерево кратчайших путей для маршрутизатора 3 404
Дерево кратчайших путей для маршрутизатора 2 406
Итоги 407
Глава 17. Протокол IPP 408
История IPP 408
Протокол IPP с точки зрения пользователя 409
Реализация IPP от HP 411
Итоги 412
Глава 18. Протоколы удаленного доступа 413
Удаленное подключение 413
ISDN 414
Кабельные модемы 414
DSL 416
Радиосети 417
RADIUS 417
Аутентификация RADIUS 418
Транспортировка дейтаграмм IP в протоколах SUP, CSLIP и РРР 420
Протокол SLIP 420
Протокол CSLIP 421
Протокол РРР 422
Туннелирование удаленного доступа 427
Протокол РРТР (Point-to-Point Tunneling) 428
Агрегирование сеансов РРР 429
Отдельный управляющий канал 430
Поддержка других протоколов 431
Аутентификация и защита 431
Типы туннелей РРТР 431
Добровольный туннель 431
Принудительный туннель 432
Туннельный протокол уровня 2 (L2TP) 433
IPSec 439
Итоги 442
Глава 19. Брандмауэры 444
Безопасность сети 444
Функции брандмауэров 446
Использование брандмауэров 446
Прокси-серверы 447
Пакетные фильтры 448
Защита служб 449
Электронная почта (SMTP) 449
HTTP: World Wide Web 450
FTP 450
Telnet 451
Usenet: NNTP 452
DNS 452
Построение собственного брандмауэра 452
Использование коммерческих брандмауэров 453
Итоги 456
Глава 20. Сетевая и системная безопасность 457
Шифрование 458
Шифрование с парными ключами 459
Шифрование с симметричным закрытым ключом 460
DES, IDEA и другие 461
Аутентификация с применением цифровых подписей 463
Раскрытие шифров 464
Защита сети 465
Вход в систему и пароли 466
Разрешения доступа к файлам и каталогам 466
UUCP в системах Unix и Linux 468
Приготовьтесь к худшему 469
Итоги 469
Глава 21. Общая конфигурация 470
Установка сетевой платы 470
Сетевые платы 471
Настройка ресурсов 472
Установка программного обеспечения сетевой платы 473
Редиректоры и API 474
Службы 475
Сетевые интерфейсы 476
Сетевые и транспортные протоколы 476
Обязательные параметры конфигурации IP 476
Настройка адреса основного шлюза 478
Настройка адреса сервера имен 479
Настройка адреса почтового сервера 479
Регистрация доменного имени 480
Разновидности конфигурации IP 480
Настройка таблицы маршрутизации 481
Инкапсуляция внешних протоколов 482
Итоги 483
Глава 22. Настройка TCP/IP в Windows 95 и Windows 98 485
Сетевая архитектура Windows 98 485
Установка сетевой платы 486
Мастер установки нового оборудования 487
Изменение параметров конфигурации сетевой платы 489
Если Windows 98 не загружается 490
Настройка TCP/IP в Windows 98 491
Сбор предварительной информации 491
Установка TCP/IP 492
Настройка реализации TCP/IP от Microsoft 492
Статические конфигурационные файлы 498
Настройка реестра 498
Тестирование TCP/IP 502
Итоги 504
Глава 23. Настройка TCP/IP в Windows 2000 505
Установка TCP/IP 505
Настройка IP-адреса 507
Назначение IP-адресов при отказе сервера DHCP 510
Настройка параметров DNS 510
Настройка адресов WINS 514
Безопасность и фильтрация TCP/IP 516
Настройка служб разрешения имен 518
Службы NetBIOS 519
Механизмы разрешения имен 521
Настройка кэша имен NetBIOS 523
Настройка широковещательных запросов на разрешение имен 524
Настройка файла LMHOSTS 526
Настройка файла HOSTS 532
Другие служебные файлы TCP/IP 533
Файл NETWORKS 533
Файл PROTOCOL 534
Файл SERVICES 535
Установка и настройка службы сервера FTP 538
Установка и настройка службы сервера FTP на сервере Windows 2000 539
Настройка TCP/IP для печати из Windows 2000 на принтерах Unix 541
Установка и настройка сетевой печати TCP/IP 541
Печать в Windows 2000 из клиентов Unix 543
Программы командной строки TCP/IP 544
Итоги 547
Глава 24. Поддержка IP в Novell NetWare 548
Novell иТСР/IP 548
IPnNetWare4 548
NetWare 5 и NetWare 6 549
Традиционные решения: IP в NetWare 3.x-4.x 550
IP Tunneling 551
IP Relay 551
LAN Workplace 552
IPX-IPGateway 552
NetWare/IP 553
NetWare 5/NetWare 6 — IP и все удобства Novell 554
Полноценная поддержка IP 554
Поддержка нескольких протоколов 554
Варианты установки 555
Установка NetWare 5 и NetWare 6 для IP 555
Что необходимо знать перед установкой 556
Установка NetWare 5 и NetWare 6 для IPX 557
Что необходимо знать перед установкой 557
Смешанная установка IPX/IP 557
Что необходимо знать перед установкой 558
Средства, упрощающие переход на IP 558
NDS 558
DNS 559
DHCP 559
DDNS 559
SLP 559
Режим совместимости 560
Migration Agent 560
Стратегии перехода 560
Тестовая платформа 561
Возможные сценарии перехода 561
Итоги 562
Глава 25. Настройка TCP/IP в системе Linux 563
Подготовка системы к настройке TCP/IP 564
Доступ к сетевому интерфейсу 566
Настройка интерфейса обратной связи 567
Настройка интерфейса Ethernet 569
Служба имен 571
Шлюзы 573
Графические программы настройки сетевых интерфейсов 574
Программа netcfg 575
Программа linuxconf 575
Настройка SLIP и РРР 578
Настройка фиктивного интерфейса 579
Настройка SLIP 580
Настройка РРР 581
Итоги 583
Глава 26. Whois и Finger 584
Протокол Whois 584
Регистрация имен в Интернете 585
Базы данных Whois 586
Примеры 589
Расширения Whois 592
RWhois 592
WHOIS++ 592
Finger 592
Команда finger 593
Демоны Finger 595
Finger в других системах 596
Необычное применение Finger 596
Итоги 598
Глава 27. Протоколы пересылки файлов 599
Роль FTP и TFTP в современном мире 599
Пересылка файлов через FTP 600
Подключения FTP 600
Управляющий порт 601
Порт данных 602
Подключение с использованием клиентов FTP 603
Интерактивный режим FTP 604
Безопасность при использовании FTP 612
Серверы и демоны FTP 615
Анонимный доступ FTP 616
TFTP 618
Отличия TFTP от FTP 618
Команды TFTP 619
Итоги 619
Глава 28. Telnet 620
Знакомство с протоколом Telnet 620
Виртуальный терминал 622
Демон Telnet 623
Использование Telnet 625
Команда telnet в системе Unix 625
Графические клиенты Telnet 626
Команды Telnet 627
Примеры использования Telnet 629
Дополнительные возможности Telnet 630
Безопасность 630
Приложения Telnet 631
Работа с другими службами TCP/IP через Telnet 633
Итоги 635
Глава 29. Инструментарий удаленного доступа 636
R-команды 636
R-команды и безопасность 637
Запрет использования г-команд 637
Альтернативы для г-команд 640
Справочник г-команд 641
Демоны г-команд 641
rsh 641
rep 642
rlogin 642
rup 643
ruptime 643
rwho 643
rexec 644
Другие файлы 644
Функциональность г-команд на других платформах 646
Итоги 647
Глава 30. Протоколы совместного доступа к файловой
системе: NFS и SMB/CIFS 648
Что такое NFS? 648
Краткая история NFS 649
Почему NFS? 649
Реализация —как работает NFS 649
RPCnXDR 650
Жесткое и мягкое монтирование 650
Файлы и команды NFS 651
Демоны NFS 651
Служебные файлы NFS 654
Серверные команды NFS 656
Создание общих ресурсов 656
Отключение общих ресурсов 658
Клиентские команды NFS 659
Демонтирование ресурсов NFS 661
Пример: организация совместного доступа и монтирование файловой системы NFS . . . 662
Распространенные проблемы NFS и их решения 663
Ошибки при монтировании ресурсов 663
Ошибки при демонтировании ресурсов 664
Жесткое и мягкое монтирование 664
Другие протоколы и продукты 664
WebNFS 665
PC-NFS и другие клиентские программы 665
SMBhCIFS 665
Другие продукты 666
Итоги 666
Глава 31. Интеграция TCP/IP с прикладными службами ..... 667
Применение браузера на представительском уровне 668
Интеграция TCP/IP с унаследованными приложениями 669
Использование TCP/IP в других сетях 669
NetBIOS и TCP/IP 670
IPXnUDP 671
Итоги 671
Глава 32. Почтовые протоколы Интернета 672
Электронная почта 672
История электронной почты 672
Стандарты и их разработчики 673
Х.400 673
SMTP 675
MIME и SMTP 675
Другие стандарты кодировки двоичных данных 676
Команды SMTP 676
Коды состояния SMTP 677
Расширение SMTP 678
Заголовки SMTP 679
Достоинства и недостатки SMTP 679
Получение почты с применением POP и IMAP 680
Протокол POP 681
Протокол IMAP 681
Сравнение РОРЗ с IMAP4 682
Нетривиальные возможности электронной почты 683
Безопасность 683
Спам и другие нежелательные сообщения 686
Анонимный сервис электронной почты и пересылка 686
Итоги 687
Глава 33. Служба HTTP 688
Worldwide Web 688
Краткая история Web 688
Создатели и попечители Web 688
Стремительное развитие Web 689
Унифицированные указатели ресурсов 689
Web-серверы и браузеры 691
Протокол HTTP 692
НТТР/1.1 692
MIME и Web 695
Пример сеанса HTTP 696
Нетривиальные возможности Web 696
Средства, работающие на стороне сервера 697
SSLhS-HTTP 697
Языки Web 697
Будущее Web 701
HTTP-ng 701
ПОР 702
IPv6 702
IPP 702
XML 702
Итоги 703
Глава 34. Служба сетевых новостей и протокол NNTP 704
Usenet 704
Конференции и иерархии 705
Протокол NNTP 707
Получение списка конференций 708
Прием сообщений 709
Отправка сообщений 710
Спам и блокировка 711
Итоги 712
Глава 35. Установка и настройка web-сервера 713
Принципы работы web-серверов 713
Терминология web-серверов 714
Популярные web-серверы 716
Установка и запуск web-сервера Apache 717
Загрузка, установка и настройка Apache 717
Компиляция и установка Apache 719
Настройка Apache 720
Запуск и остановка Apache 722
Загрузка двоичных файлов Apache 723
Установка и настройка Apache в двоичном формате 725
Использование Apache для Windows 725
Другие web-серверы 727
Итоги 728
Глава 36. Настройка и оптимизация протоколов в системах
семейства Unix 729
Инициализация системы 729
Процесс inlt и/etc/inittab 729
Сценарии гс 731
Конфигурационные файлы 735
Определение сетевых протоколов в/etc/protocols 735
Имена хостов в/etc/hosts 736
Клиент DNS и файл/etc/resolv.conf 742
Итоги 743
Глава 37. Реализация DNS 744
Серверы имен DNS 744
Ресурсные записи 745
Резольвер 747
Настройка сервера DNS в Unix и Linux 748
Ввод ресурсных записей 748
Остальные файлы DNS 749
Запуск демонов DNS 754
Настройка клиента 754
Windows и DNS 754
Итоги 755
Глава 38. Управление сетью TCP/IP 756
Разработка плана сетевого мониторинга 757
Анализ и диагностика сетевых проблем 758
Средства управления сетью 759
Анализаторы протоколов 759
Экспертные системы 761
Анализаторы на базе PC 762
Поддержка протоколов управления сетью 763
Интеграция со средствами сетевого моделирования 764
Настройка SNMP 765
Настройка SNMP в системе Windows 765
Настройка SNMP в системе Unix 767
Параметры безопасности SNMP 768
Управление сетью и агенты SNMP 768
Инструментарий и команды SNMP 770
RMON и другие модули MIB 771
Выработка требований 772
Построение подробного списка информации 772
Передача списка в службу поддержки 772
Формулировка стратегии построения отчетов 772
Определение показателей, используемых для оповещения об экстренных
ситуациях (в реальном времени) 772
Выбор информации для составления ежемесячных отчетов 773
Выбор информации для оптимизации 773
Обратная связь 773
Реализация требований 774
Оповещение служб поддержки 774
Повторный анализ требований 774
Информирование технической службы 774
Пробные проверки 774
Обучение технической службы 774
Документирование диагностических процедур 775
Упрощение систем управления элементами 775
Использование искусственного интеллекта 775
Итоги 776
Глава 39. Протокол управления сетью SNMP 777
ЧтотакоеБММР? 777
MIB 779
Использование SNMP 780
Unix и SNMP 781
Настройка SNMP в Unix и Linux 782
Команды SNMP 783
Windows и SNMP 784
Windows NT/2000 784
Windows9x/ME 786
Итоги 789
Глава 40. Безопасность передачи данных TCP/IP 790
Планирование сетевой безопасности 790
Что такое сетевая безопасность? 791
Почему важна сетевая безопасность? 792
Уровни безопасности 792
Пароли и файлы паролей 793
Ограничение доступа к паролям 794
Сетевая безопасность 795
Типы атак 795
Меры, обеспечивающие сетевую безопасность 797
Настройка приложений 799
Демон Интернета и файл /etc/inetd.conf 799
Программы шифрования 801
TCP Wrappers 802
Порты 803
Брандмауэры 803
Пакетные фильтры 804
Шлюзы приложений 804
Приложения-фильтры 804
Итоги 804
Глава 41. Инструментарий и методы диагностики 805
Наблюдение за состоянием сети 805
Стандартные утилиты 806
Проверка базового соединения 806
Диагностика проблем на сетевом уровне 810
Проверка маршрутов 813
Проверка службы имен 817
Диагностика сетевого интерфейса 818
Диагностика на сетевом уровне (IP) 819
Параметры конфигурации TCP/IP 819
Диагностика проблем TCP и UDP 825
Проблемы с сокетами 825
Файл SERVICES 826
Диагностика на прикладном уровне 826
Проблемы разрешения имен 827
Итоги 827
Приложение A. RFC и стандарты 828
Информационные ресурсы 828
World Wide Web 828
FTP 829
Электронная почта 829
Бумажные копии 829
Тематический список полезных RFC 829
Общие сведения 830
TCPnUDP 830
IPhICMP 830
Нижние уровни 831
Загрузка 831
DNS 832
Пересылка и доступ к файлам 832
Электронная почта 832
Протоколы маршрутизации 832
Политика и производительность маршрутизации 833
Терминальный доступ 833
Другие приложения 834
Управление сетью 835
Туннелирование 835
OSI 836
Безопасность 836
Разное 836
Список RFC по номерам 836
Приложение Б. Сокращения и акронимы 837
Алфавитный указатель 846
радости в жизни, и моим родителям,
так много сделавшим для меня...
Благодарности
Одна из самых приятных обязанностей автора — выражение благодарности
людям, внесшим вклад в успех книги. Спасибо всем, кто был рядом со мной:
Харприт (Harpreet), Ахал Сингх (Ahal Singh), Теджиндер Каур (Tejnder Kaur),
Харджит (Harjeet), Джагджит 0а&Д0> Куки (Kookie) и Долли (Dolly). Я
особенно благодарен маме, Сен Жермен (Saint Germain), Эль Морья Хану (Е1 Могуа
Khan), Дживалу Кулу (Djwal Kul), Кутуми Лал Сингху (Kuthumi Lai Singh),
Куан-Йину (Kuan-Yin), Бхагавану Кришне (Bhagwan Krishna) и Бабаджи (Babaji).
Без их духовной поддержки эта книга никогда бы не появилась.
Я хочу поблагодарить Боба Санрегрета (Bob Sanregret) и Андерса Амундсо-
на (Anders Amundson), которые когда-то привлекли меня к написанию учебных
материалов на компьютерную тематику. Кроме того, спасибо сотрудникам Higher
Technology и Learning Tree за их помощь и поддержку в различных проектах.
Особую благодарность хочу выразить Филипу Вайнбергу (Philip Weinberg),
Ленин Бернстайну (Lenny Bernstein), доктору Дэвиду Коллинзу (Dr. David Collins),
Эрику Гарену (Eric Garen) и Джону Мориарти (John Moriarty).
Спасибо Дайну Исли (Dayna Isley) за сопровождение этого проекта и
выпускающему редактору Джинни Бесс (Ginny Bess). Также я благодарен Элизабет
Финни (Elizabeth Finney) и Уильяму Вагнеру (William Wagner) за помощь в
работе над книгой.
Введение
Протокол TCP/IP (Transmission Control Protocol/Internet Protocol) стал
фактическим стандартом не только для Интернета, но и для интрасетей. В интрасе-
тях протокол TCP/IP когда-то был лишь одним из многих и существовал
наряду с протоколами Novell IPX/SPX, Microsoft NetBIOS и NetBEUI, а также
AppleTalk. Хотя в наши дни в сетях по-прежнему встречаются другие
протоколы, основным коммуникационным протоколом стал TCP/IP.
Чем обусловлен переход на TCP/IP в интрасетях? Это происходило
постепенно. С развитием серверов Windows NT/2000 и Novell NetWare в них
появилась поддержка TCP/IP. Фирма Microsoft включила стек TCP/IP в Windows 9x
и NT/2000. Одним из преимуществ перехода на единый протокол является
расширение возможностей системной интеграции — например, компьютеры Unix,
Windows и Macintosh могут свободно общаться друг с другом. Переходу на
TCP/IP также способствовала возможность прямого подключения к Интернету
без необходимости преобразования сетевых протоколов. Из-за этого
большинство современных сетей (как гетерогенных, так и Windows-сетей) работает на
основе протокола TCP/IP. Протокол IPX/SPX занимает незначительный сектор
рынка, a NetBEUI используется только в малых и простых сетях Windows.
Впрочем, изменения оказались благоприятными. TCP/IP — один из самых
надежных сетевых протоколов, и он продолжает развиваться. Проблемы
безопасности TCP/IP хорошо известны и исследованы. Для повышения степени
защищенности TCP/IP были созданы новые стандарты (такие, как IPSec). Протокол
TCP/IP реализован почти на всех устройствах, подключаемых к сети. Наконец,
TCP/IP относится к числу открытых стандартов, а это означает, что все
спецификации опубликованы и доступны для всех желающих.
Естественно, развитие Интернета способствовало выдвижению TCP/IP на
ведущее место среди сетевых протоколов. В результате бурного роста World
Wide Web каждый компьютер должен поддерживать TCP/IP, чтобы общаться
с интернет-провайдером. Тем не менее протокол TCP/IP широко использовался
еще до начала революции Web, произошедшей всего несколько лет назад. Многие
из нас еще в начале 1980-х использовали TCP/IP для работы с электронной
почтой, FTP и Usenet на старых системах Unix и СР/М. Тогда для работы с TCP/IP
было недостаточно уметь нажимать две-три кнопки в графическом диалоговом
окне.
В наши дни полки магазинов забиты книгами о TCP/IP, многие из которых
повторяют друг друга. У протокола TCP/IP есть весьма странная особенность:
он очень прост и одновременно очень сложен. Если вам потребуется подключить
компьютер Windows к сети TCP/IP, это делается так просто, что описание
займет пару-тройку страниц. Но если вы захотите поближе познакомиться с
протоколами и стандартными утилитами семейства TCP/IP, для этого не хватит
тысячи страниц. Еще больше должен знать программист, занимающийся
разработкой приложений TCP/IP. Настоящее издание книги ориентируется на
читателя, который хочет познакомиться с протоколами и программами,
используемыми в работе TCP/IP, научиться подключать новые компьютеры к сетям
TCP/IP и знать то, на что следует обратить особое внимание; однако материал,
относящийся к программированию TCP/IP, в книге едва затронут.
Материал книги весьма обширен: мы подробно рассмотрим все базовые
протоколы TCP/IP. Вы увидите, как используются эти протоколы, как TCP работает
на базе протокола IP, который, в свою очередь, базируется на низкоуровневом
сетевом протоколе. В книге будут рассмотрены многочисленные приложения
базовых протоколов TCP/IP. Многие инструменты, используемые для
решения повседневных задач в крупных сетях — DNS (Domain Name System), NFS
(Network File System) и NIS (Network Information System), — работают на базе
протокола TCP/IP. Другие протоколы, предназначенные для
администраторов — такие, как SNMP (Simple Network Management Protocol) и ARP (Address
Resolution Protocol), — тоже основаны на базовых протоколах TCP. Даже такие
простые приложения, как почтовые клиенты, используют протоколы семейства
TCP. Вездесущий стек TCP/IP встречается при выполнении практически всех
повседневных задач. Понимание протокола и принципов его работы поможет
вам лучше разобраться в работе системы.
В этой книге мы постарались изложить материал с позиций, не связанных
с программированием. В книге показано, как работает протокол TCP/IP, как он
взаимодействует с другими протоколами семейства TCP/IP, какие функции он
выполняет в сети и как установить его поддержку на вашем компьютере.
Изложение сопровождается подробными инструкциями по установке и
настройке протоколов и служб. Мы приводим используемые команды и типичные
результаты, которые будут получены при их выполнении. Вы узнаете, как
организовать поддержку TCP/IP во многих операционных системах, таких как
Windows 2000, NetWare и Linux. В книге приводится информация о брандмауэрах
и безопасности. Короче говоря, в книгу включено все, что относится к TCP/IP,
кроме программирования приложений. Надеемся, книга вам понравится.
От издательства
Ваши замечания, предложения, вопросы отправляйте по адресу электронной
почты comp@piter.com (издательство «Питер», компьютерная редакция).
Мы будем рады узнать ваше мнение!
На web-сайте издательства http://www.piter.com вы найдете подробную
информацию о наших книгах.
1 Открытые
коммуникации
Марк А. Спортак (Mark A. Sportack)
Безусловно, протокол TCP/IP (Transmission Control Protocol/Internet Protocol)
можно считать самым успешным из всех когда-либо разрабатывавшихся
коммуникационных протоколов. В общем случае термин TCP/IP обозначает целое
семейство протоколов: TCP для надежной доставки данных, UPD (User
Datagram Protocol) для негарантированной доставки, IP (Internet Protocol) и других
прикладных служб.
Наглядным доказательством успеха TCP/IP является Интернет — самая
большая из когда-либо построенных открытых сетей. Первоначально Интернет
проектировался для упрощения оборонных исследований и для того, чтобы
правительство США сохранило систему связи даже в случае возможного ядерного
удара огромной разрушительной силы. Протокол TCP/IP был разработан именно
для этой цели.
Современный Интернет в большей степени ориентируется на коммерческие
и потребительские функции. Несмотря на столь радикальную смену ориентации,
все исходные атрибуты (то есть открытость, повышенная живучесть и
надежность) по-прежнему играют исключительно важную роль. Они обеспечивают
надежную доставку данных с использованием специально разработанных
протоколов (таких, как TCP), а также возможность автоматического обнаружения
и обхода сбойных участков сети. Но что еще важнее, TCP/IP является открытым
коммуникационным протоколом. Открытость означает, что он обеспечивает
связь в любых комбинациях устройств независимо от того, насколько они
различаются на физическом уровне.
Данная глава посвящена происхождению открытых коммуникаций и тем
концепциям, на которых базируется открытый обмен данными. Кроме того, в ней
представлены две основные модели, превратившие теоретические принципы
открытых коммуникаций в реальность: эталонная модель OSI (Open Systems
Interconnect) и эталонная модель TCP/IP. Эти модели существенно упрощают
понимание логики работы сети за счет ее разделения на функциональные
компоненты, объединенных в уровни. Хорошее знание этих уровней и концепции
открытых коммуникаций формирует основу для более осмысленного изучения
компонентов и областей применения TCP/IP.
Эволюция открытых сетей
В своем первоначальном варианте компьютерные сети представляли собой
системы, позволявшие соединять разнородные компоненты и обладавшие закрытой
архитектурой. Если в доисторические времена до появления персональных
компьютеров какая-либо компания пыталась автоматизировать обработку данных
или бухгалтерский учет, она обращалась к одному поставщику и приобретала
целый аппаратно-программный комплекс, готовый к эксплуатации.
В такой закрытой среде, ориентированной на определенную
фирму-поставщика, прикладные программы работали только в окружении, поддерживаемом
определенной операционной системой. Операционная систем работала только
в контексте безопасности оборудования, предоставленного тем же поставщиком.
Даже терминалы конечных пользователей и средства подключения к
центральному компьютеру были частью того же интегрированного решения,
разработанного конкретным поставщиком.
В эпоху безраздельного царствования интегрированных решений
Министерство обороны осознало необходимость надежной и защищенной от ошибок
коммуникационной сети, которая могла бы объединить все входящие в нее
компьютеры, а также компьютеры университетов, научных центров и
фирм-подрядчиков. На первый взгляд задача кажется не такой уж грандиозной, но это
впечатление обманчиво. На заре компьютерных технологий фирмы-поставщики
разрабатывали комплексы из программных, аппаратных и сетевых компонентов
с очень высокой степенью интеграции. Пользователю, пожелавшему
организовать обмен данными с другой платформой, пришлось бы нелегко. Объяснялось
это очень просто: поставщики Министерства обороны хотели привязать к себе
заказчиков.
Заставить всех субподрядчиков Министерства обороны и связанные с ними
научные организации перейти на единый стандарт оборудования было абсолютно
нереально. Соответственно, возникла необходимость в средствах для соединения
разнородных платформ. Так появился первый протокол открытых
коммуникаций: IP (Internet Protocol).
Таким образом, открытой следует считать сеть, обеспечивающую
взаимодействие и совместное использование ресурсов на разнородных компьютерах.
Открытость достигается посредством объединенной разработки и сопровождения
технических спецификаций. Эти спецификации, также называемые открытыми
стандартами, свободно распространяются и доступны для всех желающих.
Многоуровневая структура коммуникаций
Открытые коммуникации возможны только при четком согласовании всех
функций, необходимых для взаимодействия и обмена данными между двумя
конечными системами. Идентификация этих важнейших функций и установление
порядка их выполнения закладывают основу для открытых коммуникаций. Две
системы смогут взаимодействовать только в том случае, если они договорятся
о том, как будет организовано это взаимодействие. Иначе говоря, они должны
следовать общим правилам получения данных от приложения и их упаковки для
передачи по сети. Никакие подробности, даже второстепенные, не могут считаться
сами собой разумеющимися или зависеть от случайностей.
К счастью, существует более или менее логичная последовательность
событий, необходимых для проведения сеанса связи. В минимальном варианте
необходимо выполнить следующие операции:
О Данные передаются от приложения коммуникационному процессу (также
называемому протоколом),
О Коммуникационный протокол должен подготовить данные приложения для
передачи по сети. Обычно при этом данные разбиваются на сегменты более
удобного размера.
О Сегментированные данные заключаются в служебную структуру данных
{конверт) для передачи по сети заданному устройству (или устройствам).
Дополнительная информация, содержащаяся в этой структуре, должна позволить
любому сетевому вычислительному устройству определить, откуда поступил
конверт и куда он передается. В зависимости от используемого протокола эта
структура может представлять собой кадр, пакет или ячейку.
О Кадры (или пакеты) преобразуются в физическое битовое представление для
передачи. Биты передаются в виде световых импульсов по оптоволоконным
сетям (например, FDDI) или в электронном состоянии (наличие/отсутствие
сигнала) по электронным сетям — например, Ethernet или любой другой сети,
в которой данные передаются в электрическом виде по металлическим
проводам.
В точке приема, то есть на компьютере-получателе, эти действия выполняются
в рбратном порядке.
Во время сеанса связи также может возникнуть необходимость и в других
операциях, координирующих действия отправителя и получателя и обеспечивающих
благополучное прибытие данных. К числу таких операций относятся следующие:
О Регулировка объема передаваемых данных, чтобы предотвратить перегрузку
получателя и/или сети.
Q Проверка целостности полученных данных, в ходе которой получатель
убеждается в том, что данные не были повреждены в процессе передачи.
Проверка осуществляется с использованием контрольных сумм — например, по
алгоритму CRC (Cyclic Redundancy Checksum). Полиномиальный
математический алгоритм вычисления контрольной суммы CRC позволяет
обнаруживать ошибки в передаваемых данных.
О Координация повторной передачи данных, которые либо не прибыли по месту
назначения, либо были получены в поврежденном виде.
О Наконец, получатель данных должен заново собрать сегменты в форму,
распознаваемую приложением-получателем. С точки зрения получателя,
принятые данные должны точно совпадать с данными, отправленными
приложением-отправителем. Иначе говоря, результат должен выглядеть так, словно
данные передаются напрямую между двумя приложениями. Данное свойство
называется логической смежностью.
Вероятно, основные принципы многоуровневых коммуникаций, включая
логическую смежность, лучше всего объяснять на примере эталонной модели OSL
Эталонная модель OSI
Международная организация по стандартизации (ISO, International Organization
for Stanartization) разработала эталонную модель взаимодействия открытых
систем (OSI, Open Systems Interconnection) в 1978/1979 годах для упрощения
открытого взаимодействия компьютерных систем. Открытым называется
взаимодействие, которое может поддерживаться в неоднородных средах, содержащих
системы разных поставщиков. Модель OSI устанавливает глобальный стандарт,
определяющий состав функциональных уровней при открытом взаимодействии
между компьютерами.
Эталонная модель OSI разрабатывалась почти 20 лет назад, и лишь немногие
коммерческие системы следовали ее спецификации. В то время производители
компьютерного оборудования стремились привязать клиентов к
запатентованным архитектурам, поддерживаемым одним поставщиком. С точки зрения
производителей конкуренция была нежелательна. Соответственно, все функции как
можно плотнее интегрировались в готовых решениях. Концепция
функциональной модульности или многоуровневой структуры казалась прямо
противоречащей намерениям любого производителя.
Следует заметить, что модель настолько успешно справилась со своими
исходными целями, что в настоящее время ее достоинства уже практически не
обсуждаются. Существовавший ранее закрытый, интегрированный подход уже
не применяется на практике, в наше время открытость коммуникаций считается
обязательной. Как ни странно, очень немногие продукты полностью
соответствуют стандарту OSI. Вместо этого базовая многоуровневая структура часто
адаптируется к новым стандартам. Тем не менее эталонная модель OSI остается
ценным средством для демонстрации принципов работы сети.
Несмотря на все успехи, с эталонной моделью OSI связан ряд устойчивых
заблуждений, поэтому в этом разделе придется привести ее очередной обзор
с указанием и исправлением этих заблуждений.
Первое заблуждение заключается в том, что эталонная модель OSI была
разработана Мелсдународной организацией стандартов (International Standards
Organization). Это не так. Эталонная модель OSI разрабатывалась Международной
организацией по стандартизации (International Organization for Standartization),
а эта организация предпочитает использовать мнемоническое сокращение
вместо акронима. Мнемоника основана на греческом слове isos, которое означает
«равный» или «стандартный».
Модель OSI разделяет процессы, участвующие в сеансе связи, на семь четко
различающихся функциональных уровней. Структура уровней соответствует
естественной последовательности событий, происходящих во время сеанса связи.
На рис. 1.1 изображена схема эталонной модели OSI. Уровни 1-3
обеспечивают доступ к сети, а уровни 4-7 посвящены логистике поддержки
коммуникаций сквозной передачи.
Уровень Номер
OSI OS1
Прикладной уровень 7
Представительский уровень 6
Сеансовый уровень 5
Транспортный уровень 4
Сетевой уровень 3
Канальный уровень 2
Физический уровень 1
Рис. 1.1. Эталонная модель OSI
1. Физический уровень
Нижний уровень модели называется физическим уровнем (physical layer) и
отвечает за передачу битового потока. Физический уровень получает кадры данных
от уровня 2 (канального уровня) и передает их структуру и содержимое; обычно
передача осуществляется последовательно по одному биту. Физический уровень
также отвечает за побитовый прием входящих потоков данных. Затем этот поток
передается канальному уровню для повторного формирования кадров.
В сущности, физический уровень имеет дело только с нулями и единицами.
Он не обладает механизмом интерпретации передаваемых или получаемых битов.
Все, что его интересует, — это физические характеристики электрических и/или
оптических средств передачи сигнала. В частности, сюда относится напряжение
электрического тока, используемого для передачи сигнала, тип носителя,
характеристики волнового сопротивления и даже физическая форма коннектора,
подключенного к передающей среде.
Основное заблуждение состоит в том, будто уровень 1 модели OSI включает
компоненты, способные генерировать или передавать коммуникационные сигналы.
На самом деле это не так, поскольку уровень 1 является всего лишь
функциональной моделью. Физический уровень ограничивается процессами и механизмами,
необходимыми для подачи сигнала в передающую среду и для приема сигналов
от этой среды. Его нижней границей является физический коннектор,
подключенный к передающей среде. Сама среда в этот уровень не входит, хотя
различные стандарты локальных сетей (LAN, Local Area Network), такие как 10BASET
и 100BASET, указывают тип передающей среды.
Все средства непосредственной передачи сигнала, сгенерированного
механизмами уровня 1 модели OSI, относятся к передающей среде. Среди примеров
передающей среды можно назвать коаксиальные кабели, оптоволоконные
кабели и витую пару. Вероятно, недоразумение обусловлено тем фактом, что
физический уровень определяет некоторые обязательные характеристики, которыми
должна обладать передающая среда для работы процессов и механизмов,
определенных на физическом уровне.
Соответственно, передающая среда остается за пределами физического уровня.
Иногда ее называют нулевым уровнем эталонной модели OSI.
2. Канальный уровень
Второй уровень эталонной модели OSI называется канальным уровнем (data link
layer). Его задачи, как и задачи всех остальных уровней, делятся на две
категории: прием и передача данных. Он отвечает за достоверность переданных
данных, обычно — по физическому каналу
На передающей стороне канальный уровень отвечает за упаковку
инструкций, данных и т. д. в кадры. Кадр (frame) представляет собой структуру данных,
специфическую для канального уровня; эта структура содержит информацию,
достаточную для успешной передачи данных по физическому каналу (например,
по локальной сети) к точке приема.
Успешная доставка означает, что кадр достигает положенного места
назначения без изменений. Следовательно, кадры также должны содержать
информацию для проверки целостности содержимого после доставки.
Гарантированная доставка происходит при выполнении двух условий:
О Узел-отправитель должен получить подтверждение того, что каждый кадр
был принят узлом-получателем без изменений.
О Перед тем как подтверждать прием кадра, узел-получатель должен проверить
целостность его содержимого.
По некоторым причинам переданные кадры могут не достигнуть места
назначения или их содержимое будет искажено и станет непригодным в процессе
передачи. Канальный уровень отвечает за обнаружение и исправление всех подобных
ошибок. Также он отвечает за повторную сборку двоичного потока, полученного
от физического уровня, и формирование кадров. Впрочем, если учесть, что в
кадрах передается как управляющая информация, так и содержимое, канальный
уровень на самом деле не восстанавливает кадры, а просто накапливает
поступающие биты до получения полного кадра.
Уровни 1 и 2 обязательны для всех типов коммуникаций, как в локальных,
так и в глобальных сетях. Как правило, функциональность уровней 1 и 2
реализуется сетевым адаптером, установленным внутри компьютера.
3. Сетевой уровень
Сетевой уровень (network layer) отвечает за установление маршрута между
отправителем и получателем. Этот уровень не располагает собственными средствами
обнаружения/исправления ошибок передачи, поэтому он использует средства
надежной пересылки данных уровня 2. Надежность сквозной передачи данных
по нескольким физическим каналам в большей степени относится к функциям
транспортного уровня (уровень 4).
Сетевой уровень используется для установления связи с компьютерными
системами, не входящими в местный сегмент локальной сети. Это возможно
благодаря его собственной архитектуре маршрутной адресации, независимой от
машинной адресации уровня 2. Подобные протоколы называются
маршрутизируемыми. К этой категории относятся протоколы IP, IPX (компания Novell)
и AppleTalk, хотя в этой книге будет рассматриваться исключительно протокол
IP, а также связанные с ним протоколы и приложения.
Использование сетевого уровня при коммуникациях не обязательно. Сетевой
уровень необходим лишь в том случае, если компьютеры находятся в разных
сегментах сети, разделенных маршрутизатором, или взаимодействующие
приложения должны использовать возможности сетевого или транспортного уровня.
Например, два хоста, напрямую подключенных к одной локальной сети, могут
взаимодействовать, ограничиваясь только механизмами локальной сети (уровни
1 и 2 эталонной модели OSI).
ПРИМЕЧАНИЕ
В наши дни необходимость в соединении сетей возникает так часто, что сетевой уровень уже не
считается необязательным. Работа старых протоколов, не обладающих собственной реализацией
сетевого уровня (например, NetBEUI), в современных сетевых архитектурах обеспечивается как
особый случай.
4. Транспортный уровень
Транспортный уровень (transport layer), как и канальный уровень, отвечает за
целостность передаваемых данных. Тем не менее транспортный уровень
способен выполнять эту функцию за пределами местного сегмента локальной сети.
Он обнаруживает пакеты, отвергнутые маршрутизатором, и автоматически
генерирует запрос на повторную передачу. Другими словами, транспортный уровень
обеспечивает настоящую надежность сквозной передачи.
Другая важная функция транспортного уровня — переупорядочивание
пакетов, поступивших с нарушением исходной последовательности. Нарушение
может происходить по разным причинам — например, из-за того, что пакеты
перемещались в сети по разным маршрутам или были повреждены в процессе
пересылки. Так или иначе, транспортный уровень способен определить
исходную последовательность пакетов и расположить их в этой последовательности
перед тем, как передавать их содержимое сеансовому уровню.
5. Сеансовый уровень
Пятое место в модели OSI занимает сеансовый уровень (session layer). Он
используется относительно редко, многие протоколы реализуют его функциональные
возможности на своих транспортных уровнях.
Основная функция сеансового уровня OSI — организация сеанса, то есть
передачи управления во время связи двух компьютерных систем. Сеанс
определяет направленность передачи данных (одно- или двусторонняя), а также
гарантирует завершение обработки одного запроса до принятия следующего.
Сеансовый уровень также может поддерживать некоторые из следующих
дополнений:
О Управление диалогом.
О Управление маркерами.
О Управление операциями.
В общем случае сеанс поддерживает двусторонний (дуплексный) режим обмена
данными. В некоторых приложениях вместо него может понадобиться
односторонний (полудуплексный) режим обмена. Сеансовый уровень позволяет выбрать
нужный режим, и эта возможность называется управлением диалогом.
Для работы некоторых протоколов очень важно, чтобы в любой момент
времени попытки выполнения критических операций могли выполняться только
одной из сторон. Чтобы обе стороны не пытались одновременно выполнить одну
и ту же операцию, необходимо реализовать специальный механизм
управления — например, основанный на использовании маркеров (tokens). В этом
случае выполнение операции разрешается только той стороне, которую в
настоящий момент удерживает маркер. Определение того, на какой стороне находится
маркер и как он передается между двумя сторонами, называется управлением
маркером. Функции управления маркером используются в протоколах
сеансового уровня ISO.
ПРИМЕЧАНИЕ
Не путайте термин «маркер» с похожим термином, существующим в архитектуре Token Ring.
Управление маркером на уровне 5 модели OSI происходит на значительно более высоком уровне.
Архитектура IBM Token Ring работает на 1 и 2 уровнях модели OSI.
Если передача файла между двумя компьютерами занимает один час, а
сетевые сбои происходят примерно каждые 30 минут, скорее всего, переслать файл
вообще никогда не удастся. После каждого аварийного завершения пересылку
приходится начинать заново. Для решения этой проблемы вся пересылка файла
рассматривается как одна операция, а в поток данных вставляются контрольные
точки. В этом случае при возникновении сбоя сеансовый уровень может
продолжить пересылку данных с предыдущей контрольной точки. Эти контрольные
точки называются точками синхронизации.
Точки синхронизации делятся на первичные и вторичные. Первичные точки
синхронизации, вставленные в поток данных любой из взаимодействующих
сторон, должны подтверждаться другой стороной, тогда как вторичные точки
синхронизации подтверждения не требуют. Часть сеанса между двумя первичными
точками синхронизации называется диалоговым блоком, а управление всем
процессом называется управлением операциями. Операция состоит из одного или
нескольких диалоговых блоков.
В сетях TCP/IP отсутствует общий протокол сеансового уровня. Это
объясняется тем, что некоторые характеристики сеансового уровня обеспечиваются
протоколом TCP. Если приложениям TCP/IP потребуются специальные
возможности сеансового уровня, они должны реализовать их самостоятельно. Например,
файловая система NFS (Network File System) самостоятельно реализует сервис
сеансового уровня — протокол RPC (Remote Procedure Call).
ПРИМЕЧАНИЕ
Протокол NFS также использует собственный сервис сеансового уровня — протокол XDR (External
Data Representation).
6. Представительский уровень
Представительский уровень (Presentation Layer) отвечает за управление
кодировкой данных. Во многих компьютерных системах используются разные
схемы кодировки, и представительский уровень должен обеспечить преобразование
между несовместимыми кодировками — такими, как ASCII (American Standard
Code for Information Interchange) и EBCDIC (Extended Binary Coded Decimal
Interchange Code).
Представительский уровень также может использоваться в качестве
промежуточного звена, обеспечивающего преобразование между форматами
представления вещественных чисел, числовыми форматами (например, поразрядным
дополнением до единицы или двойки), порядком следования байтов, а также
предоставляющего возможности шифрования/дешифрования данных.
Представительский уровень обеспечивает представление данных с единым
синтаксисом и семантикой. Если все узлы будут использовать этот общий язык
и понимать его, это предотвратит возможную неправильную интерпретацию
представления данных. Примером такого общего языка является рекомендуемый
OSI язык ASN.l (Abstract Syntax Representation, Rev.l). Кстати говоря, ASN.l
используется протоколом SNMP (Simple Network Management Protocol) для
кодирования данных высокого уровня.
7. Прикладной уровень
На самом верху эталонной модели OSI находится прикладной уровень (application
level). Несмотря на свое название, этот уровень не включает в себя
пользовательские приложения, а лишь обеспечивает взаимодействие этих приложений
с сетевым сервисом.
Этот уровень может рассматриваться как сторона, непосредственно
инициирующая сеанс связи. Предположим, почтовый клиент должен запросить новые
сообщения с почтового сервера. Клиентское приложение автоматически
генерирует запрос к соответствующему протоколу (или протоколам) 7 уровня и
инициирует сеанс связи для получения нужных файлов.
Использование модели
Вертикальное расположение уровней отражает функциональную структуру
процессов и данных, участвующих в передаче. Каждый уровень связывается со
смежными уровнями через интерфейсы. Связь между системами
обеспечивается передачей данных, инструкций, адресов и т. д. между уровнями. Различия
между логической и фактической последовательностю передачей управления во
время сеанса связи показаны на рис. 1.2.
ПРИМЕЧАНИЕ
Хотя эталонная модель состоит из семи уровней, это не означает, что все уровни задействованы
в каждом сеансе связи. Например, обмен данными через один сегмент локальной сети может
производиться исключительно на уровнях 1 и 2, без участия других уровней.
Номер Уровень Уровень Номер
OSI OSI OSI OSI
7 Прикладной уровень Прикладной уровень 7
I 6 I Представительский уровень 1 логическая Представительский уровень I 6
5 Сеансовый уровень передача Сеансовый уровень Т 5
управления —
4 к Транспортный уровень м* hV Транспортный уровень \а 4
3 \ Сетевой уровень Сетевой уровень I/ 3
2 I \ Канальный уровень Канальный уровень /1 2
1 \ Физический уровень Физический уровень / I 1
I 1 ^ 1 I :_ ^—I 1
\
Ч
Хх Фактическая у'
х"^^ передача ^~''
*^-^ управления ^-'''
Рис. 1.2. Логическая и фактическая последовательность передачи
управления в многоуровневой коммуникационной модели
Хотя управление передается по вертикали, каждый уровень воспринимает
это так, словно он может напрямую взаимодействовать со своим аналогом на
удаленном компьютере. Чтобы создать логическую смежность уровней, каждый
уровень стека протоколов компьютера-отправителя добавляет свой заголовок,
который распознается и используется только этим уровнем или его аналогами
на других компьютерах. Стек протоколов компьютера-получателя
последовательно извлекает заголовки по уровням в процессе передачи данных приложению.
Этот процесс проиллюстрирован на рис. 1.3.
Например, сегменты данных упаковываются уровнем 4 компьютера-отправителя
для передачи уровню 3. Уровень 3 преобразует данные, полученные от уровня 4,
в пакеты, снабжает адресами и отправляет протоколу уровня 3
компьютера-получателя через свой уровень 2. Уровень 2 преобразует пакеты в кадры, снабженные
адресами, распознаваемыми локальной сетью. Кадры передаются уровню 1 для
преобразования в поток двоичных цифр (битов), передаваемых уровню 1 получателя.
На компьютере-получателе эта цепочка повторяется в обратном порядке, при
этом каждый уровень удаляет заголовки, добавленные аналогичными уровнями
на компьютере-отправителе. К тому моменту, когда данные достигнут уровня 4,
они имеют ту же форму, в которой они были представлены на уровне 4
отправителя. Соответственно, результат выглядит так, словно два протокола 4 уровня
являются физически смежными и обмениваются данными напрямую.
ПРИМЕЧАНИЕ
Следует учитывать, что многие современные сетевые протоколы используют собственные
многоуровневые модели. Эти модели различаются по степени соответствия стандартам разделения
функций, заявленным в эталонной модели OSI. Довольно часто эти модели объединяют семь
уровней OSI в пять и менее уровней. Кроме того, верхние уровни иерархий часто не соответствуют
в полной мере своим аналогам в модели OSI.
р71+рт| \ "*™»** 7 РтКРт]
I Data I J Hdr. | \ уровень / | Hdr. | | Data |
I Data J Hdr. J | Hdr. | \ W*** / | Hdr. | | Hdr. | Data |
I Layer I Layer I Layer I I Layer I \ rw*»^ / Г^*1 I Layer I Layer | Layer I
776 + 5 \ \^eT / 5 Г в 7 7
I Data J Hdr. [ Hdr. | | Hdr. | \ урмвнь / | Hdr. | | Hdr. | Hdr. | Data |
I Layer I Layer I Layer I layer I I Layer I \ т™шг™гт-^ / I 1дУвг I HwTlayeTTl^TlayeTl
7765 + 4 \ «ранспоршыи /4 + 5677
I Data I Hdr. I Hdr. J Hdr. | | Hdr. | \ уровень / | Hdr | | Hdr. | Hdr. | Hdr. | Data |
I Layer I Layer I Layer I Layer I Layer I I Layer I \ гшпш* /I layer I I Layer I Layer I Layer I Layer I Layer I
7 7 6 5 4 + 3 \ «^ / 3 + 4 5 6 7 7
| Data I Hdr. I Hdr. J Hdr. | Hdr. [ | Data | \ ypoeeHb / | Hdr. | | Hdr. | Hdr. | Hdr. | Hdr. | Data |
I Layer I layer I layer I layer I Layer I layer I [ Layer |\ йцапьмый A l*l&\ I Layer] Layer I Layer I layer I Layer I Layer I
7 7 I 6 5 I 4 3 + 2 \ \~~*ь / 2 + 345677
I Data J Hdr. J Hdr. | Hdr. J Hdr. J Hdr. | | Data | \ wuacno/ | Hdr. | | Hdr. | Hdr. | Hdr. | Hdr. | Hdr. | Data |
------ ------------- ---- -----^^--J^------------------------
layer Layer Layer Layer Layer Layer Layer Layer физи- Layer layer Layer Layer Layer layer layer Layer
7765432 И1 веский 1М2345677
I Data J Hdr. J Hdr. | Hdr. | Hdr. | Hdr. | Hdr. | | Data | ypo- | Hdr. | | Data | Hdr. | Hdr. | Hdr. | Hdr. | Hdr. | Data |
Рис. 1.З. Применение многоуровневых заголовков для поддержки
логической смежности уровней
На самом деле уровень 3 передает данные «вниз» уровню 2, который, в свою
очередь, преобразует кадры в битовый поток. После того как битовый поток
поступает устройству уровня 1 получателя, он передается уровню 2 для
повторного формирования кадров. После успешного завершения приема кадра
служебные данные удаляются, а хранящийся в кадре пакет передается уровню 3
получателя. Информация поступает точно в таком же виде, в котором она была
отправлена. С точки зрения уровня 3 передача данных производилась
фактически напрямую.
Возможность обмена данными между смежными уровнями (с точки зрения
этих уровней) стала одним из факторов, обусловивших успех модели.
Хотя эталонная модель OSI изначально предназначалась для определения
архитектуры протоколов открытых коммуникаций, в этом качестве ее ждал
бесславный провал. В сущности, модель почти полностью выродилась в
академическую абстракцию. Но зато эта модель великолепно подходит для
объяснения концепций открытых коммуникаций и логической последовательности
выполнения необходимых действий в сеансе связи. Для практических целей
существует другая, гораздо более содержательная модель — эталонная модель
TCP/IP. Она описывает архитектуру семейства протоколов IP, являющихся
основной темой настоящей книги.
Эталонная модель TCP/IP
В отличие от эталонной модели OSI, модель TCP/IP в большей степени
ориентируется на обеспечение сетевых взаимодействий, нежели на жесткое разделение
функциональных уровней. Для этой цели она признает важность иерархической
структуры функций, но предоставляет проектировщикам протоколов
достаточную гибкость в реализации. Соответственно, эталонная модель OSI гораздо
лучше подходит для объяснения механики межкомпьютерных взаимодействий, но
протокол TCP/IP стал основным межсетевым протоколом.
Гибкость эталонной модели TCP/IP по сравнению с эталонной моделью OSI
продемонстрирована на рис. 1.4.
Уровень I Номер I Эквивалентный
OSI | OSI J уровень TCP/IP
Прикладной уровень I 7 I
Прикладной
Представительский уровень б уровень
Сеансовый уровень 5
Межхостовой
Транспортный уровень 4 уровень
Сетевой уровень 3 Межсетевой уровень
Канальный уровень 2 Уровень сетевого
т : доступа
Физический уровень 1
Рис. 1.4. Сравнение эталонных моделей TCP/IP и OSI
Эталонная модель TCP/IP разрабатывалась значительно позже описываемого
ей протокола и отличается значительно большей гибкостью, чем модель OSI,
поскольку она в большей степени подчеркивает иерархическое расположение
функций вместо жесткого определения функциональных уровней.
Анатомия модели TCP/IP
Стек протоколов TCP/IP состоит из четырех функциональных уровней:
прикладного, межхостового, межсетевого и уровня сетевого доступа. Эти четыре
уровня приблизительно соответствуют семи уровням эталонной модели OSI с
сохранением общей функциональности.
Прикладной уровень
Прикладной уровень содержит протоколы удаленного доступа и совместного
использования ресурсов. Хорошо знакомые нам приложения — такие, как Telnet,
FTP, SMTP, HTTP и многие другие — работают на этом уровне и зависят от
функциональности уровней, расположенных ниже в иерархии. Любые
приложения, использующие взаимодействие в сетях IP (включая любительские и
коммерческие программы), относятся к этому уровню модели.
Межхостовой уровень
Межхостовой уровень IP приблизительно соответствует сеансовому и
транспортному уровням эталонной модели OSI. К функциям этого уровня относится
сегментирование данных в приложениях для пересылки по сети, выполнение
математических проверок целостности принятых данных и мультиплексирование
потоков данных (как передаваемых, так и принимаемых) для нескольких
приложений одновременно. Отсюда следует, что межхостовой уровень располагает
средствами идентификации приложений и умеет переупорядочивать данные,
принятые не в том порядке.
В настоящее время межхостовой уровень состоит из двух протоколов:
протокола управления передачей TCP (Transmission Control Protocol) и протокола
пользовательских дейтаграмм UDP (User Datagram Protocol). С учетом того, что
Интернет становится все более транзакционно-ориентированным, был
определен третий протокол, условно названный протоколом управления
транзакциями/передачей Т/ТСР (Transaction/Transmission Control Protocol). Тем не менее
в большинстве прикладных сервисов Интернета на межхостовом уровне
используются протоколы TCP и UDP.
Межсетевой уровень
Межсетевой уровень IPv4 состоит из всех протоколов и процедур,
позволяющих потоку данных между хостами проходить по нескольким сетям.
Следовательно, пакеты, в которых передаются данные, должны быть
маршрутизируемыми. За маршрутизируемое™ пакетов отвечает протокол IP (Internet Protocol).
Впрочем, функциональность межсетевого уровня не ограничивается
формированием пакетов. Уровень должен обладать средствами преобразования
адресов уровня 2 в адреса уровня 3, и наоборот. Эти функции обеспечиваются
одноранговыми (peer-to-peer) протоколами, описанными в главе 5.
Кроме того, межсетевой уровень должен поддерживать маршрутизацию и
функции управления маршрутами. Эти функции предоставляются внешними
протоколами, которые называются протоколами маршрутизации. К их числу
относятся протоколы IGP (Interior Gateway Protocols) и EGP (Exterior Gateway
Protocols). Хотя эти протоколы также находятся на межсетевом уровне, они не
являются «родными» протоколами семейства IP. Следует отметить, что многие
протоколы маршрутизации позволяют обнаруживать и строить маршруты в
архитектурах, использующих адресацию с несколькими протоколами маршрутизации.
Другими примерами протоколов маршрутизации с разными архитектурами
адресации являются IPX и AppleTalk.
Уровень сетевого доступа
Уровень сетевого доступа состоит из всех функций, необходимых для
физического подключения и передачи данных по сети. В эталонной модели OSI этот
набор функций разбит на два уровня: физический и канальный. Эталонная
модель TCP/IP создавалась после протоколов, присутствующих в ее названии,
и в ней эти два уровня были слиты воедино, поскольку различные протоколы
IP останавливаются на межсетевом уровне. Протокол IP предполагает, что все
низкоуровневые функции предоставляются либо локальной сетью, либо
подключением через последовательный интерфейс.
Итоги
Представленные в этой главе основные концепции сетей, их функции и даже их
возможные применения — всего лишь начало; эти «строительные блоки» будут
гораздо более подробно рассмотрены в книге. А эта глава всего лишь дает
читателю представление о некоторых основополагающих терминах и концепциях
открытых сетевых коммуникаций.
В главе 2 более подробно освещается роль TCP/IP в Интернете и
рассматриваются различные механизмы, благодаря которым TCP/IP по-прежнему
остается актуальным. Эталонные модели OSI и TCP/IP будут неоднократно
упоминаться в книге.
^ TCP/IP и Интернет
Нил Джеймисон (Neal S.Jamison)
Благодаря протоколу TCP/IP Интернет стал тем, чем он является сегодня. В
результате Интернет произвел в нашем стиле жизни и работы почти такие же
революционные изменения, как печатный станок, электричество или компьютер.
Настоящая глава посвящена истории Интернета, его попечителям и
перспективам будущего развития. В ней рассматривается процесс превращения идей
в стандарты, а также кратко представлены некоторые популярные протоколы
и службы, в том числе Telnet и HTTP.
История Интернета
История Интернета начинается с незапамятных времен. Рисунки на стенах
пещер, дымовые сигналы, голубиная почта — все эти виды связи наводили
наших предков на мысль, что должны существовать более совершенные способы.
Затем появился телеграф, телефон и трансатлантическая беспроводная связь...
и это уже было на что-то похоже. Потом были изобретены первые компьютеры —
громадные устройства, выделяющие уйму тепла. По своей вычислительной
мощности они уступали любому современному карманному калькулятору,
однако эти гиганты помогали выигрывать войны и использовались при переписи
населения. Впрочем, их было очень мало, никто не мог себе купить личный
компьютер и уж тем более — установить его дома.
В 1960-х годах на смену электронным лампам пришли транзисторы, размеры
и стоимость компьютеров начали падать, а интеллект и вычислительная мощность
этих машин стали расти. В это время группа ученых уже начала работать над
проблемой взаимодействия компьютеров. Леонард Клейнрок (Leonard Kleinrock),
в те времена аспирант MIT, предложил концепцию технологии коммутации
пакетов и опубликовал статью на эту тему в 1961 году. Тогда же Управление
перспективного планирования научно-исследовательских работ ARPA (Advanced
Research Project Agency) разрабатывало для себя (и для военных) новую систему
связи, и работа Клейнрока дала необходимый импульс. ARPA объявило конкурс
на создание первой сети с пакетной коммутацией. Контракт достался небольшой
фирме BBN (Bolt Beranek and Newman) из Массачусетса, занимавшейся
акустикой. Так родилась сеть ARPANET. Это произошло в 1969 году.
ARPANET
Исходная сеть ARPANET состояла всего из четырех хостов — по одному в
Калифорнийском университете Лос-Анджелеса, в Стэнфордском
научно-исследовательском институте, в университете Санта-Барбары и университете штата Юта.
Эта маленькая сеть на базе протокола NCP (Network Control Protocol) позволяла
своим пользователям регистрироваться на удаленных хостах, осуществлять
печать на удаленном принтере и передавать файлы. В 1971 году Рэй Томлинсон
(Ray Tomlinson), инженер из BBN, написал первую программу для работы с
электронной почтой.
TCP/IP
В 1974 году, всего через пять лет после рождения ARPANET, Винтон Серф
(Vinton Cerf) и Роберт Кан (Robert Kahn) разработали протокол управления
передачей TCP (Transmission Control Protocol). В начале 1980-х годов протокол
TCP/IP, спроектированный с расчетом на независимость от базового
компьютера и сети, заменил ограниченный протокол NCP, что позволило организовать
взаимодействие с другими разнородными ARPANET-подобными сетями (интер-
нетами). Так родился Интернет.
ПРИМЕЧАНИЕ
Термин «интернет» (со строчной буквы «и») обозначает сеть, состоящую из разнородных
компьютеров. Интернет (с прописной буквы «И») — ТА САМАЯ Сеть, объединяющая миллионы
компьютеров и пользователей.
Распространению TCP/IP способствовало Министерство обороны, которое
выбрало TCP/IP своим стандартным протоколом и потребовало его
обязательного использования фирмами-подрядчиками. Примерно в то же время
разработчики из Калифорнийского университета (Беркли) выпустили новую
разновидность операционной системы Unix, 4.2BSD (Berkeley Software Distribution),
которая распространялась бесплатно. Этот факт благотворно отразился на
протоколе TCP/IP, плотно интегрированном с 4.2BSD. Версия BSD Unix была
заложена в основу других систем семейства Unix, что объясняет господство TCP/IP
в мире Unix.
Протокол TCP/IP обеспечил надежность связи, необходимую для
начального развития Интернета, а ученые и инженеры начали включать в семейство
TCP/IP новые протоколы и приложения. FTP, Telnet и SMTP
поддерживались с самого начала. К числу новых пополнений семейства TCP/IP
относятся ШАР (Internet Mail Access Protocol), POP (Post Office Protocol) и,
конечно, HTTP.
NSF
Исключительно важная роль в становлении Интернета также принадлежит сети
NSFNet. Национальный научный фонд NSF (National Science Foundation)
оценил важность работ по созданию ARPANET и решил создать собственную сеть.
Сеть NSFNet соединяла несколько суперкомпьютеров, установленных в
университетах и правительственных учреждениях. Популярность сети росла, и в NSF
решили увеличить ее возможности за счет модернизации магистральных
каналов связи. Сеть NFSNet начиналась с линий со скоростью 56 кбит/с, перешла
на линии Т-1 A,544 Мбит/с), затем на Т-3 D3 Мбит/с) и вскоре стала самым
быстрым интернетом того времени.
На этом временном отрезке также создавались и другие сети, в том числе
BITNET (Because It's Time Network) и CSNET (Computer Science Research
Network). Сеть ARPANET продолжала расти невероятными темпами, с удвоением
количества хостов за каждый год.
В конце 1980-х и начале 1990-х годов сеть NFSNet заменила старую и более
медленную сеть ARPANET и стала официальной опорной сетью Интернета.
Интернет сегодня
В 1992 году Европейская организация ядерных исследований CERN (Conseil
Europeen pour la Recherche Nucleaire) и Тим Бернерс-Ли (Tim Berners-Lee)
выдвинули концепцию «Всемирной паутины» WWW (World Wide Web). Через
год была выпущена клиентская программа WWW, которая называлась Mosaic.
Эти два события превратили Интернет из текстовой среды, использовавшейся
преимущественно учеными и студентами, в графическую среду, которая сегодня
используется многими миллионами людей.
В апреле 1995 года сеть NFSNet была заменена более современной,
коммерческой опорной сетью. В результате ограничения на подключения к хостам в
Интернете были снижены и появился совершенно новый тип пользователей —
коммерческий пользователь.
Протокол РРР (Point-to-Point Protocol) был создан в 1994 году, а в 1995 году
он получил повсеместное распространение. РРР позволял использовать TCP/IP
в телефонных линиях, что облегчало доступ в Интернет для домашних
пользователей. В то же время стали появляться поставщики услуг Интернета (ISP, Internet
Service Providers), которые обеспечивали подключение к Интернету домашних
пользователей и организаций. Это привело к бурному росту количества
домашних пользователей.
Интернет развивался (и продолжает развиваться!) ошеломляющими
темпами — до 100 процентов в год.
В наши дни даже поверхностное знакомство с WWW наглядно показывает
важность эволюции Интернета. Использование Интернета вышло за рамки
академических и оборонных коммуникаций и научных исследований. Сейчас в
Интернете можно покупать товары и выполнять банковские операции, a Web откры-
вает доступ к всевозможной информации, от кулинарных рецептов до текстов
книг. Перспективы использования Интернета безграничны.
RFC и процесс стандартизации
В процессе эволюции Интернета новые идеи и комментарии представлялись
в виде документов, называемых запросами на комментарии, или RFC (Requests
for Comments). В этих документах обсуждаются многие аспекты коммуникаций,
связанных с Интернетом. Первый документ RFC (RFC 1) назывался «Host
Software» и был написан в апреле 1969 года Стивом Крокером (Steve Crocker),
аспирантом Калифорнийского университета в Лос-Анджелесе и автором восьми
из первых 25 RFC. Тексты первых RFC чрезвычайно интересны для всех, кто
интересуется историей Интернета. Спецификации протоколов Интернета,
определяемые IETF и IESG, также публикуются в форме RFC.
Редактором RFC называется лицо, публикующее RFC и отвечающее за
окончательное рецензирование документов. Роль редактора обсуждается ниже в этой
главе.
Хорошим источником информации обо всех типах RFC является сайт http://
www.rfc-editor.org/.
ПРИМЕЧАНИЕ
Джон Постел (Jon Postel) внес важный вклад в создание ARPANET, а следовательно, и в создание
Интернета. Он участвовал в создании системы доменных имен Интернета и в течение многих
лет занимался ее администрированием; эта система продолжает использоваться и сейчас. Джон
возглавлял Агентство по выделению имен и параметров протоколов Интернета IANA (Internet
Assigned Numbers Authority) и был редактором RFC. Джон скончался в октябре 1998 года. Его
памяти был посвящен RFC 2468 (Винтон Серф, октябрь 1998 года).
Документы RFC являются основным средством распространения новых идей
в области протоколов, исследований и стандартов. Если исследователь хочет
предложить новый протокол, научную работу или учебник по некоторой теме,
он оформляет их в виде документа RFC. Таким образом, к числу RFC
принадлежат описания стандартов Интернета, предложения по пересмотру старых и
внедрению новых протоколов, описания стратегий реализации, учебники, сборники
полезной информации и т. д.
Протоколы, которым суждено стать стандартами Интернета, проходят
несколько стадий в соответствии со степенью завершенности: предложенный
стандарт, проект стандарта и стандарт. По мере развития стандарта объемы
аналитических и тестовых данных растут. После завершения этого процесса протоколу
присваивается определенное число STD, то есть номер нового стандарта.
По мере совершенствования технологий некоторые протоколы заменяются
своими улучшенными версиями или перестают использоваться. Такие протоколы
помечаются как «исторические» («historic»). В некоторых RFC документируются
результаты анализа и разработки новых протоколов, которые помечаются как
«экспериментальные» («experimental»).
Протоколы, разработанные другими стандартизирующими организациями,
конкретными фирмами-поставщиками или частными лицами, также могут
представлять интерес и рекомендоваться для применения в Интернете.
Спецификации таких протоколов также публикуются в виде RFC для удобства и простоты
распространения в Интернет-сообществе. Такие протоколы помечаются как
«информационные» («informational»).
Иногда протоколы получают широкое распространение без одобрения или
участия IESG. В частности, это может быть связано с эволюцией протоколов
по маркетинговым или политическим причинам. Некоторые из этих
протоколов даже начинают играть важную роль в Интернет-сообществе, поскольку
коммерческие организации используют их в своих интрасетях. Согласно
официальной позиции IAB, при эволюции протоколов рекомендуется
использовать процесс стандартизации; тем самым обеспечивается максимальный
уровень совместимости и предотвращается возникновение конфликтных
требований к протоколам.
Не все протоколы должны быть обязательно реализованы во всех системах,
потому что из-за огромного разнообразия существующих систем в некоторых
случаях реализация протоколов не имеет смысла. Например, к таким
устройствам Интернета, как шлюзы, маршрутизаторы, терминальные серверы, рабочие
станции и многопользовательские хосты, предъявляются совершенно разные
требования. Не для всех из них нужны одни и те же протоколы.
Источники информации о RFC
Тексты RFC хранятся в нескольких архивах. Возможно, поиски следует
начинать с индекса RFC. Список индексов приведен в следующем разделе.
Существует несколько способов получения RFC: Web, FTP, Telnet и даже
электронная почта. В табл. 2.1 перечислены некоторые архивы RFC, доступные
через FTP.
Таблица 2.1. Архивы RFC, доступные через FTP
Сайт Имя/Пароль/Каталог
ftp.isi.edu anonymous/name@host.domain/in-notes
wuarchive.wustl.edu anonymous/name@host.domain/doc/rfc
Некоторые архивы также рассылают RFC по электронной почте. Например,
вы можете отправить сообщение по адресу nis-info@nis.nsf.net с пустой строкой
темы и текстом «send rfcnnnn.txt», где пппп — номер нужного RFC.
Как и следовало предполагать, многие архивы также предоставляют доступ
к документам через Web. Если вы захотите воспользоваться этой возможностью,
поиски можно начать с сайта http://www.rfc-editor.org.
За дополнительной информацией о получении RFC обращайтесь по адресу
http://www.isi.edu/in-notes/rfc-retrieval.txt.
Индексы RFC
Полный индекс документов RFC занимает слишком много места, чтобы
приводить его здесь. Впрочем, в Web представлены индексы в форматах ASCII, HTML
и в специальном поисковом формате. Ниже перечислены некоторые примеры:
О Текстовый формат: ftp://ftp.isi.edu/in-notes/rfc-index.txt.
О HTML: ftp://ftpeng.cisco.com/fred/rfc-index/rfc.html.
О HTML by Protocol: http://www.garlic.com/~lynn/rfcprot.htm.
По адресу http://www.rfc-editor.org/rfcsearch.html находится поисковый
механизм RFC.
Краткое знакомство со службами Интернета
Без популярных протоколов и служб — таких, как HTTP, SMTP и FTP —
Интернет был бы просто большим количеством компьютеров, связанных в
бесполезный клубок. В этом разделе кратко описаны самые распространенные (и самые
полезные) протоколы Интернета со ссылками на главы, в которых вы найдете
дополнительную информацию.
Whois и Finger
Служба и протокол Whois предназначены для получения информации о хостах
и доменах Интернета. Обращаясь с запросом к любому из серверов баз данных
Whois, клиенты Whois могут получить разнообразные сведения — контактные
данные узлов и доменов, географические адреса и т. д. Whois используется в
некоторых организациях (особенно в университетах) в качестве электронного
каталога персонала.
Whois находится на хорошо известном порте TCP с номером 43. Подробное
описание приведено в RFC 954.
Служба/протокол Finger предназначены для сбора информации о пользователе
Интернета. В частности, вы можете узнать адрес электронной почты
пользователя, определить, имеются ли у него непрочитанные сообщения и подключен
ли он к Интернету в данный момент, и даже получить частичную информацию
о том, над чем он в данный момент работает. Ввиду специфики этой службы
некоторые администраторы предпочитают отключать ее на своих хостах. Finger
ведет прослушивание на порту TCP с номером 79, а подробное описание
приведено в RFC 1288.
За дополнительной информацией об этих службах обращайтесь к главе 29.
FTP
Служба/протокол FTP (File Transfer Protocol) обеспечивает пересылку файлов
по Интернету. Протокол FTP также относится к числу ранних протоколов, он
появился еще в 1971 году. В наше время FTP повсеместно используется для
предоставления открытого доступа к файлам (через анонимный вход).
Протокол FTP работает на хорошо известных портах TCP с номерами 20 и 21.
Подробное описание приведено в RFC 959.
За дополнительной информацией о FTP и других протоколах пересылки
файлов обращайтесь к главе 30.
Telnet
Программа Telnet предназначена для эмуляции терминала в Интернете. Проще
говоря, Telnet позволяет регистрироваться на удаленных хостах, не беспокоясь
о совместимости терминалов. Telnet также принадлежит к числу самых первых
протоколов и служб раннего Интернета (см. RFC 15). Telnet работает на хорошо
известном порте TCP с номером 23. Подробное описание приведено в RFC 854.
За дополнительной информацией о Telnet обращайтесь к главе 31.
Электронная почта
Протокол SMTP (Simple Mail Transfer Protocol) определяет Интернет-стандарт
для работы с электронной почтой. Многие пользователи ежедневно используют
этот протокол, даже не осознавая этого. SMTP дополняется другими протоколами
и службами (такими, как РОРЗ и ШАР4), позволяющими выполнять операции
с сообщениями на почтовом сервере и загружать их на локальный компьютер
для чтения. Протокол SMTP работает на хорошо известном порте TCP с
номером 25. Подробное описание приведено в RFC 821.
За дополнительной информацией о SMTP, а также других протоколах и
службах для работы с электронной почтой обращайтесь к главе 35.
World Wide Web
Протокол HTTP заложен в основу работы World Wide Web. В сущности, именно
HTTP принадлежит основная заслуга в бурном развитии Интернета в
середине 1990-х годов. Сначала появились первые клиенты HTTP (такие, как Mosaic
и Netscape), которые позволяли наглядно «увидеть» Web. Вскоре стали
появляться web-серверы с полезной информацией. В наше время в Интернете
существует более шести миллионов web-сайтов, работающих на базе HTTP.
Протокол HTTP работает на хорошо известном порте TCP с номером 80, а подробное
описание его текущей версии, HTTP/1.1, приведено в RFC 2616.
За дополнительной информацией о HTTP, а также других протоколах и
службах для работы в Web обращайтесь к главе 36.
Usenet
Служба/протокол NNTP (Network News Transfer Protocol) обеспечивает
публикацию, прием и пересылку новостей Usenet. Несомненно, Usenet — явление
историческое. Это доска объявлений в масштабе Интернета, состоящая из конфе-
ренций (newsgroups) — форумов, в которых обсуждаются всевозможные темы.
Протокол NNTP работает на хорошо известном порте TCP с номером 119, а его
подробное описание приведено в RFC 977.
За дополнительной информацией о NNTP обращайтесь к главе 31.
Интрасети и экстрасети
После произошедшей в 1991 году коммерциализации Интернета корпорации
довольно быстро открыли новые возможности использования Интернета, его
служб и технологий для экономии времени и денег, а также для получения
стратегических преимуществ. Одним из самых масштабных применений этой
технологии в наши дни стали интрасети.
Интрасети
Интрасетью (intranet) называется корпоративная локальная сеть, в которой
основным коммуникационным протоколом является TCP/IP. Прикладные службы
интрасетей основаны на стандартных службах Интернета — HTTP, FTP, TELNET,
SSH и т. д.
Проще говоря, интрасеть представляет собой конечную, замкнутую сеть,
использующую технологии Интернета для совместного использования данных.
Интрасеть может быть подключена к Интернету с установлением контрольных
механизмов, предотвращающих несанкционированный доступ. Впрочем,
интрасеть может вообще не иметь выхода в Интернет.
Преимущества интрасетей
Корпоративные интрасети обладают многими преимуществами. Относительно
низкая стоимость реализации и сопровождения обеспечивает компаниям очень
высокий уровень прибыли на инвестированный капитал. Среди основных
преимуществ интрасетей стоит выделить следующие:
О Интрасети просты в использовании. Пользовательский интерфейс
интрасетей основан на обычном web-браузере, поэтому затраты на обучение
персонала близки к нулю.
О Интрасети упрощают доступ работников к информации. Интрасети позволяют
чрезвычайно эффективно организовать доступ работников к необходимой
информации, будь то одностраничный служебный меморандум или 500-стра-
ничный телефонный справочник.
О Интрасети снижают затраты на подготовку печатных материалов.
Распространение информации в крупной компании или организации традиционно
считалось не только организационно сложной, но и очень дорогой задачей.
О Интрасети расширяют возможности традиционных документов. Найти имя
или название товара в бумажном справочнике или каталоге не так уж сложно,
однако этот процесс часто бывает утомительным и занимающим много
времени.
О Интрасети повышают актуальность данных. После вывода на печать
документ может устареть. Таким образом, возникает опасность распространения
копий устаревших и, возможно, — недостоверных документов.
Приведенный список не исчерпывает всех преимуществ интрасетей.
Компании, установившие у себя интрасети, открыли для себя гораздо больше новых
возможностей, чем перечислено выше. А при использовании таких
Интернет-технологий и служб, как браузеры и web-серверы с открытыми исходными текстами,
все эти преимущества удается реализовать с относительно низкими затратами.
Области применения интрасетей
Возможности применения интрасетей, повышающие эффективность и
производительность труда в организациях, практически безграничны. Ниже перечислены
некоторые популярные области применения интрасетевых технологий.
О Управление кадрами. Многие компании распространяют объявления о
вакансиях, ведут базы данных с информацией о сотрудниках, распространяют
всевозможные документы вроде анкет, табельных листков, отчетов о затратах
и даже уведомлений о перечислении зарплаты на счет — и все это делается
при помощи интрасетей.
О Управление проектами. Руководители проектов могут просматривать и
обновлять электронные таблицы и графики Гантта, опубликованные в интрасети.
Отчеты о состоянии проекта тоже могут публиковаться в интрасети для их
просмотра и рецензирования руководителями.
О Инвентаризационный учет. Публикация инвентарных баз данных в
электронном виде с доступом либо на уровне собственных форматов данных,
либо через специальные приложения.
О Управление файлами. После установки мощного сервера интрасети,
работающего на базе web-технологий, надобность в старом файловом сервере отпадет.
Интрасети удобны для корпоративных пользователей, однако предоставление
доступа к корпоративным интрасетям внешним клиентам тоже приносит пользу.
Так появились экстрасети, описанные в следующем разделе.
Предоставление внешнего доступа к интрасети
Интрасети предназначены для совместного использования информации в
рамках компании или организации. Следующим шагом в развитии этой идеи стали
экстрасети. Экстрасеть (extranet) представляет собой интрасеть,
предоставляющую контролируемый доступ определенной группе внешних пользователей. На
практике экстрасети используются для обмена информацией со стратегическими
партнерами (клиентами, поставщиками или службами доставки). Короче
говоря, экстрасети относятся к сетям класса «бизнес-бизнес».
Некоторые области применения экстрасетей:
О проведение деловых операций на базе EDI (Electronic Data Interchange) или
других технологий;
О взаимодействие с другими организациями в работе над совместными
проектами;
О обмен новостями или другой информацией с партнерами.
Пример: крупная компания, занимающаяся доставкой товаров, может
предоставить торговой компании доступ к своей интрасети, чтобы торговая компания
могла согласовать данные о сроках поставки со своими покупателями.
Будущее Интернета
По мере роста популярности и расширения областей практического применения
Интернета совершенствуются и интернет-технологии. В настоящее время
существует ряд проектов, направленных на улучшение этих технологий. Наиболее
перспективными являются следующие проекты:
О NGI (Next Generation Internet);
О vNBS (Very high-speed Backbone Network Service);
О Internet2 A2).
Все эти проекты более подробно рассматриваются в следующих подразделах.
NGI (Next Generation Internet)
Как сообщил президент Клинтон в своем докладе о положении страны в 1998 году,
инициатива Интернета следующего поколения NGI (Next Generation Internet)
обеспечивает финансирование и координацию работы академических и
федеральных учреждений, направленных на финансирование и построение
интернет-сервиса следующего поколения.
За дополнительной информацией об инициативе NGI обращайтесь на сайт
http://www.ngi.gov.
vBNS
Национальный научный фонд начал работу над созданием экспериментальной
опорной сети с огромной скоростью передачи данных. Этой опорной сети,
оператором которой является MCI WorldCom, было присвоено название vBNS (Very
high-speed Backbone Network Service). В ближайшем будущем vBNS послужит
платформой для тестирования новых, высокоскоростных интернет-технологий
и протоколов. В настоящее время сеть соединяет несколько суперкомпыотер-
ных центров и точек доступа к сети на скоростях ОС-12 F22 Мбит/с) и выше.
В феврале 1999 года компания MCI WorldCom объявила об установке канала
связи ОС-48 B,5 Гбит/с) между Лос-Анджелесом и Сан-Франциско.
Обращайтесь на сайт http://www.vbns.net за дополнительной информацией
о vBNS.
Internet2 A2)
Испытательная сеть Internet2 была создана для того, чтобы университеты,
правительственные и промышленные организации могли совместно разрабатывать
новые интернет-технологии. Партнерские организации связывались
высокоскоростной сетью Abilene (до 9,6 Гбит/с). В 12 также задействована сеть vBNS,
упомянутая в предыдущем разделе.
Обращайтесь на сайт http://www.internet2.edu за дополнительной информацией
о 12. Информация о сети Abilene находится по адресу http://www.ucaid.edu/abilene.
Так кто же главный в Интернете?
Огромные масштабы Интернета и множество высокотехнологичных инициатив,
направленных на его совершенствование, наводят на мысль, что группа,
ответственная за Интернет, трудится не покладая рук. Это не совсем так: никакой группы,
«ответственной» за Интернет, не существует. У Интернета нет директора,
главного администратора или даже президента. Оказывается, Интернет процветает
в условиях анархической, неофициальной культуры 1960-х, в которых он был
рожден. Тем не менее существует ряд групп, которые помогают следить за
развитием технологий Интернета, за процессами регистрации и общими проблемами,
связанными с управлением сетью таких огромных масштабов.
ISOC (Internet Society)
Общество Интернета ISOC (Internet Society) объединяет на профессиональной
основе свыше 150 организаций и 6000 физических лиц из более 100 стран мира.
Эти организации и лица совместно решают вопросы, от которых зависит
нормальная работа Интернета и его будущее. ISOC состоит из нескольких групп,
отвечающих за стандарты инфраструктуры Интернета, в том числе IAB (Internet
Architecture Board) и IETF (Internet Engineering Task Force).
Web-сайт ISOC находится по адресу http://www.isoc.org.
IAB (Internet Architecture Board)
Координационный совет по архитектуре Интернета IAB (Internet Architecture
Board) выполняет функции технического советника при Обществе Интернета.
Эта небольшая группа (кандидаты в члены IAB представляются IETF и
одобряются Советом попечителей ISOC) проводит регулярные заседания, на которых
рассматриваются и вносятся новые идеи и предложения для последующей
разработки в IETF и IESG.
Web-сайт IAB находится по адресу http://www.iab.org.
IETF (Internet Engineering Task Force)
Проблемная группа проектирования Интернета IETF (Internet Engineering Task
Force) является открытым сообществом сетевых проектировщиков,
поставщиков и ученых, работающих над развитием Интернета. IETF проводит заседания
только три раза в год, а большая часть работы выполняется через электронные
списки рассылки. IETF делится на несколько рабочих групп, каждая из которых
занимается определенной темой. К числу рабочих групп IESG принадлежат
группы разработчиков HTTP (Hypertext Transfer Protocol) и IPP (Internet
Printing Protocol).
Группа IETF открыта для всех желающих. Ее web-сайт находится по адресу
http://www.ietf.org.
IESG (Internet Engineering Steering Group)
Исполнительный комитет IETF — IESG (Internet Engineering Steering Group) —
отвечает за техническое руководство деятельностью IETF и процессом выработки
новых стандартов Интернета. IESG также следит за соблюдением правил ISOC
в деятельности IETF. Кроме того, IESG окончательно утверждает спецификации
перед тем, как они принимаются в качестве стандартов Интернета.
За дополнительной информацией о IESG обращайтесь по адресу http://www.
ietf.org/iesg.html.
IANA (Internet Assigned Numbers Authority)
Агентство по выделению имен и параметров протоколов Интернета IANA
(Internet Assigned Numbers Authority) отвечает за назначение IP-адресов и
управление пространством имен доменов. IANA также определяет номера портов
протокола IP и другие параметры. Деятельность IANA осуществляется под
патронажем ICANN.
Web-сайт IANA находится по адресу http://www.iana.org.
ICANN (Internet Corporation for Assigned
Names and Numbers)
Корпорация по выделению имен и параметров протоколов Интернета ICANN
(Internet Corporation for Assigned Names and Numbers) создавалась как часть
проекта по переводу администрирования доменных имен и пространства
IP-адресов на интернациональную основу. Основной целью ICANN является перевод
администрирования доменов и IP-адресов из правительственного в частный
сектор. В настоящее время ICANN участвует в работе над системой SRS (Shared
Registry System), благодаря которой процесс регистрации доменных имен
должен стать открытым для честной конкуренции. Дополнительная информация
о SRS приводится в следующем разделе.
За дополнительной информацией о ICANN обращайтесь по адресу http://
www.icann.org.
InterNIC и другие регистрирующие органы
Информационный центр Интернета InterNIC (Internet Network Information
Center), работающий под управлением Network Solutions, Inc., был основным
регистратором доменов верхнего уровня (.com, .org, .net, .edu) с 1993 года. Надзор
за деятельностью InterNIC осуществляется Национальной администрацией по
телекоммуникациям и информации NTIA (National Telecommunications &
Information Administration), подгруппой Министерства торговли. InterNIC передал
часть полномочий другим официальным регистрирующим органам (таким, как
информационные центры Министерства обороны и Азиатско-тихоокеанского
региона). В последнее время появились новые инициативы, направленные на
дальнейшее разделение полномочий InterNIC. Одна из таких инициатив, SRS
(Shared Registry System), направлена на внесение открытой и честной
конкуренции в процесс регистрации доменов. В настоящее время свыше 60 компаний
выполняют регистрирующие функции в рамках этой инициативы.
Основные регистрирующие органы перечислены в табл. 2.2.
Таблица 2.2. Основные регистрирующие органы Интернета
Имя URL
InterNIC http://www.jnternic.net/
Информационный центр Министерства обороны http://nic.mil
Федеральный регистр США http://nic.gov
Информационный центр Азиатско-тихоокеанского региона http://www.apnic.net
RIPE (Rftseaux IP Europeftns) http://www.ripe.net
Совет регистрирующих органов (CORE, Council of Registrars) http://www.corenic.org/
Register.com http://register.com
Редактор RFC
Запросы на комментарии (RFC) представляют собой серию документов,
которые, среди прочего, определяют стандарты Интернета. Дополнительная
информация о RFC приведена в разделе «RFC и процесс стандартизации» выше в этой
главе.
Редактором RFC называется лицо, публикующее RFC и отвечающее за
окончательное рецензирование документов.
За дополнительной информацией о редакторе RFC обращайтесь на сайт
http://www.rfc-editor.org/.
Поставщики услуг Интернета
Коммерциализация Интернета в 1990 году была радостно встречена
многочисленными поставщиками услуг Интернета, которые горели желанием приобщить
к Интернету миллионы домашних пользователей и организаций. Поставщиком
услуг Интернета, или ISP (Internet Service Provider), называется коммерческая
организация, которая устанавливает интернет-серверы в своих офисах или
машинных залах. Серверы оснащаются модемами и обеспечивают поддержку
протоколов РРР (Point-to-Point Protocol) или SLIP (Serial Line Internet Protocol),
при помощи которых удаленные пользователи подключаются со своих
персональных компьютеров к Интернету.
Поставщики услуг Интернета на коммерческой основе предоставляют
удаленным пользователям доступ к Интернету. Большинство поставщиков также
предоставляет учетную запись электронной почты на своем сервере, а некоторые
даже открывают доступ к командному процессору системы Unix.
Более крупные поставщики обеспечивают коммерческие организации и
других поставщиков высокоскоростными средствами связи (ISDN, усеченными
каналами Т-1 и даже выше).
Итоги
В этой главе рассматривалась история Интернета, путь его развития и другие
сопутствующие темы. Также она дает краткое представление о современном
использовании интернет-технологий, интрасетях и экстрасетях.
Описание процесса стандартизации на базе RFC сопровождается ссылками,
по которым вы найдете тексты RFC для дальнейшего изучения.
Также были описаны самые популярные службы Интернета со ссылками на
последующие главы книги, содержащие дополнительную информацию.
Вы познакомились с организациями, которые привели Интернет к его
современному состоянию и продолжают развивать его в соответствии с изменениями
в технологиях и потребностях пользователей. Трудно предсказать, что ждет
Интернет в будущем. Всего за несколько лет Интернет вырос из крошечной
экспериментальной сети, использовавшейся немногочисленными учеными, в
глобальную сеть с миллионами компьютеров и пользователей. Уверенно можно
сказать только одно: с такими проектами, как NGI, 12 и vBNS, мы еще только
начинаем видеть потенциальные возможности и области практического
применения этой пленительной технологии.
*J Общий обзор TCP/IP
Рима С. Регас (Rima S. Regas)
Протокол TCP/IP встречается повсеместно. Это семейство протоколов, благодаря
которым любой пользователь с компьютером, модемом и договором, заключенным
с поставщиком услуг Интернета, может получить доступ к информации по всему
Интернету. Пользователи служб AOL Instant Messenger и ICQ (также
принадлежащей AOL) получают и отправляют свыше 750 миллионов сообщений в день.
Большая часть этого немыслимого объема информации передается по Интернету.
Именно благодаря TCP/IP каждый день благополучно выполняются многие
миллионы операций — а возможно, и миллиарды, поскольку работа в Интернете
отнюдь не ограничивается электронной почтой и обменом сообщениями. Более
того, в ближайшее время TCP/IP не собирается сдавать свои позиции. Это
стабильное, хорошо проработанное и достаточно полное семейство протоколов,
и в этой главе мы познакомимся с основными принципами его работы.
Все рутинные операции по управлению общим перемещением пакетов
данных в Интернете выполняются TCP и IP — двумя разными протоколами,
работающими в едином комплексе. Оба протокола используют специальные
заголовки, определяющие содержимое каждого пакета, а если пакетов несколько —
сколько еще их следует ожидать. Протокол TCP ориентирован на обеспечение
связи с удаленными хостами. Протокол IP обеспечивает адресацию, чтобы
сообщения доставлялись в точности туда, куда они были адресованы. Преимущества
TCP/IP описаны в следующем разделе.
Преимущества TCP/IP
Протокол TCP/IP обеспечивает возможность межплатформенных сетевых
взаимодействий (то есть связи в разнородных сетях). Например, сеть под
управлением Windows NT/2000 может содержать рабочие станции Unix и Macintosh
и даже другие сети более низкого порядка. TCP/IP обладает следующими
характеристиками:
О Хорошие средства восстановления после сбоев.
О Возможность добавления новых сетей без прерывания текущей работы.
О Устойчивость к ошибкам.
О Независимость от платформы реализации.
О Низкие непроизводительные затраты на пересылку служебных данных.
Протокол TCP/IP изначально проектировался для задач Министерства
обороны, поэтому все перечисленные достоинства скорее относятся к постановке задачи
на проектирование. Например, наличие хороших средств восстановления после
сбоев означает, что в случае уничтожения части сети из-за вторжения или удара
противника ее оставшиеся компоненты должны сохранить полную
работоспособность. То же самое относится и к добавлению новых сетей без прерывания
текущей работы. Устойчивость к ошибкам была реализована таким образом, что в
случае потери информационного пакета на одном маршруте специальный механизм
должен был направить пакет к месту назначения по другому маршруту.
Независимость от платформы означает, что сети и клиенты могут работать под управлением
Windows, Unix, Macintosh, а также любой другой платформы или комбинации
платформ. Эффективность TCP/IP обусловлена главным образом с его низкими
непроизводительными затратами. Производительность играет основную роль
в любой сети, а протокол TCP/IP не имеет себе равных по скорости и простоте.
Уровни и протоколы TCP/IP
Протоколы TCP и IP совместно управляют потоками данных (как входящими, так
и исходящими) в сети. Но если протокол IP просто передает пакеты, не обращая
внимания на результат, TCP должен проследить за тем, чтобы пакеты прибыли
в положенное место. В частности, TCP отвечает за выполнение следующих задач:
О Открытие и закрытие сеанса.
О Управление пакетами.
О Управление потоком данных.
О Обнаружение и обработка ошибок.
Архитектура
Сетевая среда TCP/IP выполняет все операции, перечисленные выше, и
координирует их с удаленными хостами. Протокол TCP/IP проектировался по
модели Министерства обороны, которая состояла только из четырех уровней
вместо семи, как в модели OSI.
Главное различие между структурой уровней OSI и TCP/IP заключается
в том, что транспортный уровень не всегда обеспечивает гарантированную
доставку. На транспортном уровне TCP/IP также поддерживается более простой
протокол UDP (User Datagram Protocol).
Прикладной уровень
Прикладной уровень состоит из таких протоколов, как SMTP, FTP, NFS, NIS,
LPD, Telnet и Remote Login. Области применения этих протоколов хорошо
знакомы большинству пользователей Интернета.
Транспортный уровень
Транспортный уровень состоит из протоколов UDP и TCP. Первый доставляет
пакеты почти без проверки, а второй обеспечивает гарантию доставки.
Сетевой уровень
Сетевой уровень состоит из следующих протоколов: ICMP, IP, IGMP, RIP, OSPF,
EGP и BGP. Протокол ICMP (Internet Control Message Protocol) используется
для передачи информации о проблемах уровня IP и получения значений
параметров IP. Протокол IGMP (Internet Group Management Protocol) предназначен
для управления групповой рассылкой. Протоколы RIP, OSPF, EGP и BGP4
относятся к числу протоколов маршрутизации.
Канальный уровень
Канальный уровень состоит из протоколов ARP и RARP и подсистемы
формирования кадров, обеспечивающей пересылку пакетов.
TCP
Протокол управления передачей TCP (Transmission Control Protocol)
обеспечивает гарантированную доставку пакетов данных и предоставляет услуги связи
приложениям. TCP использует упорядоченное подтверждение приема и при
необходимости организует повторную передачу пакетов.
Заголовок TCP имеет следующую структуру:
16 бит 32 бит
Порт отправителя Порт получателя
Порядковый номер
Номер для подтверждения (АСК)
Смещение зарезервировано U A P R S F Окно
Контрольная сумма Указатель срочности
Параметры и заполнители
Смысл полей заголовка поясняется ниже.
Порт отправителя
Номер порта, с которого был отправлен пакет.
Порт получателя
Номер порта, которому отправлен пакет.
Порядковый номер
Порядковый номер первого октета данных в сегменте.
Номер для подтверждения (АСК)
При установленном бите АСК это поле содержит следующий порядковый
номер, который ожидает получить отправитель сегмента в подтверждение того,
что все предыдущие порядковые номера были переданы успешно. После
установления связи это значение передается всегда.
Смещение
Смещение начала данных (длина заголовка).
Зарезервировано
Поле зарезервировано и не используется, но должно быть обнулено.
Управляющие биты
Список управляющих битов приведен в следующей таблице.
U (URG) Указатель срочности содержит значимые данные
А (АСК) Номер для подтверждения содержит значимые данные
Р (PSH) Функция немедленной доставки
R (RST) Сброс соединения
S (SYN) Синхронизация порядковых номеров
F (FIN) Конец данных
Окно
Количество октетов данных (начиная с указанного в поле АСК), которые могут
быть отправлены без подтверждения успешного приема ранее переданных данных.
Контрольная сумма
16-разрядное дополнение суммы всех 16-разрядных слов заголовка и текста.
Если сегмент содержит нечетное число октетов, последний октет дополняется
нулями для формирования 16-разрядного слова, используемого при вычислении
контрольной суммы. Обратите внимание: заполнители не пересылаются вместе
с сегментом.
Указатель срочности
Управляющее поле, содержимое которого имеет смысл лишь при установленном
бите URG. Указатель срочности обозначает октет данных, связанный со
срочным вызовом отправителя.
Параметры
В конце заголовка могут пересылаться дополнительные параметры. Длина каждого
параметра должна быть кратна 8 битам. Существует два формата параметров:
О Тип параметра (один октет).
О Тип параметра (один октет), длина параметра (один октет) и собственно
данные параметра.
В поле длины параметра учитываются все три поля (то есть тип, длина и
данные). В поле данных содержится вся информация, пересылаемая в качестве
значения параметра. В табл. 3.1 приведены значения полей для трех основных типов
параметров. Параметры учитываются при вычислении контрольной суммы
заголовка IP. Длина списка параметров может быть меньше указанной в поле
смещения, в этом случае оставшаяся часть заголовка после параметра с типом О
заполняется нулями.
Таблица 3.1. Формат параметров
Тип Длина Описание
0 - Конец списка параметров
1 - Нет операции
2 4 Максимальный размер сегмента
Параметр типа 0 обозначает конец всего списка параметров (а не каждого
параметра по отдельности!). Его присутствие обязательно только в том случае,
если список параметров завершается раньше конца заголовка.
Параметр типа 1 предназначен для выравнивания следующего параметра по
границе слова. Никакой полезной информации он не несет.
Параметр типа 2 определяет максимальный размер принимаемых сегментов.
Если параметр не указан, размер сегмента не ограничивается.
IP
Протокол IP управляет доставкой пакетов между серверами и клиентами.
Заголовок IP имеет следующую структуру.
4 бит 8 бит 16 бит 32 бит
Версия Длина ^nlU'iL Общая длина
г заголовка службы -* «-
... ^ Смещение
Индетификатор Флаги фрагмента
СР°К Протокол Контрольная сумма
жизни
Адрес отправителя
Адрес получателя
Параметры и заполнители
Каждое поле содержит информацию о передаваемом пакете IP. Смысл полей
заголовка поясняется ниже.
Версия
Номер версии IP, используемой данным пакетом. В настоящее время повсеместно
используется протокол IP версии 4 (IPv4).
Длина заголовка
Общая длина заголовка. По содержимому этого поля получатель определяет,
когда нужно прекратить чтение заголовка и перейти к чтению данных.
Тип службы (сервиса)
Это редко используемое поле содержит ряд параметров, включая числовой
приоритет пакета. Более высокие значения указывают на необходимость
первоочередной обработки.
Общая длина
Общая длина пакета в октетах. Значение не может превышать 65 535; в
противном случае получатель считает, что содержимое пакета испорчено.
Идентификатор
Идентификатор, назначаемый отправителем для сборки пакета из фрагментов.
Флаги
Первый бит зарезервирован и игнорируется. При установленном флаге DF (Do
Not Fragment) пакет ни при каких условиях не должен фрагментироваться.
Установленный флаг MF (More Fragments) означает наличие других
фрагментов, а в последнем фрагменте этот флаг равен нулю.
Смещение фрагмента
При установленном флаге MF поле определяет позицию текущего фрагмента
в исходном пакете.
Срок жизни
Максимальная продолжительность пересылки пакета. Обычно срок жизни
составляет от 15 до 30 секунд. Если пакет будет отвергнут или потерян при
пересылке, отправитель оповещается об утрате и получает возможность отправить
пакет заново.
Протокол
Числовое обозначение протокола, который должен использоваться при
обработке пакета.
Контрольная сумма
Контрольная сумма, используемая для проверки целостности заголовка.
Адрес отправителя
Адрес хоста, отправившего пакет.
Адрес получателя
Адрес хоста, которому предназначен пакет.
Параметры и заполнители
Поле параметров не является обязательным. Если оно используется, в
параметрах передается информация об использовании защиты, жесткой или свободной
маршрутизации, отслеживания маршрута и временной пометки. Формат
поддерживаемых параметров описан в табл. 3.2. Заполнители обеспечивают
выравнивание конца заголовка по границе двойного слова.
Таблица 3.2. Формат параметров
Класс Номер Описание
О 9 Конец списка параметров
О 2 Защита данных по стандартам Министерства обороны
О 3 Свободная маршрутизация
О 7 Отслеживание маршрута
О 9 Маршрутизация только через заданные узлы
2 4 Временная пометка
Услуги протокола TCP/IP предоставляются через «стек» промежуточных
уровней. Поскольку TCP и IP — это два разных протокола, им нужна общая
среда для выполнения промежуточных преобразований. Как упоминалось ранее
в этой главе, в отличие от семиуровневой модели OSI стек TCP/IP состоит всего
из четырех уровней:
О Прикладной уровень.
О Транспортный уровень.
О Сетевой уровень.
О Канальный уровень.
Ниже кратко описаны основные задачи каждого уровня.
Прикладной уровень
Прикладной уровень объединяет несколько задач, разделенных в иерархии OSI
на три уровня. Все эти задачи (аутентификация, обработка и сжатие данных)
относятся к работе конечного пользователя. Именно на этом уровне
устанавливается связь в почтовых клиентах, браузерах, клиентах Telnet и другие
интернет-приложениях.
Транспортный уровень
Стоит еще раз напомнить, что в отличие от OSI этот уровень не отвечает за
гарантированную доставку пакетов. Его основной задачей является управление
передачей пакетов между отправителем и получателем. Модель OSI гарантирует
проверку пакетов и в случае нарушения их целостности — их повторный запрос
у отправителя.
Сетевой уровень
Сетевой уровень занимается исключительно управлением маршрутизацией
пакетов. На этом уровне принимаются решения о том, куда следует отправить
пакет на основании полученной информации.
Канальный уровень
Канальный уровень управляет сетевыми соединениями и обеспечивает пакетный
ввод/вывод на уровне сети, но не на уровне приложения.
Теперь, когда вы достаточно хорошо представляете, что такое TCP/IP и что
он может, мы переходим к следующей, более осязаемой теме — возможностям,
которые перед вами открывает TCP/IP.
Telnet
Термин «Telnet» (сокращение от «TELecommunications NETwork») обычно
используется для обозначения как приложения, так и самого протокола, что
наделяет его двойным смыслом. Telnet предоставляет в распоряжение пользователя
средства для удаленного входа и прямого выполнения терминальных операций
по сети. Иначе говоря, Telnet обеспечивает прямой доступ к удаленному
компьютеру. Telnet работает на порте 23.
На хосте должен работать сервер Telnet, ожидающий аутентифицированного
удаленного входа. В Windows 9x/NT/2000, BeOS, Linux и других операционных
системах на платформе х86 необходимо установить отдельный сервер Telnet,
настроить его и запустить на прием входящих запросов. Системы на базе MacOS
также требуют отдельного сервера Telnet. Только в системах семейства Unix
имеется собственный сервер Telnet, который обычно называется telnetd (буква
«d» означает «daemon», то есть «демон» — так называется серверное
приложение, работающее в фоновом режиме). На другом конце соединения работает
приложение Telnet, обеспечивающее текстовый или графический интерфейс
для пользовательского сеанса.
ПРИМЕЧАНИЕ
Вообще говоря, в Windows 2000 имеется встроенный сервер Telnet, который вызывается по ссылке
или вводом команды telnet в консоли. Таким образом, в Windows 2000 устанавливать внешний
сервер Telnet не нужно.
FTP
В отличие от протокола Telnet, позволяющего работать на удаленном хосте,
протокол FTP играет более пассивную роль и предназначается для приема и
отправки файлов на удаленный сервер. Такая возможность идеально подходит
для web-мастеров и вообще для всех, кому потребуется пересылать большие
файлы с одного компьютера на другой без прямого подключения. FTP
обычно используется в так называемом «пассивном» режиме, при котором клиент
загружает данные о дереве каталогов и отключается, но периодически
сигнализирует серверу о необходимости сохранять открытый порт.
ПРИМЕЧАНИЕ
Серверы FTP настраиваются по усмотрению web-мастера. Одни серверы предоставляют
анонимным пользователям доступ ко всем областям сервера без ограничений; другие ограничивают
доступ аутентифицированными пользователями; третьи ограничивают анонимный доступ очень
коротким тайм-аутом. Если пользователь не выполняет активных действий, сервер автоматически
разрывает соединение. Если пользователь пожелает продолжить работу на сервере, ему придется
подключиться заново.
В системах семейства Unix поддержка FTP обычно обеспечивается
программами ftpd (буква «d», как и в предыдущем случае, означает «демон») и ftp
(клиентское приложение). По умолчанию протокол FTP работает на портах 20
(пересылка данных) и 21 (пересылка команд). FTP отличается от всех остальных
протоколов TCP/IP тем, что команды могут передаваться одновременно с
передачей данных в реальном времени; у других протоколов подобная возможность
отсутствует.
Клиенты и серверы FTP в той или иной форме существуют во всех
операционных системах. Приложения FTP на базе MacOS имеют графический
интерфейс, как и большинство приложений для системы Windows. Преимущество
графических клиентов FTP заключается в том, что команды, обычно вводимые
вручную, теперь автоматически генерируются клиентом, что снижает
вероятность ошибок, упрощает и ускоряет работу. С другой стороны, серверы FTP
после первоначальной настройки не требуют дополнительного внимания, поэтому
графический интерфейс для них оказывается лишним.
TFTP
Название протокола TFTP (Trivial FTP) выбрано весьма удачно. TFTP является
«бедным родственником» FTP и поддерживает лишь малое подмножество его
функций. Он работает на базе протокола UDP, который в продолжение нашего
сравнения можно назвать «бедным родственником» TCP. TFTP не следить за
доставкой пакетов и практически не обладает средствами обработки ошибок.
С другой стороны, эти ограничения снижают непроизводительные затраты при
пересылке. TFTP не выполняет аутентификации; он просто устанавливает
соединение. В качестве защитной меры TFTP позволяет перемещать только
общедоступные файлы.
Применение TFTP создает серьезную угрозу для безопасности системы.
По этой причине TFTP обычно используется во встроенных приложениях, для
копирования конфигурационных файлов при настройке маршрутизатора, при
необходимости жесткой экономии ресурсов, а также в тех случаях, когда
безопасность обеспечивается другими средствами. Протокол TFTP также
используется в сетевых конфигурациях, в которых загрузка компьютеров производится
с удаленного сервера, а протокол TFTP может быть легко записан в ПЗУ сетевых
адаптеров.
SMTP
Протокол SMTP (Simple Mail Transfer Protocol) является фактическим
стандартом пересылки электронной почты в сетях, особенно в Интернете. Во всех
операционных системах имеются почтовые клиенты с поддержкой SMTP, а
большинство поставщиков услуг Интернета (если не все) использует SMTP для
работы с исходящей почтой. Серверы SMTP существуют для всех
операционных систем, включая Windows 9x/NT/2K, MacOS, семейство Unix, Linux, BeOS
и даже AmigaOS.
Протокол SMTP проектировался для транспортировки сообщений
электронной почты в разных сетевых средах. В сущности, SMTP не следит за тем, как
перемещается сообщение, а лишь за тем, чтобы оно было доставлено к месту
назначения.
SMTP обладает мощными средствами обработки почты, обеспечивающими
автоматическую маршрутизацию по определенным критериям. В частности,
SMTP может оповестить отправителя о том, что адрес не существует, и вернуть
ему сообщение, если почта остается недоставленной в течение определенного
периода времени (задаваемого системным администратором сервера, с которого
отправляется сообщение). SMTP использует порт TCP с номером 25.
NFS
Файловая система NFS (Network File System) создавалась компанией Sun
Microsystems, Inc. для решения проблем в сетях с несколькими операционными
системами. NFS поддерживает только совместный доступ к файлам и является
компонентом многих операционных систем семейства Unix. Кроме того, NFS
хорошо поддерживается большинством других операционных систем.
В NFS версий 1 и 2 в качестве основного транспортного протокола
использовался протокол UDP. Поскольку UDP не обеспечивает гарантированной
доставки, для ненадежных каналов эта задача должна решаться на уровне NFS, а не
на уровне протокола. Из-за этого в некоторых ранних реализациях NFS
существовали проблемы с порчей содержимого файлов.
Начиная с NFS версии 3, в качестве транспортного протокола может
использоваться TCP. Впрочем, появившаяся в NFS 3 поддержка TCP не
оптимизирована. При использовании TCP в качестве транспортного протокола NFS может
использовать надежность TCP для повышения качества доставки по ненадеж-
ным каналам. Соответственно, NFS версии 3 лучше работает в глобальных сетях
и в Интернете.
ПРИМЕЧАНИЕ
Был предложен стандарт NFS версии 4, но в большинстве коммерческих реализаций используется
NFS версий 2 и 3.
«Чистая» реализация NFS не может предотвратить одновременную запись
в файл со стороны нескольких пользователей, что легко приводит к порче
данных, если пользователи не знают о параллельном выполнении операций с файлом.
Тем не менее механизм блокировки файлов, реализованный протоколом NLM
(Network Lock Manager), может использоваться в сочетании с NFS для
организации совместного чтения и записи в файл.
Механизм доступа к файлам через NFS прямолинеен и прозрачен. После
монтирования том NFS становится частью системы конечного пользователя.
Никаких дополнительных шагов не требуется — естественно, не считая
процесса экспортирования, необходимого для синхронизации конфигурации NFS
на сервере и у клиентов. Впрочем, простота этой системы и удобство ее
администрирования оставляют желать лучшего.
SNMP
Протокол SNMP (Simple Network Management Protocol) реализует простые
средства сбора данных о работе маршрутизатора и управления им с
использованием различных протоколов — таких, как UDP, IPX и IP. При любом
обсуждении SNMP важно помнить, что первая буква в названии протокола означает
«Simple», то есть «простой». Действительно, SNMP — само воплощение
простоты. Во-первых, протокол поддерживает только четыре команды — GET,
GETNEXT, SET и TRAP. Первые две команды предоставляют доступ к
информации, а третья позволяет осуществлять удаленное управление некоторыми
функциями маршрутизаторов. Команда TRAP включает режим получения от
устройства информации о проблемах или происходящих событиях.
Сетевые устройства передают информацию о себе через базу управляющей
информации MIB (Management Information Base). Эти данные, описывающие
устройство, передаются станции управления SNMP (SNMP Management Station),
которая поочередно идентифицирует каждое устройство и сохраняет
информацию о нем. Станция управляет всеми SNMP-совместимыми устройствами.
Для каждого устройства запускается агент SNMP, представляющий клиентскую
сторону операций с устройствами. Когда станция управления запрашивает
информацию о порте командой GET, агент возвращает эту информацию.
Протокол SNMP не предназначен для управления всеми сетевыми
устройствами с возможностью точного описания операций. Это простой протокол для
повседневной работы, который позволяет получить нужную информацию без
загрузки 5—6 управляющих интерфейсов. Для отправки сообщений SNMP
использует транспортный протокол UDP.
Место TCP/IP в системе
Итак, теперь вы знаете, какие услуга предоставляет протокол TCP/IP, и
убедились в его гибкости и повсеместном распространении как промышленного
стандарта. TCP/IP используется в Интернете, поэтому в сетях на базе TCP/IP нет
очевидных ограничений на пропускную способность каналов или размер сети.
Вы знаете, какие факторы обусловили успех TCP/IP и какими достоинствами
обладает этот протокол.
Если вы работаете в сети на базе Windows или Unix, то с большой
вероятностью вы уже используете TCP/IP. В ранних версиях NetWare (таких, как
NetWare 2 и 3) используется протокол IPX/SPX. В NetWare 3 была добавлена
серверная поддержка TCP/IP и шлюз IPX-TCP/IP для подключения к
Интернету. В версии 4 появилась более качественная поддержка TCP/IP. NetWare
версий 5 и выше позволяет заменить IPX протоколом TCP/IP и обладает
полноценной поддержкой TCP/IP.
Также стоит рассмотреть возможность модернизации системы, использующей
AppleShare в сетях AppleTalk (версии менее 6.x). К AppleShare IP это не
относится, поскольку в этом серверном пакете протокол TCP/IP уже реализован,
однако в этом случае приходится учитывать фактор затрат. TCP/IP
предоставляет в ваше распоряжение широкий ассортимент возможностей, серверов, служб,
клиентов и т. д. бесплатно или за минимальные деньги.
На установку интрасети TCP/IP можно потратить огромную сумму, но того
же эффекта можно добиться и при гораздо меньших затратах. Начните с выбора
серверной операционной системы — например, Linux. Система распространяется
бесплатно или почти бесплатно, если вы купите один из комплектов поставки.
Наибольшей популярностью пользуются поставки Red Hat, Debian, Mandrake
и Caldera. Система Linux остается бесплатной, но при покупке
перечисленных поставок вы также приобретаете обслуживание и поддержку, специальные
установочные программы и другие дополнения, не входящие в стандартную
поставку Linux.
ПРИМЕЧАНИЕ
Если вы не захотите тратить $60, RedHat Linux можно загрузить бесплатно с сайта, но загрузка
по модему займет очень много времени — поставка RedHat занимает более 160 Мбайт. Быстрее
и проще купить готовую поставку.
Также можно использовать существующую операционную систему, поскольку
для MacOS, Windows 9x/NT/2000/XP написано немало серверов. Одни
распространяются бесплатно, другие стоят от $30 до $2500 в зависимости от
функций, выполняемых продуктом, и типа лицензии. Заодно можно сменить
коммуникационное оборудование, но и того, что у вас есть, должно хватить —
конечно, если вы не собираетесь переходить с текстовых приложений на
графические приложения с трехмерной анимацией, работающие в круглосуточном
режиме.
Концепция интрасети
Преимущественное использование протокола TCP/IP в современных интрасетях
объясняется тремя факторами: затратами на реализацию, скоростью и
возможностью расширения. Реализация TCP/IP может обойтись минимальными
затратами. TCP/IP может работать параллельно со старыми протоколами (AppleTalk,
IPX и т. д.) вплоть до полного завершения перехода; TCP/IP работает быстро
и эффективно, с использованием надежных и проверенных протоколов;
наконец, благодаря удобному механизму пакетной коммутации этот протокол можно
в любой момент расширить.
Кроме того, ваша компания или сеть получит доступ к огромным ресурсам
Интернета. В наше время самым распространенным применением Интернета
является электронная почта, которая по популярности превосходит даже
просмотр web-страниц. Ежедневно в Интернете передаются миллиарды сообщений,
а миллионы интернет-терминалов предоставляют пользователям доступ к
ресурсам, опубликованным в Интернете.
Существует много способов подключения к Интернету, но в настоящее время
чаще всего используется модемное подключение, а в некоторых регионах — DSL
(Digital Subscriber Line) и кабельные модемы. Любой пользователь с аналоговым
модемом может связаться с модемом поставщика услуг Интернета и
подключиться к Интернету, далее остается лишь использовать нужные ресурсы. Самый
популярный протокол канального уровня для модемного подключения
называется РРР (Point-to-Point Protocol). Старый протокол SLIP (Serial Line Interface
Protocol) позволяет создать последовательное подключение к Интернету из
клиентской программы. Позднее протокол SLIP был доработан для сжатия заголовков
TCP/IP; это привело к появлению новой разновидности SLIP, которая
называлась CSLIP (Compressed SLIP). В наше время оба протокола, SLIP и CSLIP,
в основном были вытеснены РРР.
Итоги
Как было показано в этой главе, при пересылке пакета между компьютерами
необходимо учитывать очень много факторов. Вот почему протоколы TCP и IP
работают в столь тесном взаимодействии. Оба протокола выполняют важные
операции, обеспечивающие успешное функционирование Интернета. Также вы
узнали, что стек TCP/IP состоит из нескольких уровней и что каждый уровень
выполняет определенную функцию. Если одно из звеньев этой цепочки даст
сбой, вся работа протокола будет парализована. К счастью, такое происходит
очень редко. Именно из-за своей надежности протокол TCP/IP в той или иной
форме доступен во всех операционных системах.
При этом протокол TCP/IP обладает хорошими характеристиками
масштабируемости и мобильности. Во многих ситуациях, в которых уместно применение
TCP/IP, часто выясняется, что соответствующая поддержка уже существует.
Главное — проанализируйте все активные протоколы, используемые сетевым
объединением, и убедитесь в том, что переход на TCP/IP не приведет к непоправимым
последствиям для пользовательского доступа. В остальном все проще простого.
4 И мена и адреса
в сетях IP
Марк А. Спортак (Mark A. Sportack)
Необходимым условием межсетевого обмена является наличие эффективной
схемы адресации, которая должна соблюдаться всеми участниками. Существует
множество разновидностей схем адресации. Сетевые адреса всегда имеют
числовую форму, но могут выражаться в двоичной, десятичной и даже шестнадцате-
ричной системе счисления. Схема адресации может быть закрытой
(запатентованной) или открытой, чтобы ее могли реализовать все желающие. Кроме того,
она может обеспечивать высокий уровень масштабируемости или намеренно
ограничиваться небольшим сообществом пользователей.
В этой главе рассматривается схема адресации, реализованная в протоколе
IP (Internet Protocol). За последние 20 лет протокол IP прошел серьезный путь
развития, и вместе с ним развивалась схема адресации. В этой главе описана
эволюция схемы адресации IP, а также объясняются ее важнейшие концепции,
в том числе классификация IP-адресов, бесклассовые адреса междоменной
маршрутизации (CIDR), маски и адреса подсетей, а также маски подсетей
переменной длины.
Адресация в протоколе IP
Проблемная группа проектирования Интернета (IETF), занимающаяся развитием
Интернета и IP, решила использовать для идентификации сетей и хостов IP
числовые адреса, удобные для машинной обработки. Таким образом, каждой
сети в Интернете присваивается уникальный числовой идентификатор.
Администратор этой сети должен позаботиться о том, чтобы каждому хосту в сети
также был присвоен уникальный идентификатор.
В исходном варианте — IP версии 4 (IPv4) — используются 32-разрядные
двоичные адреса. IP-адреса обычно записываются в виде четырех десятичных
чисел, разделенных точками (так называемая десятичная запись с точечным
разделением). Каждый компонент IP-адреса представляется одним октетом, то
есть 8-разрядным двоичным числом. Двоичная запись удобна для машинной
обработки, но не для пользователей, поэтому сетевые адреса обычно
записываются в более понятной десятичной форме. По этой причине необходимо хорошо
понимать различия между десятичной и двоичной системами счисления,
поскольку на них базируется вся схема адресации IP. Преобразования между
двоичной и десятичной системами счисления рассматриваются в разделе
«Двоичная и десятичная запись».
Исходная 32-разрядная схема адресации IPv4 означает, что в Интернете
может существовать не более 4 294 967 296 возможных IP-адресов — когда-то
это число B в 32 степени) казалось немыслимо огромным. Неэкономное
расходование адресов (резервирование больших адресных блоков без их
фактического использования, использование классовых адресов и неправильных
масок подсетей и т. д.) оказалось слишком расточительным. Возникла нехватка
адресов. Многие случаи неэкономного расходования, а также меры по
исправлению ситуации станут более понятными после знакомства со схемой
адресации IPv4.
ПРИМЕЧАНИЕ
Работа над новой версией IP близится к завершению. Новая версия, IPv6, использует
принципиально иную схему адресации и шестнадцатеричное представление компонентов, разделяемых
двоеточиями. В IPv6 длина адресов равна 128 байтам, а новая система классификации повышает
эффективность их использования. Учитывая, что на широкое распространение новой версии IP
потребуется несколько лет, в этой книге все примеры приводятся в схеме адресации IPv4.
Дополнительная информация о IPv6 приводится в главе 12.
Двоичная и десятичная запись
В двоичной системе счисления значение, представляемое единичным битом,
зависит от ее положения в числе. В этом отношении она похожа на
общепринятую десятичную систему, в которой крайняя правая цифра определяет
количество единиц в числе, вторая цифра справа — количество десятков, третья —
количество сотен и т. д. По своей значимости каждая цифра в 10 раз превышает
цифру, находящуюся справа от нее.
Но если в десятичной системе используются десять цифр, представляющих
разные значения разрядов (от 0 до 9), то в двоичной системе существует всего
две цифры: 0 и 1. Значение, представляемое этими цифрами, также зависит
от их позиции в числе. Крайняя правая позиция числа представляет значение 1
(в десятичном эквиваленте). Вторая цифра справа представляет значение 2,
третья — 4, четвертая — 8 и т. д. Значимость каждой позиции вдвое превышает
значимость позиции, находящейся справа.
Десятичное представление двоичного числа вычисляется суммированием
десятичных эквивалентов по всем разрядам, содержащим единицы. С
математической точки зрения максимальное значение каждого из четырех октетов адреса
IPv4 в десятичной системе равно 255. Двоичный эквивалент десятичного числа
255 состоит из 8 разрядов, заполненных единицами. Связь между двоичным
и десятичным представлением числа продемонстрирована в табл. 4.1.
Таблица 4.1. Двоичное A1111111) и десятичное B55) представление октетов
8 7 65 4321
Двоичная цифра 1 1 111111
Десятичное значение цифры 128 64 32 16 8 4 2 1
Как видно из таблицы, все биты двоичного адреса заполнены единицами,
поэтому десятичное представление двоичного числа определяется суммированием
десятичных значений, соответствующих восьми столбцам: 128+64+32+16+8+
+4+2+1 = 255.
В табл. 4.2 представлен другой пример преобразования из двоичной системы
в десятичную. На этот раз пятый разряд справа равен нулю, эта позиция
соответствует десятичному значению 16. Следовательно, полученное двоичное число
будет на 16 меньше 255: 128+64+32+8+4+2+1 = 255.
Таблица 4.2. Двоичное A1101111) и десятичное B39) представление октетов
8 7 65 4321
Двоичная цифра 11 101111
Десятичное значение цифры 128 64 32 16 8 4 2 1
Понимание многих аспектов схемы адресации IP, в том числе масок
подсетей, VLSM и CIDR, требует перехода от десятичной системы к двоичной.
Следовательно, для изучения различных вариантов адресации в сетях IP необходимо
хорошо разбираться в этих системах счисления.
Форматы адресов IPv4
Протокол IP был стандартизирован в сентябре 1981 года. В его схеме адресации
учитывалось текущее состояние дел в области информационных технологий, но
ее постарались по возможности ориентировать на будущее развитие. Базовый
IP-адрес представлял собой 32-разрядное двоичное число, разбитое на четыре
октета (8-разрядных двоичных числа).
Для удобства двоичные адреса обычно преобразуются в более знакомую
десятичную систему. Каждый из четырех октетов IP-адреса представляется
десятичным числом от 0 до 255, которые при записи разделяются точками
(десятичная запись с точечным разделением). Таким образом, наименьший адрес,
который может быть представлен в схеме IPv4, равен 0.0.0.0, а наибольший адрес
равен 255.255.255.255. Тем не менее оба эти значения зарезервированы и не
могут назначаться конечным системам. Причины становятся понятны лишь
после знакомства с особенностями реализации структуры этого базового адреса
в протоколе.
Адреса IPv4 делятся на классы в соответствии с размером сети (крупная,
средняя или мелкая). Классы различаются по количеству бит, выделенных для
идентификации сети и хоста. Существует пять классов IP-адресов,
обозначаемых одной буквой алфавита:
О Класс А.
О Класс В.
О Класс С.
О Класс D.
О Класс Е.
IP-адрес состоит из двух частей: идентификатора сети и идентификатора
хоста. Пять классов представляют разные степени компромисса между
количеством сетей и хостов, описываемых этими идентификаторами.
Класс А
Адреса IPv4 класса А предназначены для поддержки очень больших сетей.
Поскольку на момент стандартизации потребность в крупномасштабных сетях
считалась минимальной, структура этих адресов увеличивала до максимума
количество возможных адресов хостов, но существенно ограничивала количество
возможных сетей класса А.
В IP-адресах класса А для определения сети используется только первый октет.
Три оставшихся октета определяют хост. Первый бит адреса класса А всегда
равен 0, поэтому допустимые значения идентификаторов сетей класса А могут
лежать в интервале от 0 до 127 F4+32+16+8+4+2+1 — из суммы исключается
крайний левый разряд, представляющий число 128). Следовательно, в этой схеме
адресации возможно существование не более 127 сетей IP класса А.
Последние 24 бита (то есть три десятичных числа, разделенных точками)
в классе А представляют идентификатор хоста. Таким образом, IP-адреса класса А
лежат в интервале от 1.0.0.0 до 126.255.255.255.
Обратите внимание: идентификатор сети хранится только в первом октете,
а остальные три октета определяют уникальный идентификатор хоста в границах
сети. При определении адресных интервалов они обычно заполняются нулями.
ПРИМЕЧАНИЕ
С технической точки зрения адрес 127.0.0.0 также является адресом сети класса А, но он
зарезервирован для целей тестирования с обратной связью и не может быть присвоен конкретной сети.
Оглядываясь назад, следует признать это решение неудачным, поскольку оно исключает из
использования целую сеть класса А с огромным количеством IP-адресов.
Каждая сеть класса А может поддерживать до 16 777 214 уникальных хостов.
Эта величина была получена возведением 2 в 24 степень с последующим
вычитанием 2. Вычитание необходимо из-за того, что в IP адрес, состоящий из одних
нулей, используется для идентификации сети, а адрес из одних единиц — для
групповой рассылки в этой сети. Структура IP-адреса класса А с выделением
октетов, представляющих идентификаторы сети и хоста, представлена на
следующем рисунке.
Сеть Хост
Октет 12 3 4
ПРИМЕЧАНИЕ
Класс А обычно используется для очень больших сетей — таких, как исходная сеть ARPANET.
Большинство адресов класса А уже выделено, поэтому получить от InterNIC новый адрес сети класса А
очень трудно (если вообще возможно).
Класс В
Адреса класса В предназначены для поддержки средних и крупных сетей.
Допустимые адреса класса В лежат в интервале от 128.1.0.0 до 191.255.255.255.
Математическая логика, лежащая в основе адресации, довольно проста.
Первые два октета в IP-адресе класса В используются для представления
идентификатора сети, а два других октета содержат идентификатор хоста. Первые два
бита первого октета адреса класса В равны 10. Остальные шесть битов содержат
нули или единицы. На математическом уровне первый октет адреса класса В
должен быть меньше либо равен 191 (сумма 128+32+16+8+4+2+1).
Последние 16 бит B октета) определяют идентификатор хоста. Каждая сеть
класса В может содержать до 65 534 уникальных хостов. Эта величина была
получена возведением 2 в 16 степень с последующим вычитанием 2 (адреса,
зарезервированные IP для служебного использования). Данная схема позволяет
определить не более 16 382 сетей IP класса В.
Структура IP-адреса класса В представлена на следующем рисунке.
Сеть I Хост
Октет 12 3 4
ПРИМЕЧАНИЕ
Адреса класса В широко применяются в сетях средних размеров. Многие крупные организации
получили адреса класса В.
Классе
Адреса класса С предназначены для поддержки большого количества мелких
сетей. По своей структуре адреса этого класса противоположны адресам
класса А. Если в классе А сеть задается одним октетом, а остальные три октета
определяют хост, то в адресном пространстве класса С три октета используются для
идентификации сети, а хост задается всего одним октетом.
Первые три бита первого октета адреса класса С равны ПО, что соответствует
десятичному числу 192 A28+64). Таким образом, это число определяет нижнюю
границу адресного пространства класса С. Третий бит соответствует десятичному
числу 32. Равенство этого бита нулю определяет верхнюю границу адресного
пространства. После исключения третьего бита максимальное значение октета
остается равным 223, то есть 225-32. Таким образом, IP-адреса класса С лежат
в интервале от 192.0.0.0 до 223.255.255.255.
Последний октет используется для идентификации хоста. Теоретически
IP-адрес класса С способен поддерживать до 256 уникальных хостов (от 0 до 255), но
на практике остается всего 254 адреса, поскольку значения 0 и 255
зарезервированы. Максимальное количество сетей класса С равно 2 097 150.
ПРИМЕЧАНИЕ
В схеме адресации протокола IP идентификаторы хостов, все компоненты которых равны 0 или
255, зарезервированы. IP-адрес, у которого все биты идентификатора хоста равны 0, определяет
всю сеть. IP-адрес, у которого все биты адреса хоста равны 1, используется для групповой рассылки
по всем системам, входящим в заданную сеть.
Структура IP-адреса класса С представлена на следующем рисунке.
Сеть Хост
Октет 12 3 4
Класс D
Класс D создавался для поддержки групповой рассылки в сетях IP. Этот
механизм используется приложениями, построенными на основе активной рассылки
сообщений группам узлов. Групповой (multicast) адрес представляет собой
уникальный сетевой адрес, отправленные по которому пакеты направляются
заранее определенной группе IP-адресов. Таким образом, одна станция может
сгенерировать серию пакетов, которые будут маршрутизированы нескольким
получателям одновременно. Такой подход гораздо эффективнее, чем создание
отдельной серии пакетов для каждого получателя. Групповая рассылка в сетях IP
давно считается полезным средством из-за заметного снижения сетевого трафика.
Протокол IPv6 также использует групповую рассылку во многих аспектах своей
работы.
Адресное пространство класса D, как и остальные адресные пространства,
ограничено. Первые четыре бита адреса класса D должны быть равны 1110.
Установка первых трех бит первого октета означает, что адресное пространство
начинается с 128+64+32, то есть 224. Исключение четвертого бита означает,
что адреса класса D ограничиваются максимальным значением 128+64+32+8+
+4+2+1=239. Таким образом, IP-адреса класса D лежат в интервале от 224.0.0.0
до 239.255.255.255.
На первый взгляд этот интервал выглядит несколько странно, если учесть,
что верхняя граница задается всеми четырьмя октетами. В обычной
интерпретации это означало бы, что октеты, содержащие идентификаторы хоста и сети,
совместно определяют идентификатор сети. Однако для этого есть причины!
Адресное пространство класса D не используется для связи с отдельными
хостами или сетями.
Адреса класса D предназначены для доставки сообщений группе хостов с IP-
адресами в частных сетях. Следовательно, делить адрес на адреса сети и хоста
по октетам или битам нет смысла. Вместо этого все адресное пространство
используется для идентификации групп IP-адресов (классов А, В и С). В наши
дни предложено несколько новых схем, позволяющих выполнять групповую
рассылку в сетях IP без сложностей, связанных с использованием адресного
пространства класса D.
Структура IP-адреса класса D представлена на следующем рисунке.
Хост
Октет 12 3 4
Класс Е
Адреса класса Е были определены, но IETF зарезервировала их для
собственных исследований, поэтому в Интернете адреса класса Е не выделялись. Первые
четыре бита в адресе класса Е всегда содержат единицы; следовательно,
IP-адреса класса Е лежат в интервале от 240.0.0.0 до 255.255.255.255. Поскольку этот
класс был определен для исследовательских целей, а его использование
ограничивается рамками IETF, дальнейшее изучение этих адресов не обязательно.
Недостатки схемы адресации IPv4
В результате больших различий между количествами IP-адресов в классах
многие потенциальные адреса оставались неиспользованными. Для примера
рассмотрим компанию среднего размера, которой требуется 300 IP-адресов. Одной сети
касса С B54 адреса) недостаточно. В двух сетях класса С адресов более чем
достаточно, но это приводит к созданию двух отдельных сетей в компании и как
следствие — увеличению размеров таблиц маршрутизации в Интернете (для
каждого адресного пространства в таблице создается отдельная запись, даже
если они принадлежат одной организации).
Другой вариант: назначение сети класса В предоставляет все необходимые
адреса в одном домене, но при этом 65 234 адреса остаются неиспользуемыми.
Раньше адреса класса В слишком часто раздавались любым сетям, содержащим
более 254 хостов. Из-за этого адресное пространство класса В стало истощаться
быстрее, чем в других классах.
Возможно, наиболее расточительной практикой была раздача адресных
пространств по запросу. Любая организация, которой требовалось адресное
пространство, просто запрашивала его и заполняла анкету с указанием количества
сетей и хостов в сети. Никто не пытался проверять заявленные цифры, и
многие организации блокировали большие части адресного пространства IPv4
просто на случай, если в будущем возникнет какая-нибудь непредвиденная
потребность.
К счастью, сейчас эта проблема осталась в прошлом. Были разработаны
многочисленные расширения IP, специально предназначенные для повышения эффек-
тивности использования 32-разрядного адресного пространства. Самыми
важными являются следующие расширения:
О Маски подсетей.
О Маски подсетей переменной длины (VLSM, Variable Length Subnet Masks).
О CIDR.
Эти разные механизмы разрабатывались для решения разных проблем. Маски
подсетей фиксированной и переменной длины разрабатывались для того, чтобы
в одной физической сети, подключенной к Интернету, могли существовать
несколько логических сетей. Маски более подробно описаны ниже, в разделе «Маски
подсети переменной длины» этой главы.
Механизм CIDR (Classless InterDomain Routing) предназначался для того,
чтобы ликвидировать неэффективность исходной жесткой схемы разбиения
адресов на классы. Это позволило маршрутизаторам объединять несколько
разных сетевых адресов в одну запись таблицы маршрутизации.
Учтите, что эти два механизма не являются взаимоисключающими; они
могут и должны использоваться вместе.
ПРИМЕЧАНИЕ
Стабильная работа Интернета напрямую зависит от уникальности сетевых адресов, находящихся
в широком использовании. Следовательно, был необходим механизм, который бы гарантировал
эту уникальность. На первых порах ответственность за проверку была возложена на организацию
InterNIC (Internet Network Information Center). Затем эта организация прекратила существование,
а ее обязанности были переданы IANA. Потом агентство IANA также было ликвидировано, и новым
хранителем имен и адресов Интернета стала Корпорация по выделению имен и параметров
протоколов Интернета (ICANN). В настоящее время ICANN создает структуру конкурентной регистрации,
которая позволит коммерческим организациям конкурировать друг с другом за имена и адреса IP.
При этом очень важно проследить за тем, чтобы не происходило дублирование адресов массового
пользования. Дублирование нарушит нормальную работу Интернета и помешает доставке пакетов
по повторяющимся адресам.
Хотя сетевой администратор может произвольно выбрать незарегистрированный IP-адрес,
поступать подобным образом не рекомендуется. Нормальный доступ к хостам с фиктивными
IP-адресами будет возможен только в пределах сети, к которой принадлежат эти хосты. Подключение
к Интернету сетей, содержащих фиктивные адреса, создает потенциальную опасность конфликтов
с организациями, которым это адресное пространство принадлежит по праву. Дублирование
адресов создает проблемы с маршрутизацией и мешает доставке пакетов в правильную сеть.
При наличии брандмауэра в частных сетях могут использоваться дублирующиеся адреса, поскольку
в результате преобразования вместо адресов частной сети подставляется адрес открытого
интерфейса брандмауэра. В этом случае адрес частной сети может иметь дубликат в Интернете.
Некоторые адреса — а точнее, один адрес класса А A0.0.0.0), 16 адресов класса В A72.16.0.0- 172.31.0.0)
и 256 адресов класса С A92.168.0.0-192.168.255.0) — зарезервированы для закрытого
использования в частных сетях.
Специальные IP-адреса
В схеме адресации IP определено несколько специальных адресов. В RFC 1700
приводится специальная запись для представления специальных IP-адресов:
IP-адрес ::= { <идентификатор-сети>, <идентификатор-хоста> }
В этой записи IP-адрес определяется парой чисел: идентификатором сети
и идентификатором хоста.
Значение «-1» означает, что поле заполнено единицами, а значение «О»
указывает на то, что поле заполнено нулями.
Определены следующие специальные IP-адреса:
О { < идентификатор-сети >, 0 }
О { < идентификатор-сети>, -1 >
О { -1, -1 }
О { 0, 0 }
О { 0, <идентификатор-хоста > }
О { 127, < произвольно }
Адреса, в которых поле <идентификатор-хоста> заполнено только нулями или
единицами, не могут использоваться в качестве самостоятельных IP-адресов.
Следовательно, если номер хоста состоит из N бит, для назначения в сети
свободно только 2N - 2 IP-адресов.
Специальные адреса рассматриваются в нескольких ближайших подразделах.
Кроме специальных адресов, перечисленных выше, специальные адреса также
применяются при широковещательной рассылке в подсетях. В этой вводной главе,
содержащей общие сведения об адресации IP, подсети не рассматриваются.
Адресация сети
Хосту TCP/IP не может быть присвоен идентификатор, состоящий из одних
нулей. IP-адреса с нулевым идентификатором хоста обозначают всю сеть.
Специальные адреса этой категории обозначаются записью
{ <идентификатор-сети>, 0 }
Возьмем IP-адрес 137.53.0.0, принадлежащий сети класса В. Как говорилось
выше, в сетях класса В поле <идентификатор-сети> занимает 16 бит B байта, или
первые два десятичных числа в десятичной записи с точечным разделением),
а <идентификатор-хоста> — оставшиеся 16 бит адреса. Следовательно,
специальный адрес 137.53.0.0 определяет всю сеть класса В 137.53.
В адресах класса В 137.53.0.0 и 141.85.0.0 идентификатор хоста равен «0.0».
Таким образом, эти адреса определяют все узлы, входящие в сеть. Адреса {
<идентификатор-сети >, 0 } не могут использоваться в качестве адресов отправителя
или получателя.
Направленная широковещательная рассылка
Идентификатор хоста, заполненный единицами, является признаком адреса
направленной широковещательной рассылки. Такие адреса могут указываться в
дейтаграммах IP как адреса получателя, но ни при каких условиях — как адреса
отправителя. Этот специальный адрес обозначается записью
{ <идентификатор-сети>, -1 }
Адрес направленной широковещательной рассылки описывает все узлы,
входящие в заданную сеть. Таким образом, для сети 137.53 адрес
широковещательной рассылки имеет вид 137.53.255.255. Сеть 137.53 относится к классу В, поле
<идентификатор-хоста> в этом классе занимает 16 бит B байта, или два
последних десятичных числа в десятичной записи с точечным разделением). Если все
16 бит поля < идентификатор-хоста> заполняются единицами, результат
соответствует десятичному значению 255.255.
В примере с сетью 137.53 сетевое оборудование обеспечивает эффективное
выполнение рассылки на аппаратном уровне. В других сетях (например, типа
«точка-точка») эффективная аппаратная поддержка рассылки отсутствует. В этом
случае рассылка реализуется на уровне программных средств IP за счет
дублирования дейтаграммы IP по всем возможным получателям.
Данные направленной рассылки отправляются в сеть, заданную полем <иден-
тификатор-сети>. Если настройка маршрутизаторов разрешает пропускать
направленную рассылку, дейтаграмма IP передается последнему маршрутизатору,
подключенному к итоговой сети с заданным идентификатором. Маршрутизатор
обязан разослать дейтаграмму IP всем узлам сети. Если в итоговой сети
предусмотрена соответствующая аппаратная поддержка, она задействуется для
рассылки дейтаграммы IP.
Если рассылка в других сетях запрещена, маршрутизатор можно настроить
так, чтобы он не пропускал направленную рассылку.
Ограниченная рассылка
Адрес 255.255.255.255 представляет рассылку другого типа — так называемую
ограниченную, или локальную рассылку. Специальный адрес определяется записью
{ -1. -1 }
Ограниченная рассылка может применяться в локальных сетях, когда
рассылаемые дейтаграммы не выходят за пределы маршрутизатора.
При направленной рассылке отправитель должен задать идентификатор сети.
Если рассылка выполняется внутри локальной сети, можно воспользоваться
ограниченной рассылкой, для которой знать идентификатор не обязательно.
Адрес ограниченной рассылки никогда не может указываться как IP-адрес
отправителя; допускается только его использование вместо адреса получателя.
Нулевой IP-адрес
Нулевой IP-адрес представляет собой специальный адрес вида
{ 0. 0 }
Идентификатор сети равен нулю, что соответствует текущей сети. Нулевой
идентификатор хоста представляет текущий хост. Обычно этот специальный
адрес используется тогда, когда узел IP пытается определить собственный
IP-адрес. Например, узлы сети могут использовать протокол ВООТР для назначения
IP-адреса с центрального сервера ВООТР.
При отправке исходного запроса серверу ВООТР узел IP еще не знает свой
IP-адрес и поэтому указывает в адресе отправителя нулевые идентификаторы
узла и хоста. После того как узел узнает свой IP-адрес, он перестает
использовать адрес 0.0.0.0.
Адрес 0.0.0.0 также используется в таблицах маршрутизации для
обозначения IP-адреса маршрутизатора по умолчанию (часто называемого основным
шлюзом).
IP-адрес 0.0.0.0 может использоваться только как отправитель и никогда
не указывается в качестве получателя. Учтите, что в некоторых устаревших
системах адрес, состоящий из одних нулей, используется для локальной
рассылки.
IP-адрес хоста в текущей сети
Если идентификатор сети равен нулю, а идентификатор-хоста отличен от нуля,
адрес относится к заданному хосту в текущей сети.
{ 0, <идентификатор-хоста> }
Если узел сети получает пакет, у которого в IP-адресе получателя
идентификатор сети равен нулю, а идентификатор хоста совпадает с его собственным
идентификатором хоста, узел принимает этот пакет. В этом случае нулевой
идентификатор сети интерпретируется как признак текущей сети.
Обратная связь
Идентификатор сети 127 зарезервирован для адресов обратной связи. Адресом
обратной связи называется специальный адрес вида
{ 127, <произвольно> }
Любой пакет, отправленный приложением TCP/IP по адресу 127.ХХ.Х, где
X — число от 0 до 255, не достигает передающей среды и возвращается
приложению. Пакет копируется из буфера передачи в буфер приема на том же
компьютере, поэтому IP-адрес 127.ХХХ называется адресом обратной связи. Адрес
обратной связи позволяет быстро проверить правильность конфигурации
программных средств TCP/IP. Например, при помощи утилиты ping можно убедиться
в том, что программы уровня IP работают на некотором базовом уровне. Утилита
ping посылает эхо-пакет ICMP по заданному IP-адресу (в данном случае — по
адресу обратной связи). Уровень IP поэтому отвечает на входящий эхо-пакет
и отправляет ответный пакет ICMP.
Обратная связь бывает полезной и в других ситуациях — например, когда
клиент работает на одном компьютере со службой TCP/IP. В этом случае к службе
можно обратиться по адресу обратной связи. Например, типичные команды для
подключения к серверу Telnet или FTP, находящемся на одном компьютере с
клиентом, выглядят так:
telnet 127.0.0.1
ftp 127.0.0.1
Исключение в схеме адресации IP
Выше упоминалось о том, что идентификатор хоста, состоящий из одних
единиц, используется для широковещательной рассылки. Важным исключением
из этого правила составляют программные средства TCP/IP, произошедшие от
BSD 4.2. Многие коммерческие реализации создавались на базе BSD 4.2. При
использовании очень старых программ TCP/IP вы можете столкнуться с этим
исключением.
В BSD Unix для задания адреса широковещательной рассылки
идентификатор хоста заполнялся нулями. На момент написания BSD 4.2 в документах RFC
недостаточно четко определялись правила широковещательной адресации.
Недостаток был исправлен в более поздних RFC, где было сказано, что в адресах
широковещательной рассылки идентификатор хоста должен заполняться
единицами. Версия BSD 4.3 была модифицирована в соответствии с RFC. Программы,
написанные для BSD 4.2 и не исправленные впоследствии, могут использовать
схему с нулями. Если хосты, использующие нули в широковещательных
адресах, находятся в одной физической сети с хостами, использующими единицы,
механизм широковещательной рассылки может работать не так, как ожидается,
что приведет к ошибкам в работе приложений TCP/IP в этой сети.
Появление подсетей
Первоначально в Интернете использовалась двухуровневая иерархия, а адреса
состояли только из идентификаторов сети и хоста. На рис. 4.1 изображена
небольшая и простая двухуровневая сеть. Подобная иерархия предполагает, что
в каждом подразделении работает только одна сеть. Следовательно, для каждого
подразделения достаточно одного подключения к Интернету. На первых порах
эти предположения были вполне реальными, но постепенно сети развивались
и расширялись. В 1985 году уже нельзя было с уверенностью предполагать, что
организация использует только одну сеть или будет довольствоваться одним
подключением к Интернету.
По мере появления подразделений с несколькими сетями появилась очевидная
необходимость в механизме, который бы различал логические сети, создаваемые
в подразделениях второго уровня Интернета. Отсутствие такого механизма делало
невозможной эффективную маршрутизацию данных в подразделениях с
несколькими сетями. Ситуация продемонстрирована на рис. 4.2.
Одно из возможных решений заключалось в предоставлении каждой
логической сети (или подсети) отдельного диапазона IP-адресов. Такое решение
работает, но оно привело бы к чрезвычайно неэффективному использованию
адресного пространства IP. По прошествии некоторого времени все
нераспределенные адреса IP были бы полностью исчерпаны. Еще быстрее проявилось бы
другое последствие — увеличение объема таблиц на маршрутизаторах Интернета,
поскольку каждой сети потребовалась бы отдельная запись в таблице
маршрутизации. Очевидно, приходилось искать более удачное решение.
Маршрутизатор А. 1 Маршрутизатор В. 1
ВЯвЯЯ ИВВЯН ИшиВД ПЯ85И
ifiitiri I.! Щш А I' ЮЙ "I
„ ,-,.,L Ш1 Ш л^л
Сервер А.2 Сервер А.З Сервер В.2 Сервер В.З
Рис. 4.1. Первоначальная двухуровневая иерархия Интернета
Было решено произвести иерархическую группировку логических сетей и
организовать маршрутизацию между ними. С точки зрения Интернета
подразделение с несколькими логическими сетями интерпретируется как одна сеть, а
следовательно, использует единый диапазон IP-адресов. Тем не менее каждой сети
требовался свой уникальный диапазон адресов.
Подсети
В середине 1980-х годов были выпущены RFC 917 и 950. В этих документах
предлагалось решение постоянно нарастающих проблем, обусловленных
относительно плоской, двухуровневой иерархией IP-адресов. Таким решением стали
подсети (subnets). Концепция подсети была основана на необходимости третьего
уровня в иерархии Интернета. По мере развития межсетевые технологии
становились все более распространенными и использовались все чаще. В результате
наличие нескольких сетей в средних и крупных организациях стало обычным
явлением. Часто эти сети были локальными. Каждая локальная сеть может
интерпретироваться как подсеть.
В таких многосетевых средах каждая подсеть подключалась к Интернету
через общую точку — маршрутизатор. Подробности строения сетевой среды для
Интернета были несущественными. Суть оставалась неизменной: имеется
некоторая частная сеть, обеспечивающая доставку своих дейтаграмм. Таким образом,
Интернету оставалось позаботиться лишь о том, как связаться со шлюзовым
маршрутизатором этой сети через Интернет. Внутри частной сети хостовая часть
IP-адреса проходила дополнительное деление для идентификации подсети.
Маршрутизатор А. 1 Маршрутизатор В. 1
!• ш\ • в • и; • ш\ • ш\
Сервер А.2 Сервер А.З Сервер В.2 Сервер В.З / Сервер С.4
( Token-ring j
crgfl \
Сервер С.2 = 1
Сервер С.З
Рис. 4.2. Нарушение двухуровневой иерархии Интернета в многосетевых подразделениях
Как сказано в RFC 950, сеть любого из трех классов (А, В, С) может делиться
на подсети. IP-адрес хоста в подсети в действительности состоит из трех
компонентов:
О Идентификатор сети.
О Идентификатор подсети.
О Идентификатор хоста.
Идентификаторы подсети и хоста содержатся в идентификаторе хоста
исходного IP-адреса. Таким образом, возможность создания подсетей напрямую
зависит от типа IP-адреса. Чем больше бит содержит хостовая часть IP-адреса, тем
больше подсетей и хостов можно создать. Тем не менее создание подсетей
уменьшает количество адресуемых хостов. Фактически вы забираете часть битов хос-
тового идентификатора для идентификации подсети. При этом используется
специальный псевдоадрес IP, называемый маской подсети.
Маска подсети представляет собой 32-разрядное двоичное число, которое
может выражаться в десятичной записи с точечным разделением. Маска сообщает
конечным системам сети (включая маршрутизаторы и другие хосты), какие биты
IP-адреса используются для идентификации сети и подсети. Эти биты называются
расширенным сетевым префиксом. Остальные биты идентифицируют хосты в
подсети. Биты маски, идентифицирующие сеть, равны 1, а хостовые биты равны 0.
Например, маска 11111111.11111111.11111111.11000000 B55.255.255.192 в
десятичной записи) позволяет использовать 64 хостовых идентификатора в подсети.
Значения шести правых битов (нулевых битов маски) в десятичном
представлении равны 64. Следовательно, в этой подсети можно однозначно
идентифицировать не более 64 устройств. Реально использоваться могут лишь 62
идентификатора, два оставшихся зарезервированы. Первый идентификатор хоста в подсети
всегда резервируется для идентификации самой подсети. Последний
идентификатор тоже резервируется для использования в широковещательных рассылках.
Помните, что максимальное количество реально используемых идентификаторов
хостов в подсети всегда на два меньше максимального количества хостов.
Однако количество возможных подсетей зависит от класса адреса IP. В
разных классах для идентификатора сети резервируется разное количество битов,
поэтому количества битов, используемых для определения подсети, тоже
различаются. В табл. 4.3 продемонстрировано отношение между количеством подсетей
и количеством хостов в подсети для IP-адресов класса В. В адресах класса В 16 бит
определяют сеть, а другие 16 бит определяют хост. Из таблицы видно, что
наименьшее количество битов сетевого префикса равно 2, а наибольшее равно 14.
Причина проста: сетевой префикс из одного бита позволяет определить всего два
идентификатора подсети, 0 и 1. Исходные правила определения подсетей
запрещали использовать идентификаторы подсетей, состоящие только из одних
нулей или единиц. Тем не менее многие коммерческие маршрутизаторы разрешали
использовать такие идентификаторы подсетей. Один из последующих RFC A812)
внес ясность в этот вопрос. Сейчас использование идентификаторов подсетей,
состоящих только из нулей или единиц, разрешено, хотя во многих старых книгах
утверждается, что такие идентификаторы недопустимы.
Сетевой префикс из 2 битов позволяет определить четыре идентификатора
подсети: 00, 01, 10 и И.
Таблица 4.3. Определение подсетей в адресном пространстве класса В
Размер Маска Количество Количество
префикса подсети используемых используемых
в битах подсетей хостов в подсети
2 255.255.192.0 4 16 382
3 255.255.224.0 8 8190
Размер Маска Количество Количество
префикса подсети используемых используемых
в битах подсетей хостов в подсети
4 255.255.240.0 16 4094
5 255.255.248.0 32 2046
6 255.255.252.0 64 1022
7 255.255.254.0 128 510
8 255.255.255.0 256 254
9 255.255.255.128 512 126
10 255.255.255.192 1024 62
11 255.255.255.224 2048 30
12 255.255.255.240 4096 14
13 255.255.255.248 8192 6
14 255.255.255.252 16 384 2
Из таблицы ясно видно, что чем больше битов выделяется на
идентификацию подсети, тем меньше битов остается на идентификацию хоста, и наоборот.
В сетях класса С тоже могут создаваться подсети. Так как в адресах класса С
сеть идентифицируется 24 битами, на идентификацию подсети и хоста остается
всего 8 бит. Разные варианты распределения битов при идентификации подсети
и хоста в сети класса С представлены в табл. 4.4.
Таблица 4.4. Определение подсетей в адресном пространстве класса С
Размер Маска Количество Количество
префикса подсети используемых используемых
в битах подсетей хостов в подсети
2 255.255.255.192 4 62
3 255.255.255.224 8 30
4 255.255.255.240 16 14
5 255.255.255.248 32 6
6 255.255.255.252 64 2
Хотя табл. 4.3 и 4.4 показывают отношение между количеством возможных
подсетей и хостов в подсети, однако они не дают представления о том, как же
работают подсети. Работу механизма подсетей лучше всего продемонстрировать
на примере конкретного IP-адреса, как это сделано в следующем разделе.
Пример использования подсети
Из всех аспектов схемы адресации IP новичкам обычно бывает труднее всего
разобраться именно с подсетями. В основном это связано с тем, что работа под-
сети выглядит логично лишь в двоичном представлении, не особенно удобном
для человеческого восприятия. Допустим, вам потребовалось определить
подсеть для адреса класса С 193.168.125.0. Это базовый адрес, используемый при
построении маршрутов в Интернете. Если вы захотите разбить его на восемь
подсетей, по крайней мере три из 8 битов идентификатора хоста придется
выделить на создание уникального префикса для каждой из восьми подсетей: 000,
001, 010, 011, 100, 101, 110 и 111. Последний октет адреса разбивается на две
части: 3 бита добавляются к идентификатору сети и образуют расширенный
сетевой префикс, а оставшиеся 5 битов используются для идентификации хостов.
Формирование адресов подсетей продемонстрировано в табл. 4.5.
В табл. 4.5 расширенные сетевые префиксы (состоящие из идентификатора
сети IP и идентификатора подсети) выделены жирным шрифтом.
Идентификаторы подсети дополнительно оформлены курсивом. Идентификаторы хостов
выводятся нормальным шрифтом и отделяются от расширенного сетевого
префикса дефисом. Такая система обозначений помогает понять, как происходит
деление базовых сетевых IP-адресов на подсети.
Таблица 4.5. Формирование подсетей
Сеть Двоичный адрес Десятичный адрес
Базовая 11000001.10101000.01111101.00000000 193.168.125.0
Подсеть 0 11000001.10101000.01111101.000 00000 193.168.125.0
Подсеть 1 11000001.10101000.01111101.001 00000 193.168.125.32
Подсеть 2 11000001.10101000.01111101.010-00000 193.168.125.64
Подсеть 3 11000001.10101000.01111101.011-00000 193.168.125.96
Подсеть 4 11000001.10101000.01111101.100 00000 193.168.125.128
Подсеть 5 11000001.10101000.01111101.101-00000 193.168.125.160
Подсеть 6 11000001.10101000.01111101.110-00000 193.168.125.192
Подсеть 7 11000001.10101000.01111101.111 00000 193.168.125.224
Идентификатор подсети определяется первыми тремя битами последнего
октета. Десятичные представления этих цифр равны 128, 64 и 32 соответственно.
В третьем столбце приводятся начальные IP-адреса каждой подсети. Как и
следовало ожидать, они увеличиваются с приращением 32 (крайний правый бит в
идентификаторе подсети).
ПРИМЕЧАНИЕ
Подсети 0 и 7 возможны с математической точки зрения, но когда-то они были запрещены даже
при наличии соответствующих записей на маршрутизаторе. Сейчас такие идентификаторы
подсетей разрешены, их идентификаторы подсетей равны 000 и 111 соответственно.
Хосты в каждой подсети определяются оставшимися пятью битами
последнего октета. Существуют 32 возможные комбинации из пяти нулей и единиц;
минимальное и максимальное значения зарезервированы, для использования
остается до 30 хостов в каждой подсети. Устройство с IP-адресом 193.168.125.193
будет первым хостом, определенным в подсети 6. Дальше нумерация хостов
продолжается до 193.168.125.222, и на этом подсеть окончательно заполняется.
Дальнейшее включение хостов в нее становится невозможным.
Маски подсети переменной длины
Хотя механизм определения подсетей стал ценным усовершенствованием схемы
адресации в Интернете, ему был присущ один принципиальный недостаток: вся
сеть ограничивалась одной маской подсети. Таким образом, после выбора маски
подсети (определяющей количество хостов в подсети) вы уже не могли
организовать поддержку подсетей другого размера. Если размер подсети требовалось
увеличить, приходилось изменять маску для всей сети. Не стоит и говорить, что
это весьма сложная и длительная процедура.
Решение этой проблемы было предложено в 1987 году. IETF опубликовала
документ RFC 1009, в котором определялся механизм поддержки нескольких
масок в одной подсети. На первый взгляд эти маски подсетей имели разные
размеры, но их нельзя было считать разными масками — сетевые префиксы были
идентичны. Из-за этого новой методике определения подсетей было присвоено
название «масок подсетей переменной длины» VLSM (Variable Length Subnet
Masks).
VLSM повышает эффективность использования адресного пространства IP
в границах организации, поскольку сетевому администратору предоставляется
возможность настройки маски по конкретным требованиям каждой подсети.
Для наглядности предположим, что у нас имеется базовый IP-адрес 172.16.0.0.
Это адрес класса В, в котором используется 16-разрядный идентификатор
подсети. В результате расширения сетевого префикса на 6 бит создается
22-разрядный расширенный сетевой префикс. С математической точки зрения существует
64 идентификатора подсетей, каждая из которых содержит до 1022 хостов.
Подобная схема вполне разумна, если организации требуется более 30
подсетей с более чем 500 хостами в каждой. Тем не менее, если организация состоит
из нескольких больших филиалов, сети которых содержат более 500 хостов, и
множества мелких филиалов с 40-50 хостами, многие потенциально возможные
адреса останутся неиспользованными. Каждому филиалу независимо от его
потребностей будет выделена подсеть с 1022 хостами, и каждый мелкий филиал
будет попусту расходовать около 950 адресов. При использовании одной маски
подсети фиксированной и заранее определенной длины подобное расходование
адресов неизбежно.
Теоретически механизм определения подсетей был идеальным решением
серьезной проблемы быстрого истощения конечного адресного пространства IP.
Возможность разбиения идентификатора хоста в IP-адресе на идентификаторы
подсети и хоста значительно сократила бесполезное расходование IP-адресов.
К сожалению, в реальном мире потребности в подсетях носят неравномерный
характер. Нельзя ожидать, что организация или все ее сети будут делиться на
субкомпоненты равного размера. Гораздо более вероятна ситуация, при которой
потребуется создавать филиалы (и подсети) любых размеров, и применение
маски подсети фиксированной длины приведет к напрасному расходу
IP-адресов, как в предыдущем примере.
ПРИМЕЧАНИЕ
Размер расширенного сетевого префикса указывается после символа / в конце IP-адреса. Таким
образом, запись 193.168.125.0/27 обозначает адрес класса С, в котором расширенный сетевой
префикс занимает 27 битов.
Для решения этой проблемы было разрешено гибкое создание подсетей в
адресном пространстве IP с возможностью определения сетевых масок переменного
размера. Так, в предыдущем примере сетевой администратор может разбить
базовый IP-адрес на маски подсетей разного размера. Несколько крупных
филиалов могут продолжить использование 22-разрядных сетевых префиксов, а мелким
филиалам может быть назначен 25- или 26-разрядный префикс. 25-разрядный
префикс позволит создавать подсети, содержащие до 126 хостов, а 26-разрядный
префикс ограничивает размер сети 62 хостами. Методика, на которой основано
решение, называется VLSM.
CIDR
Механизм бесклассовой междоменной маршрутизации CIDR (Classless Interdomain
Routing) принадлежит к числу относительно новых дополнений схемы
адресации IP. Он был порожден кризисом, который сопровождал период бурного роста
Интернета в начале 1990-х годов.
Еще в 1992 году участники IETF были обеспокоены способностью Интернета
масштабироваться в соответствии с потребностью в его использовании. Особую
озабоченность вызывали следующие проблемы:
О Исчерпание резерва оставшихся сетевых адресов IPv4. Особенно серьезная
угроза исчерпания существовала для адресного пространства класса В.
О Быстрый и существенный рост размеров таблиц маршрутизации в результате
расширения Интернета.
Все признаки указывали на то, что по мере подключения новых коммерческих
предприятий быстрый рост Интернета продолжится.. Более того, некоторые члены
IETF даже предсказывали наступление «Судного дня» в марте 1994 года, когда
должно было произойти предполагаемое исчерпание адресного пространства
класса В. Отсутствие других механизмов адресации представляло серьезную угрозу
для масштабируемости Интернета. Еще более угрожающе выглядела
перспектива того, что механизмы маршрутизации в Интернете рухнут еще до наступления
«Судного дня» под весом постоянно увеличивающихся таблиц маршрутизации.
Интернет становился жертвой собственной популярности. В IETF решили,
что для предотвращения краха Интернета необходимы как краткосрочные, так
и долгосрочные меры. В перспективе единственным приемлемым решением была
абсолютно новая версия IP со значительно расширенным адресным пространством
и схемой адресации. В итоге это решение стало известно под названием IPng
(Internet Protocol: Next Generation) или более формально — IP версии 6 (IPv6).
Более неотложное, краткосрочное решение требовало замедлить раздачу
существующих свободных адресов. Оно было основано на исключении
неэффективных классов адресов в пользу более гибкой архитектуры адресации.
Результатом стал механизм CIDR. В сентябре 1993 года проект CIDR был опубликован
в документах RFC 1517, 1518, 1519 и 1520.
CIDR обладает рядом ключевых аспектов, которые оказались бесценными для
замедления процесса опустошения адресного пространства:
О Исключение классовой адресации.
О Расширенное агрегирование маршрутных данных.
О Суперсети.
Общим эффектом этих нововведений стало устаревание схемы классовой
адресации. Возможно, такие адреса все еще используются в отдельных местах, но
бесклассовые адреса (несмотря на негативные ассоциации!) обладают гораздо
большей эффективностью.
Бесклассовая адресация
С математической точки зрения адресное пространство IPv4 все еще содержало
значительное количество свободных адресов. К сожалению, многие из этих
потенциальных адресов оказались заблокированными в назначенных блоках (или
классах) назначаемых адресов. Ликвидация классов не обязательно приводит к
возвращению адресов, заблокированных в уже выделенных адресных
пространствах, но значительно повышает эффективность использования оставшихся
адресов. Ожидается, что эта временная мера обеспечит время, необходимое на
разработку и запуск в эксплуатацию протокола IPv6.
Расширенное агрегирование маршрутных данных
CIDR позволяет маршрутизаторам Интернета (а также любым CIDR-совмес-
тимым маршрутизаторам) более эффективно использовать агрегирование
маршрутных данных. Другими словами, одна запись в таблице маршрутизации
может представлять адресные пространства нескольких сетей. Это
обстоятельство существенно уменьшает объем таблиц маршрутизации в каждом
конкретном межсетевом образовании, что непосредственно способствует улучшению
масштабируемости.
Механизм CIDR был реализован в Интернете в 1994-1995 годах и
немедленно оказался эффективным средством против разрастания таблиц
маршрутизации. Если бы не CIDR, вряд ли Интернет продолжал бы расти прежними
темпами.
Суперсети
К числу преимуществ CIDR также относится возможность использования
суперсетей. Суперсеть представляет собой не что иное, как несколько смежных блоков
адресных пространств класса С, имитирующих одно адресное пространство
большего размера. Если вам удастся получить достаточно смежных блоков адресов
класса С, вы сможете переопределить распределение битов между
идентификаторами хоста и сети и имитировать сеть класса В.
Суперсети проектировались как временная мера борьбы с быстрым
исчерпанием адресного пространства класса В, которая предоставляла в распоряжение
пользователей более гибкую альтернативу. Использовавшаяся ранее классовая
схема адресации страдала от огромных различий в масштабах сетей классов В
и С. Если размер сети превышал ограничение в 254 хоста, установленное для
класса С, приходилось выбирать один из двух вариантов, каждый из которых
оставлял желать лучшего:
О Использование нескольких сетей класса С (с необходимостью
маршрутизации между сетевыми доменами).
О Переход на сеть класса В с 65 534 возможными хостами.
Чаще использовалось второе, более простое решение, несмотря на то, при нем
напрасно расходовались десятки тысяч IP-адресов.
Принцип работы CIDR
Механизм CIDR нарушил старые традиции и ознаменовал полный отказ от
жесткой схемы классовой адресации. В исходной схеме адресации IPv4 в адресах
класса А используется 8-разрядный идентификатор сети, в адресах класса В —
16-разрядный, а в адресах класса С — 24-разрядный идентификатор сети.
Механизм CIDR заменил эти категории обобщенным сетевым префиксом
произвольной длины, не обязательно кратной 8 битам. В результате появилась
возможность планировать адресные пространства сетей в соответствии с размерами
сети, вместо того чтобы принудительно подгонять сети под адресные
пространства заранее определенного размера.
Каждый CIDR-совместимый сетевой адрес описывается битовой маской,
определяющей длину сетевого префикса. Например, запись 192.125.61.8/20 обозначает
адрес CIDR с 20-разрядным идентификатором сети. Теперь допускается
использование любых IP-адресов независимо от того, к какому классу они принадлежали:
А, В и С! Маршрутизаторы с поддержкой CIDR определяют идентификатор сети
по числу, следующему за /. Таким образом, бывший адрес класса С 192.125.61.8
ранее состоял из идентификатора сети 192.125.61 и идентификатора хоста 8.
В сетях класса С можно было назначить адреса не более чем 254 хостам. При
использовании CIDR ограничения на выравнивание компонентов адреса по
8-разрядной границе снимаются. Чтобы лучше понять, как работает этот механизм,
необходимо преобразовать десятичное представление адреса в двоичную систему.
В двоичном виде сетевая часть этого адреса имеет вид 11000000.01111101.
00111101. Первые 20 бит этой последовательности определяют идентификатор
сети. Разбиение адреса на компоненты продемонстрировано в табл. 4.6.
Таблица 4.6. 20-разрядный идентификатор сети CIDR
Идентификатор сети Идентификатор хоста
Двоичное представление адреса 11000000.01111101.0011 1101.00001000
Обратите внимание: деление адреса на идентификаторы сети и хоста
проходит в середине третьего октета. Биты, не использованные для идентификации
сети, используются для идентификации хоста. Таким образом, в адресе IPv4
с 20-разрядным сетевым префиксом остается 12 бит на идентификацию хоста.
С математической точки зрения 12-разрядное двоичное число позволяет
представить 4094 пригодных к использованию хостов. Поскольку ни один бит в
левой части не должен принимать стандартные значения (ранее необходимые для
идентификации классов), в сети CIDR может использоваться практически весь
диапазон адресов. Следовательно, 20-разрядный сетевой префикс может
принимать значения, ранее зарезервированные для сетей класса А, В и С.
Открытые адресные пространства
Если глобальная сеть (WAN) не подключена напрямую к Интернету или к любой
другой сети, межсетевые адреса могут выбираться произвольно. Вообще говоря,
произвольный выбор межсетевых адресов считается вопиющим проявлением
близорукости и халатности. С учетом сказанного, в мае 1993 года был
опубликован документ RFC 1597, в котором был предложен выход из положения.
RFC 1597 и 1918
RFC 1597 был заменен RFC 1918 в феврале 1996 года. Тем не менее новый
документ ограничивался минимальными изменениями в исходной спецификации.
Самым существенным из этих изменений был отказ от алфавитных классов А,
В и С. Вместо этого в RFC 1919 было выдвинуто предложение об
использовании адресации по схеме CIDR. Как объяснялось в предыдущем разделе, CIDR
не использует классовые адреса. Вместо этого количество битов,
зарезервированных для идентификатора сети, указывается за символом /. Таким образом,
идентификатор 10 класса А записывается в виде 10/8, поскольку только 8 бит
используются для идентификации сети. Что еще важнее, хостовой
идентификатор может начинаться на границе любого бита, в отличие от существовавшей
ранее классовой адресации, при которой начало идентификатора хоста
обязательно выравнивалось по 8-битной границе.
Также были определены и зарезервированы три диапазона адресов, которые
могли использоваться только для внутренних целей, по одному от каждого из
классов IPv4 А, В и С:
О 10.0.0.0-10.255.255.255.
О 172.16.0.0-172.31.255.255.
О 192.168.0.0-192.168.255.255.
Эти диапазоны были зарезервированы IANA для частных сетей. Одно из
положений RFC 1597 гласило, что эти адреса не могут использоваться при
непосредственных обращениях к Интернету. Компании, использовавшие эти адреса
и впоследствии пожелавшие получить выход в Интернет, оказались в трудной
ситуации. Они могли перенумеровать все свои устройства в соответствии с
требованиями IANA или же установить между интрасетью и Интернетом промежуточ-
ное звено — прокси-сервер или преобразователь сетевых адресов NA T (Network
Address Translator). Применение подобных устройств позволило бы компании
продолжить работу с фиктивными адресами без ущерба для доступа к Интернету
(и из него).
Если вы захотите использовать зарезервированные адреса RFC 1597 в своей
интрасети, необходимо учитывать долгосрочные последствия этого решения.
Возможно, со временем вам понадобится подключиться к сетям других
компаний через экстрасеть или через Интернет. В любом из этих случаев уникальность
фиктивных адресов не гарантируется.
Наконец, при использовании адресов из диапазонов, зарезервированных для
частных сетей в RFC 1918, вы по-прежнему должны гарантировать уникальность
адресов устройств в рамках домена закрытой сети. Адреса ни будут уникальными
в глобальном отношении, но они должны быть уникальны хотя бы локально.
Адресация в частных сетях
Для снижения потребности в новых IP-адресах в марте 1994 года был
опубликован документ RFC 1597, посвященный назначению IP-адресов в частных
сетях. Частными (private) называются сети, не подключенные к другой сети или
содержащие хосты и службы с ограниченными возможностями взаимодействия
с Интернетом. Хосты частных сетей делятся на три категории:
О Хосты, не нуждающиеся в доступе к Интернету.
О Хосты, нуждающиеся в доступе к ограниченному набору внешних служб —
электронной почте, FTP, новостям, удаленному входу и т. д, которые могут
обрабатываться шлюзом прикладного уровня.
О Хосты, нуждающиеся во внешнем доступе сетевого уровня. Задача решается
средствами IP, и в ее решении должны быть задействованы маршрутизаторы
или хосты, видимые для внешних сетей.
Хостам первой категории могут назначаться IP-адреса, уникальные в
границах частной сети, но не уникальные в Интернете. Такие хосты не обмениваются
пакетами с хостами за пределами частной сети, поэтому проблема дублирования
IP-адресов не возникает.
Для хостов второй категории, изолированных от внешнего доступа в
Интернет шлюзом прикладного уроня, уникальность IP-адресов не обязательна. Это
объясняется тем, что шлюз прикладного уровня маскирует IP-адреса этих
хостов от внешней сети.
Только хостам третьей категории должны назначаться IP-адреса, глобально
уникальные в Интернете.
При ведении нормальной документации по сети идентификация хостов
категорий 1 и 2 выполняется относительно легко. Эти хосты не нуждаются в
подключениях сетевого уровня за пределами корпоративной сети.
В RFC 1597 приводятся следующие примеры хостов категорий 1 и 2:
О Крупный аэропорт с несколькими электронными табло, на которых
отображается время вылета/прибытия, адресуемыми через TCP/IP. Крайне
маловероятно, чтобы к этим табло потребовался прямой доступ из других сетей.
О Крупные организации (такие, как банки и сети розничной торговли)
переходят на TCP/IP в своих внутренних коммуникациях. Локальным рабочим
станциям — кассам, банкоматам и т. д. — внешний доступ обычно не нужен.
О По соображениям безопасности во многих организациях внутренние сети
подключаются к Интернету через шлюзы прикладного уровня (например,
через брандмауэры). Внутренняя сеть обычно не имеет прямого доступа к
Интернету, а из Интернета видны только хосты брандмауэров (один или более).
В этом случае во внутренней сети допускается использование не-уникаль-
ных IP-адресов.
О Если две организации общаются между собой по частному каналу, обычно
каждое из них имеет доступ к очень ограниченному набору хостов на другом
конце канала. Только этим хостам должны назначаться глобально
уникальные IP-адреса.
О Маршрутизаторы частной сети обычно не должны быть напрямую доступны
за пределами организации.
На основании запроса авторов RFC 1597 ICANN зарезервировала для
частных сетей следующие три блока адресного пространства IP, которые могут
назначаться хостам категорий 1 и 2:
О 10.0.0.0-10.255.255.255 - 1 сеть класса А.
О 172.16.0.0-172.31.255.255 - 16 сетей класса В.
О 192.168.0.0-192.168.255.255 - 256 сетей класса С.
Предприятие, желающее использовать IP-адреса из перечисленных адресных
пространствах, может делать это без координации с ICANN или реестра
Интернета. Таким образом, эти адресные пространства могут использоваться многими
предприятиями, что сокращает необходимость в выделении новых
идентификаторов сетей. Адреса в частных сетях уникальны в границах предприятия, но не
в границах сети.
Если предприятие нуждается в глобально-уникальных адресах для
приложений и устройств, подключенных на уровне IP, ему приходится получать такие
адреса от реестра Интернета. ICANN не распределяет IP-адреса из адресного
пространства частных сетей.
Поскольку частные адреса не имеют глобального смысла, маршрутные
данные частной сети не должны выходить за пределы организации.
Маршрутизаторы сетей, не использующих частное адресное пространство (например, сетей
поставщиков услуг Интернета), должны быть настроены таким образом, чтобы
они отвергали маршрутные данные частных сетей. Фильтрация этих данных не
должна сопроволсдаться сообщениями об ошибке протокола маршрутизации.
Чтобы использовать частное адресное пространство, предприятие должно
определить, какие хосты не нуждаются в связи на сетевом уровне. Если для
внешней сети потребуется изменение конфигурации хостов и средств связи
сетевого уровня, должны быть присвоены глобально-уникальные адреса. Иначе
говоря, IP-адреса этих хостов должны быть переведены из частного адресного
пространства в открытое адресное пространство. Если организация не будет
должным образом следить за изменением требований к хостам, она может
случайно создать ситуацию с дублированием IP-адресов. Возможно, по этой
и по некоторым другим причинам в июле 1994 года был выпущен документ
RFC 1627.
Авторы RFC 1627 указывают на то, что рекомендации RFC 1597 уменьшают
надежность и безопасность работы сети и слишком дорого обходятся из-за
множества возникающих проблем. Например, если двум организациям,
использующим частные адресные пространства, потребуется связаться напрямую, по
крайней мере одной из них придется изменить свои назначенные IP-адреса. В RFC
1627 утверждалось, что «RFC 1597 создает иллюзию решения проблемы за счет
формализации традиционно неформальной практики. На самом деле эта
формализация только отвлекает от необходимости решать насущные проблемы и даже
не предоставляет существенной помощи в краткосрочной перспективе». Кроме
того, в RFC 1627 утверждается, что ICANN превысила границы своих
полномочий, порекомендовав RFC 1597 без обычного открытого обсуждения и
одобрения со стороны IETF и IAB.
Так что же делать простому проектировщику сети, оказавшемуся в центре
противоречий, связанных с использованием частных адресов? Если вы
собираетесь последовать рекомендациям RFC 1597, будьте очень осторожны. Убедитесь
в том, что вы располагаете всей необходимой документацией и хорошо знаете,
какие службы видны или не видны для внешнего мира. Прочитайте RFC 1627
и разберитесь в сути выдвинутых возражений.
Назначение адресов класса С
Адреса класса С в диапазоне 192.0.0 до 223.255.245 были разделены на восемь
адресных блоков (табл. 4.7). За распределение адресов из этих блоков отвечают
региональные полномочные организации.
Таблица 4.7. Распределение адресов класса С
Диапазон адресов Регион
192.0.0-193.255.255 Внерегиональные адреса. Диапазон включает адреса, использовавшиеся
до появления схемы регионального назначения адресов
194.0.0-195.255.255 Европа
196.0.0-197.255.255 Используется при назначении IP-адресов независимо от региона
198.0.0-199.255.255 Северная Америка
200.0.0-201.255.255 Центральная и Южная Африка
202.0.0-203.255.255 Побережье Тихого океана
204.0.0-205.255.255 Используется при назначении IP-адресов независимо от региона
206.0.0-207.255.255 Используется при назначении IP-адресов независимо от региона
208.0.0-223.255.255 Доступные адреса
Информация, приведенная в табл. 4.7, может пригодиться в том случае, если
у вас имеется протокол трассировки пакетов, входящих в сеть, и вы хотите
определить, из какой географической зоны приходят пакеты.
Настройка IP-адресов
Настройка хостов в сетях TCP/IP должна производиться с использованием
правильных IP-адресов. Конкретная процедура настройки зависит от
операционной системы, но в целом процессы делятся на следующие категории:
О Настройка в командной строке.
О Настройка с использованием меню.
О Настройка с использованием графического интерфейса.
О Динамическое назначение адреса при загрузке хоста с центрального сервера.
В табл. 4.8 приведены примеры операционных систем, относящихся к
различным категориям.
Таблица 4.8. Настройка IP-адреса и других параметров хостов
Методика Операционная система/протокол
Режим командной строки Unix, VMS, устройства маршрутизации, MS-DOS
Меню Устройства маршрутизации, Unix, серверы NetWare, MS-DOS
Графический Интернет Unix, Microsoft Windows
Динамическое назначение Протоколы DHCP и ВООТР. Поддерживаются почти всеми
основными операционными системами
Во многих системах существуют команды модификации IP-адресов, часто
включаемые в стартовый сценарий операционной системы. Интерфейс меню
строится с использованием псевдографики из расширенного набора символов,
в нем вам предлагается ввести IP-адрес и другие параметры IP. Графический
интерфейс предназначен для систем, поддерживающих графический вывод на
уровне пикселов. Примерами таких систем являются X-Window и операционные
системы семейства Microsoft Windows. Динамическое назначение IP-адресов
используется в сочетании с протоколами ВООТР и DHCP. Устройство при
запуске запрашивает IP-адрес и другие параметры с центрального сервера,
который передает эти сведения по протоколу ВООТР и DHCP.
Информация об IP-адресе хоста регистрируется в нескольких местах.
Введенный IP-адрес кэшируется в памяти и остается доступным для использования
программным обеспечением TCP/IP. Кроме того, эти данные иногда
сохраняются в системных файлах операционной системы. Информация об IP-адресах
других систем может быть получена из специального файла, который обычно
называется hosts, или при помощи протокола DNS. Как правило, сервис DNS
используется для получения IP-адреса хоста по его символическому имени
DNS. В некоторых системах реализованы специальные запатентованные
протоколы для получения IP-адресов в сети (пример — служба WINS в
операционных системах Microsoft).
Адресация в IP версии 6
Как упоминалось выше в этой главе, по мере расширения Интернета
32-разрядное адресное пространство IP-адресов постепенно подходит к концу. Невзирая
на RFC 1597, для каждого сетевого подключения к Интернету нужен
уникальный IP-адрес. Некоторые устройства имеют несколько сетевых подключений,
что приводит к быстрому поглощению доступных IP-адресов.
Считается, что 32-разрядные IP-адреса (так называемая адресация по схеме IP
версии 4) могут обеспечить более 2 100 000 сетей, содержащих в общей
сложности 3720 миллионов хостов. Тем не менее схема распределения адресов IP
недостаточно эффективна, поскольку для соединения сетей через устройства
ретрансляции, работающие на сетевом уровне (в частности, маршрутизаторы), обычно
требуются новые сетевые адреса.
В результате стала быстро возникать нехватка IP-адресов. Для решения этой
проблемы группа IETF проанализировала методы решения проблемы адресного
пространства и внесла в протокол изменения, повышавшие эффективность его
работы в условиях новых сетевых технологий. После изучения различных
предложений по преодолению ограничений текущей версии протокола IP
(называемой IP версии 4, или IPv4), было решено перейти на протокол IP нового
поколения — «IP Next Generation», также называемый IPng или IPv6. Одной из
целей, поставленных при проектировании IPv6, должна была стать поддержка
минимум одного миллиарда сетей. Чтобы соответствовать этому критерию, IPv6
использует 128-разрядные адреса, длина которых вчетверо превышает длину
адресов IPv4. IPv6 тоже использует концепции идентификаторов сетей и
хостов, но расширяет ее на несколько уровней. Иерархическая адресация IPv6
обеспечивает более эффективную маршрутизацию. Адрес IPv6 может содержать
32-разрядный адрес IPv4, который размещается в младших 32 битах адреса IPv6
с заполнением 96 старших битов фиксированным префиксом из 80 нулевых битов,
за которыми следуют 16 единичных или нулевых битов.
IPv6 позволяет использовать незарегистрированные адреса IPv4; для этого
в адрес добавляется уникальный зарегистрированный модификатор, вследствие
чего весь адрес IPv6 становится уникальым.
Схема адресации IPv6 проектировалась с расчетом на взаимодействие с
системами на базе IPv4. Таким образом, становится возможным сосуществование двух
схем адресации IP в течение некоторого периода. Для передачи информации
между сетями, работающими на базе IPv4 и более нового протокола IPv6, могут
использоваться маршрутизаторы с поддержкой обоих протоколов, IPv4 и IPv6.
Протокол IPv6 включает поддержку мобильных портативных систем. В
частности, это позволяет пользователям портативных компьютеров и других устройств
подключаться к любой точке сети без ручной перенастройки. Мобильные системы
автоматически устанавливают связь при подключении к сети в другой точке.
Автоматическая настройка применяется не только для мобильных систем, но
и для обычных рабочих станций. IPv6 поддерживает шифрование данных и
обладает улучшенной поддержкой трафика в реальном времени (то есть обеспечивает
определенные гарантии максимальной задержки при передаче дейтаграмм по сети).
Адреса IPv6 имеют длину 128 байт, поэтому десятичная запись с точечным
разделением для них неудобна — представьте, что вам придется записывать
строку из 16 десятичных цифр, разделенных точками!
Рассмотрим следующее двоичное представление адреса IPv6:
01011000 00000000 00000000 11000000
11100011 11000011 11110001 10101010
01001000 11100011 11011001 00100111
11010100 10010101 10101010 11111110
Адрес IPv6 состоит из 128 бит и записывать его в двоичной системе крайне
неудобно. В десятичной записи с точечным разделением этот адрес выглядит так:
88.0.0.192.227.195.241.170.72.227.217.39.212.149.170.254
Такая запись получается недостаточно компактной. Для записи этих двоичных
последовательностей проектировщики остановились на шестиадцатеричпой записи
с разделением двоеточиями. Адрес разбивается на 16-разрядные группы,
разделенные символом «>. Так, адрес из предыдущего примера записывается в виде:
5800:00C0:E3C3:F1AA:48E3:D927:D495:AAFE
Использование этой формы записи уменьшает количество цифр и
символов-разделителей, но это не все: существует два приема сокращенной записи,
которые могут применяться для дальнейшего уменьшения количества символов.
Во-первых, начальные нули можно не указывать. Для примера возьмем
следующий адрес IPv6:
48А6:0000:0000:0000:0000:0DA3:003F:0001
С пропуском начальных нулей возможна следующая упрощенная форма
записи:
48А6:0:0:0:0:DA3:3F:1
Последовательность 0000 заменяется 0, 0DA3 заменяется на DA3, а 0001 —
на 1. Во всех перечисленных случаях исключение начальных нулей уменьшает
количество символов в адресе.
Во-вторых, правило сжатия нулей позволяет заменить последовательность
повторяющихся нулей двойным символом двоеточия (:: ). Так, в приведенном
выше адресе IPv6 присутствует последовательность из четырех нулей @:0:0:0),
которая может быть заменена на «::». Таким образом, предыдущий адрес IPv6
записывается в виде
48А6::DA3:3F:1
При расширении адреса, содержащего сжатые нули, часть адреса,
находящаяся слева от двоеточий, выравнивается по начальным 16-разрядным словам
адреса, а часть, находящаяся справа, выравнивается по конечным 16-разрядным
словам адреса. Оставшиеся 16-разрядные слова адреса заполняются нулями.
В качестве примера рассмотрим следующую запись:
5400:FD45::FFFF:3AFE
После расширения адрес принимает вид
5400:FD45:0:0:0:0:FFFF:3AFE
Последовательность «:> может встречаться в адресе только один раз, чтобы
обеспечить однозначную интерпретацию. Следующая запись IPv6 недопустима —
по ней невозможно определить, какое слово занимает последовательность 45А1:
5400::45А1::23Аб
Наконец, последовательность «:> может использоваться в качестве префикса
или суффикса. Рассмотрим следующее представление адреса IPv4 170.1.1.1
в формате IPv6:
0:0:0:0:0:0:АА01:101
Итоги
Хорошее знание схемы адресации IP абсолютно необходимо для понимания
основных принципов межсетевой связи на базе IP. Базовый материал,
представленный в настоящей главе, поможет вам лучше разобраться в этой теме. Многие
из упоминаемых архитектурных решений (CIDR, маски подсетей, VLSM)
используются настолько широко, что их недостаточное понимание сильно затруднит
вашу работу по поддержке и проектированию межсетевых образований. Кроме
того, в этой главе рассматриваются частные адреса и области их применения,
а также в общих чертах описана структура адресов IPv6.
В следующих главах этой части книги рассматриваются другие аспекты выбора
имен и адресов в сетях IP, в том числе механизм установления соответствия
между IP-адресами и аппаратными адресами локальных сетей, а также
преобразование удобных символических имен в IP-адреса.
|- ARP и RARP
IP-адреса являются общим средством идентификации хостов в TCP/IP, но для
того, чтобы дейтаграмма была доставлена получателю, одного IP-адреса
недостаточно. В доставке задействована сетевая система, поведение которой обычно
зависит от сетевой операционной системы и типа оборудования. Чтобы хорошо
понимать механизм маршрутизации данных от отправителя к получателю,
необходимо разобраться в том, как организовано взаимодействие компьютеров,
входящих в сеть. Глава начинается с общего обзора типичных сетевых архитектур
(в особенности Ethernet) и дает представление о том, как в TCP/IP происходит
преобразование IP-адресов в канальные адреса, используемые на уровне сети.
Преобразование IP-адреса в канальный адрес выполняется при помощи протокола
ARP (Address Resolution Protocol). Парный протокол RARP (Reverse Address
Resolution Protocol) решает обратную задачу — преобразование канальных
адресов в IP-адреса.
Механизмы адресации
IP-адреса используются TCP/IP для доставки дейтаграмм заданному получателю.
При описании механизмов адресации часто встречаются три стандартных
термина: имя, адрес и маршрут.
Имя представляет собой символическое обозначение компьютера, пользователя
или приложения. Обычно имена являются уникальными и обозначают
конечного получателя дейтаграммы. Адрес обычно определяет физическое или
логическое местонахождение получателя в сети. Маршрут содержит информацию
о том, каким образом дейтаграмма должна доставляться по нужному адресу. При
использовании термина «адрес» необходима осторожность, потому что этот
термин часто используется в коммуникационных протоколах для обозначения
множества разных понятий. В частности, он может обозначать хост, порт
компьютера, адрес памяти, приложение и многое другое. В общем случае каждый уровень
модели OSI использует собственные адреса. Например, в сети Ethernet адресом
канального уровня является аппаратный адрес Ethernet, уникальный для каждого
сетевого адаптера, а адресом сетевого уровня является IP-адрес
соответствующего узла TCP/IP.
В процессе доставки ключевую роль обычно играет регистрационное имя
получателя. Пакет сетевого программного обеспечения, называемый сервером имен,
строит адрес и маршрут по именам пользователя и компьютера, скрывая этот
аспект маршрутизации TCP/IP и доставки от приложения. Помимо
прозрачности адресации и маршрутизации с точки зрения приложений, серверы имен
обладают другим существенным преимуществом: они позволяют системному или
сетевому администратору достаточно свободно изменять параметры сети без
перенастройки каждого компьютера по отдельности. Пока в сети имеется
работающий сервер имен, приложения и пользователи могут игнорировать
изменения в маршруте.
Адресация в подсетях
Пересылка данных на другой компьютер обычно осуществляется по IP-адресу.
Хотя протокол TCP/IP проектировался для работы с IP-адресами, реальным
сетевым программным и аппаратным обеспечением эти адреса не
поддерживаются. Вместо этого сетевые программные средства идентифицируют
компьютеры по физическим адресам, которые кодируются в сетевых устройствах,
устанавливаемых на компьютерах. Установление соответствия между IP-адресом
и физическим адресом не входит в обычный круг задач протокола TCP/IP,
поэтому для решения этой задачи было разработано несколько специальных
протоколов. Эти протоколы будут рассмотрены в следующем разделе, но сначала
мы обсудим структуру физических адресов сети.
В отдельной локальной или глобальной сети для правильной доставки
дейтаграмм необходимо знать несколько атрибутов, прежде всего — физический
и канальный адрес получателя. Эти адреса достаточно важны и заслуживают
более внимательного рассмотрения.
Физические адреса
Каждое устройство в сети характеризуется уникальным физическим адресом,
который также называется аппаратным адресом. Физические адреса обычно
кодируются на уровне сетевого адаптера, иногда они могут настраиваться пользователем
при помощи переключателей или специальных программ. Но чаще физические
адреса жестко кодируются в ППЗУ адаптера; производители сетевого
оборудования часто совместно работают над тем, чтобы предотвратить возможное
дублирование физических адресов. В любой отдельной сети каждый физический
адрес может существовать только в одном экземпляре, иначе сервер имен не
сможет однозначно определить получателя. Длина физического адреса
изменяется в зависимости от сетевой архитектуры. Например, в Ethernet и ряде других
сетевых архитектур адреса имеют длину 48 бит. Обмен данными по сети требует
указания двух сетевых адресов: передающего и принимающего устройства.
В настоящее время назначением единых физических адресов подсетей
занимается IEEE (раньше этим занималась фирма Xerox, исходный разработчик
Ethernet). Для каждой подсети IEEE назначает 24-разрядный идентификатор
OUI (Organization Unique Identifier), остальные 24 бита адреса организация
может использовать по своему усмотрению. Вообще говоря, два из 24 битов
OUI являются управляющими, поэтому подсеть определяется только 22 битами.
Формат идентификатора OUI показан на рис. 5.1. Комбинация из 24 битов OUI
и 24 битов, присвоенных локально, называется адресом MAC (Media Access Control).
При сборке пакета данных для передачи в объединенной сети используются два
адреса MAC — по одному для отправителя и для получателя.
22 бита 24 бита
1бит 1бит| | |
И/Г У/Л Адрес подсети, назначенный IEEE Физический адрес, назначенный локально
0 = Индивидуальный 0 = Универсальный
1 = Групповой 1 = Локальный
Рис. 5.1. Структура идентификатора ОЮ
Крайний левый бит числа называется признаком индивидуального или
группового адреса (I/G). Если бит равен 0, то остальные биты определяют
индивидуальный адрес; значение 1 указывает на то, что остальные биты определяют
групповой адрес, нуждающийся в дальнейшей обработке. Если все 24 бита ОШ
заполнены единицами, то получателями являются все станции сети.
Второй бит структуры ОШ называется локальным или универсальным битом
(U/L). Если он равен 0, то значение OUI было задано административным органом
(именно этот вариант используется в OUI, назначаемых в IEEE). Если второй
бит равен 1, значит, идентификатор OUI был назначен локально, и его
интерпретация как адреса, присвоенного в IEEE, может вызвать проблемы. Обычно
применение структур, у которых второй бит равен 1, ограничивается локальными
и глобальными сетями и не передается в другие сети, которые могут следовать
формату адресации IEEE.
ПРИМЕЧАНИЕ
Некоторые старые протоколы (такие, как DECNet Phase IV) использовали локально
назначенные адреса, в которых биты локально назначенного физического адреса заполнялись сетевым
адресом DECNet.
Оставшиеся 22 бита структуры OUI содержат физический адрес подсети,
назначенный IEEE. Вторая группа из 24 бит идентифицирует адреса внутри
локальной сети и администрируется локально. 24 бита позволяют представить
около 16 миллионов адресов, но если физических адресов вдруг окажется
недостаточно, IEEE может выделить второй адрес подсети.
Адрес LLC
В стандартах IEEE Ethernet используется другой адрес, называемый адресом
канального уровня (обычно применяется сокращение LSAP от «link service access
point»). Канальный уровень в сетях IEEE делится на верхний подуровень LLC
(Logical Link Control) и нижний подуровень MAC (Media Access Control), на
котором реализуются аппаратные связи. Адреса протокола подуровня LLC
называются адресами SAP (Service Access Points) или LSAP (Logical Service Access
Points).
Адрес LSAP определяет тип протокола, используемого на канальном уровне.
Как и в случае физических адресов, дейтаграмма содержит адреса LSAP как
передающей, так и принимающей стороны.
Сетевые кадры
Структура информации в передаваемых пакетах данных зависит от протокола,
используемого сетью. Тем не менее будет поучительно проанализировать один
из вариантов структуризации и увидеть, как в дейтаграмму перед отправкой по
сети включаются упоминавшиеся выше адреса, а также другая дополнительная
информация. В качестве примера будет использована архитектура Ethernet,
широко используемая в сочетании с TCP/IP. С другими системами общий
принцип сохраняется, хотя конкретная структура заголовков может быть несколько
иной. Помните, что упаковка заголовков TCP/IP производится сетевыми
протоколами и не имеет отношения к уровню TCP/IP. Типичный кадр Ethernet
(этим термином обозначается дейтаграмма, готовая к пересылке по сети)
изображен на рис. 5.2.
| Преамбула |п^4я1отпХСеля1 Т™ [ **»»"* \ <*С [
64 бит 48 бит 48 бит 16 бит Переменная 32 бит
| I J длина
Рис. 5.2. Структура кадра Ethernet
64-разрядная преамбула предназначена в первую очередь для
синхронизации процесса и борьбы со случайным шумом в нескольких первых
отправляемых битах. В механизмах адресации и маршрутизации преамбула не
используется. В конце преамбулы находится последовательность битов SFD (Start Frame
Delimiter), после которой и начинается кадр.
Адреса получателя и отправителя в структуре кадра Ethernet хранятся в
48-разрядном формате IEEE. За ними следует 16-разрядный признак типа протокола.
После типа следуют фактические данные (дейтаграмма TCP/IP). Поле данных
в стандартной архитектуре Ethernet имеет длину от 64 до 1500 байт. Если длина
данных меньше 64 байт, они дополняются нулями. Дополнение до минимальной
длины 64 байта выполняется для того, чтобы упростить обнаружение коллизий.
В конце фрейма Ethernet находится контрольная сумма CRC (Cyclic
Redundancy Check), используемая для проверки того, что содержимое кадра не было
изменено в процессе пересылки. Каждый компьютер, входящий в маршрут
пересылки, вычисляет контрольную сумму кадра и сравнивает ее со значением
в конце кадра. Если два числа совпадают, данные кадра считаются
действительными и пересылаются дальше по сети или в подсеть. Если данные различаются,
значит, содержимое кадра было искажено, поэтому кадр отвергается, после чего
может быть послан запрос на повторную передачу.
В некоторых протоколах, имеющих отношение к Ethernet (например, IEEE
802.3), общее строение кадра остается прежним, но содержимое несколько
отличается. Так, в 802.3 16 бит, используемые в Ethernet для идентификации типа
протокола, заменяются 16-разрядной длиной блока данных. Кроме того, новое
поле следует непосредственно за областью данных.
ХР-адреса
Как упоминалось выше, в TCP/IP используются 32-разрядные адреса,
позволяющие идентифицировать любой компьютер сети и сеть, к которой он подключен.
IP-адрес определяет подключение компьютера к сети, а не сам компьютер; это
важное различие и о нем следует помнить. Изменение местонахождения
компьютера в сети иногда приводит к смене IP-адреса (в зависимости от настройки
сети). IP-адрес представляет собой набор чисел, однозначно определяющих
устройство; многие читатели часто видят эти обозначения вида 128.40.8.72 на
своих рабочих станциях и терминалах. IP-адрес состоит из четырех 8-разрядных
групп, его общая длина составляет 32 бита. IP-адреса назначаются центром NIC
(Network Information Center), хотя если сеть не подключена к Интернету, адреса
могут определяться произвольно. Общепринятый способ записи IP-адресов
называется десятичной записью с точечным разделением.
IP-адреса делятся на четыре категории в зависимости от размера сети.
Структура адресов разных категорий (от класса А до класса D) показана на рис. 5.3.
Класс определяется последовательностью начальных битов, содержащей от
одного (класс А) до четырех битов (класс D). Класс можно определить по первым
трем (старшим) битам. На практике обычно бывает достаточно двух битов,
поскольку адреса класса D используются редко.
Го | Сеть G бит) | Адрес B4 бит) |
По | Сеть A4 бит) | Адрес A6 бит) |
рГГо | Сеть B1 бит) I Адрес (8 бит) |
| 1110 | Групповой адрес B8 бит) |
Рис. 5.3. Структура четырех классов IP-адресов
Адреса класса А предназначены для крупных сетей с большим количеством
хостов. В них используется 24-разрядный локальный адрес (часто называемый
идентификатором хоста). Идентификатор сети ограничен 7 битами, что серьезно
ограничивает количество представляемых сетей.
Адреса класса В предназначены для средних сетей. В них используется
16-разрядный идентификатор хоста и 14-разрядный идентификатор сети.
В адресах класса В идентификатор хоста представлен всего 8 битами, поэтому
количество устройств ограничивается 256. Идентификатор сети содержит 21 бит.
Наконец, адреса класса D используются для групповой рассылки, когда
пакет передается нескольким устройствам.
По IP-адресу сетевой шлюз может определить, будут ли данные отправлены
в Интернет (или другое межсетевое образование) или останутся в локальной
сети. Если сетевая часть адреса получателя совпадает с идентификатором сети,
к которой подключен отправитель (пересылка в пределах сети), значит, получатель
находится в одной сети с отправителем и межсетевая пересылка не производится.
Все остальные сетевые адреса обрабатываются маршрутизатором (традиционно
называемым интернет-шлюзом), чтобы данные могли выйти за пределы
локальной сети.
Компьютер (а особенно маршрутизатор), подключенный к нескольким сетям,
может иметь несколько IP-адресов. Такие компьютеры называются
многоадресными, поскольку они имеют уникальный адрес в каждой сети, к которой он
подключен. Две сети, соединенные шлюзом, могут иметь одинаковый идентификатор,
что создает проблемы с адресацией, потому что шлюз должен быть способен
различить, к какой сети относится физический адрес. Проблема решается при
помощи специального протокола ARP (Address Resolution Protocol),
занимающегося только разрешением адресов.
Общие сведения о протоколе ARP
Чтобы отправить дейтаграмму с одного компьютера на другой в локальной или
глобальной сети, отправитель должен знать физический адрес получателя.
Должен существовать механизм преобразования IP-адресов, задаваемых
приложениями, в физические адреса устройств, соединяющих компьютеры с сетью.
Задачу преобразования IP-адресов в физические адреса можно решить
методом «грубой силы» и хранить таблицу преобразований на каждом компьютере.
Когда приложению потребуется отправить данные на другой компьютер,
программа просматривает таблицу преобразований и ищет в ней физический адрес.
Подобный метод создает множество проблем, потому им почти никто не
пользуется. Главным недостатком является необходимость постоянного обновления
таблицы адресов на каждом компьютере при внесении любых изменений.
Для решения этой проблемы был разработан протокол ARP. Этот протокол
преобразует IP-адреса в физические адреса (сетевые и локальные) и тем самым
избавляет приложения от необходимости знать что-либо о физических адресах.
Проще говоря, ARP ведет таблицу соответствия между IP-адресами и
физическими адресами, называемую таблицей ARP. Таблица ARP обычно строится
динамически, хотя существует возможность добавления статических записей для
диагностических целей и для исправления проблем с порчей данных.
Структура таблицы ARP изображена на рис. 5.4. Кроме того, ARP
поддерживает кэш записей, называемый кэшем ARP. Обычно поиск начинается с кэша
ARP, и только в случае неудачи данные ищутся в таблице ARP. Динамически
сгенерированные записи кэша ARP становятся недействительными при
истечении интервала тайм-аута, тогда как на статические записи тайм-аут не должен
распространяться. Уничтожение статических записей в результате тайм-аута
является признаком порчи данных в кэше ARP.
,^ Физический ID в„ЛЛЛ т
ИФ адрес IP-адрес Тип
Запись 1 I
Запись 2
Запись 3 1
Записи п
Рис. 5.4. Структура таблицы ARP. Каждая строка таблицы представляет одно устройство
KauiARP
Каждая строка кэша ARP соответствует одному устройству и содержит четыре
атрибута, хранящихся для каждого устройства:
О ИФ — физический порт (интерфейс).
О Физический адрес — физический адрес устройства.
О IP-адрес — IP-адрес, соответствующий физическому устройству.
О Тип — Тип записи.
Поле типа принимает четыре возможных значения:
О 2 — запись недействительна;
О 3 — соответствие устанавливается динамически (то есть запись может
измениться);
О 4 — статическое соответствие (запись не изменяется);
О 1 — ни один из перечисленных вариантов.
При получении IP-адреса, для которого нужно найти соответствующий
физический адрес, ARP просматривает кэш и таблицу ARP в поисках совпадения.
Если совпадение будет найдено, ARP возвращает физический адрес стороне, от
которой был получен IP-адрес. Если информация не обнаружена, в сеть отправ-
ляется запрос ARP — специальное широковещательное сообщение, получаемое
всеми устройствами локальной сети.
Запрос ARP содержит IP-адрес предполагаемого получателя. Если устройство
опознает IP-адрес как принадлежащий ему, оно отправляет ответное сообщение
со своим физическим адресом тому компьютеру, который сгенерировал запрос
ARP. Полученная информация сохраняется в таблице и кэше ARP для будущего
использования. Таким образом, ARP может определить физический адрес любого
компьютера на основании его IP-адреса.
Структура запросов и ответов ARP представлена на рис. 5.5. При отправке
запроса используются все поля структуры, кроме поля аппаратного адреса
получателя (который, собственно, и пытается определить этот запрос). В ответах
ARP используются все поля.
Тип оборудования A6 бит)
Тип протокола A6 бит)
Длина аппаратного Длина протокольного
адреса адреса
Код операции A6 бит)
Аппаратный адрес отправителя
IP-адрес отправителя
Аппаратный адрес получателя
IP-адрес получателя
Рис 5.5. Структура запросов и ответов ARP
Многие поля запросов и ответов ARP принимают значения из ограниченного
набора. В оставшейся части этого раздела мы более подробно рассмотрим каждое
поле и познакомимся с его назначением.
Тип оборудования
Первое поле определяет тип аппаратного интерфейса. Допустимые значения
перечислены в следующей таблице.
Значение Описание
1 Ethernet
2 Experimental Ethernet
3 Х.25
4 Proteon ProNET (Token Ring)
5 Chaos
6 IEEE 802.X
7 ARCnet
Значение Описание
8 Hyperchannel
9 Lanstar
10 Autonet Short Address
11 LocalTalk
12 LocalTalk
13 Ultra link
14 SMDS
15 Frame Relay
16 ATM (Asynchronous Transmission Mode)
17 HDLC
18 Оптоволоконная линия
19 ATM (Asynchronous Transmission Mode)
20 Последовательная линия
21 ATM (Asynchronous Transmission Mode)
Тип протокола
Второе поле определяет тип протокола, используемого
устройством-отправителем. В сочетании с TCP/IP обычно используется семейство EtherType, а
допустимые значения поля перечислены в следующей таблице.
Значение Описание
512 XEROX PUP
513 PUP Address Translation
1536 XEROX NS IDP
2048 IP (Internet Protocol)
2049 X.75
2050 NBS
2051 ECMA
2052 Chaosnet
2053 X.25 Level 3
2054 ARP (Address Resolution Protocol)
2055 XNS
4096 Berkeley Trailer
21000 BBN Simnet
24577 DEC MOP Dump/Load
Значение Описание
24578 DEC MOP Remote Console
24579 DEC DECnet Phase IV
24580 DEC LAT
24582 DEC
24583 DEC
32773 HP Probe
32784 Excelan
32821 RARP (Reverse ARP)
32823 AppleTalk
32824 DEC LANBridge
Если протокол не относится к семейству EtherType, допускаются другие
значения.
Длина аппаратного адреса (HLen)
Третье поле содержит длину каждого аппаратного адреса в дейтаграмме (в
байтах). Для сетей Ethernet это поле равно 4 байтам.
Длина протокольного адреса (PLen)
Четвертое поле содержит длину протокольного адреса в дейтаграмме (в байтах).
Для протокола IP это поле равно 4 байтам.
Код операции
Пятое поле определяет, является ли дейтаграмма запросом или ответом ARP. Для
запросов ARP его значение равно 1, а для ответов ARP используется значение 2.
Аппаратный адрес отправителя
Шестое поле определяет аппаратный адрес устройства-отправителя.
IP-адрес отправителя
Седьмое поле определяет IP-адрес устройства-отправителя.
Аппаратный адрес получателя
Восьмое поле определяет аппаратный адрес устройства-получателя.
IP-адрес получателя
Девятое поле определяет IP-адрес устройства-получателя.
Схема работы ARP
При отправке пакета IP через сетевые уровни узлов в объединенных сетях TCP/
IP компонент сетевого уровня, осуществляющий маршрутизацию, определяет
IP-адрес следующего маршрутизатора.
Маршрутизирующий компонент сетевого уровня проверяет, находится ли
хост, которому пересылается дейтаграмма IP, в локальной сети или в другом
сетевом сегменте.
Если хост-отправитель определяет, что получатель находится в локальной
сети, он должен получить аппаратный адрес получателя. Если получатель
находится в удаленной сети, то отправителю необходимо узнать аппаратный адрес
порта маршрутизатора, на который должна быть отправлена дейтаграмма IP.
В широковещательных сетях для получения аппаратных адресов,
принадлежащих локальной сети (как узлов-получателей, так и портов маршрутизатора),
применяется протокол ARP.
Протокол ARP реализуется в составе модуля IP в сетях, использующих сервис
разрешения адресов — таких, как широковещательные локальные сети (Ethernet,
Token Ring и т. д.) Протокол ARP инкапсулируется протоколом канального
уровня, но не протоколом IP. Таким образом, протокол ARP не может
маршрутизироваться, то есть никогда не выходит за граничный маршрутизатор.
Прежде чем отправлять запрос, модуль ARP пытается найти нужный адрес
в локальном кэше. Кэш ARP содержит пары, содержащие информацию о
соответствии IP-адресов и аппаратных адресов.
Если искомый IP-адрес присутствует в кэше ARP, протокол находит
соответствующий аппаратный адрес и возвращает его модулю ARP. Модуль ARP
возвращает аппаратный адрес сетевому драйверу, выдавшему заявку на определение
аппаратного адреса целевого узла. Затем сетевой драйвер передает кадр
канального уровня, содержащий дейтаграмму IP, в которой поле аппаратного адреса
получателя заполнено найденным адресом. В этом сценарии запрос ARP не
генерируется, поскольку нужные данные берутся из локального кэша.
Но что произойдет, если аппаратный адрес получателя отсутствует в кэше
ARP? В этом случае модуль ARP генерирует кадр канального уровня с
запросом ARP на получение аппаратного адреса заданного узла. Запрос ARP
рассылается на канальном уровне по всем узлам локального сетевого сегмента. Как
упоминалось выше, запросы/ответы ARP ограничиваются локальным сетевым
сегментом и не выходят за граничный маршрутизатор.
При получении запроса ARP канальный уровень искомого узла передает
пакет модулю разрешения адресов. Запрос ARP рассылается на канальном уровне,
поэтому его получают все узлы локальной сети. Тем не менее на запрос ARP
отвечает только тот узел, IP-адрес которого соответствует искомому IP-адресу.
Ниже описана последовательность действий модуля ARP на узле-получателе.
1. Сначала узел проверяет тип оборудования, указанный в соответствующем
поле запроса ARP. Если тип оборудования успешно опознан, производится
необязательная проверка поля длины аппаратного адреса в запросе ARP.
2. Узел решает, поддерживает ли он тип протокола, указанный в
соответствующем поле запроса ARP. Если ответ положителен, производится
необязательная проверка поля длины протокольного адреса в запросе ARP.
3. Флагу слияния присваивается значение false.
4. Если пара <тип протокола, протокольный адрес отправителя> уже
присутствует в кэше ARP узла, поле аппаратного адреса отправителя обновляется по
данным пакета, а флаг слияния устанавливается в положение true.
5. Затем узел решает, принадлежит ли ему указанный протокольный адрес. Иначе
говоря, он проверяет, соответствует ли его IP-адрес целевому IP-адресу,
указанному в запросе. Если ответ будет положительным, проверяется флаг
слияния, и если он равен false — триплет <тип протокола, протокольный адрес
отправителя, аппаратный адрес отправителя> добавляется в кэш ARP.
6. Наконец, узел проверяет поле кода операции и решает, является ли
полученный пакет запросом. Если ответ будет положительным, поля аппаратного
и протокольного адресов меняются местами, а в поля отправителя заносятся
локальные значения аппаратного и протокольного адресов (см. описание
поля «Код операции» в ответе ARP). Пакет отправляется по новому
аппаратному адресу с того устройства, на котором он был получен.
В описанном алгоритме перед анализом кода операции триплет <тип
протокола, протокольный адрес отправителя, аппаратный адрес отправителя>
включается в кэш ARP только в том случае, если IP-адрес отправителя отсутствует
в кэше ARP. Обновление производится только в кэшах ARP, содержащих
запись с IP-адресом отправителя.
Обновление или добавление записей в кэше ARP производится потому, что
отправителю запроса ARP с большой долей вероятности могут ответить верхние
уровни узла-получателя; когда получатель генерирует кадр канального уровня,
он обращается к кэшу ARP и обнаруживает, что аппаратный адрес отправителя
уже известен. В этом случае запрос ARP на получение аппаратного адреса
отправителя не требуется.
Если в кэше получателя уже присутствует запись для пары <тип протокола,
протокольный адрес отправителя^ то старый аппаратный адрес в кэше
заменяется новым. Это может произойти в следующих ситуациях:
О На узле, отправившем запрос ARP, произведена замена оборудования. В этом
случае изменяется аппаратный адрес того же узла.
О Произошло переназначение IP-адресов, и IP-адрес узла, отправившего запрос
ARP, отличен от того, который хранится в кэше ARP получателя.
Аппаратный адрес отправителя ARP изменяется потому, что это другой узел.
О В сети возникла проблема с дублированием адресов. Другой узел утверждает,
что он обладает тем же IP-адресом, который хранится в кэше получателя.
Первые два случая вполне обычны, но дублирование IP-адресов является
ошибкой и подробно рассматривается в соответствующем разделе этой главы.
Строение протокола ARP
Теоретически поля HLen и PLen в формате пакета ARP являются
избыточными, поскольку длина адресов, аппаратного и протокольного, определяется
значениями полей типа оборудования и типа протокола. Например, если поле
типа оборудования содержит значение 1 (признак кадра Ethernet), из этого
следует, что поле HLen должно содержать 6, поскольку длина адресов Ethernet равна
6 октетам. Аналогично, если во втором поле указан протокол IP, значение PLen
должно быть равно 4, поскольку IP-адреса состоят из 4 октетов.
Избыточные поля HLen и PLen включены для дополнительной проверки
целостности данных, а также для применения средств сетевого мониторинга.
Код операции определяет, является ли пакет запросом или ответом на
предыдущий запрос. Учитывая количество существующих кодов операций,
использование поля из двух октетов выглядит излишним. Вполне хватило бы и одного
октета.
Поля аппаратного адреса и IP-адреса отправителя нужны для их сохранения
в кэше ARP получателя. В запросе ARP поле аппаратного адреса получателя
остается пустым, поскольку именно эта величина возвращается в поле
аппаратного адреса отправителя в ответе ARP. Аппаратный адрес получателя
включается для полноты и для применения средств сетевого мониторинга.
Присутствие IP-адреса получателя в запросе ARP необходимо для того,
чтобы компьютер мог определить, является ли он получателем запроса и нужно ли
отправлять ответ. Поле IP-адреса получателя в ответе ARP в действительности
не обязательно, если предполагается, что ответ инициируется только при
получении запроса. Тем не менее это поле может использоваться при сетевом
мониторинге, а также для упрощения алгоритма обработки запросов/ответов в ARP.
Сетевой мониторинг с использованием ARP
Протокол ARP может использоваться устройством мониторинга для сбора
информации о протоколах более высокого уровня посредством простого анализа
заголовков кадров ARP. Например, анализируя поле типа протокола,
устройство сетевого мониторинга может определить, какие протоколы используются
в сети. Устройство мониторинга должно быть спроектировано с учетом
рекомендаций, приводимых в этом разделе.
При получении пакета ARP устройство мониторинга может сохранить в
таблице тип протокола, протокольный и аппаратный адреса отправителя. Кроме
того, оно может определить длину аппаратного и протокольного адреса по
содержимому полей HLen и PLen пакета ARP. Обратите внимание: пакеты ARP
пересылаются на канальном уровне, и монитор получает все запросы ARP.
Если код операции указывает на то, что пакет содержит запрос ARP, а
протокольный адрес получателя соответствует протокольному адресу монитора,
монитор отправляет ответ ARP точно так же, как бы это сделал любой другой
узел. Монитор не получает ответы ARP, так как они передаются
непосредственно хосту, отправившему запрос.
Тайм-аут в кэше ARP
В реализации кэша ARP часто поддерживается механизм тайм-аута, основанным
на временной пометке записей кэша. Ниже обсуждаются некоторые проблемы,
связанные с тайм-аутом в таблицах ARP.
При перемещении на узле обычно отключается питание, что приводит к
очистке кэша ARP и предотвращает конфликты со старыми записями. Другим
узлам сети обычно ничего не известно о перемещении или отключении
некоторого узла.
Если узел перемещается в пределах сегмента сети, информация об этом узле
в кэше ARP остается действительной, потому что аппаратный и IP-адрес
перемещенного узла остаются прежними.
Если узел отключается, другие узлы не смогут связаться с ним. Они
используют информацию из кэша ARP для обращения к узлу, но не смогут установить
связь. Неудача при установлении связи с узлом может использоваться
реализацией протокола для удаления сведений об узле Перед тем как принять решение
о неудаче, реализация может попытаться отправить еще несколько запросов ARP.
При перемещении в другой сегмент сети узел оказывается за граничным
маршрутизатором. Поскольку IP-адрес содержит информацию о сегменте сети,
к которому подключен узел, IP-адрес перемещенного узла должен измениться
даже в том случае, если его аппаратный адрес остается прежним. Вспомните,
что пересылка данных ARP не выходит за граничный маршрутизатор. На
практике можно считать, что узел был отключен или стал недоступен.
При использовании записи в кэше для пересылки пакетов узлу реализация
ARP обычно обновляет временную пометку этой записи. Пометки также
обновляются при получении запросов ARP от узла, для которого существует запись
в кэше ARP. Если в течение достаточно долгого времени, называемого интервалом
тайм-аута ARP, от узла не поступало ни одного пакета, запись удаляется из кэша.
Реализация ARP также может включать независимый процесс (так
называемый демон). Независимый процесс периодически проверяет кэш ARP и удаляет
старые записи по тайм-ауту. Во многих реализациях TCP/IP по умолчанию
используется интервал тайм-аута продолжительностью 15 минут, а в некоторых
реализациях это значение может задаваться системным администратором.
В усовершенствованном варианте этой схемы демон ARP сначала отправляет
запрос ARP узлу. Если после нескольких повторных попыток ответ ARP не
приходит, запись удаляется. В этом случае запрос ARP отправляется узлу
напрямую и не рассылается в сети, потому что аппаратный адрес узла известен из
кэша ARP. Данная схема стандартна в реализациях ARP для Linux.
Многие реализации TCP/IP позволяют вручную создавать записи в кэше
ARP. Обычно в ручном создании записей нет необходимости, поскольку связи
между IP-адресами и аппаратными адресами определяются протоколом ARP
в динамическом режиме. Записи, созданные вручную, не устаревают по тайм-ауту
и могут использоваться для решения проблем с ошибочными записями в таблице
ARP, возникающими из-за дублирования IP-адресов или неправильной работы
программ. В разных операционных системах для просмотра или внесения
изменений в кэш ARP используются разные программы — как графические, так
и работающие в режиме командной строки. В операционных системах Windows
NT/XP и Unix для этой цели используется утилита ARP. Ниже приведен
синтаксис команды ARP для Windows XP.
Отображение и изменение таблиц преобразования IP-адресов в физические,
используемые протоколом разрешения адресов (ARP)
ARP -s inet_addr eth_addr [if_addr]
ARP -d inet_addr [if_addr]
ARP -a [inet_addr] [-N if_addr]
-а Отображает текущие ARP-записи, опрашивая текущие данные
протокола. Если задан inet_addr, то будут отображены IP
и физический адреса только для заданного компьютера.
Если более одного сетевого интерфейса используют ARP,
то будут отображаться записи для каждой таблицы.
-g To же, что и ключ -а.
inet_addr Определяет IP-адрес
-N if_addr Отображает ARP-записи для заданного в i faddr сетевого
интерфейса.
-d Удаляет узел, задаваемый inet_addr. inet_addr может содержать
символ шаблона * для удаления всех узлов.
-s Добавляет узел и связывает internet адрес inet_addr
с физическим адресом eth_addr. Физический адрес задается
6 байтами (в шестнадцатеричном виде), разделенными дефисом.
Эта связь является постоянной.
eth_addr Определяет физический адрес.
if_addr Если параметр задан, он определяет интернет-адрес интерфейса,
чья таблица преобразования адресов должна измениться.
Если не задан, - будет использован первый доступный интерфейс.
Пример:
> агр -s 157.55.85.212 00-аа-00-62-с6-09 ... Добавляет статическую запись
> агр -а ... Выводит ARP-таблицу.
ARP в мостовых сетях
Сети соединяются при помощи мостовых устройств, работающих на уровне 2 OSI,
и маршрутизаторов, работающих на уровне 3. Мосты расширяют область
действия локальной сети. Работа ARP в локальных сетях требует особого
обсуждения, которое станет темой этого раздела.
Когда попытка установить связь TCP/IP завершается неудачей, протокол
TCP, отвечающий за надежную доставку, пытается переслать пакеты заново.
Если неудача была обусловлена физическим сбоем канала, а к получателю ведут
другие пути, дейтаграмма IP маршрутизируется в обход сбойного участка. Если
TCP не удается восстановить связь, восстановление продолжается на более
низких уровнях, где модуль ARP пытается восстановить связь, производя
широковещательную рассылку запросов ARP. Если получатель находится в локальном
сегменте сети, подобный способ восстановления приемлем. Впрочем, когда
несколько узлов начинают одновременно рассылать широковещательные запросы
ARP, возникают проблемы. Рассмотрим ситуацию, когда центральный хост
становится недоступным из-за сбоя канала или оборудования. Если 100 станций
подключены к центральному хосту в сети и связь с хостом вдруг прерывается,
все 100 станций начинают одновременно передавать широковещательные
запросы ARP. В некоторых системах запросы ARP отправляются каждую секунду;
следовательно, ежесекундно в системе будет генерироваться сто
широковещательных запросов. В результате создается значительный объем сетевого трафика,
который отрицательно влияет на доступность сети для других узлов.
Широковещательный трафик даже может замедлить работу узлов, которые
в настоящий момент не обращаются к сети. Дело в том, что сетевой адаптер и
связанный с ним программный драйвер должны анализировать каждый
широковещательный пакет. В случае с запросами ARP для каждого широковещательного
запроса также должен выполняться модуль ARP. Обработка даже 50 запросов
ARP в секунду требует заметных вычислительных мощностей и замедляет работу
узла. В результате возникает впечатление, что все узлы сети замедляются.
Повторение широковещательных запросов ARP создает дальнейшие
затруднения в мостовых сетях. Сетевые сегменты, разделенные мостами, считаются
частью одного домена MAC, а запросы/ответы ARP должны передаваться через
мосты. Распространение широковещательного трафика за границы мостов
приводит к дальнейшему нарастанию его объема. В таких условиях создание
больших или сложных сетевых топологий с использованием мостов нежелательно.
Дублирование адресов и ARP
IP-адреса в сети должны быть уникальными. Но как обеспечить эту
уникальность? За счет хорошо организованного документирования и правил назначения
IP-адресов. Но так как в назначении IP-адресов участвует человеческий фактор,
нельзя исключать появления в сети узлов с одинаковыми IP-адресами. Если это
произойдет, в сети возникает хаос; сетевые приложения начинают вести себя
непредсказуемо или вовсе прекращают работать.
Чтобы вы лучше поняли последствия от дублирования IP-адресов, в
следующих разделах будут рассмотрены два сценария:
О дублирование IP-адресов клиентов TCP/IP;
О дублирование IP-адресов серверов TCP/IP.
Дублирование IP-адресов клиентов TCP/IP
Предположим, два клиента TCP/IP (далее — «клиент 1» и «клиент 2»)
обращаются к центральному серверу TCP/IP по IP-адресу 144.19.74.102. Аппаратный
адрес сервера равен 080020021545.
Клиенты 1 и 2 используют один и тот же IP-адрес 144.19.74.1. Их
аппаратные адреса равны 0000С0085121 и 0000С0075106 соответственно.
Клиент 1 начинает сеанс FTP на сервере TCP/IP. Перед началом сеанса FTP
клиент 1 рассылает широковещательный запрос ARP для получения аппаратного
адреса сервера TCP/IP. При получении запроса ARP сервер TCP/IP добавляет
в кэш ARP запись для отправителя запроса (клиента 1) и отправляет ему ответ
ARP. При получении ответа ARP клиент 1 добавляет запись для сервера TCP/IP
в свой локальный кэш ARP. На этой стадии кэши ARP на сервере TCP/IP и на
клиенте 1 находятся в следующем состоянии.
Сервер TCP/IP:
IP-адрес Аппаратный адрес
144.19.74.1 0000С0085121
Клиент 1:
IP-адрес Аппаратный адрес
144.19.74.102 080020021545
Во второй фазе клиент 2 пытается открыть сеанс TCP/IP (например, другой
сеанс FTP) с тем же сервером TCP/IP.
Прежде чем устанавливать связь, клиент 2 должен узнать аппаратный адрес
сервера TCP/IP. Он пытается сделать это, отправляя запрос ARP. При
получении запроса ARP сервер TCP/IP должен занести информацию об отправителе
запроса (клиенте 2) в кэш ARP и вернуть ему ответ. Сервер TCP/IP
обнаруживает, что в кэше ARP уже имеется запись для адреса 144.19.74.1. В соответствии
с RFC 826 сервер TCP/IP должен заменить существующую запись новой.
Большинство реализаций TCP выполняет замену автоматически, без
предупреждения о возможности потенциального дублирования IP-адресов, хотя некоторые
реализации выдают такое предупреждение. Сервер TCP/IP отвечает на запрос
ARP от клиента 2. При получении ответа компьютер 2 добавляет запись с
данными сервера TCP/IP в свой локальный кэш ARP. На этой стадии кэши ARP
на сервере TCP/IP и на клиенте 2 находятся в следующем состоянии.
Сервер TCP/IP:
IP-адрес Аппаратный адрес
144.19.74.1 0000С0075106
Клиент 1:
IP-адрес Аппаратный адрес
144.19.74.102 080020021545
Когда сервер TCP/IP захочет отправить данные клиенту 1, он ищет
аппаратный адрес клиента 1 по IP-адресу 144.19.74.1 в локальном кэше ARP и
отправляет данные по найденному адресу. К сожалению, этот аппаратный адрес
принадлежит клиенту 2, поэтому данные будут отправлены клиенту 2. Клиент 1, не
получив ожидаемые данные, пытается повторить последний запрос, но сервер
TCP/IP снова отправит ответ клиенту 2. Клиент 1 «виснет» в ожидании ответа.
Со временем операция будет отменена по тайм-ауту, или компьютер придется
перезагрузить. Так или иначе, приложение, которое раньше благополучно
работало, вдруг перестает работать, к немалому удивлению пользователя и
системного администратора.
Клиент 2 неожиданно для себя получает данные, предназначенные для
клиента 1. Вероятно, он отвергнет эти данные, может быть сгенерирует сообщение
об ошибке и продолжит свой сеанс с сервером TCP/IP. Также не исключено,
что компьютер придет в замешательство и «зависнет».
Если пользователь клиента 1 перезагрузит «зависший» компьютер и
попытается снова подключиться к серверу TCP/IP, данные кэша клиента 2 на сервере
TCP/IP будут заменены данными клиента 1. Теперь «зависает» клиент 2, и
ситуация повторяется до тех пор, пока пользователи не оставят свои попытки.
Если пользователи клиентов 1 и 2 не обмениваются информацией о
возникающих проблемах, каждый пользователь видит происходящее лишь со своей
стороны — его клиент «виснет» на середине сеанса работы с сервером TCP/IP.
Если обращения к серверу происходят в разное время, не исключено, что
проблема не проявится, а дублирование IP-адресов останется незамеченным. Если
же пользователи будут сталкиваться с проблемой время от времени, они решат,
что происходящее вызвано какими-то сетевыми сбоями и не станут сообщать
о проблеме. Дублирование адресов снова останется незамеченным.
Дублирование IP-адресов на серверах TCP/IP
Теперь рассмотрим несколько иную ситуацию. Имеются два сервера TCP/IP
(далее — «сервер 1» и «сервер 2»), которым были присвоены одинаковые IP-адреса
144.19.74.102. Аппаратные адреса серверов равны 080020021545 и АА0004126750.
Клиент с IP-адресом 144.19.74.1 пытается обратиться к серверу TCP/IP по
адресу 144.19.74.102. Аппаратный адрес клиента равен 0000С0085121.
Клиент пытается соединиться с сервером 2. Прежде чем создать соединение
TCP/IP, клиент генерирует широковещательный запрос ARP для получения
аппаратного адреса сервера TCP/IP. Один и тот же аппаратный адрес 144.19.74.102
присвоен двум серверам TCP/IP. При получении запроса ARP оба сервера
создают записи для отправителя запроса ARP (клиента) в своих локальных кэшах
ARP и отправляют ему ответ ARP. Клиент принимает первый ответ ARP и молча
игнорирует второй ответ. Если ответ сервера 2 достигнет клиента первым,
клиент включит в локальный кэш запись для сервера 2. На этой стадии кэши ARP
на серверах и клиенте находятся в следующем состоянии.
Сервер 1:
IP-адрес Аппаратный адрес
144.19.74.1 0000С0085121
Сервер 2:
IP-адрес Аппаратный адрес
144.19.74.1 АА0003126750
Клиент 1:
IP-адрес Аппаратный адрес
144.19.74.102 080020021545
Клиент продолжает работать с сервером 2, а не с сервером 1, как
предполагалось изначально. Если нужная служба отсутствует на сервере 2, подключение
завершается неудачей, а пользователь неожиданно получает сообщение о том,
что служба не поддерживается сервером. Это сильно озадачит пользователя,
особенно если раньше он успешно пользовался услугами сервера 1.
Если на сервере 2 имеется нужная служба, пользователь пытается
подключиться к ней. Для таких служб, как Telnet и FTP, требуется ввести имя и пароль.
Только особенно внимательный пользователь заметит, что имя/номер версии
сервера FTP или Telnet, выводимый на экране, отличается от предполагаемого.
Если на сервере 2 не существует учетной записи с таким же именем и паролем,
как на сервере 1, попытка подключения будет отвергнута. Если имя и пароль
совпадают на обоих серверах, пользователь подключится не к тому серверу, к
которому он собирался подключиться. Возможны разные последствия — например,
пользователь может не найти нужных файлов или данных.
Если сервер является многоадресным (сервер с несколькими сетевыми
подключениями) и выполняет функции маршрутизатора, ситуация может оказаться
еще более запутанной — пакеты, предназначенные для внешней сети, могут
следовать по другому маршруту или не будут доставлены из-за того, что они будут
приняты не тем сервером.
Проверка дублирования адресов ARP
Многие реализации TCP/IP при запуске производят широковещательную
рассылку запроса ARP. В рассылаемом запросе поле IP-адреса получателя
заполняется IP-адресом запускаемого узла.
Исходный запрос ARP проверяет, имеются ли в сети узлы с одинаковым
IP-адресом. Если узел получит ответ ARP, значит, IP-адрес другого узла
(сгенерировавшего ответ ARP) совпадает с IP-адресом запускаемого узла.
Запускаемый узел должен сообщить о дублировании IP-адресов каким-либо подходящим
способом. Узел, отвечающий на запрос ARP, даже может дополнительно
проверить поле IP-адреса отправителя и сравнить его с собственным IP-адресом.
Если IP-адреса отправителя и получателя совпадают, то отвечающий узел может
сгенерировать сообщение о дублировании IP-адресов.
Кадр ARP, структура которого была описана выше, позволяет обнаруживать
только дублирующиеся IP-адреса в том же сегменте сети. Поскольку пакеты
ARP не выходят за маршрутизатор, они не позволяют обнаружить проблемы
с дублированием IP-адресов в сегментах сетей, соединенных маршрутизаторами.
Исходный широковещательный запрос ARP также предназначен для узлов,
приступающих к обновлению кэша ARP, у которых имеется запись для
запускаемого узла. Если аппаратный адрес запускаемого узла изменился (из-за смены
сетевого оборудования), то все узлы, получившие запрос, должны удалить старый
аппаратный адрес и обновить свои кэши ARP новым адресом.
Proxy ARP
Ранее в этой главе было показано, что две сети, соединенные через шлюз, могут
содержать одинаковые сетевые адреса. Шлюз должен определить, к какой из сетей
относится физический или IP-адрес входящей дейтаграммы. Для этого он
может воспользоваться модифицированной версией ARP, называемой Proxy ARP.
Proxy ARP строит кэш ARP, состоящий из записей обеих сетей. Шлюз должен
управлять запросами и ответами ARP, пересекающими границу между сетями.
Объединяя два кэша ARP, Proxy ARP вносит дополнительную гибкость в
процесс разрешения адресов и предотвращает появление лишних дейтаграмм с
запросами/ответами ARP, когда адрес находится за границей шлюза.
RARP
Если устройство не знает свой IP-адрес, оно не сможет сгенерировать запросы
и ответы ARP. Подобные ситуации характерны для таких устройств, как
бездисковые рабочие станции в сети. Единственный адрес, известный устройству, — это
физический адрес, установленный на сетевом адаптере.
Простейший выход из ситуации заключается в использовании протокола RARP
(Reverse Address Resolution Protocol), который по выполняемым функциям
противоположен ARP. Компьютер отправляет физический адрес и ожидает получить
обратно IP-адрес. Ответ, содержащий IP-адрес, отправляется сервером RARP —
хостом, который может предоставить эту информацию. Хотя
устройство-отправитель передает сообщение в широковещательном режиме, в правилах RARP
сказано, что только сервер RARP может сгенерировать ответ. Во многих сетях
используется несколько серверов RARP, как для распределения нагрузки, так
и для выполнения резервных функций при возникновении проблем.
RARP часто используется «бездисковыми станциями», не имеющими
локальных накопителей. На самом деле современные бездисковые станции часто
оснащаются локальным диском, но он используется только для ускорения работы
операционной системы, но не для хранения параметров TCP/IP, хранящихся на
удаленном сервере. Например, на локальном диске может храниться локальный
файл подкачки, необходимый для реализации виртуальной памяти в
операционной системе.
На бездисковых станциях также имеется копия операционной системы,
хранящейся на удаленном сервере. При запуске бездисковая станция загружает
копию операционной системы с удаленного сервера в память. Но чтобы станция
могла начать загрузку образа операционной системы с использованием
протоколов передачи файлов TCP/IP, ей нужно знать свой IP-адрес. Этот адрес не
может быть произвольной величиной; он должен быть уникальным и иметь тот же
префикс, что и IP-адреса других узлов сегмента сети. Например, если другие
станции сети имеют IP-адреса 199.245.180.1, 199.245.180.5 и 199.245.180.7, то
общий префикс имеет вид «199.245.180». Бездисковая станция тоже должна иметь
тот же префикс. Общий префикс необходим из-за того, что он определяет
маршрут пакета в сегменте сети.
Обычно бездисковые станции получают свой IP-адрес, отправляя запрос
серверам текущего сегмента сети. Поскольку информация об адресе удаленного
сервера тоже недоступна, запрос отправляется в виде широковещательной
рассылки канального уровня. Один из механизмов получения IP-адресов от
удаленных серверов основан на использовании протокола RARP (Reverse Address
Resolution Protocol). Этот протокол называется «обратным» (reverse), потому
что он выполняет преобразование адреса, обратное тому, которое выполняется
протоколом ARP.
Бездисковые станции используются для снижения стоимости оборудования,
упрощения конфигурации и обновления узлов за счет централизованного
хранения важнейшей информации, а также снижения вероятности проникновения
вирусов в систему, поскольку конечный пользователь не может легко установить
свою программу на бездисковую станцию.
Схема работы RARP
Узел, желающий узнать свой IP-адрес (клиент RARP), рассылает
широковещательный запрос, называемый запросом RARP. Запрос RARP рассылается на
канальном уровне, потому что клиент RARP не знает адрес (аппаратный или IP)
удаленного сервера. Удаленный сервер, обрабатывающий запрос RARP,
называется сервером RARP.
При наличии нескольких серверов RARP все серверы пытаются обработать
запрос RARP. Обычно клиент RARP принимает первый полученный ответ и
игнорирует остальные.
Сервер RARP содержит таблицу IP-адресов для узлов сегмента сети. Таблица
индексируется по идентификатору, уникальному для каждого компьютера. Этот
уникальный идентификатор передается в запросе RARP. Для бездисковых
станций этот уникальный идентификатор должен представлять собой некий
аппаратный и достаточно легко определяемый параметр. Идентификатор не может
храниться локально, на бездисковых станциях отсутствует локальный диск,
который бы мог использоваться для этой цели. Проектировщики RARP (см. STD 38,
RFC 903) решили использовать для идентификации аппаратные адреса, поскольку
они уникальны в границах сегмента сети и легкодоступны для сетевых драйверов.
Получая запрос RARP, сервер RARP просматривает таблицу ассоциаций
между IP-адресами и аппаратными адресами (рис. 5.6). Если в процессе просмотра
будет найдена запись, соответствующая аппаратному адресу в запросе RARP,
протокол возвращает найденный IP-адрес в ответе RARP. Ответ RARP не
рассылается в широковещательном режиме; сервер берет аппаратный адрес клиента
RARP из запроса RARP.
Пакеты запросов и ответов RARP имеют такую же структуру, как пакеты ARP.
ARP и RARP различаются по значениям, содержащимся в полях. Если пакет
RARP передается в кадре Ethernet, используется код EtherType 8035 (шести.).
Ниже перечислены значения отдельных полей в пакетах RARP.
Запрос RARP:
О Аппаратный адрес получателя = рассылка.
О Аппаратный адрес отправителя = аппаратный адрес клиента RARP.
О EtherType «= 8035 (шести.).
О Код операции = 3 (запрос RARP).
О Аппаратный адрес отправителя = аппаратный адрес клиента RARP.
О IP-адрес отправителя * не определен; обычно используется 0.0.0.0.
RARP Operation
Адрес отправителя = PA
Адрес получателя = рассылка
Ethertype = 8035 hex
С RARP ^^L
( daemon Д1
^—/"~*^ВЭ Сервер RARP
| Запрос RARP | Канал [—► Рассылка ШШ Г "Ч
Г ^ ^ л А
—£—У*—У* ;—°— /; \
<—| Канал | Ответ RARP \<r ! \
шШШШШШ ШИ | адрес | адрес |
Рис. 5.6. Схема работы RARP (с разрешения Learning Tree)
О Аппаратный адрес получателя = аппаратный адрес клиента RARP.
О IP-адрес отправителя = не определен.
Ответ RARP:
О Аппаратный адрес получателя = аппаратный адрес клиента RARP.
О Аппаратный адрес отправителя = аппаратный адрес сервера RARP.
О EtherType = 8035 (шести.).
О Код операции = 4 (ответ RARP).
О Аппаратный адрес отправителя = аппаратный адрес сервера RARP.
О IP-адрес отправителя = IP-адрес сервера RARP.
О Аппаратный адрес получателя = аппаратный адрес клиента RARP.
О IP-адрес отправителя = IP-адрес клиента RARP (возвращаемое значение).
Поле аппаратного адреса получателя в запросе заполняется аппаратным
адресом клиента RARP. Это делается для удобства сервера, чтобы ему не пришлось
заполнять это поле, которое должно содержать аппаратный адрес клиента RARP
в ответе.
Сетевой драйвер анализирует поле EtherType, определяет, что пакет является
пакетом RARP (EtherType - 8035 шести.) и отправляет запрос модулю RARP.
Запросам RARP соответствует код операции 3, а ответам RARP — код операции
4. Содержимое этих полей также может использоваться для того, чтобы отличить
пакеты RARP от пакетов ARP. Тем не менее такой подход недостаточно
эффективен. Модулю ARP пришлось бы анализировать поле кода операции в пакете,
и если код указывает на пакет RARP — передать пакет модулю RARP.
Использование поля EtherType позволяет более эффективно выполнить
демультиплексирование на низком уровне.
ПРИМЕЧАНИЕ
Во многих реализациях поддержка RARP не интегрируется в модулях ARP и IP. Ее необходимо
запускать в виде отдельного процесса (например, демона) на компьютере, выполняющем функции
сервера RARP.
Сбой сервера RARP
Если сервер RARP становится недоступным из-за сбоя сетевого соединения или
из-за выхода компьютера из строя, клиенты RARP не смогут нормально
загрузиться. Они будут снова и снова рассылать широковещательные запросы RARP.
Одновременная рассылка запросов многими клиентами RARP серьезно
увеличивает сетевой трафик.
Отсутствие ожидаемого ответа RARP приводит к более серьезным
последствиям, нежели для протокола ARP. Отсутствие ответа ARP означает лишь то, что
конкретный хост и его службы недоступны в настоящий момент — клиент ARP
может попытаться обратиться к другим узлам сети. Тем не менее при отсутствии
ответа RARP клиент не сможет загрузиться. Многие клиенты RARP продолжают
рассылать широковещательные запросы в течение неопределенно долгого времени
в надежде, что сервер RARP когда-нибудь снова станет доступным. Следовательно,
повторение широковещательных запросов RARP порождает больше проблем, чем
повторение запросов ARP, из-за возрастания сетевого трафика.
Основные и резервные серверы RARP
Чтобы сделать работу RARP более надежной, можно использовать несколько
серверов RARP. Если в сети работает несколько серверов RARP, при получении
широковещательного запроса каждый сервер попытается ответить на этот запрос.
Только один ответ используется клиентом RARP; все остальные ответы
игнорируются. Для предотвращения рассылки множественных ответов RARP
применяется схема, при которой один сервер RARP назначается основным, а все
остальные — резервными.
Получив запрос RARP, основной сервер отвечает на него. Резервные серверы
не отвечают, но регистрируют время прибытия запроса. Если основной сервер
не ответит в течение интервала тайм-аута, то резервный сервер RARP считает,
что основной сервер недоступен, и отвечает на запрос.
Если в сети работает несколько резервных серверов, все резервные серверы
попытаются ответить одновременно. В усовершенствованном варианте этой схемы
резервный сервер отвечает не сразу, а ожидает в течение случайного интервала
времени. При нормальной работе основного сервера дополнительных задержек
с отправкой ответа RARP не будет. Если основной сервер вышел из строя,
возможна небольшая случайная задержка перед тем, как ответит один из резервных
серверов RARP.
Команда ARP
Многие (но не все) реализации TCP/IP предоставляют средства для проверки
содержимого кэша. В Unix и Windows NT/2000/XP существует команда агр,
выводящая все содержимое кэша ARP. Для просмотра кэша команда вводится
с ключом -а:
$ агр -а
brutus <205.150.89.3> at 0:0:d2:03:08:10
В данном примере кэш содержит данные компьютера brutus с IP-адресом
205.150.89.3 и адресом MAC 0:0:d2:03:08:10.
Команда агр обычно используется только тогда, когда администратор сети
пытается решить проблемы с дублированием IP-адресов. Если в сети имеются
два компьютера с одинаковыми IP-адресами (но разными адресами MAC),
информация о них будет присутствовать в кэше ARP.
Итоги
В этой главе были рассмотрены самые распространенные протоколы
разрешения адресов: ARP, Proxy ARP и RARP. Глава начинается с описания того, как
дейтаграммы TCP/IP собираются в кадры Ethernet. После знакомства со всеми
иерархическими уровнями, задействованными в работе межсетевых объединений,
вы получили достаточно хорошее представление о том, как работает TCP/IP
и как происходит передача данных по сети заданному хосту.
fZ DNS
Рима С. Регас (Rima S. Regas)
Каранжит С. Сиян (Karanjit S. Siyan)
На ранней стадии развития ARPANET, когда сеть оставалась относительно
небольшой, пользователи сети должны были поддерживать конфигурационный
файл HOSTS с информацией о рабочих станциях, входящих в сеть. Файл был
необходим для взаимодействия с другими системами в сети. Тем не менее такое
решение создавало немало проблем, поскольку файл HOSTS приходилось
обновлять вручную на каждом компьютере. Автоматизация настройки конфигурации
практически отсутствовала, вследствие чего обновление файла было
утомительным и долгим процессом.
Файл HOSTS содержит информацию о том, какой IP-адрес связывается с тем
или иным именем. Когда компьютеру требовалось найти другой компьютер в сети,
он обращался к локальному файлу HOSTS. Компьютер, не имеющий записи в
файле HOSTS, фактически не существовал для сети. Служба DNS (Domain Name
System) кардинально изменила эту ситуацию. У системных администраторов
появляется возможность использования сервера в качестве хоста DNS.
Например, когда компьютеру в сети потребуется узнать данные другого сервера, он
обращается к файлу HOSTS.
В наше время файл HOSTS продолжает использоваться, но обычно только для
того, чтобы предотвратить поиск локальных компьютеров средствами DNS.
Выборка информации из файла происходит гораздо быстрее. Короче говоря,
сетевое программное обеспечение компьютера настроено таким образом, чтобы оно
просматривало локальный файл HOSTS перед тем, как обращаться к серверу DNS.
При обнаружении информации в файле клиентская программа продолжает
работать с удаленным хостом, что существенно уменьшает затраты времени по
сравнению с получением IP-адреса средствами DNS.
Система доменных имен: общие принципы
Как известно, имена запоминаются проще, чем числа. Многие люди обладают
феноменальной способностью запоминать телефонные номера, адреса,
денежные суммы и другие числа, но в настоящее время существует слишком много
IP-адресов, чтобы можно было запомнить хотя бы их малую часть. По этой
причине была разработана методика присваивания имен IP-адресам,
основанная на мнемоническом принципе. Например, C|Net было присвоено доменное имя
www.cnet.com (обратите внимание на отсутствие вертикальной черты и
прописных букв). По сравнению с именем сайта оно выглядит невыразительно, но тем
не менее оно работает и прекрасно ассоциируется с именем сайта. C|Net — один
из самых больших и посещаемых сайтов в мире.
Система DNS появилась из-за очевидной необходимости в системе, которая
бы транслировала символические имена в IP-адреса. В результате трансляции
или разрешения доменного имени сайта (например, www.cnet.com) возвращается
IP-адрес B04.162.80.181), который используется для обращения к данным. Именно
таким образом в ваш браузер доставляется запрашиваемая информация. Процесс
требовал создания сети систем, которые назывались серверами DNS (Domain
Name Service).
Частью работы по поддержанию системы DNS в Интернете является
поддержка первичных (корневых) доменных серверов, к которым остальные серверы
DNS обращаются для получения информации о доменах верхнего уровня,
зарегистрированных в Интернете. Информация DNS распределяется по
большому количеству серверов DNS. Если ваш сервер DNS не может преобразовать
доменное имя в IP-адрес, он обращается к другому серверу DNS, который, как
предполагается, обладает более полной информацией о преобразуемом имени.
Если этот сервер тоже не справляется с преобразованием имени, он может
вернуть ссылку на другой сервер DNS, который может знать ответ. Процесс
повторяется до тех пор, пока не произойдет тайм-аут. В этом случае исходному узлу
возвращается признак ошибки и выводится соответствующее сообщение (если
такая возможность поддерживается клиентом). Если поиски web-сайта
завершаются неудачей, браузер выводит сообщение о том, что сайт найти не удалось
или произошла ошибка DNS.
Ссылочный механизм, описанный выше, обычно используется серверами
DNS при обращении с запросами к другим серверам DNS. Подобный тип запроса
DNS называется итеративным. Резольвер DNS (другое название клиента DNS)
находится на узле, выдавшем запрос DNS. Резольвер не генерирует итеративные
запросы, вместо этого он выдает запрос другого типа — так называемый
рекурсивный запрос. Узел, отправивший рекурсивный запрос серверу DNS, ожидает,
что последний вернет окончательный ответ или информацию о том, что имя
разрешить не удалось. Получив рекурсивный запрос, сервер DNS не возвращает
ссылку на другой сервер DNS; он должен самостоятельно сгенерировать
итеративные запросы для получения окончательного ответа.
Система DNS начинается с корневых серверов DNS верхнего уровня, далее
информация об именах и IP-адресах распространяется по серверам DNS,
расположенным по всему миру. Иерархическое строение системы, непосредственно
обусловленное ее организационной структурой, наглядно демонстрирует
простой пример — отсутствие локальной информации о преобразовании на сервере
DNS. Если сервер не может найти нужный IP-адрес в собственной базе данных,
он обращается к другому серверу DNS; это продолжается до тех пор, пока
информация не будет найдена или не произойдет тайм-аут. В следующем разделе
приводится более подробное описание структуры DNS, поскольку
иерархическое строение системы имеет другой, очень важный аспект.
Иерархическое строение DNS
В исходном документе RFC 819, опубликованном в 1982 году, Зав-Синг Су
(Zaw-Sing Su) и Джон Постел (Jon Postel) изложили основные планы и
концепции DNS. Ниже приведен фрагмент, который дает представление об уровне
изложения.
«...Совокупность доменов формирует иерархию. Используя представление
из теории графов, эту иерархию можно смоделировать в виде направленного
графа. Направленный граф представляет собой набор узлов и ребер, при этом
ребра определяются упорядоченными парами узлов [1]. Каждый узел графа
представляет домен. Упорядоченная пара (В, А), то есть ребро, следующее от
В к А, означает, что В является субдоменом А, а В является простым именем,
уникальным в А».
Понять такой текст непросто, поэтому мы воспользуемся более простым
объяснением. Основной принцип прост: имеется некий домен верхнего уровня —
например, com или edu. Домены com и edu находятся на верхнем уровне и не
имеют вышестоящих доменов. Впрочем, существует одно исключение: на самом
деле после com должна стоять точка (com.). Она обозначает домен еще более
высокого уровня, чем com, который называется корневым доменом. Домены
верхнего уровня (такие, как com, edu и org) называются универсальным
множеством имен, потому что они содержат домены и субдомены, расположенные на
более низких уровнях иерархии.
После верхнего уровня следуют промежуточные домены, или домены второго
уровня. В качестве примеров промежуточных доменов можно привести домены
coke.com, whltehouse.gov и disney.com. Эти домены также могут регистрироваться,
но обычно это делается только для того, чтобы зарезервировать целый
диапазон логически связанных доменных имен. На практике чаще встречается
регистрация субдоменов, или конечных (endpoint) доменов, как их называли Су
и Постел. Примеры — www.coke.com, www.whitehouse.gov и www.disney.com.
Разумеется, все эти домены типичны для регистрационной системы InterNIC. В
других системах, находящихся за пределами Соединенных Штатов, используются
различные схемы обозначения направленности и страны, к которой относится
домен. Например, имя www.bbc.co.uk указывает на то, что сайт ВВС имеет
коммерческую направленность (со, аналог com) и находится в Соединенном
Королевстве (uk).
Имена субдоменов выбираются почти произвольно. Примеры — www.netscape.
com, home.netscape.com, wwwl.netscape.com. Они могут находиться в разных местах
Интернета и содержать разную информацию. Конечно, если web-мастер сочтет
нужным, несколько имен могут ссылаться на один сайт и одну страницу. Именно
так обстоит дело с сайтом Netscape; к нему можно обратиться по любому из
перечисленных URL.
U
III U: Универсальное множество имен
I E | I: Промежуточный домен
/\ Е: Конечный домен
Е Е I
Е Е Е
Рис. 6.1. Исходная иерархия доменов
ПРИМЕЧАНИЕ
Другой пример: Webopaedia также решила зарегистрировать субдомен webopedia.com, поскольку
у многих пользователей возникали проблемы с дифтонгом аэ.
Делегирование полномочий
Устройство системы DNS позволяет серверам, подчиненным по отношению к
корневым серверам имен, контролировать заданный домен. Хорошим примером
является локальный поставщик услуг Интернета, который обеспечивает хостинг
web-сайтов для отдельных лиц и организаций. Когда некая организация X
регистрирует в InterNIC свое доменное имя (www.companyx.com), она включает в заявку
первичный и вторичный серверы DNS своего поставщика. InterNIC заносит эту
информацию на свой корневой сервер .com и обеспечивает ее дальнейшее
распространение.
ПРИМЕЧАНИЕ
Серверы DNS периодически синхронизируют свои локальные базы данных с базами данных других
серверов DNS и проверяют, не появились ли новые записи на корневых серверах. Этот процесс
называется распространением (propagation). Регистрация доменных имен требует некоторого
времени, но зарегистрированное имя распространяется в Интернете в течение примерно трех-четы-
рех дней и становится доступным во всем мире.
Чтобы эта система нормально работала, возникла потребность в средствах
определения местонахождения компьютера в сети. Из этой потребности стала
развиваться иерархия систем и механизмы классификации компьютеров по
выполняемым функциям. Например, если компьютер находится в учебном
заведении, он принадлежит к домену верхнего уровня .edu. Сайты коммерческой
направленности принадлежат к домену верхнего уровня .com и т. д. Данная
концепция формирует основу логической иерархии DNS, но не определяет
структуру корневых серверов имен (вскоре мы вернемся к этой теме).
Распределенная база данных DNS
Архитектура распределенной базы данных, заложенная в основу DNS, обладает
большими возможностями. Как упоминалось выше, полномочия делегируются
другим серверам, местонахождение которых лучше подходит для обработки
трафика некоторого домена или субдомена. Распространение информации по
серверам происходит по хорошо продуманному плану.
Каждому домену назначается владелец. Информация о владельце
определяется как часть доменных данных SOA (Start of Authority), которые будут более
подробно рассмотрены ниже. Домен верхнего уровня — например, com. —
делегирует полномочия контроллера для некоторого доменного имени (скажем,
disney.com) серверам DNS, указанным в качестве первичных. Тем самым
контроллер домена верхнего уровня освобождается от необходимости обрабатывать
каждый запрос DNS в Интернете.
После того как с контроллером домена будут связаны данные SOA, он сможет
делегировать полномочия контроллера для субдоменов другим серверам DNS
и т. д. По этому принципу организуется делегирование полномочий в иерархии
серверов DNS от верхнего уровня до нижнего.
Домены и зоны
Домены и зоны часто работают вместе, но между ними существует тонкое
различие. Зоной (zone) называется первичный домен универсального множества имен,
делегированный другому серверу DNS для административных целей. Например,
Disney.com — это зона, а www.disney.com — хост, находящийся в этой зоне. Зона
может состоять из одного домена или нескольких субдоменов. Например, студия
Диснея может создать субдомены с именами east-coast.Disney.com и west-coast.
Disney.com. В случае делегирования эти субдомены образуют отдельные зоны
с именами east-coast.Disney.com и west-coast.Disney.com, которые будут иметь
собственные серверы DNS. Без делегирования эти субдомены останутся частью
зоны Disney.com и будут обслуживаться серверами DNS сервера Disney.com.
Административные обязанности делегируются первичному серверу DNS.
Первичный сервер DNS сайта Диснея, huey.disney.com, имеет IP-адрес 204.128.192.10.
Поскольку Huey назначается первичным сервером DNS для домена Disney, он
также является первичным сервером DNS для зоны Disney.com. Назначенный
владелец этого сервера имеет адрес root@huey.disney.com, который хранится в SOA
в виде root.huey.disney.com.
ПРИМЕЧАНИЕ
Учтите, что в правильно отформатированных данных SOA символ @ в адресе электронной почты
администратора заменяется точкой. В некоторых компаниях используются адреса электронной
почты, в которых перед @ стоит дополнительный разделитель. В этом случае возникнут проблемы,
потому что адрес вида host.admin@example.com будет храниться в SOA в виде host.admin.
example.com. Любая система, пытающаяся преобразовать этот адрес, интерпретирует его в виде
host@admin.example.com, что приводит к ошибке DNS (если ошибочно интерпретированный
адрес не существует).
Домены верхнего уровня в Интернете
Существует несколько доменов верхнего уровня, из которых наибольшей
известностью пользуются домены COM, EDU, GOV, MIL, NET и ORG. Тем не менее
существует множество других доменов, большинство из них находится в других странах.
Каждой стране присвоен домен верхнего уровня, имя которого состоит из двух
букв. Так, Великобритании присвоен домен UK (на самом деле официальный
домен верхнего уровня этой страны называется GB, но это имя используется
редко); Новой Зеландии — домен NZ, Японии — JP и т. д. Пример использования
национального домена верхнего уровня приводился выше — www.bbc.co.uk.
ПРИМЕЧАНИЕ
В адресах, находящихся за пределами США, используются и другие домены. Так, домен СО,
означающий коммерческую направленность, является близким аналогом домена InterNIC COM.
ВНИМАНИЕ
Ничто не мешает регистрировать домены в других странах, даже если сервер находится вдали
от страны, указанной в URL.
Выбор сервера имен
Серверы имен существуют на многих платформах, включая Windows NT/2000/
ХР, Unix, NetWare, Macintosh и т. д. В Windows NT/2000 имеется готовая
реализация сервера DNS. Для Apple существует бесплатный сервер DNS, который
называется MacDNS. В системах семейства Unix присутствует широко
распространенный и надежный сервер BIND. Тем не менее существует ряд мощных
серверов DNS, разработанных независимыми фирмами.
Оценку различных серверов DNS можно найти на таких сайтах, как Dave Central
(www.davecentral.com) и Tucows (www.tucows.com, также существует ряд местных
филиалов). Эти сайты рецензируют практически все программное обеспечение,
проходящее через них, и дают хорошее представление о различных реализациях.
Процесс разрешения имен
Когда клиент (например, браузер) выдает запрос к некоторому URL, этот
запрос передается локальному серверу DNS, который пытается преобразовать имя
в IP-адрес. Если преобразование проходит успешно, данные передаются дальше,
а сервер получает следующий запрос. Если сервер не находит адрес, у него есть
два варианта дальнейших действий в зависимости от настройки.
Рекурсивные запросы
Наиболее типичными являются рекурсивные запросы. Если запрос поступает
на сервер и в кэше сервера обнаруживается запись А (см. ниже), поиск на этом
останавливается. В противном случае сервер должен обратиться с запросом к
другому серверу, то есть передать запрос на более высокий уровень. При этом также
учитывается значение TTL (срока жизни) запроса. Если поиск записи А
занимает слишком много времени, запрос «умирает», а исходный сервер DNS
возвращает ошибку «address not found».
Итеративные запросы
Итеративные запросы должны оставаться локальными по нескольким
причинам, чаще всего из-за недоступности другого сервера DNS. Иногда рекурсия
отключается на сервере DNS, к которому вы обращаетесь, но это маловероятно.
Сервер прилагает все усилия к тому, чтобы найти в своем кэше лучшее возможное
совпадение. Но если данных нет — значит, их нет, и тогда возвращается ошибка.
Кэширование
По мере выполнения своих текущих задач сервер DNS собирает информацию
и сохраняет ее в виде ресурсных записей (RR, Resource Records), содержащих
сведения о запрашиваемых URL. При этом также учитывается значение TTL.
Сервер кэширует столько информации, сколько ему разрешено кэшировать,
и хранит ее, пока информация остается действительной.
Запросы на обратное разрешение
Типичный «прямой» запрос пытается найти IP-адрес по известному URL. При
обратном разрешении решается противоположная задача — поиск URL по
известному IP-адресу. В настоящее время существует несколько утилит,
выполняющих поиск подобного рода. Для системы Windows лучшей программой
такого рода является CyberKit Люка Ниенса (Luc Niejens) — бесплатная сетевая
утилита, которую можно загрузить по адресу www.ping.be/cyberkit.
Безопасность DNS
Клиенты могут производить безопасное обновление данных на динамическом
сервере DNS, чтобы их записи автоматически обновлялись без участия
администратора.
Ресурсные записи (RR)
Все типы ресурсных записей DNS имеют сходный формат. Хотя в файлах DNS
существует множество сокращенных обозначений и аббревиатур, в следующих
примерах для предотвращения путаницы и неоднозначной интерпретации
используется простейшая схема записи.
Первое поле в записи DNS всегда содержит IP-адрес или имя хоста. Если
данные отсутствуют, подразумевается имя или адрес из предыдущей записи.
Обратите внимание: все имена и адреса завершаются символом «точка» (.).
Это обозначение означает, что имя или адрес является абсолютным, а не
относительным. Абсолютные адреса, также называемые полностью определенными
доменными именами, задаются по отношению к корневому домену, тогда как
относительные адреса задаются по отношению к основному домену (который может
быть как корневой, так и иной домен). За этим полем может следовать
необязательное значение TTL, которое указывает, в течение какого промежутка времени
информация в этом поле должна считаться действительной.
Во втором поле указывается тип адреса. В современных базах данных DNS
обычно встречается строка «IN», признак интернет-адреса. Данное поле
присутствует по историческим причинам и для сохранения совместимости со старыми
системами.
Третье поле содержит строку, определяющую тип ресурсной записи. За ним
следуют необязательные параметры, специфические для данного типа записи.
Ресурсные записи типа SOA
Запись SO A (Start of Authority) означает, что сервер имен DNS является
лучшим источником информации для этого домена. Записи SOA также содержат
адрес электронной почты ответственного лица для зоны, признак модификации
зонного файла базы данных, а также используются для установки таймеров,
определяющих периодичность обновления копий зонной информации другими
серверами.
В записи хранится имя системы DNS и имя лица, ответственного за ее
работу. Ниже приведен пример записи SO А:
; Start of Authority (SOA) record
dns.com. IN SOA dnsl.dns.com. owner.dns.com. (
000000001 ; serial # (counter)
10800 ; refresh C hours)
3600 ; retry A hour)
604800 ; expire A week)
86400) ; TTL A day)
Обратите внимание: адрес владельца задается в формате owner.dns.com, что
следует читать как owner@dns.com. Строка завершается открывающей круглой
скобкой, парная закрывающая скобка находится в последней строке после
значения TTL. Запись может быть представлена в следующем формате, который
также вполне допустим:
Dns.com. IN SOA dnsl.dns.com. owner.dns.com.
@00001 10800 3600 604800 86400)
Точка с запятой (;) начинает комментарий. Все символы строки, следующие
после нее, игнорируются. Также следует заметить, что все числовые данные
задаются в секундах. Компоненты записи SOA рассматриваются в следующих
разделах.
Порядковый номер
Порядковый номер (serial number) определяет текущую версию базы данных
DNS. При обновлении базы данных ее порядковый номер должен увеличиваться,
чтобы вторичные серверы знали о том, что им также следует обновить базу
данных.
Порядковый номер управляет зонной пересылкой данных между первичным
и вторичным серверами имен DNS. Сервер вторичного имени периодически
связывается с первичным сервером и запрашивает порядковый номер зонных
данных первичного сервера. Если оказывается, что порядковый номер на
первичном сервере больше порядкового номера на вторичном сервере, значит,
зонные данные устарели и вторичный сервер принимает новую копию зонных
данных с первичного сервера. Пересылка информации с первичного сервера на
вторичный называется зонной пересылкой.
Порядковый номер может быть реализован в виде простого счетчика, но
чаще используется временная пометка, поскольку при внесении изменений в базу
данных на первичном сервере ее значение всегда увеличивается.
Период обновления
Период обновления (refresh) определяет интервал между последовательными
обновлениями информации на вторичных серверах имен A0 800 секунд
соответствуют трем часам).
Значение этого поля определяет, как часто вторичные серверы DNS должны
проверять зонные данные на первичных серверах DNS. По умолчанию период
обновления равен трем часам; если вторичные серверы принимают оповещения
об изменениях, вы можете смело увеличить продолжительность интервала (до
суток и более), чтобы снизить количество опросов. Такая возможность особенно
полезна при использовании медленных линий и при установлении связи по
требованию.
Период повтора
Если вторичному серверу имен не удается связаться с первичным сервером,
он пытается заново установить соединение через заданное количество секунд
C600 секунд соответствуют одному часу).
Значение поля определяет, как часто вторичный сервер будет пытаться
восстановить утраченное соединение. Период повтора обычно короче периода
обновления. По умолчанию период повтора равен 60 минутам.
Период актуальности
Если вторичному серверу имен не удается связаться с первичным сервером в
течение заданного промежутка времени (в секундах), вторичный сервер перестает
отвечать на запросы об этом домене. На какой-то стадии данные настолько
устаревают, что могут оказаться потенциально вредными, и даже полное отсутствие
информации лучше, чем дезинформация. 604 800 секунд в приведенном выше
примере соответствуют одной неделе.
Значение поля определяет период времени, в течение которого данные
вторичного сервера считаются достоверными. Если вторичному серверу DNS долго
не удается связаться с первичным сервером, его данные могут стать
недействительными. По умолчанию период актуальности равен трем дням, причем по
длительности он может превышать как минимальный срок жизни, так и период
повтора.
Срок жизни
Срок жизни данных, или TTL (Time to Live), возвращается при всех запросах
к базе данных и указывает запрашивающей стороне (или другим серверам),
в течение какого времени возможно безопасное кэширование информации
(86 400 секунд в приведенном примере соответствуют одному дню). Это
значение используется по умолчанию для всех записей файла, но оно может быть
переопределено на уровне отдельной ресурсной записи.
Минимальный срок жизни, используемый по умолчанию, оказывает
громадное воздействие на трафик DNS. Он указывает, в течение какого времени
сервер-получатель может квитировать данные. Каждый ответ на запрос возвращается
с определенным значением TTL, которое по умолчанию равно 24 часам. Если
вы собираетесь вносить существенные изменения в зонную информацию DNS,
временно установите более короткий срок жизни данных (например, один час),
но изменения следует вносить лишь по прошествии периода времени,
определяемого предыдущим значением TTL. После того как вы убедитесь в
правильности внесенных изменений, увеличьте TTL до предыдущей величины.
Соблюдение этого правила значительно повышает эффективность распространения
данных в Интернете и сокращает время, в течение которого устаревшие данные
могут оставаться в кэшах других серверов.
Ресурсные записи типа А
Ресурсная запись типа А содержит IP-адрес, ассоциируемый с именем хоста,
которое указывается в первом поле записи.
Записи типа А составляют самую распространенную разновидность
ресурсных записей, встречающихся в файлах данных.
Ресурсные записи типа NS
Запись NS содержит адрес сервера имен, обслуживающего домен. В нашем
примере используются два сервера имен с информацией DNS для домена foo.com.
Запись NS определяет уполномоченный сервер DNS для домена DNS.
Каждый домен должен иметь минимум два таких сервера. Запись NS состоит всего
из двух полей.
Ресурсные записи CNAME
Запись CNAME определяет псевдоним, ассоциируемый с именем хоста, которое
указывается в первом поле записи. Хотя одной системе может быть назначена
одна запись А с несколькими записями CNAME, при использовании записей
CNAME необходима осторожность. Например, некоторые почтовые программы
при попытке разрешения имени хоста MX, использующего запись CNAME
вместо записи А, ведут себя непредсказуемым образом.
Записи CNAME используются для маскировки подробностей реализации сети
от клиентов, которые к ней подключаются. В качестве псевдонимов могут исполь-
зоваться сокращенные формы имен. Скажем, хосту с именем publicl.business.com
можно назначить псевдоним www.business.com.
Ресурсные записи PTR
Записи PTR связывают IP-адрес с именем хоста в домене обратного поиска
(in-addr.arpa). Запись содержит IP-адрес и имя хоста, соответствующее этому
адресу. Имя хоста задается в формате полностью определенного доменного имени.
Многие сайты в качестве меры безопасности запрещают доступ со стороны
компьютеров, у которых существуют расхождения между записями А и PTR, поэтому
следите за тем, чтобы содержимое записей PTR синхронизировалось с записями А.
Запрос обратного поиска, иногда называемый запросом PTR, также может
использоваться для идентификации организации, ответственной за IP-адрес. Как
говорилось выше, результат запроса PTR включает полностью определенное
доменное имя, в котором присутствует имя домена.
Делегированные домены
Механизм делегирования снимает основную ответственность за
администрирование домена и передает ее от основного сервера другому, подчиненному. ICANN
осуществляет административный контроль над .com и делегирует права по
администрированию всех доменов следующего уровня их соответствующим доменам.
На практике большинство сайтов работает на базе хостинга, то есть серверное
пространство арендуется внешним пользователем, и владельцу сайта не приходится
следить за оборудованием — этим занимается техническая служба хостинга.
Для сайтов, работающих на базе хостинга, контроль над доменами часто
поручается администратору сервера DNS. Впрочем, вы также можете воспользоваться
бесплатным сервером DNS, доступным по адресу http://soa.granJtecanyon.com.
Ресурсные записи HINFO
Запись HINFO определяет тип оборудования и операционную систему хоста.
Стандартные сокращенные обозначения операционных систем опубликованы
в RFC 1700 (на момент написания книги), в разделе «System Names List».
Сокращенные обозначения типов оборудования, используемого на хостах,
определяются в этом же документе RFC. Идентификаторы типов процессора определяются
в разделе «Machine Names List». Небольшое подмножество типов, определенных
в RFC 1700, приведено в табл. 6.1.
Имена содержат до 40 символов, среди которых могут быть буквы и цифры,
а также символы - и / (дефис и косая черта). Имя начинается с буквы и
заканчивается буквой или цифрой. Некоторые администраторы предпочитают не
раскрывать эту информацию на общедоступных серверах DNS, поскольку она
упрощает несанкционированный доступ к системе — например, за счет
использования известных дефектов в средствах безопасности конкретного типа системы.
Если вы используете записи HINFO, позаботьтесь о том, чтобы ваша система
соответствовала рекомендациям CERT в области безопасности.
Таблица 6.1. Стандартные обозначения основных операционных систем
и типов процессора в RFC 1700
APOLLO OPENVMS TANDEM
AIX/370 OS/2 UNIX
DOMAIN PCDOS UNIX-BSD
DOS SCO-OPEN-DESKTOP-2.0 UNIX-PC
INTERLISP SCO-OPEN-DESKTOP-3.0 UNKNOWN
ITS SCO-UNIX-3.2V4.0 VM
LISP SCO-UNIX-3.2V4.1 VM/370
MSDOS SCO-UNIX-3.2V4.2 VMS
MULTICS SUN WANG
MVS SUN-OS-3.5 WIN32
NONSTOP SUN-OS-4.0 X11R3
OS86 IBM-RS/6000 SUN-4/200
APPLE-MACINTOSH INTEL-386 SUN-4/390
APPLE-POWERBOOK M68000 SYMBOLICS-3600
CRAY-2 MAC-II UNKNOWN
DECSTATION MAC-POWERBOOK VAX
DEC-VAX MACINTOSH VAX-11/725
DEC-VAXCLUSTER MICROVAX VAXCLUSTER
DEC-VAXSTATION PDP-11 VAXSTATION
IBM-PC/AT SILICON-GRAPHICS
IBM-PQ/XT SUN
Ресурсные записи ISDN
Записи ISDN связывают имя хоста с адресом ISDN. Номер ISDN также может
включать номер DDI (Direct Dial In). Субадрес ISDN не является обязательным.
Записи ISDN имеют несколько возможных применений. В частности, они
предоставляют простой механизм документирования адресов для использования
в статических конфигурациях приложений ISDN. Возможно, в дальнейшем они
будут автоматически использоваться маршрутизаторами Интернета.
Ресурсные записи MB
Запись MB (Mailbox) определяет почтовый ящик, ассоциируемый с хостом.
В полях записи должно быть указано имя почтового ящика и полностью
определенное доменное имя хоста, содержащего этот почтовый ящик. Пока данный
тип записи используется только в экспериментальных разработках.
Ресурсные записи MG
Запись MG определяет почтовый ящик, входящий в групповой список рассылки
для заданного доменного имени. Имя почтового ящика должно быть указано
в формате полностью определенного доменного имени. Пока данный тип записи
используется только в экспериментальных разработках.
Ресурсные записи MINFO
Запись MINFO содержит информацию о почтовом ящике или списке рассылки.
Она состоит из двух полей. Первое поле содержит полностью определенное до^
менное имя почтового ящика, ответственного за список рассылки, указанный
в ресурсной записи. Второе поле содержит полностью определенное доменное
имя почтового ящика, которому должны отправляться сообщения об ошибках,
связанных с ведением списка рассылки. Хотя эти записи могут быть связаны
с одним и тем же простым почтовым ящиком, они обычно используются для
списков рассылки, в которых задействованы разные почтовые адреса для
решения административных задач (например, подписки) и для оповещения об
ошибках типа «mail not deliverable».
Ресурсные записи MR
Запись MR используется для переименования почтового ящика. В поле замены
вводится полностью определенное доменное имя нового почтового ящика. Если
ящик перемещается с одного хоста на другой, можно использовать псевдоним.
Пока данный тип записи используется только в экспериментальных разработках.
Ресурсные записи MX
Запись MX (Mail eXchanger) определяет имя обработчика почты (сервера,
обрабатывающего или пересылающего почту) для данного домена или хоста. Имя
обработчика должно быть задано в формате полностью определенного доменного
имени. Запись MX состоит из следующих полей:
О Имя хоста или домена, обслуживаемого обработчиком почты.
О Полностью определенное доменное имя обработчика почты.
О Приоритет обработчика почты.
Приоритет представляет собой число от 0 до 65 535, которое определяет
очередность обработки почты для заданного хоста или домена. Высокий приоритет
соответствует минимальным числовым значениям, а наивысший приоритет
равен 0. Абсолютное значение приоритета несущественно, важна лишь его
относительная величина по сравнению с другими приоритетами. Доставка почты
начинается с обработчика, обладающего минимальным числовым кодом приоритета.
Если попытка оказывается неудачной, в следующей попытке участвует сервер
со следующим по возрастанию кодом приоритета. Если два или более
серверов-обработчиков почты обладают одинаковым приоритетом, почтовая
программа должна сама решить, какой из них следует опробовать в первую очередь.
Тем не менее переход к следующему уровню приоритета происходит лишь
после того, как будут опробованы все обработчики предыдущего уровня. Обычно
наиболее желательному серверу присваивается приоритет 10, следующему —
приоритет 20, затем 30 и т. д. Подобная схема позволяет при необходимости
легко включить новый обработчик почты в цепочку между действующими
обработчиками.
Поиск по записям MX не рекурсивен. После того как запись MX определит
наилучший приемник почты для хоста, дальнейшие поиски ограничиваются
выборкой записи А для обработчика почты. Записи MX, относящиеся к самому
обработчику почты, игнорируются, если только почта не была адресована
непосредственно ему.
Ресурсные записи RP
Запись RP (Responsible Person) определяет лицо, ответственное за устройство
с заданным именем DNS. Хотя запись SOA указывает, кто является
ответственным за зону, а также предоставляет контактные данные для решения проблем,
связанных с DNS, различными хостами внутри домена обычно управляют
разные люди. Запись RP позволяет указать, с кем следует связаться при
возникновении проблем с устройством, которому соответствует указанное имя DNS.
Типичные проблемы — недоступность важного сервера или подозрительные
действия хоста, замеченные с другого сайта.
Запись RP содержит адрес электронной почты и полностью определенное
доменное имя, по которому следует обращаться за дополнительной
информацией. Адрес электронной почты задается в стандартном формате доменных имен,
но символ @, встречающийся в большинстве адресов, заменяется точкой.
Ссылка на дополнительную информацию представляет собой доменное имя,
указывающее на ресурсную запись ТХТ. Эта запись может содержать контактные
данные (полное имя, номер телефона или пейджера) в произвольном формате.
Ресурсные записи RT
Запись RT (Route Through) определяет промежуточный хост, который
маршрутизирует пакеты для хоста, не имеющего собственного прямого
подключения. Имя промежуточного хоста, принимающего пакеты другого хоста, должно
быть представлено в формате полностью определенного доменного имени. Как
и в случае с обработчиком почты, при определении промежуточных хостов
допускается только один уровень косвенных ссылок; иначе говоря, путь к
промежуточному хосту не может проходить через другой промежуточный хост.
Ресурсные записи ТХТ
Запись ТХТ содержит информацию, представленную в форме простого текста.
Часто в этих записях хранятся сведения о контактных лицах, имена и телефоны
и другая информация такого рода. Длина строки текста должна быть менее
256 символов.
Ресурсные записи WKS
Запись WKS (Well-Known Service) описывают службы, предоставляемые
некоторым протоколом через некоторый интерфейс, по IP-адресу. К числу таких служб
относятся Telnet и FTP. Протокол определяется значением одного из полей
записи. На практике использовать эти записи не рекомендуется (RFC 1123).
Ресурсные записи типа Х25
Записи типа Х25 похожи на ресурсные записи А, но они связывают имя хоста
не с IP-адресом, а с адресом Х.121. Адреса Х.121 являются стандартной формой
адресации в сетях Х.25. Адрес PSDN (Public Switched Data Network) начинается
с кода DNIC (Data Network Identification Code), состоящего из четырех цифр.
Код определяется в рекомендациях по реализации X .121, разработанных
Международным консультативным комитетом по телеграфии и телефонии (CCITT).
Адрес не должен содержать национальных префиксов. Ресурсная запись Х25
проектировалась для использования в сочетании с ресурсной записью RT.
Итоги
В этой главе читатель познакомился с иерархической структурой системы
доменных имен (DNS) Интернета. Эта система была разработана для того, чтобы
основной формой адресации интернет-ресурсов были символические имена.
Также было показано, что DNS использует несколько способов определения
IP-адреса по доменному имени. Следует помнить, что эта система, как и любая
другая, может давать сбои. Если материал этой главы остался для вас
непонятным или вы запутались в его структуре, предоставьте эти хлопоты вашему
поставщику услуг Интернета. Кстати говоря, DNS используется при любом
обращении к web-сайтам или загрузке ресурсов по другим протоколам.
-"* WINS
Курт Хадсон (Kurt Hudson)
Служба имен Интернета для Windows WINS (Windows Internet Name Service)
также называется службой имен NetBIOS, поскольку она преобразует имена
NetBIOS в IP-адреса. Система NetBIOS (Network Basic Input/Output System)
является совместной разработкой IBM и Microsoft. Позднее фирма Microsoft
приобрела права на NetBIOS, чтобы использовать систему в своем продукте
LANManager (в настоящее время устаревшем). Сейчас NetBIOS существует в
сетевых операционных системах Microsoft, предшествующих Windows 2000 (то есть
NT 5.0). В сетях на базе Windows 3.x, Windows 95, Windows 98 и Windows NT 4.0
используются сетевые средства NetBIOS. Каждый администратор,
поддерживающий работу сети с этими операционными системами, должен быть знаком с
механизмом разрешения имен NetBIOS и особенно хорошо разбираться в WINS.
В этой главе рассматривается процесс настройки NetBIOS и ограничения,
присущие этому механизму. В частности, в ней описаны такие средства
разрешения имен NetBIOS, как файл LMHOSTS и WINS. Особое внимание уделяется
разрешению имен в WINS, клиентской и серверной конфигурации, а также
администрированию WINS.
ПРИМЕЧАНИЕ
Фирма Microsoft исключила NetBIOS семейства Windows 2000. По официальным данным,
будущие операционные системы будут поддерживать имена NetBIOS для сохранения совместимости,
но не будут зависеть от них. По этой причине WINS рассматривается в контексте Windows 9x и
Windows NT. Хотя сервер Windows 2000 может быть настроен на выполнение функций сервера
WINS, обычно это делается лишь для обеспечения совместимости.
NetBIOS
С точки зрения Microsoft, NetBIOS представляет собой интерфейс прикладного
программирования (API). В сущности, любой интерфейс такого рода может
рассматриваться как прослойка между компонентами. Уровень NetBIOS
располагается между прикладным и транспортным уровнями стека протоколов TCP/IP
от Microsoft (рис. 7.1).
Прикладной уровень
—■— NetBIOS —
Транспортный уровень
Межсетевой уровень
Сетевой интерфейс
Рис. 7.1. NetBIOS в стеке протоколов TCP/IP от Microsoft
Главная функция NetBIOS — обеспечение независимости между
прикладным и транспортным уровнями. Это делается для того, чтобы разработчик при-*
ложения мог написать программу с сетевой поддержкой, не разбираясь во всех
тонкостях базового протокола. Кроме того, наличие дополнительной прослойки
NetBIOS позволяет использовать приложение с разными транспортными
протоколами. Разработчик должен лишь написать приложение, работающее на уровне
NetBIOS и не рассчитанное на конкретный протокол.
ПРИМЕЧАНИЕ
В продуктах Microsoft также поддерживается интерфейс Windows Sockets (также называемый
WinSocks). Как и NetBIOS, этот интерфейс расположен между прикладным и транспортным
уровнями. NetBIOS и WinSocks не связаны друг с другом, это два разных пути реализации
коммуникаций. Microsoft мог использовать существующие средства Интернета, работающие с интерфейсом
сокетов (и написанные в основном для системы Unix).
При установке сетевых операционных систем Microsoft программа установки
требует ввести имя компьютера. Имя, вводимое на этой стадии, является
именем NetBIOS. Имена NetBIOS должны быть уникальны в пределах сети, то есть
имя не может использоваться ни одним из существующих компьютеров сети.
Имена NetBIOS имеют длину до 15 символов и не могут содержать следующие
символы:
О обратная косая черта (\);
О пробел ( );
О дефис (-);
О апостроф О;
О знак «at» (@);
О процент (%);
О восклицательный знак (!);
О амперсанд (&);
О точка (.).
Во всех сетевых операционных системах от Microsoft, использующих TCP/IP
(до Windows 2000), поддерживаются как имена NetBIOS, так и имена хостов.
Имя хоста настраивается в свойствах протокола TCP/IP. По умолчанию имя
хоста совпадает с именем компьютера в NetBIOS. Рекомендуется оставить эти
имена одинаковыми, иначе вы усложните процесс диагностики. Например, такие
утилиты, как ping, работают с именами хостов, а при отображении диска на
сервер Microsoft используется имя NetBIOS. В случае если имена различаются,
вам придется рассматривать каждое имя и каждое соединение по отдельности.
Но если компьютер будет использоваться в Интернете, для имен хостов TCP/
IP устанавливаются дополнительные ограничения, которые должны учитываться
при выборе имен компьютеров NetBIOS. Такие имена состоят только из
символов A-Z, a-z, 0-9 и дефисов (-), причем первый и последний символы имени
хоста TCP/IP должны быть алфавитно-цифровыми (то есть A-Z, a-z или 0-9).
В операционных системах Microsoft имя компьютера определяется именем
NetBIOS, как показано на рис. 7.2. На рисунке приведено имя NetBIOS в системе
Windows 98, но в системе Windows 95 дело обстоит аналогично.
ЦДЗДДД- - -щ^^^ш^^ШмШШ^^^^^щ^ i xij
k Idartificatior* |$«vicej| Protocols) Ad*tf*t] Ъг*$гф\ ч Л ] \
\k £311 Window* u$e*ttefo8ov^ II
vs ^S£i^ tfu$Ort^#otOier>afr*ofthe domain ihtf&mwjje* [j
U * D*put«N«n*y * JNTSERVEft • "^\ "*C:%vV * -> о '' * I
-. "^ f .»■» HiWHIHiH <W>llll*llW>Hl>im>*IU»^lll*ll>4l>M<l <A\
L 1УОпшч I j
L* II
OK I C»**i [1
Рис. 7.2. Имя компьютера является именем NetBIOS
Чтобы вызвать это диалоговое окно в Windows 95/98, щелкните правой
кнопкой мыши на значке Сетевое окружение (Network Neighborhood) и выберите в
контекстном меню команду Свойства (Properties). Затем откройте вкладку Идентификация
(Identification) в диалоговом окне Сеть (Network). В Windows NT 4 используется
аналогичная процедура, но вкладка называется Общие (General) и открывается
по умолчанию.
Имя хоста TCP/IP является частью конфигурации TCP/IP в
операционных системах Microsoft, как наглядно показывает диалоговое окно Microsoft
Windows NT, изображенное на рис. 7.3.
IP Address ONS | WINS Acttesi | DHCP Rel^ | Roufire | .. .
Domain Name System |ONS) II
£lost Name: . . Ogrodk -' II
jJSSZS | domain, com I 1
. "DNS Service Search Older * • ....:.,.^..v:.... J j
: j • /yl ; ti.' J,|
Add-: 1 ft**- 1 Remote I ; \ I-
- DomamSuffat Search Order •■-\ \\
\ " " _-—ii И
i>jjl!'''.^'.'l.'^J ;!.[
; . | OK | Cancel | Apply И
Рис. 7.3. Настройка имени хоста TCP/IP в Windows NT Server
NetBIOS является неотъемлемой частью сетевой конфигурации Microsoft,
поэтому реализация протокола TCP/IP в операционных системах Microsoft
обозначается специальными акронимами NBT и NetBT. Оба акронима обозначают
одно и то же — NetBIOS через TCP/IP. Удаление NetBIOS из системы
приведет к нарушению работы сетевых компонентов операционных систем Microsoft.
Разрешение имен в NetBIOS
Имена NetBIOS, как и имена хостов, должны быть преобразованы в IP-адреса
при использовании в сетях TCP/IP. Существует несколько способов
преобразования имен NetBIOS в IP-адреса. В операционных системах Microsoft
используются следующие способы разрешения имен NetBIOS (то есть их
преобразования в IP-адреса):
О Кэш имен — клиенты Microsoft поддерживают кэш имен NetBIOS с именами
компьютеров и IP-адресами, которые ранее были разрешены данным
клиентом. Чтобы просмотреть содержимое кэша имен, введите команду NBTSTAT -с
в режиме командной строки сетевой операционной системы Microsoft,
использующей TCP/IP.
О Сервер WINS — сервер WIN поддерживает базу данных с информацией о
связях имен компьютеров с IP-адресами. Чтобы преобразовать имя компьютера
в IP-адрес, клиент обращается к серверу WINS с запросом. Также
используется термин «сервер имен NetBIOS», или NBNS (NetBIOS Name Server).
О Широковещательная рассылка — клиент сети Microsoft может разослать
запрос в локальном сегменте сети, чтобы узнать, принадлежит ли разрешаемое
имя этому сегменту.
О Файл LMHOSTS — статический файл, публикуемый централизованно или на
уровне отдельной системы. Файл содержит список IP-адресов с
соответствующими им именами компьютеров.
О Файл HOSTS — другой статический файл, который также может
публиковаться централизованно или на уровне отдельной системы. Формат этого
текстового ASCII-файла соответствует формату файла UNIX\etc\hosts в BSD
(Berkeley Software Distribution) 4.2. Файл содержит список имен хостов
Интернета в формате полностью определенных доменных имен (FQDN, Fully
Qualified Domain Name) и соответствующих им IP-адресов.
О Сервер DNS — для разрешения имен WINS клиенты WINS могут
использовать сервер DNS. Этот вариант, настройка которого производится на уровне
клиентской системы, позволяет выполнять разрешение имен NetBIOS через
сервер DNS вместо сервера WINS.
Очередность, в которой клиентская система пытается разрешить имя NetBIOS,
зависит от типа узла NetBIOS. Существуют четыре типа узлов NetBIOS:
О В~узел — узлы этого типа называются широковещательными (Broadcast),
поскольку компьютер осуществляет разрешение имен NetBIOS только
посредством рассылки запросов в локальном сегменте. Вообще говоря, в системах
Microsoft используются расширенные В-узлы, которые ищут информацию
в файле LMHOSTS, если имя не было найдено в локальном сегменте.
О Р-узел — разрешение имен выполняется точечным (Point-to-point)
обращением к серверу WINS, широковещательная рассылка в локальном сегменте
не используется.
О М-узел — смешанные (Mixed) системы сначала рассылают запрос в
локальном сегменте, а затем обращаются за разрешением имени к серверу WINS.
О Н-узел — гибридные (Hybrid) системы сначала обращаются за разрешением
имени к серверу WINS. Если получить ответ не удается, Н-узел рассылает
запрос в локальном сегменте.
Прежде чем выполнять любые попытки разрешения имен в NetBIOS, все
клиенты Microsoft сначала проверяют содержимое кэша имен. По умолчанию в
операционных системах Microsoft используются узлы типов В и Н. Расширенные
В-узлы используются по умолчанию для всех компьютеров, на которых не задан
адрес сервера WINS. При наличии адреса сервера WINS по умолчанию
используется Н-узел. Процесс настройки клиента рассматривается ниже в этой главе.
ПРИМЕЧАНИЕ
Чтобы изменить тип узла NetBIOS на Р или М, необходимо отредактировать реестр Windows. За
дополнительной информацией о настройке TCP/IP в Windows NT (в том числе и о модификации
типа узла NetBIOS) обращайтесь на сайт Microsoft http://www.microsoft.com или найдите
компакт-диск TechNet от Microsoft. Статья, посвященная настройке TCP/IP в Windows 95/98,
называется «MS TCP/IP and Windows 95 Networking». Чтобы найти информацию о настройке TCP/IP
в Windows NT, проведите поиск по строке «Q120642». В этих статьях также описано множество
других параметров Microsoft TCP/IP.
Существует несколько типов имен NetBIOS, которые могут использоваться
во всех операционных системах Microsoft. Уникальность этих имен
обеспечивается присоединением к имени компьютера шестнадцатеричного идентификатора.
Каждое уникальное имя описывает уровень сервиса, поддерживаемого
компьютером. Например, во всех операционных системах Microsoft поддерживается имя
рабочей станции; этот уровень сервиса позволяет компьютерам
взаимодействовать по сети. Если операционная система также предоставляет другие виды
сетевого сервиса (например, совместный доступ к файлам или принтерам), ей также
будет присвоено серверное имя. В табл. 7.1 перечислены стандартные имена
NetBIOS, используемые в операционных системах Microsoft.
Таблица 7.1. Имена NetBIOS с шесгнадцатеричными идентификаторами
Имя NetBIOS Описание
и шестнадцатеричный
идентификатор
Имя компьютера[00п] Функциональность рабочей станции на клиенте WINS
Имя компьютера[03п] Функциональность передачи сообщений
на клиенте WINS
Имя компьютера[20п] Функциональность сервера на клиенте WINS
Имя пользователя[03п] Зарегистрированное имя текущего пользователя
Имя домена[1Вп] Функциональность главного контроллера домена (PDC,
Primary Domain Controller)
Как видно из табл. 7.1, каждая операционная система Microsoft в сети обычно
регистрирует несколько имен компьютеров. Существует два способа
регистрации имен: если система является клиентом WINS, она регистрирует все свои
имена NetBIOS на сервере WINS. Системы, являющиеся клиентами WINS,
рассылают имена в локальном сегменте сети. Если другая система не отвечает на
разосланные запросы, информируя о том, что запрашиваемые имена уже заняты,
имена считаются зарегистрированными. Если имена NetBIOS уже используются
другим компьютером локального сегмента, система, пытающаяся их
зарегистрировать, автоматически отключается от сети. Далее системный администратор
должен выбрать для одной из конфликтующих систем другое имя.
Динамическое разрешение имен в NetBIOS
Единственный динамический способ преобразования имен NetBIOS в IP-адреса
в сетях Microsoft TCP/IP основан на использовании WINS. Сервер WINS
получает запросы на регистрацию имен, отправляемые клиентами WINS при запуске.
При отключении клиенты отправляют серверу WINS запросы на освобождение
имен. Таким образом, содержимое базы данных WINS синхронизируется с
текущими именами активных компьютеров в сети.
Функциональность WINS реализуется службой, работающей на серверах
Windows NT. Для хранения регистрационных данных и разрешения имен служба
использует базу данных Microsoft Access.
Преимущества WINS
Применение серверов WINS для разрешения имен NetBIOS в сетях Microsoft
обладает рядом преимуществ, часть из которых перечислена ниже.
О WINS сокращает объем широковещательного трафика при разрешении имен.
Вместо того чтобы рассылать запросы в локальном сегменте, клиент WINS
напрямую связывается с сервером WINS.
О Клиенты WINS могут связываться с серверами WINS в удаленных сегментах.
Маршрутизаторы обычно фильтруют широковещательный трафик, поэтому
рассылка запросов на разрешение имен ограничивается локальной подсетью.
Клиенты WINS связываются с серверами WINS посредством направленного
запроса по IP-адресу сервера. Хотя маршрутизатору можно разрешить
пересылку широковещательных запросов на разрешение имен посредством
активизации портов UDP 137 и 138, делать это обычно не рекомендуется из-за
повышения объема трафика.
О WINS работает в динамическом режиме. Клиенты WINS автоматически
регистрируются на сервере WINS при запуске, администратору не приходится
вводить пары «IP-адрес — имя NetBIOS».
О WINS упрощает ведение списков просмотра (browse lists). Системы Microsoft
поддерживают большие списки ресурсов, доступных через сеть (например,
совместных файлов или принтеров), эти списки называются «списками
просмотра». Сервер WINS облегчает задачу документирования доступных
ресурсов за счет получения информации об именах NetBIOS на каждом компьютере.
Если бы сеть полагалась только на широковещательный трафик, в
многосегментных сетях списки были бы неполными.
Как работает WINS
Сервер WINS собирает данные и поддерживает централизованную базу данных
с активными именами NetBIOS. Сервер WINS обрабатывает заявки на
регистрацию/освобождение и разрешение имен, поступающие от клиентов WINS. Как
упоминалось выше, сервер WINS рассчитывает на то, что клиенты WINS
зарегистрируют свои имена на сервере WINS при запуске. Также предполагается,
что клиенты освобождают свои имена при отключении. Поскольку все клиенты
WINS регистрируют и освобождают свои имена через сервер WINS, последний
может обеспечить достоверное преобразование IP-адресов в имена NetBIOS по
запросу клиента.
Регистрация имен
При запуске клиент WINS должен зарегистрировать свое имя NetBIOS на
сервере WINS. Запросы на регистрацию имен отправляются непосредственно
серверу WINS, который либо регистрирует имя, либо отказывает в регистрации.
Если имя не используется другой системой, сервер WINS регистрирует имя
и посылает пакет подтверждения клиентской системе. Пакет подтверждения
содержит зарегистрированное имя и его срок жизни (TTL) — интервал времени,
зарезервированный для клиента, в течение которого имя должно быть
перерегистрировано. Если клиент WINS не перерегистрирует имя до истечения срока жизни,
имя удаляется из базы данных WINS и может быть зарегистрировано другой
системой. Ограничение срока жизни гарантирует, что системы,
зарегистрировавшие имена и затем отключенные вследствие аварийного завершения или сбоя
питания, не будут занимать имена NetBIOS во время отключения от сети.
Если клиент WINS пытается зарегистрировать имя NetBIOS, уже
встречающееся в базе данных WINS, сервер возвращает клиенту пакет с приказом на
ожидание. Далее сервер убеждается в том, что имя действительно используется
в сети, для чего зарегистрированному владельцу имени отправляется пакет с
запросом на подтверждение. Если сервер WINS получает ответ от системы,
зарегистрировавшей имя, то запрос второго компьютера на регистрацию имени
отвергается. Если ранее зарегистрированный владелец имени не отвечает, сервер
WINS повторяет запрос еще два раза. Если предыдущий владелец не ответил ни
на один запрос, сервер WINS освобождает имя и предоставляет его той системе,
которая его запросила.
ПРИМЕЧАНИЕ
Если клиент WINS в процессе запуска не получает ответа от основного сервера WINS после трех
попыток, он связывается с одним из альтернативных серверов WINS. Если оба сервера WINS,
основной и альтернативный, не отвечают, клиент WINS регистрирует свое имя NetBIOS посредством
широковещательной рассылки.
Обновление имен
По полученному значению TTL клиент WINS определяет, в течение какого срока
имя NetBIOS должно быть обновлено на сервере WINS. По умолчанию срок
жизни имен WINS равен шести дням, или 518 400 секундам. Клиенты WINS
пытаются обновить свои имена после истечения одной восьмой срока. Если
клиенту не удается связаться с основным сервером WINS в течение этого
времени, он пытается обновить имя через альтернативный сервер. После того как
имя будет обновлено, клиент ожидает истечения половины TTL и снова пытается
обновить имя. Если все попытки обновления окажутся безуспешными, имя
NetBIOS освобождается.
Запросы и ответы
Как объяснялось выше, клиентам WINS по умолчанию назначается гибридный
тип узла, то есть когда клиенту потребуется разрешить некоторое имя, он
обращается к серверу WINS. Например, если клиент WINS пытается связаться
с компьютером HOSTX, он сначала ищет это имя в своем кэше имен. Если
соответствие не найдено в локальном кэше, клиент обращается к серверу WINS за
определением IP-адреса HOSTX. Если после трех повторных попыток ему не
удастся найти основной сервер WINS, клиент пытается обратиться к
альтернативному серверу. Если все серверы WINS недоступны или у ответивших серве-
ров отсутствует информация об указанном имени NetBIOS, клиент WINS
рассылает в локальной подсети широковещательный запрос на разрешение имени.
Освобождение имен
Перед отключением клиент WINS обязательно должен выдать запрос на
освобождение имени. Для каждого имени, зарегистрированного клиентом, серверу
WINS передается непосредственный запрос. Пакет содержит освобождаемое
имя NetBIOS и соответствующий ему IP-адрес.
Сервер реагирует на полученный запрос и возвращает пакет, содержащий
отрицательное или положительное подтверждение. Если сервер WINS
обнаруживает конфликт в базе данных (например, если попытка освобождения имени
выполняется не тем компьютером, которым это имя было зарегистрировано), ответ
будет отрицательным. На отключение клиента WINS это никак не влияет,
поскольку клиент игнорирует содержимое ответного пакета и отключается как
при положительном, так и отрицательном ответе.
Настройка клиентов WINS
Настройка Windows NT или Windows 95 для использования WINS сводится
к простому вводу IP-адреса сервера WINS. Настройка в обоих семействах
операционных систем выполняется в диалоговом окне свойств протокола TCP/IP,
на вкладке Конфигурация WINS (WINS Configuration) в Windows 95/98 или на
вкладке WINS в Windows NT. На рис. 7.4 изображена конфигурация WINS в системе
Windows 98.
Чтобы активизировать разрешение имен через WINS на клиентском
компьютере, достаточно ввести IP-адрес одного сервера WINS. Если клиент WINS
будет работать с несколькими серверами WINS, в диалоговом окне конфигурации
вводятся дополнительные IP-адреса. В системах семейства Windows NT адреса
основного и альтернативных серверов WINS вводятся только через этот
интерфейс. По умолчанию обращение к альтернативному серверу WINS происходит
только в том случае, если клиент не находит основной сервер WINS в сети.
Следующие операционные системы могут настраиваться как клиенты WINS:
О Windows NT Server 4.0, 3.5х;
О Windows NT Workstation 4.0, 3.5x;
О Windows 95/98;
О Windows for Workgroups 3.11 с Microsoft TCP/IP-32;
О Microsoft Network Client 3.0 для MS-DOS;
О LAN Manager 2.2c для MS-DOS.
Как упоминалось выше, при настройке клиента на адрес WINS В-узлы
автоматически преобразуются в Н-узлы. В этом можно убедиться, вводя команду
ipconfig /all в режиме командной строки Windows NT. Чтобы проверить
конфигурацию IP для систем Windows 95/98, введите в командной строке команду
winipcfg. Для получения информации о типе узла щелкните в открывшемся окне
на кнопке Сведения (More Info).
ррл-iffito&r-;:'t\;.. - ?;Actahced '■ :- J ' ' NetBIOS -. }
:y DNS Con^^ J &rf*w*y ^NS Confi»»^ion } JP Address |
: :^ j I
,;V configure^ jj
• • Г S^&eWI^Resolution
К r-^SSefvefc$^ch0^er: {'•.'
[192.168. 1 .200 | &dd | j
• ;.i::'Sfiopfjp:.'j j j
■■'. j OK I Caned j
Рис. 7.4. Настройка WINS в Windows 98
Настройка WINS для прокси-агентов
Системы Windows 95, Windows 98 и Windows NT также могут настраиваться на
выполнение прокси-функций WINS. Клиент WINS, настроенный на
выполнение прокси-функций, называется прокси-агентом WINS. Прокси-агент WINS
связывается с сервером WINS для разрешения имен по поручению систем,
находящихся в локальном сегменте и не являющихся клиентами WINS. Таким
образом, системы, не являющиеся клиентами WINS, также могут пользоваться
преимуществами разрешения имен NetBIOS, предоставляемыми WINS.
Процесс настройки почти не отличается от обычного процесса разрешения
имен WINS. Когда компьютер, не являющийся клиентом WINS, рассылает
широковещательный запрос на разрешение имени в локальной подсети, прокси-агент
WINS получает запрос и пересылает его серверу WINS. Если сервер WINS
может преобразовать имя NetBIOS в IP-адрес, прокси-агент WINS пересылает
ответ компьютеру, не являющемуся клиентом WINS.
При настройке систем для выполнения функций прокси-агентов WINS
следует помнить, что прокси-агенты могут увеличивать сетевой трафик из-за
повторения запросов на разрешение имен. Microsoft не рекомендует использовать
более двух прокси-агентов WINS в каждой подсети, содержащей компьютеры,
которые не являются клиентами WINS. Если все компьютеры сети будут
настроены как прокси-агенты, широковещательный запрос на разрешение имени
будет продублирован на каждом компьютере в сети.
Настройка прокси-агента в NT 4
Настройка системы на базе Windows NT 4 для выполнения функций прокси-
агента WINS производится следующим образом:
1. Запустите редактор реестра Windows NT 4 командой regeditexe или regedt32.exe.
2. Найдите подраздел Parameters в разделе HKEY_LOCAL_MACHINE\SYSTEM\
CurrentControlSet\ Services\NetBT.
3. Дважды щелкните на параметре EnableProxy и задайте ему значение 1.
4. Закройте редактор реестра.
5. Перезапустите компьютер.
Настройка прокси-агента в Windows 95/98
Настройка системы на базе Windows 95/98 для выполнения функций прокси-
агента WINS производится следующим образом:
1. Запустите редактор реестра Windows 95/98 командой regedit.exe.
2. В разделе HKEY_LOCAL„MACHINE\SYSTEM\CurrentControlSet\Services\VxD найдите
подраздел MSTCP.
3. Щелкните на подразделе MSTCP, чтобы выделить его.
4. Выполните команду меню Правка ► Создать ► Строковый параметр (Edit ► New ►
String Value).
5. Введите имя нового параметра EnableProxy.
6. Дважды щелкните на строке EnableProxy; на экране появляется диалоговое
окно Изменение строкового параметра (Edit String).
7. Введите 1 в поле Значение (Value) и щелкните на кнопке ОК.
8. Закройте редактор реестра и перезапустите систему.
Настройка сервера WINS
После того как служба сервера WINS будет установлена на сервере Windows NT,
последний начинает выполнять функции сервера WINS. Программное
обеспечение сервера WINS входит в комплект поставки Windows NT Server, но не
устанавливается в стандартном варианте установки.
Установка службы сервера WINS в системе на базе Windows NT 4
выполняется следующим образом:
1. Щелкните правой кнопкой мыши на значке Сетевое окружение (Network
Neighborhood) и выберите в открывшемся контекстном меню команду Свойства
(Properties).
2. Щелкните на вкладке Services.
3. Щелкните на кнопке Add.
4. Выберите в списке служб строку Windows Internet Name Service и нажмите
кнопку ОК.
5. Вам будет предложено задать путь к исходным файлам Windows NT.
Убедитесь в правильности введенного пути и щелкните на кнопке ОК.
6. После завершения установки службы щелкните на кнопке ОК и перезапустите
компьютер, как будет предложено.
После перезапуска системы:
1. Откройте панель управления, чтобы подтвердить установку. Для этого
выполните команду Пуск ► Настройка ► Панель управления (Start ► Settings ► Control
Panel).
2. Дважды щелкните на значке Службы (Services) на панели управления, чтобы
просмотреть список установленных служб.
Если служба WINS была успешно установлена, она будет находиться где-то
в конце списка установленных служб. Из этого мини-приложения вы можете
запускать и завершать WINS и многие другие службы, временно останавливать
их работу, а также настраивать параметры запуска.
Администрирование и сопровождение WINS
После установки службы WINS в группе Administrative Tools меню Пуск (Start)
Windows NT должно появиться приложение WINS Manager. Выполните команду
Start ► Programs ► Administrative Tools и выберите строку WINS Manager.
Диспетчер WINS предназначен для выполнения административных операций
на сервере WINS. Например, вы можете включить в базу данных WINS
статические отображения для компьютеров, не являющихся клиентами WINS. Кроме
того, приложение позволяет заархивировать базу данных WINS, настроить
партнеров по репликации WINS и просмотреть текущее содержимое базы.
Добавление статических записей
Если в сети работают компьютеры, не являющиеся клиентами WINS, и вы хотите,
чтобы сервер WINS мог преобразовывать имена таких компьютеров в
IP-адреса, следует произвести настройку статических отображений. Статические
отображения вручную добавляются в базу данных WINS для того, чтобы сервер
мог разрешать имена NetBIOS компьютеров, не являющихся клиентами WINS.
Чтобы включить в базу данных статическое отображение, выполните следующее
действие:
1. Запустите WINS Manager.
2. Откройте меню Mappings и выберите команду Static Mappings.
3. Щелкните на кнопке Add Mappings.
4. В диалоговом окне Add Static Mappings введите имя и IP-адрес компьютера,
данные которого должны храниться в базе данных в статическом виде.
5. Выберите тип имени для компьютера. Предлагаются следующие варианты:
□ Unique — используется для разрешения имени отдельного компьютера.
□ Group — используется в качестве «обычного группового» имени. IP-адреса
отдельных членов группы не хранятся в базе, поскольку обмен
информацией в группах осуществляется посредством широковещательной рассылки
пакетов.
□ Domain Name — используется для ввода доменных имен. Этот вариант
предназначен для ввода информации о доменных контроллерах
Windows NT.
□ Internet Group — позволяет группировать ресурсы (например, принтеры)
для целей просмотра.
□ Multihomed — используется для поддержки многоадресных компьютеров,
имеющих несколько IP-адресов. Как правило, на таких компьютерах
устанавливается несколько сетевых адаптеров, но используется только одно
имя. Данный тип записи делает возможной такую конфигурацию,
позволяя отобразить несколько IP-адресов на одно имя компьютера NetBIOS.
□ Щелкните на кнопке Add.
□ Повторите описанную процедуру для всех остальных записей. После
завершения ввода статических данных щелкните на кнопке Close.
Поскольку категории Domain Name, Internet Group и Multihomed состоят из
нескольких записей, при их выборе появляется дополнительное диалоговое окно.
В каждую категорию может входить до 25 записей. Клиентские компьютеры
WINS не могут зарегистрировать имена, статически зарегистрированные на
сервере WINS.
Сопровождение базы данных WINS
С базой данных WINS можно выполнять некоторые служебные операции, в том
числе — архивацию, восстановление, сжатие и согласование записей.
Для просмотра записей базы данных WINS используется программа WINS
Manager. Чтобы просмотреть содержимое базы, откройте меню Mappings и
выберите команду Show Database. Предусмотрены режимы просмотра как всех записей,
так и записей, принадлежащих указанному владельцу (серверу WINS). Если
несколько серверов WINS используются в качестве партнеров по репликации,
каждый партнер может просматривать записи, хранящиеся в базах данных остальных
партнеров. Настройка репликации WINS рассматривается ниже в этой главе.
Отображаемые записи сортируются по IP-адресу, имени компьютера, сроку
жизни, идентификатору версии и типу (рис. 7.5).
Окно Mappings также позволяет узнать, является ли запись активной или
статической. Для статических записей в столбце S присутствует пометка; для
активных записей пометка имеется в столбце А. Записи, не помеченные как
активные или статические, не проверяются и ожидают удаления.
С;- [r'^i^^ionJO •"•' .^i-'yvv'^ii^yv:;'::1.'!.
: A•:€• •'?«? ty. TV№; ::;. •.••:. 7 J£:j-!-.- .•..'..' •- —: l
.'МйЛо* • V:; -:- A! .$ V- Expeatoi Date . . • Vernon ID •
• •• РзЯЯшШШшШмня I
|MD0MAIN[1Bh] 19Z16&V1Q0 * Б/1/9910:04:37 AM Б '."j::
IMADMINISTRAT0R[03h] 192.168.1.100 * 6/1/9910:04:37 AM 1
l©COMPUTER1[00h] 192.168.1.10 * * 1Л 8/38 7:14:07 PM A
IMcOMF4JTER1[03h] 192.168.1.10 « *> 1Л8/387:14:07PM В :
|gCOMPUTER1[20hJ 192.168.1.10 * * 1/18/38 7:14:07PM С •
»DOMAIN[00h] 192.168.1.100 * 6Л/9910:04:37 AM 8 -J
|y^D0MAIN{1Ch) 192.168.1.100 « 6/1/9910:04:37 AM 7
|AD0MAIN[1Eh] 192.168.1.100 * 6/1/991004:37 AM 5 ,
ШЙмтсср^лгогппи .ncn ico lion * сл/адтгмгглм ^ JU.j
Рис. 7.5. База данных WINS
Чистка базы данных
Если вы считаете, что содержимое базы данных не соответствует
действительности, можно потребовать, чтобы сервер WINS произвел согласование записей.
Например, если вы заметили, что в базе данных присутствуют имена
компьютеров, отключенных от сети, запустите процесс чистки базы данных. После его
завершения из базы данных должны пропасть освобожденные имена и записи,
добавленные другими серверами WINS. Чистка базы данных запускается
командой меню Mappings в приложении WINS Manager.
Удаление записей из базы данных
На практике возникают ситуации, когда в базе данных WINS хранятся записи,
которые следовало бы удалить. Предполагается, что база данных будет удалять
записи с истекшим сроком действия, но иногда такие записи остаются в базе.
Если даже после чистки база данных содержит нежелательные записи,
существует два основных способа ручного удаления записей. Во-первых, можно
удалить все записи кнопкой Delete Owner в диалоговом окне Show Database.
Выполните следующие действия:
1. Запустите приложение WINS Manager, перейдите на вкладку Mappings и
щелкните на кнопке Show Database. На экране появляется диалоговое окно Show
Database.
2. В диалоговом окне Show Database найдите список владельцев и щелкните на
имени или IP-адресе компьютера WINS, записи которого требуется удалить
из базы.
3. Щелкните на кнопке Delete Owner.
4. Подтвердите удаление, щелкнув на кнопке Yes в диалоговом окне с
предупреждением. Следующее окно сообщает, что согласование записей с этой базой
данных WINS невозможно до тех пор, пока записи не будут построены заново.
После того как из базы данных будут удалены все записи, каждый клиент
WINS должен заново зарегистрировать свое имя в базе данных WINS. При
перегрузке компьютеров в сети это происходит автоматически.
Во втором варианте удаление записей из базы данных WINS производится
избирательно. При этом используется утилита winscl.exe из пакета Windows NT 4.0
Resource Kit.
Выбор интервала для автоматического
выполнения операций
Сервер WINS автоматически выполняет многие операции по сопровождению
базы данных с заданной частотой. Интервал выполнения этих
автоматизированных операций задается в диалоговом окне WINS Server Configuration. Чтобы
вызвать это окно, выполните команду Server ► Configuration в WINS Manager и
выберите Configuration (рис. 7.6).
Y^$$«uw$$^ j—jjz—j
л.ф^?^^^^:. ^|ffi^;p|^g \ ]}———>
'Доорммод^, - ■. 1*рЭД»ЭСТ - | гУТ* ,1
I] Ч Л - \s ^v^""* i^^T,' V?, " j I I I
rPuflPafametett-"-~:—k : -PutHP&wMtoi— ;
J P InitialRepicafcry : ч Г Ij^^feeOort . |
j RetiyCoMtf: [5 § . - Г Reflate on Addrw* Chang» |
Рис. 7.6. Диалоговое окно WINS Server Configuration
В окне WINS Server Configuration задаются следующие интервалы:
О Renewal Interval — срок жизни зарегистрированного имени. Клиент WINS
должен обновить имя до истечения заданного срока. По умолчанию значение
равно 144 часам F суток).
О Extinction Interval — промежуток (по умолчанию — 144 часа) между
освобождением имени и моментом, когда оно становится недействительным. По
истечении этого периода имя компьютера считается устаревшим.
О Extinction Timeout — промежуток времени между устареванием имени и его
фактическим удалением из базы данных. По умолчанию равен 144 часам.
О Verify Interval — записи, поступающие с других серверов WINS, по умолчанию
проверяются каждые 576 часов B4 дня). Подобной проверке подлежат
только записи других серверов WINS.
Дополнительная настройка сервера WINS
Кнопка Advanced в диалоговом окне WINS Server Configuration открывает диалоговое
окно дополнительной настройки сервера WINS. Это окно управляет ведением
журналов работы сервера, архивацией и другими служебными операциями. Ниже
перечислены основные управляющие возможности этого окна.
О Logging Enabled — журнал изменений в базе данных по умолчанию хранится
в папке %system_root%/system32/wins. WINS использует этот файл для
восстановления данных после сбоев.
О Log Detailed Events — WINS сохраняет подробную информацию обо всех
выполняемых операциях. Если у вас возникают трудности с регистрацией имен
на сервере WINS, попробуйте включить этот режим. Поскольку сохранение
подробной информации замедляет работу WINS, его рекомендуется включать
только при диагностике проблем с регистрацией. Чтобы просмотреть
подробную информацию, воспользуйтесь разделом System Log приложения Event Viewer.
О Replicate Only With Partners — по умолчанию сервер WINS выполняет
репликацию только с серверами WINS, указанными в качестве партнеров по
репликации. Если снять этот флажок, сервер WINS можно настроить для обмена
данными с серверами WINS, отсутствующими в списке партнеров.
О Backup on Termination — база данных WINS архивируется при завершении
работы WINS Manager.
О Migrate On/Off — клиентам WINS разрешается перезаписывать статические
данные. Эта возможность используется в ситуациях, когда для компьютеров,
которые не являлись клиентами WINS, были созданы статические записи, после
чего эти компьютеры были преобразованы в клиентов WINS. Перезапись
статических данных позволяет новым клиентам WINS динамически регистрировать
свои имена компьютеров (с перезаписью существующих статических записей).
Включите этот режим при модернизации более старых систем до Windows NT.
О Starting Version Count — значение, используемое для контроля версии базы
данных. Если база данных WINS будет безвозвратно испорчена, введите
нулевой номер версии, чтобы обновить базу данных.
О Database Backup Path — каталог, в котором хранятся архивы базы данных.
Архивы используются для восстановления данных в случае сбоя WINS или
системного сбоя. Важная подробность: не используйте сетевые каталоги для
архивации базы данных WINS! В случае нарушения работы сети вы не
сможете обратиться к базе данных WINS или восстановить ее.
Архивация базы данных WINS
Каждые 24 часа база данных WINS автоматически архивируется. Тем не менее
для этого необходимо задать каталог для хранения архивов. Выполните
следующие действия:
1. Откройте меню Mappings и выберите команду Back Up Database.
2. Введите каталог для хранения архивов.
3. Щелкните на кнопке ОК.
Архивация данных реестра
В процесс сопровождения WINS также может входить архивация данных реестра,
относящихся к серверу WINS. Выполните следующие действия:
1. Запустите редактор реестра Windows NT 4 командой regeditexe или regedt32.exe.
2. Найдите подраздел WINS в разделе HKEYJXX^JW(>IINE^
Services\.
3. Откройте меню Реестр (Registry) и выберите команду Экспорт ветви реестра
(Save Key). На экране появляется соответствующее диалоговое окно.
4. Введите каталог, используемый для архивации, и щелкните на кнопке
Сохранить (Save).
5. Закройте редактор реестра
Восстановление базы данных WINS
Если WINS перестает нормально работать, вероятно, целостность данных в базе
WINS была нарушена. При обнаружении порчи данных WINS автоматически
восстанавливает базу данных. Также можно остановить и перезапустить службу
WINS — возможно, сервер обнаружит и исправит ошибку. Это делается так:
1. Откройте панель управления. Для этого следует выполнить команду Пуск ►
Настройка ► Панель управления (Start ► Settings ► Control Panel).
2. Дважды щелкните на значке Службы (Services).
3. Найдите в списке служб строку Windows Internet Name Service.
4. Щелкните на кнопке Stop.
5. Щелкните на кнопке Start.
Если WINS обнаруживает порчу данных в базе, воспользуйтесь приложением
Event Viewer и убедитесь в том, что восстановление прошло успешно. Если WINS
не обнаруживает порчу данных и не восстанавливает базу после перезапуска,
восстановление можно провести вручную. Это делается так:
1. Откройте меню Mappings и выберите команду Restore Database.
2. Введите каталог, в котором хранится архив.
3. Щелкните на кнопке ОК.
Если команда восстановления базы данных недоступна, значит, база данных
WINS ранее не архивировалась. В этом случае содержимое базы данных следует
удалить (кнопка Delete Owner — см. выше) и построить базу заново. При этом
все клиенты должны повторно зарегистрироваться в WINS, что происходит
автоматически при перезагрузке клиентских систем.
Сжатие базы данных WINS
Когда база данных WINS (wins.mdb) достигает объема в 30 Мбайт и более, ее
рекомендуется сжать. Ручное сжатие базы данных WINS производится утилитой
jetpack.exe из режима командной строки. По умолчанию база данных WINS
хранится в каталоге C:\WINNT\SYSTEM32\WINS. Не забудьте завершить работу службы
WINS перед сжатием и перезапустить службу после его завершения. Команда
сжатия базы данных WINS имеет следующую структуру:
jetpack wins.mdb временное_имя.mdb
Вся процедура выполняется из командной строки. Полная
последовательность команд для остановки службы WINS, сжатия базы данных и перезапуска
службы выглядит так:
net stop wins
jetpack wins.mdb templ.mdb
net start wins
Имя временного файла базы данных выбирается произвольно. После того
как сжатие будет завершено, временный файл автоматически удаляется.
Репликация WINS
В сети с несколькими серверами WINS часто имеет смысл организовать
совместный доступ к базам разных серверов. Тем самым каждый сервер WINS
достигает максимальных возможностей по разрешению имен, поскольку он может
использовать данные со всех серверов WINS. Серверы WINS, совместно
использующие свои базы данных, называются партнерами по репликации.
Репликация выполняется в активном или пассивном режиме. Активная
репликация (push) выполняется при достижении определенного количества
изменений в базе данных (это количество задается администратором). Пассивная
репликация (pull) выполняется по расписанию, которое также настраивается
администратором.
■ -jflgyiS S^^fwyytM:;. ";; ^' "• •- rVm »fl -::.- ^ • •••■>•:.,■•;■■•:•;;• :.">.„••;{
в^У|.л:1'..^У^=.'^^л.Г:1
Рис. 7.7. Настройка репликации WINS
Как правило, в медленных глобальных сетях используется только пассивная
репликация, планируемая на периоды относительно низкой загрузки. Активная
репликация (наряду с пассивной) обычно применяется в локальных сетях с
относительно быстрыми подключениями. Она гарантирует, что между
последовательными обновлениями содержимое базы данных WINS не изменится слишком
значительно. С другой стороны, система пассивной репликации гарантирует, что
обновления будут происходить регулярно, даже при минимальных изменениях.
Чтобы настроить механизм репликации, запустите приложение WINS Manager,
откройте меню Server и выберите команду Replication Partners.
В диалоговом окне Replications Partners настраиваются активные и/или
пассивные партнеры по репликации. Кнопка Replicate Now выполняет немедленную
репликацию. Флажок Push with Propagation передает изменения партнерам по
репликации и инициирует «цепную реакцию»: обновляются не только
непосредственные партнеры по репликации, но также все партнеры следующего уровня
(то есть «партнеры партнеров»).
Рекомендации по реализации WINS
Хотя для предоставления сервиса WINS в сети достаточно одного сервера,
Microsoft рекомендует использовать минимум два сервера. Второй сервер WINS
обеспечивает дополнительную защиту от ошибок на случай сбоя первого сервера.
Помимо повышения устойчивости, второй сервер WINS отчасти способствует
распределению нагрузки. Чтобы работа более равномерно распределялась между
серверами, разделите клиентов на две равные группы и назначьте им разные
серверы WINS в качестве основного сервера. Другой сервер WINS назначается
альтернативным, или вторичным, чтобы каждый клиент пользовался
преимуществами повышенной надежности. Кроме того, не забудьте убедиться в том, что
серверы WINS выполняют функции партнеров по репликации.
Для нормальной работы системы WINS на каждые 10 000 обслуживаемых
клиентов WINS необходимо устанавливать дополнительный сервер. Если
потребуется повысить производительность работы отдельного сервера WINS,
отключите режим ведения журнала. Сбой сервера WINS приведет к утрате последних
изменений в базе данных, но сервер будет работать быстрее. Чтобы повысить
производительность за счет установки нового оборудования на сервере,
рассмотрите возможность использования многопроцессорной системы. Microsoft
утверждает, что каждый дополнительный процессор примерно на 25 % ускоряет
работу сервера WINS.
Интеграция служб разрешения имен
Помимо сервера WINS, клиент сети Microsoft может обратиться за разрешением
имен NetBIOS к серверу DNS. В системах Windows NT 4.0 этот режим
включается установкой флажка Enable DNS for Windows Resolution (рис. 7.8). Если флажок
установлен, то после неудачной попытки разрешения имени через сервер WINS,
широковещательный запрос или файл LMHOSTS/HOSTS, клиент WINS
обращается к серверу DNS.
IPAdcfo**| DNS ;. ед$^геи ]DHCPReJay | Bouting J
: r window* и^$$й$*?«** CWWS]—'—^^ггг:~?—: I
;. | j[1] Novell NE2000 Adapter 3 j I
■■• I p^aryWins $Ш£й: J192 .168 .1 Too": :- Ir :•=
,^Д||' : OK | Cancel ; [ '.- &apfc»" £• j J
Рис. 7.8. Включение разрешения имен через сервер DNS в клиенте WINS
Серверы DNS от Microsoft также могут настраиваться на разрешение имен
через WINS (рис. 7.9). При этом сервер WINS используется только для
разрешения хостового имени компьютера в сети. Это означает, что сервер DNS
должен быть способен разрешить имя домена и любых субдоменов перед
обращением к серверу WINS.
Предоставление данных WINS через DHCP
Сервер DHCP тоже можно настроить так, чтобы возвращаемая клиенту
информация не ограничивалась возвращением IP-адреса и маски подсети. Клиент DHCP
также может получать от сервера DHCP данные WINS. Точнее, для клиента
DHCP можно задать адреса серверов WINS (основного и вторичного) и тип
узла NetBIOS.
Четыре типа узлов NetBIOS — В, Р, М и Н — описаны выше в этой главе. На
рис. 7.10 изображено диалоговое окно настройки этих параметров для сервера
DHCP от Microsoft. Настройка DHCP описана в главе 8.
ПРИМЕЧАНИЕ
IP-адреса, настроенные на основном и вторичном серверах WINS, имеют более высокий
приоритет, чем аналогичные параметры, настроенные в DHCP.
Genmi J SOA Record | Noty WINS Lookup j
& |fe£\^NS]RjSc£i55rj Г Setting on^ «Ifect tecel *eryer:, 1
r-^fNS Server* ~~~- -.— '■—-: —■■— -—. .~~r™.^-~™ 1.
l-i :■ ■ ■.^■w;r?:f
: r: 1192.168.1.100 Л #&№'■■{■■'.'. i! ••
I { I '".... 1 : ■'•$■• I 1
J I ■ "I ИГ, I -Г .11 -I ■■■!- . | II
. I :.• .., .;: :.;: ^lll...^.... 11.: i'J:.'.^ j
Advanced .♦ i-j |
■■.■■■ ^••••^•■:p.:-' OK | &noe* | 1
Рис. 7.9. Активизация обращения к серверу WINS в сервере DNS
Option*tot: П92.168t*!;t3J"-"-4"J :'"'У:' :УЖ&^УУ- '''":'""rУ"- I OK J:
JUnussdOgfom: . , ■,,,>..,;:/:>x„ ,,■ ReliveOfi^oj»:;• = ••:. . .-. •*
1002 Time Offset 3 • • '^': • ' 1003 Routw ' 3 С^псЫ f
004 Time Server w^$&4-. 1 Ш°^$^*** 1
007 Log Servers -t ■'.'.'r^'^. i \ШШ^ВиШб\ур& ^J2S-J
: 008 Cookie Servers . ,^fi*t^li047 NetBIOS Scope 10 .\ ::•'• :' :
]009 LPR Servers iJ..'r—Z .'"Tj *J. ■ . ц^ . t\
Comment: NBN5Addfe^e4)iripf*o#0«fet . :
; iPAdde«* jmmuoo "''. У ■ .,-\.:^;%. ..-.: 3
|. £dftAtray.u | j
: I . JrJ J
Рис. 7.10. Серверы DHCP могут предоставлять сведения о конфигурации WINS
Разрешение имен NetBIOS
через файл LMHOSTS
Преобразование имен NetBIOS в IP-адреса также может производиться на
основании содержимого файла LMHOSTS. Тем не менее файл LMHOSTS приходится
создавать и обновлять вручную. В сущности, файл представляет собой статическую
таблицу, устанавливающую соответствие между именами компьютеров и
IP-адресами. Фирма Microsoft включила пример файла LMHOSTS в комплект поставки
операционных систем Windows NT и Windows 95/98. В Windows 95/98 файл
LMHOSTS.SAM находится в каталоге c:\windows. В Windows NT файл LMHOSTS.SAM
следует искать в каталоге c:\winnt\system32\drivers\etc.
В файле LMHOSTS.SAM подробно объясняется, как создать файл LMHOSTS. Тем
не менее, чтобы файл LMHOSTS активно использовался, он должен называться
просто LMHOSTS (без расширения). Примерный файл LMHOSTS показан на рис. 7.11.
НЕ*» £<*.&ммЬ и* • ^ , ?;■*.£: •• :;- • ; • '. • ••
N192.168.1.27 servers «PRE 800H:donainM1 *DC for MasteM Domain 3j
1192.168.2.101 files «PRE ifile server jj
1192.168.3.105 serueM tPRE ^used for include below II
|192.168.1.102 seruer2 II
1192.168.1.103 seruer3 |j
1192.168.1.1011 server* jj
|tBECIN_ftLTERNATE II
IlilNCLUDE \\seruer1\public\lnhosts jj
lit INCLUDE \\seruerS\public\lmhosts Jj]
|j«EHO_ftLTERNflTE
Рис. 7.11. Пример файла LMHOSTS
Помимо отображения IP-адресов на имена компьютеров NetBIOS, файл
LMHOSTS содержит специальные директивы, расширяющие его возможности.
Например, записи LMHOSTS, завершающиеся директивой #PRE, заносятся в кэш
имен NetBIOS при запуске компьютера. Тем самым ускоряется процесс
разрешения имен, поскольку клиенты Microsoft всегда начинают попытки
разрешения с поиска в кэше имен.
В табл. 7.2 перечислены специальные директивы, используемые в файле
LMHOSTS.
Таблица 7.2. Директивы и описания LMHOSTS
Директива Описание
#PRE Записи с директивой #PRE предварительно загружаются в кэш
имен NetBIOS
#ООМ:имя_домена Директива #DOM определяет имя домена. Запись необходима
для работы контроллера домена (например, синхронизации
и просмотра баз данных)
#ШО.и0Е<имя_файла> Дополнительные файлы, используемые для разрешения имен.
Допускается использование файлов LMHOSTS, находящихся
на удаленных компьютерах (по ссылке в формате UNC). Если вы
используете файлы LMHOSTS на других компьютерах, то эта
запись работает только в том случае, если для удаленного
компьютера было заранее создано отображение
продолжение £
Таблица 7.2 (продолжение)
Директива Описание
#BEGIN_ALTERNATE Директивы #BEGIN_ALTERNATE и #END_ALTERNATE
#END_ALTERNATE позволяют включить в файл LMHOSTS несколько записей
#INCLUDE. Таким образом, файл LMHOSTS работает
с несколькими удаленными файлами LMHOSTS так,
как если бы они были локальными
#МН Директива #МН используется для многоадресных (MultiHomed)
компьютеров, обладающих несколькими IP-адресами,
отображаемыми на одно имя компьютера
комментарий Комментарий, включаемый в файл LMHOSTS после любой
информационной записи или в отдельной строке
Вероятно, самым важным из перечисленных директив следует считать
директиву #PRE, поскольку она в наибольшей степени влияет на скорость
разрешения имен в сети. Вторая по важности директива #DOM определяет
контроллер домена. Присутствие записей #PRE и #DOM на всех контроллерах доменов
повышает скорость административного обмена данными между контроллерами.
Кроме того, наличие на клиентском компьютере файла LMHOSTS, добавляющего
IP-адреса контроллера домена в кэш имен, ускоряет вход в систему, поскольку
в клиентской системе уже имеется готовый IP-адрес контроллера домена.
ПРИМЕЧАНИЕ
Файлы HOSTS и LMHOSTS очень похожи. Файл LMHOSTS предназначен для разрешения имен
NetBIOS, а файл HOSTS предназначен для разрешения имен хостов (см. главу 6).
Итоги
Имена NetBIOS использовались в сетях Microsoft до выхода Windows 2000.
В сетях TCP/IP для обмена данными между двумя компьютерами эти имена
должны быть преобразованы в IP-адреса. Существует несколько механизмов
разрешения имен, но динамический механизм всего один — использование WINS.
WINS работает как внутреннее приложение типа «клиент-сервер»,
встроенное в операционную систему Microsoft. При запуске клиент WINS регистрирует
свое имя и IP-адрес на сервере WINS. Имена освобождаются при завершении
работы клиента. Это позволяет серверу WINS вести базу данных имен, реально
используемых в сети. Когда клиент WINS хочет связаться с другим
компьютером сети, он обращается к серверу WINS с запросом на преобразование имени
NetBIOS в IP-адрес.
Чтобы компьютер мог стать клиентом WINS, он должен знать IP-адрес как
минимум одного сервера WINS. Данные вводятся в диалоговом окне настройки
TCP/IP для клиента WINS. Для повышения устойчивости системы клиенту
WINS можно назначить адреса нескольких серверов WINS. Если основной
сервер WINS недоступен, клиент попытается связаться с вторичным сервером WINS.
Функциональность WINS также может использоваться компьютерами, не
являющимися клиентами WINS. Такие компьютеры обслуживаются прокси-аген-
тами WINS. Прокси-агент получает локальные широковещательные запросы на
разрешение имен и пересылает их серверу WINS, после чего возвращает ответ
сервера компьютеру, от которого поступил запрос.
Многие административные и служебные операции выполняются сервером
WINS автоматически. Тем не менее архивацию базы данных на сервере WINS
следует включить отдельно в приложении WINS Manager. Сервер WINS
автоматически восстанавливает испорченную базу данных после перезапуска (конечно,
при наличии архивной копии). Восстановление базы данных также можно
выполнить вручную из приложения WINS Manager. Для сжатия базы данных сервера
WINS используется утилита командной строки jetpack.exe.
Партнерами по репликации называются серверы WINS, настроенные для обмена
информацией из баз данных WINS. По типу обмена данными партнеры делятся
на два класса: активные и пассивные. Пассивные партнеры хорошо подходят для
медленных глобальных сетей. В относительно быстрых локальных сетях можно
настроить как активный, так и пассивный обмен, чтобы базы данных WINS
содержали самую свежую информацию.
Файлы LMHOSTS также упрощают разрешение имен NetBIOS. В отличие от
WINS файлы LMHOSTS содержат статическую информацию и обновляются
вручную, но несмотря на это, они обладают определенными преимуществами. Записи
файла LMHOSTS могут загружаться в кэш имен NetBIOS, для этого запись
снабжается директивой #PRE. Тег #DOM в файлах LMHOSTS используется для
идентификации контроллера домена.
8 Автоматизированная
настройка TCP/IP
Карапжит С. Сияй (Karajit S. Siyan)
Настройка параметров TCP/IP для каждой станции в большой сети обычно
сопряжена с тяжелой и долгой работой, особенно когда возникает необходимость
в изменении таких параметров TCP/IP, как IP-адреса и маски подсетей.
Изменения могут быть обусловлены кардинальной реструктуризацией сети или
наличием в ней многочисленных мобильных пользователей с портативными
компьютерами, которые могут подключаться к любому сегменту сети.
Возможны как физические, так и беспроводные подключения. Поскольку параметры
конфигурации TCP/IP компьютера зависят от того, к какому сегменту он
подключен, переход компьютера в другой сегмент сети должен сопровождаться
соответствующим изменением параметров.
Только компетентный сетевой администратор хорошо понимает все
последствия, к которым приводит изменение параметров TCP/IP. Группа IETF
разработала для объединенных сетей TCP/IP несколько протоколов
автоматической настройки, в том числе ВООТР (Boot Protocol) и DHCP (Dynamic Host
Configuration Protocol).
Динамическая настройка конфигурации
с применением ВООТР
Протокол ВООТР проектировался для того, чтобы протоколы IP (Internet
Protocol) и UDP (User Datagram Protocol) могли использоваться для передачи
информации компьютерам, желающими настроить свою конфигурацию. Компьютер,
сгенерировавший запрос, называется клиентом ВООТР, а компьютер, ответивший
на запрос клиента, называется сервером ВООТР (рис. 8.1).
Целью клиентского запроса ВООТР является получение значений
параметров IP для компьютера, на котором работает клиент ВООТР.
Протокол ВООТР описан в RFC 951. Обновленная информация содержится
в RFC 2132, RFC 1532, RFC 1542 и RFC 1395. Принципы действия ВООТР
изложены в следующем разделе.
^Сервер ВООТР^
UDP
Сервер ВООТР Дщ
. т .
р£ Клиент ВООТР Ц к£ Клиент ВООТР i
—OjD— —C?l)—
UDP UDP
h^^^^H ' l^^^^H
l~—■-=="—" ■■■■ -Д ' i i <^1?"..'..H Л
Клиент ВООТР Клиент ВООТР
Рис. 8.1. Клиенты и серверы ВООТР
IP-адреса запросов/ответов ВООТР
Сообщения ВООТР инкапсулируются в заголовках UDP, идентифицирующих
номер порта, используемого процессами ВООТР. Дейтаграмма UDP
инкапсулируется в заголовке IP. Но какие адреса отправителя и получателя
используются в заголовке IP? Интересный вопрос, потому что при выдаче запроса
клиент ВООТР должен указать эти адреса. Как правило, клиент ВООТР не знает
своего IP-адреса и указывает вместо него 0.0.0.0. Если же адрес известен, он
используется в клиентском запросе ВООТР.
Известен ли IP-адрес сервера клиенту ВООТР? В общем случае неизвестен.
Это особенно верно по отношению к ситуациям, когда клиент ВООТР
представляет собой бездисковую рабочую станцию и не располагает средствами для
определения адреса сервера. Впрочем, если адрес сервера ВООТР может
настраиваться на уровне рабочей станции, он используется клиентом ВООР.
Если клиент ВООТР не знает IP-адрес сервера ВООТР, он использует
ограниченную рассылку IP. В качестве адреса ограниченной рассылки используется
следующее значение:
255.255.255.255
ПРИМЕЧАНИЕ
Пакеты, отправленные по адресу ограниченной (локальной) рассылки, принимаются всеми IP-узлами
локального сегмента сети, включая серверы ВООТР.
А если сервер ВООТР находится в другой подсети IP, за граничным
маршрутизатором? Как говорилось выше, ограниченная рассылка за маршрутизатор не
распространяется. Для таких случаев на маршрутизаторе работает
агент-ретранслятор ВООТР (ВООТР relay agent), который проверяет, используется ли в
дейтаграмме ограниченной рассылки приемный порт UDP с номером 67 (порт
зарезервирован для BOOTP/DHCP). Если условие выполняется, ограниченная
рассылка перенаправляется в сетевые интерфейсы маршрутизатора (рис. 8.2).
Сервер
ИВН воотр
4J . 1
< 1 < т H ►
1
(^Х/""*~^\ Агент-ретранслятор ^)
Д \ BOOTP p
( ) r-y_^y_ _^~——^
T
# ' •
_lT~* —" _L
j Запрос клиента BOOTP, r~jjjj~j~j
использующий адрес I^^^B
офаниченной H^^^H I
1 рассылки 255.255.255.255. [жННШ
Клиент BOOTP
Рис. 8.2. Пересылка сообщений ВООТР через граничный маршрутизатор
Сервер ВООТР, находящийся в локальной сети, может ответить на запрос
клиента ВООТР. Будет ли в этом сообщении использоваться IP-адрес клиента?
Иначе говоря, может ли сервер ВООТР послать направленный ответ? Все
зависит от реализации сервера ВООТР.
Сервер знает IP-адрес клиента, хранящийся в базе данных конфигурации
ВООТР. Почему же он не может использовать этот адрес для посылки
направленного ответа клиенту? Дело в том, что в момент отправки сервером запроса
ARP на получение аппаратного адреса клиента ВООТР клиент ответить не
может. Почему? Потому что он еще не знает своего IP-адреса. Сервер ВООТР
получает аппаратный адрес клиента из заголовка канального уровня в сообщении
клиента ВООТР. Реализация сервера ВООТР может добавить запись с
информацией о клиенте ВООТР в кэш ARP (рис. 8.3). При наличии такой записи
сервер ВООТР может использовать направленный ответ.
ПРИМЕЧАНИЕ
Модификация кэша ARP используется в реализации ВООТР для BSD Unix.
База данных ВООТР
^Аппаратный I ,р.адоес |^ ллл \
адрес 1^-адрес •••
И/ Н 0800003А002В 199.245.180.1
У I • I • I
\*> ^—ч-J^ I I • I • I
£ Сервер / М I • I * I
pX^JtoOTPJJ^ ' ' ■ '
^ ^ \L-——■ ► Изменение кэша ARP
UDP \| Кэш ARP
ВООТР \ТМТ] \ | 1 1 1
И—7Р—К. |Р"адрес ^^ *"
| ^ 199.245.180.1 0800003А002В
[ # *
m i% I • I • I
• • | |
—Т"-*"^
р^^И 199.245.180.1
Клиент ВООТР
Аппаратный адрес = 0800003А002В
Рис. 8.3. Изменение кэша ARP сервером ВООТР
Если сервер ВООТР не изменяет содержимое кэша ARP, ответ рассылается
в широковещательном режиме.
Потеря сообщений ВООТР
В своей работе ВООТР использует протоколы UDP и IP, не гарантирующие
доставки сообщений. В результате возможна потеря, задержка, дублирование
или нарушение последовательности сообщений ВООТР. Поскольку
контрольная сумма IP обеспечивает проверку целостности только заголовка, но не поля
данных, реализация ВООТР может потребовать активизации контрольной суммы
UDP, защищающей от ошибок во всем сообщении ВООТР.
При отправке запросов клиент ВООТР устанавливает флаг запрета
фрагментации (DF), чтобы упростить обработку ответов ВООТР, а также на случай
нехватки памяти для сбора фрагментированных дейтаграмм.
Для борьбы с потерей сообщений в ВООТР используется механизм тайм-аута
с повторной передачей. Отправляя запрос, клиент ВООТР запускает таймер.
Если ответ ВООТР будет получен до истечения интервала тайм-аута, отсчет
прекращается; в противном случае ВООТР передает запрос заново.
Одновременный запуск нескольких клиентов ВООТР может привести к
переполнению сети широковещательными запросами ВООТР. Чтобы этого не
произошло, в спецификации ВООТР рекомендуется использовать случайную
задержку, начальная продолжительность которой составляет от нуля до четырех
секунд. При каждой последующей повторной отправке интервал удваивается до
тех пор, пока он не достигнет достаточно большой величины (например, 60
секунд). При достижении верхней границы продолжительность интервала
перестает удваиваться, но случайная задержка в итоговом интервале продолжает
применяться. Внесение случайной задержки помогает предотвратить
одновременное поступление запросов со стороны клиентов ВООТР, повышающих нагрузку
на сервер и порождающих конфликты пакетов в Ethernet. Удвоение
продолжительности случайного интервала предотвращает перегрузку сети
многочисленными широковещательными запросами со стороны многих клиентов ВООТР.
Формат сообщения ВООТР
На рис. 8.4 изображена структура сообщения ВООТР. Отдельные поля
сообщения описаны в табл. 8.1.
Таблица 8.1. Поля сообщений ВООТР
Поле Длина Описание
в октетах
ор 1 Тип сообщения: 1 — запрос (BOOTREQUEST), 2 — ответ (BOOTREPLY)
htype 1 Тип аппаратного адреса. Значения совпадают со значениями
аналогичного поля в пакетах ARP. Например, код 1 соответствует
сети Ethernet 10 Мбит/с
Ыеп 1 Длина аппаратного адреса в октетах. Аппаратные адреса Ethernet
и Token Ring имеют длину 6 байт
Поле Длина Описание
в октетах
hops 1 Поле обнуляется клиентом ВООТР. Может использоваться
агентом-ретранслятором, работающим на маршрутизаторе,
при пересылке сообщений ВООТР
xid 1 Код транзакции — случайное число, задаваемое клиентом ВООТР
при построении сообщения. Сервер ВООТР использует код транзакции
в своих ответах клиенту. Наличие кода xid позволяет клиентам
и серверам ВООТР связать сообщение ВООТР с ответом
sees 1 Заполняется клиентом ВООТР. Содержит количество секунд,
прошедших с начала загрузки клиента
— 2 Не используется
ciaddr 4 IP-адрес клиента ВООТР. Заполняется клиентом в сообщении
BOOTREQUEST, предназначенном для проверки использования ранее
назначенных параметров конфигурации. Если клиент не знает свой
IP-адрес, полю присваивается О
yiaddr 4 IP-адрес клиента ВООТР, возвращаемый сервером ВООТР
sladdr 4 IP-адрес сервера. Значение присваивается клиентом ВООТР, если
клиент хочет связаться с конкретным сервером ВООТР. IP-адрес
сервера ВООТР может храниться в конфигурационной базе данных
TCP/IP на клиенте ВООТР. Сервер может вернуть адрес следующего
сервера, с которым следует связаться в процессе загрузки, —
например, адрес сервера, на котором хранится загрузочный
образ операционной системы
giaddr 4 IP-адрес маршрутизатора, на котором работает агент-ретранслятор
ВООТР
chaddr 16 Аппаратный адрес клиента ВООТР. 16 октетов зарезервированы
для того, чтобы данное поле позволяло представлять различные
типы аппаратных адресов. В архитектурах Ethernet и Token Ring
используются только 6 октетов
sname 64 Необязательное имя сервера (если оно известно клиенту ВООТР).
Хранится в формате строки, завершенной нуль-символом
file 128 Имя загрузочного образа. Хранится в формате строки, завершенной
нуль-символом. Если клиент ВООТР хочет загрузить образ операционной
системы, принятый с сетевого устройства, он может задать обобщенное
имя — например, «unix» для загрузки образа Unix
На сервере ВООТР может храниться дополнительная информация
о конкретной операционной системе, необходимой для этой рабочей
станции. Ответ, полученный от сервера ВООТР, содержит полностью
определенное имя файла
vendor 64 Дополнительные данные, смысл которых определяется поставщиком.
Например, при запросе в этом поле может передаваться тип/серийный
номер устройства, а при ответе — информация о поддержке некоторых
возможностей или идентификатор удаленной файловой системы.
Информация может быть зарезервирована для использования
ядром или загрузчиком третьей фазы
0 12 3
01234567890123456789012345678901
Г орA) | htypeA) | hlen A) | hopsA) l
xidD) 1
sees B) | flags B) . [
| ciaddr D) |
| yiaddr D) |
| siaddr D) |
I giaddr D) |
chaddrA6)
I sname F4) |
file A28)
| vendor F4) I
В круглых скобках указывается
длина поля (в октетах)
Рис. 8.4. Формат сообщения BOOT?
Фазы ВООТР
Несмотря на свое название, протокол ВООТР не используется для фактической
пересылки образа операционной системы клиенту ВООТР. Пересылка образа
осуществляется отдельным протоколом TFTP (Trivial File Transfer Protocol),
который использует в качестве транспорта протокол UDP. Бездисковые
рабочие станции загружают образ операционной системы с сервера; другие станции
просто используют ВООТР для централизованного назначения IP-адресов, без
загрузки системы.
На рис. 8.5 изображены фазы, из которых состоит процесс загрузки образа
операционной системы. На шаге 1 клиент ВООТР выдает запрос на получение
данных конфигурации IP. На шаге 2 сервер ВООТР возвращает данные
конфигурации IP и имя загружаемого файла с образом операционной системы. На шаге 3
клиент ВООТР посылает запрос на загрузку образа операционной системы
клиенту TFTP. На шаге 4 клиент TFTP посылает серверу TFTP запрос на загрузку
образа операционной системы. На шаге 5 сервер TFTP возвращает серию
пакетов данных, содержащих образ операционной системы. После принятия образа
ВООТР загружает его в память и инициализируется.
Отделение ВООТР от механизма пересылки образа операционной системы
обладает тем преимуществом, что сервер ВООТР не обязан работать на том
компьютере, на котором хранятся образы операционных систем (то есть
сервере TFTP). Кроме того, это позволяет использовать ВООТР в ситуациях,
когда с сервера принимаются только данные конфигурации, без пересылки образа
операционной системы.
Возможна ситуация, в которой администратор настраивает рабочую станцию
на загрузку разных операционных систем в зависимости от пользователя. В этом
случае запрос ВООТР может содержать в поле имени файла обобщенное обо-
значение — например, «unix» для принятия образа операционной системы Unix,
или «default» для загрузки образа операционной системы по умолчанию.
Столкнувшись с таким обобщенным запросом, сервер ВООТР обращается к
конфигурационной базе данных, находит полностью определенное имя файла и возвращает
его в ответе ВООТР. Клиент ВООТР может передать полностью определенное
имя локальному клиенту TFTP для принятия образа операционной системы.
A) Запрос BootP
* ^*^ B) Конфигурация^^-
t ГСерверХТ IP и имя файла Тб^^Х
фа?а1 ЧЁ°^Е^г^^_ с образом OC/KgootPj)
-X ®^5Ф~====^^ -
Т Ьр^-чПолучение запрос ^lUr^^-^
СКлиент Уобоаза ОС DJ *^ ъ Клиент1)
Фаза 2 Клиент В TFTP V>opa3a V ^ на загрузку Jt Tfjp j
I BootP S-Q—r^-^ ^ J образа OC^ 4^^^/
I njj|g UDp ^4— —;—m J UDP
▼ H^^l \§) Пересылка IB ■
|^^___!£ I данных P§ »P I
Сервер
BootP
1 1
Рис. 8.5. Пример работы bootstrap
Дополнительные данные
В формате сообщения ВООТР явно заданы стандартные параметры IP. Многие
поставщики оборудования передают своим устройствам дополнительные
параметры. Для таких случаев в сообщения ВООТР было включено поле
дополнительных данных.
В поле vendor сообщения ВООТР клиенту передаются данные,
интерпретация которых определяется поставщиком оборудования. Поле не является
обязательным, а его применение зависит от того, какая дополнительная информация
нужна клиенту ВООТР. Первые четыре октета содержат «волшебное число» —
признак формата остальных полей. Эти четыре октета задаются в десятичной
записи с точечным разделением (не путайте их с IP-адресами!). Скажем,
произвольно выбранная последовательность 99.130.83.99 (в шестнадцатеричной
записи — 63.82.53.63) является общепринятым обозначением стандартного формата
области дополнительных данных. За признаком формата перечисляются элементы,
каждый из которых характеризуется следующими атрибутами:
О метка A октет);
О длина следующего поля данных A октет);
О данные (переменная длина).
Метки элементов ВООТР описаны в RFC 1497, «ВООТР Vendor Information
Extensions». С появлением протокола DHCP дополнительные данные ВООТР
и поле параметров DHCP были приведены к общему формату, описанному
в RFC 2132, «DHCP Options and BOOTP Vendor Extensions». Некоторые часто
используемые значения меток приведены в табл. 8.2.
Таблица 8.2. Стандартные метки дополнительных данных ВООТР
Метка Длина данных Интерпретация
0 - Используется только в целях выравнивания, чтобы следующие
поля начинались с границы слова
1 4 Маска подсети
2 4 Смещение географической зоны, в которой находится подсеть
клиента, от стандартного времени UTC (Coordinated Universal Time).
Смещение выражается 32-разрядным целым числом со знаком
3 N Список IP-адресов маршрутизаторов в подсети клиента.
Маршрутизаторы перечисляются в порядке предпочтительности.
Минимальная длина списка равна 4 октетам, а общая длина
должна быть кратна 4
4 N Список серверов времени (RFC 868), доступных для клиента.
Серверы перечисляются в порядке предпочтительности.
Минимальная длина списка равна 4 октетам, а общая длина
должна быть кратна 4
5 N Список серверов имен (IEN 116), доступных для клиента. Серверы
перечисляются в порядке предпочтительности. Минимальная длина
списка равна 4 октетам, а общая длина должна быть кратна 4
6 N Список серверов DNS (STD 13, EFC 1035), доступных для клиента.
Серверы перечисляются в порядке предпочтительности.
Минимальная длина списка равна 4 октетам, а общая длина
должна быть кратна 4
7 N Список журнальных серверов (MIT-LCS UDP), доступных для
клиента. Серверы перечисляются в порядке предпочтительности.
Минимальная длина списка равна 4 октетам, а общая длина
должна быть кратна 4
8 N Список серверов cookie (RFC 865), доступных для клиента.
Серверы перечисляются в порядке предпочтительности.
Минимальная длина списка равна 4 октетам, а общая длина
должна быть кратна 4
9 N Список серверов построчной печати LPR (RFC 1179),
доступных для клиента. Серверы перечисляются в порядке
предпочтительности. Минимальная длина списка равна
4 октетам, а общая длина должна быть кратна 4
10 N Список серверов Imagen Impress, доступных для клиента.
Серверы перечисляются в порядке предпочтительности.
Минимальная длина списка равна 4 октетам, а общая длина
должна быть кратна 4
Метка Длина данных Интерпретация
И N Список серверов местонахождения ресурсов (RFC 887),
доступных для клиента. Серверы перечисляются в порядке
предпочтительности. Минимальная длина списка равна
4 октетам, а общая длина должна быть кратна 4
12 N Имя хоста, соответствующее данному клиенту, с возможным
уточнением имени локального домена. Допустимые символы
описаны в RFC 1035. Минимальная длина поля данных равна
1 октету
13 N Размер загрузочного файла. Определяет длину загрузочного
образа, используемого клиентом по умолчанию,
в 512-килобайтных блоках. Длина файла задается
16-разрядным целым числом без знака
128-254 Не определена Интерпретация зависит от реализации
255 - Признак конца информации в поле дополнительных параметров.
Дальнейшие октеты должны быть заполнены нулями
Динамическая настройка
с использованием DHCP
Протокол DHCP (Dynamic Host Configuration Protocol) является расширением
протокола ВООТР и обладает более гибкими возможностями управления
IP-адресами. DHCP может использоваться для динамической настройки основных
параметров TCP/IP хостов (рабочих станций и серверов), работающих в сети.
Протокол DHCP состоит из двух компонентов:
О механизм назначения IP-адресов и других параметров TCP/IP;
О протокол согласования и передачи информации о хостах.
Хост, запрашивающий данные о конфигурации TCP/IP, называется клиентом
DHCP, а хост TCP/IP, предоставляющий эту информацию, называется сервером
DHCP.
Протокол DHCP описан в RFC 2131, «Dynamic Host Configuration Protocol».
Принципы работы DHCP описаны ниже.
Распределение IP-адресов в DHCP
В DHCP используются три способа назначения IP-адресов:
О ручное назначение;
О автоматическое назначение;
О динамическое назначение.
При ручном назначении IP-адрес клиента DHCP вводится вручную сетевым
администратором на сервере DHCP, после чего передается клиенту через
протокол DHCP.
При автоматическом назначении ручная настройка адресов не нужна.
Клиент DHCP получает IP-адрес при первом обращении к серверу DHCP. IP-адреса,
назначенные этим способом, закрепляются за клиентом DHCP и не используются
другими клиентами DHCP.
При динамическом назначении клиент получает IP-адрес на временной основе
или «арендует» его на определенный срок. По истечении этого срока IP-адрес
отзывается, и клиент DHCP должен перестать его использовать. Если клиент
DHCP по-прежнему нуждается в IP-адресе для выполнения своих функций, он
должен запросить другой адрес.
Из трех описанных методов только динамическое назначение позволяет
организовать автоматическое повторное использование IP-адресов. Если клиент
DHCP перестает использовать IP-адрес (например, при корректном
отключении компьютера), он возвращает его серверу DHCP. После этого сервер DHCP
может назначить тот же IP-адрес другому клиенту DHCP, обратившемуся с
запросом на получение адреса.
Метод динамического назначения адресов особенно удобен для клиентов
DHCP, нуждающихся в IP-адресе для временного подключения к сети. Для
примера рассмотрим сеть класса С, к которой могут подключаться до 300 мобильных
пользователей с портативными компьютерами. Сеть класса С может содержать
до 253 узлов B55 - 2 специальных адреса = 253). Поскольку компьютеры,
подключающиеся к сети через TCP/IP, должны обладать уникальными IP-адресами,
все 300 компьютеров не могут подключиться к сети одновременно. Тем не менее,
если в любой момент времени в сети возможно не более 200 физических
подключений, появляется возможность переназначения неиспользуемых адресов
класса С за счет применения механизма динамического назначения адресов DHCP.
Динамическое назначение адресов также хорошо подходит для назначения
IP-адресов новым хостам с постоянным подключением в ситуациях, когда
свободных адресов не хватает. По мере отключения из сети старых хостов их
IP-адреса могут немедленно назначаться новым хостам.
ПРИМЕЧАНИЕ
Какой бы из трех способов назначения IP-адресов ни был избран, вы все равно сможете один раз
настроить параметры IP на центральном сервере DHCP вместо того, чтобы повторять настройку
конфигурации TCP/IP для каждого компьютера по отдельности.
Назначение IP-адресов в DHCP
Обратившись с запросом к серверу DHCP, клиент DHCP проходит ряд
внутренних стадий, во время которых он согласовывает с сервером срок и область
использования IP-адреса. Процесс получения IP-адреса клиентом DHCP лучше
всего объяснить на диаграмме переходов (то есть конечного автомата). На рис. 8.6
изображена диаграмма, поясняющая процесс взаимодействия между клиентом
и сервером DHCP.
При первом запуске клиент DHCP находится в состоянии
ИНИЦИАЛИЗАЦИЯ. На этой стадии клиент DHCP еще не знает своих параметров IP, поэтому
он рассылает запрос DHCPDISCOVER, инкапсулированный в пакете UDP/IP. В пакете
указан приемный порт UDP 67 (десят.) — такой же, как у сервера ВООТР,
потому что протокол DHCP является расширением ВООТР. В пакете DHCPDISCOVER
используется адрес локальной рассылки 255.255.255.255. Если серверы DHCP
находятся за пределами локального сегмента, на маршрутизаторе IP должен
работать агент-ретранслятор, который перешлет запрос DHCPDISCOVER в другие
подсети. Поддержка агентов-ретрансляторов DHCP рассматривается в RFC 1542.
Отправка ^*~ ^
DHCPREQUESl^ Г ИНИЦИАЛИЗАЦИЯ ^==^^^
/ Прием Ц >v \^^
^"— IL^OFFffi IrjHCPNAK \ ^\
С ВЫБОР J*r ^Остановка \ DHCPNAKN.
^—-, -^гооАГк' \ Истечение срока Т2. \ Аренда истекла, \
/ uhuwauk \ рассылка DHCPREQUEST остановка \
/ от сервера отвергается . \ . ^ .^ '—— _ \
/ DHCPDDBCUNE S* ^^Х^Г"^ ПОВТОРНОЕ ^Ч \
ю«обнвиши|(чВОаОБНОШ1В^ Ч^ЯЗМАНИЕ^
1 одинаковых адресов г—г""^ Истечение [ ffiCPNAK /
\ЕёЙЖ J"™**~ \ \ ££ «-кг* /
\ / на срок ТЗ. Установка \ \ DHCPREQUEST/ таймеоовТ! Т2 /
^ >/ таймеровТ1,Т2 \ \ / ^^ ' /
С ЗАПРОС J) DHCPPACK от сервера. \\ / /
<^^ Аренда на срок ТЗ. \.1 / ./Отмена аренды
\v. Установка таймеров Т1.Т2 S^ ^-— / отправкой
^^-----____-^<^вяз^; DHCPREL£ASE
Отправка
DHCPREQUEST
I с известным J
\\Р-арресш ^у онсрраСК от сервера.
— -^ Аренда на срок ТЗ.
Установка таймеров Т1, Т2
Рис. 8.6. Диаграмма переходов для протокола DHCP, поясняющая процесс
взаимодействия между клиентом и сервером
Прежде чем рассылать запрос DHCPDISCOVER, клиент DHCP выдерживает
паузу случайной продолжительности от 1 до 10 секунд. Это делается для того,
чтобы предотвратить одновременное начало работы клиентов DHCP при их
одновременном включении (как иногда происходит после сбоя питания).
После рассылки запроса DHCPDISCOVER клиент DHCP входит в состояние
ВЫБОР. В этом состоянии клиент DHCP получает сообщения DHCPOFFER от
серверов DHCP, настроенных для ответа этому клиенту. Период времени, в
течение которого клиент DHCP ожидает сообщения DHCPOFFER, зависит от
реализации. Если клиент получает сразу несколько ответов DHCPOFFER, он должен
выбрать один из них. Выбрав сообщение DHCPOFFER от одного из серверов, клиент
DHCP посылает этому серверу сообщение DHCPREQUEST. Сервер DHCP
отвечает сообщением DHCPACK.
Дополнительно клиент DHCP может проверить IP-адрес, переданный в
сообщении DHCPACK, и убедиться в том, что этот адрес не используется. В сетях
с широковещательной рассылкой клиент DHCP может отправить по указанному
адресу запрос ARP и проверить наличие ответа ARP. Получение ответа ARP
означает, что предложенный IP-адрес уже используется; в этом случае ответ
DHCPACK от сервера игнорируется, отправляется ответ DHCPDECLINE, а клиент
DHCP переходит в исходное состояние ИНИЦИАЛИЗАЦИЯ и пытается
получить свободный IP-адрес. При рассылке запроса ARP в локальной сети клиент
указывает в пакете ARP собственный аппаратный адрес в поле аппаратного
адреса отправителя, но в поле IP-адреса отправителя заносится нулевое
значение. Нулевой IP-адрес используется вместо предложенного IP-адреса, чтобы
избежать возможной путаницы с кэшами ARP других хостов TCP/IP (в том
случае, если предложенный IP-адрес уже используется).
Когда клиент получает от сервера DHCP сообщение DHCPACK, он определяет
три временных интервала и переходит в состояние ПРИВЯЗКА. Первый
интервал Т1 определяет срок возобновления аренды; второй интервал Т2 определяет
срок повторной привязки; третий интервал ТЗ определяет продолжительность
аренды. С сообщением DHCPACK всегда возвращается значение ТЗ, то есть
продолжительность аренды. Значения Т1 и Т2 настраиваются на сервере DHCP,
а если они не были заданы, используются значения по умолчанию, основанные
на продолжительности срока аренды, рассчитанные по следующим формулам:
О Т1 = интервал возобновления;
О Т2 - интервал повторной привязки;
О ТЗ - продолжительность аренды;
О Т1 - 0,5 х ТЗ;
О Т2 - 0,875 х ТЗ.
Моменты времени, в которые происходит тайм-аут, вычисляются
прибавлением интервала ко времени отправки сообщения DHCPREQUEST, по которому
было сгенерировано подтверждение DHCPACK. Если запрос DHCP был
отправлен в момент ТО, то моменты тайм-аута по всем трем интервалам вычисляются
по следующим формулам:
О тайм-аут по Т1 = ТО + Т1;
О тайм-аут по Т2 - ТО + Т2;
О тайм-аут по ТЗ в ТО + ТЗ.
ПРИМЕЧАНИЕ
В RFC 2131 рекомендуется увеличивать Т1 и Т2 на величину случайной задержки, чтобы
предотвратить одновременное наступление тайм-аута на нескольких клиентах DHCP.
При истечении интервала Т1 клиент DHCP переходит из состояния
ПРИВЯЗКА в состояние ВОЗОБНОВЛЕНИЕ. В этом состоянии клиент DHCP
должен согласовать с сервером DHCP, выдавшим исходный IP-адрес, новый
срок аренды для назначенного IP-адреса. Если исходный сервер DHCP
отказывается возобновить аренду, он посылает сообщение DHCPNAK; клиент возвраща-
ется в состояние ИНИЦИАЛИЗАЦИЯ и пытается получить новый IP-адрес.
Если исходный сервер DHCP отправляет сообщение DHCPACK, в этом
сообщении указывается новая продолжительность аренды. Клиент DHCP снова
устанавливает интервалы Tl, T2 и ТЗ и переходит в состояние ПРИВЯЗКА.
Если интервал Т2 истекает в тот момент, когда клиент DHCP в состоянии
ВОЗОБНОВЛЕНИЕ ожидает сообщения DHCPACK или DHCPNAK от исходного
сервера DHCP, клиент переходит из состояния ВОЗОБНОВЛЕНИЕ в
состояние ПОВТОРНОЕ СВЯЗЫВАНИЕ. Исходный сервер DHCP может не ответить
из-за того, что он временно недоступен или из-за сбоя в сетевом канале. Из
приведенных выше формул видно, что Т2 > Т1, поэтому клиент DHCP
дополнительно ждет возобновления аренды в течение времени Т2-Т1.
При истечении интервала Т2 в сети рассылается широковещательный запрос
DHCPREQUEST для всех серверов DHCP, способных возобновить аренду; клиент
DHCP находится в состояние ПОВТОРНОЕ СВЯЗЫВАНИЕ. Рассылка запроса
объясняется тем, что после ожидания Т2-Т1 секунд в состоянии
ВОЗОБНОВЛЕНИЕ клиент DHCP приходит к выходу, что исходный сервер DHCP
недоступен, и пытается связаться с любым сервером DHCP, способным ему ответить.
Если сервер DHCP отвечает сообщением DHCPACK, клиент DHCP возобновляет
аренду (ТЗ), задает интервалы Т1 и Т2 и переходит в состояние ПРИВЯЗКА.
Если ни один сервер DHCP не сможет возобновить аренду до истечения
интервала ТЗ, аренда становится недействительной и клиент DHCP переходит в
состояние ИНИЦИАЛИЗАЦИЯ. Обратите внимание: к этому моменту клиент DHCP
уже дважды пытался возобновить аренду — сначала с исходного сервера DHCP,
а затем с любого сервера DHCP в сети.
При истечении срока аренды (ТЗ) клиент DHCP должен прекратить
использование IP-адреса и все сетевые операции с этим IP-адресом.
Чтобы прекратить использование IP-адреса, клиент DHCP не обязан
дожидаться истечения срока аренды (ТЗ). Он может намеренно отказаться от
использования IP-адреса, отменив аренду. Предположим, пользователь с портативным
компьютером подключился к сети для выполнения некоторой операции. Сервер
DHCP в сети предоставил ему IP-адрес сроком на один час. Пользователь
закончил свою работу за 30 минут и теперь хочет отключиться от сети. В процессе
корректного отключения компьютера клиент DHCP посылает серверу
сообщение DHCPRELEASE, чтобы сервер отменил аренду досрочно. Возвращенный
IP-адрес в дальнейшем может использоваться другим клиентом.
Если клиент DHCP работает на компьютере, оснащенном жестким диском,
то IP-адрес может храниться на этом диске и при запуске компьютера клиент
может запросить использовавшийся ранее адрес. На рис. 8.6 этой ситуации
соответствует состояние «ПЕРЕЗАГРУЗКА с известным IP-адресом».
Формат сообщения DHCP
Структура сообщения DHCP изображена на рис. 8.7. В сообщениях DHCP все
поля имеют фиксированный формат, кроме поля дополнительных данных,
минимальный размер которого равен 312 октетам. Читатели, знакомые с прото-
колом ВООТР, увидят, что сообщения DHCP и ВООТР имеют почти
одинаковый формат, не считая полей флагов и дополнительных параметров. Более того,
сервер DHCP может быть настроен на обработку запросов ВООТР (процедура
настройки зависит от операционной системы).
0 1 2 3
01234567890123456789012345678901
] I I I I I I I—«—I I I I I I I I I НН 1 I I I—f—I—I—Ы—ММ
орA) htypeA) hlen A) hopsA)
Г xidD)
1 sees B) | flags B) |
| ciaddr D) |
I yiaddr D) |
siaddr D) |
| giaddr D) |
chaddrA6)
I sname F4) |
Г file A28)
I vendor F4) |
В круглых скобках указывается
длина поля (в октетах)
Рис. 8.7. Формат пакета DHCP
Отдельные поля сообщений протокола DHCP описаны в табл. 8.3. В поле
флагов используется только крайний левый бит (рис. 8.8), остальные биты
должны быть равны нулю.
в р р р р о о р р о р р о о р р
В = 1 Широковещательный
В = 0 Направленный
Рис. 8.8. Формат пакета DHCP
Таблица 8.3. Поля сообщений DHCP
Поле Длина Описание
в октетах
ор 1 Тип сообщения: 1 — запрос (BOOTREQUEST), 2 — ответ (BOOTREPLY)
htype 1 Тип аппаратного адреса. Значения совпадают со значениями
аналогичного поля в пакетах ARP. Например, код 1 соответствует
сети Ethernet 10 Мбит/с
hlen 1 Длина аппаратного адреса в октетах. Аппаратные адреса Ethernet
и Token Ring имеют длину 6 байт
Поле Длина Описание
в октетах
hops 1 Поле обнуляется клиентом DHCP. Может использоваться агентом-
ретранслятором, работающим на маршрутизаторе, при пересылке
сообщений DHCP
xid 1 Код транзакции — случайное число, задаваемое клиентом DHCP при
построении сообщения. Сервер DHCP использует код транзакции в своих
ответах клиенту. Наличие кода xid позволяет клиентам и серверам DHCP
связать сообщение DHCP с ответом
sees 1 Заполняется клиентом DHCP. Содержит количество секунд, прошедших
с начала загрузки клиента
flags 2 Если крайний левый бит равен 1, сообщение является
широковещательным. Все остальные биты должны быть равны О
ciaddr 4 IP-адрес клиента DHCP. Заполняется клиентом в сообщении
DHCPREQUEST, предназначенном для проверки использования ранее
назначенных параметров конфигурации. Если клиент не знает свой
IP-адрес, полю присваивается О
yiaddr 4 IP-адрес клиента DHCP, возвращаемый сервером DHCP
siaddr 4 IP-адрес сервера. Значение присваивается клиентом DHCP, если клиент
хочет связаться с конкретным сервером DHCP. IP-адрес сервера DHCP может
быть получен при помощи сообщений DHCPOFER и DHCPACK, ранее
возвращенных сервером. Сервер может вернуть адрес следующего сервера,
с которым следует связаться в процессе загрузки, — например, адрес
сервера, на котором хранится загрузочный образ операционной системы
giaddr 4 IP-адрес маршрутизатора, на котором работает агент-ретранслятор DHCP
chaddr 16 Аппаратный адрес клиента DHCP. 16 октетов зарезервированы для того,
чтобы данное поле позволяло представлять различные типы аппаратных
адресов. В архитектурах Ethernet и Token Ring используются только 6 октетов
sname 64 Необязательное имя сервера (если оно известно клиенту DHCP).
Хранится в формате строки, завершенной нуль-символом
file 128 Имя загрузочного образа. Хранится в формате строки, завершенной
нуль-символом. Если клиент DHCP хочет загрузить образ операционной
системы, принятый с сетевого устройства, он может задать
в DHCPDISCOVER обобщенное имя — например, «unix» для загрузки
образа Unix. На сервере DHCP может храниться дополнительная
информация о конкретной операционной системе, необходимой для
этой рабочей станции. Ответ сервера DHCP может возвращаться в виде
полностью определенного имени файла в сообщении DHCPOFFER
options 312 Дополнительные параметры
Большинство сообщений DHCP, передаваемых сервером DHCP клиенту,
являются направленными (то есть посылаются на один конкретный IP-адрес). Это
объясняется тем, что сервер DHCP узнает адрес клиента DHCP из сообщений,
отправляемых клиентом серверу. Клиент DHCP может потребовать, чтобы
сервер отвечал по адресу широковещательной рассылки, для чего крайний левый
бит поля options устанавливается в 1. Клиент DHCP поступает подобным образом,
если он еще не знает своего IP-адреса. Модуль IP на клиенте DHCP отвергает
полученную дейтаграмму, если IP-адрес получателя, указанный в дейтаграмме,
не совпадает с IP-адресом сетевого интерфейса клиента DHCP. Если IP-адрес
сетевого интерфейса неизвестен, дейтаграмма также отвергается. С другой
стороны, модуль IP принимает любые широковещательные дейтаграммы DHCP.
Следовательно, чтобы модуль IP заведомо принимал ответ сервера DHCP,
когда IP-адрес еще не настроен, клиент DHCP должен потребовать, чтобы сервер
отправлял широковещательные сообщения вместо направленных.
Поле options имеет переменную длину. Его минимальный размер увеличен до
312 октетов, чтобы общий минимальный размер сообщения DHCP составлял
576 октетов — минимальный размер дейтаграммы IP, принимаемой хостом. Если
клиент DHCP должен использовать сообщения большего размера, он
согласовывает максимальный размер при помощи специального параметра. Поскольку
поля sname и file довольно велики, но используются не всегда, область
параметров можно расширить в эти поля при помощи параметра Option Overload. Если
этот параметр присутствует, обычный смысл полей sname и field игнорируется
и в этих полях ищутся параметры в формате TLV (Type, Length, Value).
Из рис. 8.9 видно, что в DHCP параметр представляется полем типа A октет),
за которым следует поле длины A октет). Значение поля длины определяет
размер поля значения. Различные сообщения DHCP представляются
специальным кодом типа 53. Значения параметров, определяющих сообщения DHCP,
приведены на рис. 8.10.
1 октет 1 октет N октетов д
Тип Длина (N) Значение
i—i—и—%—i
CD
Рис. 8.9. Формат параметра в сообщениях DHCP
Трассировка протокола DHCP
В этом разделе описан формат сообщений DHCP для пакетов, используемых
в реально существующей сети. Помимо указанных в табл. 8.3, на последующих
рисунках вам встретятся обозначения:
О Destination IP Address — IP-адрес получателя;
О Source IP Address — IP-адрес отправителя;
О Ethernet Header — заголовок Ethernet;
О UDP Header — заголовок UDP;
О UDP Source Port — UDP-порт отправителя;
О UDP Destination Port — UDP-порт получателя;
О Ethernet type — тип Ethernet.
1 октет 1 октет 1 октет
DHCPDISCOVER | ff„ | ^ | 3^^ |
DHCPOFFER [ Тип [ Длина | Значение |
DHCPREQUEST | ff„ [ д^ | 3^^ |
DHCPDECLINE | g„ | ^ \ 3Jeme\
DHCKACK I Тип | Длина | Значение |
53Ii I1 I
DHCPNAK J Тип | Длина | Значение |
DHCPRELEASE | *, | ^ | Знач1ение |
Рис. 8.10. Значения параметров в сообщениях DHCP
Поскольку протокол DHCP и формат его пакетов являются расширениями
ВООТР, в этом разделе будет обсуждаться только трассировка DHCP. Клиенты
и серверы DHCP используют те же номера портов, что и клиенты и серверы
ВООТР, то есть клиенты DHCP использует порт UDP с номером 68, а серверы
DHCP — порт UDP с номером 67. Большинство анализаторов протоколов
расшифровывает сообщения DHCP и BOOT в одном формате.
Широковещательный запрос DHCP (рис. 8.11) имеет следующие параметры:
О ор - 1;
О htype - 1;
О Ыеп - 6;
О hops = 0;
О xid - 826E7769 (шести.);
О sees = 0;
О flags = 0;
О ciaddr - 0.0.0.0;
Packet Number : 4 7:28:11 PM
Length : 346 bytes
ether: ==================== Ethernet Datalink Layer ====================
Station: 00-A0-24-AB-D1-E6 > FF-FF-FF-FF-FF-FF
Type: 0x0890 (IP)
ip: ======================= Internet Protocol =======================
Station:©.0.0.0 >255.255.255.255
Protocol: UDP
Version: 4
Header Length C2 bit words): 5
Precedence: Routine
Normal Delay, Normal Throughput. Normal Reliability
Total length: 328
Identification: 0
Fragmentation allowed, Last fragment
Fragment Offset: 0
Time to Live: 128 seconds
Checksum: 0x39A6(Valid)
udp: ===================== User Datagram Protocol ====================
Source Port: BOOTPC
Destination Port: BOOTPS
Length = 308
Checksum: 0xA382(Valid)
Data:
0: 01 01 06 00 82 6E 77 69 00 00 00 00 00 00 00 00 | nwi
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 A0 24 AB | $
20: Dl E6 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
E0: 00 00 00 00 00 00 00 00 00 00 00 00 63 82 S3 63 | C.Sc
F0: 35 01 01 3D 07 01 00 A0 24 AB 01 E6 0C 06 54 59 |5..= S TP
100: 4E 54 57 00 37 07 01 0F 03 2C 2E 2F 06 FF 00 00 |NTW.7 /
110: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
120: 00 00 00 00 00 00 00 00 00 00 00 00 j
Destination UDP UDP ^^ Ethernet
IP Source Destination UDP Ethernet ««jce Type
Address Port Port Header Header мЛпл» 4
t t t t »t | j
0: FF FF FF FF FF FF 00JA0 24 AB Dl Е6Г08 0§ 45 90 | S E. ,P
I I I Г ^Header
10:01 48 09 90 00 00 80j11 39 A6€00 99 00 OflCFF FF i .H 9
20: FF РРЙОФПбо^зУО! 34 A3 82 (о1Хо7Уо1Х^82 6E | . . .D.C.4 n > **
30: 77 69)gF00fe0 00^00 00 00 00100 00 00 0"OT00 00 | wi * *****
40: 00 РОТОР 00 00 Ю9Х00|А0 24 AB Dl E6 00 Ofl 00 00 | $ > ***"'
50: 00 00 00 00 00 ЮОУОО 00 00 00 00 00 00 Ofl 00 0011
I 1 I I I I I I ►sname
6©: '00 00 loo 00 00 loo 00 00 о© 00 00 O0 воI ea 00 00JI
I ▼ I I T
1 T T Htype Hop8
««ни, Flaee Addr I
giaddr ci T T
OP Hlen I
T
ytaddr
a
Рис. 8.11. Широковещательный запрос DHCP
70:1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ||
I > sname
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00J|
90: [o0 00 00 00 00 00|00 00 00 00 00 00 00 00 00 2><d)\
A0: [000000000000 00 00 00 00 00 00 00 00 00 00 ||
B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 I
► file
C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ||
00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ||
100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00J|
110:^00 00 00 00 00 00j^3 82 S3 63J 35 01 01 30 07 рГ|[ c.ScS..-.. ^JJSkta
120:f©0 A0 24 AB 01 E6 0C 06 54 50 4E 54 57 00 37 07 |..$ TPNTW.7.
130: 01 0F 03 2C 2E 2F 06 FF 00 00 00 00 00 00 00 00 | ...,. /
I ► options
140: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 I
150: 00 00 00 00 00 00
Рис. 8.11. Широковещательный запрос DHCP (продолжение)
О yiaddr = 0.0.0.0;
О siaddr - 0.0.0.0;
О giaddr = 0.0.0.0;
О chaddr - 00A024ABD1E6 0000000000000000000;
О sname - 0 F4 октета);
О file-0 A28 октетов);
О options - 0 C12 октетов).
Направленный ответ DHCP (рис. 8.12) имеет следующие параметры:
О ор - 2;
О htype e 1;
О Ыеп - 6;
О hops - 0;
О xid = 826E7769 (шести.);
О sees в 0;
О flags - 0;
О ciaddr - 0.0.0.0;
О yiaddr = 199.245.180.41;
О siaddr = 199.245.180.0;
О giaddr - 0.0.0.0;
О chaddr - 00A024ABD1E6 0000000000000000000;
О sname = 0 F4 октета);
О file = 0 A28 октетов);
О options = «волшебное число» 63 82 53 63 (шести.).
Packet Number : 5 7:28:11 РМ
Length : 594 bytes
ether: ==================== Ethernet Datalink Layer ====================
Station: 00-00-C0-DD-14-5C > 00-A0-24-AB-D1-E6
Type: 0x0800 (IP)
ip: ======================= internet Protocol =======================
Station:199.245.180.10 >199.245.180.41
Protocol: UDP
Version: 4
Header Length C2 bit words): 5
Precedence: Routine
Normal Delay, Normal Throughput. Normal Reliability
Total length: 576
Identification: 47444
Fragmentation allowed. Last fragment
Fragment Offset: 0
Time to Live: 128 seconds
Checksum: 0x8739(Valid)
udp: ===================== User Datagram Protocol ====================
Source Port: B00TP5
Destination Port: BOOTPC
Length = 556
Checksum: 0x0000(checksum not used)
Data:
0: 02 01 06 00 82 6E 77 69 00 00 00 00 00 00 00 00 | nwi
10: C7 F5 84 29 C7 F5 B4 0A 00 00 00 00 00 A0 24 AB |...) $.
20: Dl E6 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
АО: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 I
B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 I
CO: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 I
D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 I
E0: 00 00 00 00 00 00 00 00 00 00 00 00 63 82 53 63 | с. Sc
F0: 35 01 02 36 04 C7 F5 B4 0A 33 04 00 00 0E 10 ЗА |5..6 3
100: 04 00 00 07 08 3B 04 00 00 0C 3C 01 04 FF FF FF | ; <
110: 00 06 04 C7 F5 B4 0A 0F 0C 6B 69 6E 65 74 69 63 | kinetic
120: 73 2E 63 6F 6D FF 00 00 00 00 00 00 00 00 00 00 |s.com
130: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
140: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
150: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 j
170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
1A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
1B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 j
1C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
1D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
1E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
1F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
210: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 j
220: 00 00 00 00
Рис. 8.12. Направленный ответ DHCP
Htype
A
U DP U DP I Ethernet
Source Destination UDP Ethernet Type
Port Port Header Header OP Hlen A ^Jj0
i t t f t L Li t -^ > *
0: 00 A0 21 AB Oil E6 00 00 C0 DD 14 BCflSOffy 45 00 | ..$ \..E. * Header
10: 02 40 Bf> 54 00 00 80 11 87 39 Q7 F5 B4 0AXC7 F5 | .@.T 9 Sou"»
г г I -TLL ' ► IP
20: 04 29)р*43^'б> 44H2 2C 00 09p2X91J0?)PX8TTE \ .).C.D n AddPMi
30: 77 69]gF00^0 00jp0 00 00g7 F5 B4 29JC7 F5 | wi )..
I I 11 ъ yiaddr
40: B4 ОАХШёо eeioejp ao p4 ab pi E6 00 00 00 00 i $
I I I ""^ ► chaddr
50: 00 00 00 00 00 00lfe0 09 [90 00 00 00 00 00 09 09] |
I 11 I ^ ciaddr
69: fee lee eeleeleo lee 00 00 00 00 00 00 00 00 00 0011
II II ' I ► flags
70: bo lee ее lee lee 00 09 00 00 00 00 09 99 99 99 99 1
I J I ' I ' > giaddr
89: be 99 99 99 99 99 99 90 99 99 99 99 99 99 99 99] |
I I f^ ►sees
99: |P0|0Q 99 99 99 99j|90 99 99 90 99 90 99 09 90 00] |
"l ' -* ► siaddr
A0: kh 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0011
| I | > sname
B0: BO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0011
I > file
C0: BO 00 00 00 00 00 00 09 99 99 99 99 99 99 99 99 I
D9: BO 99 99 99 99 99 99 00 00 09 99 99 99 09 90 99 |
E9: be 99 99 99 99 99 99 99 90 00 00 00 99 99 90 09 |
F9: BO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
100: Ье 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
110: |Э0 00 00 00 00 8eJj^T 82 53 63K5 01 02 36 04 C^| c.Sc5..6..
^ —^1 i | ^ magic cookie
120: f5 B4 0A 33 04 00 00 0E 10 ЗА 04 00 00 07 08 3B | ...3 ;
130: Ю4 00 00 0C 3C 01 04 FF FF FF 00 06 04 C7 F5 B4 | . . . . <
140: Ьа 0F 0C 6B 69 6E 65 74 69 63 73 2E 63 6F 6D FF | ...kinetics.com.
150: be 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0011
160: Б0 00 00 00 00 00 00 09 99 99 99 99 90 00 00 00 |
| > options
170: be 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0011
180: 1Э0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
190: be 00 00 00 99 99 00 00 00 00 00 00 00 00 00 00 |
1A0: be 00 00 00 00 00 00 00 00 00 99 99 99 99 99 99 |
1B9: be 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90 |
1C0: B0 00 00 00 00 99 99 99 99 00 00 99 99 00 00 00 |
1D0: |Э0 00 00 00 09 99 99 99 99 99 99 00 00 00 00 00 |
Рис. 8.12. Направленный ответ DHCP (продолжение)
iEO: lee 00 00 00 00 00 00 00 00 00 00 00 ее 00 00 0011
iF0: lee 00 00 00 00 00 00 00 00 00 00 00 00 00 00 eel 1
200: pe 00 00 00 00 00 00 00 00 00 00 00 00 00 00 eel | ►options
210: 100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 001 |
220: Ю0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 001 |
230: be 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00] I
240: pe 00 00 00 00 00 00 00 00 00 00 00 00 00J I
Рис. 8.12. Направленный ответ DHCP (продолжение)
Трассировка сообщений DHCP с широковещательным
ответом от сервера
На рис. 8.13 и 8.14 представлены широковещательный запрос от клиента DHCP
и ответ сервера DHCP. Тем не менее, в отличие от предыдущего раздела, ответ
сервера DHCP пересылается в широковещательном режиме. Направленный
ответ был невозможен, поскольку данная реализация сервера DHCP не заносит
данные в кэш ARP.
Широковещательный запрос DHCP имеет следующие параметры:
О ор - 1;
О htype - 1;
О Ыеп = 6;
О hops - 0;
О xid - 826E7769 (шести.);
О sees = 0;
О flags - 0;
О ciaddr - 0.0.0.0;
О yiaddr - 0.0.0.0;
О siaddr - 0.0.0.0;
О giaddr - 0.0.0.0;
О chaddr = 00A024ABD1E6 0000000000000000000;
О sname e 0 F4 октета);
О file = 0 A28 октетов);
О options = 0 C12 октетов).
Широковещательный ответ DHCP имеет следующие параметры:
О ор = 2;
О htype - 1;
О Ыеп = 6;
Packet Number : 6 7:28:11 PM
Length : 346 bytes
ether: ============в8====« Ethernet Datalink Layer ====««============
Station: 66-A6-24-AB-D1-E6 > FF-FF-FF-FF-FF-FF
Type: 9x0806 (IP)
ip: ssssssssssssssssssrssss Internet PrOtOCOl ======sss=sssss==s===s=
Stat ion:0.0.0.0 >255.255.255.255
Protocol: UDP
Version: 4
Header Length C2 bit words): 5
Precedence: Routine
Normal Delay. Normal Throughput. Normal Reliability
Total length: 328
Identification: 256
Fragmentation allowed, Last fragment
Fragment Offset: 0
Time to Live: 128 seconds
Checksum: 0x38A6(Valid)
udp: ===================== User Datagram Protocol ====================
Source Port: BOOTPC
Destination Port: BOOTPS
Length = 308
Checksum: 0x8EB0(Valid)
Data:
0: 01 01 06 00 01 4E AB 33 00 00 00 00 00 00 00 00 | N.3
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 A0 24 AB | S.
20: Dl E6 00 00 00 00 00 00 00 00 00 00 00 00 00 00 I
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 60 00 |
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
56: 00 60 00 00 00 06 00 60 06 00 00 00 00 00 06 00 |
60: 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
70: 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
80: 00 60 00 00 00 00 06 60 00 00 00 06 66 66 66 66 |
96: 06 66 66 66 66 66 60 00 00 00 00 00 00 00 00 00 |
A0: 00 60 00 00 00 00 00 00 00 66 66 66 66 66 66 66 |
B6: 60 00 00 00 00 00 06 00 00 00 00 66 66 66 66 66 |
C6: 66 66 66 66 66 66 66 66 66 66 .66 66 66 66 66 66 |
D6: 66 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
EO: 00 00 00 00 00 00 00 00 00 00 00 00 63 82 53 63 | c.Sc
F0: 35 01 03 3D 07 01 00 A0 24 AB Dl E6 32 04 C7 F5 |5..= $...2...
100: B4 29 36 04 C7 F5 B4 0A 0C 06 54 50 4E 54 57 00 |.N TPNTW.
110: 37 07 01 0F 03 2C 2E 2F 06 FF 00 00 00 00 00 00 |7 /
120: 00 00 00 00 00 00 00 00 00 00 00 00 |
UDP UDP HtJpe Ethernet
Source Deetination UDP Ethernet f Type _.. ,.
Port Port Header Header OP Hlen A jfJJJJJJJ
t t t M О t . IP
0: FF FF FF FF FF FF 00 A0 24 AS И ЕбДЗГбЭ 45 00 | $ E. " Header
10: 01 48 ek 00 0a00 80 11 38 A6 бГв[00 00 00)(fFFF |.H 8 ^So^e
20: FF FF)fi04?te0 43H1 34 8Г B9 ШХбШЭГёаббГТ! J...D.C.4 N А^ПМ
36: ab 33)fee еЮСео eelee ее ее 60100 00 00 еёдее ее i.з w
40: 00 eeXeojee eeleeXee леЬд ab pi E6 ее oa ее ее | $
1 " C- ►chaddr
5в: ее ее ре ее ее eefee eelee ее ее eelee eel ее еэ| |
66: fee 66 be lee eelee 00 00 00 00 00 ее ее ed ее ed 1
||| I It I *8name
I sees flags ciaddr yiaddr hops
T
giaddr
Рис. 8.13. Широковещательный запрос DHCP
70: lOO 0© 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
I I > sname
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]|
90: loe 00 00 00 00 00 jfeo 00 00 00 00 00 00 00 00 ool I
A0: [00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 001j
B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
►file
D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 001|
E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 001 |
F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]|
110: [©0 00 00 00 00 0pjp82 53 63K5 01 03 3D 07 01^ j c.Sc5..=..
/ I * I > magic cookie
120: [00 A0 24 AB Dl E6 32 04 C7 F5 B4 29 36 04 C7 F5 |..S...2 N...
130: B4 0A 0C 06 54 50 4E 54 57 00 37 07 01 0F 03 2C |....TPNTW.7
I I > options
140: 2E 2F 06 FF 00 00 00 00 00 00 00 00 00 00 00 00 |./
150: 00 00 00 00 00 00 I I
Рис. 8.13. Широковещательный запрос DHCP (продолжение)
О hops = 0;
О xid - 826Е7769 (шести.);
О sees = 0;
О flags = 0;
О ciaddr = 0.0.0.0;
О yiaddr = 0.0.0.0;
О siaddr= 199.245.180.10;
О giaddr = 0.0.0.0;
О chaddr = 00A024ABD1E6 0000000000000000000;
О sname = 0 F4 октета);
О file = 0 A28 октетов);
О options = «волшебное число» 63 82 53 63 (шести.).
Packet Number : 7 7:28:11 PM
Length : 594 bytes
ether: ==================== Ethernet Datalink Layer ====================
Station: 00-00-C0-DD-14-5C > FF-FF-FF-FF-FF-FF
Type: 0x0800 (IP)
ip: ======================= internet Protocol =======================
Stat ion:199.245.180.10 >255.255.255.255
Protocol: UDP
Version: 4
Header Length C2 bit words): 5
Precedence: Routine
Normal Delay, Normal Throughput, Normal Reliability
Total length: 576
Identification: 47445
Fragmentation allowed, Last fragment
Fragment Offset: 0
Time to Live: 128 seconds
Checksum: 0x0358(Valid)
udp: ===================== User Datagram Protocol ====================
Source Port: BOOTPS
Destination Port: BOOTPC
Length = 556
Checksum: 0x0000(checksum not used)
Data:
0: 02 01 06 00 01 4E AB 33 00 00 00 00 00 00 00 00 | N.3
10: 00 00 00 00 C7 F5 B4 0A 00 00 00 00 00 A0 24 AB | $.
20: Dl E6 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 I
C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
E0: 00 00 00 00 00 00 00 00 00 00 00 00 63 82 53 63 | С. Sc
F0: 35 01 06 FF 00 00 00 00 00 00 00 00 00 00 00 00 15
100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
110: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
130: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
140: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
150: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
1A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
1B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
1C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
1D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
1E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
1F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 I
200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 j
210: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 I
220: 00 00 00 00 |
Рис. 8.14. Широковещательный ответ DHCP
I b© 00 00 00 00 GO 00 00 00 00 00 00 00 00 00 ©©I :©0T
I b© 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :0ЭХ
I bo 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :09I
I BO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :0VT
I Ю0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :06T
I bo 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :08T
I bo 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -QLI
suoijdo < I I
I feo 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :©9T
I bO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :0ST
I bO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -Obi
I bO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :0€I
I во ©о 00 ©о ©о oo oo о© 00 op 00 op 00 op op eej :©гт
eptooo oj6eui M 1 I
s^so i bo oo jj 90 xo se ks cs zs tern oo 00 00 00 00] :©n
I Ю0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :O0T
I p© 00 00 00 00 00 ©0 00 00 00 00 00 00 00 00 00 :©d
I b© 00 ©0 00 00 00 90 00 00 00 00 00 00 Q© 00 0© :©3
I |б0 99 00 09 90 00 00 90 00 00 00 09 00 00 00 6© :©0
л ^ 1 [О© 0© ©9 00 0© 00 00 00 0© 0© 00 00 0© 00 00 00 :©Э
eltf ^ I I
I Ь© 00 00 00 00 00 0© 00 00 00 00 00 00 90 00 00 :09
eujeus < I . I
I Ю0 00 00 0© б© 00 00 09 ©0 ©9 QQ б© 90 9© 9©| 0©J :0V
jppeie^ 1 —I '
I pe ©e ее ее ее ее ее е© ее eojfee 00 ©0 ©a ©0 001 :©6
soes *< * == ,
I b© 00 00 ©0 00 ©0 00 ©9 ©0 00 09 99 99 9ft 00 09 :©8
s6eu 4 1
I Ю0 00 ©9 00 Q© 0© 00 00 00 00 99 99 99 0G| ©9 99 -01
jppej40«< 1 1 I I
I Ю0 99 99 99 99 99 99 90 09 99 99 99 9© 061 QQ 0©) :©9
JppeiA 4 1 I
I be ее ее ее lee ее ее ее ее eeJteeiee eel ее] ее ее :©s
jppeqo ^ -1 _ 111
$ I ее ее ©е ©е 93 to av м ©у 00X00 00 00 Щ(Уо »g :ot
jppets rf I I I I
£l Sd ZDIQQ 00 00 00X00 00 00 00100 OQjjQQQ^jii 8V 'Qi
oojP|X n аэ •••! з» тож)рУ0)(?©)е9 о© эг го (ьУЩ[ы oqcdd d d 'qz
w*^ iji I i I
«^^ X П'§-1 Id ddfffr fr8 Sd ф89 £9 It 08 09 Ю9 SS 98 0* ZQ -Ql
jepeeH^-J'X 1 ©0 Sfr 08 88 Ы1 П 00 0Э 00 ©0 dd Ld dd M Ы id :©
т I f | j | f у
S^s^S T ue'H dO J9P**H лрвен POd VX)d
^ ed*i X »вшвфЗ dan uoftBURsea «unos
)8шеч)Э ьдМн dan dan
dl/cDl еииоахэен венневос1иеи±еио1а\/ '8 eeei/j ggj
1Е0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0011
1F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0011 > °ptK>ns
210: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
220: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
230: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00j |
240: lee 00 00 00 00 00 00 00 00 00 00 00 00 oej I
Рис. 8.14. Широковещательный ответ DHCP (продолжение)
Итоги
Протоколы ВООТР и DHCP решают важную проблему автоматической
настройки параметров IP (в частности, IP-адресов и масок подсети) для отдельных
сетевых устройств. Оба протокола основаны на архитектуре «клиент-сервер»
и используют одинаковые номера портов UDP. Протокол DHCP проектировался
в качестве замены старого протокола ВООТР, а его сообщения представляют
собой расширение формата сообщений ВООТР.
Главное преимущество DHCP заключается в том, что этот протокол
позволяет арендовать IP-адреса на временной основе. Тем самым обеспечивается
более гибкое управление IP-адресами в ситуациях, когда IP-адреса не обязаны
жестко ассоциироваться с конкретным компьютером по аппаратному адресу.
Механизм назначения IP-адресов в ВООТР менее гибок, поскольку IP-адрес
связывается с аппаратным адресом сетевого интерфейса.
9 Обзор семейства
протоколов IP
Марк А. Спортак (Mark A. Sportack)
Каранжит С. Сиян (Karanjit S. Siyan)
Термин «TCP/IP» постоянно используется при описании IP-коммуникаций.
Несмотря на его популярность, лишь немногие понимают, что в действительности речь
идет о целом семействе протоколов, каждый из которых обладает своими
достоинствами и недостатками. В этой главе рассматривается архитектура,
функциональные возможности и область применения различных протоколов из семейства IP.
Данная глава закладывает фундамент для дальнейшего обсуждения TCP/IP.
В дальнейших главах компоненты семейства протоколов TCP/IP будут описаны
более подробно. Хотя часть представленного материала уже встречалась ранее,
этот обзор поможет составить общее представление о протоколе TCP/IP.
Модель TCP/IP
Протокол TCP/IP обычно рассматривается в контексте эталонной модели,
определяющей структурное деление его функций. Однако модель TCP/IP
разрабатывалась значительно позже самого комплекса протоколов, поэтому она
никак не могла быть взята за образец при проектировании протоколов.
Эталонная модель TCP/IP описана в главе 1.
Семейство протоколов TCP/IP
Семейство протоколов IP состоит из нескольких протоколов, часто
обозначаемых общим термином «TCP/IP»:
О IP — протокол межсетевого уровня;
О TCP — протокол межхостового уровня, обеспечивающий надежную доставку;
О UDP — протокол межхостового уровня, не обеспечивающий надежной доставки;
О ICMP — многоуровневый протокол, упрощающий контроль, тестирование
и управление в сетях IP. Различные протоколы ICMP распространяются на
межхостовой и прикладной уровень.
Связи между этими протоколами изображены на рис. 9.1.
ПРИМЕЧАНИЕ
Вообще говоря, приложения, работающие на прикладном уровне (Telnet, FTP и многие другие),
также должны считаться компонентами семейства протоколов IP. Но так как они все же являются
приложениями, а не протоколами, в этой главе они не рассматриваются.
I Протоколы I | Протоколы I
прикладного прикладного
уровня уровня (TFTP,
I (FTP, HTTP и т. д.) I J DNS, NFS и т. д.) |
Ж Ж
X J
TCP ICMP UDP
I I I
IP
X
I
Механизмы канального и физического уровней
Рис. 9.1. Термин TCP/IP в действительности обозначает
не один протокол, а целое семейство протоколов
Протокол IP
Протокол IP (Internet Protocol) является самым распространенным межсетевым
протоколом в мире. Все его конкуренты — OSI, AppleTalk и даже IPX — в
конечном счете, проиграли IP из-за его открытости. Несмотря на столь выдающийся
успех, протокол IP часто воспринимается неправильно. Функциональность
протокола определяется объемом данных, хранящихся в заголовках. Структура
заголовков IP, а следовательно и его возможности первоначально определялись
в серии RFC и других общедоступных документов, которые были
опубликованы еще во времена создания группы IETF. Обычно считается, что базовым
документом для современной версии IP является RFC 791 (дата публикации —
сентябрь 1981 года).
Благодаря неустанной работе IETF протокол IP постоянно развивается. В
последующих RFC были добавлены многочисленные новые возможности. Тем не
менее все они строятся на основе, заложенной в RFC 791. С архитектурной точки
зрения текущая версия IP имеет номер 4 (IPv4). Со временем новая версия
(IPv6) постепенно вытеснит IPv4, но в настоящее время повсеместно
поддерживается стандарт IPv4. Дополнительная информация об IPv6 приведена в главе 12.
Заголовок IPv4
На рис. 9.2 представлена структура заголовка IP с указанием размеров
отдельных полей.
L I I |06щ9я|Уникальный! Г I I , 1^1 I д^ I I
Г"* Длина № Длина иденти- Флаги О^ие Срок £^ 31 Адрес И^ Дополнение
Ьрсим загшшса »«РЫ ***" Ф"«Ч> фрагмен- фрагмента жизни LS^ ^ «яучиив ГЗ, П1£«и3
Ибита) < Ч октет) (два (два (трибита) октет) Октет) «» Д ™) Д
| октета) | октета) | \ | _| _|
Нормаль" H^Wafl Но»ш,|г Заоеэео-
Приоритет ная/низкая ^L-^ ная/высокая ГТ^1
(Збита) задержка Щ Н*™П2З
A6ит) Г^?^ Обит) <26ита)
Рис. 9.2. В структуре заголовков IP определены многие поля, обеспечивающие
те или иные возможности этого протокола
Заголовок IP состоит из следующих полей:
О Версия — первые 4 бита заголовка определяют текущую версию IP
(например, 4 или 6).
О Длина заголовка — следующие 4 бита содержат длину заголовка в двойных
словах (блоках по 32 бита).
О Параметры — следующий октет содержит набор флагов, которые могут
использоваться для определения параметров пакета данных — абсолютного
приоритета по отношению к другим пакетам IP, задержки, пропускной
способности и надежности. Флаг приоритета имеет длину три бита, тогда как
каждый из флагов задержки, пропускной способности и надежности
представлен одним битом. Оставшиеся два бита зарезервированы на будущее.
О Общая длина — 16-разрядное поле, содержащее общую длину пакета IP в
октетах. Максимальная допустимая длина составляет 65 535 октетов.
О Идентификатор — каждому пакету IP присваивается уникальный
16-разрядный идентификатор, используемый для идентификации фрагментов
дейтаграммы.
О Флаги фрагментации — следующее поле содержит три 1-битовых флага,
которые указывают, разрешена ли фрагментация пакета и завершает ли пакет
серию фрагментов. Первый бит зарезервирован и всегда равен 0. Второй бит
указывает, разрешена ли фрагментация для данного пакета. Если бит равен 0,
то содержимое пакета может фрагментироваться, а если бит равен 1, то
пакет не фрагментируется. Значение третьего бита учитывается только в том
случае, если второй бит был равен 0. Если фрагментация разрешена (то есть
данные могут быть разбиты на несколько сегментов), этот бит показывает,
завершает ли данный пакет серию фрагментов, или приложение-получатель
должно ожидать поступления дополнительных фрагментов. Значение 0
указывает на то, что пакет является последним в серии фрагментов.
О Смещение фрагмента — 8-разрядное поле определяет смещение фрагменти-
рованного содержимого по отношению к началу всего пакета (в блоках
размером 64 бита).
О Срок жизни — пакеты IP не могут бесконечно блуждать в глобальных сетях,
их срок жизни необходимо ограничить. 8-разрядное поле срока жизни
увеличивается на 1 для каждого перехода (hop). После достижения счетчиком
максимальной величины считается, что пакет доставить не удалось. При этом
генерируется и передается отправителю сообщение ICMP, а пакет
уничтожается.
О Протокол — 8-разрядное поле определяет тип протокола, данные которого
следуют за заголовком IP: VINES, TCP, UDP и т. д.
О Контрольная сумма — 16-разрядное значение, используемое для выявления
ошибок. Получатель, а также все шлюзовые узлы сети производят с
заголовком пакета такие же математические вычисления по той же формуле, как на
отправителе. Если пересылка данных прошла успешно, результаты двух
вычислений будут идентичны.
О IP-адрес отправителя — IP-адрес компьютера, с которого был отправлен пакет.
О IP-адрес получателя — IP-адрес компьютера, которому должен быть
доставлен пакет.
О Дополнение — поле заполняется нулями, чтобы длина заголовка IP была
кратна 32 битам.
Анализ полей заголовка показывает, что межсетевой уровень IPv4 не
ориентирован на соединение: устройства, пересылающие пакет в сети, по своему
усмотрению выбирают идеальный маршрут для каждого пакета. Кроме того, IP не
обладает средствами подтверждения, управления передачей или упорядочения
пакетов, присутствующими в высокоуровневых протоколах (таких, как TCP).
Протокол IP также не может использоваться для передачи данных,
содержащихся в дейтаграмме IP, конкретному приложению. Эти функции обеспечиваются
протоколами более высокого уровня (в частности, TCP и UDP).
Задачи протокола IP
Заголовок пакета IP содержит всю информацию, необходимую для выполнения
основных сетевых операций. К числу таких операций относятся:
О адресация и маршрутизация;
О фрагментация и повторная сборка;
О выявление и исправление данных, поврежденных в процессе пересылки.
Адресация и маршрутизация
Одна из самых очевидных возможностей IP — наличие информации о
компьютере, которому следует доставить данный пакет. IP-адрес получателя
используется маршрутизаторами и коммутаторами в сети, отделяющей отправителя от
получателя, для определения оптимального маршрута в сети.
В пакетах IP также хранится IP-адрес отправителя. Следовательно, при
необходимости получатель сможет связаться с отправителем.
Фрагментация и повторная сборка
Иногда сегменты данных приложения не помещаются в одном пакете IP,
максимальный размер которого определяется параметром MTU (Maximum Transmission
Unit) сети. В этом случае пакет IP фрагментируется, то есть разбивается на два
и более пакета. Протокол IP должен обеспечивать восстановление исходного
сегмента данных независимо от того, сколько фрагментов потребовалось для его
доставки к месту назначения.
Важно, чтобы отправитель и получатель поддерживали общую процедуру
фрагментирования сегментов данных и придерживались ее. В противном случае
сборка данных, фрагментированных на несколько пакетов для доставки по сети,
станет невозможной. В результате успешной сборки данные восстанавливаются
в точно таком же виде, как на исходном компьютере до фрагментации. Для
идентификации фрагментированных сегментов данных используются флаги
фрагментации в заголовках IP.
ПРИМЕЧАНИЕ
Процесс сборки фрагментированных сегментов данных существенно отличается от
восстановления нарушенного порядка пакетов, который относится к функциям TCP.
Поврежденные пакеты
Последняя из важных функций IP — выявление и исправление дейтаграмм,
содержимое которых было повреждено или потеряно в процессе пересылки.
Повреждение пакетов происходит по разным причинами, чаще всего под
воздействием радио- и электромагнитных помех. Пакет считается поврежденным, если
при получении пакета содержащиеся в нем данные отличаются от тех, которые
были переданы с отправителем.
Потери пакетов также объясняются разными причинами. Во-первых,
чрезмерный объем трафика может привести к истечению срока жизни пакетов.
Маршрутизатор, обнаруживший пакет с превышенным сроком жизни, просто уничтожает
его. Возможен и другой вариант — в результате воздействия помех содержимое
пакета может быть искажено настолько, что информация заголовка станет
абсолютно бессмысленной. Такие пакеты тоже обычно уничтожаются.
О том, что пакет IP не удалось доставить или он непригоден к
использованию, необходимо уведомить отправителя. Для подобных оповещений в
заголовок включается IP-адрес отправителя. Таким образом, хотя протокол IP не
обладает собственными средствами координации пересылки, он играет важную
роль в оповещении отправителя о необходимости повторной пересылки.
Заключение
Несмотря на перечисленные возможности, следует признать, что пакет IP
является всего лишь межсетевым протоколом. Для реального практического
использования он должен быть дополнен как транспортным протоколом (уровень 4
эталонной модели OSI), так и канальным протоколом (уровень 2 эталонной
модели OSI). Канальные архитектуры выходят за рамки настоящей книги, а
оставшаяся часть главы будет посвящена двум транспортным протоколам,
использующим IP для обеспечения межсетевого обмена данными: TCP и UDP.
Протокол TCP
Протокол TCP (Transmission Control Protocol) пользуется сервисом IP для
обеспечения надежной доставки прикладных данных. TCP создает между двумя
или более хостами сеанс, ориентированный на соединение. Он обладает такими
возможностями, как поддержка нескольких потоков данных, координация
потока и контроль ошибок и даже восстановление нарушенного порядка пакетов.
Протокол TCP также разрабатывался посредством публикации общедоступных
документов RFC группой IETF. Результатом стал документ RFC 793,
опубликованный в сентябре 1981 года. За прошедшие 18 лет стандарт RFC 793, как и
стандарт IP (RFC 791), был усовершенствован, но так и не подвергся полной замене.
Таким образом, базовая модель TCP по-прежнему определяется содержимым
этого RFC.
Структура заголовка TCP
Функциональность TCP, как и функциональность IP, ограничивается объемом
информации, пересылаемой в заголовке. Следовательно, для понимания общей
механики и круга возможностей TCP необходимо хорошо разобраться в
содержимом заголовка. На рис. 9.3 представлена структура заголовка TCP с
указанием размеров отдельных полей.
Заголовок протокола TCP состоит минимум из 20 октетов и содержит
следующие поля:
О Порт TCP отправителя — 16-разрядный номер порта, инициировавшего
соединение. Совокупность номера порта и IP-адреса отправителя определяет
«обратный адрес» данного пакета.
О Порт TCP получателя — 16-разрядный номер порта, на который направляется
данный пакет. Порт определяет интерфейсный адрес приложения, которому
будет передан пакет на компьютере-получателе.
О Порядковый помер — 32-разрядный порядковый номер используется
получателем при восстановлении исходной формы фрагментированных пакетов. В сети
с динамической маршрутизацией фрагменты вполне могут передаваться по
разным маршрутам, что приведет к нарушению их исходного порядка. Передача
порядкового номера позволяет восстановить правильную последовательность
пакетов.
I I II I I I I I I I I Допол- I
ПортТСР ПортТСР "J* ^П^Г- Смещение Зарвэвр«- ф L»M*«i "J* иеиие
отравителя получателя """ "*Г данных роаано .... . окна срочности ,.__,£_, (перемен-
(гаоета) <2«жтета) ИД ,*£,, D6ита) (ббит, <66"> Ьо-оета р^ Р«^& ^
I URG I АСК I PSH I RST SYN FIN
I A бит) I A6ит) A6т) Aбит) I A бит) I Aбит)
Рис. 9.3. Поля, определенные в структуре заголовков TCP, определяют разнообразные
возможности этого протокола
О Номер для подтверждения (АСК) — 32-разрядный номер первого октета
данных, содержащегося в следующем ожидаемом сегменте. На первый взгляд
подтверждение «того, чего еще нет» выглядит нелогично, однако при
получении подтверждения хост-отправитель TCP/IP знает, что были получены все
данные до заданного сегмента (но не включая его). Идентификация сигналов
АСК производится по порядковому номеру подтверждаемого пакета. Данное
поле действительно только при установленном флаге АСК (см. ниже
описание поля флагов).
О Смещение данных — размер заголовка TCP в 32-разрядных блоках.
О Зарезервировано — это 6-разрядное поле всегда заполняется нулями. Оно
зарезервировано для будущего использования, и на сегодняшний день его
смысл еще не определен.
О Флаги — 6-разрядное поле содержит шесть 1-битных флагов,
активизирующих интерпретацию поля срочности, подтверждения, немедленной отправки,
сброса соединения, синхронизации порядковых номеров и завершения
отправки данных; по порядку следования в строке эти флаги обозначаются
URG, АСК, PSH, RST, SYN и FIN.
О Размер окна — 16-разрядное поле используется получателем для передачи
отправителю информации о том, какой объем данных он готов принять в
одном сегменте TCP.
О Контрольная сумма — в заголовок TCP также включается 16-разрядная
контрольная сумма, предназначенная для выявления ошибок. Отправитель
производит математические вычисления по данным сегмента, затем те же самые
вычисления производятся получателем. Если результаты совпадают, значит,
данные были переданы без искажения.
О Указатель точности — 16-разрядный указатель на последний октет срочных
данных в сегменте. Значение поля действительно только при установленном
флаге URG. Если флаг не установлен, поле не интерпретируется. Сегменты
данных, снабженные признаком срочности, в первую очередь обрабатываю!< я
всеми устройствами TCP/IP, находящимися между отправителем и получи
телем.
О Параметры — поле переменной длины, состоящее минимум из одного октечл,
определяет параметры сегмента TCP. При отсутствии параметров поле состо
ит из 1 октета и содержит 0 (признак конца списка параметров). Значение 1
в этом октете означает отсутствие дополнительных операций. Значение 2
указывает на то, что следующие 4 октета содержат максимальный размер
сегмента (MSS, Maximum Segment Size) для отправителя. MSS определяет
максимальное количество октетов в поле данных, согласованное между
отправителем и получателем.
О Данные — формально данные не являются частью заголовка TCP, однако
необходимо понимать, что данные следуют за указателем срочности и/или полем
параметров, но предшествуют полю дополнения. Максимальный размер поля
данных определяется значением MSS, согласованным между получателем и
отправителем. Сегменты могут быть меньше MSS, но никогда не превышают его.
О Дополнение — в области коммуникационных технологий дополнение всегда
используется для обеспечения единства размеров блоков данных, интервалов
и т. д. В заголовке TCP это поле заполняется нулями и обеспечивает
выравнивание заголовка TCP по 32-разрядной границе.
Задачи протокола TCP
В сеансе связи TCP обеспечивает ряд важных функций, большая часть которых
связана с обеспечением интерфейса между различными приложениями и сетью.
К числу этих функций относятся:
О мультиплексирование данных между приложениями и сетью;
О проверка целостности полученных данных;
О восстановление нарушенного порядка данных;
О подтверждение успешного получения данных;
О регулирование скорости передачи данных;
О измерение временных характеристик;
О координация повторной передачи данных, поврежденных или потерянных
в процессе пересылки.
Мультиплексирование потоков данных
Протокол TCP обеспечивает интерфейс между пользовательскими
приложениями и бесчисленными коммуникационными протоколами, используемыми в сетях.
Пользователи практически никогда не ограничиваются одним приложением,
поэтому протокол TCP должен одновременно принимать данные от нескольких
приложений, делить их на сегменты и передавать эти сегменты протоколу IP.
Аналогичные функции выполняются и в обратном направлении — протокол
TCP должен одновременно принимать данные, предназначенные для
нескольких приложений.
Для определения приложения, которому следует направить тот или иной
входящий пакет, в TCP используются номера портов. Следовательно, было бы
весьма желательно, чтобы оба компьютера, получатель и отправитель,
согласовали бы общий набор портов для своей базы. К сожалению, количество
существующих приложений на базе IP настолько огромно, что обеспечить
сколько-нибудь согласованную схему нумерации портов практически невозможно. По этой
причине в IANA, а позднее — в ICANN было решено регламентировать
использование хотя бы для части доступных портов.
Задача, стоящая перед ICANN, упрощалась тем, что многие приложения были
распространены настолько широко, что могли считаться хорошо известными
(well known). Номера портов, присвоенные таким приложениям, с большой
долей вероятности распознавались любым хостом с поддержкой IP. Примеры
хорошо известных номеров портов:
О порт 80 (протокол HTTP);
О порт 119 (протокол NNTP);
О порт 69 (протокол TFTP).
Мы не будем перечислять все 1024 номера хорошо известных портов (с
номерами от 0 до 1023). Полный список хорошо известных номеров портов для
TCP и UDP приведен в RFC 1700.
Поскольку номер порта определяется 16-разрядным двоичным числом, с
математической точки зрения существует 65 536 возможных номеров портов. Порты
с номерами от 0 до 1023 считаются хорошо известными, а все номера,
превышающие 1023, относятся к категории старших номеров, также называемых
временными или эфемерными. Использование старших номеров портов не
регламентируется правилами ICANN, поэтому любое приложение, не являющееся хорошо
известным, может использовать их для своих коммуникационных потребностей.
Любая программа (как любительская, так и коммерческая) может произвольно
выбрать любой неиспользуемый номер верхнего порта.
В каждом сегменте TCP хранятся номера двух портов — как
приложения-отправителя, так и приложения-получателя. На практике также часто встречается
термин сокет (socket ), хотя в заголовке TCP нет отдельного поля, в котором бы
хранился номер сокета. Сокет представляет собой совокупность IP-адреса хоста
с номером порта конкретного приложения, находящегося на этом хосте. Таким
образом, сокет определяет уникальную пару «хост/приложение». Компоненты
сокета разделяются двоеточием. Например, сокет 10.1.1.9:666 определяет порт 666
(номер порта DOOM) на хосте 10.1.1.9.
ПРИМЕЧАНИЕ
Термин «сокет» также обозначает программную структуру данных, в которой хранится упомянутая
выше пара (IP-адрес и номер порта). Набор системных функций для работы со структурой данных
сокета называется интерфейсом сокетов. Интерфейс сокетов получил широкое распространение
в BSD Unix, поэтому иногда он также называется интерфейсом сокетов BSD. Реализация
интерфейса сокетов для операционной системы Windows называется Windows Sockets, или сокращенно
WinSock. Обычно WinSock реализуется в виде библиотеки динамической компоновки (DLL).
Проверка целостности данных
TCP выполняет математические операции с каждым сегментом данных,
находящимся в сегменте TCP, и помещает результат в поле контрольной суммы
заголовка TCP. После прибытия пакета к заданному месту назначения с
полученными данными выполняется та же математическая операция, а полученный
результат должен совпасть с хранящимся в заголовке TCP. Если числа
совпадают, то можно с достаточно большой вероятностью предположить, что передача
данных произошла без искажений. В противном случае отправителю передается
запрос на повторную передачу этого сегмента данных.
Восстановление порядка данных
На практике сегменты данных достаточно часто приходят к получателю не в том
порядке, в котором они были отправлены. Нарушение порядка может
объясняться разными причинами. Например, при высоком объеме сетевого трафика
протоколы маршрутизации могут выбрать разные маршруты, в результате чего
сегменты придут к получателю в другом порядке. Кроме того, потеря или
повреждение данных в процессе пересылки также приводит к нарушению исходного
порядка. В любом случае модуль TCP на хосте-получателе накапливает
полученные сегменты данных до тех пор, пока не сможет восстановить их в
правильном порядке.
Для решения этой задачи TCP анализирует содержимое поля порядкового
номера в заголовке TCP. Восстановление порядка сводится к математической
сортировке полученных сегментов по значению этого поля.
Управление потоком данных
Отправитель и получатель, участвующие в сеансе TCP, называются
равноправными узлами (peers). Каждый из них обладает возможностью управлять
потоком данных, направляемым в физические буферы ввода. Это делается при
помощи размера окна TCP. Размер окна согласовывается между отправителем и
получателем в заголовке TCP. Получатель, не справляющийся с входным
потоком данных, может снизить скорость передачи данных с отправителя, для этого
достаточно сообщить отправителю новый размер окна. В случае переполнения
буферов адресат получает подтверждение последнего полученного сегмента
данных с новым размером окна, равным 0. Тем самым он фактически блокирует
передачу данных до тех пор, пока перегруженный компьютер не освободит свои
буферы. Для каждого обработанного сегмента получатель должен отправить
подтверждение; при этом он может указать положительный размер окна и
возобновить передачу данных.
Хотя этот простой механизм позволяет эффективно управлять потоком
данных между двумя компьютерами, он всего лишь предотвращает переполнение
конечных систем входящими данными. Сам по себе размер окна не учитывает
загруженности промежуточной сети, а возможные сетевые заторы приводят к тому,
что передаваемые сегменты добираются до места назначения дольше обычного.
Следовательно, при управлении потоком данных также должны учитываться
временные характеристики передачи.
Временные характеристики
Для выполнения ряда важных функций в TCP используются механизмы
измерения временных характеристик. Для каждого передаваемого сегмента
устанавливается таймер. Если до того, как для данного сегмента будет получено
подтверждение, значение таймера уменьшится до 0, сегмент считается
потерянным и передается заново. Таймеры также косвенно используются для борьбы
с сетевыми заторами за счет снижения скорости передачи данных при
возникновении тайм-аутов. Теоретически скорость передачи сегментов снижается
до тех пор, пока тайм-ауты не прекратятся. TCP не может бороться с сетевыми
заторами напрямую, но по крайней мере уменьшает свой вклад в их
возникновение.
Подтверждение приема
Если в заголовке установлен флаг АС К, получатель должен подтвердить
получение конкретного сегмента данных, определяемого порядковым номером.
Протокол TCP почти всегда используется в режиме надежной передачи, поэтому
ситуации, в которых флаг АСК не установлен, встречаются редко.
Сегменты данных, прием которых не подтвержден, считаются потерянными
в процессе передачи и отправляются заново. Процесс повторной отправки
должен быть согласован между отправителем и получателем.
Протокол UDP
Протокол UDP (User Datagram Protocol) является вторым протоколом межхос-
тового уровня (соответствующего транспортному уровню в эталонной модели
OSI). UDP обеспечивает простейшие, требующие минимальных затрат средства
передачи данных в виде так называемых «дейтаграмм» (datagrams). Чтобы
понять, насколько прост механизм UDP, достаточно сравнить RFC 768 (исходная
спецификация с описанием функциональности, структур данных и механизмов
UDP) практически с любым другим RFC. Документ RFC 768 выглядит просто
крошечным — он состоит всего из трех страниц. Во многих других RFC одно
оглавление занимает больше места!
Из-за своей простоты протокол UDP оказывается неподходящим для
некоторых приложений. С другой стороны, он отлично подходит для более сложных
приложений, которые обладают собственными средствами контроля,
ориентированными на соединение. В числе других потенциальных областей
применения UDP — пересылка таблиц маршрутизации, системных сообщений,
данных сетевого мониторинга и т. д. Подобная пересылка не требует управления
потоком, подтверждения, упорядочения и прочих возможностей,
обеспечиваемых TCP.
Как правило, UDP используется в приложениях, ориентированных на
широковещательную рассылку или работу с сообщениями, а также там, где не
требуется полная надежность, обеспечиваемая протоколом TCP. В последнее время
протокол U DP также нашел применение в приложениях реального времени —
таких, как VoIP (Voice over IP), когда присущие TCP повышенная надежность
и повторная пересылка потерянных сегментов оборачиваются лишними
затратами, которые лишь увеличивают общую задержку при передаче пакетов.
Структура заголовка UDP
На рис. 9.4 представлена структура заголовка UDP с указанием размеров
отдельных полей.
Порт1ЮР Порт1ЮР Контрольная Длина
отправителя получателя сумма сообщения
B октета) B октета) B октета) B октета)
Рис 9.4. Структура заголовков UDP демонстрирует предельную простоту
и ограниченные возможности этого протокола
Заголовок UDP содержит следующие поля:
О Порт UDP отправителя — 16-разрядный номер порта, инициировавшего
соединение. Совокупность номера порта и IP-адреса отправителя определяет
«обратный адрес» данного пакета.
О Порт UDP получателя — 16-разрядный номер порта, на который
направляется данный пакет. По номеру порта определяется приложение, которому
будет передан пакет на компьютере-получателе.
О Контрольная сумма — в этом поле хранится 16-разрядное значение,
полученное отправителем в результате математических вычислений с содержимым
сегмента. Затем те же самые вычисления производятся получателем.
Расхождение двух результатов означает, что в процессе пересылки пакета
произошла ошибка.
О Длина сообщения — 16-разрядное поле, в котором получателю передается
размер сообщения. Обеспечивает дополнительную возможность для проверки
правильности сообщения.
ПРИМЕЧАНИЕ
Хотя протоколы TCP и UDP используют 16-разрядные номера портов, они находятся в разных
адресных пространствах. Иначе говоря, порт TCP с номером 2000 не имеет ничего общего с портом
UDP 2000.
Задачи протокола UDP
Протокол UDP намеренно проектировался как эффективный транспортный
протокол с минимальными издержками, что напрямую отражено в структуре
его заголовка. Информации, хранящейся в заголовке, -хватает только для того,
чтобы переслать дейтаграмму нужному приложению (то есть номеру порта) и
выполнить простейшую проверку ошибок.
UDP не обладает ни одной из нетривиальных возможностей,
обеспечиваемых протоколом TCP. В нем не предусмотрены таймеры, средства
управления потоком или регулировки скорости передачи, подтверждения, механизмы
ускоренной доставки срочных данных и т. д. Протокол UDP просто пытается
доставить дейтаграмму. Если попытка по какой-либо причине завершается
неудачей, дейтаграмма теряется без каких-либо попыток повторной передачи
данных.
Сравнение TCP с UDP
TCP и UDP — разные протоколы транспортного уровня, спроектированные для
решения разных задач. Между ними существует только одно заметное сходство:
в качестве протокола сетевого уровня они используют IP. С другой стороны,
главное функциональное различие между TCP и UDP — это надежность
доставки. Протокол TCP гарантирует надежную доставку, а протокол UDP всего
лишь обеспечивает простейший механизм доставки дейтаграмм. Вследствие
этого протокол TCP гораздо более сложен, а его функционирование связано со
значительными затратами, тогда как протокол UDP отличается простотой и
эффективностью.
Протокол UDP часто критикуют за ненадежность, так как в нем не
поддерживается ни одно из средств надежной доставки TCP — подтверждение приема
дейтаграмм, изменение нарушенного порядка дейтаграмм и даже запрос на
повторную передачу поврежденных пакетов. Иначе говоря, ничто не гарантирует,
что дейтаграмма UDP достигнет своего места назначения в исходном виде! По
этой причине протокол UDP лучше подходит для передачи небольших объемов
данных (на уровне отдельных пакетов), a TCP обычно применяется для
управления потоком данных, состоящим из множества пакетов.
Впрочем, говоря о ненадежности UDP, необходимо упомянуть и о
достоинствах этого протокола. UDP — простейший протокол транспортного уровня,
требующий минимальных затрат и способный работать значительно быстрее
TCP. По этой причине он хорошо подходит для приложений, критичных по
времени, — таких, как передача голосовых данных VoIP (Voice over IP) и
видеоконференции в реальном времени.
Протокол UDP также хорошо подходит для выполнения служебных
операций в сети (например, пересылки обновлений маршрутных таблиц между
маршрутизаторами или данных сетевого мониторинга). Такие операции важны для
обеспечения общей работоспособности сети, но вынужденное использование
механизмов надежной доставки TCP при их выполнении может привести к
нежелательным последствиям. Таким образом, ненадежность протокола UDP еще
не означает его бесполезности. Просто этот протокол разрабатывался для другого
класса приложений, нежели протокол TCP.
Итоги
Семейство протоколов TCP/IP (включая UDP и ICMP) удовлетворяло быстро
растущие потребности пользователей и приложений более 20 лет. За это время
протоколы постоянно обновлялись, что объяснялось новыми технологическими
разработками и превращением Интернета из исследовательской среды с
ограниченным кругом пользователей в общедоступную коммерческую инфраструктуру.
Коммерциализация Интернета вызвала бурный рост сообщества пользователей
и изменила его демографическую структуру. В свою очередь, это обусловило
необходимость в новых адресах и поддержки новых типов сервиса на уровне
Интернета. Ограниченные возможности IPv4 привели к разработке совершенно новой
версии протокола. Новой версии IP был присвоен номер 6 (IPv6), но также часто
используется термин IPng (Internet Protocol: Next Generation). Протокол IPv6
подробно рассматривается в главе 12.
1 f\ пр°токол 1Р
Карапжит С. Сиян (Karanjit S. Siyan)
Межсетевой протокол IP (Internet Protocol) реализует первый уровень
абстракции, на котором все сетевые узлы рассматриваются как узлы IP. Таким образом,
IP обеспечивает логическую модель абстрактной сети, обладающей свойствами,
описанными в этой главе.
Протоколы, работающие на более высоком уровне — такие, как TCP и UDP, —
могут считать, что в сети используется только протокол IP. На практике сеть
не обязательно ограничивается IP, она также может поддерживать другие
протоколы. Устройства, подключенные к сетям IP, определяются 32-разрядными
значениями, которые называются IP-адресами. IP предоставляет
высокоуровневым протоколам сервис связи, не ориентированный на соединение. Этот
сервис реализуется с применением дейтаграмм, содержащих IP-адреса
отправителя и получателя, а также другие параметры, необходимые для работы IP.
Данная глава дает серьезное концептуальное представление о работе IP в
реальных сетях.
Абстрактная модель IP
Пересылка данных протоколом IP выполняется средствами сетевого
оборудования нижнего уровня. Это означает, что дейтаграммы IP инкапсулируются в
кадрах базовой сети — например, Ethernet, Token Ring или Х.25.
Протоколы верхнего уровня, к числу которых относятся TCP и UDP, не
обязаны знать обо всех тонкостях инкапсуляции сетевых данных и работы базового
оборудования. Протоколы верхнего уровня могут рассчитывать лишь на
определенные характеристики сетевого сервиса (такие, как пропускная способность
и задержка), называемые параметрами качества предоставляемых услуг (QoS,
Quality of Service). Верхние уровни передают параметры QoS уровню IP
вместе с данными. Уровень IP может попытаться реализовать параметры QoS на
уровне сервиса, предоставляемого базовым сетевым оборудованием, хотя нельзя
гарантировать, что базовое оборудование поддерживает такую возможность.
К процессам верхнего уровня
А Хост I I
Г Логическая сеть IP ^ Ц^^^ш Ш LJ
Уровень IF* I J I
1 ' I/ I Ж X
ШГ\\
Физические различия ^^^ U
^^ между сетями Д-i mm
i j Li rX
^---J ^ p]
N
V( IpsnWpsnI ^\ Сеть
f (pad)\~-Jf—N <; пакетов Х.25
—^^ ' Узел коммутации
• Уровень IP пакетов
-обеспечивает сильную логическую абстракцию;
-маскирует различия, существующие на физическом уровне
• Процессы верхнего уровня работают с логической сетью IP
PAD = сборщик/разборщик пакетов
Рис 10.1. Абстрактная модель IP (с разрешения Learning Tree)
На рис. 10.1 изображен хост IP, имеющий три сетевых подключения: для
Ethernet, Token Ring и Х.25. В этом примере IP работает на каждом из трех
сетевых подключений, каждое из которых определяется уникальным
32-разрядным числом, называемым IP-адресом. Уровень IP предоставляет верхним
уровням абстрактную модель каждой из трех сетей. Абстракция не зависит от
физических атрибутов сети — таких, как размер адреса, максимальная единица
передачи (MTU, Maximum Transfer Unit), пропускная способность сети,
максимальная скорость передачи данных и т. д. Параметр MTU определяет
максимальный размер поля данных в базовой физической сети. Поскольку в поле
данных хранятся дейтаграммы IP в сетях TCP/IP, значение MTU также
определяет максимальный размер дейтаграмм IP, пересылаемых в физической сети.
В сети, изображенной на рис. 10.1, значение MTU для сети Ethernet равно
1500 байт. Для сети IEEE 802.4, Token Ring 4 Мбит/с оно равно 4440, а для сети
IEEE 802.5 16 Мбит/с — 17940. Для сети Х.25 значение MTU проходит
дополнительное согласование и может изменяться в пределах от 64 байт до 4 Кбайт.
Сети IP обязаны обеспечивать обработку дейтаграмм минимального размера
576 байт. Так как минимальный размер дейтаграммы IP, обрабатываемой всеми
маршрутизаторами, составляет 576 байт, при пересылке данных TCP/IP по сети
Х.25 значения MTU, меньшие 576, не используются.
Несмотря на разные значения MTU и разные скорости передачи данных,
уровень IP игнорирует все физические различия и объединяет эти сети в
единую логическую сеть IP.
Абстрактная сеть IP не ориентируется на соединение, каждая дейтаграмма
маршрутизируется независимо от других. Следовательно, возможна ситуация,
когда последовательные дейтаграммы пересылаются по разным маршрутам
(рис. 10.2).
Узел IP Узел IP
I *Г
I ' I
4 ♦ » *—•-
f———^—————-—I А I'
/ | Дейтаграмма 2 г ~ _ 1
Л^%/Дейта- у^^У У^^,'
/'''\Г\ грамма 2!/| / У
/.of"" • ''
*! 1 ♦-
Узел IP Узел IP
Рис. 10.2. Независимая маршрутизация дейтаграмм IP
Из-за разных задержек во времени прохождения маршрутов нельзя
исключать, что дейтаграммы поступят к получателю не в том порядке, в котором они
были отправлены. Уровень IP не пытается решить эту проблему и каким-то
образом обеспечить правильный порядок доставки дейтаграмм. Более того, он
даже не пытается гарантировать их надежную доставку получателю. Проблемы
восстановления порядка и надежной доставки решаются протоколами более
высокого уровня — такими, как TCP.
Отсутствие гарантий порядка и надежной доставки упрощает отображение IP
на разные виды сетевого оборудования. Протоколы верхнего уровня
самостоятельно реализуют дополнительные уровни надежности в соответствии с
потребностями приложений.
Важно понимать, что без поддержки со стороны протоколов верхнего уровня
сети IP в принципе ненадежны. Сеть IP добросовестно пытается доставить
дейтаграмму IP, но не может гарантировать, что доставка состоится. По этой
причине IP почти всегда используется в сочетании с протоколами верхнего уровня,
обеспечивающими дополнительную функциональность.
Сервис IP не ориентирован на соединение, и каждая дейтаграмма
маршрутизируется независимо от других. В каждую дейтаграмму включаются IP-адреса
отправителя и получателя. Адрес получателя используется промежуточными
маршрутизаторами для доставки дейтаграммы IP к нужному месту назначения.
Абстрактная модель IP позволяет пересылать дейтаграммы независимо от
значения MTU базовой сети. Слишком большие дейтаграммы при
необходимости фрагментируются узлами IP. Ниже механизм фрагментации рассматривается
гораздо более подробно.
Размер дейтаграммы IP
Протокол IP проектировался в расчете на поддержку разных типов сетевого
оборудования. Как упоминалось выше, в разных сетях устанавливаются разные
ограничения для максимального размера данных, передаваемых в кадре канального уровня.
В табл. 10.1 приводятся значения MTU для разных типов сетевого оборудования.
Таблица 10.1. Значения MTU для разных типов сетей
Тип сети MTU (в октетах)
Ethernet 1500
IEEE 802.3 1492
Token Ring от 4440 до 17940 (в зависимости от времени удержания маркера)
FDDI 4352
IEEE 802.4 8166
SMDS 9180
Х.25 1007 (ARPANET через DDN X.25), 576 (для открытых сетей, но может
увеличиваться в результате согласования)
Значение MTU в сетях Token Ring зависит от времени удержания маркера
(ТНТ, Token Holding Time), которое составляет примерно 8,58 миллисекунды.
Для скорости передачи 4 Мбит/с максимальный размер кадра Token Ring
вычисляется по следующей формуле:
Максимальный размер кадра в сети Token Ring D Мбит/с) - 8,58 мс х
х 4 Мбит/с = 8,58 х 4 х 1024 х 1024 = 36 000 бит - 36 000/(8 бит/октет) =
= 4500 октетов.
В этих вычислениях 1 Мбит/с = 1024 х 1024 бит/с.
Максимальный размер кадра в сети Token Ring вычисляется следующим
образом:
Заголовок MAC = 15 октетов
Поле маршрутных данных = 30 октетов
Заголовок LLC = 4 октета
Заголовок SNAP = 5 октетов
Завершение MAC = 6 октетов
Общий размер заголовка = 60 октетов
Значение MTU для Token Ring D Мбит/с) = максимальный размер кадра - размер заголовка
кадра Token Ring = 4500 - 60 = 4440 октетов
Максимальный размер кадра Token Ring для скорости 16 Мбит/с
вычисляется следующим образом:
Максимальный размер кадра в сети Token Ring A6 Мбит/с) = 8,58 мс х
х 16 Мбит/с « 8,58 х 16 х 1024 х 1024 = 144 000 бит = 36 000/(8 бит/октет) -
18 000 октетов.
Значение MTU для Token Ring A6 Мбит/с) = максимальный размер кадра - размер заголовка
кадра Token Ring = 18000 - 60 = 17940 октетов
Значение MTU для сети FDDI на рис. 10.1 вычисляется следующим образом:
Максимальный размер кадра FDDI с применением кодировки 4В/5В = 4500
октетов.
Наибольший заголовок кадра FDDI:
Заголовок MAC =16 октетов
Заголовок LLC = 4 октета
Заголовок SNAP = 5 октетов
Завершение MAC = 7 октетов (приближенно)
Общий размер заголовка = 32 октета
Для будущих расширений рекомендовано зарезервировать для заголовка
кадра FDDI 148 октетов.
Значение MTU для FDDI A00 Мбит/с) = максимальный размер кадра - размер заголовка
кадра Token Ring = 4500 - 148 = 4352 октета
Максимальная длина дейтаграммы IP составляет 65 536 байт, что значительно
превышает значения MTU, поддерживаемые большинством сетей. Уровень IP
отправителя обычно ограничивает размер дейтаграмм, чтобы он не превышал
значения MTU локального сегмента сети. Если дейтаграмма IP пересылается между
сетями, то, чтобы дейтаграмма IP была доставлена в виде единого целого, ее
размер не должен превышать значения MTU всех промежуточных сетей. В сетях
IP не существует эффективных средств, которые бы позволяли заранее
определить значения MTU промежуточных сетей. Если бы такие средства существовали,
отправитель мог бы отправить дейтаграмму IP с размером, не превышающим
значения MTU промежуточных сетей. Вместо этого в сетях IP используется
механизм фрагментации, позволяющий передавать дейтаграммы произвольного
размера в любых сетях.
Фрагментация в IP
Если размер дейтаграммы IP оказывается больше значения MTU для сети, в
которой дейтаграмма должна передаваться, передача дейтаграммы в исходном
виде невозможна. Дейтаграмма разбивается на фрагменты, размер которых не
превышает значения MTU для сети. Этот процесс называется фрагментацией.
Каждый фрагмент исходной дейтаграммы пересылается в виде отдельной
дейтаграммы IP. Информации, хранящейся в заголовках IP, достаточно для
идентификации фрагментов. Эта информация используется хостом-получателем при
сборке исходной дейтаграммы из фрагментов.
На рис. 10.3 схематично изображен процесс передачи дейтаграммы IP в сети.
В приведенном примере для сети В установлено значение MTU, меньшее размера
дейтаграммы. Маршрутизатор обнаруживает это обстоятельство и фрагментирует
дейтаграмму IP на несколько дейтаграмм меньшего размера, не превышающего
MTU сети В.
Хост А Маршрутизатор
Фрагментация Фрагментация обязательна:
не нужна: размер размер дейтаграммы > MTU
дейтаграммы = MTU
Рис. 10.3. Фрагментация дейтаграмм IP (с разрешения Learning Tree)
Предположим, что затем дейтаграммы независимо друг от друга прибывают
на хост С. Хотя значение MTU сети С позволяет переслать исходную дейтаграмму,
маршрутизатор на границе между сетями В и С не будет пытаться собрать
дейтаграмму из фрагментов. Сборка выполняется только модулем IP на
хосте-получателе, но не на промежуточных маршрутизаторах.
Что произойдет, когда хосту С потребуется ответить хосту А? Хост С
отрегулирует размер дейтаграммы так, чтобы он не превышал MTU для сети С. От
хоста С к хосту А дейтаграммы передаются без фрагментации. Тем не менее
промежуточные маршрутизаторы не пытаются объединять фрагменты в
дейтаграммы большего размера для повышения эффективности передачи.
Структура дейтаграмм IP
Дейтаграмма IP состоит из заголовка IP и данных IP, полученных от
протоколов верхнего уровня (рис. 10.4). Структура заголовка IP спроектирована таким
образом, чтобы хранящиеся в нем данные обеспечивали выполнение основных
функций уровня IP.
Из описания уровня IP в предыдущем разделе следует, что заголовок IP
должен содержать как минимум следующие данные:
О IP-адреса отправителя и получателя. Протокол IP не ориентирован на
соединение, поэтому с каждой дейтаграммой должна передаваться полная
адресная информация об отправителе и получателе.
О Уровень сервиса, который должен поддерживаться базовой сетью.
О Данные фрагментации. Поскольку дейтаграммы IP могут фрагментироваться
на границах сетей, в заголовке должны присутствовать поля, по которым
можно было бы определить позицию фрагмента в исходной дейтаграмме.
О Размер дейтаграммы. Дейтаграммы IP имеют переменный размер, поэтому
в заголовке должно присутствовать поле, содержащее информацию о общей
длине дейтаграммы IP.
Данные верхнего уровня Уровни 4, 5, 6, 7 модели OSI
"^ I
Заголовок IP Данные IP Уровень 3 модели OSI
. 1^ I .
Заголовок Данные канального уровня Проверочные УР°вень2
канального уровня н ашвпи.и^пл сегменты модели OSI
Рис. 10.4. Формат дейтаграммы IP
О Размер заголовка IP. Дейтаграммы могут содержать необязательные поля
с информацией о безопасности, маршрутизации от источника и т. д. В
результате заголовки IP имеют переменную длину, поэтому в заголовок IP
необходимо включить его реальную длину.
Ниже структура заголовка IP рассматривается более подробно.
Структура заголовка IP
Минимальная длина заголовка IP равна 20 октетам. Если в дейтаграмму
включены параметры, заголовок может оказаться длиннее. На рис. 10.5 изображена
общая структура заголовка IP.
ПРИМЕЧАНИЕ
Структура заголовка IP подробно рассматривается в RFC 791 и RFC 1122. Подробное описание
поля TOS (Type of Service) заголовка IP приведено в RFC 1349.
< 32 бита ►
г—т—г—i—|—I—г—т—I—I—г—т—I—I—I—I—|—I—I—I—i—I—I—I—I—г—т—j—1—I—I—I—|
Длина
Версия заголовка Тип сервиса (ToS) Общая длина
(IHL)
—I—I—I—I—I—I—I—I—I—I—I—l—I—I—I——I—I—I—I—l—I—I—I—I—I—I—I—l—I—I—
Идентификатор ° F F Смещение фрагмента
[-Н—I—I—I—I—I—I—|—I—I—I—нн—I—I——I—I—I—i—I—I—I—I—I—I—i—i—i—I—I—
Срок жизни Протокол Контрольная сумма заголовка
—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—i—I—i—I—I—I—I—i—i—I—I—
Адрес отправителя
—i—I—i—i—i—I—i—i—t—I—i—i—i—i—I—i—i—i—i—i—i—i—1—I—I—i—i—i—i—i—i—
Адрес получателя
—I—l—l—I—I—l—l—I—I—I—I—I—I—I—I—I—I—I—I—i—i—I—i—I—|—I—i—i—I—I—I—
«<^ Параметры Дополнение <<L
V—\—i—i—i—i—i—I—i—i—i—i—I—i—I—i—i—i—i—i—i—i—i—i—i—I—i—i—i—i—i—i—|
ДАННЫЕ
I i i i i ■ » ■ i—i i i i i i i i i ii i ■ ■ » ■ i i « ■ ■ ■ i___J
Рис. 10.5. Заголовок IP
Версия
На рис. 10.5 поле Версия имеет длину 4 бита и определяет формат заголовка IP. Это
позволяет определять новые версии структуры пакетов IP в будущем. Текущей
версии IP присвоен номер 4, и она называется IPv4. Следующая версия IP,
которой будет присвоен номер 6, будет поддерживать 128-разрядную адресацию.
Эта версия обозначается IPv6. Дополнительная информация об IPv6 приведена
в главе 12. В табл. 10.2 перечислены другие допустимые значения поля версии.
ПРИМЕЧАНИЕ
Номера версий 7, 8 и 9 были присвоены экспериментальным версиям протоколов IP, которые
должны были преодолеть ограничения 32-разрядной адресации. В настоящее время эти протоколы
были заменены IPv6.
Таблица 10.2. Номера версий IP
Версия IP Описание
О Зарезервировано
1-3 Значения не присвоены
4 IPv4
5 Stream IP Datagram Mode (экспериментальная версия IP)
6 IPv 6 (также называется IPng)
7 TP/IX: The Next Internet
8 «P» Internet Protocol
9 TUBA
10-14 Значения не присвоены
15 Зарезервировано
Поле версии используется отправителем, получателем и всеми
промежуточными маршрутизаторами для определения формата заголовка IP. Программное
обеспечение IP должно проверить поле версии и убедиться в том, что
заголовок IP имеет поддерживаемый формат. Например, если программное обеспечение
IP обрабатывает только дейтаграммы версии 4, оно отвергнет все дейтаграммы,
у которых значение версии отлично от 4.
Ниже приведены краткие комментарии по поводу содержимого табл. 10.2.
О Экспериментальный протокол Stream IP обеспечивает сквозную
гарантированную доставку данных в объединенных сетях. Он описан в RFC 1819.
О Протоколы TP/IX, «P» Internet Protocol и TUBA в течение некоторого
времени соревновались друг с другом за право заменить IPv4. Сейчас они уже
не являются серьезными конкурентами и представляют чисто исторический
интерес, поскольку в качестве замены IPv4 был принят протокол IPv6.
О Новый протокол «Р» обладал расширенными возможностями и
поддерживал адреса переменной длины. Позднее он был объединен с протоколом SIP
(Simple Internet Protocol), использующим 64-разрядную адресацию.
Протокол SIP был объединен с механизмом IPAE (IP Address Encapsulation),
определяющим преобразование между адресами IPv4 и длинными адресами.
Информация о SIP приведена в RFC 1710.
О Протокол TP/IX (см. табл. 10.2) был заложен в основу архитектуры CATNIP
(Common Architecture for the Internet), интегрирующей IPv4 с протоколами
IPX (Internet Packet Exchange) и OSI CLNP (Connectionless Network Protocol).
Протокол CATNIP представляет в основном исторический интерес.
Информация о нем приводится в документе RFC 1707.
О Сокращение TUBA означает «TCP и UDP с расширенными адресами» («TCP
and UDP with Bigger Addresses»). Протокол TUBA основан на CLNP, а его
описания приводятся в RFC 1347, RFC 1526 и RFC 1561.
Длина заголовка
Поле длины заголовка (IHL, Internet Header Length) содержит длину заголовка
в 32-разрядных блоках. Длина поля равна 4 битам, а его присутствие
необходимо из-за того, что в заголовок IP входит поле параметров переменной длины.
Остальные поля имеют фиксированную длину. При необходимости поле
параметров дополняется до 32-разрядной границы. На практике большинство
заголовков IP не содержит параметров. Длина заголовка IP за вычетом поля
параметров составляет 20 октетов, поэтому поле IHL чаще всего равно 5 (пять
32-разрядных блоков). Максимальная длина заголовка, равная 60 октетам,
задается при помощи параметров IP. В этом случае значение поля IHL будет равно
15 (пятнадцать 32-разрядных блоков).
Тип сервиса
Тип сервиса (ToS, Type of Service) содержит информацию о желательных
параметрах QoS — приоритете, задержке, пропускной способности и
надежности. Интерпретация отдельных битов этого 8-разрядного поля показана на
рис. 10.6.
Биты 0-2 1 1 111
Приоритет Задержка Пропускная Надежность Стоимость MBZ
|—0 = Нормальная
Li = Низкая
Т ,
I I I рО = Нормальная г~ = Нормальная
8? £££L« |Ll= Высокая Ti- Низкая
010 Высокий
011 Срочный
100 Срочный с отменой рО = Нормальная
101 Критический И
110 Межсетевой контроль 1—1= Высокая
111 Сетевой контроль
Рис. 10.6. Интерпретация поля ToS для пакетов IP
Первые три бита определяют параметры приоритета, связанные с
дейтаграммой IP. В приоритете отражено происхождение сетей IP, исследования в области
которых были инициированы Министерством обороны. Ниже расшифрован смысл
некоторых типов приоритета:
О Срочный — немедленная доставка, максимальный приоритет во всех сетях.
О Высокий — доставка в течение четырех часов.
О Повышенный — доставка в тот же день.
О Обычный — доставка в течение суток.
Коды приоритета имеют длину 3 бита. В табл. 10.3 перечислены допустимые
значения и их интерпретация.
Таблица 10.3. Коды приоритета
Код Интерпретация
000 Обычный
001 Повышенный
010 Высокий
011 Срочный
100 Срочный с отменой
101 Критический
110 Межсетевой контроль
111 Сетевой контроль
Поле приоритета предназначалось для применения межсетевых протоколов
в военных областях. Ненулевые значения этого поля выходят за рамки
стандартной спецификации IP. Уровень IP должен предоставить средства, при
помощи которых транспортный уровень мог бы задать содержимое поле ToS
каждой отправляемой дейтаграммы; по умолчанию все биты заполняются нулями.
Уровень IP должен передать полученные значения ToS транспортному уровню.
ПРИМЕЧАНИЕ
Информацию по использованию поля приоритета и его связи с уровнями других протоколов можно
получить в Агентстве по оборонным информационным системам DISA (Defence Information System
Agency). Следует учитывать, что при использовании приоритета его значение должно передаваться
между протокольными уровнями по аналогии с передачей поля ToS.
Четыре бита, следующих за полем приоритета, содержат коды типа сервиса.
Интерпретация кодов приведена в табл. 10.4.
Последний бит поля ToS должен быть равен нулю. Это 1-битное поле MBZ
(Must Be Zero) зарезервировано для использования в будущем. Поле ToS может
быть задействовано в протоколах IP, участвующих в экспериментальных
разработках Интернета. Маршрутизаторы и получатели дейтаграмм игнорируют
значение этого поля. Поле копируется при фрагментации, в результате чего все
фрагменты IP имеют одинаковые параметры типа сервиса.
Таблица 10.4. Коды типа сервиса
Код ToS Интерпретация
1000 Минимальная задержка
0100 Максимальная пропускная способность
0010 Максимальная надежность
0001 Минимальные затраты
0000 Нормальный сервис
Поле ToS игнорируется большинством реализаций IP и протоколов
маршрутизации — RIP, HELLO и т. д. Хотя в прошлом поле ToS почти не
использовалось, предполагается, что в таких протоколах маршрутизации, как OSPF, его
роль возрастет. Ожидается, что поле ToS будет использоваться для управления
двумя аспектами работы маршрутизатора: собственно маршрутизацией и
алгоритмами работы с очередями. Кроме того, поле ToS может отображаться на
совместное использование последовательных линий на канальном уровне со
стороны различных классов трафика TCP.
Алгоритмы маршрутизации могут руководствоваться содержимым поля ToS
для выбора наиболее подходящего маршрута. Если маршрутизатор знает, что
к месту назначения ведут несколько разных маршрутов, он может подобрать
маршрут, который наиболее близко соответствует содержимому поля ToS.
Допустим, маршрутизатору известны два маршрута: первый проходит через
спутниковый канал и обладает высокой задержкой и высокой пропускной способностью,
а второй (выделенная линия) характеризуется низкой задержкой и низкой
пропускной способностью. Если в трафике приложения передается информация
об интерактивных нажатиях клавиш, то основным требованием будет низкая
задержка, а пропускная способность не критична. Соответственно, для таких
целей маршрутизатор выбирает подключение под выделенной линии. Если
приложение требует пересылки большого объема данных, на первый план выходит
пропускная способность, пусть даже сопряженная с высокой задержкой. В этом
случае оптимальный маршрут проходит через спутниковый канал с высокой
пропускной способностью.
ПРИМЕЧАНИЕ
Использование поля ToS подробно описано в RFC 1349.
Общая длина
В поле общей длины хранится суммарная длина заголовка IP и данных (в
байтах). Поле состоит из 16 битов, поэтому максимальный размер дейтаграммы
составляет 65 535 октетов. Максимальное значение, которое может быть
представлено 16 битами, состоит из 16 единиц:
11111111U111111
Это число равно 216 - 1, или 65 535 в десятичном представлении.
Для большинства хостов и сетей дейтаграммы длиной 65 535 октетов не
используются на практике. Во многих сетях устанавливаются значения MTU,
гораздо меньшие 65 535 октетов. Также неэффективно было бы проектировать
коммуникационные буферы, в которых дейтаграммы IP могут достигать 65 535
октетов. Типичный размер дейтаграммы для большинства сетей и хостов редко
превышает 16 Кбайт.
Любой IP-узел должен быть готов принимать дейтаграммы длиной не менее
576 байт, поступающие как в виде единого целого, так и разбитые на фрагменты.
Минимальный размер 576 байт складывается из 512 байт данных и 64 байт
служебной информации протокола.
Дейтаграммы, размер которых превышает MTU базовой сети, проходят
обязательную фрагментацию, поскольку в противном случае их не удалось бы
переслать по базовой сети.
Идентификатор
Поле идентификатора содержит значение, уникальное для каждой дейтаграммы,
и фактически определяет ее номер. Каждая передающая сторона начинает
нумерацию дейтаграмм с некоторой начальной величины (рис. 10.7). В большинстве
реализаций IP используется глобальный счетчик, автоматически
увеличивающийся с каждой отправленной дейтаграммой IP.
Длина поля идентификатора равна 16 битам, что позволяет нумеровать
дейтаграммы в интервале от 0 до 65 535.
Поле идентификатора используется в первую очередь для идентификации
фрагментов, на которые была разбита определенная исходная дейтаграмма.
Идентификатор используется при сборке исходной дейтаграммы вместе с флагами
запрета фрагментации (DF) и наличия дополнительных фрагментов (MF), а
также полем смещения фрагмента. Эти поля описаны в следующем разделе.
Флаги фрагментации и поле смещения фрагмента
Установленный флаг DF (DF=1) запрещает фрагментацию дейтаграммы. В
частности, данная возможность может использоваться в тех случаях, когда получатель
заведомо не обладает средствами для сборки исходной дейтаграммы из
фрагментов. Примером служит программа начальной загрузки в памяти компьютера,
принимающего данные с сервера. Если все данные должны находиться в одной
дейтаграмме, отправитель устанавливает флаг DF. Также флаг DF может
устанавливаться для ликвидации задержки, возникающей при сборке фрагментов на
компьютере-получателе. Если флаг DF равен 0, это означает, что дейтаграмма IP
может маршрутизироваться промежуточными маршрутизаторами или хостами.
Установленный флаг MF (MF=1) сообщает получателю о том, что к нему
должны поступить дополнительные фрагменты. Флаг MF, равный 0, является
признаком последнего фрагмента. У полных (не фрагментированных)
дейтаграмм флаг MF всегда равен 0, что указывает на отсутствие других фрагментов
у текущей дейтаграммы.
В идеальном случае значения MTU всех сетей, по которым пересылаются
дейтаграммы IP, превышают размер наибольшей из передаваемых дейтаграмм.
В этом случае фрагментация не нужна. Но даже если минимальное значение
MTU на маршруте известно заранее, необходимо понимать, что некоторые
дейтаграммы могут быть направлены по другому маршруту и попасть в сеть, в ко-
торой действует другое, меньшее значение MTU (как говорилось выше, каждая
дейтаграмма IP маршрутизируется независимо от других дейтаграмм).
Начальный номер I —^—**«^/^^^ Начальный номер
дейтаграммы = 110 ^"^==::::=::^:::::^^ дейтаграммы = 3007
^^
Рис. 10.7. Изменение поля идентификатора
Как же происходит фрагментация дейтаграмм IP? На рис. 10.8 изображена
ситуация, в которой хост сети А отправляет дейтаграммы IP хосту, находящемуся
в сети С. Передаваемые дейтаграммы проходят через промежуточную сеть В.
Значения MTU для сетей А, В и С составляют 1500, 525 и 4470 октетов
соответственно. Сети А и В связываются маршрутизатором Ra, а сети В и С —
маршрутизатором Re. Как правило, хост А передает дейтаграммы IP, размер которых не
превышает MTU сети А. Предположим, хост А отправляет дейтаграмму с
идентификатором 5 и размером 1500 октетов. Получив эту дейтаграмму,
маршрутизатор Ra фрагментирует ее перед отправкой в сеть В, поскольку MTU в сети В
меньше размера дейтаграммы. Размеры фрагментов выбираются в соответствии
со значением MTU сети В E25 байт). В поле смещения каждого из полученных
фрагментов заносится начало данных этой дейтаграммы по отношению к
исходным, нефрагментированным данным.
| Дейтаграмма IP [-►
( Сеть ^ /^^\ { ^еть Ч /^^\ к ^еть \
С MTU = 1500 лЛ [J yC MTU = 525 Л~~( [J jC MTU = 4470 Л
С октетов у ^^^/ v октетов у ^^^^ v__ октетов <
Фрагменты
дейтафаммы iP
j | Дейтаграмма IP |
г Уровень IP J
/ l""^ [ДейтаФамма IP №~з}>»
/ [Дбйтаграмма IP №~2J-»-
[Дейтаграмма IP № 1|-fr»
Рис. 10.8. Пример фрагментации
Поле смещения фрагмента определяет позицию данных, передаваемых в
текущем фрагменте, по отношению к началу исходной дейтаграммы (ниже
описаны некоторые специфические особенности значения этого поля). Длина поля
смещения фрагмента равна 13 битам. Если присмотреться к структуре
заголовка IP на рис. 10.5, становится видно, что остальные биты этого слова заняты
флагами DF и MF.
Длина дейтаграмм IP может доходить до 65 535 октетов, однако поле
смещения не позволяет представлять значения, большие 8 192. По этой причине поле
смещения дополняется тремя нулевыми битами:
смещение_фрагмента000
Полученное значение кратно 8 байтам. Следовательно, значение поля смещения
всегда задается в количестве 8-байтовых групп, а для получения
непосредственного смещения значение поля необходимо умножить на 8. Также это означает,
что длина всех фрагментов, кроме последнего, должна быть кратна 8 байтам
(и при этом фрагмент должен быть меньше значения MTU, установленного для
сети). В описанном выше примере с дейтаграммой IP, состоящей из 1500
октетов, теоретически может быть выбран следующий вариант фрагментации:
Фрагмент 1 = 525 октетов
Фрагмент 2 = 525 октетов
Фрагмент 3 = 450 октетов
Размер дейтаграммы IP = 1500 октетов
Тем не менее размер 525 байт не кратен 8. Также необходимо учитывать, что
в дейтаграмму должен входить заголовок IP, состоящий минимум из 20 октетов.
При MTU = 525 после вычитания типичного размера заголовка IP на долю
фрагмента остается 505 октетов. Впрочем, это число тоже не кратно 9.
Ближайший размер, меньший 505 и нацело делящийся на 8, равен 504. Таким образом,
размер фрагмента IP можно выбрать равным 504 октетам. На рис. 10.9
изображена исходная дейтаграмма IP, разделенная на следующие фрагменты:
Фрагмент 1 = 504 октета
Фрагмент 2 = 504 октета
Фрагмент 3 = 492 октета
Размер дейтаграммы IP = 1500 октетов
<— 504 октета—W4—504 октета—НЧ—492 октета—>\
Заголовок
I IP I
; Смещение ; Смещение ; Смещение ;
! фрагмента = J фрагмента = ; фрагмента = ;
! 4 октета ! 504 октета ! 1008 октетов !
Заголовок фрагмент 1 ! j
Заголовок фрагмент 2 j
I Заголовок! Фрагмент 3
Рис. 10.9. Фрагментация исходной дейтаграммы IP
Каждый фрагмент снабжается отдельным заголовком IP. Поле
идентификатора в дейтаграммах-фрагментах содержит то значение, которое хранилось в
исходной (фрагментированной) дейтаграмме IP. Содержимое этого поля
идентифицирует фрагменты как принадлежащие конкретной дейтаграмме IP. Ниже
перечислены флаги и смещения фрагментов во фрагментированных
дейтаграммах IP (рис. 10.10).
Фрагмент 1
Общая длина = 504 октета
Идентификатор = 5
Флаг DF =0
Флаг MF =1
Смещение фрагмента = 0
Фрагмент 2
Общая длина = 504 октета
Идентификатор = 5
Флаг DF =0
Флаг MF =1
Смещение фрагмента = 63 блока по 8 октетов E04 октета)
Фрагмент 3
Общая длина = 492 октета
Идентификатор = 5
Флаг DF =0
Флаг MF =0
Смещение фрагмента = 126 блоков по 8 октетов A008 октетов)
Для восстановления фрагментированной дейтаграммы IP получатель должен
собрать фрагменты со всеми смещениями, от нулевого и до максимального.
Получатель использует размер каждого фрагмента (поле общей длины в заголовке
дейтаграммы IP), смещение фрагмента и флаг MF, чтобы определить, были ли
получены все фрагменты. Как получатель узнает о получении последнего
фрагмента? У последнего фрагмента флаг MF равен 0. У первого фрагмента флаг
MF равен 1, а смещение равно 0. У всех остальных промежуточных фрагментов
флаг MF равен I, а смещение положительно.
Отдельные части фрагментированной дейтаграммы IP следуют к месту
назначения, причем возможно — по разным маршрутам. Фрагменты собираются
на компьютере-получателе, но не на промежуточных маршрутизаторах. Из этого
факта можно сделать следующие выводы:
О Фрагменты IP перемещаются от точки фрагментации к получателю.
О Несмотря на то что в других промежуточных сетях может быть установлено
значение MTU, превышающее размер фрагмента, фрагменты все равно пере-
даются в виде пакетов малого размера, что приводит к плохой эффективности
протокола.
О Лишняя фрагментация порождает лишний сетевой трафик.
20 w|^ 504 w|^ 504 ^ 492 .
К" октетов ~*Т* октета И^ октета И^ октета Н
Заголовок 1.1
I I !-*_ I t I ^. «' I
Идентификатор = 5 ^- / „--'"'
DF = 0 *^<t~''*'*
MF = 0 ^i*-'^^
Смещение фрагмента = 0 ^^~' / ""-,
^^ / 20 ^к 504
^'** / Н" октетов >|< октета ►)
уУ\* обетов »Н off!» Н I 3а7рОВ°К I *Ра™ент 1 L>
I Заголовок I фрагмент 2 L* Г
, ' г ' Идентификатор = 5
i DF = 0
v Идентификатор = 5 ™ .
\ DF = 0 Смещение фрагмента = 0
Ч-чч MF = 1
4 v - х Смещение фрагмента = 63
и. 20 »|«'* 492 И
Г^ октетов ^Т4 октета И
I Заголовок I фрагмент з I ►
' Г ^
Идентификатор = 5
DF = 0
MF = 0
Смещение фрагмента = 126
Рис 10.10. Фрагменты дейтаграммы IP
В случае потери одного фрагмента восстановить исходную дейтаграмму не
удастся. Даже если остальные фрагменты будут доставлены успешно, вся
дейтаграмма будет потеряна. Протоколы верхнего уровня (такие, как TCP)
обеспечивают повторную отправку всей дейтаграммы, но она снова будет фрагментиро-
вана в той точке, где ее размер превысит MTU.
При получении первого фрагмента узел-получатель запускает таймер
восстановления. Если заданный интервал времени истечет до получения всех
остальных фрагментов, узел IP удалит полученные фрагменты, даже если они были
переданы правильно. С ростом количества фрагментов также возрастает
вероятность потери дейтаграмм IP, поскольку для потери всей дейтаграммы достаточно
потери всего одного фрагмента. Отправитель извещается о наступлении тайм-аута
при помощи сообщения ICMP (Internet Control Message Protocol). Для
привлечения вашего внимания к этой проблеме могут использоваться специальные
диагностические программы — например, анализаторы протоколов.
Хотя методика с восстановлением дейтаграмм IP на узле-получателе создает
некоторые проблемы, о которых говорилось выше, у нее есть преимущество: она
упрощает реализацию маршрутизаторов, которым не приходится хранить и
восстанавливать фрагментированные дейтаграммы IP. При наличии нескольких сетей
с малыми значениями MTU восстановление фрагментов на промежуточных
маршрутизаторах было бы неэффективным, поскольку восстановленная дейтаграмма
снова фрагментируется перед входом в следующую сеть с малым значением MTU.
Срок жизни (TTL)
Срок жизни (TTL, Time To Live) измеряется в секундах и определяет
максимальное время существования дейтаграммы IP в сети. Поле должно уменьшаться
каждым маршрутизатором на величину времени, затраченного на обработку
пакета. Когда поле TTL уменьшается до 0, срок жизни дейтаграммы истекает.
Подобная схема предназначалась для того, чтобы истечение срока жизни
приводило к удалению дейтаграммы на маршрутизаторах, а не на получателе. Хосты,
выполняющие функции маршрутизаторов, должны следовать правилам
сокращения срока жизни при маршрутизации. Поле TTL решает две задачи:
О Ограничение жизненного цикла сегментов ТСО.
О Прерывание циклической маршрутизации в Интернете.
При истечении таймера TTL отправителю посылается уведомляющее
сообщение ICMP.
Хотя срок жизни измеряется в секундах, маршрутизатору трудно определить
точное время прохождения дейтаграммы IP в сегменте сети. С другой стороны,
он может отслеживать время, проведенное дейтаграммой IP непосредственно на
маршрутизаторе — для этого достаточно зафиксировать время поступления и
отправки дейтаграммы. Но и это сопряжено с дополнительными вычислениями,
поэтому многие маршрутизаторы даже не пытаются оценивать время нахождения
дейтаграммы IP и просто уменьшают содержимое поля TTL на 1. Из-за этого
данное поле превращается в некое подобие счетчика переходов (hops). В
некоторых ранних реализациях в поле срока жизни ошибочно заносилось значение 16,
представляющее бесконечность в протоколе RIP (Routing Information Protocol).
Тем не менее срок жизни дейтаграммы не зависит от метрик RIP.
Кроме того, о сроке жизни дейтаграмм необходимо знать следующее:
О Хост не должен отправлять дейтаграммы с нулевым сроком жизни или
уничтожать дейтаграммы только потому, что при получении их срок жизни был
меньше 2.
О Протоколы верхнего уровня иногда используют поле TTL для реализации
расширенного контекста поиска ресурсов Интернета. Информация используется
некоторыми диагностическими утилитами; предполагается, что она
помогает найти «ближайший» сервер заданного класса — например, посредством
групповой рассылки IP. Конкретный транспортный протокол также может
самостоятельно задать значение TTL, определяющее максимальную
продолжительность жизненного цикла дейтаграммы.
О Минимальное фиксированное значение TTL должно быть по крайней мере
равно интернет-диаметру, то есть длине наибольшего возможного пути.
На практике рекомендуется выбирать значения, вдвое большие диаметра,
с учетом продолжающегося роста Интернета.
О Уровень IP должен предоставить транспортному уровню средства для
задания поля TTL во всех отправляемых дейтаграммах. При использовании
фиксированного значения TTL необходимо предусмотреть возможность его
настройки. К сожалению, в большинстве реализаций настройка начального
значения TTL не поддерживается. На практике очень часто используется
значение по умолчанию C2 или 64).
Тип протокола
Поле типа протокола задает протокол верхнего уровня, который должен
получать данные IP. Содержимое этого поля используется при
мультиплексировании/демультиплексировании данных, передаваемых протоколам верхнего
уровня. Например, протокол TCP представляется кодом 6, протокол UDP —
кодом 17, а протокол ICMP — кодом 1. Когда модуль IP получает дейтаграмму
с типом протокола 6, он знает, что в дейтаграмме инкапсулируются данные
TCP, которые должны быть доставлены модулю TCP. Если в полученной
дейтаграмме поле типа протокола равно 17, значит, ее следует передать модулю UDP.
А если в полученной дейтаграмме поле типа протокола равно 1, значит, эта
дейтаграмма передается модулю ICMP.
В табл. 10.5 перечислены допустимые значения поля типа протокола в
заголовке IP.
Таблица 10.5. Коды протоколов
Код Сокращение Расшифровка
0 (зарезервировано)
1 ICMP Internet Control Message Protocol
2 IGMP Internet Group Management Protocol
3 GGP Gateway-to-Gateway Protocol
4 IP IP в IP (инкапсуляция)
5 ST Stream
6 TCP Transmission Control Protocol
7 UCL UCL
8 EGP Exterior Gateway Protocol
9 IGP Любой протокол внутреннего шлюза
10 BBN-RCC-MON BBN RCC Monitoring
11 NVP-II Network Voice Protocol
12 PUP PUP
13 ARGUS ARGUS
продолжение &
Таблица 10.5 (продолжение)
Код Сокращение Расшифровка
14 EMCON EMC0N
15 XNET Cross Net Debugger
16 CHAOS Chaos
17 UDP User Datagram Protocol
18 MUX Multiplexing
19 DCN-MEAS DCN Measurement Subsystem
20 HMP Host Monitoring Protocol
21 PRM Packet Radio Monitoring
22 XNS-IDP XEROX NSIDP
23 TRUNK-1 Trunk-1
24 TRUNK-2 Trunk-2
25 LEAF-1 Leaf-1
26 LEAF-2 Leaf-2
27 RDP Reliable Data Protocol
28 IRTP Internet Reliable Transaction Protocol
29 ISO-TP4 ISO Transport Protocol Class4
30 NETBLT Bulk Data Transfer Protocol
31 MFE-NSP MFE Network Services Protocol
32 MERIT-INP MERIT Internodal Protocol
33 SEP Sequential Exchange Protocol
34 3PC Third Party Connect Protocol
35 IDPR Inter-Domain Policy Routing Protocol
36 XTP XTP
37 DDP Datagram Delivery Protocol
38 IDPR-CMTP IDPR Control Message Transport Protocol
39 TP++ TP++ Transport Protocol
40 IL IL Transport Protocol
41 SIP Simple Internet Protocol
42 SDPR Source Demand Routing Protocol
43 SIP-SR SIP Source Route
44 SIP-FRAG SIP Fragment
45 IDPR Inter-Domain Routing Protocol
46 RSVP Reservation Protocol
47 GRE General Routing Encapsulation
Код Сокращение Расшифровка
48 MHRP Mobile Host Routing Protocol
49 BNA BNA
50 SIPP-ESP SIPP Encap Security Payload
51 SIPP-AH SIPP Authentication Header
52 I-NLSP Integrated Net Layer Security TUBA
53 SWIPE IP с шифрованием
54 NHRP NBMA Next Hop Resolution Protocol
55-60 (не присвоены)
61 (любой внутренний протокол хоста)
62 CFTP CFTP
63 (любая локальная сеть)
64 SAT-EXPAK SATNET and Backroom EXPAK
65 KRYPTOLAN Kryptolan
66 RVD MIT Remote Virtual Disk Protocol
67 IPPC Internet Pluribus Packet Core
68 (любая распределенная файловая система)
69 SAT-MON SATNET Monitoring
70 VISA VISA Protocol
71 IPCV Internet Packet Core Utility
72 CPNX Computer Protocol Network Executive
73 CPHB Computer Protocol Heart Beat
74 WSN Wang Span Network
75 PVP Packet Video Protocol
76 BR-SAT-MON Backroom SATNET Monitoring
77 SUN-ND SUN ND PROTOCOL-Temporary
78 WB-MON WIDEBAND Monitoring
79 WB-EXPAK WIDEBAND EXPAK
80 ISO-IP ISO Internet Protocol
81 VMTP VMTP
82 SECURE-VMTP SECURE-VMTP
83 VINES VINES
84 TTP TTP
85 NFSNET-IGP NFSNET-IGP
86 DGP Dissimilar Gateway Protocol
продолжение £>
Таблица 10.5 (продолжение)
Код Сокращение Расшифровка
87 TCF TCF
88 IGRP IGRP
89 OSPFIGP 0SPFIGP
90 Sprite-RPC Sprite-RPC Protocol
91 LARP Locus Address Resolution Protocol
92 MTP Multicast Transport Protocol
93 AX.25 AX.25 Frames
94 IPIP IP-within-IP Encapsulation Protocol
95 MICP Mobile Internetworking Control Pro.
96 SCC-SP Semaphore Communications Sec. Pro
97 ETHERIP Ethernet-within-IP Encapsulation
98 ENCAP Encapsulation Header
99 (любая закрытая схема шифрования)
100 GMTP GMTP
101-254 (не присвоены)
255 (зарезервировано)
Контрольная сумма заголовка
Контрольная сумма используется только для проверки целостности заголовка IP.
Сначала суммируются поразрядные дополнения до 1 всех 16-разрядных
величин, входящих в заголовок (за исключением поля контрольной суммы), затем
вычисляется дополнение до 1 полученной величины. Содержимое поля
вычисляется заново на каждом маршрутизаторе, поскольку поле TTL на нем
уменьшается, что должно быть отражено в модификации заголовка IP.
Контрольная сумма вычисляется относительно легко, а экспериментальные
данные показывают, что эта мера с достаточно высокой надежностью выявляет
ошибки в дейтаграммах.
IP-адреса получателя и отправителя
В адресных полях заголовка IP хранятся 32-разрядные IP-адреса двух узлов,
получателя и отправителя. Эти адреса пересылаются с каждой дейтаграммой IP,
поскольку сеть IP не ориентирована на соединение, поэтому каждая дейтаграмма
должна содержать полную информацию об адресах отправителя и получателя.
IP-адрес получателя используется маршрутизаторами для выбора маршрута
каждой дейтаграммы IP.
Параметры IP
В протоколе IP предусмотрены средства передачи информации о безопасности
дейтаграммы, маршрутизации сообщений от источника и временной пометки.
Поскольку эти средства используются относительно редко, они реализованы
в необязательных полях, называемых параметрами IP.
Существуют следующие параметры IP:
О безопасность;
О запись маршрутизации;
О жесткая маршрутизация от источника;
О свободная маршрутизация от источника;
О временная пометка.
Параметры IP должны обрабатываться всеми узлами IP. Они передаются
в необязательных полях, находящихся в конце заголовка. Присутствие
параметров в любом конкретном пакете не обязательно, но их поддержка должна
быть реализована в обязательном порядке. Например, в средах с высоким
уровнем безопасности для всех дейтаграмм IP может потребоваться
соответствующий параметр.
Поле параметров имеет переменную длину, кратную 32 битам. Для
соблюдения этого требования поле может дополняться нулями. Поддерживаются два
формата значений поля параметров IP (рис. 10.11):
О Формат 1: тип параметра (один октет).
О Формат 2: тип параметра (один октет), длина параметра (один октет) и
собственно данные параметра. Длина параметра включает все три поля (то есть
тип, длину и данные).
Тип параметра
1^ ^Длина^Ч J
П Чпараметра/ П
г; ./г I \—|
Тип параметра Длина параметра Данные параметра
1 ' ' \ '
Рис. 10.11. Форматы параметров
Тип параметра определяется первым октетом. В формате 1 параметр состоит
только из октета класса, а в формате 2 за классом следуют другие поля. Тип
параметра состоит из трех полей (рис. 10.12):
О Флаг копирования A бит).
О Класс параметра B бита).
О Номер параметра E бит).
Флаг копирования управляет обработкой поля параметров на
маршрутизаторах при фрагментации пакета. Если флаг равен 1, то параметры исходной дейта-
граммы должны копироваться в каждый фрагмент. Если флаг равен 0, то
параметры копируются только в первый фрагмент.
0 12 3 4 5 6 7
Класс параметра Номер параметра
копирования
Рис. 10.12. Октет типа параметра
Поле класса параметра имеет длину 2 бита и принимает значения от 0 до 3.
Смысл этих значений описан в табл. 10.6.
Таблица 10.6. Значения поля класса параметра в октете типа параметра
Значение Описание
0 Управление сетью
1 Зарезервировано для использования в будущем
2 Отладка и сбор информации
3 Зарезервировано для использования в будущем
Поле класса определяет общую категорию параметра. В настоящее время
определены две категории: управление сетью и отладка. Поле номера
параметра занимает 5 бит и позволяет задать до 32 параметров для каждой
категории. В табл. 10.7 перечислены различные параметры, определенные в
настоящее время.
Таблица 10.7. Параметры IP
Класс Номер Длина Описание
параметра параметра
О 0 Конец списка параметров. Занимает только 1 октет
и не сопровождается октетом длины. Используется
в том случае, если конец списка параметров
не совпадает с концом заголовка
О 1 Нет операции. Занимает только 1 октет и не
сопровождается октетом длины. Используется
для выравнивания октетов в списке параметров
О 2 11 Базовая безопасность
О 3 Перем. Свободная маршрутизация от источника.
Дейтаграмма IP маршрутизируется на основании
данных, предоставленных отправителем
О 5 Перем. Расширенная безопасность
О 7 Перем. Сохранение маршрута. Используется
для отслеживания маршрута, по которому
передается дейтаграмма IP
Класс Номер Длина Описание
параметра параметра
0 8 4 Идентификатор потока. Используется для пересылки
16-разрядного идентификатора потока SATNET
в сетях, не поддерживающих концепцию потоков.
В настоящее время считается устаревшим
0 9 Перем. Жесткая маршрутизация от источника.
Дейтаграмма IP маршрутизируется на основании
данных, предоставленных отправителем
2 4 Перем. Временная пометка. Используется для регистрации
времени прохождения по маршруту. В настоящее
время является единственным параметром,
определенным в категории отладки и сбора
информации
В следующих разделах различные типы параметров IP описаны более
подробно.
Конец списка параметров и выравнивание
Только два из определенных в настоящее время параметров состоят из одного
октета — конец списка параметров и отсутствие операции. Конец списка
параметров (см. табл. 10.7) представляет собой однооктетный параметр,
заполненный нулями (рис. 10.13).
00000000
Тип = 0
Рис. 10.13. Конец списка параметров
Данный параметр обозначает конец списка параметров, который может и не
совпадать с концом заголовка, обозначенным полем длины заголовка (IHL).
Он завершает весь список параметров, но не каждый параметр по отдельности,
и используется только в том случае, если конец списка параметров не приходится
на 32-разрядную границу.
На рис. 10.14 изображена структура однооктетного параметра-заполнителя.
00000001
Тип = 1
Рис. 10.14. Заполнитель
Включение заполнителя между параметрами обеспечивает выравнивание па-
чала следующего параметра по 32-разрядной границе.
Безопасность
Параметр безопасности используется хостами для пересылки информации о
безопасности, дроблении (compartmentation), ограничений доступа и закрытых
пользовательских групп. Существует две разновидности параметра безопасности:
О Базовая безопасность. Используется для обозначения стандартных уровней:
конфиденциальная, секретная, открытая информация и т. д.
О Расширенная безопасность. Определяет дополнительные атрибуты
безопасности в соответствии с потребностями военных организаций.
Ниже эти параметры описаны более подробно.
Базовая безопасность
На рис. 10.15 изображена структура параметра базовой безопасности,
характеризуемого кодом типа 130. Коды соответствуют различным организациям,
устанавливающим разные правила обработки дейтаграмм IP. К числу таких организаций
относятся Агентство национальной безопасности США, Центральное
разведывательное управление и Министерство энергетики.
Тип Ограничения Код
параметра = 130 Длина Безопасность доступа управления
параметра = 11 Дробление передачей
i 1 1—^—i—^—i—^—i—^—i
10000010 00001011 SSS...SSS ССС...ССС ННН...ННН ТСС
Ц4-] ' —I \ '—\ ' \,—' \ '
|| К—16 бит >\< 16 бит—Ж— 16 бит »И 24 бита-Н
Флаг '
копирования
11
Класс '
параметра
I
Номер
параметра
Рис. 10.15. Структура параметра базовой безопасности
Поле безопасности имеет длину 16 бит и определяет один из 16 уровней
безопасности, 8 из которых зарезервированы для использования в будущем. Коды
безопасности перечислены в табл. 10.8. Некоторые из кодов используются только
во внутренней работе организаций, отвечающих за безопасность.
Таблица 10.8. Коды безопасности для параметров IP
Код Описание
00000000 00000000 Открытая информация
11110001 00110101 Конфиденциальная информация
01111000 10011010 EFTO
10111100 01001101 ММММ
Код Описание
01011110 00100110 PROG
10101111 00010011 Информация для служебного пользования
11010111 10001000 Секретная информация
01101011 11000101 Совершенно секретная информация
00110101 11100010 Зарезервировано на будущее
10011010 11110001 Зарезервировано на будущее
01001101 01111000 Зарезервировано на будущее
00100100 10111101 Зарезервировано на будущее
00010011 01011110 Зарезервировано на будущее
10001001 10101111 Зарезервировано на будущее
11000100 11010110 Зарезервировано на будущее
11100010 01101011 Зарезервировано на будущее
Поле дробления имеет длину 16 бит. Если передаваемая информация не
дробится, поле состоит из одних нулей. За информацией о других значениях поля
обращайтесь в Разведывательное управление Министерства обороны США.
Поле ограничений доступа имеет длину 16 бит. Значения представляют
собой алфавитно-цифровые диграфы, определенные в руководстве DIAM 65-19,
«Standard Security Markings».
Поле кода управления передачей ТСС (Transmission Control Code) имеет
длину 24 бита; оно предназначено для разделения трафика и определения
управляемых групп. Значения ТСС представляются в виде триграфов. За
информацией о значениях этого поля обращайтесь в Разведывательное управление
Министерства обороны США.
Расширенная безопасность
Параметр расширенной безопасности используется для определения
дополнительных требований к безопасности (рис. 10.16) и характеризуется кодом типа 133.
Некоторые коммерческие маршрутизаторы не поддерживают параметры
безопасности IP.
Сохранение маршрута
Если отправитель включает в дейтаграмму параметр сохранения маршрута, то
в дейтаграмме сохраняется IP-адрес каждого маршрутизатора, участвующего
в доставке дейтаграммы. Таким образом, вместе с дейтаграммой получатель
принимает список всех маршрутизаторов, «посещенных» дейтаграммой.
Параметр сохранения маршрута начинается с октета, содержащего код типа 131
(рис. 10.17). Во втором октете хранится длина всего параметра. В поле данных
содержится список IP-адресов. Третий октет параметра содержит указатель на
следующий обрабатываемый элемент списка. Смещение указателя определяется
относительно начала параметра, и минимальное значение указателя равно 4.
Если указатель больше длины параметра, хранящейся во втором октете, в поле
данных не осталось пустых элементов; иначе говоря, список IP-адресов полон.
При заполненном списке маршрутизаторы пересылают дейтаграмму без
добавления новых элементов в список.
Тип параметра = 133 Длина параметра Код формата
i 1 г^ 1 ^ 1
10000101 Дополнительная информация
"Т]—;— безопасности
I—и-] 1 1 1 \ 1
Флаг
копирования!,
Класс
параметра I
Номер
параметра
Рис. 10.16. Структура параметра расширенной безопасности
Сохраненные
К 8 бит НИ 8 бит ►К-8бит-Н/^^' Данные ^\^^
I 1 1 Г"и гА/ | |
IP- IP- IP-
Тип параметра = 131 длИНа параметра указатель адрес адрес - адрес
ЦЯЦХЮП, 12 N
I mi 1 L_|_J 1 by_J 1
Флаг
копирования ± | |
Класс
параметра
T
Номер
параметра
Рис. 10.17. Параметр сохранения маршрута
Если значение указателя не превышает длину параметра, значит, список
не заполнен и в нем имеются пустые элементы. Маршрутизатор вставляет свой
IP-адрес в позицию, обозначенную указателем, и увеличивает значение указателя
на 4 (размер IP-адреса в октетах). В дейтаграмме сохраняется IP-адрес сетевого
интерфейса маршрутизатора, через который пересылалась дейтаграмма.
Использование сохраненной информации о маршрутизаторах должно быть
согласовано между отправителем и получателем. Отправитель включает в
дейтаграмму параметр сохранения маршрута с количеством элементов,
достаточных для сохранения адресов маршрутизаторов. Получатель должен быть готов
обработать список IP-адресов, хранящийся в поле данных. Если получатель не
собирается обрабатывать сохраненные данные, он игнорирует накопленную
информацию.
Свободная и жесткая маршрутизация от источника
При использовании маршрутизации от источника отправитель указывает путь,
по которому дейтаграмма должна пересылаться к получателю. Путь представля-
ется в виде списка IP-адресов посещаемых маршрутизаторов. Обычно маршрут
строится маршрутизаторами на основании оптимального пути, определяемого
протоколами маршрутизации. Но маршрутизация от источника жестко диктует
путь дейтаграммы к получателю. Средства маршрутизации от источника могут
пригодиться для тестирования пути даже тогда, когда вы знаете, что в обычной
ситуации маршрутизатор выберет другой путь. Кроме того, они предоставляют
дополнительную свободу действий при маршрутизации дейтаграмм в сетях,
заведомо работающих надежно. К недостаткам маршрутизации от источника
следует отнести то, что топология сети и состав маршрутизаторов, используемых
при пересылке дейтаграммы, должны быть известны заранее. В сложных сетях
определение топологии и реального пути дейтаграмм IP может оказаться
непростой задачей.
Существует две разновидности маршрутизации от источника:
О жесткая маршрутизация от источника;
О свободная маршрутизация от источника.
При установке параметра жесткой маршрутизации от источника (рис. 10.18)
отправитель указывает последовательность IP-адресов, которые обязательно
должны использоваться в процессе пересылки дейтаграммы. Путь между двумя
соседними IP-адресами в списке обязательно должен проходить в границах
одного физического сетевого сегмента. Один физический сегмент включает только
устройства уровней 1 (повторители) и 2 (мосты), но не уровня 3
(маршрутизаторы). Если маршрутизаторы не могут обеспечить жесткое выполнение
последовательности IP-адресов, дейтаграмма отвергается.
Данные жесткой
маршрутизации
Ы 8 бит НИ 8 бит ►+*- 8 бит-Н^"" от источника ^\
i 1 1 г^л Л | |
IP- IP- IP-
ТИП "шш= 1 | Длина паРаметРа Указатель адрес адрес - адрес
Флаг у
копирования
Т
Класс
параметра
Т
Номер
параметра
Рис. 10.18. Жесткая маршрутизация от источника
В режиме свободной маршрутизации от источника (рис. 10.19) отправитель
тоже передает серию IP-адресов, которые должны использоваться при пересылке
дейтаграммы. Тем не менее путь между двумя последовательными IP-адресами
может содержать произвольное количество маршрутизаторов. На рис. 10.20
продемонстрированы различия между жесткой и свободной маршрутизацией от
источника.
Данные свободной
маршрутизации
И 8 бит Ж 8 бит Н<- 8 бит -»/^ от источника \.
i 1 1 г—п—г^-г—п
- I IP- I IP- I I IP- I
Тип параметра - 131 длина параметра Указатель адрес адрес - адрес
„j.Mv.Uyy.lJ 12 N
—+-I—I 1 > 1 1 [ArJ '
Флаг у
копирования
Т
Класс
параметра
Т
Номер
параметра
Рис. 10.19. Свободная маршрутизация от источника
Как при жесткой, так и при свободной маршрутизации от источника
маршрутизаторы перезаписывают исходные адреса в параметре своими локальными
IP-адресами. Когда дейтаграмма добирается до получателя, список адресов
содержит фактически пройденный маршрут. Такой же список был бы получен
при использовании параметра сохранения маршрута. По этой причине
свободная маршрутизация от источника также называется свободной маршрутизацией
от источника с сохранением маршрута (LSRR, Loose Source and Record Route),
а жесткая маршрутизация от источника также называется жесткой
маршрутизацией от источника с сохранением маршрута (SSRR, Strict Source and Record
Route).
Анализируя форматы данных при сохранении маршрута, жесткой и
свободной маршрутизации от источника на рис. 10.17—10.19, обратите внимание на их
сходство. Поле указателя выполняет функции индекса в списке IP-адресов, а поле
длины определяет максимальное количество элементов в списке. Завершая
обработку IP-адреса, маршрутизатор перемещает индекс-указатель к следующему
элементу. Так как длина IP-адреса равна 4 октетам, поле указателя
увеличивается на 4 и тем самым перемещается к следующему элементу.
Если значение указателя превышает длину параметра, значит, список
IP-адресов полностью обработан или его емкость исчерпана. В этом случае
дейтаграмма IP маршрутизируется стандартным образом по содержимому таблицы
маршрутизации, хранящейся на маршрутизаторе; информация в полях параметра
при этом не используется. Если указатель меньше длины параметра либо равен
ей, обработка списка IP-адресов еще не завершена (рис. 10.21). В этом случае
маршрутизатор использует указатель для определения адреса следующего
маршрутизатора, на который следует переслать дейтаграмму. Затем маршрутизатор
записывает IP-адрес сетевого интерфейса, через который дейтаграмма была
направлена, в элемент списка, определяемый значением указателя. Таким образом
сохраняется информация о фактическом маршруте, по которому пересылалась
дейтаграмма. Указатель перемещается к следующему элементу списка
IP-адресов, для чего он увеличивается на 4.
Жесткая маршрутизация
от источника
£ 200.1.1.0 <^ £ 201.1.1.0 <}
7*200.1.1.1 .Х^оТ/1.1.1 >^202.1.1. l\
[Т I I I I ^^ \ I Т\Г 202.1.1.0 <
J™ Длина Указ. 200.1.1.1 201.1.1.1 202.1.1.1 203.1.1.1 204.1.1.1 \Ч_^У^_У
/ "/203.1.1.1
Г 204.1.1.0 j П$ J—Г 203.1.1.0 3 ^^^^^
^-^-^~^ 204.1.1.1 ^С^^^
^^-^Свободная маршрутизация
~^^ от источника
^^^ J? 200.1.1.0 ^ £ 201.1.1.0 «I
^""^ 200.1.1.1 201.1.1.1^^202.1.1.l\
ГГ-п | | | -^-г | Г202.1.1.0З
J™ Длина Указ. 201.1.1.1 202.1.1.1 204.1.1.1 V_^v^--^
/ у/203.1.1.1
Г 204.1.1.0 j ОТ)—Г 203.1.1.0 3
204.1.1.1
Рис. 10.20. Сравнение жесткой и свободной маршрутизации
Поле данных содержит серию IP-адресов, каждый из которых представлен
4 октетами. Если значение указателя больше длины параметра, то исходный
маршрут пуст, а сохраненный маршрут полон. Дальнейшая маршрутизация
выполняется на основании поля адреса получателя в дейтаграмме IP.
Тип Длина Указатель IP-адрес IP-адрес IP-адрес
параметра параметра 15 4 1 2 3
14 1 >|< 1 >|< 1 ь|< 4 ►[< 4 »|< 4 —>|
^ октет октет октет *"'"* октета *"'"* октета *"'"* октета ^\^**
Указатель < длина параметра ^^^^
^__^ I ~\
Тип Длина Указатель IP-адрес IP-адрес IP-адрес
параметра параметра 15 16 1 2 3
L4 ^ ъ|< ^ >|< ^ ь|< 4 ь|^ 4 >|< 4 Ы
октет октет октет *"'"* октета ^'"* октета *"'"*октета *"'
Указатель > длина параметра
Рис. 10.21. Использование полей указателя и длины параметра
Временная пометка Интернета
Параметр временной пометки Интернета (Internet timestamp) используется для
регистрации времени получения дейтаграммы IP на каждом из промежуточных
маршрутизаторов. В дейтаграмме записывается IP-адрес и время получения,
измеряемое в миллисекундах с полуночи по универсальному времени UTC (Universal
Time Coordinated). Время UTC, ранее называвшееся гринвичским временем
(GMT, Greenwich Mean Time), соответствует времени на нулевой долготе.
Кроме собственно времени, параметр временной пометки также позволяет
записывать IP-адреса маршрутизаторов. На рис. 10.22 представлен формат
параметра временной пометки Интернета.
Тип параметра равен 68, а длина определяется суммарным количеством
октетов во всех полях. Каждый элемент в поле данных содержит две 32-разрядные
величины: IP-адрес маршрутизатора и время.
Длина параметра задает размер области, зарезервированной в поле данных
для IP-адресов и временных пометок. Указатель выполняет функции индекса
в поле данных и указывает на следующий свободный элемент. Наименьшее
допустимое значение указателя равно 5. Если значение указателя превышает
длину параметра, значит, область данных полностью заполнена сохраненной
информацией. Отправитель должен создать параметр временной пометки
достаточно большим, чтобы в нем поместились все предполагаемые данные. В про-
цессе пересылки дейтаграммы IP-размер параметра остается неизменным.
Отправитель должен инициализировать область данных нулями.
012345678 9 10 1112 13 14 15 16 17 18 19 20 2122 23 24 25 26 27 28 29 30 31
I i i i i i i i | i i i i i i i i i i i i i i i j ii | i i i i |
I тип параметра F8) | Длина параметра | Указатель [п^еиие1 флаги 1
IP-адрес 1 Т
Время 1
Поле
данных
• • •
I I JL
Рис. 10.22. Параметр временной пометки Интернета
Поле переполнения имеет длину 4 бита; в нем хранится количество
маршрутизаторов, для которых временные пометки не были сохранены из-за
недостаточного размера поля данных. Максимальное значение поля переполнения
равно 15. Если в области данных не хватает места для сохранения полных данных
временной пометки или счетчик переполнения превышает 15, дейтаграмма IP
считается ошибочной и уничтожается. В любом из этих случаев отправителю
посылается сообщение ICMP с информацией о проблеме с параметрами.
Поле флагов управляет форматом поля данных. Оно может содержать три
разных кода, перечисленных в табл. 10.9.
Таблица 10.9. Значения поля флагов в параметре временной пометки
Значение Описание
0 В области данных хранится только время; каждая пометка представлена
32-разрядной величиной. IP-адреса не сохраняются в области данных
1 Перед каждой временной пометкой хранится IP-адрес узла (маршрутизатора),
на котором она была зафиксирована. Этот формат представлен на рис. 10.20
2 Отправитель заносит в область данных IP-адреса. Модуль IP на маршрутизаторе
регистрирует временные пометки только в том случае, если IP-адрес
маршрутизатора совпадает со следующим заданным IP-адресом
Значения временных пометок выравниваются по правому краю и измеряются
в миллисекундах, прошедших с полуночи в формате UTC. Если время в
миллисекундах неизвестно или не может быть вычислено по отношению к полуночи
по UTC, в область данных может быть вставлено произвольное значение
(например, локальное время), но при этом старший бит поля временной пометки
должен быть равен 1. Установка старшего бита является признаком
нестандартного формата времени.
Маршрутизаторы могут быть настроены на местное время, а их часы могут
быть не синхронизированы. Из-за различий в показаниях часов на
маршрутизаторах значения временной пометки следует считать приближенными.
Параметр временной пометки не копируется при фрагментации и переносится
только в первый фрагмент дейтаграммы IP.
Сетевой порядок байтов
Физический уровень передает биты в том порядке, в котором они были
получены от верхних уровней. Однако порядок хранения битов, из которых состоят
передаваемые данные, может отличаться на разных компьютерах. Например, не
все компьютеры хранят 32-разрядные целые величины (такие, как IP-адреса)
в одинаковом формате. На одних компьютерах младшие байты 32-разрядного
числа хранятся в младших адресах памяти. Также встречается и другой вариант,
при котором в младших адресах хранятся старшие байты числа.
На некоторых компьютерах, особенно на более старых 16-разрядных машинах,
данные делятся на 16-разрядные блоки. При этом младшие байты хранятся в
младших адресах памяти, но внутри 16-разрядного слова байты меняются местами.
Из-за потенциальных различий в порядке следования байтов данные не
могут напрямую копироваться между узлами IP. Протоколы TCP/IP определяют
сетевой стандартный порядок байтов, используемый для хранения двоичных
данных в межсетевых пакетах. Каждый узел IP при представлении данных в
пакетах должен использовать сетевой стандартный порядок байтов. Перед
отправкой пакета узел IP приводит локальное представление данных к сетевому порядку
байтов, а при получении пакета IP сетевой порядок преобразуется к локальному
представлению для данного узла. В большинстве реализаций TCP/IP
преобразование между сетевым стандартным порядком байтов и специфическим
представлением конкретного узла выполняется на уровне прикладных интерфейсов
TCP/IP и вспомогательных программных модулей.
В сетевом стандартном порядке байтов сначала передаются старшие байты.
Это означает, что в пересылаемом пакете сначала идут старшие байты целых
чисел, а младшие байты находятся ближе к концу пакета.
Структура заголовков протокола TCP/IP часто представляется с разделением
на 32-разрядные блоки (см. рис. 10.5). Нормальный порядок передачи октетов
заголовка соответствует нормальному порядку чтения (слева направо). Так, на
рис. 10.23 октеты пересылаются в порядке их нумерации.
0 12 3
01234567890123456789012 34 5 6 7 8 9 0 1
I—I—i—i—i—i—i—i—|—I—I—i—i—i—i—ьч—i—i—i—i—i—i—\—\—I—i—i—i—i—i—нЧ
12 3 4
—i—i—i—i—i—i—i——i—i—i—i—i—i—i——i—i—*—i—i—I—i——i—i 1 1—i—i—
5 6 7 8
—I—I—I—I—I—I—I——I—I—I—I—I—I—I——I—I—I—I—i—I—I——I—I 1 1—I—I—
9 10 11 12
I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—|—I—I—I—I—I—I—I—I
Рис. 10.23. Порядок пересылки байтов
Если октет представляет числовую величину, крайний левый бит на диаграмме
соответствует старшему биту числа. Так, на рис. 10.24 изображено двоичное
представление десятичного числа 170.
0 1234567
| I I I I I I I I
10 10 10 10
I I I I I I I I I
Рис. 10.24. Старшинство битов
Во всех представлениях числовых величин, состоящих из нескольких
октетов, крайний левый бит всего поля является старшим. При передаче величины,
состоящей из нескольких октетов, старший октет передается первым.
Трассировка IP
В этом разделе приводится расшифровка пакетов IP, сохраненных при реальной
работе сети. Перед анализом представленных данных стоит кратко просмотреть
предыдущие разделы, в которых описывался смысл полей IP. На рис. 10.25
изображена трассировка первых 50 пакетов сеанса Telnet. В настоящей главе
рассматривается только протокол IP, поэтому ниже будут описаны лишь некоторые
пакеты из приведенной трассировки Telnet.
Обратите внимание: первые три пакета в этом сеансе Telnet являются
пакетами ARP. Применение протокола ARP для разрешения аппаратных адресов
рассматривалось в главе 5.
Заголовок Ethernet во всех дейтаграммах IP содержит значение 800 (шести.),
означающее, что кадр Ethernet инкапсулирует дейтаграмму IP.
Поле протокола в заголовках IP всех дейтаграмм равно 6. Это значение
указывает на то, что в дейтаграмме IP инкапсулируется пакет TCP.
Первая дейтаграмма IP: пакет IP с полем флагов = О, MF = О, DF = О
На рис. 10.26 изображена первая дейтаграмма IP (пакет № 4 на рис. 10.25),
отправленный с адреса 199.245.180.44 на хост Telnet 199.245.180.201. Анализ
заголовка IP показывает следующие значения полей (перевод названий на рисунке
указан в скобках):
О Version (версия): 4;
О Header Length (длина заголовка в 32-разрядных блоках): 5;
О ToS: 0 (приоритет: обычный, нормальная задержка, нормальная пропускная
способность, нормальная надежность);
О Total Length (общая длина): 44;
О Identification (идентификатор): 1;
О Flags (флаги): 0, DF=0, MF=0 (фрагментация разрешена, последний фрагмент);
О Fragment offset (смещение фрагмента): 0;
О Time to Live (срок жизни): 100 секунд;
О Protocol (протокол): 6 (TCP);
No. Source Destination Layer Size Summary
1 0000C024282D FFFFFFFFFFFF arp 0064 Req by 144.19.74.44 for 144.19.74
2 0000C024282D FFFFFFFFFFFF arp 0064 Req by 144.19.74.44 for 144.19.74
3 0000C0A20F8E 0000C024282D arp 0064 Reply 144.19.74.201=0000C0A20F8E
4 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET SYN
5 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK SYN
6 0000C024282D 0000C0A20F8E telnt 0069 Cmd=Do; Code=Echo; Cmd=Do; Code=S
7 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
8 0000C0A20F8E 0000C024282D telnt 0064 Cmd=Do; Code=;
9 0000C024282D 0000C0A20F8E telnt 0064 Cmd=Won't; Code=;
10 0000C0A20F8E 0000C024282D telnt 0067 Cmd=Will; Code=Echo; Cmd=Will; Co
11 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
12 0000C024282D 0000C0A20F8E telnt 0072 Cmd=Do; Code=Suppress Go Ahead; С
13 0000C0A20F8E 0000C024282D telnt 0070 Cmd=Do; Code=Term1nal Type; Cmd=D
14 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
15 0000C024282D 0000C0A20F8E telnt 0072 Cmd=Will; Code=Terminal Type; Cmd
16 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
17 0000C0A20F8E 0000C024282D telnt 0064 Cmd=Subnegotiation Begin; Code=Te
18 0000C024282D 0000C0A20F8E telnt 0071 Cmd=Subnegotiat1on Begin; Code=Te
19 0000C0A20F8E 0000C024282D tcp 0064 PortiTELNET ---> 6295 ACK
20 0000C0A20F8E 0000C024282D telnt 0067 Cmd=Do; Code=Echo; Cmd=W1ll; Code
21 0000C024282D 0000C0A20F8E telnt 0069 Cmd=Won't; Code=Echo; Cmd*Don't;
22 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
23 0000C0A20F8E 0000C024282D telnt 0104 Data»..Linux 1.3.50 (Itreecl.Itre
24 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
25 0000C0A20F8E 0000C024282D telnt 0064 Data»..
26 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
27 0000C0A20F8E 0000C024282D telnt 0073 Data=ltreecl login:
28 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
29 0000C024282D 0000C0A20F8E telnt 0064 Data=u
30 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
31 0000C0A20F8E 0000C024282D telnt 0064 Data=u
32 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
33 0000C024282D 0000C0A20F8E telnt 0064 Data=s
34 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
35 0000C0A20F8E 0000C024282D telnt 0064 Data*s
36 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
37 0000C024282D 0000C0A20F8E telnt 0064 Data=e
38 0000C0A20F8E 0000C024282D tcp 0064 PortiTELNET ---> 6295 ACK
39 0000C0A20F8E 0000C024282D telnt 0064 Data«e
40 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
41 0000C024282D 0000C0A20F8E telnt 0064 Data=r
42 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
43 0000C0A20F8E 0000C024282D telnt 0064 Data*r
44 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
45 0000C024282D 0000C0A20F8E telnt 0064 Data*l
46 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
47 0000C0A20F8E 0000C024282D telnt 0064 Data=l
48 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
49 0000C024282D 0000C0A20F8E telnt 0064 Data»..
50 0000C0A20F8E 0000C024282D tcp 0064 PortiTELNET ---> 6295 ACK
Рис. 10.25. Трассировка сеанса Telnet
О Checksum (контрольная сумма): OxAlAF (правильная);
О Source IP address (IP-адрес отправителя): 144.19.74.44;
О Destination IP address (IP-адрес получателя): 144.19.74.201.
О Поле версии, равное 4, означает, что дейтаграмма IP соответствует стандарту
IPv4.
Длина заголовка равна пяти 32-разрядным блокам B0 октетов). Это
минимальный размер, а следовательно, дейтаграмма не содержит параметров.
Общая длина дейтаграммы равна 44 октетам. Заголовки Ethernet и
контрольная сумма занимают 18 октетов; суммирование этих двух величин дает размер
пакета Ethernet — 62 октета. Чтобы размер кадра Ethernet был выровнен до
64 октетов, к нему добавляются два дополнительных октета.
Packet Number : 4 6:38:38 РМ
Length : 64 bytes
ether: ==================== Ethernet Datalink Layer ====================
Station: 00-90-C0-24-28-2D > 00-00-C0-A2-0F-8E
Type: 0x0800 (IP)
ip: «===================== internet Protocol =======================
Station:144.19.74.44 >144.19.74.201
Protocol: TCP
Version: 4
Header Length C2 bit words): 5
Precedence: Routine
Normal Delay, Normal Throughput, Normal Reliability
Total length: 44
Identification: 1
Fragmentation allowed, Last fragment
Fragment Offset: 0
Time to Live: 100 seconds
Checksum: 0xAlAF(Valid)
tcp: ■«■««■■««■*■■»« Transmission Control Protocol ■■■■■■■■■■■■■■■■■
Source Port: 6295
Destination Port: TELNET
Sequence Number: 2S784320
Acknowledgement Number: 0
Data Offset C2-bit words): 6
Window: 4096
Control Bits: Synchronize Sequence Numbers (SYN)
Checksum: 0x4A87(Valid)
Urgent Pointer: 0
0pt1on:MAXIMUM SEGMENT SIZE
Option Length: 4
Maximum Segment Size : 1024 %/ ,
° Version
Ethernet Header Ethemet Jype |ndjcate§ | IHJ- T?S
T IP encapsulation a ITT
0{ОО 00 CO A2 OF 8E 00 00 C0 24 28 2DF8~ё^1^К99^ | $(-. .E.
10:(QO 2CXO0 0lX®Q QQffiXofoAl AFX90 13 4A 2С)(^Тз | d J...
20: 4A|c9yi8| 97 00 |l7 {01 J89 7g| 00 00 00H0 00 60 |б2^I J p
30 :(l0|0Q 4A|87 Qq|oq|02 [g4 04| 00^0§)| I | I. . J
^ I It * I II Deft,nation
Total Length tti Header Address
1 IT Checksum| у
Identification Protocol (TCP) Source
1 1 Address I
DF*0 Ethemet T
MF«0 Pad TCP
Fragment offset=0
Рис. 10.26. Первая дейтаграмма IP
Поле идентификатора в дейтаграмме IP равно 1, а срок жизни — 100
секундам. Последнее значение используется по умолчанию хостом 199.245.180.44 для
всех отправляемых дейтаграмм.
Поле ToS равно 0; это означает, что дейтаграмма IP должна передаваться
с обычным приоритетом, нормальной задержкой, нормальной пропускной
способностью и нормальной надежностью.
Поле флагов фрагментации равно 0; следовательно, флаги DF и MF тоже
равны 0. Это означает, что дейтаграмма может фрагментироваться, а текущий
фрагмент является последним. Нулевое смещение фрагмента указывает, что
данный фрагмент также является и первым. Дейтаграмма, которая одновременно
является первым и последним фрагментом, не имеет других фрагментов —
следовательно, перед нами полная нефрагментированная дейтаграмма.
В поле типа протокола хранится код 6. Следовательно, дейтаграмма IP
используется для пересылки сообщений TCP.
Контрольная сумма равна A1AF (шести.). Это значение подтверждает
правильность принятых данных.
Вторая дейтаграмма IP: ответный пакет IP с полем флагов = О,
MF = О, DF = О
На рис. 10.27 изображена вторая дейтаграмма IP (пакет № 5 на рис. 10.25),
отправленная в ответ на дейтаграмму IP, описанную в предыдущем разделе.
Дейтаграмма отправляется с хоста Telnet (адрес 199.245.180.201) клиенту Telnet
A99.245.180.44). Анализ заголовка IP показывает следующие значения полей
(перевод см. ранее):
О Version: 4;
О Header Length (в 32-разрядных блоках): 5;
О ToS: 0 (приоритет: обычный, нормальная задержка, нормальная пропускная
способность, нормальная надежность);
О Total Length: 44;
О Identification: 21410;
О Flags: 0, DF=0, MF=0 (фрагментация разрешена, последний фрагмент);
О Fragment offset: 0;
О Time to Live: 64 секунд;
О Protocol: 6 (TCP);
О Checksum: 0x720E (правильная);
О Source IP address: 144.19.74.201;
О Destination IP address: 144.19.74.44.
Поле версии равно 4, а значит, что дейтаграмма IP соответствует стандарту IPv4.
Длима заголовка равна пяти 32-разрядным блокам B0 октетов). Это
минимальный размер, а следовательно, дейтаграмма не содержит параметров.
Общая длина дейтаграммы равна 44 октетам. Заголовки Ethernet и
контрольная сумма занимают 18 октетов; суммирование этих двух величин дает
размер пакета Ethernet — 62 октета. Чтобы размер кадра Ethernet был выровнен
до 64 октетов, к нему добавляются два дополнительных октета.
Поле идентификатора в дейтаграмме IP равно 21410. Обратите внимание:
идентификатор отличен от того, который передавался клиентом Telnet. Он
представлен относительно большим числом, потому что еще до начала текущего
сеанса хост Telnet успел отправить много дейтаграмм IP.
Другая интересная подробность: срок жизни тоже изменился и равен 64
секундам. Это значение используется по умолчанию хостом 199.245.180.201 для всех
отправляемых дейтаграмм IP. Оно отличается от значения, которое
использовалось клиентом 199.245.180.44. В разных реализациях TCP/IP используются
разные исходные значения TTL.
Packet Number : 5 6:38:38 PM
Length : 64 bytes
ether: ==================== Ethernet Datalink Layer ====================
Station: 00-00-C0-A2-0F-8E > 00-00-C0-24-28-2D
Type: 0x0800 (IP)
ip: ======================= internet Protocol =======================
Station:144.19.74.201 >144.19.74.44
Protocol: TCP
Version: 4
Header Length C2 bit words): 5
Precedence: Routine
Normal Delay, Normal Throughput, Normal Reliability
Total length: 44
Identification: 21410
Fragmentation allowed, Last fragment
Fragment Offset: 0
Time to Live: 64 seconds
Checksum: 0x720E(Valid)
tcp: ================= Transmission Control Protocol =================
Source Port: TELNET
Destination Port: 6295
Sequence Number: 1508167651
Acknowledgement Number: 25784321
Data Offset C2-bit words): 6
Window: 30719
Control Bits: Acknowledgement Field is Valid (ACK)
Synchronize Sequence Numbers (SYN)
Checksum: 0xB8AE(Valid)
Urgent Pointer: 0
Option:MAXIMUM SEGMENT SIZE
Option Length: 4
Maximum Segment Size : 1024
Version |HL
T 4
Ethernet Header I T
A Ether Type indicates IP encapsulation I TOS
0:(O0 00 C0 24 28 2D 00 00 C0 A2 0F 8E (g8*0l^]^0) | ...$(- E.
10: @0 2f)(S3 A2J(g0 0(^(jl0)(QG2 0^(90 13 4A C9)(g0 lj) | . ,S. . .@.r. . .J. . .
20: Й/ф<МH 17 18 97 59 E4 CF E3 01 89 70 01 60 \l$\ | J Y p.' .
30: G7 FF B8 AE 00 00 02 04 04 0©jff2 65) |w re
1 I ▼[▼ Г ▼
▼ w I TTL Header I Source
Total Length T 1 Checksum Address
Identification I T I
T Protocol (TCP) 1 f
DF_0 Ethernet Destination
РяН Address
MF=0 Pad
Fragment ofifset=0 X
TCP
Рис. 10.27. Вторая дейтаграмма IP
Поле ToS равно 0; это означает, что дейтаграмма IP должна передаваться
с обычным приоритетом, нормальной задержкой, нормальной пропускной
способностью и нормальной надежностью.
Поле флагов фрагментации равно 0; следовательно, флаги DF и MF тоже
равны 0. Это означает, что дейтаграмма может фрагментироваться, а текущий
фрагмент является последним. Нулевое смещение фрагмента указывает, что
данный фрагмент также является и первым. Дейтаграмма, которая одновременно
является первым и последним фрагментом, не имеет других фрагментов —
следовательно, перед нами полная нефрагментированная дейтаграмма.
Packet Number : б 6:38:38 РМ
Length : 69 bytes
ether: ===ssssssssssssrsssr Ethernet Oatalink Layer =«==«===========«
Station: 00-00-C0-24-28-2D > 00-00-C0-A2-0F-8E
Type: 0x0800 (IP)
ip; sssssssssssssssssssssss internet Protocol ====»===»========«===«=
Station:144.19.74.44 >144.19.74.201
Protocol: TCP
Version: 4
Header Length C2 bit words): 5
Precedence: Routine
Normal Delay, Normal Throughput. Normal Reliability
Total length: 49
Identification: 2
Fragmentation allowed. Last fragment
Fragment Offset: 0
Time to Live: 100 seconds
Checksum: 0xAlA9(Valid)
tcp: и«1ш»1«г18квв81 Transmission Control Protocol ■«■•■«»«•■■■■■■
Source Port: 6295
Destination Port: TELNET
Sequence Number: 25784321
Acknowledgement Number: 1508167652
Data Offset C2-b1t words): 5
Window: 4096
Control Bits: Acknowledgement Field 1s Valid (ACK)
Push Function Requested (PSH)
Checksum: 0xl8A9(Val1d)
Urgent Pointer: 0
telnt: ■■■■■■■■■■■■■■■■■■■■■■■■ Telnet Protocol ■■■■■■■■■■■■■««■■■■■■■■
Command: Do
Option Code: Echo
Command: Do
Option Code: Suppress Go Ahead
Command: Will
Option Code:
Ether Type indicates IP encapsulation
* Version
Ethernet Header A IHL
t JtT
0: @0 00 C0 A2 0F 8E 00 00 C0 24 28 2D@8 0O)(j§@0J | $(-..E.
10: @0 3l)@0^2X00 00X64X06%M ASJX98 13 4A 2СХ?еТз | . 1. . . . d J . . .
20: 4AJC9V18 97 88 17 lei [89 78|01 59| E4 CF E4 50118) |J p.Y...P.
30: (l0 00 18 A9 00 00JFF[FD 01 FF FDI 03 FF FB IF lee) |
40: £00! I 1 1 J T ▼ |.
—Г Source Destination
▼ \ I \ 1 AddreM Address
Total Length ▼
"^^ Header Checksum
ТУ 1
Identification Protocol (TCP) TJp
▼ T
DFs° Telnet
MF*0
Fragment offset=0
Рис. 10.28. Третья дейтаграмма IP
В поле типа протокола хранится код 6. Следовательно, дейтаграмма IP
используется для пересылки сообщений TCP.
Контрольная сумма равна 720Е (шести.). Это значение подтверждает
правильность принятых данных.
Третья и четвертая дейтаграммы IP: анализ идентификаторов
На рис. 10.28 и 10.29 показаны две дейтаграммы IP, переданные между
клиентом Telnet по адресу 199.245.180.44 и хостом Telnet по адресу 199.245.180.201.
Packet Number : 7 6:38:38 РМ
Length : 64 bytes
ether: ==================== Ethernet Datalink Layer ====================
Station: 00-00-C0-A2-0F-8E > 00-00-C0-24-28-2D
Type: 0x0800 (IP)
Station:144.19 74.201 >144.19.74.44
Protocol: TCP
Version: 4
Header Length C2 bit words): 5
Precedence: Routine
Normal Delay, Normal Throughput, Normal Reliability
Total length: 40
Identification: 21411
Fragmentation allowed. Last fragment
Fragment Offset: 0
Time to Live: 64 seconds
Checksum: 0x7211(Valid)
tcp: ================= Transmission Control Protocol =================
Source Port: TELNET
Destination Port: 6295
Sequence Number: 1508167652
Acknowledgement Number: 25784330
Data Offset C2-bit words): 5
Window: 30710
Control Bits: Acknowledgement Field is Valid (ACK)
Checksum: 0xCEB7(Valid)
Urgent Pointer: 0
Ether Type indicates IP encapsulation
T Version
A IHL
Ethernet Header T A TOS
0:@0 00 C0 24 28 20 00 00 C0 A2 0F 8Е(УН=Ю]И^П^ I•••$(- E.
10:f00 28jgTA?^H 00у5У0б)[5ГТ1У90 13 4A~C?)(90 13 | . (S . . .3. r. . . J . . .
20: 4A 2$(ee 17 18 97 59 E4 CF E4 01 89 70 ЮА 50 \l£) |j Y p. P.
30:1G7 F6 CE|B7 00| 00)|02 |04 04 00 p2 65)] J |w re
I ГЛ I~1 ▼ *
▼ тт. Ethernet TCP Destination
identification 1 Pad | Address
T
f Source
Total Length Protocol (TCP) Address
T
у Header Checksum
DF=0
MF=0
Fragment offset=0
Рис. 10.29. Четвертая дейтаграмма IP
Будет полезно проанализировать значения идентификаторов в этих
дейтаграммах. На рис. 10.28 изображена вторая дейтаграмма, отправленная от клиента хосту
Telnet. Поле идентификатора в этой дейтаграмме равно 2, что на единицу больше
идентификатора в дейтаграмме, изображенной на рис. 10.26. На рис. 10.28
показана вторая дейтаграмма, переданная хостом Telnet клиенту. Идентификатор
в этой дейтаграмме равен 21411, что на единицу больше идентификатора в
предыдущей дейтаграмме (см. рис. 10.27). Данный пример наглядно показывает, что
каждая сторона, участвующая в обмене данными, генерирует идентификаторы
независимо от другой стороны.
Packet Number : 8 6:38:39 РМ
Length : 64 bytes
ether: ==================== Ethernet Oatalink Layer ====================
Station: 00-00-C0-A2-0F-8E > 00-00-C0-24-28-2D
Type: 0x0800 (IP)
ip: =======:=:=============== internet Protocol =======================
Station:144 19.74.201 >144.19.74.44
Protocol: TCP
Version: 4
Header Length C2 bit words): 5
Precedence: Routine
Normal Delay, Normal Throughput, Normal Reliability
Total length: 43
Identification: 21412
Fragmentation not allowed, Last fragment
Fragment Offset: 0
Time to Live: 64 seconds
Checksum: 0x320D(Valid)
tcp: ================= Transmission Control Protocol =================
Source Port: TELNET
Destination Port: 6295
Sequence Number: 1508167652
Acknowledgement Number: 25784330
Data Offset C2-bit words): 5
Window: 30710
Control Bits: Acknowledgement Field is Valid (ACK)
Push Function Requested (PSH)
Checksum: 0xA9AE(Valid)
Urgent Pointer: 0
telnt: ======================== Telnet Protocol ========================
Command: Do
Option Code:
Ether Type indicates IP encapsulation
у Version
Ethernet Header TCP f IHL
f t j \}j
0: @0 00 C0 24 28 2D 00 00 CO A2 0F 8E@8 00)^]@0) | ...$(- E.
10: (O0 2В)фЗ A4^40 00)^0^6Y32 0DY90 13 4A СЭХЭЭ 13 | .+S.@.@. 2. . . J . . .
20: 4A|2C)@0| 17 1в| 97 5э| E4| CF E4| 01 89 70 |0A 50|18) |j Y p. P.
30: G7JF6 A9 AE 00 00^ Fd| 25)фо| 72 65) J |w %.re
I I 1 I I I Destination
T I T-n I ▼ I Address
Total Length Y Header
I Checksum J
| Teinet Source
Identification 1 Address
▼ Protocol (TCP)
DF=1 I
^F=0 я Ethernet
Fragment offset=0 pad
Рис. 10.30. Пятая дейтаграмма IP
Пятая дейтаграмма IP: DF = 1
На рис. 10.30 показана дейтаграмма IP, отправленная с хоста Telnet 199.245.180.201
клиенту Telnet 199.245.180.44. Анализ заголовка IP показывает следующие
значения полей (перевод см. ранее):
О Version: 4;
О Header Length (в 32-разрядных блоках): 5;
О ToS: 0 (приоритет: обычный, нормальная задержка, нормальная пропускная
способность, нормальная надежность);
О Total Length: 43;
О Identification: 21412;
О Flags: 0, DF=1, MF=0 (фрагментация не разрешена, последний фрагмент);
О Fragment offset: 0;
О Time to Live: 64 секунды;
О Protocol: 6 (TCP);
О Checksum: 0x320D (правильная);
О Source IP address: 144.19.74.201;
О Destination IP address: 144.19.74.44.
Значения большинства полей рассматривались выше для других дейтаграмм IP.
Отличается только поле флагов фрагментации, в котором флаг DF равен 1.
Установка флага говорит о том, что хост Telnet запрещает фрагментацию дейтаграммы.
Итоги
Протокол IP обеспечивает логическое представление сети, которое не зависит
от конкретных сетевых технологий, использовавшихся при построении
физической сети. Логическая сеть независима от адресов физического уровня, размера
MTU и других различий. Протоколы верхнего уровня (такие, как TCP и UDP)
абстрагируются от физического уровня и рассматривают сеть исключительно
как сеть IP. Сеть IP предоставляет верхнему уровню сервис обмена данными, не
ориентированный на соединение. При этом используются дейтаграммы,
содержащие IP-адреса получателя и отправителя и прочие параметры, необходимые
для работы IP. Одна из важных особенностей протокола IP заключается в том,
что передаваемые дейтаграммы фрагментируются маршрутизаторами по мере
необходимости, чтобы обеспечить размер дейтаграммы соответствовал
ограничениям на размер пакета в базовой сети. При использовании фрагментации IP
получатель отвечает за восстановление исходной дейтаграммы из фрагментов.
«f 4 Транспортные
JL JL протоколы
Караижит С. Сияй (Karanjit 5. Siyan)
Транспортные протоколы TCP/IP соответствуют транспортному уровню модели
OSL В семействе протоколов TCP/IP определены два стандартных
транспортных протокола: TCP и UDP. Протокол TCP (Transmission Control Protocol)
обеспечивает надежную пересылку данных, а протокол UDP (User Datagram Protocol)
успешной доставки не гарантирует.
Оба транспортных протокола, TCP и UDP, работают поверх протокола IP
и используют предоставляемый им сервис (рис. 11.1). Протокол IP
обеспечивает обмен дейтаграммами между двумя компьютерами, не ориентированный
на соединение. Протоколы TCP и UDP позволяют доставить данные не только
удаленному компьютеру, но и прикладному процессу, работающему на этом
компьютере. Прикладные процессы идентифицируются по номерам портов.
Протокол TCP ориентируется на соединение и обеспечивает надежную доставку
данных к месту назначения. С другой стороны, протокол UDP не ориентирован
на соединение и не обеспечивает надежной доставки. Тем не менее протокол
UDP также приносит пользу во многих ситуациях — например, при передаче
данных конкретному приложению, работающему на компьютере, а также при
широковещательной или групповой рассылке данных.
Хотя некоторые общие сведения о протоколах TCP и UDP приводились в
главе 3, в настоящей главе материал будет представлен гораздо более подробно.
Протокол TCP
Протокол TCP выполняет очень важные функции в семействе TCP/IP, поскольку
он предоставляет стандартизированные средства надежной доставки данных.
Вместо того чтобы изобретать свои собственные транспортные протоколы,
приложения обычно пользуются средствами TCP для обеспечения надежной доставки
данных, так как TCP прошел существенный путь развития и был дополнен
многими усовершенствованиями, повышающими его быстродействие и надежность.
Протокол TCP гарантирует надежную сквозную передачу данных между
прикладными процессами, работающими в разных компьютерных системах (рис. 11.2).
Надежность обеспечивается наращиванием новых функциональных возможно-
стей на основе IP. Протокол IP не ориентируется на соединение и не гарантирует
доставки пакетов; TCP, зная о принципиальной ненадежности IP, добавляет
новые средства для обеспечения сквозной доставки данных. Поскольку
протокол TCP почти не делает никаких предположений относительно сервиса,
предоставляемого сетью, он может работать на широком спектре оборудования.
Фактически TCP требует лишь одного: простых средств ненадежной доставки
дейтаграмм, реализованных на нижнем уровне. Такие сети, как Х.25, иногда
предоставляют нетривиальные средства, ориентированные на соединение, на
сетевом уровне. В этом случае дейтаграммы IP передаются в виртуальном
канале Х.25, а пакеты протокола TCP инкапсулируются в дейтаграммах IP.
С Приложения TCP 5 С Приложения UDP -5
TCP UDP
t l
IP
Канал передачи данных
Рис. 11.1. Протоколы TCP и UDP
Протокол TCP является основным транспортным протоколом, используемым
для поддержки надежных дуплексных соединений в виртуальных сетях. Чаще
всего TCP работает на базе IPv4 и IPv6, хотя в некоторых экспериментальных
проектах он работал на базе других протоколов сетевого уровня.
Если протокол IP реализуется на хостах и маршрутизаторах, то TCP обычно
реализуется только на хостах для обеспечения надежной доставки при сквозной
передаче. В наши дни многие маршрутизаторы не ограничиваются одной
маршрутизацией и предоставляют ряд других функций, упрощающих их настройку
и управление. Например, многие коммерческие маршрутизаторы также
реализуют TCP и UDP для поддержки удаленного входа и управления сетью.
Впрочем, несмотря на реализацию TCP и UDP в маршрутизаторах, транспортные
протоколы не используются сервисом маршрутизации и обработки сообщений.
Протокол TCP описан в RFC 792 (STD 7), «Transmission Control Protocol».
Протокол UDP описан в RFC 768 (STD 6), «User Datagram Protocol». Документ
RFC 1122 (STD 3), «Requirements for Internet Hosts — Communication Layers»
содержит ряд важных дополнений. Статус обоих протоколов, TCP и UDP,
определяется всего лишь на уровне рекомендаций. Тем не менее на практике все
устройства TCP/IP (за исключением «чистых» маршрутизаторов) реализуют TCP
и UDP. В большинстве реализаций логика UDP инкапсулируется в модуле TCP
и не отделяется от реализации TCP.
Ниже рассматриваются основные возможности TCP.
г Приложения <J г Приложения ^
i i
i i
i i
Надежность сквозной передачи
тер k- ->\ tcp
ip ip ip ip
Канальный Канальный Канальный Канальный
Физический Физический Физический Физический
(^^адежность\ (^мадежностьХ (^^адежностьГ\
q сквозной ^ q сквозной J q сквозной J
Х_^ передачи у \_^ передачи у Х_^ передачи у
Рис. 11.2. Надежность сквозной передачи с применением TCP
Возможности TCP
Следующие возможности протокола TCP заслуживают особого внимания:
О базовая пересылка данных;
О надежность;
О управление потоком данных;
О мультиплексирование;
О соединения;
О приоритет и безопасность.
Базовая пересылка данных
Под базовой пересылкой дачных понимается возможность пересылки
непрерывного потока октетов в обоих направлениях. Октеты пересылаются между
прикладными процессами, работающими в удаленных системах с поддержкой TCP.
Прикладные процессы группируют отправляемые/принимаемые байты в сегменты
(также называемые сообщениями). Сегмент может иметь произвольную длину.
В конечном счете сегменты должны пересылаться в дейтаграммах IP, размер
которых ограничивается значением MTU сетевого интерфейса. Тем не менее на
уровне TCP размер сегментов реально не ограничивается, поскольку задача
размещения сегментов в дейтаграммах IP относится к уровню IP. Впрочем, по со-
ображенпям эффективности соединения TCP обычно согласовывают
максимальный размер сегмента.
Сегменты, передаваемые TCP, имеют потоковую ориентацию (рис. 11.3).
Протокол TCP отслеживает каждый отправленный/полученный октет. В нем
отсутствует концепция блоков данных, и этим он отличается от других
транспортных протоколов, которые обычно отслеживают номера TPDU (Transport
Protocol Data Unit) вместо номера октета. Протокол TCP позволяет создать
несколько виртуальных каналов между двумя хостами TCP.
I Последний октет I
-|шшшш— Должен быть обозначен
[^^ДДИРдД^ специальным признаком
•Потоковая ориентация.
Концепция блока
TCP TCP данных в явном
виде не поддерживается
IP ,P
Рис. 11.3. Потоковая ориентация протокола TCP (с разрешения Learning Tree)
Прикладные процессы, использующие TCP, отправляют данные в сегментах
размера, удобного для отправки. Размер отправляемых данных может изменяться
в пределах от одного октета до нескольких килооктетов. Октеты доставляются
прикладному процессу на получателе в том порядке, в котором они были
отправлены. Этот процесс называется упорядочением октетов.
Приложение может передавать данные TCP по нескольку октетов за раз.
TCP накапливает данные в буфере и отправляет эти октеты в виде одного
большого сегмента или нескольких сегментов меньшего размера. При этом
гарантируется лишь поступление сегментов к получателю в порядке их отправки.
Например, если приложение за 10 секунд отправляет 1024 октета данных, эти
данные могут быть переданы в виде одного пакета TCP, содержащего все 1024
октета, в виде четырех пакетов TCP по 256 октетов каждый или в виде
произвольной комбинации октетов.
Поскольку TCP передает данные в виде потока октетов, поток данных не
содержит фактического маркера, обозначающего конец сообщения. Для обеспече-
ния отправки всех данных, переданных модулю TCP, должна быть реализована
функция активной отправки (push), которая заставляет TCP немедленно
отправить все данные, полученные от приложения до настоящего момента.
Данные, передаваемые протоколом TCP, рассматриваются как
неструктурированный поток октетов. В TCP не предусмотрены средства для отображения
структуры, специфической для конкретного приложения, на полученные данные.
Например, вы не можете приказать TCP интерпретировать данные как набор
записей базы данных и передавать записи по одной. Вся структуризация должна
выполняться прикладными процессами, которые обмениваются данными через TCP.
Надежность
Надежная сквозная доставка данных является одной из ключевых
особенностей TCP. Чтобы обеспечить надежную доставку, протокол TCP должен уметь
восстанавливать поврежденные, потерянные, повторяющиеся или доставленные
с нарушением исходного порядка данные. Для обеспечения надежности в TCP
используется схема повторной передачи с позитивным подтверждением PAR
(Positive Acknowledgement Retransmission). На рис. 11.4 показано, как работает
схема PAR, когда все данные и подтверждения поступают без ошибок. Новые
данные отправляются лишь после того, как будет подтверждено получение
предыдущих данных. На рис. 11.5 показано, как схема PAR используется при
восстановлении потерянных данных.
Отправитель Получатель
I £"№"""'"""*\ || || / .;"ч |
[lUHIHHHIHIHUWH E~rrrJ J lllHIMIIHIMIIIIIIIIMI Е~~Э1
I -—^__L^^77
r-—^^S^^—г "
ч- - - - -U— "
Рис. 11.4. Схема PAR при передаче данных без ошибок
Отправитель Получатель
[lumnuttmtiuuuu Eb===d j [iiiuttiintttmmtuii Е~гз J
. ^о^55^^--^Ч
Данные 2 >^>^/\t^y//
- -г — ► «^Ошибка ^^ j - Данные не
Т ^^V\P^ получены,
| подтверждение
Тайм-аут не отправлено
1 \Повторная г-_
^^—л
Рис. 11.5. Схема PAR при восстановлении после сбоя
Реализация схемы PAR в TCP основана на последовательной нумерации всех
передаваемых октетов и ожидании подтверждения (АСК) от модуля TCP,
получающего данные. Если до истечения интервала тайм-аута не будет получено
подтверждение, данные передаются заново. Модуль TCP, получающий данные,
использует нумерацию для правильного упорядочения сегментов, поступивших
с нарушением исходного порядка, и для удаления дубликатов. Искажение
переданных данных обнаруживается проверкой поля контрольной суммы в
заголовке пакета TCP. Сегменты данных, полученные с нарушением контрольной
суммы, уничтожаются. При отсутствии физических нарушений, препятствующих
работе сетевого канала, TCP обеспечивает восстановление после большинства
ошибок в коммуникационных системах Интернета.
Управление потоком данных
Получение и отправка сегментов данных TCP на разных компьютерах TCP может
производиться с разной скоростью из-за различий в вычислительной мощности
процессора и пропускной способности сети. В такой ситуации нельзя исключать
того, что скорость передачи данных отправителем будет заметно превышать
скорость их обработки получателем. В TCP реализован механизм управления
потоком данных, который позволяет контролировать объем данных, передаваемых
отправителем, — так называемое скользящее окно. На рис. 11.6
продемонстрировано применение скользящего окна в TCP. Поток данных в TCP нумеруется
на уровне октетов; номер, присвоенный октету, называется порядковым номером.
Окно
J^J°" ► 1 2 3 |~4 5 6 7 8 ; 9 10 111 12 13 14
октетов I ! I
Ч X ► < X ►
Отправленные Отправленные, Не отправленные Октеты, которые
и подтвержденные но не октеты, которые могут быть
октеты подтвержденные могут быть отправлены
октеты отправлены только после
в любой момент смещения окна
Рис. 11.6. Управление потоком данных в TCP с использованием
скользящего окна (с разрешения Learning Tree)
Модуль TCP, получающий данные, передает отправителю подтверждение
с указанием диапазона допустимых порядковых номеров, следующих за
успешно полученным последним сегментом. Диапазон допустимых порядковых
номеров называется окном. Таким образом, окно определяет количество октетов,
которые могут быть переданы отправителем до получения очередного разрешения.
На рис. 11.6 в окно включены октеты с порядковыми номерами от 4 до 11.
В приведенном примере октеты 1-3 были отправлены и подтверждены. Октеты
с 4 по И, входящие в окно, уже были отправлены или ожидают отправки, но
еще не были подтверждены. Модуль TCP на стороне отправителя не обязан
отправлять сегменты TCP, размер которых точно равен размеру окна. Окно
определяет лишь максимальное количество октетов, которые могут передаваться
без подтверждения. На рис. 11.6 октеты с 4 по 8 уже были отправлены; октеты
с 9 по 11, хотя и входят в окно, еще не были отправлены, но могут быть
отправлены в любой момент. Отправка октета 12 и далее пока невозможна, поскольку
эти октеты не входят в диапазон окна. Итак, механизм управления потоком
данных TCP обладает следующими свойствами:
О Октеты, находящиеся в потоке данных слева от окна, уже были отправлены
и подтверждены.
О Октеты, находящиеся в диапазоне окна, могут быть отправлены в любой
момент. Возможно, некоторые из этих октетов уже были отправлены, но еще не
были подтверждены. Другие октеты могут ожидать отправки.
О Октеты, находящиеся справа от окна, еще не были отправлены. Отправка
разрешена только для октетов, входящих в окно.
Левый край окна совпадает с октетом, имеющим минимальный номер, для
которого еще не было получено подтверждение. Окно смещается в потоке данных;
при подтверждении получения отправленных данных левый край окна двигается
вправо. Пакет TCP, содержащий подтверждение, содержит информацию о размере
окна, который должен использоваться отправителем.
Размер окна соответствует объему области буфера, свободной для приема новых
данных на стороне получателя. Если объем свободной части буфера уменьшается
из-за того, что получатель не успевает обрабатывать получаемые данные,
получатель приказывает уменьшить размер окна. В крайнем случае получатель может
установить размер окна равным одному октету; в этом случае отправитель после
отправки каждого октета должен дождаться подтверждения. Подобная ситуация
называется синдромом мелкого окна, и в большинстве реализаций TCP
предпринимаются специальные меры для ее предотвращения. За дополнительной
информацией обращайтесь к разделу «Борьба с синдромом мелкого окна» настоящей главы.
Передавая подтверждение с нулевым размером окна, модуль TCP сообщает
отправителю о том, что его буферы заполнены, а отправку данных следует
временно прекратить. В TCP предусмотрены средства как для уменьшения
размеров окна при накоплении необработанных данных на стороне получателя, так и
для его увеличения по мере решения проблем.
Основная цель механизма скользящего окна — обеспечение максимальной
загрузки канала данными и сокращение задержек при ожидании подтверждений.
Мультиплексирование
Протокол TCP позволяет нескольким процессам, работающим на одном
компьютере, одновременно использовать средства связи TCP; это называется
мультиплексированием. Поскольку процессы обычно используют один и тот же сетевой
интерфейс, им соответствует один и тот же IP-адрес сетевого интерфейса. Тем
не менее для идентификации процесса одного IP-адреса недостаточно, поскольку
все процессы, работающие на одном сетевом интерфейсе, обладают одинаковым
IP-адресом.
Приложения, использующие TCP, идентифицируются дополнительным
числом — номером порта. Из-за этого на компьютере могут одновременно
существовать несколько соединений, установленных разными прикладными процессами, —
каждое соединение характеризуется своей парой номеров портов. На рис. 11.7
показано, как организуется мультиплексирование нескольких соединений в TCP.
Привязка прикладных процессов к портам производится на каждом
компьютере независимо от других. Во многих системах специальный процесс
(регистратор пли супердемон) следит за номерами портов, идентифицированными или
считающимися хорошо известными для других систем.
Соединения
Чтобы прикладной процесс мог передавать данные через TCP, он должен сначала
создать соединение. Соединение устанавливается между определенной парой
портов на отправителе и получателе. Таким образом, соединение TCP требует
идентификации конечных точек, между которыми устанавливается связь. Конечная точка
(рис. 11.8) формально определяется как совокупность IP-адреса и номера порта:
(IP-адрес, номер-порта)
где IP-адрес — межсетевой адрес сетевого интерфейса, через который
обмениваются данными приложения TCP/IP, а номер порта — номер порта TCP,
определяющий приложение. Конечная точка должна включать как IP-адрес, так и номер
порта, потому что номера портов выбираются независимо каждой реализацией
TCP, а их уникальность не гарантируется. Объединение уникального IP-адреса
с номером порта обеспечивает уникальность определения конечной точки.
Порты
I 1 ТСР I 1
Прикладной уровень J vj Прикладной уровень
О О- -<5—Г Т-Ь- -<D CD
| TCP I ! I TCP i ;
I IP ! I i IP ! !
i Каналь- j j ; Каналь- j j
! НЬ1Й III I ' ныи ! !
; уровень' ' I • уровень! •
! Физи- ; ; ; Физи- ; ;
Её \ ческий ; | / ! ческий | |
If ; • I ! УР°вень• ' [I [ 1 ! уровень! •
нптнжиипинн *~ * J I , , [HiHHiiHHrniMiirtii ЬтггтгН J i i
«' ! ! Канал TCP 1 ; ! !
! ! Канал TCP 2 J J !
; Канал TCP 3
Рис. 11.7. Мультиплексирование в TCP
у Прикладной ^ ^Прикладной \ С^ Прикладной ^
^^^ процесс *"? процесс р ^т^ процесс р
Конечная точка \ Конечная точка! Конечная точка |
A97.12.5.8,80); A97.12.5.8,87); A97.12.5.8,2002);
< ? * ? < "г*
CljKL^> d 87 D <Q002^
! TCP ! I
p„ l ,p I I I
|щишп; ! 1
Ъшяшм^ IP-адрес
liMtiiMiHiitiimnlin &=l I 197.12.5.8 i ■ i
Сетевой ч-_ ч-_ ч-_
интерфейс
Рис. 11.8. Конечные точки в TCP
Соединение TCP устанавливается между двумя конечными точками (рис. 11.9)
и определяется параметрами обеих конечных точек:
AР-адрес-1, номер-порта-1, 1Р-адрес-2, номер-порта-2)
Это позволяет нескольким прикладным процессам установить соединпшг
с одной удаленной конечной точкой. На рис. 11.9 изображены прикладные про
цессы, соединенные с удаленной точкой A99.11.21.1, 2001). Модуль TCP на х<>
сте 199.11.23.1 различает разные соединения, так как в TCP соединение
определяется как локальной, так и удаленной конечной точкой. На рис. 11.9 конечная
точка A99.11.21.1, 2001) остается одной и той же, но точки на другом конце
соединения имеют разные параметры, благодаря чему TCP различает эти
соединения.
k^jLp~b Номер kf ц[р~^} Номер
Гу~^щГпорта pJ3i]4nopTa
П Полная ГТ
ассоциация I
ляшшт— с номером порта — юшшйч
IpMgwa TCP (top. 199.21.32.2, TCP JfagH
^^Ш^л'Фшй^Ж^Ш^ 1QQ 91 *\0 9 HQfi CO 109 л 1Щ'Г*«й^^шс14Ж»ш1ш« J
\\_ Г Сеть IP J J]
Рис. 11.9. Соединение TCP между конечными точками (с разрешения Learning Tree)
Рисунок 11.9 также показывает, что TCP может поддерживать несколько
параллельных соединений. Данные этих соединений мультиплексируются через
один сетевой интерфейс.
Соединение полностью определяется парой конечных точек. Локальная
конечная точка может участвовать в нескольких соединениях с разными
удаленными конечными точками. Соединения TCP поддерживают пересылку данных
в обоих направлениях; такие соединения называются дуплексными.
Говоря о соединениях TCP, будет полезно определить понятия половинной
и полной ассоциации. Половинная ассоциация состоит из определения конечной
точки и имени транспортного протокола:
(транспортный протокол, IP-адрес, номер порта)
Следовательно, на рис. 11.9 присутствуют половинные ассоциации
(tcp, 199.21.32.2, 1400)
(tcp, 196.62.132.1, 21)
Полная ассоциация состоит из двух половинных ассоциаций и записывается
в следующем формате:
(транспортный протокол, IP-адрес-1, номер порта-1, 1Р-адрес-2, номер порта-2)
Транспортный протокол указывается только один раз, потому что он должен
быть одним и тем же для обеих половинных ассоциаций. Понятия полных и
половинных ассоциаций удобны при описании разных транспортных протоколов.
Например, полная ассоциация на рис. 11.9 записывается в виде
(tcp, 199.21.32.2, 1400, 196.62.132.1, 21)
Полная ассоциация, включающая IP-адреса отправителя и получателя, а также
номера портов отправителя и получателя, однозначно определяет соединение TCP.
Программная среда хостов TCP
Протокол TCP реализуется в виде модуля, взаимодействующего с
операционной системой компьютера. Во многих операционных системах обращение к
сервису TCP имеет много общего с обращением к сервису файловой системы. В
частности, модель файловой системы заложена в основу интерфейса сокетов BSD,
реализованного в системах семейства Unix, и более нового интерфейса Winsock,
реализованного в операционных системах Microsoft.
Работа модуля TCP зависит от других функций операционной системы,
обеспечивающих управление его структурами данных и выполнение служебных
операций. Интерфейс с сетью обычно находится под управлением модуля драйвера
устройства. TCP не взаимодействует с модулем драйвера устройства напрямую.
Вместо этого TCP обращается к модулю IP, который, в свою очередь, обращается
к модулю драйвера устройства (рис. 11.10).
Также возможен вариант с размещением модулей стека протоколов TCP/IP
на отдельной станции, называемой фронтальным процессором (front-end processor).
Фронтальный процессор действует как специализированное коммуникационное
устройство, обеспечивающее работу модулей протоколов (рис. 11.11). Должен
существовать механизм, обеспечивающий взаимодействие хоста с фронтальным
процессором. Как правило, этот механизм работает через интерфейс файловой
системы.
С абстрактной точки зрения приложения взаимодействуют с модулем TCP
при помощи следующих системных функций:
О OPEN — открытие соединения;
О CLOSE — закрытие соединения;
О SEND — отправка данных по открытому соединению;
О RECEIVE — получение данных по открытому соединению;
О STATUS — получение информации о соединении.
Эти системные функции реализуются по аналогии с функциями
операционной системы, вызываемыми пользовательскими программами. Например, функ-
ции открытия/закрытия соединений можно рассматривать как аналоги
функций открытия/закрытия файлов, а функции отправки/приема данных — как
аналоги функций чтения/записи файлов.
С Модуль < Транспортный уровень
( TCP ^
С Модуль 2 сетевой уровень
С Драйвер 2
л" устройства J
Ч Канальный уровень
А Интерфейс J
у к сетевому л
С оборудованию \
Рис. 11.10. Взаимодействие модуля TCP с сетью
Системные функции TCP могут взаимодействовать с другими модулями TCP,
находящимися на любом узле объединенной сети. Системным функциям TCP
при вызове передаются соответствующие параметры: IP-адреса, тип сервиса,
приоритет, безопасность, номер порта приложения и т. д.
Компьютер, на котором г J £&
работают приложения у Приложения 'S ^
\. чч -! ТСР i
\ * лшътжк |Р :
т. ^^шяМ^п^ш '
Фронтальный
процессор
Рис. 11.11. Удаленное выполнение модулей TCP
Открытие и закрытие соединений TCP
Открываемое соединение передается при вызове OPEN для локального порта.
Параметры, передаваемые при вызове, определяют вторую конечную точку.
Системная функция возвращает манипулятор (handle) соединения — короткое
целое число, используемое для ссылки на соединение при дальнейших
вызовах. Информация о соединении хранится в структуре данных, называемой ТСВ
(Transmission Control Block); для обращения к информации из ТСВ используется
манипулятор.
В TCP определены две разновидности вызовов OPEN:
О Активный вызов OPEN.
О Пассивный вызов OPEN.
В первом случае соединение устанавливается в активном режиме. Активный
вызов OPEN преобразуется в сообщение TCP, которое отправляется другой
конечной точке.
Пассивный вызов OPEN сигнализирует об ожидаемом приеме уведомления
об активном установлении соединения; сегменты TCP в этом случае не
генерируются. Пассивный вызов OPEN означает, что процесс предпочитает принять
входящий запрос на соединение, нежели пытаться инициировать соединение
самостоятельно. Довольно часто процесс, выполнивший пассивный вызов OPEN,
принимает запрос на соединение от любой обратившейся стороны. Также при
пассивном вызове OPEN можно указать, что запрос на соединение должен
приниматься только от конкретной конечной точки.
TCP информирует процессы, которые выдают пассивные запросы OPEN и
ожидают поступления активных вызовов OPEN от других процессов, об
установлении соединения (рис. 11.12).
TCP TCP
Пассивный вызов со
'~ стороны получателя '"
If \\\Р 1 ---_.. I If \\ IP
: L I """""Л^'Н'-■ h '
V—■■ __ _ i—ir
[nmiimiinimuuiii Errrrd J [Hiiinmiiiiiiniiinii EE==J J
"""""" -———^wl Получатель
^ в состоянии
Л «п прослушивания
L4 Соединение TCP открыто >J
Рис. 11.12. Создание соединения TCP с использованием активного и пассивного запросов OPEN
Два процесса, одновременно выдавшие активные запросы OPEN, также будут
успешно соединены (рис. 11.13). Создание соединений TCP при помощи двух
активных вызовов OPEN часто применяется в распределенных средах, где
компоненты могут действовать асинхронно по отношению друг к другу.
Структура пакета TCP
На рис. 11.14 изображена структура пакета TCP. Заголовок TCP, как и в
большинстве протоколов семейства TCP/IP, делится на 32-разрядные блоки.
Ниже приводятся более подробные описания отдельных полей заголовка TCP.
Номера портов отправителя и получателя
Номера портов отправителя и получателя (см. рис. 11.14) используются для
идентификации конечных процессов, связанных виртуальным каналом TCP. Таким
образом, номера портов определяют связи между процессами. Некоторые номера
портов считаются хорошо известными (то есть фиксируются), другие
назначаются динамически.
TCP TCP
If^V^ll ,Р [( ' ' ll ,P
1 I:-"- *:'■''.:■■':■:*:"+: J I I I I V ,';, | ..",,~. и,/ I
|н|Ц|нн|тини«щ L==r=d) [iiimiHHimmiHwi hard J
L4 Соединение TCP открыто -- w
Рис. 11.13. Создание соединения TCP с использованием двух активных запросов OPEN
< 32 бита ►
I—i—i—i—i—»—1—1—1—1—1—1—1—\—i—i—[—i—i—i—i—i—i—i—i—i—i—i—i—i—i—i—j
Порт отправителя Порт получателя
I 1 1 h-Ч 1 1—1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Порядковый номер
—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—!—I—I—I—I—I—I—I—I—I—I—I—I—I—I—
Номер для подтверждения (АСК)
—i—i—i—I—i—i—'—i—'—IuIaIpIrIsI р\—'—'—'—'—'—'—'—'—'—'—'—'—'—'—'—
Смещение Зарезервиро- Ш *
данных вано г Ьг м т м м
—I—i—I—I—i—i—i—I—i—1°1ЧП1 ' \"\п\—i—I—i—i—I—I—i—i—i—I—i—I—I—I—l—
Контрольная сумма Указатель срочности
—I—I—I—I—I—I—I—!—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—
<<! Параметры Дополнение <ц^
Ьч—I—I—I—I—I—I—i—I—I—i—i—i—i—i—i—i—i—i—i—i—i—i—I—I—i—i—i—i—i—i—|
<i Данные <i
С L—l 1—J 1 1 1 > I 1 1 1 1 1 I I l__J 1,1 I I I I I—-I I I I l_J 1
Рис. 11.14. Структура пакета TCP
Список назначенных номеров, содержащий описания ряда хорошо
известных портов, периодически публикуется в RFC (под разными номерами).
ПРИМЕЧАНИЕ
Номера портов в диапазоне 0-1 023 относятся к категории хорошо известных номеров, а их
администрирование осуществляет IANA. Номера портов, превышающие 1023, могут
регистрироваться, но не находятся под контролем IANA. Эти номера портов называются зарегистрированными.
Не все порты с номерами от 1024 и выше относятся к категории зарегистрированных. Некоторые
номера портов, называемые временными номерами, переназначаются по мере надобности.
Назначение временных номеров портов производится модулем TCP no алгоритму, специфическому для
конкретной реализации.
Модули TCP могут по своему усмотрению ассоциировать номера портов с
любыми прикладными процессами (за исключением того, что хорошо известные
номера портов резервируются для конкретных приложений). Во многих
операционных системах прикладные процессы могут «захватывать» порты. Номера
таких портов выбираются случайным образом (при этом они должны быть
больше 1023. В некоторых реализациях используется алгоритм хэширования,
который выделяет номера портов в зависимости от имени процесса. Как правило,
имя процесса определяет значения старших битов номера порта.
Порядковый номер и номер для подтверждения
Надежность передачи данных в TCP обеспечивается двумя специальными
полями — порядковым номером и номером для подтверждения. На концептуальном
уровне каждому октету данных присваивается порядковый номер. Порядковый
номер первого октета данных в сегменте сообщения передается в заголовке TCP
этого сегмента и называется порядковым номером сегмента.
Сегменты, отправляемые получателем, также содержат номер для
подтверждения, который совпадает с порядковым номером следующего ожидаемого
октета данных. Передача данных по протоколу TCP является дуплексной. В
любой момент времени модуль TCP выполняет как функции отправителя для
передаваемых им данных, так и функции получателя для данных, принимаемых от
других отправителей.
Когда модуль TCP желает отправить сегмент, он заносит копию сегмента в
очередь передачи и запускает таймер. Если подтверждение получения данных
приходит до истечения таймера, сегмент удаляется из очереди. Если же
получение данных не подтверждается, то сегмент отправляется заново (из копии,
хранящейся в очереди).
32-разрядный порядковый номер (см. рис. 11.4) определяет номер первого
байта данных в текущем сообщении. Если флаг SYN равен 1, то поле определяет
начальный порядковый номер (ISN, Initial Sequence Number) для текущего сеанса,
а первое смещение данных должно быть равно ISN+1. Тем самым предотвращается
использование старых порядковых номеров, которые могли быть ранее назначены
данным, пересылаемым в сети.
Поле номера для подтверждения определяет порядковый номер следующего
байта, ожидаемого получателем. Подтверждения TCP носят накопительный
характер. Другими словами, одно подтверждение может подтверждать
получение сразу нескольких переданных сегментов TCP.
Подтверждения TCP означают лишь факт приема данных модулем TCP.
Подтверждения не гарантируют, что данные были доставлены приложению,
использующему сервис TCP для пересылки данных. Ответственность за доставку
данных приложению лежит на модуле TCP, работающем на стороне получателя.
Ошибки в работе модуля TCP или прикладного интерфейса могут привести
к тому, что данные не будут доставлены приложению.
Смещение данных
Поле смещения данных определяет размер заголовка TCP в 32-разрядных блоках
(см. рис. 11.14). Оно должно присутствовать в заголовке, потому что поле
параметров может иметь переменную длину. Без параметров TCP поле смещения
данных равно 5 B0 октетов). Длина заголовка TCP, даже если он содержит
параметры, всегда кратна 32 битам.
В настоящее время определен только один параметр TCP — максимальный
размер сегмента (MSS, Maximum Segment Size). При наличии этого параметра
поле смещения данных равно 6 B4 октета).
Зарезервированное поле, следующее за полем смещения данных, должно быть
равно 0.
Флаги
Следующее поле в заголовке TCP (см. рис. 11.4) содержит набор флагов.
О Установка флага АСК указывает на то, что поле номера для подтверждения
содержит действительное значение.
О Флаг SYN обозначает открытие виртуального канала.
О Флаг FIN используется для закрытия соединения.
О Флаг RST сбрасывает виртуальный канал при возникновении неисправимых
ошибок. При получении сегмента TCP с установленным флагом RST
получатель должен ответить немедленным закрытием соединения. В случае сброса
обе стороны должны немедленно освободить соединение и все его ресурсы.
При этом пересылка данных в обоих направлениях прекращается, что может
привести к потере передаваемых данных. Сброс с использованием флага TCP
RST применяется только в аварийных ситуациях. Для нормального закрытия
соединений TCP следует использовать флаг FIN. Например, сброс может
производиться из-за сбоя на хосте или отложенном получении дубликатного
пакета SYN.
О Установка флага PSH означает, что протокол TCP должен немедленно
доставить данные полученного сегмента процессу верхнего уровня.
О Флаг URG обеспечивает экстренную отправку данных без ожидания
обработки получателем октетов, уже находящихся в потоке.
При открытии соединений TCP используется процедура согласования,
основанная на обмене тремя пакетами со следующими значениями флагов SYN и АСК:
SYN=1 и АСК=0 — открытие соединения
SYN=1 и АСК=1 — подтверждение открытия соединения
SYN=0 и АСК=1 — пакет данных или пакет АСК
Процедура открытия соединения TCP, использующая управляющий флаг
синхронизации SYN, изображена на рис. 11.15.
Пользователь
Пассивное
ТСВ ^ открытие
ТСВ = Блок управления передачей
Рис. 11.15. Использование флага TCP SYN (с разрешения Learning Tree)
Соединение инициируется получением сегмента с установленным флагом SYN,
для которого имеется ожидающий блок ТСВ. Прибывающий сегмент TCP
генерируется активным вызовом OPEN, а ожидающий блок TCP появляется в
результате пассивного вызова OPEN. При наличии парных вызовов OPEN (для
активного и пассивного) создается соединение. Установленный флаг SYN (SYN=1)
является признаком синхронизации порядковых номеров в обоих направлениях.
На рис. 11.15 активный вызов OPEN генерирует сегмент TCP со следующими
значениями флагов:
SYN = 1, АСК = О
Когда модуль TCP на стороне получателя, выполнивший пассивный вызов
OPEN, получает активный вызов OPEN, он подтверждает его передачей пакета
со следующими флагами TCP:
SYN - 1, АСК - 1
Такое подтверждение активного пакета OPEN иногда называется пассивным
пакетом OPEN. Установленный флаг АСК (АСК=1) означает, что поле номера
для подтверждения содержит действительные данные.
Общая последовательность трехфазного открытия соединения
проиллюстрирована на рис. 11.16.
Фаза 1 Фаза 2 Фаза 3
Отправитель Получатель Отправитель
I Можно ли открыть? I I Да, можно I SEQ = X+1+Z I
SEQ=X SEQ = Y ACK = Y + 1
ACK=0 ACK = X+1+Z
Передача Продолжение
необязательных отправки
данных данных
Отправка
Z октетов
Рис. 11.16. Трехфазное согласование при открытии соединения (с разрешения Learning Tree)
На шаге 1 (см. рис. 11.16) отправляется активный вызов OPEN с порядковым
номером X. Вместе с активным пакетом OPEN отправитель может переслать
дополнительные данные. Например, эти данные, состоящие из Z октетов, могут
содержать атрибуты аутентификации (имя и пароль) для запрашиваемого
сервиса. В большинстве приложений TCP/IP атрибуты аутентификации передаются
после открытия соединения. Тем не менее в некоторых сетях (например, при
использовании TCP/IP в сетях Х.25) атрибуты аутентификации могут
пересылаться вместе с запросом OPEN. Значения полей порядкового номера и номера
для подтверждения задаются следующим образом:
порядковый номер = X
номер для подтверждения = О
На шаге 2 получатель отвечает пакетом, в котором номер для подтверждения
равен X+1+Z — следующему ожидаемому номеру октета. Также задается
начальный порядковый номер (Y), используемый получателем. Поля порядкового
номера и номера для подтверждения задаются следующим образом:
порядковый номер = Y
номер для подтверждения = X + 1 + Z
На шаге 3 отправитель подтверждает получение порядкового номера от
получателя. Поля порядкового номера и номера для подтверждения задаются
следующим образом:
порядковый номер = X + 1 + Z
номер для подтверждения = Y + 1
Зачем нужна третья фаза в трехфазном процессе? Этот вопрос часто
становится причиной недоразумений. Третья фаза завершает согласование и
информирует получателя о том, что его исходный порядковый номер был принят источ-
ником, открывшим соединение TCP. Без этого подтверждения получатель не
может быть уверен в том, что отправитель знает правильный начальный
порядковый номер. Ниже приведена краткая сводка трехфазного согласования:
О Фаза 1. Отправитель посылает свой начальный порядковый номер (ISS, Initial
SEND Sequence Number).
О Фаза 2. Получатель подтверждает получение ISS; для этого он отправляет ответ
с номером для подтверждения, на 1 большим ISS (и дополнительных данных,
которые могли быть переданы отправителем). Получатель отправляет свой
исходный порядковый номер (IRS, Initial RECEIVE Sequence Number).
О Фаза 3. Отправитель передает номер для подтверждения, чтобы получатель
мог быть уверен в успешной доставке отправленных им данных.
Для предотвращения возможной отправки сегментов с порядковым номером,
совпадающим с порядковым номером другого, старого сегмента, в TCP
используется концепция максимального срока жизни сегмента (MSL, Maximum Segment
Lifetime). MSL определяет время, которое должно пройти перед назначением
любых порядковых номеров при запуске или восстановлении после сбоя (при
котором информация о ранее использовавшихся порядковых номерах теряется).
В спецификации TCP указано значение MSL, равное двум минутам. Если
реализация TCP может обеспечить хранение информации об использовавшихся
порядковых номерах, то она может обойтись без ожидания в течение MSL и
немедленно начать использовать порядковые номера, большие тех, которые
использовались ранее.
Нумерация всех октетов в TCP приводит к быстрому расходованию
порядковых номеров. Если октеты передаются со скоростью 2 Мбит/с, 232 порядковых
номеров октетов будут израсходованы за 4,5 часа. Поскольку максимальный срок
жизни сегмента в сети вряд ли превысит десятые доли секунды, это время
обеспечивает достаточную защиту для скоростей, измеряемых десятками мегабит в
секунду. На скорости 100 Мбит/с порядковые номера расходуются за 5,4 минуты, что
все равно больше двух минут, определяемых в спецификации TCP (RFC 793).
Как выбирается значение ISN? В RFC 792 для выбора нового 32-разрядного
ISN рекомендуется использовать генератор — например, связанный с
32-разрядными показаниями часов, увеличивающимися примерно каждые 4 микросекунды.
В этом случае циклическое повторение ISN происходит примерно каждые 4,55
часа. Маловероятно, чтобы сегменты оставались в сети более 4,55 часа;
следовательно, можно с полным основанием считать, что значения ISN уникальны.
После установления соединения TCP флаг АСК всегда равен 1, что
указывает на действительность содержимого поля номера для подтверждения. Далее
обе стороны начинают обмениваться сообщениями и происходит дуплексный
обмен данными, который продолжается до того момента, когда соединение TCP
потребуется закрыть.
Когда соединение TCP будет готово к закрытию, передается пакет с
установленным управляющим флагом FIN. В TCP отправка флага FIN не приводит
к автоматическому закрытию соединения — обе стороны должны отправить флаг
FIN и тем самым согласиться на закрытие соединения. Такой способ закрытия
называется корректным закрытием и предотвращает неожиданный выход одной
из сторон из соединения. Попробуем представить, что произойдет, если одна
сторона закроет соединение, не поставив об этом в известность другую сторону.
Другая сторона продолжит передавать данные, не получая подтверждений,
поскольку соединение уже разорвано. Это приведет к потере данных. Механизм
корректного закрытия, изображенный на рис. 11.17, предотвращает потерю
данных вследствие преждевременного выхода из соединения TCP.
TCP ULP
ULP TCP
Отправка""► —^ ^_ АСК
^ -^^
о w 44г^~*~~^^ FIN = 1 ^
Закрытие -->► ► --■>
^^^~ <— Отправка
^^^^\~ Ч--- Отправка Не готов
^—-^ ^— ^ к к закрытию
^--—--~" —~*"~"~~^ ^^-_-^- Ч— Отправка
АСК ---► -^^^^
•<— Закрытие
Закрытие «<-- -4г-"~"
АСК --> ►
Готов к закрытию
ULP = протокол верхнего уровня
(Upper Layer Protocol)
Рис. 11.17. Использование флага корректного закрытия FIN (с разрешения Learning Tree)
Говоря об использовании флагов TCP при отправке сообщений, также
следует уделить внимание флагу PSH. Флаг PSH первоначально предназначался
для оповещения TCP о немедленной обработке полученных данных. Если
приложение выдает серию вызовов SEND без установки флага PSH, модуль TCP
может накапливать данные в своем внутреннем буфере без отправки.
Аналогично, при получении серии сегментов без флага PSH модуль TCP может ставить
данные во внутреннюю очередь вместо того, чтобы передать их
соответствующему приложению. Бит PSH не используется для пометки записей и не зависит
от границ сегментов. Тем не менее некоторые реализации ошибочно
воспринимают PSH как метку записи. При пакетировании данных для отправки
наибольшего возможного сегмента передающая сторона должна объединять
последовательные установленные флаги PSH, заменяя их одним флагом.
Модуль TCP может реализовать поддержку флагов PSH для вызовов SEND.
Если поддержка PSH не реализована, то работа отправляющего модуля TCP
должна подчиняться следующим правилам:
1. Данные не должны храниться в буфере в течение неограниченного времени.
2. Модуль TCP должен установить флаг PSH в последнем буферизованном
сегменте (например, если в очереди нет других данных, ожидающих отправки).
В RFC 793 ошибочно утверждается, что полученный флаг PSH должен
передаваться прикладному уровню. Сейчас передача полученного флага PSH
прикладному уровню не обязательна.
Прикладная программа должна установить флаг PSH в вызове SEND
каждый раз, когда потребуется выполнить принудительную доставку данных для
предотвращения взаимных блокировок. Тем не менее для повышения
эффективности передачи модуль TCP должен по возможности отправлять сегменты
максимального размера. Отсюда следует, что на стороне отправителя PSH
установка флага PSH не обязательно приводит к немедленной отправке сегмента.
Если флаг PSH не реализован в вызовах TCP SEND (или если в интерфейсе
«приложение/TCP» используется чисто потоковую модель), ответственность
за объединение мелких фрагментов данных в сегменты нормального размера
частично возлагается на прикладной уровень. Как правило, протоколы
интерактивных приложений должны устанавливать флаг PSH — по крайней мере, в
последнем вызове SEND каждой команды или ответа. Протоколы массовой
передачи данных (такие, как FTP) должны устанавливать флаг PSH в последнем
сегменте файла или по мере необходимости для предотвращения блокировки
буфера. Рисунок 11.18 поясняет использование флага PSH.
Модуль TCP Модуль TCP
отправителя получателя
о о ч-
^ ^ ^ При установке
<л со со I I флага PSH
^ I ^ I °; I I I данные в буфере
ПП fSl fSl т4 принудительно
шшш доставляются
I °° J I Iе0 J Ll °° I приложениям
I 1^1 1^1 1^ к
Буферы TCP Буферы TCP
| SEG11 SEG2|SEG3| ~"j | | ~]
v м / ж р=;
у -г-
A SEG, PSH = 1
| I I
Установленный флаг PSH
приказывает немедленно
отправить сегменты,
накопленные в буферах TCP
Рис. 11.18. Использование флага TCP PSH (с разрешения Learning Tree)
На стороне получателя бит PSH форсирует немедленную доставку
буферизованных данных приложению (даже если полученные данные не заполняют
буфер). И наоборот, отсутствие PSH помогает обойтись без лишних обращений
к прикладному процессу, что может существенно повысить производительность
работы на крупных хостах с разделением времени.
В TCP также предусмотрены средства экстренной отправки данных с
использованием флага URG. Флаг URG используется в сочетании с полем
указателя срочности для обхода очереди и немедленной отправки важного
сообщения для получателя. Благодаря механизму экстренной передачи отправитель
может передавать сигналы прерывания и отмены, которые при поступлении к
получателю не ставятся в стандартную очередь данных.
Посмотрим, что могло бы произойти без такого механизма. Предположим, вы
хотите отменить обработку передаваемых пользовательских данных. Если
экстренное сообщение будет ставиться получателем в обычную очередь данных TCP,
оно может оказаться бесполезным, поскольку такое сообщение будет прочитано
лишь после обработки всех данных, предшествующих экстренному сообщению
в очереди. Как правило, в этих случаях экстренное сообщение будет
обрабатываться слишком поздно. А если прикладной процесс, которому адресовано
экстренное сообщение, «зависнет» после чтения неверных данных, то это
сообщение вообще не будет прочитано.
Установка флага URG означает, что поле указателя срочности содержит
действительные данные (рис. 11.19). В RFC 1122 говорится, что указатель
срочности ссылается на порядковый номер последнего октета LAST (не LAST+1)
в последовательности срочных данных, а в RFC 793 приводится неправильная
ссылка на LAST+1.
Реализация TCP должна поддерживать передачу экстренных данных
произвольной длины. Уровень TCP асинхронно информирует прикладной
уровень о получении указателя срочности без необработанных срочных данных или
о том, что срочный указатель вызывает смещение текущей позиции в потоке
данных. При этом должен существовать механизм, при помощи которого
приложение могло бы узнать, сколько экстренных данных ожидает чтения из
соединения или по крайней мере — существуют ли такие данные. Хотя область
применения механизма срочности не ограничена, обычно он используется для
отправки команд прерывания в программе Telnet. Асинхронное оповещение
позволяет приложению перейти в режим экстренного чтения данных из
соединения TCP. Таким образом, приложение может получать управляющие команды
даже в том случае, если его стандартные буферы ввода заполнены
необработанными данными.
Окно
Поле окна используется получателем для управления потоком данных.
Модуль TCP на стороне получателя сообщает модулю TCP на стороне отправителя
размер «окна», то есть количество октетов (начиная с номера для
подтверждения), которое в настоящий момент готов принять модуль TCP на стороне
получателя.
Ф Используется
для внеочередной
отправки данных.
Обрабатывается получателем
немедленно, без ожидания
обработки предшествующих
октетов потока
• Имеет смысл только при URG = 1
. _—, > TELENET 5
Ж ^—>
l^n^1^^! > тср р
Заголовок TCP Экстренное
<URG> urg = 1 сообщение
t t
SEQ SEQ + URGPTR - 1
• Указатель срочности
обозначает последний
октет срочного сообщения
Рис. 11.19. Флаг TCP URG (с разрешения Learning Tree)
Контрольная сумма
Поле контрольной суммы содержит дополнение до 1 суммы дополнений до 1
всех 16-разрядных слов пакета TCP. Для вычисления контрольной суммы перед
заголовком TCP подставляется 96-разрядный псевдозаголовок (рис. 11.20),
который позволяет убедиться в том, что пакет прибыл к правильному месту
назначения. Псевдозаголовок обеспечивает защиту от ошибок маршрутизации
сегментов. В нем присутствует идентификатор протокола F для TCP), IP-адреса
отправителя и получателя. Поскольку заголовок TCP содержит номера портов
отправителя и получателя, совокупность данных в заголовках описывает
соединение между конечными точками, то есть задает полную ассоциацию,
образованную соединением TCP.
Поле длины TCP в псевдозаголовке содержит суммарную длину заголовка
TCP и данных в октетах (значение не передается в явном виде, а вычисляется).
В значении поля не учитываются 12 октетов псевдозаголовка.
Параметры
Поле параметров TCP может находиться в конце заголовка TCP, а его длина
должна быть кратна 8 битам. Значение поля параметров учитывается при вычис-
лении контрольной суммы. Параметры могут начинаться с произвольной
границы октета.
Существует два формата параметров:
О Тип параметра (один октет).
О Тип параметра (один октет), длина параметра (один октет) и собственно
данные параметра.
О 8 16 24 31
i ' ' ' '—п
IP-адрес отправителя
I Псевдо-
Г заголовок
IP-адрес получателя
О I Про™ол I Длина TCP
Заголовок TCP
^С^ Данные <у,
Рис. 11.20. Псевдозаголовок при вычислении контрольной суммы TCP
В поле длины параметра учитываются первые два октета (тип и длина) и
собственно октеты данных. Фактическая длина списка параметров может быть
меньше указанной в поле смещения данных, в этом случае оставшаяся часть
заголовка после параметра с типом 0 заполняется нулями.
В настоящее время определены следующие параметры:
Тип Длина Описание
0 - Конец списка параметров
1 - Нет операции
2 4 Максимальный размер сегмента
Параметры типа 0 и 1 являются представителями первого формата.
Структура параметров TCP показана на рис. 11.21.
Параметр типа 0 обозначает конец списка параметров, который может не
совпадать с концом заголовка TCP, определяемым полем смещения данных. Он
находится в конце всего списка параметров (а не каждого параметра по
отдельности!). Присутствие этого параметра обязательно только в том случае,
если список параметров не совпадает с концом заголовка.
I oooooooo ~|
Тип = 0
I 00000001 ~]
Тип = 0
I 00000010 | 00000100 | MSS ~|
Тип = 0 Длина = 4
Рис. 11.21. Параметры TCP
Параметр типа 1 может находиться между параметрами для того, чтобы
начало следующего параметра было выровнено по границе слова. Использование
этого параметра отправителем TCP не гарантировано, поэтому получатели TCP
должны быть готовы обрабатывать параметры даже в том случае, если они не
начинаются с границы слова.
В настоящее время только параметр типа 2 несет полезную информацию —
максимальный размер сегментов (MSS). Значение MSS согласовывается только
в начале соединения TCP, при синхронизации порядковых номеров (при
установленном флаге SYN). Обычно каждая сторона соединения TCP отправляет
свой параметр MSS, сообщая его используемое значение другой стороне. Если
параметр MSS не используется, разрешаются сегменты любого размера.
Накопительные подтверждения в TCP
По сравнению с транспортными протоколами в других семействах протоколов
в TCP принята несколько необычная интерпретация порядковых номеров. В
большинстве транспортных протоколов порядковый номер относится к номеру
пакета. В TCP дело обстоит иначе — порядковые номера назначаются отдельным
октетам. TCP передает октеты в сегментах переменной длины. Если получатель
не подтвердил получение сегмента, эти сегменты передаются заново. Не
существует гарантии того, что повторно передаваемый сегмент будет в точности
совпадать с исходным, потому что с момента отправки исходного пакета
приложение-отправитель могло сгенерировать дополнительные данные.
Следовательно, номер для подтверждения не может относиться к отправленному сегменту.
В TCP номер для подтверждения определяет позицию в потоке данных, до
которой данные были получены и подтверждены удаленным модулем TCP. Один
номер для подтверждения может подтверждать получение октетов, переданных
в разных сегментах данных. На рис. 11.22 изображены три сегмента, переданные
отправителем, которые подтверждаются всего одним номером для подтверждения.
Многие реализации TCP стремятся свести к минимуму количество
отдельных сегментов подтверждений. Например, реализация TCP может постараться
отправлять одно подтверждение для каждых двух полученных сегментов данных.
Поскольку сегменты TCP в конечном счете инкапсулируются в
дейтаграммах IP, нельзя гарантировать того, что они поступят к получателю в
определенном порядке. Модуль TCP на стороне получателя использует порядковые номера
для формирования непрерывного потока октетов. Получатель подтверждает
самую длинную непрерывную последовательность октетов, принятую до настоя-
щего момента. Если в потоке октетов имеется пробел, представляющий
потерянные данные, модуль TCP на стороне получателя подтверждает только данные,
предшествующие пробелу.
Отправитель Получатель
Ф ^^X — Одно подтверждение
^Л^-^^^ для трех предыдущих
^itf№>^^ сегментов данных
Рис. 11.22. Одно подтверждение для нескольких сегментов данных
Преимущество накопительных подтверждений заключается в том, что потеря
подтверждений не означает необходимости повторной пересылки.
Следовательно, даже если одно подтверждение было потеряно в процессе передачи,
последующие подтверждения подтвердят ранее все данные, которые были получены
до настоящего момента. С другой стороны, накопительные подтверждения
становятся неэффективными при потере части принимаемых данных. Данные,
находящиеся после пробела, могут быть подтверждены только после того, как будут
приняты отсутствующие данные. Отправитель не получает информации об
успешном приеме данных после пробела, потому что получатель может подтвердить
только данные, предшествующие пробелу. Рисунок 11.23 поясняет ситуацию.
На этом рисунке сегменты SEG2 и SEG3 были приняты успешно, а сегмент SEG1
был потерян во время передачи.
Хотя сегменты SEG2 и SEG3 были приняты успешно, потерянный сегмент
SEG1 образует пробел в потоке данных, принимаемом на стороне получателя.
Отправитель не может сместить окно, так как он еще не получил
подтверждения для SEG1. Получатель не располагает средствами, которые позволили бы
сообщить отправителю об успешном приеме сегментов SEG2 и SEG3. На этой
стадии возможны две ситуации:
1. Отправитель дожидается тайм-аута и заново передает сегменты SEG1, SEG2
и SEG3. В этом случае пересылка сегментов SEG2 и SEG3 оказывается лишней,
поскольку эти сегменты уже были успешно приняты получателем. Повторная
пересылка SEG2 и SEG3 лишь порождает избыточный сетевой трафик.
• Подтверждения
- Относятся к позиции байта
в строке, а не к номеру пакета
- Имеют накопительный характер
Достоинство: потеря подтверждений
не приводит к вынужденной
повторной передаче
Недостаток: отправитель не знает
об успешно принятых данных
после потерянного фрагмента
SEQ= 101
\<— Размер окна—> SEG 2 SEG 3
I i_ Буфер Буфер . ? Ш////Ш////1
I Г отправки получения П ; Ш//Ш/////1
Потерян
[SEG 1|SEG 21SEG 3| ^ ^^ Ч^
1 ( |SEG1J X Л
f |SEG 2J [SEG 3| )
< ^~~\Л уч^_^
АСК = 101 Ч -^
Рис. 11.23. Отправитель не может получить информацию об успешно
принятых данных (с разрешения Learning Tree)
2. Отправитель дожидается тайм-аута, отправляет только сегмент SEG 1 и
ожидает подтверждения, прежде чем принимать решение о пересылке
дополнительных данных. Когда получатель принимает SEG1, он отправляет пакет с
накопительным подтверждением, которое подтверждает принятие сегмента SEG1
и ранее переданных сегментов SEG2 и SEG3. Хотя этот сценарий кажется более
эффективным, следует учитывать, что отправитель должен дождаться
подтверждения SEG1 перед тем, как передавать SEG2 и SEG3. Следовательно,
отправитель не использует преимущества большого окна и передает данные
только по одному сегменту.
Адаптивный тайм-аут в TCP
Протокол TCP изначально проектировался для работы в глобальных сетях
(WAN); позднее он был адаптирован для локальных сетей. По этой причине
TCP обладает рядом преимуществ перед протоколами, которые разрабатывались
только для локальных сетей. В частности, в TCP предусмотрены нетривиальные
алгоритмы, которые автоматически подстраиваются под широкий диапазон
задержек, возникающих при отправке сообщений в глобальных сетях. Для
локальных сетей такое разнообразие задержек не характерно.
Протокол IP обладает одним интересным свойством: даже если уровень IP
дважды передает одно сообщение по одному маршруту, время прибытия
сообщения к конечной точке будет различаться из-за следующих факторов:
О В глобальных сетях сообщения обычно передаются последовательно, то есть
по одному. Если канал глобальной сети занят отправкой других данных,
сообщению придется ждать в очереди, что вносит в задержку элемент
неопределенности.
О Маршрутизаторы, разделяющие сегменты глобальных сетей, могут быть
перегружены пиковым трафиком. Возможно, дейтаграммам IP, принимаемым
маршрутизатором, придется ждать в очереди, пока маршрутизатор не сможет
определить маршрут для дейтаграммы. Но даже после определения маршрута
дейтаграммам иногда приходится ждать в очереди, пока не освободится
сетевой интерфейс, открывающий доступ к маршруту. Наконец, в худшем случае
дейтаграммы поступают с такой скоростью, что они заполняют всю свободную
память маршрутизатора, и последнему приходится удалять дейтаграммы, не
помещающиеся в памяти. Такая ситуация возможна из-за того, что в сетях
IP не предусмотрена возможность предварительного выделения памяти для
отдельных соединений TCP.
Уровень IP спроектирован таким образом, что каждая дейтаграмма IP
маршрутизируется независимо от других дейтаграмм. Последовательные сегменты
TCP в соединении могут передаваться по разным маршрутам, что создает
разные задержки при прохождении по разным маршрутизаторам и каналам.
Когда модуль TCP отправляет сообщение, он ждет подтверждения, чтобы
сместить окно. Но как долго следует ждать? Время ожидания называется
интервалом тайм-аута. Из-за существенных различий в задержке при передаче
пакетов TCP используется механизм адаптивного тайм-аута. В основу его работы
заложен адаптивный алгоритм повторной передачи, описанный ниже.
1. Измерить время между отправкой октета с конкретным порядковым номером
и получением подтверждения, включающего этот номер. Измеренное время
называется периодом кругового обращения (RTT, Round-Trip Time). На
основании RTT вычисляется величина сглаженного периода кругового обращения
(SRTT, Smoothed RTT) по формуле:
SRTT = (а х SRTT) + ((l-a)xRTT)
где а — весовой коэффициент в интервале от 0 до 1 @ < a < 1). SRTT
составляет оценку тайм-аута. Таким образом, новое значение SRTT представляет
собой взвешенную сумму старого значения SRTT и нового значения RTT.
Если a = 0,5, SRTT представляет собой среднее арифметическое старого
SRTT и нового RTT:
SRTT - (SRTT + RTT)/2, при a = 0,5
Если коэффициент а меньше 0,5, больший вес назначается фактическому
периоду кругового обращения (RTT). Если же а больше 0,5, то больший вес
назначается предыдущему сглаженному периоду кругового обращения (SRTT).
В двух крайних случаях коэффициент а равен 0 или близок к 1. При a = 0
значение SRTT всегда совпадает с RTT, а если коэффициент а близок к 1,
используется фиксированное значение SRTT, практически не учитывающее
реально измеренное значение RTT. Не стоит и говорить, что два крайних
случая редко используются на практике, но они помогают лучше понять
природу взвешенной суммы.
2. Значение SRTT используется для вычисления тайм-аута повторной
передачи (RTO, Retransmission Time-Out) по формуле:
RTO - min[UBOUND,max[LBOUND,(PxSRTT)]]
где UBOUND — верхняя граница тайм-аута (например, 1 минута), a LBOUND —
нижняя граница тайм-аута (например, 1 секунда). Присутствие этих
значений гарантирует, что RTO будет принадлежать интервалу между LBOUND
и UBOUND. Коэффициент разброса времени задержки р изменяет
чувствительность задержки. Если р = 1, то значение RTO будет равно SRTT, если
только значение SRTT не выходит из интервала (LBOUND,UBOUND). При
использовании значения р = 1 протокол TCP чувствителен к потере пакетов,
а ожидание перед повторной передачей будет иметь минимальную
продолжительность. Тем не менее слишком малые задержки могут стать
причиной лишней повторной пересылки данных. Чтобы протокол TCP был менее
восприимчив к потере пакетов, следует использовать большие значения р.
В RFC 793 рекомендуются значения от 1,3 до 2,0.
В 1987 году Карн (Кагп) и Партридж (Partridge) в процессе работы группы
ACM SIGCOMM'87 опубликовали документ «Improving Round-Trip Estimates
in Reliable Transport Protocols». Хотя этот документ и не был оформлен как
RFC, он повлиял на разработку некоторых реализаций TCP и особенно — на
реализацию TCP для BSD Unix. С тех пор этот алгоритм называется
алгоритмом Карпа. В RFC 1122 рекомендуется использовать алгоритм Карна в
сочетании с алгоритмом замедленного старта в перегруженных сетях Ван Джейкобсона
(Van Jacobson), описанным ниже в разделе «Снижение последствий перегрузки
сети в TCP». Алгоритм Карна, учитывающий повторную передачу сегментов,
описан ниже.
При повторной передаче данных по алгоритму Карна значение SRTT не
изменяется. Вместо этого используется стратегия регулировки тайм-аута путем
применения масштабного коэффициента. Смысл заключается в том, что при
повторной передаче данных в сети происходит нечто непредвиденное, поэтому
тайм-аут также следует резко увеличить для предотвращения повторной
передачи в будущем. Изменение тайм-аута производится по простой формуле вида:
новый тайм-аут = у х тайм-аут
Формула применяется до тех пор, пока не будет достигнута заранее
установленная верхняя граница. Обычно коэффициент у устанавливается равным 2;
в этом случае алгоритм ведет себя как экспоненциальный алгоритм с
двукратным увеличением. Новый тайм-аут не влияет на значение SRTT, используемое
в обычных вычислениях. При получении подтверждения для сегмента, не
требующего повторной передачи, TCP изменяет RTT и использует это значение
для вычисления SRTT и RTO.
Снижение последствий перегрузки сети в TCP
Протокол TCP способен реагировать на перегрузку сети TCP, для чего он
регулирует интервал тайм-аута и повторно пересылает данные в том случае, если
подтверждение не было получено до истечения интервала. Тем не менее повторная
передача лишь увеличивает объем данных, обрабатываемых сетью, и усугубляет
проблемы с перегруженностью. Если в результате многочисленных повторных
передач объем повторно передаваемых данных достигнет общей
информационной емкости сети, это неизбежно приведет к коллапсу. В условиях
перегруженной сети необходимы средства для замедления или полной остановки запуска
новых данных в сеть.
В 1988 году в процессе работы группы ACM SIGCOMM'88 Ван Джейкобсон
опубликовал документ «Congestion Avoidance and Control». В этом документе
кратко описаны принципы реагирования на перегруженность сети посредством
снижения объема данных, передаваемых отправителем. Маршрутизаторы,
обнаруживающие перегруженность сети, передают отправителю сообщение ICMP
Source Quench; отправитель передает это сообщение модулю TCP, тем самым
уведомляя его о перегруженности сети.
ПРИМЕЧАНИЕ
Такое средство, как алгоритм замедленного старта Ван Джейкобсона, помогает бороться с
перегруженностью сети за счет динамической регулировки размеров окна.
Алгоритм замедленного старта Ван Джейкобсона пытается уменьшить
перегруженность сети посредством регулировки размера окна TCP. Он поддерживается
всеми современными реализациями TCP. Более того, алгоритм Ван
Джейкобсона наряду с алгоритмом Карна должен быть обязательно реализован в
соответствии с требованиями RFC 1122
В алгоритме Ван Джейкобсона реализация TCP отслеживает дополнительное
предельное значение, называемое размером окна при перегрузке. Реально
используемый размер окна совпадает с меньшим из двух значений: размером окна
при перегрузке и размером окна TCP, установленным получателем:
фактический размер окна = min {размер окна при перегрузке, размер окна TCP}
В обычных условиях, когда сеть не перегружена, размер окна при перегрузке
совпадает с размером окна TCP; это означает, что фактический размер окна
равен размеру окна TCP. При обнаружении условий перегруженности (например,
при потере сегмента) алгоритм Ван Джейкобсона сокращает размер окна при
перегрузке в два раза. При каждой последующей потере сегмента размер окна
при перегрузке снова уменьшается вдвое. Этот процесс приводит к быстрому
экспоненциальному уменьшению размера окна. Если потеря данных
продолжается, размер окна TCP уменьшается до одного сегмента; это означает, что за
один раз передается только одна дейтаграмма. В то же время алгоритм Карна
удваивает интервал тайм-аута перед повторной передачей. Процесс
кардинального сокращения объема передаваемых данных называется экспоненциальным
откатом или мультипликативным сокращением.
В алгоритме Ван Джейкобсона для выхода из перегрузки сети используется
замедленный старт. При получении подтверждения для каждого сегмента
алгоритм увеличивает размер окна при перегрузке на один сегмент. Поскольку
начальный размер окна при перегрузке при сильно перегруженной сети равен 2,
при получении подтверждения он увеличивается до 2. Таким образом, далее
TCP может переслать два сегмента. Если для этих сегментов возвращаются
подтверждения, размер окна при перегрузке становится равным 4, что позволяет
TCP передать четыре сегмента. При подтверждении приема этих сегментов
размер окна становится равным 8. Окно продолжает увеличиваться до тех пор,
пока размер окна при перегрузке не сравняется с размером окна,
установленным получателем. Вследствие экспоненциального возрастания размера окна при
перегрузке отправка N сегментов становится возможной после log2(N) успешно
переданных сегментов.
Если размер окна при перегрузке растет слишком быстро, это может
привести к возрастанию сетевого трафика перед тем, как сеть полностью
восстановится после перегрузки. Если же перегрузка возникнет снова, размер окна при
перегрузке быстро уменьшится. Все эти увеличения и уменьшения приводят
к частым колебаниям размеров окна. Алгоритм Ван Джейкобсона
предотвращает слишком быстрое увеличение размера окна при перегрузке при помощи
методики предотвращения перегрузки. Когда размер окна при перегрузке дости^
гает половины исходного размера окна TCP, далее он увеличивается на один
сегмент только в том случае, если были подтверждены все сегменты,
отправленные до настоящего момента.
Борьба с синдромом мелкого окна
Ранним реализациям TCP было присуще патологическое состояние, которое
называлось синдромом мелкого окна (SWS, Silly Window Syndrome). В этом
состоянии при некоторых условиях данные TCP передаются всего по одному октету,
то есть сегмент TCP состоит только из одного октета, а каждый октет
подтверждается по отдельности. Синдром мелкого окна возникает при выполнении
любого из следующих условий:
О Приложение на стороне получателя читает данные по одному октету из
заполненного буфера, а модуль TCP на стороне получателя передает
отправителю подтверждения TCP с размером окна, равным 1 (рис. 11.24).
О Приложение на стороне отправителя генерирует данные по одному октету,
а модуль TCP на стороне отправителя немедленно передает эти данные
(рис. 11.25).
На рис. 11.24 получатель указывает размер окна, равный одному октету,
поэтому отправитель передает данные только по одному октету. Сразу же после
приема этого октета получающее приложение читает один октет данных, и
модуль TCP снова объявляет окно размера 1. Далее все продолжается в цикле.
На рис.11.25 отправитель передает только один октет данных. Модуль TCP
на стороне отправителя не ждет дальнейшего накопления данных, а немедленно
отправляет этот октет. Приложение-отправитель продолжает генерировать октеты
по одному, и каждый октет немедленно отправляется получателю.
Г Приложение Л
г" получающее J
V данные )
д Чтение по одному
• октету
I Буфер TCP
Will II III III ■ 1
Л -г,-ч« ' J ;1 октет
Окно TCP ;
i I
i .,-■■. i ,.- i , i
ОКНО i
TCP = 1 Получатель | к ;
^г-7 1 («Jg——^s=n ^
^ [ [тнинпшштнтв сгг=гз J I
I I
*- - J -J
Рис. 11.24. Синдром мелкого окна, вызванный действиями получателя
В обеих ситуациях возникают огромные непроизводительные затраты на
пересылку данных, что объясняется следующими причинами:
О В процессе передачи данных генерируется огромное количество мелких пакетов.
О Каждый пакет обрабатывается отдельно на канальном уровне, уровнях IP
и TCP отправителя и получателя. Промежуточные маршрутизаторы должны
обрабатывать пакеты на канальном уровне и уровне IP.
О На каждом из протокольных уровней выполняется огромное количество лишних
вычислений — для каждого пакета приходится по отдельности выполнять
маршрутизацию, проверку контрольной суммы и инкапсуляцию/декапсуляцию.
Кроме того, для каждого пакета вычисляется порядковый номер и номер для
подтверждения, а также производится его обработка в буферах приема/передачи.
О Отношение объема протокольных заголовков к объему полезных данных
чрезвычайно велико; следовательно, эффективность протокола низка. Это
приводит к снижению реальной скорости передачи данных.
О Так как каждый сегмент подтверждается по отдельности, суммарные задержки
накапливаются до значительной величины, что также снижает скорость
передачи. При пересылке 1000 октетов в канале с задержкой 50 мс
суммарная задержка составит 1000 х 50 мс = 5 секунд. Если предположить, что
время передачи пакета по каналу относительно мало по сравнению с
задержкой, суммарная скорость передачи составит всего 1000 октетов х 8 бит/октет/
5 секунд = = 1600 бит/с.
С Приложение, Ч
г отправляющее^
V данные J
• Запись по одному
I октету
i
Окно TCP [///] | Буфер TCP
Отправитель , Кднал
Д = I
^"""—--J Размер сегмента
рг^^ш^^™гт1 • TCP равен 1 октету
T I .=!?■
Рис. 11.25. Синдром мелкого окна, вызванный действиями отправителя
Для предотвращения синдрома мелкого окна на стороне получателя в
реализациях TCP используются следующие средства:
О Отложенное объявление размера окна. Если размер окна получателя меньше
заданного размера, получатель откладывает объявление размера окна до тех
пор, пока размер окна получателя не достигнет величины
min@,5 х размер буфера получателя, максимальный размер сегмента)
О Отложенное подтверждение. Отправка подтверждений с размером окна
получателя, вычисленным в соответствии с предыдущим пунктом списка,
откладывается. Такая задержка уменьшает объем сетевого трафика за счет
уменьшения количества подтверждений. Как говорилось выше, подтверждения
TCP имеют накопительный характер, поэтому более позднее подтверждение
подтверждает все данные, полученные до настоящего момента. При этом
возникает риск того, что из-за задержки с подтверждением на стороне
отправителя произойдет тайм-аут, и он перешлет сегменты повторно. Чтобы этого не
произошло, подтверждения откладываются не более чем на 500 миллисекунд.
Во многих реализациях максимальная задержка с отправкой подтверждений
ограничивается 200 миллисекундами. С другой стороны, подтверждение
сегментов данных необходимо для того, чтобы отправитель располагал
достаточной статистикой по периодам круговых обращений для работы адаптивного
алгоритма тайм-аута.
Вместо задержки подтверждений также можно использовать другой способ:
подтверждения не откладываются, а отправляются немедленно, но размер окна
в них не объявляется до тех пор, пока он не достигнет заранее заданного порога.
Тем не менее применять такой подход в TCP не рекомендуется.
Для предотвращения синдрома мелкого окна на стороне отправителя в
реализациях TCP используется алгоритм Нейгла (Nagle), основанный на
следующих принципах:
О Отправитель передает первый сегмент данных. После первого сегмента
данных отправитель не выполняет немедленную отправку коротких сегментов,
даже если приложение-получатель устанавливает флаг PSH.
О Данные передаются только при выполнении следующих условий:
1. Объем накопленных данных достаточен для заполнения сегмента
максимального размера.
2. Во время ожидания отправки данных поступает подтверждение.
3. Происходит тайм-аут.
Приложение, быстро генерирующее данные, быстро заполнит буфер TCP на
стороне отправителя до максимального размера сегмента. TCP отправляет
сегмент максимального размера без задержек. Кроме того, при получении
подтверждения хранящиеся в буфере данные отправляются немедленно даже в том
случае, если их суммарный размер меньше максимального размера сегмента.
Если приложение медленно генерирует данные, сегменты будут отправляться
при получении подтверждений. Тем временем в буфере TCP на стороне
отправителя будут накапливаться новые данные.
Для приложений реального времени, требующих минимальной задержки и
отправляющих большой объем данных за один раз, применение алгоритма Нейгла
можно запретить.
Разрыв соединений TCP
При сбое на удаленном компьютере или в сетевом канале пересылка данных по
соединению TCP прекращается. Как TCP узнает, что соединение не работает,
а выделенные ему ресурсы следует освободить? На хост может прийти
сообщение ICMP, которое сообщает TCP о том, что получатель недоступен. Прежде
чем сообщить приложению о разрыве соединения, TCP несколько раз пытается
переслать сегменты заново. А если TCP не получит сообщения ICMP, потому
что они потеряны во время передачи? В этом случае после достижения первого
порогового числа повторных передач TCP приказывает IP узнать, не связана ли
проблема с неработоспособностью маршрутизатора или маршрута. IP пытается
заново вычислить маршрут к получателю. Тем временем TCP продолжает
попытки повторной передачи до тех пор, пока не будет достигнут второй порог,
после чего соединение объявляется разорванным. Обнаружив разорванное
соединение, модуль TCP должен освободить все связанные с ним ресурсы (например,
буферы ТСВ).
Если ни одна из конечных точек соединения в течение долгого времени не
передает данных, соединение поддерживается в пассивном состоянии.
Пассивное соединение расходует ресурсы даже при выходе из строя сетевого канала
или другой конечной точки. Некоторые реализации TCP периодически
передают проверочное сообщение TCP, чтобы убедиться в сохранении связи. При
отправке проверочного сообщения от получателя должно прийти подтверждение.
Периодичность отправки проверочных сообщений выбирается таким образом,
чтобы она имела смысл для большинства приложений, работающих на хосте
TCP. Если сообщения будут отправляться слишком часто, это породит лишний
трафик, тогда как слишком большой интервал между сообщениями не позволит
TCP своевременно узнать о разрыве соединения.
Конечный автомат TCP
На рис. 11.26 изображена диаграмма поведения TCP, представленная в виде
конечного автомата — логической модели поведения системы, внутреннее
состояние которой изменяется в результате наступления некоторых событий. Блоки
представляют состояния автомата, а стрелки — переходы из одного состояния
в другое. Надписи на стрелках указывают, какое событие вызвало данный
переход (над чертой), а также ответ TCP на это событие (под чертой). «X» вместо
ответа означает отсутствие специального ответа.
[CLOSED)< —у \ Активное открытие
Пассивное открытие га CLOSE \ \ create ТС
create ТСВ I delete TCB \\ **т
Пассивное ^Щ \\
открытие у^у CLOSE | ]
rcvSYN SEND delete TCB I I
( L sndSYN.ACK J [ sndSYN wf—^k
SYN И ' «J: П SYN 1
I RCVD J< ffS, ==j SENT I
rcvACKofSYN rev SYN, ACK Активное открытие
X I I sndACK
CLOSE данных iKIABySHEDj Пассивное закрытие
r~"l CLOSE" T\ rev FIN . 1
i \^Г). ™>m \ \\ sndACK i ЬГШГ) i
! I WAiT-ip ~ ч ; H wai J ;
; I rev ACK of FIN rev FIN \ ; CLOSE I 1
I X sndACK I i , sndRNX ;
• jm т » < t ▼ ,
! ( ШГЛ Одновременное ( C[DmG Y. \ lLAST-АСк) i
I l. WAJTB- J закрытие I i. ' U_™J !
I rev ACK of FINI ; , rev ACK of FIN ;
; ЩШ> X 1 Тайм-аут = 2MSL^ ? -I---'
! sndACK / *—TdeleteTfjr- , ▼ч
; * И TIME WATT U J CLOSED )
\,■,■,,■,м,;л;■;J^Wл■■.^л^:^^^^.;^F: i У.л.мА. .,■..,■ ■.■.■■.■,.......w,<!5;
\ J
Активное закрытие
Рис. 11.26. Диаграмма состояний TCP в виде конечного автомата
Каждая из конечных точек соединения TCP первоначально находится в
закрытом состоянии (CLOSED). Стрелки, ведущие из блока CLOSED, указы-
вают, что соединение может произойти в результате как активного, так и
пассивного открытия (OPEN).
При активном открытии TCP создает ТСВ, отправляет сегмент с флагом SYN
и входит в состояние SYN SENT. Когда другая конечная точка отправляет ответ
с флагами SYN и АСК, TCP передает подтверждение для завершения трехфазного
согласования и входит в состояние установленного соединения (CONNECTION
ESTABLISHED).
При пассивном открытии конечная точка создает ТСВ и входит в состояние
прослушивания (LISTEN). Получив в этом состоянии флаг SYN (запрос на
активное открытие), TCP отправляет сегмент с порядковым номером, флагами SYN
и АСК и входит в состояние SYN RCVD. При получении флагов АСК или SYN
от другой конечной точки TCP входит в состояние установленного соединения.
Состояние TIME WAIT активизируется при закрытии соединения; оно
гарантирует задержку продолжительностью минимум в 2 MSL (Maximum Segment
Lifetime). Задержка предотвращает дублирование номеров сегментов (эта тема
обсуждалась выше в разделе «Флаги»).
Состояния FIN WAIT-1 и FIN WAIT-2 относятся к механизму корректного
закрытия соединений. Соединение закрывается лишь после того, как обе стороны
согласятся его закрыть.
Трассировка TCP
Протокол Telnet работает на базе TCP, и его трассировка хорошо подходит для
изучения поведения TCP. На рис. 11.27 приведена полная трассировка сеанса
Telnet при выполнении пользователем следующих действий:
1. Вход на сервер Telnet.
2. Выполнение различных команд на сервере Telnet.
3. Выход с сервера Telnet.
No. Source Destination Layer Size Summary
1 0000C024282D FFFFFFFFFFFF arp 0064 Req by 144.19.74.44 for 144.19.74
2 0000C024282D FFFFFFFFFFFF arp 0064 Req by 144.19.74.44 for 144.19.74
3 0000C0A20F8E 0000C024282D arp 0064 Reply 144.19.74.201=0000C0A20F8E
4 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET SYN
5 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK SYN
6 0000C024282D 0000C0A20F8E telnt 0069 Cmd=Do; Code=Echo; Cmd=Do; Code=S
7 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
8 0000C0A20F8E 0000C024282D telnt 0064 Cmd=Do; Code=;
9 0000C024282D 0000C0A20F8E telnt 0064 Cmd=Won't; Code=;
10 0000C0A20F8E 0000C024282D telnt 0067 Cmd=Will; Code=Echo; Cmd=Will; Co
11 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
12 0000C024282D 0000C0A20F8E telnt 0072 Cmd=Do; Code=Suppress Go Ahead;
13 0000C0A20F8E 0000C024282D telnt 0070 Cmd=Do; Code=Terminal Type; Cmd=D
14 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
15 0000C024282D 0000C0A20F8E telnt 0072 Cmd=Will; Code=Terminal Type; Cmd
16 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
17 0000C0A20F8E 0000C024282D telnt 0064 Cmd=Subnegotiation Begin; Code=Te
18 0000C024282D 0000C0A20F8E telnt 0071 Cmd=Subnegotiation Begin; Code=Te
19 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
20 0000C0A20F8E 0000C024282D telnt 0067 Cmd=Do; Code=Echo; Cmd=Will; Code
21 0000C024282D 0000C0A20F8E telnt 0069 Cmd=Won't; Code=Echo; Cmd=Don't;
22 0000C0A20F8E 0000C024282D tcp 0064 Port.TELNET ---> 6295 ACK
23 0000C0A20F8E 0000C024282D telnt 0104 Data=..Linux 1.3.50 (Itreecl.Itre
24 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
25 0000C0A20F8E 0000C024282D telnt 0064 Data=..
26 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
Рис. 11.27. Трассировка трафика Telnet
27 O000C0A20F8E 0000C024282D telnt 0073 Data=ltreecl login:
28 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
29 0000C024282D 0000C0A20F8E telnt 0064 Data=u
30 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
31 0000C0A20F8E 0000C024282D telnt 0064 Data=u
32 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
33 0000C024282D 0000C0A20F8E telnt 0064 Data=s
34 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
35 0000C0A20F8E 0000C024282D telnt 0064 Data=s
36 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
37 0000C024282D 0000C0A20F8E telnt 0064 Data=e
38 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
39 0000C0A20F8E 0000C024282D telnt 0064 Data=e
40 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
41 0000C024282D 0000C0A20F8E ' telnt 0064 Data=r
42 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
43 0000C0A20F8E 0000C024282D telnt 0064 Data=r
44 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
45 0000C024282D 0000C0A20F8E telnt 0064 Data=l
46 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
47 0000C0A20F8E 0000C024282D telnt 0064 Data=l
48 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
49 0000C024282D 0000C0A20F8E telnt 0064 Data=..
50 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
51 0000C0A20F8E 0000C024282D telnt 0064 Data=..
52 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
53 0000C0A20F8E 0000C024282D telnt 0068 Data=Password:
54 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
55 0000C024282D 0000C0A20F8E telnt 0064 Data=u
56 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
57 0000C024282D 0000C0A20F8E telnt 0064 Data=s
58 0000C0A2OF8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
59 0000C024282D 0000C0A20F8E telnt 0064 Data=e
60 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
61 0000C024282D 0000C0A20F8E telnt 0064 Data=r
62 0000C0A20F8E 0O00C024282D tcp 0064 Port:TELNET ---> 6295 ACK
63 0000C024282D 0000C0A20F8E telnt 0064 Data=l
64 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
65 0000C024282D 0000C0A20F8E telnt 0064 Data=p
66 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
67 0000C024282D 0000C0A20F8E telnt 0064 Data=w
68 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
69 0000C024282D 0000C0A20F8E telnt 0064 Data=..
70 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
71 0000C0A20F8E 0000C024282D telnt 0064 Data=
72 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
73 0000C0A20F8E 0000C024282D telnt 0113 Data=Last login: Wed May 28 18:33
74 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
75 0000C0A20F8E 0000C024282D telnt 0073 Data=Linux 1.3.50...
76 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
77 0000C0A20F8E 0000C024282D telnt 0064 Data=..
78 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
79 0000C0A20F8E 0000C024282D telnt 0069 Data=Power, n:..
80 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
81 0000C0A20F8E 0000C024282D telnt 0119 Data=.The only narcotic regulated
82 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
83 0000C0A20F8E 0000C024282D telnt 0064 Data=..
84 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
85 0000C0A20F8E 0000C024282D telnt 0069 Data=ltreecl:-$
86 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
87 0000C024282D 0000C0A20F8E telnt 0064 Data=l
88 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
89 0000C0A20F8E 0000C024282D telnt 0064 Data=l
90 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
91 0000C024282D 0000C0A20F8E telnt 0064 Data=s
92 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
93 0000C0A20F8E 0000C024282D telnt 0064 Data=s
94 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
95 0000C024282D 0000C0A20F8E telnt 0064 Data=
96 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
97 0000C0A20F8E 0000C024282D telnt 0064 Data=
98 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
99 0000C024282D 0000C0A20F8E telnt 0064 Data=-
100 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
101 0000C0A20F8E 0000C024282D telnt 0064 Data=-
102 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
Рис. 11.27. Трассировка трафика Telnet (продолжение)
103 0000C024282D 0000C0A20F8E telnt 0064 Data=a
104 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
105 0000C0A20F8E 0000C024282D telnt 0064 Data=a
106 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
107 0000C024282D 0000C0A20F8E telnt 0064 Data=l
108 0000C0A20F8E 0000C024282D tcp 0064 PortiTELNET ---> 6295 ACK
109 0000C0A20F8E 0000C024282D telnt 0064 Data=l
110 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
111 0000C024282D 0000C0A20F8E telnt 0064 Data=..
112 0000C0A20F8E 0000C024282D tcp 0064 PortiTELNET ---> 6295 ACK
113 0000C0A20F8E 0000C024282D telnt 0064 Data=..
114 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
115 0000C0A20F8E 0000C024282D telnt 0067 Data=total 7..
116 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
117 0000C0A20F8E 0000C024282D telnt 0130 Data=drwxr-xr-x 3 userl user
118 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
119 0000C0A20F8E 0000C024282D telnt 0131 Data=drwxr-xr-x 19 root root
120 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
121 0000C0A20F8E 0000C024282D telnt 0138 Data=-rw-r--r-- 1 userl user
122 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
123 0000C0A20F8E 0000C024282D telnt 0132 Data=-rw-r--r-- 1 userl user
124 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
125 0000C0A20F8E 0000C024282D telnt 0130 Data=-rw-r--r-- 1 userl use
126 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
127 0000C0A20F8E 0000C024282D telnt 0132 Data=-rw-r--r-- 1 userl use
128 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
129 0000C0A20F8E 0000C024282D telnt 0134 Data=drwxr-xr-x 2 userl use
130 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
131 0000C0A20F8E 0000C024282D telnt 0064 Data=l
132 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
133 0000C0A20F8E 0000C024282D telnt 0068 Data=treecl:~$
134 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
135 0000C024282D 0000C0A20F8E telnt 0064 Data=p
136 0000C0A20F8E 0000C024282D tcp 0064 PortiTELNET ---> 6295 ACK
137 0000C0A20F8E 0000C024282D telnt 0064 Data=p
138 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
139 0000C024282D 0000C0A20F8E telnt 0064 Data=s
140 0000C0A20F8E 0000C024282D tcp 0064 PortiTELNET ---> 6295 ACK
141 0000C0A20F8E 0000C024282D telnt 0064 Data=s
142 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
143 0000C024282D 0000C0A20F8E telnt 0064 Data=
144 0000C0A20F8E 0000C024282D tcp 0064 PortiTELNET ---> 6295 ACK
145 0000C0A20F8E 0000C024282D telnt 0064 Data=
146 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
147 0000C024282D 0000C0A20F8E telnt 0064 Data=-
148 0000C0A20F8E 0000C024282D tcp 0064 PortiTELNET ---> 6295 ACK
149 0000C0A20F8E 0000C024282D telnt 0064 Data=-
150 0000C024282D 0000C0A20F8E tcp 0064 Porti6295 ---> TELNET ACK
151 0000C024282D 0000C0A20F8E telnt 0064 Data=a
152 0000C0A20F8E 0000C024282D tcp 0064 PortiTELNET ---> 6295 ACK
153 0000C0A20F8E 0000C024282D telnt 0064 Data=a
154 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
155 0000C024282D 0000C0A20F8E telnt 0064 Data=l
156 0000C0A20F8E 0000C024282D tcp 0064 PortiTELNET ---> 6295 ACK
157 0000C0A20F8E 0000C024282D telnt 0064 Data=l
158 0000C024282D 0000C0A20F8E tcp 0064 Porti6295 ---> TELNET ACK
159 0000C024282D 0000C0A20F8E telnt 0064 Data=x
160 0000C0A20F8E 0000C024282D tcp 0064 PortiTELNET ---> 6295 ACK
161 0000C0A20F8E 0000C024282D telnt 0064 Data=x
162 0000C024282D 0000C0A20F8E tcp 0064 Porti6295 ---> TELNET ACK
163 0000C024282D 0000C0A20F8E telnt 0064 Data=..
164 0000C0A20F8E 0000C024282D tcp 0064 PortiTELNET ---> 6295 ACK
165 0000C0A20F8E 0000C024282D telnt 0064 Data=..
166 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
167 0000C0A20F8E 0000C024282D telnt 0133 Data= F UID PID PPIO PRI N1
168 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
169 0000C0A20F8E 0000C024282D telnt 0140 Data= 0 0 1 0 30 15
170 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
171 0000C0A20F8E 0000C024282D telnt 0143 Data= 0 0 2 1 30 15
172 0000C024282D 0000C0A20F8E tcp 0064 Porti6295 ---> TELNET ACK
173 0000C0A20F8E 0000C024282D telnt 0140 Data= 0 0 8 1 30 15
174 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
175 0000C0A20F8E 0000C024282D telnt 0140 Data= 0 0 24 1 30 15
176 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
177 0000C0A20F8E 0000C024282D telnt 0140 Data= 0 0 38 1 30 15
178 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
Рис. 11.27. Трассировка трафика Telnet (продолжение)
179 0000C0A20F8E 0000C024282D telnt 0140 Data= 0 0 40 1 30 15
180 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
181 0000C0A20F8E 0000C024282D telnt 0140 Data= 0 1 42 1 30 15
182 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
183 0000C0A20F8E 0000C024282D telnt 0140 Data= 0 0 44 1 30 15
184 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
185 0000C0A20F8E 0000C024282D telnt 0139 Data= 0 0 46 1 30 15
186 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
187 0000C0A20F8E 0000C024282D telnt 0140 Data= 0 0 49 1 30 15
188 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
189 0000C0A20F8E 0000C024282D telnt 0140 Data= 0 0 51 1 30 15
190 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
191 0000C0A20F8E 0000C024282D telnt 0140 Data= 0 0 53 1 30 15
192 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
193 0000C0A20F8E 0000C024282D telnt 0140 Data= 0 0 57 1 30 15
194 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
195 0000C0A20F8E 0000C024282D telnt 0140 Data= 0 0 61 1 30 15
196 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
197 0000C0A20F8E 0000C024282D telnt 0140 Data= 0 0 62 1 30 15
198 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
199 0000C0A20F8E 0000C024282D telnt 0140 Data= 0 0 63 1 30 15
200 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
201 0000C0A20F8E 0000C024282D telnt 0140 Data= 0 0 64 1 30 15
202 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
203 0000C0A20F8E 0000C024282D telnt 0140 Data= 0 0 65 1 30 15
204 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
205 0000C0A20F8E 0000C024282D telnt 0131 Data= 0 0 145 1 30 15
206 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
207 0000C024282D 0000C0A20F8E telnt 0064 Data=.
208 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
209 0000C0A20F8E 0000C024282D telnt 0136 Data= 0 0 258 44 29 15
210 0000C0A20F8E 0000C024282D telnt 0064 Cmd=;
211 0000C024282D 0000C0A20F8E telnt 0064 Data=.
212 0000C0A20F8E 0000C024282D telnt 0064 Data=.
213 0000C0A20F8E 0000C024282D tcp 0064 PortiTELNET ---> 6295 ACK
214 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
215 0000C0A20F8E 0000C024282D telnt 0071 Data=..ltreecl:~$
216 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
217 0000C024282D 0000C0A20F8E telnt 0064 Data=l
218 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
219 0000C0A20F8E 0000C024282D telnt 0064 Data=l
220 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
221 0000C024282D 0000C0A20F8E telnt 0064 Data=o
222 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
223 0000C0A20F8E 0000C024282D telnt 0064 Data=o
224 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
225 0000C024282D 0000C0A20F8E telnt 0064 Data=g
226 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
227 0000C0A20F8E 0000C024282D telnt 0064 Data=g
228 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
229 0000C024282D 0000C0A20F8E telnt 0064 Data=o
230 0000C0A20F8E 0000C024282D tcp 0064 PortiTELNET ---> 6295 ACK
231 0000C0A20F8E 0000C024282D telnt 0064 Data=o
232 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
233 0000C024282D 0000C0A20F8E telnt 0064 Data=u
234 0000C0A20F8E 0000C024282D tcp 0064 PortiTELNET ---> 6295 ACK
235 0000C0A20F8E 0000C024282D telnt 0064 Data=u
236 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
237 0000C024282D 0000C0A20F8E telnt 0064 Data=t
238 0000C0A20F8E 0000C024282D tcp 0064 Port:TELNET ---> 6295 ACK
239 0000C0A20F8E 0000C024282D telnt 0064 Data=t
240 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK
241 0000C024282D 0000C0A20F8E telnt 0064 Data=..
242 0000C0A20F8E 0000C024282D tcp 0064 PortiTELNET ---> 6295 ACK
243 0000C0A20F8E 0000C024282D tcp 0064 PortiTELNET ---> 6295 ACK FIN
244 0000C024282D 0000C0A20F8E tcp 0064 Port:6295 ---> TELNET ACK FIN
245 0000C0A20F8E 0000C024282D tcp 0064 PortiTELNET ---> 6295 ACK
Рис. 11.27. Трассировка трафика Telnet (продолжение)
Щкеты 1-3 на рис. 11.27 относятся к разрешению адресов ARP (эта тема
рассматривалась в главе 5). Собственно трафик Telnet начинается с пакета 4.
В дальнейшем анализе трафика Telnet, изображенного на рис. 11.27, будут
рассматриваться только аспекты, относящиеся к TCP, но не сами данные Telnet.
Номера пакетов, упоминаемые в тексте, соответствуют номерам пакетов на рис. 11.27.
По этой причине выше была приведена полная трассировка сеанса Telnet, хотя
листинг получился довольно большим.
Трехфазное согласование при открытии соединения TCP
На рис. 11.28-11.30 изображены три пакета TCP, участвующие в процессе
трехфазного согласования, используемого при открытии соединения TCP.
Packet Number : 4 6:38:38 РМ
Length : 64 bytes
ether: ==================== Ethernet Datalink Layer ====================
Station: 00-00-C0-24-28-2D > 00-00-C0-A2-0F-8E
Type: 0x0800 (IP)
ip: ======================= internet Protocol =======================
Station:144.19.74.44 >144.19.74.201
Protocol: TCP
Version: 4
Header Length C2 bit words): 5
Precedence: Routine
Normal Delay, Normal Throughput, Normal Reliability
Total length: 44
Identification: 1
Fragmentation allowed. Last fragment
Fragment Offset: 0
Time to Live: 100 seconds
Checksum: 0xAlAF(Valid)
tcp: ================= Transmission Control Protocol =================
Source Port: 6295
Destination Port: TELNET
Sequence Number: 25784320
Acknowledgement Number: 0
Data Offset C2-bit words): 6
Window: 4096
Control Bits: Synchronize Sequence Numbers (SYN)
Checksum: 0x4A87(Valid)
Urgent Pointer: 0
Option:MAXIMUM SEGMENT SIZE
Option Length: 4
Maximum Segment Size : 1024
Ethernet Type
Ethernet Header a
i T
(I т^и^^ w IP Header
00 00 C0 A2 0F 8E 00 00 C0 24 28 2P@80^L5 00 | $(-. .E.
^ Destination
10: 09 2C 00 01 08 00 64 06 Al AF(90 13 4A 2фС90 13 | . .d J. . . IP Address
20: 4A C9)A8 97)^?Т7)@Ге9 70 0^00 00 00 0ф((рГ03) | J p ' .
30: fi0 00)^АЛ87)Г00 00)(^(б4У04 00)@0 961 I | . . J
▼ Ill TIT Source I I
Checksum Option- Ethernet ,p
T ▼ 1 Length A Pad Address
Window Urgent Option- Option-
Pointer Kjnd Data
(MSS)
У ▼ ▼
Destination Sequence Data
Port B3) Number Offset
T T ▼
Source Port Acknowledgment Flags
F295) Number SYN=1
Рис. 11.28. Запрос на открытие соединения TCP: отправка
начального порядкового номера отправителя (ISS)
Перевод обозначений на этих и последующих рисунках данного типа
приведен в следующем списке:
О Ethernet Header — заголовок Ethernet;
О Ethernet Type — тип Ethernet;
О IP Header — заголовок IP;
О Destination IP Address — IP-адрес получателя;
О TCP Header — заголовок TCP;
О Window — окно;
О Checksum — контрольная сумма;
О Urgent Pointer — указатель срочности;
О Option-Kind (MSS) — тип параметра (MSS);
О Source Port F295) — порт отправителя F295);
О Destination Port B3) — порт получателя B3);
О Option Length — длина параметра;
О Ethernet Pad — дополнение Ethernet;
О Source IP Address — IP-адрес отправителя;
О Data Offset — смещение данных;
О Flags — флаги;
О Acknowledgement Number — номер для подтверждения;
О Option-Data — данные параметра;
О Sequence Number — порядковый номер.
Пакет TCP, инициирующий открытие соединения и представляющий фазу 1
трехфазного согласования, содержит следующие значения порядкового номера
и флагов:
ISS = 25784320
номер для подтверждения = 0 (недействителен, поскольку АСК=0)
Также обратите внимание на то, что поле смещения данных равно 6, что
указывает на наличие параметра TCP. В данном случае используется параметр MSS
(тип параметра равен 2) с шестнадцатеричным кодом
02 04 04 00
Код расшифровывается следующим образом:
О параметр: MSS (максимальный размер сегмента);
О длина параметра: 4;
О максимальный размер сегмента: 1 024.
В исходный пакет входят порты отправителя и получателя и размер окна:
О порт отправителя: 6295;
О порт получателя: 23 (стандартный порт сервера Telnet);
О размер окна: 4 096.
Порт отправителя задает номер порта, по которому клиент Telnet готов
принимать данные от сервера Telnet. Порт получателя задает номер порта сервера
Telnet, к которому обращается клиент для открытия соединения. Размер окна
определяет количество октетов, которые готов принять клиент Telnet;
фактически он совпадает с размером приемного буфера на клиентском узле TCP.
Packet Number : 5 6:38:38 РМ
Length : 64 bytes
ether: ==--.==-=-•-=--.---.----■ Ethernet Datalink Layer ====================
Station: 00-00-C0-A2-0F-8E > 00-00-C0-24-28-2D
Type: 0x0800 (IP)
1p: ======================= Internet Protocol =======================
Station:144.19.74.201 >144.19.74.44
Protocol: TCP
Version: 4
Header Length C2 bit words): 5
Precedence: Routine
Normal Delay. Normal Throughput, Normal Reliability
Total length: 44
Identification: 21410
Fragmentation allowed, Last fragment
Fragment Offset: 0
Time to Live: 64 seconds
Checksum: 0x720E(Valid)
tcp: ================= Transmission Control Protocol =================
Source Port: TELNET
Destination Port: 6295
Sequence Number- 1508167651
Acknowledgement Number: 25784321
Data Offset C2-bit words): 6
Window: 30719
Control Bits: Acknowledgement Field is Valid (ACK)
Synchronize Sequence Numbers (SYN)
Checksum: 0xB8AE(Valid)
Urgent Pointer: 0
Option:MAXIMUM SEGMENT SIZE
Option Length: 4
Maximum Segment Size : 1024
Ethernet Type
Ethernet Header a
t t
/I > li ^ > IP Header
0: @0 00 C0 24 28 2D 00 00 C0 A2 0F 8E @8 00Д4$ 00 | ...$(- E. "
fr noctinatinn
10: 90 2C 53 A2 00 09 40 96 72 9£ @0Ш 4А С9)(9в 13 [ . , S. . .@. r. . . J . . . *" \p Address
28: 4A 20$НГ7)(ГГ1^Е9 E4^^ 1 J Y p.'. w
_____ j' ^_"_f_ ^————»___«_«_r- .-*—mm—m———j—■—•—'' w*m_«____________——^. yQp НбвйбГ
30: |7 fF)fe8 UeN9 p)^?^^4ra^7l5J I |w re
▼ I I I T ▼ I I T ISource
JChecksum Option- Ethernet IP
T TW 1епЯ^ W Pa0* Address
Window Urgent I ~ J li . II
J(mss, | M
Destination Sequence Data
Port F295) Number Offset
T T T
Source Port Acknowledgment Flags
B3) Number SYN=1
ACK=1
Рис. 11.29. Подтверждение запроса на открытие соединения: передача
начального порядкового номера получателя (IRS)
На рис. 11.29 приведен пакет TCP, который передается получателем для
подтверждения запроса на соединение. Этот пакет представляет вторую фазу
трехфазного согласования:
О SYN - 1;
О АСК - 1;
О остальные флаги TCP равны 0;
О порядковый номер = 1508167651 (IRS);
О номер для подтверждения - 25784321 (ISS +1).
Пакет, изображенный на рис. 11.29, передается сервером Telnet с целью
синхронизации порядкового номера и содержит начальный порядковый номер,
установленный сервером. Также следует заметить, что поле смещения данных
равно 6, что указывает на наличие параметра TCP. В данном случае используется
параметр MSS (тип параметра равен 2) с шестнадцатеричным кодом
02 04 04 00
Код расшифровывается следующим образом:
О параметр: MSS (максимальный размер сегмента);
О длина параметра: 4;
О максимальный размер сегмента: 1 024.
В данном примере клиент и сервер Telnet используют одинаковые значения
MSS, но это условие выполняется далеко не всегда. В пакет подтверждения
запроса на открытие соединения также входят порты отправителя и получателя
и размер окна:
О порт отправителя: 23 (стандартный порт сервера Telnet);
О порт получателя: 6295;
О размер окна: 30 719.
Порт отправителя задает номер порта, по которому сервер Telnet готов
принимать данные от клиента Telnet. Порт получателя задает номер порта клиента
Telnet, с которого поступил запрос на открытие соединения. Размер окна
определяет количество октетов, которые готов принять сервер Telnet; фактически он
совпадает с размером приемного буфера на серверном узле TCP. Обратите
внимание — это число больше того, которое использовалось клиентом Telnet.
На рис. 11.30 представлена последняя фаза трехфазного согласования:
клиент подтверждает порядковый номер, полученный от сервера Telnet. Пакет
содержит следующие флаги и значения полей:
О АСК - 1;
О PSH = 1;
О остальные флаги TCP равны 0;
О порядковый номер = 25784321 (ISS+1);
О номер для подтверждения = 1508167652 (IRS+1).
Предполагается, что флаг PSH сообщит TCP о необходимости отправить
данные. Для предотвращения синдрома мелкого окна применяется алгоритм
Нейгла (роль алгоритма Нейгла рассматривается в разделе «Борьба с
синдромом мелкого окна» настоящей главы).
Packet Number : 6 6:38:38 РМ
Length : 69 bytes
ether: ==================== Ethernet Datalink Layer ====================
Station: 00-00-C0-24-28-2D > 00-00-C0-A2-0F-8E
Type: 0x0800 (IP)
ip: ======================= Internet Protocol =======================
Station:144.19.74.44 >144.19.74.201
Protocol: TCP
Version: 4
Header Length C2 bit words): 5
Precedence: Routine
Normal Delay, Normal Throughput. Normal Reliability
Total length: 49
Identification: 2
Fragmentation allowed. Last fragment
Fragment Offset: 0
Time to Live: 100 seconds
Checksum: 0xAlA9(Valid)
tcp: ================= Transmission Control Protocol =================
Source Port: 6295
Destination Port: TELNET
Sequence Number: 2S784321
Acknowledgement Number: 1508167652
Data Offset C2-bit words): 5
Window: 4096
Control Bits: Acknowledgement Field is Valid (ACK)
Push Function Requested (PSH)
Checksum: 0xl8A9(Valid)
Urgent Pointer: 0
telnt: ======================== Telnet Protocol ========================
Command: Do
Option Code: Echo
Command: Do
Option Code: Suppress Go Ahead
Command: Will
Option Code:
Ethernet Type
Ethernet Header a
_f t
/—■ j I i4 w IP Header
0:@0 98 CO A2 0F 8E 00 88 C8 24 28 2D E>8 G8J45 00. | $(-..E.
^ r w Destination
10: 08 31 08 02 00 00 64 06 Al AS $9 13 4A 2CJ#0 13 % |. 1 d J ,. . IP Address
20: 4A €9N^97)^9 17)^1 89 78 91)^9 €4|СР ^jflfffi |J p.Y...P.
30: Ш 88)(ША9)&0 ee)f F FD 01 FF IfD 83 IFF FB llFJ |
40: || f| I M T I |.
IChecksuml II у II у II
у I у I $ео<иег,од X I Source I I
Window Urgent Number Telnet IP Address
Pointeij Data
Y T
DestinaUon I *£
± J ±
c«.T^« Acknowledgment _, T
PSH=1
Рис. 11.30. Подтверждение начального порядкового номера получателя (IRS)
Поле смещения данных равно 5, что указывает на отсутствие параметров TCP.
Номера портов и размер окна имеют следующие значения:
О порт отправителя: 6295;
О порт получателя: 23 (стандартный порт сервера Telnet);
О размер окна: 4 096.
Порт отправителя представляет конечную точку соединения TCP на клиенте
Telnet. Порт получателя представляет конечную точку соединения TCP на сервере
Telnet. Размер окна определяет количество октетов, которые готов принять клиент
Telnet, то есть фактически размер приемного буфера на клиентском узле TCP.
Трассировка нормальных данных TCP
В пакете 6 (см. рис. 11.30), завершающем трехфазное согласование и
подтверждающем IRS получателя, передаются 9 октетов данных Telnet:
FF FD 01 FF FD 03 FF FB IF
Как определить, что передаются именно 9 октетов данных Telnet? Сначала
мы узнаем размер дейтаграммы IP по значению соответствующего поля
заголовка IP (см. рис. 11.30). Размер дейтаграммы равен 49 октетам. Из них 20 октетов
(длина заголовка равна 5 блокам) занимает заголовок TCP. Для данных Telnet
остается 49 - 29 - 20 = 9 октетов.
Пакет 6 открывает режим пересылки данных в сеансе Telnet. Пакет 7 (рис. 11.31)
подтверждает прием этих данных от сервера. Сервер Telnet на этой стадии еще
не имеет данных для передачи и поэтому ограничивается отправкой
подтверждения.
Пакет содержит следующие флаги и значения полей:
О АСК - 1;
О остальные флаги TCP равны 0;
О порядковый номер = 1508167652;
О номер для подтверждения = 25784330.
Обратите внимание: возвращаемый номер для подтверждения подтверждает
прием 9 октетов клиентских данных Telnet:
О ISN от клиента Telnet - 25784321;
О размер данных Telnet = 9;
О подтверждение - ISN от клиента Telnet + размер данных Telnet = 25784321 + 9 =
- 25784330.
Через секунду после отправки подтверждения сервер Telnet отправляет
ответ клиенту в пакете 8 (рис. 11.32). Если бы сервер Telnet был готов отправить
ответ немедленно, он бы включил эти данные в пакет 7. Чтобы предотвратить
отправку большого количества мелких пакетов, TCP откладывает отправку
подтверждений, но в соответствии со стандартом TCP максимальная задержка не
превышает 500 миллисекунд (за подробностями обращайтесь к разделу «Борьба
с синдромом мелкого окна»). Между пакетами 7 и 8 прошла одна секунда; об
этом можно узнать по временным пометкам, выводимым в первой строке рас-
шифровки пакета. Временная пометка определяет момент сохранения пакета
анализатором протокола.
Packet Number : 7 6:38:38 РМ
Length : 64 bytes
ether: ==================== Ethernet Oatalink Layer ====================
Station: 00-00-C0-A2-0F-8E > 00-00-C0-24-28-2D
Type: 0x0800 (IP)
ip: ======================= Internet Protocol =======================
Station:144.19.74.201 >144.19.74.44
Protocol: TCP
Version: 4
Header Length C2 bit words): 5
Precedence: Routine
Normal Delay, Normal Throughput, Normal Reliability
Total length: 40
Identification: 21411
Fragmentation allowed, Last fragment
Fragment Offset: 0
Time to Live: 64 seconds
Checksum: 0x7211(Valid)
tcp: ================= Transmission Control Protocol =================
Source Port: TELNET
Destination Port: 6295
Sequence Number: 1508167652
Acknowledgement Number: 25784330
Data Offset C2-bit words): 5
Window: 30710
Control Bits: Acknowledgement Field is Valid (ACK)
Checksum: 0xCEB7(Valid)
Urgent Pointer: 0
Ethernet Type
Ethernet Header a
/—1 I >■ IP Header
0:@0 00 C0 24 28 2D 00 00 C0 A2 0F 8E (88 00^45 60 |. . .$(- E.
4 — — —^ w Destination
10: 00 28 53 A3 00 00 40 96 72 11 ;j&8. 13 4A СЭ)фв 13 ; |. (S. . .§. r. . . J . . . ^* IP Address
20: 4A 2<3 |6 17H,8 97X59 E4 CF tifel «9 70 6^($)TIS) [J Y p.P.
30: G7 F6)fcE 87Y00 te^(&2 04 |04 00 72 |б5) 1 |w re
▼ III III Source
Checksum IP Address
▼ ▼ T
Window Urgent Ethernet
Pointer Pad
7 ▼ M
Destination Sequence Data
Port Number Offset
T T T
Source Acknowledgment Flags
Port Number ACK=1
Рис. 11.31. Пакет подтверждения
Объем данных, переданных в пакете 8, вычисляется по уже известной формуле:
размер дейтаграммы IP - длина заголовка IP - смещение данных TCP =
= 43 - 20 - 20 = 3 октета
Packet Number : 243 6:39:12 PM
Length : 64 bytes
ether: ==================== Ethernet Datalink Layer ====================
Station: 00-e0-Ce-A2-0F-8E > 00-00-C0-24-28-2D
Type: 0x0800 (IP)
ip: ======================= Internet Protocol =======================
Station:144.19.74.201 >144.19.74.44
Protocol: TCP
Version: 4
Header Length C2 bit words): 5
Precedence: Routine
Normal Delay, Normal Throughput. Normal Reliability
Total length: 40
Identification: 21533
Fragmentation allowed. Last fragment
Fragment Offset: 0
Time to Live: 64 seconds
Checksum: 0x7197(Valid)
tcp: ================= Transmission Control Protocol =================
Source Port: TELNET
Destination Port: 6295
Sequence Number: 1508170215
Acknowledgement Number: 25784420
Data Offset C2-bit words): 5
Window: 30719
Control Bits: Acknowledgement Field is Valid (ACK)
No More Data from Sender (FIN)
Checksum: 0xC450(Valid)
Urgent Pointer: 0
Ethernet Type
Ethernet Header д
/—I- / I ^ ► IP Header
0:100 00 C0 24 28 2D 00 00 C0 A2 0F 8E F8 00J4S 69 |...$(- E.
v— _— Zw > Destination
10: 00 28 $4 ID 09 90 49.0$ 71; $7 §3 1% 4A C9)&0 13 1.(T...§.q...J . . . IP Address
20: 4A 20рТт)^Г97)ф9 €4 D9 1^Ш^;^ в4)^]^Тз) [J Y pdP.
". ' j "}"" • ^————* г ' I ]| l ™^^~^^^^^^^ш^^^шш^^ TCP Header
30: ft? ?У)(&4 $ф(&0ШЗ)^4 QA|6C 74 72 |б5) 1 |w..P..t.ltre
will Source
Checksum IP Address
▼ ▼ T
Window Urgent Ethernet
Pointer Pad
V ▼ ▼
Destination Sequence Datal
Port Number Offsed
T T T
Source Acknowledgment Flags
Port Number ACK=1
FIN=1
Рис. 11.32. Передача данных TCP
Корректное закрытие соединений TCP
В пакетах 217-242 (см. рис. 11.27) клиент передает серверу команду завершения
сеанса Telnet. Команда пересылается по одному символу. Пакеты 243-245
демонстрируют работу механизма корректного закрытия соединений. В пакете 243
(рис. 11.33) сервер Telnet, получивший команду выхода, выдает запрос на завер-
шение соединения TCP установкой флага FIN. Флаг означает, что у сервера
Telnet нет больше данных для отправки.
Packet Number : 243 6:39:12 РМ
Length : 64 bytes
ether: ==================== Ethernet Datalink Layer ====================
Station: 09-00-C0-A2-0F-8E > 00-00-C0-24-28-2O
Type: 0x0800 (IP)
1p: ======================= Internet Protocol =======================
Station:144.19.74.201 >144.19.74.44
Protocol: TCP
Version: 4
Header Length C2 bit words): 5
Precedence: Routine
Normal Delay, Normal Throughput. Normal Reliability
Total length: 40
Identification: 21533
Fragmentation allowed. Last fragment
Fragment Offset 0
Time to Live: 64 seconds
Checksum: 0x7197(Valid)
tcp: ================= Transmission Control Protocol =================
Source Port: TELNET
Destination Port: 6295
Sequence Number 1508170215
Acknowledgement Number: 25784420
Data Offset C2-bit words): 5
Window: 30719
Control Bits: Acknowledgement Field is Valid (ACK)
No Ноге Data from Sender (FIN)
Checksum: 0xC450(Valid)
Urgent Pointer: 0
Ethernet Type
Ethernet Header a
/-J- ^L^ ,, ► IP Header
0:f 00 00 C0 24 28 2D 00 00 C0 A2 0F 8E 08 00Д45 06 \ . . .$(- E.
4 ■ ^ . .....,;: w Destination
10: 00 28 54 ID S0 60 40 06 71 Э7 (98 U 4A С9)&в Ш|. (Т. . .g.q. . . J . .. IP Address
20: ДА 2Q£e 17)A8 97)g?l4 D9 E7}flTw 78 M(s]f79 IJ Y pdP.
30: fr7 FF)g4 $6)fe0]00)^4 0А|бС 74 72 [65) I |w. .P. . t.Ure
I T III I Source I
Checksum IP Address
I I t I III
Window Urgent Ethernet
Pointer Pad
Destination Sequence I Date I
Port Number Offset
T T T
Source Acknowledgment Flags
Port Number ACK=1
FIN=1
Рис. 11.33. Запрос на корректное закрытие, выданный сервером Telnet
В пакете 244 (рис. 11.34) клиент Telnet отвечает установкой флага FIN со
своей стороны, сообщая тем самым, что клиент готов закрыть соединение и у него
нет больше данных для отправки. Данная реализация устанавливает размер
окна равным 9, указывая тем самым, что модуль TCP на стороне клиента
прекращает прием данных.
Packet Number : 244 6:39:12 РМ
Length : 64 bytes
ether: ss5SsraStsssssssss=s Ethernet Datalink Layer ===============«=*=
Station: 99-06-08-24-28-20 > e0-09-Ce-A2-0F-8E
Type: 0x0800 (IP)
1p: sssssssssssssssssssrsrs Internet ProtOCOl ==========*===:=========
Station:144.19.74.44 >144.19.74.201
Protocol: TCP
Version: 4
Header Length C2 bit words): 5
Precedence: Routine
Normal Delay. Normal Throughput, Normal Reliability
Total length: 40
Identification: 117
Fragmentation allowed. Last fragment
Fragment Offset: 0
Time to Live: 100 seconds
Checksum: 0xA13F(Valid)
tcp: *«=s===s==s====== Transmission Control Protocol =================
Source Port: 6295
Destination Port: TELNET
Sequence Number: 25784420
Acknowledgement Number: 1508170216
Data Offset C2-bit words): 5
Window: 0
Control Bits: Acknowledgement Field is Valid (ACK)
No More Data from Sender (FIN)
Checksum: 0x3C4F(Valid)
Urgent Pointer: 0 _
Ethernet Type
A
Ethernet Header
I I
/—' м I 4V . >» IP Header
0:100 09 C0 A2 0F 8E 00 00 C0 24 28 2D |8~eejL5 00 | $(-..E.
4 .. ""■"^. •■•■: Destination
10: 00 2$ 00 75 00 00 «4 06 Al 3E $B 13 4A 2C)g& 13 |. (.u..d.. ?. . J ,. . ^IP Address
20:ЖЩ^ЯЩ^В1^§Г 89 70 64){jjj f4 D9 p)^| Щ M pdY...P. ^TCP НваЬвГ
зо: @0 ee)Cc|4F)(e8|ee)^e 00 00 00 fe bs\ I |..<o
I T I I I II I Source I
[Checksum] IP Address
▼ ▼ T
Window Urgent Ethernet
Pointer Pad
▼ ▼ n*
Destination Sequence D?*3
Port Number olfset
T T T
Source Acknowledgment Flags
Port Number ACK=1
FIN=1
Рис. 11.34. Клиент Telnet соглашается корректно закрыть соединение
На рис. 11.35 сервер Telnet подтверждает получение флага FIN от клиента
Telnet. На этой стадии модули TCP на стороне клиента и сервера Telnet
освобождают ресурсы, связанные с соединением TCP.
Packet Number : 245 6:39:12 PM
Length : 64 bytes
ether: ==================== Ethernet Datalink Layer ====================
Station: 0e-00-C8-A2-0F-8E > 00-00-C0-24-28-2D
Type: 0x0800 (IP)
ip: ======================= Internet Protocol =======================
Station:144.19.74.201 >144.19.74.44
Protocol: TCP
Version: 4
Header Length C2 bit words): 5
Precedence: Routine
Normal Delay. Normal Throughput, Normal Reliability
Total length: 40
Identification: 21534
Fragmentation allowed. Last fragment
Fragment Offset: 0
Time to Live 64 seconds
Checksum: 0x7196(Valid)
tcp: ================= Transmission Control Protocol ===■=============
Source Port: TELNET
Destination Port: 6295
Sequence Number: 1508170216
Acknowledgement Number: 25784421
Data Offset C2-bit words): 5
Window: 30718
Control Bits: Acknowledgement Field is Valid (ACK)
Checksum: 0xC450(Valid)
Urgent Pointer: 0
Ethernet Type
Ethernet Header a
^_L I w IP Header
0:( 00 00 C0 24 28 2D 00 00 C0 A2 0F 8E Ю800М5 00 | . . .$(- E.
4 ; ^~^ w Destination
10: 00 28 54 Ц 00 00 40 66 7*96 {jjj 13 4A C9)fo 13 | . (T. . .g.q. .. J.. . IP Address
20: 4A 3$@iTl?)fr* gflgJT 64 E9 g$)fcl ^S#g[6S)|5)fT5) | J Y peP.
:':' ",",.,'■' .1 i •• • t '•'! ' • jJJ '"■■-■■] ■ л J W TCP Header
30: fr7 FBNtp0)fe0 ee)G4 0A |6C 74 72 [65 ) | w. P. . t. Ure
Checksum *
▼ I ▼ I W Source
Window Urgent EthJrnet IP
Pointer Pad Address
T ▼ T
Destination Sequence Data
Port Number Offset
T T T
Source Acknowledgment Flags
Port Number ACK=1
Рис. 11.35. Подтверждение запроса на корректное закрытие от клиента Telnet
Протокол UDP
В некоторых приложениях надежность и устойчивость TCP оказываются
излишними. В таких приложениях вполне достаточно транспортного протокола, который
бы обеспечивал идентификацию приложений на двух компьютерах и обладал
простейшими средствами проверки ошибок. Такими возможностями обладает
протокол UDP (User Datagram Protocol).
В отличие от протокола TCP, ориентированного на соединение, протокол UDP
работает в режиме простой передачи дейтаграмм. UDP не пытается создать
соединение. Данные инкапсулируются в заголовках UDP и передаются
уровню IP. Уровень IP пересылает пакет UDP в одной дейтаграмме IP, если
пересылка не требует фрагментации. UDP не пытается обеспечивать упорядоченный
прием данных, поэтому порядок принятых данных может отличаться от порядка,
использовавшегося при отправке. Приложения, требующие сохранения порядка
приема, должны либо реализовать механизм упорядочения самостоятельно, либо
использовать протокол TCP вместо UDP. Во многих локальных сетях
вероятность нарушения исходного порядка пакетов невелика, что объясняется
небольшими, легко прогнозируемыми задержками и простой топологией сети.
Протокол UDP особенно удобен в приложениях, работающих по схеме
«команда/ответ», в которых команды и ответы могут пересылаться в одной
дейтаграмме. В этом случае приложение не тратит ресурсы на открытие и закрытие
соединений для пересылки малого объема данных. Другое преимущество UDP
проявляется при широковещательной и групповой рассылке. При использовании
TCP для рассылки сообщений по 1000 узлов отправитель должен создать 1000
соединений, передать данные по каждому соединению по отдельности, а затем
закрыть 1000 соединений. Непроизводительные затраты на открытие соединений,
их поддержание и закрытие слишком велики. При использовании протокола
UDP отправитель может передать данные модулю IP с запросом на
широковещательную или групповую рассылку. В этом случае отправка данных может
осуществляться средствами широковещательной/групповой рассылки базовой сети.
Протокол UDP поддерживает простейшую проверку целостности данных.
Если базовая сеть заведомо надежна, то для ускорения обработки UDP проверку
контрольных сумм UDP можно запретить.
Основные особенности UDP можно охарактеризовать следующим образом:
О протокол UDP обладает средствами идентификации прикладных процессов
по номерам портов UDP;
О протокол UDP ориентируется на передачу дейтаграмм без затрат на
открытие, поддержание и закрытие соединений;
О протокол UDP эффективно работает при широковещательной/групповой
рассылке;
О порядок пересылаемых данных не сохраняется, а их доставка не
гарантирована;
О в UDP поддерживается необязательная проверка контрольных сумм,
которая ограничивается данными;
О по быстроте, простоте и эффективности протокол UDP превосходит TCP, но
при этом он уступает ему по надежности.
Протокол UDP обеспечивает ненадежный и не ориентированный на
соединение сервис доставки данных. Он относится к протоколам транспортного уровня,
что выглядит несколько странно, так как транспортный уровень должен обеспе-
чивать целостность при сквозной передачи данных, a UDP этого не делает.
Но несмотря на этот недостаток, на базе UDP построено достаточно много
популярных приложений, в том числе:
О TFTP (Trivial File Transfer Protocol);
О DNS (Domain Name System);
О NFS (Network File System) версии 2;
О SNMP (Simple Network Management Protocol);
О RIP (Routing Information Protocol);
О многие службы широковещательной рассылки, включая WHOD (демон Who
на серверах Unix).
Ниже протокол UDP будет описан более подробно.
Структура заголовка UDP
Заголовок UDP имеет фиксированную длину, равную 8 октетам. Структура
заголовка UDP представлена на рис. 11.36.
О 7 8 1516 23 24 31
• 1 1 1 1
Порт Порт
отправителя получателя
Дяииа | ХТмГ
Октеты
данных
Рис. 11.36. Структура заголовка UDP
Порт отправителя имеет длину 16 бит и является необязательным. Если
поле содержит действительные данные, оно определяет номер порта
процесса-отправителя; этот номер должен использоваться для отправки ответов при
отсутствии дополнительной информации. Если поле заполнено нулями, то номер
порта отправителя не используется.
Поле порта получателя идентифицирует процесс на приемном IP-адресе,
которому передаются данные UDP. Как и TCP, протокол UDP распределяет
данные разных процессов-получателей по номерам портов. Если UDP получает
дейтаграмму с неиспользуемым номером порта (то есть номером, с которым не
связано приложение UDP), он генерирует сообщение ICMP о недоступности
порта и отвергает дейтаграмму.
Поле длины содержит длину пакета UDP в октетах, с учетом как длины
заголовка UDP, так и длины данных. Минимальное значение поля длины равно 8
и указывает на то, что поле данных имеет нулевой размер.
Поле контрольной суммы содержит 16-разрядное дополнение до 1 суммы
дополнений до 1 псевдозаголовка с данными IP, заголовка UDP и данных, ко-
торые при необходимости выравниваются нулями до 16-разрядной границы.
Контрольная сумма проверяется по тем же правилам, что и в TCP.
Псевдозаголовок, подставляемый перед заголовком UDP, содержит адреса
отправителя и получателя, идентификатор протокола (для UDP он равен 17)
и длину дейтаграммы UDP (рис. 11.37). Содержимое псевдозаголовка
обеспечивает защиту от неправильной маршрутизации дейтаграмм. Псевдозаголовок
имеет фиксированный размер, равный 12 октетам. Информация псевдозаголовка
полностью определяет половинную ассоциацию для получателя, даже несмотря
на отсутствие соединения.
О 7 8 15 16 23 24 31
Порт отправителя
Порт получателя
| Ноль | Протокол | дейта^НмаыиРР |
Рис. 11.37. Псевдозаголовок UDP, используемый при вычислении контрольной суммы
Если вычисленная контрольная сумма равна 0, передаваемое поле
заполняется единицами (дополнение до 1). Следовательно, нулевая контрольная сумма
никогда не может быть получена в результате вычислений и используется для
обозначения особого условия. Если передаваемое поле контрольной суммы
состоит из одних нулей, это означает, что контрольная сумма не используется.
Приложения, работающие в надежных сетях IP (например, в локальных сетях),
могут запретить вычисление контрольных сумм при передаче и их проверку при
получении дейтаграмм UDP.
Протокол UDP работает на базе IP. Контрольная сумма IP вычисляется только
для заголовка, тогда как контрольная сумма UDP охватывает как заголовок UDP,
так и данные и обеспечивает гарантии целостности содержимого поля.
Иерархия UDP и инкапсуляция
Как видно из рис. 11.38, протокол UDP работает на базе IP. Приложения,
использующие UDP, идентифицируются по номеру порта UDP. Нумерация
портов UDP и TCP производится в разных адресных пространствах. Следовательно,
вы можете использовать порт TCP с номером 1017 и порт UDP с номером 1017,
ссылающиеся на разные прикладные процессы.
На рис. 11.39 показано, как данные UDP инкапсулируются в заголовке IP,
который, в свою очередь, инкапсулируется канальным уровнем. Протокол UDP
обозначается кодом 17.
Между UDP и IP существует достаточно тесная связь, поскольку уровень
UDP должен знать IP-адрес для заполнения псевдозаголовка. Как говорилось
выше, псевдозаголовок является частью контрольной суммы UDP. Отсюда
следует, что модуль UDP должен уметь получать IP-адреса и код в поле протокола
из заголовка IP. Один из возможных интерфейсов UDP/IP возвращает всю
дейтаграмму IP вместе со всеми данными заголовка IP в ответ на операцию
RECEIVE, инициированную приложением UDP. Такой интерфейс позволит
UDP передавать IP полную дейтаграмму IP вместе с заголовком. Уровень IP
проверяет целостность некоторых полей и вычисляет контрольную сумму
заголовка IP.
UDP
IP
Канальный
уровень
Физический
уровень
Рис. 11.38. Иерархия протокола UDP
Заголовок Данные
UDP UDP
. Л у .- !
Заголовок Данные
IP IP
**" ^
. !t,.v „i ..•*'* .
., - n - Контрольная
Канальный Дейтаграмма последовательность
заголовок IP кадра
Рис. 11.39. Инкапсуляция данных UDP
Трассировка UDP
На рис. 11.40 и 11.41 изображены два пакета UDP. Первый пакет сгенерирован
демоном WHOD (Who Daemon) системы Unix, а второй — протоколом RIP.
WHOD использует порты UDP отправителя и получателя с номерами 513.
У протокола RIP номера портов отправителя и получателя равны 520. В обоих
приведенных пакетах контрольная сумма отлична от нуля, а следовательно,
используется при проверке данных.
Packet Number : 2 19:57:22 РМ
Length : 130 bytes
ether: ==================== Ethernet Oatalink Layer 8»г.ккик«ккк
Station: 00-00-C0-BB-E8-73 > FF-FF-FF-FF-FF-FF
Type: 0x0800 (IP)
1p; ssssssssxsssssssssssssx Internet PrOtOCOl =======================
Station:199.245.180.15 >199.245.180.255
Protocol: UDP
Version: 4
Header Length C2 bit words): 5
Precedence: Routine
Normal Delay, Normal Throughput. Normal Reliability
Total length: 112
Identification: 296
Fragmentation allowed. Last fragment
Fragment Offset: 0
Time to Live: 64 seconds
Checksum: 0x805B(Valid)
udp: ===================== user Datagram Protocol ====================
Source Port: WHO
Destination Port: WHO
Length = 92
Checksum: 0x086A(Valid)
Data:
0: 01 01 00 00 31 ЕЕ А4 F5 00 00 00 00 67 61 74 65 | 1 gate
10: 6B 65 65 70 65 72 00 00 00 00 00 00 00 00 00 00 |keeper
20: 00 00 00 00 00 00 00 90 00 00 00 00 00 00 00 00 |
30: 00 00 00 00 00 00 00 00 31 ЕЕ 7F 85 63 6F 6E 73 | l...cons
40: 6F 6C 65 00 72 6F 6F 74 00 00 00 00 31 ЕЕ 80 10 |ole.root 1...
50: 00 00 24 36 |..$6
Ethernet Type
Ethernet Header A ,p Header
A It
0:(FF FF FF FF FF FF 00 00 C0 BB E8 73 §800J45 00 I S..E.
4 v—==y Destination
10: 00 78 01 28 № M 48 11 80 5В%* F5 B4 0F)t7 F5 I. p. (. .@.. [ ^ IP Address
Header 20: B4 f%& 0l)fe2 0lXft8 SC)fe8 6a)@1 01 Io0 00 31 EE^| \ . j. . . . 1.
30:Га4 F5 00 Io0 00|©0 6?|61 74 1б5 6В 65 65 70 65 72 | gatekeeper
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ||
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
60: 00 00 31 ЕЕ 7F 85 63 6F 6E 73 6F 6C 65 00 72 6F |..1...console.ro
70:l6F 74 00 00 00 00 31 ЕЕ 80 10 00 00 24 36 J|ot....l $6
I I T I
Length
▼ 1 <92> T
UDP Data T Checksum
(Who Data) Destination >(Г
Port E13) Source
Y IP Address
Source Port
E13)
Рис. 11.40. Пакет UDP для процесса WHOD
Packet Number : 4 10:57:57 PM
Length : 70 bytes
ether: ==================== Ethernet Datalink Layer ====================
Station: 00-00-C0-A2-0F-8E > FF-FF-FF-FF-FF-FF
Type: 0x0800 (IP)
ip: ======================= Internet Protocol =======================
Station:144.19.74.201 >144.19.255.255
Protocol: UDP
Version: 4
Header Length C2 bit words): 5
Precedence: Routine
Normal Delay. Normal Throughput. Normal Reliability
Total length: 52
Identification: 30
Fragmentation allowed. Last fragment
Fragment Offset: 0
Time to Live: 64 seconds
Checksum: 0x0FAC(Valid)
udp: ===================== User Datagram Protocol ====================
Source Port: ROUTER
Destination Port: ROUTER
Length = 32
Checksum: 0xFE96(Valid)
rip: ================== Routing Information Protocol =================
Command: Response
Version: 1
Family ID: IP
IP Address: 144.19.0.0
Distance: X Ethernet Type
A IP Header
Ethernet Header I л
A JL t
0 :f FF FF FF FF FF FF 00 00 CO A2 0F 8E &8 O0J4S 00 I E.
^- — :— ^ ^ . Destination
10: 00 34 00 IE 00 00 40 11: ёГ AC $0 13 6X C9)fee 13 • 1.4 e J .. . IP Address
UDP < ;■ -• ' • - • -■-" •;• ' ЧХ±ЯК -y\
Header 20: FF FF)fe2 08)^2 ОЩЭ .20)(р1^ОД[02 01 00 00 00 02 ||
r I I I I —' I I
30: 00 00 90 13 00 00 00 00 00 00 00 00 00 00 00 00)\
4e:[o0 61J I I J I '
I Length I
C2)
T T I
▼ Doe!??fom Checksum SouTce
UDP Data Port E20) |pA(jdress
(RIP Data) X
Source Port
E20)
Рис. 11.41. Пакет UDP для процесса RIP
Также обратите внимание на то, что поле протокола IP равно 17, что
указывает на инкапсуляцию данных UDP.
Итоги
ТсР и UDP — стандартные протоколы транспортного уровня для сетей IP.
Протокол TCP обязательно реализуется всеми устройствами (кроме
маршрутизаторов), реализующими семейство протоколов TCP/IP. «Эталонные» маршру-
тизаторы не реализуют TCP и UDP. Тем не менее многие коммерческие
маршрутизаторы поддерживают функции управления сетью и удаленного входа.
Для этих служб необходима реализация транспортных протоколов TCP и UDP.
Во многих реализациях TCP протокол UDP реализуется в составе модуля TCP,
хотя на концептуальном уровне он работает независимо от TCP.
Протоколы TCP и UDP не только позволяют доставить данные на удаленный
компьютер, но и направить их конкретному прикладному процессу, работающему
на этом компьютере. Прикладные процессы идентифицируются по номерам
портов. TCP обеспечивает надежную доставку данных, а предоставляемый им
сервис ориентирован на соединение. С другой стороны, протокол UDP не
ориентируется на соединение и не обеспечивает надежной доставки, но он также
может пригодиться во многих ситуациях — например, при широковещательной
или групповой рассылке данных.
Ч *% IPv6
На момент разработки IP версии 4 (то есть текущей версии IP) казалось, что
32-разрядных IP-адресов будет вполне достаточно для предполагаемого
развития Интернета. Однако ускоренные темпы роста Интернета показали, что
32-разрядная адресация создает немало проблем. Для преодоления этого препятствия
была начата разработка спецификации IP следующего поколения — IP версии 6
(IPv6), или IP Next Generation.
Перед принятием окончательной формы IPv6 был проанализирован ряд
альтернатив. Самыми популярными альтернативными решениями были TUBA (TCP
and UDP with Bigger Addresses), CATNIP (Common Architecture for the Internet)
и SIPP (Simple Internet Protocol Plus). Ни один из трех проектов не
удовлетворял требованиям, выдвинутым к новой версии протокола, но они послужили
основой для поиска компромиссов и внесения изменений в основную
спецификацию.
Какими же возможностями обладает IP следующего поколения? Ниже
приведен краткий список его основных особенностей.
О 128-разрядные сетевые адреса вместо 32-разрядных.
О Более эффективная структура заголовков IP с возможностью расширения
и включения новых параметров.
О Возможность добавления необязательных заголовков с необязательными
полями после фиксированного базового заголовка.
О Использование потоковых меток для идентификации требований к качеству
сервиса.
О Предотвращение промежуточной фрагментации дейтаграмм.
О Улучшенная поддержка мобильных станций.
О Автоматическое назначение адресов IPv6 на основании адресов MAC.
О Встроенные средства аутентификации и шифрования.
В этой главе протокол IPv6 будет рассмотрен более подробно. Особое
внимание уделяется изменениями, а также аспектам, представляющим интерес для
разработчиков, занимающихся сетевым программированием, и администраторов
сетей. Следующий раздел посвящен структуре заголовка IPv6.
Дейтаграмма IPv6
Как упоминалось выше, в IP версии 6 структура заголовков изменилась.
Изменения в основном связаны с поддержкой новых, длинных 128-разрядных
адресов и перемещением необязательных полей в заголовки расширения. Базовая
структура заголовка IPv6 изображена на рис. 12.1. Для сравнения на рис. 12.2
изображена структура старых заголовков версии 4.
Поле номера версии в заголовке дейтаграммы IP имеет длину 4 бита и равно 6
для IPv6. Поле приоритета тоже состоит из 4 бит и содержит числовой
показатель приоритета дейтаграммы. Приоритет, используемый при определении
порядка передачи, сначала задается на уровне общей классификации, а затем
уточняется внутри каждого класса (за дополнительной информацией
обращайтесь к разделу «Классификация приоритетов» настоящей главы).
версии Приоритет Потоковая метка
Длина полезных Следующий Переходной
данных заголовок предел
IP-адрес отправителя
Адрес получателя
Рис. 12.1. Структура заголовка IPv6
Номер Длина Тип Длина
версии заголовка сервиса дейтаграммы
Идентификатор DF MF Смещение фрагмента
Срок жизни РпоотоколЫИ Контрольная сумма заголовка
IP-адрес отправителя
IP-адрес получателя
Параметры и дополнение
Рис. 12.2. Структура заголовка IPv4
Поле потоковой метки имеет длину 24 бита. В сочетании с IP-адресом
отправителя оно используется для идентификации потока данных в сети. Например
если в сети используется рабочая станция Unix, ее потоковая метка будет отлична
от потоковой метки другого компьютера (скажем, рабочей станции Windows).
Поле может использоваться для идентификации характеристик потока данных
и регулировки передачи. Кроме того, оно помогает идентифицировать приемные
узлы при пересылке больших объемов данных, что повышает эффективность
кэширования при маршрутизации между отправителем и получателем. Тема
идентификации потоков более подробно рассматривается в разделе «Потоковые метки».
16-разрядное поле длины полезных данных определяет общую длину
дейтаграммы IP в байтах. Сам заголовок IP при вычислении общей длины не
учитывается. Использование 16-разрядного поля ограничивает максимальную длину
дейтаграммы 65 535 байтами, но существует возможность пересылки
дейтаграмм большего размера с использованием заголовков расширения (см. раздел
«Заголовки расширения IP» настоящей главы).
Поле следующего заголовка имеет длину 8 бит и определяет тип заголовка,
следующего сразу же после базового заголовка IPv6; оно используется в тех
случаях, когда другие приложения используют IP для пересылки своих данных.
Некоторые значения, определенные для поля следующего заголовка, приведены
в табл. 12.1. Значение этого поля идентифицирует транспортный протокол (код 6
для TCP или 17 для UDP) или содержит признак заголовка расширения IPv6.
Заголовки расширения IPv6 используются для передачи параметров IPv6 и
других данных.
Таблица 12.1. Значения поля следующего заголовка в IPv6
Значение Описание
О Параметры уровня переходов
4 IP
6 TCP
17 UDP
43 Маршрутизация
44 Фрагмент
45 Междоменная маршрутизация
46 Резервирование ресурсов
50 Атрибуты безопасности
51 Аутентификация
58 ICMP
59 Следующий заголовок отсутствует
60 Параметры для получателя
На рис. 12.3 приведены примеры использования поля следующего заголовка
для сообщения TCP и для заголовков расширения. Значение 59 указывает на
отсутствие следующего заголовка, то есть инкапсуляции других протоколов или
данных.
Заголовок I pv6
Л™^Т-Й TCP заголовок*данные
заголовок =
TCP F)
Базовый заголовок IPv6 с инкапсулированным сегментом TCP
I Заголовок IPv6 I 3аголовок I I
Cлeлvюший маршрутизации
заголовок = Следующий TCP заголовок + данные
кл~~...п~ 1лъ\ заголовок =
Маршрут D3) TCP F)
Базовый заголовок IPv6, заголовок маршрутизации и инкапсулированный сегмент TCP
I Заголовок IPv6 Заголовок Заголовок
Следующий маршрутизации фрагмента Фрагмент TCP
заголовок = ^пУйЮпТ-И SSSJT- заголовок .данные
Маршрут D3) заголовок- заголовок =
I I Фрагмент D4) | TCP F) |
Базовый заголовок IPv6, заголовок маршрутизации, заголовок фрагментации
и инкапсулированный сегмент TCP
Рис. 12.3. Примеры использования поля следующего заголовка
Поле переходного предела определяет максимальное количество переходов
(hops), на которые может переместиться дейтаграмма. При каждой пересылке
значение этого поля уменьшается на 1. Когда оно падает до 0, дейтаграмма
уничтожается. Ограничение количества переходов предотвращает бесконечные
перемещения старых дейтаграмм в сети, возникающие из-за циклической
маршрутизации. Начальное значение переходного предела задается отправителем.
Данное поле является аналогом поля срока жизни (TTL) в заголовках IPv4.
Основное различие заключается в том, что в IPv4 срок жизни измеряется в
секундах, а в IPv6 он измеряется в переходах. Впрочем, даже в IPv4 поле TTL
фактически выполняло функции счетчика переходов, потому что маршрутизаторы
уменьшали его на 1 вместо того, чтобы вычитать время обработки дейтаграммы.
На практике такие протоколы, как TCP, используют для борьбы со старыми
пакетами большие значения порядковых номеров (см. главу 11).
Заголовок завершается полями, в которых хранятся IP-адреса отправителя
и получателя в 128-разрядном формате. Новый формат IP-адресов подробно
описан ниже, в разделе «128-разрядные IP-адреса».
Классификация приоритетов
Поле приоритета в заголовке IPv6 сначала относит дейтаграмму к одной из двух
категорий: управляемые (имеется в виду управление перегруженностью сети)
и неуправляемые. Неуправляемые дейтаграммы всегда маршрутизируются перед
управляемыми. Для неуправляемых дейтаграмм существует дополнительная
субклассификация с приоритетами от 8 до 15.
Управляемые дейтаграммы реагируют на проблемы с перегруженностью сети.
Если сеть перегружена, пересылка дейтаграммы замедляется, и она временно
хранится в кэшах до решения проблемы. В широкой категории управляемых
дейтаграмм существует несколько подклассов, уточняющих приоритет
дейтаграмм. Субкатегории управляемого приоритета перечислены в табл. 12.2.
Таблица 12.2. Дополнительная классификация управляемых дейтаграмм
Приоритет Описание
0 Приоритет не задан
1 Фоновая пересылка данных
2 Необслуживаемая пересылка данных
3 Не используется
4 Обслуживаемая массовая пересылка данных
5 Не используется
6 Интерактивная пересылка данных
7 Пересылка управляющих данных
Приоритетам неуправляемого трафика выделены приоритеты от 8 до 15.
Такие дейтаграммы не реагируют на перегруженность сети — например, они
могут использоваться для пересылки в реальном времени пакетов,
генерируемых с постоянной скоростью.
Практические примеры основных субкатегорий помогут вам лучше понять,
как назначаются приоритеты. Трафику маршрутизации и управления сетью,
считающемуся наиболее приоритетным, присваивается категория 7.
Интерактивные приложения (например, сеансы Telnet и Remote X) относятся к категории
интерактивного трафика (категория 6). Пересылка данных, не критичная по
времени (в отличие от Telnet), но проходящая под управлением интерактивных
приложений типа FTP, относится к категории 4. Электронной почте обычно
назначается категория 2, тогда как низкоприоритетный трафик — например,
передача новостей — относится к категории 1.
Потоковые метки
Как упоминалось выше, в заголовках IPv6 появилось новое поле потоковой метки,
упрощающее идентификацию отправителя и получателя в сериях дейтаграмм IP.
Применение кэшей при управлении потоком данных позволяет более
эффективно организовать маршрутизацию дейтаграмм. Не все приложения будут
поддерживать обработку потоковых меток; в этом случае полю присваивается ноль.
Использование потоковых меток проще всего пояснить на простом примере.
Предположим, компьютер с системой Windows подключается к серверу Unix,
находящемуся в другой сети, и пересылает большое количество дейтаграмм.
Если всем дейтаграммам в контексте этой передачи будет задано определенное
значение потоковой метки, промежуточные маршрутизаторы могут включить
в свои кэши маршрутизации запись, которая указывает, по какому маршруту
должны передаваться все дейтаграммы с этой меткой. При получении
дальнейших дейтаграмм с тем же значением метки маршрутизатору не приходится иы-
числять маршрут заново; он просто обращается к кэшу и извлекает хранящуюся
в нем информацию маршрутизации. Тем самым ускоряется прохождение дсч'Нл
грамм через маршрутизатор.
Чтобы предотвратить чрезмерное разрастание кэшей и хранение устаревших
данных, спецификация IPv6 указывает, что содержимое кэшей на устройствах
маршрутизации не должно храниться более шести секунд. Если новая дейтаграмма
с той же потоковой меткой не принимается в течение шести секунд, запись
удаляется из кэша. Чтобы метки не повторялись, отправитель должен выждать шесть
секунд, прежде чем использовать ту же метку для другого получателя.
IPv6 позволяет использовать потоковые метки для резервирования
маршрутов в приложениях, критичных по времени. Предположим, приложение
реального времени должно передавать большое количество дейтаграмм по одному
и тому же маршруту, причем передача должна осуществляться как можно
быстрее (скажем, передача видео- или аудиоинформации). Такое приложение может
установить маршрут, отправляя дейтаграммы заранее; при этом оно должно
следить за тем, чтобы не превысить шестисекундный интервал тайм-аута на
промежуточных маршрутизаторах.
128-разрядные IP-адреса
Вероятно, самой важной особенностью IPv6 все же следует считать поддержку
более длинных IP-адресов. В версии 6 длина IP-адреса увеличена с 32 до 128
битов. Тем самым количество возможных IP-адресов увеличивается с
экспоненциальной скоростью.
Новый механизм адресации поддерживает три категории IP-адресов:
направленные, групповые и альтернативные.
О Направленный адрес (unicast address) определяет сетевой интерфейс
конкретного компьютера. Один компьютер может использовать несколько разных
протоколов, каждый из которых обладает собственным адресом. Например,
сообщение может быть направлено по адресу интерфейса IP, но не по адресу
интерфейса NetBEUI.
О Групповой адрес (multicast address) определяет группу сетевых интерфейсов
и позволяет получить пакет всем компьютерам, входящим в группу.
Групповая адресация может рассматриваться как аналог групповой рассылки в IP
версии 4, однако групповые адреса обладают большей гибкостью при
определении групп. В частности, интерфейсы одного компьютера могут
принадлежать к разным группам.
О Альтернативный адрес (anycast address) определяет группу интерфейсов для
одного группового адреса. Иначе говоря, дейтаграмма может быть получена
несколькими интерфейсами на одном компьютере.
Все три типа адресов более подробно описываются ниже, в разделе
«Направленные, групповые и альтернативные адреса».
Заголовки IP в версии 6 существенно изменились; они содержат гораздо
больше информации и стали более гибкими. Изменения в области
фрагментации и повторной сборки расширили возможности IP. Также для IPv6
предложена схема аутентификации и шифрования, которая гарантирует, что данные не
были испорчены во время пересылки, а получатель и отправитель являются
именно теми, за кого они себя выдают.
ПРИМЕЧАНИЕ
Схема аутентификации и шифрования является частью предложения IPSec (IP Security).
Заголовки расширения IP
В IPv6 предусмотрена возможность присоединения дополнительных заголовков
к заголовку IP. Например, это может понадобиться, если к месту назначения не
существует простого маршрута или если дейтаграмма требует особой обработки
(например, аутентификации). Дополнительная информация упаковывается в
заголовок расширения и присоединяется к заголовку IP.
IPv6 определяет несколько типов заголовков расширения. Тип заголовка
задается числовым кодом, хранящимся в поле следующего заголовка в
заголовке IP. Значения, принятые в настоящий момент, и их интерпретация приводятся
в табл. 12.1. К заголовку IP может быть присоединено несколько заголовков
расширения, при этом поле следующего заголовка в каждом расширении
обозначает тип следующего расширения. Заголовки расширения присоединяются
в следующем порядке:
1. Заголовок IPv6.
2. Заголовок переходных параметров.
3. Заголовок параметров получателя.
4. Заголовок маршрутизации.
5. Заголовок фрагментации.
6. Заголовок аутентификации.
7. Заголовок ESP.
8. Заголовок параметров получателя.
9. Заголовок верхнего уровня.
Упорядочение заголовков упрощает обработку дейтаграмм на
маршрутизаторах и позволяет прекратить анализ после просмотра расширений, относящихся
к маршрутизации.
Переходные заголовки
Расширение с типом 0 используется для передачи параметров IP всем
компьютерам, через которые проходит дейтаграмма. Параметры, включаемые в
переходные заголовки, имеют стандартный формат, состоящий из признака типа, длины
и данных (за исключением параметра Padl, который состоит из одного нулевого
значения и не содержит полей длины или данных). Длина полей типа и длины
равна одному байту, а поле данных имеет переменную длину, которая указана
в предыдущем поле.
В настоящее время определены три переходных параметра: Padl, PadN и Jumbo
Payload. Параметр Padl состоит из одного байта с нулевым значением, не имеет
полей длины и данных. Он используется для изменения порядка и положения
других параметров в заголовке, что обычно определяется нуждами приложения.
Параметр PadN устроен аналогично, но его поле данных заполнено N нулями,
а значение поля длины вычисляется по размеру данных.
Параметр Jumbo Payload используется при обработке дейтаграмм с размером
более 65 635 байт. Из-за ограничения поля длины в заголовке IP 16 битами
максимальный размер дейтаграмм не может превысить 65 535. При обработке
дейтаграмм большего размера поле длины в заголовке IP равно нулю; это
означает, что за правильным значением длины маршрутизатор должен обратиться
к расширению. Поле длины в заголовке расширения содержит до 32 бит, что
позволяет создавать дейтаграммы размером свыше 4 миллиардов байт!
Заголовки переходных параметров в формате IPv6 представлены нулевым кодом
следующего заголовка. Структура переходных параметров изображена на рис. 12.4.
0 12 3
01234567890123456789012345678901
I I II I I I I I I I М М I М I I—I I I I—I > I I I—НН—Н-Н
_ v Длина
Следующий заголовка
заголовок расшире„ия
1 i i i i i i i—I i i > i i i i ' -|-
Параметры |
I I I I I I I I—I—I I < I I I I t I t I I I I I—I I I I I—h-H-H—\-
Рис. 12.4. Заголовок переходных параметров в IPv6
Поля в заголовках переходных параметров имеют следующий смысл:
О Следующий заголовок. 8-разрядный селектор, который определяет тип заголовка,
следующего непосредственно за переходным заголовком.
О Длина заголовка расширения. 8-разрядное целое без знака. Длина переходного
заголовка в 8-октетных единицах, за вычетом первых 8 октетов.
О Параметры. Поле переменной длины, при которой полная длина заголовка
кратна 8 октетам. Параметры кодируются в формате TLV
(тип-длина-значение).
Кроме параметров Padl и PadN для заголовков переходных параметров также
определен параметр Jumbo Payload (рис. 12.5).
Параметр Jumbo Payload должен выравниваться по границе 4п + 2. Это
означает, что начало параметра должно начинаться с границы 4 октетов плюс 2 октета
от начала заголовка.
Параметр Jumbo Payload используется для пакетов IPv6, у которых полезная
нагрузка превышает 65 535 октетов. Данные параметра хранятся в
32-разрядном поле и представляют длину пакета в октетах, за вычетом заголовка IPv6, но
с заголовком переходных параметры; значение должно быть больше 65 535. При
получении пакета с параметром Jumbo Payload, меньшим либо равным 65 535,
отправителю пакета отправляется сообщение ICMP с кодом 0 (недопустимые
параметры), указывающее на старший октет недействительного поля данных.
2 3
6789012345678901
-]—I—I—I 1 > I I—»—I—I—*—I—НН—Н-1-
Длина
194 данных
0 1 I параметра =
0123456789012349 4
I i i—> i i i i—i—iii<—nil—iii iiii—I—«—iii lit—у
Увеличенная длина
I l I I I l l I I—I I i I I I i i l l l iiii—l—l—l—fH—H+-H—L
Рис. 12.5. Параметр Jumbo Payload
Кроме того, поле длины полезных данных в заголовке IPv6 должно быть равно
нулю для всех пакетов, содержащих параметр Jumbo Paylod. Если принятый
пакет содержит ненулевую длину полезных данных IPv6 с допустимым
значением параметра Jumbo Payload, отправителю пакета отправляется сообщение
ICMP с кодом 0 (недопустимые параметры), указывающее на поле типа
параметра Jumbo Payload.
Заголовки маршрутизации
Заголовки маршрутизации присоединяются к заголовкам IP в тех случаях, когда
отправитель хочет сам управлять маршрутизацией дейтаграммы вместо того, чтобы
доверить принятие решений маршрутизаторам. Такой тип маршрутизации
называется маршрутизацией от источника. Описание маршрута передается в
заголовке маршрутизации, содержащего перечень всех промежуточных IP-адресов.
В заголовке маршрутизации IPv6 (рис. 12.6) перечисляются
промежуточные маршрутизаторы, через которые должна пройти дейтаграмма IPv6 на пути
к месту назначения. Этот заголовок реализует идею маршрутизации от источника,
также присутствовавшую в IPv4. Заголовки расширения IPv6 идентифицируются
кодом 43 в поле следующего заголовка базового заголовка IPv6.
0 12 3
012345678901234567890 12345678901
—| 1 1 1 h—Н 1 1 1 1 1 Ь-Ч 1 1—-1 J—I Н—I 1 h—I 1 1—i 1—I 1 1 1—I 1~
Следующий заголовка Тип Длина остаточного
заголовок расширения маршрутизации маршрута
— 1 h—I 1 1 1 1 1—I 1 1 1 1 1 1——I 1 У—I 1 »—I 1 1—1 1 1 1—1 1 1
Специализированные данные
Iiii—1—н—н—i i i i—i—i—i—i—i i i i i i i i—i 1 t i t—i i i—i I
Рис. 12.6. Заголовок маршрутизации IPv6
Поля в заголовках маршрутизации имеют следующий смысл:
О Следующий заголовок. 8-разрядный селектор, который определяет тип
заголовка, следующего непосредственно за заголовком маршрутизации. Это
может быть другой заголовок расширения IPv6, входящий в цепочку
заголовков расширения IPv6, или же заголовок транспортного протокола верхнего
уровня.
О Длина заголовка расширения. 8-разрядное целое без знака. Длина заголовка
маршрутизации в 8-октетных единицах, за вычетом первых 8 октетов.
О Тип маршрутизации. 8-разрядный идентификатор, определяющий
используемую разновидность заголовка. В настоящее время в спецификации IPv6
(RFC 1883) определена маршрутизация типа 0. Возможно, в будущем также
появятся другие форматы заголовков маршрутизации.
О Длина остаточного маршрута. 8-разрядное целое без знака, определяющее
количество оставшихся сегментов маршрута — то есть количество явно
перечисленных промежуточных узлов, которые должны принять дейтаграмму
перед тем, как она достигнет места назначения.
О Специализированные данные. Поле переменной длины, формат которого
определяется содержимым поля типа маршрутизации. Длина поля должна быть
такой, чтобы полная длина заголовка маршрутизации была кратна 8 октетам.
Если узел обнаруживает заголовок маршрутизации с неизвестным кодом
типа маршрутизации, он обрабатывает пакет, руководствуясь значением поля
длины остаточного маршрута. Если поле равно нулю, узел игнорирует
заголовок маршрутизации и переходит к следующему заголовку пакета,
идентифицируемому полем следующего заголовка IPv6. Если поле длины остатка маршрута
отлично от нуля, узел должен отвергнуть пакет и отправить получателю (адрес
которого берется из поля IP-адреса отправителя в заголовке) сообщение ICMP
с кодом 0 (недопустимые параметры) с сообщением о неопознанном типе
маршрутизации.
На рис. 12.7 изображена структура заголовка маршрутизации для типа 0.
Обратите внимание на совпадение первых 32 бит этого заголовка с изображенным
на рис. 12.6. Поле специализированных данных содержит список адресов
маршрутизаторов, который используется вместо маршрута, выбираемого
протоколом маршрутизации на маршрутизаторе.
0 12 3
012345678901234567890 12345678901
| t 1 У-—■ Н—-« 1 Н—I 1 1—1 1 Н—Н 1 1 1 I—« 1—1 1 j 1 1—H 1 lilt
Следующий за^ловка Тип Длина остаточного
заголовок расширения маршрутизации = 0 маршрута
Н—I—i t i—i i i [—I—I—>—и 1—I—I 1—н—•—н 1 1—I—I 1—I 1—(—i 1 i i к
Зяоезеовиоовано Карта жесткой/свободной
Зарезервировано маршрутизации
I 1 1 I I I 1 1 1 I I 1 I I 1 I I I I 1 Н-Н \—Н »—I 1 1 1 »—» 1 I
Рис. 12.7. Заголовок маршрутизации IPv6 для типа 0
Поля в заголовке маршрутизации IPv6 имеют следующий смысл:
О Следующий заголовок. 8-разрядный селектор, который определяет тип заголовка,
следующего непосредственно за заголовком маршрутизации.
О Длина заголовка расширения. 8-разрядное целое без знака. Длина заголовка
маршрутизации в 8-октетных единицах, за вычетом первых 8 октетов. Для
заголовка маршрутизации типа 0 длина вдвое больше количества адресов
в заголовке; это должно быть четное число, меньшее либо равное 46.
О Длина остаточного маршрута. 8-разрядное целое без знака, определяющее
количество оставшихся сегментов маршрута. Максимальное допустимое
значение для типа 0 равно 23.
О Зарезервировано. 8-разрядное поле обнуляется при передаче и игнорируется
при получении.
О Карта жесткой/свободной маршрутизации. 24-разрядная карта, биты
которой слева направо нумеруются от 0 до 23. Каждый бит соответствует
некоторому сегменту маршрута и указывает, должен ли следующий адрес быть
прямым соседом предыдущего адреса. Бит, равный 1, означает жесткую
маршрутизацию от источника, то есть следующий адрес должен
непосредственно соседствовать с текущим. Бит, равный 0, означает свободную
маршрутизацию от источника, то есть следующий адрес может быть отделен от
текущего промежуточными узлами.
О Адрес [1..п]. Вектор 128-разрядных адресов, пронумерованных от 1 до п.
Заголовки фрагментации
Заголовки фрагментации присоединяются к дейтаграммам IP для того, чтобы
большие дейтаграммы могли разбиваться на более мелкие части.
Проектирование IPv6 было отчасти направлено на сокращение фрагментации, но в
некоторых случаях фрагментация абсолютно необходима, чтобы дейтаграммы могли
передаваться по сети.
В отличие от IPv4 фрагментация IPv6 выполняется только
узлом-отправителем, но не маршрутизаторами на пути доставки пакета. Отправитель IPv6
знает размер MTU на пути к получателю; способы определения MTU описаны
в RFC 1191, раздел «Path MTU Discovery».
Собираясь передавать пакеты, размер которых превышает MTU на пути к
получателю, отправитель IPv6 вставляет в них заголовок фрагментации. Заголовок
фрагментации определяется кодом 44 в поле следующего заголовка, находящемся
в предыдущем заголовке. Структура заголовка фрагментации изображена на
рис. 12.8.
Поля в заголовке фрагментации IPv6 имеют следующий смысл:
О Следующий заголовок. 8-разрядный селектор, который определяет тип
заголовка, следующего непосредственно за заголовком фрагментации. Это может быть
другой заголовок расширения IPv6, входящий в цепочку заголовков
расширения IPv6, или же заголовок транспортного протокола верхнего уровня.
О Зарезервировано. 8-разрядное поле обнуляется при передаче и игнорируется
при получении.
0 12 3
012345678901234567890 12345678901
I I I 1 1 > I 1 1 1 1—I 1 1 1 1 (—I 1 1 1 1 1 1 1 1 1 1 1 1 j 1 H
Следующий зарезервировано £"!Щ!НИ! Результат М
заголовок к г г фрагмента 7
II ill ii—I—i—i—i—i i i—i—I—i—i—i—i i i i—I i i—i—i—i—I—i—U
Идентификатор
—I 1 I I I Н—Н 1 I I Н-Н 1 Н-Н 1 »—I 1 1 I I I 1 1 1 1 »—< I—-Н 1 I—
Рис. 12.8. Заголовок фрагментации в IPv6
О Смещение фрагмента. 13-разрядное целое без знака, определяющее смещение
данных, следующих за заголовком (в 8-октетных единицах). Смещение
измеряется относительно начала фрагментируемой части исходного пакета.
О Результат. 2-разрядное поле обнуляется при передаче и игнорируется при
получении.
О Флаг М. Если существуют другие фрагменты, флаг равен 1, а если их не
существует — флаг равен 0.
О Идентификатор. 32-разрядное поле. Для каждого фрагментируемого пакета
узел-отправитель генерирует идентификатор, отличный от идентификатора
всех фрагментированных пакетов, отправленных недавно с теми же адресами
отправителя и получателя.
Заголовки аутентификации
Заголовки аутентификации гарантируют, что в содержимое дейтаграммы не были
внесены изменения, а сама дейтаграмма была отправлена с узла, указанного в
заголовке IP. По умолчанию IPv6 использует схему аутентификации Message Digest 5
(MD5). Также возможно использование других схем аутентификации,
согласованных между обоими концами соединения.
Заголовок аутентификации состоит из индекса параметров защиты (SPI),
который в сочетании с IP-адресом получателя определяет схему
аутентификации. За SPI следуют данные аутентификации, которые в схеме MD5 имеют длину
16 байт. MD5 берет ключ (при необходимости дополненный до 128 бит) и
присоединяет к нему всю дейтаграмму. Результат обрабатывается по алгоритму MD5. Для
предотвращения проблем с изменением счетчиков переходов и самого заголовка
аутентификации, при вычислении проверочной величины эти поля обнуляются.
Алгоритм MD5 генерирует 128-разрядное значение и включает его в заголовок
аутентификации. На стороне получателя эти действия повторяются. Разумеется,
для того чтобы эта схема работала, обе стороны должны иметь одинаковые ключи.
Перед построением проверочных величин содержимое дейтаграммы может быть
зашифровано по стандартной схеме шифрования IPv6, которая называется СВС
(Cipher Block Chaining) и является частью стандарта DES (Data Encryption Standard).
Поля в заголовке аутентификации IPv6 имеют следующий смысл (рис. 12.9):
О Следующий заголовок. 8-разрядный селектор, который определяет тип
заголовка, следующего непосредственно за заголовком аутентификации.
О Длина. Поле имеет длину 8 бит и определяет длину поля данных
аутентификации в 32-разрядных блоках. Минимальное значение равно 0 и используется
только в особом случае, когда алгоритм аутентификации не используется.
О Зарезервировано. 16-разрядное поле зарезервировано для использования в
будущем. Должно быть заполнено нулями отправителем. Значение включается
в вычисление проверочной величины, но в остальном игнорируется
получателем.
О Индекс параметров защиты (SPI). 32-разрядное псевдослучайное число,
идентифицирующее систему защиты для данной дейтаграммы. Значение 0
означает отсутствие системы защиты. Значения от 1 до 255 зарезервированы для
IANA (Internet Assigned Numbers Authority). IANA обычно не назначает
зарезервированные значения SPI, если только использование этого конкретного
значения не оговорено в RFC.
О Данные аутентификации. Поле имеет переменную длину, но всегда
содержит целое число 32-разрядных блоков и содержит вычисленные данные
аутентификации для этого пакета.
0 12 3
01234567890123456789012345678901
1 1 ~t ' Г"
Следующий Длина Зарезервировано
заголовок
Индекс параметров защиты
1 ' ' ' г
Данные аутентификации
(переменное число 32-разрядных блоков)
\ 1 1 1 г-
Рис. 12.9. Заголовок аутентификации в IPv6
Заголовки ESP
Заголовки ESP (Encrypted Security Payload) обеспечивают целостность и
конфиденциальность содержимого дейтаграмм IP. Иногда они также могут
использоваться для аутентификации (в зависимости от того, какая схема используется).
ESP не защищает от анализа трафика и ложных отказов в подтверждении. При
использовании с некоторыми аутентификационными алгоритмами заголовки
аутентификации IPv6 могут обеспечивать защиту от ложных отказов на
подтверждение.
Заголовки ESP могут использоваться в сочетании с заголовками
аутентификации для предоставления аутентификации. Приложение, нуждающееся в
проверке целостности и аутентификации без конфиденциальности, должно
использовать заголовок аутентификации вместо ESP.
ESP шифрует защищаемые данные и размещает их в области данных. Этот
механизм может использоваться для шифрования как сегментов транспортного
уровня, так и целых дейтаграмм IP.
ESP работает в двух режимах, туннельном и транспортном. В туннельном
режиме исходная дейтаграмма IP помещается в зашифрованную часть ESP, а весь
кадр ESP помещается в дейтаграмму с незашифрованными заголовками IP.
Данные незашифрованных заголовков используются для маршрутизации
защищенных дейтаграмм от отправителя к получателю. Между заголовком IP и
заголовком ESP может присутствовать незащищенный заголовок маршрутизации IP.
В транспортном режиме заголовок ESP вставляется в дейтаграмму IP
непосредственно перед заголовком протокола транспортного уровня. Это повышает
эффективность передачи данных, поскольку дейтаграмма не содержит
шифрованные заголовки или параметры IP.
Заголовок ESP может находиться в любом месте после заголовка IP и перед
последним заголовком протокола транспортного уровня. Заголовок,
непосредственно предшествующий ему, должен содержать в поле следующего заголовка
значение 50. ESP состоит из незашифрованного заголовка, за которым следуют
зашифрованные данные. Эти данные включают как защищенную информацию
заголовка ESP, так и защищенные данные — полную дейтаграмму IP или пакет
протокола транспортного уровня. Примерное строение защищенной
дейтаграммы IP представлено на рис. 12.10.
Структура заголовка ESP
U Открытые данные >\< Шифрованные данные —W
Заголовок IP ДРУГОЙ Шифрованные
W ЗаГОЛОВОК IP waiwiiwBun йог ДЭННЫв
Формат заголовка ESP
\ ' j ' Ь
SPI, 32 бита
I ' ' ' 1
Данные непрозрачного преобразования
(переменная длина)
i 1 1 1 Ь
Рис. 12.10. Структура заголовка ESP в IPv6
Алгоритмы шифрования и аутентификации, а также точный формат
связанных с ними данных непрозрачного преобразования называются
трансформациями (transforms). Формат ESP спроектирован таким образом, чтобы в будущем
он поддерживал возможность использования новых трансформаций для
поддержки новых или дополнительных криптографических алгоритмов.
Поле SPI (см. рис. 12.10) представляет собой 32-разрядное псевдослучайное
число, идентифицирующее систему защиты для данной дейтаграммы.
Значение 0 означает отсутствие системы защиты. SPI является аналогом
идентификатора SAID (Security Association Identifier), используемого в других протоколах
защиты данных. Значения от 1 до 255 зарезервированы для IANA (Internet
Assigned Numbers Authority). IANA обычно не назначает зарезервированные
значения SPI, если только использование этого конкретного значения не
оговорено в RFC. SPI является единственным обязательным полем, независимым от
трансформаций.
Хосты с несколькими IP-адресами
Если не считать потенциальной проблемы исчерпания IP-адресов, стоило ли
изобретать принципиально новую структуру заголовков IP? Как нетрудно
заметить при изучении структуры заголовков, новая версия наделена множеством
новых возможностей, среди которых важное место занимает использование
нескольких IP-адресов на одном хосте.
В современных системах TCP/IP почти все хосты ограничиваются одним
IP-адресом. Исключение составляют компьютеры, выполняющие функции
шлюзов, маршрутизаторов, брандмауэров, прокси-серверов и преобразователей сетевых
адресов (NAT, Network Address Translators). Одноадресные компьютеры
обладают некоторыми преимуществами: например, подсчитав количество IP-адресов
в сети, можно узнать количество подключенных компьютеров. Поддержка одного
IP-адреса на хосте упрощает настройку сети по сравнению с многоадресными
хостами. Пользователю, работающему в FTP и Telnet, проще запомнить один
IP-адрес, чем несколько разных адресов. Наконец, при внедрении IPv6 придется
вносить изменения в DNS и другие службы, в которых имена отображаются на
один IP-адрес. Однако переход на модель многоадресного хоста в IPv6
обусловлен рядом веских причин.
Преимущества многоадресной модели особенно очевидно проявляются на
многопользовательских компьютерах. Например, если вы работаете на машине
одновременно с четырьмя пользователями (которые могут использовать
бездисковые рабочие станции или другие устройства), было бы удобно назначить
каждому пользователю собственный IP-адрес; подобное распределение адресов
упрощает подключение к файловым системам, наблюдение за использованием
ресурсов и сбор аналитической информации. Назначение каждому пользователю
собственного IP-адреса позволит применять в схемах шифрования,
поддерживаемых в IPv6, разные ключи для разных пользователей, что сделает защиту
данных более надежной.
Другое важное преимущество многоадресных хостов — шифрование.
Большинство современных серверов доступно по некоторой разновидности доменного
имени (например, ftp.microsoft.com для демонов FTP или http://www.microsoft.com
для World Wide Web), причем все эти службы работают на одном хосте с
одинаковыми средствами защиты, встроенными в IP. IPv6 позволяет назначить
каждой службе собственный IP-адрес, при этом в зависимости от IP-адреса будут
использоваться разные методы шифрования и аутентификации. Например, один
адрес может отображаться на http://www.microsoft.com с минимальным уровнем
шифрования и аутентификации, а другой адрес, отображаемый на ftp.microsoft.com,
может требовать жесткой аутентификации, поскольку пересылка файлов должна
быть разрешена только доверенным системам. Хотя применение разных уровней
обработки в зависимости от типа службы реализуется и в современной версии IP,
IPv6 обладает гораздо большими возможностями. С другой стороны, это
значительно увеличит количество адресов, отображаемых на имена.
По сравнению с текущей версией IP, IPv6 также упрощает добавление номеров
портов TCP. Например, чтобы обратиться на сервере к порту TCP с номером 14,
необходимо указать IP-адрес вместе с именем порта (например, 205.150.89.1:14).
В результате пользователю приходится запоминать номер порта. Поддержка
множественных адресов в IPv6 позволяет легко организовать разрешение
портов TCP. Например, один адрес может указывать на порт FTP с более высоким
уровнем защиты, нежели другой адрес, указывающий на другой FTP-порт.
Множественные адреса также удобны при слиянии подсетей. Предположим,
в вашей организации установлены две локальные сети: для научного персонала
и для управления. Если вы управляете работой научно-исследовательской
лаборатории, ваш компьютер должен иметь IP-адреса в обеих сетях. В некоторых
ситуациях компьютер может работать как своего рода маршрутизатор, и вам
придется часто указывать, в какой сети вы хотите работать в настоящий момент.
IPv6 позволяет назначить адреса таким образом, что информация может
пересылаться сразу по обеим локальным сетям, или же данные будут без особых
трудностей перемещаться из одной сети в другую (при этом потребность в
маршрутизаторе фактически пропадает).
Направленные, групповые
и альтернативные адреса
Направленные адреса существуют в нескольких разновидностях: глобальные,
локальные и совместимые. Спецификация IPv6 позволяет в будущем добавлять
другие типы направленных адресов по мере необходимости.
Глобальные направленные адреса используются для установления связи с
любым поставщиком в Интернете. Формат глобального направленного адреса
показан на рис. 12.11.
На рис. 12.11 первые три бита 010 определяют тип направленного адреса.
Поле REG ID определяет реестр адресов Интернета, назначающий
идентификатор поставщика (PROV ID), который, в свою очередь, назначает адреса клиентам
(в большинстве случаев PROV ID определяет поставщика услуг Интернета).
Поле SUBSC ID идентифицирует подписчиков (клиентов) в сети поставщика,
а поле SUBNET ID позволяет использовать конкретный адрес. Наконец, поле
INTF ID содержит идентификатор интерфейса, который может использоваться
для идентификации нужного интерфейса подписчика.
nm Dcr^m PR0V SUBSC SUBNET INTF
010 REG ID |D ID ID ">
Рис 12.11. Структура глобального направленного адреса
Локальный направленный адрес используется только в сети или подсети,
поэтому для него требуется меньше информации. Заголовок локального
направленного адреса изображен на рис. 12.12. Поле INTF ID содержит идентификатор
интерфейса сети или подсети. У локальных направленных адресов существует
разновидность, при которой идентификатор подсети включается в заголовок
с сокращением поля INTF ID. Поле INTF ID также может использоваться для
идентификации конкретной подсети заданной сети.
1111111010 0 INTF ID
Рис. 12.12. Структура локального направленного адреса
Наконец, на рис. 12.13 представлена разновидность направленных адресов,
содержащих встроенные адреса IPv4. Адрес IPv4 находится в конце адреса IPv6
и может использоваться старыми реализациями IP.
80 бит 16 бит 32 бита
000...000 0 Адрес IPv4
Рис. 12.13. Структура совместимого направленного адреса,
содержащего встроенный адрес IPv4
Альтернативные адреса используют ту же структуру, что и направленные
адреса, и в большинстве случаев не отличаются от направленных адресов,
используемых при широковещательной рассылке.
Структура групповых адресов изображена на рис. 12.14.
1111111 <п™1 Область Идентификатор
1 1 флаТов) 1 **™* 1 ГРУ™Ы 1
Рис. 12.14. Структура группового адреса
Единицы в старших 8 битах являются признаком группового адреса. Поле
флагов состоит из четырех битов, начинается с трех нулей (зарезервированы
для использования в будущем) и завершающего бита, который может быть
равен либо 0 для постоянно назначаемого группового адреса, либо 1 для
временного группового адреса. 4-разрядное поле области действия ограничивает
групповую рассылку. Допустимые значения этого поля перечислены в табл. 12.3.
Наконец, идентификатор группы определяет конкретную группу, в которой
производится рассылка.
Таблица 12.3, Допустимые значения области действия групповой рассылки
Значение Описание
0 Зарезервировано
1 Рассылка уровня узла
2 Рассылка уровня канала
3, 4 Не присвоено
5 Рассылка уровня подразделения
6, 7 Не присвоено
8 Рассылка уровня организации
9, А, В, С, D Не присвоено
Е Глобальная рассылка
F Зарезервировано
Переход с IPv4 на IPv6
С технической точки зрения IPv6 превосходит текущую версию IP (IPv4),
однако реализация IPv6 в мировом масштабе порождает определенные проблемы.
Переключение со старой версии IP на новую требует определенного времени,
поэтому переход следует организовать так, чтобы в течение этого срока
поддерживалась совместимость с обеими версиями. Предполагается, что повсеместное
внедрение IPv6 займет несколько лет, поэтому проблемы перехода чрезвычайно
важны.
Одна из проблем с переходом на IPv6 заключается в том простом факте, что
протокол IPv4 жестко встроен во многие уровни семейства протоколов TCP/IP
и во многие приложения. Чтобы переключиться на IPv6, необходимо
преобразовать все приложения, все драйверы и все компоненты стека TCP,
использующие IP. Это потребует изменения сотен и тысяч программ в миллионах строк
исходных текстов. Маловероятно, чтобы тысячи поставщиков аппаратного и
программного обеспечения успели изменить свою программную базу в заданный
промежуток времени. И снова приходится сделать вывод, что IPv4 и IPv6
придется сосуществовать в течение некоторого времени.
Все современные компьютеры (хосты, маршрутизаторы, мосты и т. д.)
используют IPv4. По мере перехода на IPv6 (за счет обновления аппаратной или
программной базы) всем этим компьютерам придется поддерживать два
комплекта программного обеспечения IP: для старой и для новой версии. В
некоторых случаях реализация таких решений будет сильно затруднена ограниченным
объемом памяти или производительностью, поэтому на некоторых устройствах
придется поддерживать только одну версию IP (или заменить их более мощными
устройствами).
Если обновить приложение до IPv6 невозможно (или нежелательно), для
него придется разработать программный преобразователь. Например, при взаи-
модействии с IPv6 устройств и приложений на базе IPv4 взаимодействующие
стороны разделяются дополнительным модулем, который обеспечивает
преобразование. Скорость и эффективность работы системы при этом снижается, но
в некоторых случаях нет другого способа обеспечить работу старых программ
и оборудования.
На первый взгляд переход от IPv4 к IPv6 не вызывает особых сложностей,
но на практике трудностей хватает. Главная проблема связана с преобразованием
заголовков, где даже минимальное упущение приводит к потере данных.
Протокол IPv6 основан на IPv4, но заголовки этих протоколов сильно различаются.
Любая информация в заголовке IPv6, не поддерживаемая IPv4 (в частности,
классификация приоритета), будет потеряна при преобразовании. И наоборот,
преобразование в IPv6 пакетов, выходящих с хостов IPv4, приведет к тому, что
большая часть данных, многие из которых могут оказаться очень важными, будет
отсутствовать в заголовках.
Отображение адресов (преобразование IP-адресов IPv4 в IPv6, и наоборот)
также требует особого внимания. Если хост имеет несколько IP-адресов IPv6
и только один адрес IPv4, то на преобразователях, маршрутизаторах и других
устройствах, осуществляющих преобразование между версиями IP, придется
хранить большие таблицы отображений. В крупных организациях подобное
решение неприемлемо, и преобразование IPv4 в IPv6 может привести к
ошибочному вычислению места назначения. Адреса IPv4 могут внедряться в заголовки
IPv6, однако это может породить проблемы в системах на базе IPv6.
Переход на IPv6 потребует радикальной переработки некоторых служб TCP/IP.
Например, DNS содержит информацию о преобразовании имен в IP-адреса. На
стадии перехода серверам DNS придется поддерживать обе версии IP, а также
обеспечивать разрешение нескольких IP-адресов для каждого хоста — скажем,
IPv6 позволяет назначить одному компьютеру 10 разных адресов (например,
разные службы могут быть представлены разными адресами). С
широковещательной рассылкой тоже возникают проблемы, потому что IPv4 достаточно часто
используется для широковещательной рассылки в масштабах локальной или
глобальной сети (например, ARP использует средства широковещательной
рассылки канального уровня). В IPv6 используется система групповой рассылки,
которая спроектирована таким образом, чтобы дейтаграмма пересылалась в
локальной или глобальной сети только один раз. Согласование двух систем
широковещательной рассылки также вызывает проблемы.
При переводе всей сетевой инфраструктуры с IPv4 на IPv6 приходится
учитывать гораздо больше факторов, чем упоминалось выше. Для обеспечения
максимальной гибкости по мере перехода компаний и сетей с одной версии IP на
другую необходимо решить множество технических вопросов. Процесс перехода
отнюдь не прост. Предполагается, что он займет несколько лет, но его конечным
результатом должна стать сеть, работающая исключительно на базе IPv6 (хотя
не исключено, что многие старые устройства не удастся обновить до IPv6, а их
работа будет обеспечиваться дополнительными преобразователями). Тем, чья
работа непосредственно связана с администрированием сети, переход с IPv4 на
IPv6 принесет массу незабываемых впечатлений.
Итоги
На повсеместное внедрение IPv6 потребуется несколько лет, но рано или поздно
это произойдет. Собираетесь ли вы осуществить переход за короткий
промежуток времени или пойдете по пути постепенных изменений, когда-нибудь вам
придется реализовать IPv6 в своей сети. Для большинства пользователей
(особенно тех, кто пользуется услугами поставщиков Интернета) это дело
отдаленного будущего. С другой стороны, для многих компаний те преимущества,
которыми обладает IPv6, ускорят процесс перехода. В IPv6 заложены встроенные
средства совместимости с IPv4, поэтому работа старых систем на базе IP будет
поддерживаться еще достаточно долго.
■i *Э Маршрутизация
ХЭ в сетях IP
Марк А. Спартак (Mark A. Sportack)
Маршрутизация принадлежит к числу важнейших операций в объединенных
сетях IP. Маршрутизацией называется процесс построения, сравнения и выбора
маршрута в сети к произвольному IP-адресу. Обычно эти функции выполняются
специализированными устройствами, которые называются маршрутизаторами.
Тем не менее технологический прогресс быстро стирает различия между
традиционными маршрутизаторами, коммутаторами локальных сетей и даже
обычными хостами, подключенными к сети. В наши дни все три типа устройств
способны строить, сравнивать и выбирать маршруты, поэтому маршрутизацию следует
рассматривать как функцию, а не как физическое устройство.
Сущность маршрутизации воплощена в форме специализированных сетевых
протоколов, которые позволяют маршрутизаторам (независимо от типа
физического устройства) выполнять свои жизненно важные функции. К числу таких
функций относятся:
О обмен информацией о локально подключенных хостах и сетях;
О сравнение альтернативных путей;
О согласование топологии сети.
Хорошее понимание механики выполнения этих базовых функций в сетях IP
закладывает основу для углубленного изучения трех самых распространенных
протоколов динамической маршрутизации, описанных в главах 14-16.
Основы маршрутизации
Маршрутизаторы выполняют свои функции в двух основных режимах: они
либо используют заранее запрограммированные статические маршруты, либо
строят маршруты с использованием протоколов динамической маршутизации.
Статические маршрутизаторы не способны строить маршруты и не обладают
средствами обмена данными с другими маршрутизаторами. Статический
маршрутизатор может только передавать пакеты по маршрутам, определенным
сетевым админинистратором.
В свою очередь, протоколы динамической маршрутизации делятся на две
категории: дистанционно-векторные и топологические протоколы. Основное раз-
личие между этими типами динамических протоколов маршрутизации
заключается в алгоритме поиска и построения новых маршрутов к месту назначения.
ПРИМЕЧАНИЕ
Существует несколько вариантов классификации протоколов маршрутизации. Одни из них основаны
на рабочих характеристиках — области применения, количеству потенциальных маршрутов для
каждого возможного места назначения и т. д. В этой книге протоколы маршрутизации
классифицируются по способу поиска и построения маршрутов. Тем не менее классификация по области
применения (то есть по их роли в объединенной сети) тоже встречается на практике. Например,
существует два функциональных класса протоколов динамической маршрутизации: протоколы
внутреннего шлюза IGP (Interior Gateway Protocol) и протоколы внешнего шлюза EGP (Exterior
Gateway Protocol).
Вероятно, проще всего эта классификация объясняется так: протоколы IGP используются внутри
автономных систем (таких, как интрасети), тогда как протоколы EGP используются между
автономными системами. Автономная система представляет собой самостоятельную совокупность
сетей, обычно находящихся под управлением одного администратора или группы администраторов.
Для построения маршрутов в Интернете используется пограничный межсетевой протокол BGP
(относящийся к категории EGP). С точки зрения маршрутизации Интернет представляет собой не что
иное, как магистральный транспорт для глобальной совокупности автономных систем, находящихся
в частном владении и управляемых частным образом.
Для каждого протокола, описанного в книге, указано, к какой категории он относится — IGP или EGP.
Статическая маршрутизация
Простейшая форма маршрутизации основана на использовании статических,
то есть заранее запрограммированных маршрутов. За построение маршрутов
и их распространение в сети отвечают администраторы межсетевого объединения.
Маршрутизатор, использующий статическую маршрутизацию, отправляет
пакеты с заранее определенных портов. После настройки связи между адресом
получателя и портом маршрутизатора последнему нет необходимости пытаться искать
маршруты и даже распространять информацию о маршрутах, ведущих к этому
месту назначения. Тем не менее маршрутизатор может использовать
статическую маршрутизацию для одних получателей и динамическую — для других.
Статическая маршрутизация обладает многими преимуществами. В
частности, она повышает надежность сети: существует только один вход (и выход)
в сеть, связь с которой осуществляется через статически определенный маршрут
(разумеется, если на маршрутизаторе не определено несколько статических
маршрутов для одного получателя).
Другое преимущество заключается в том, что статическая маршрутизация
гораздо эффективнее расходует ресурсы. Она сводит к минимуму
дополнительный трафик, не расходует вычислительные мощности маршрутизатора на
построение маршрута и требует меньше памяти. В некоторых сетях статическая
маршрутизация даже позволяет использовать менее мощные, а следовательно —
более дешевые маршрутизаторы. Несмотря на эти преимущества, статическая
маршрутизация обладает рядом принципиальных недостатков, о которых следует
помнить.
Статические маршруты иногда используются в малых сетях с редко
изменяемой топологией. Примером может послужить сеть из двух узлов, соединенных
каналом «точка-точка».
Статическая маршрутизация также может применяться для диагностики
и временного исправления проблем, связанных с маршрутизацией. Например,
если вы знаете, что содержимое таблицы маршрутизации было испорчено, можно
переопределить ошибочные записи и заменить их статическими маршрутами.
Как правило, использовать статическую маршрутизацию одновременно с
динамической не рекомендуется, так как это может привести к конфликтам между
статическими и динамически вычисляемыми маршрутами. Статические
маршруты будут использоваться даже в том случае, если динамические маршруты
более эффективны.
Недостатки статической маршрутизации
В случае сбоя сетевого канала или изменения топологии сети администратору
приходится вручную изменять статические маршруты. Ситуация
проиллюстрирована на рис. 13.1.
Г СетьЮ ^
/Маршрутизатор А\
Маршрутизатор В Маршрутизатор с\
£ Сеть 172.16 3 \ $192.168.125 ")
Маршрутизатор D
Сеть 192.168.126
Рис. 13.1. Простая объединенная сеть со статическими маршрутами
В этом простом примере администраторы сети выработали согласованную
схему распределения маршрутных данных, которая, как предполагается,
упростит их работу и снизит сетевой трафик. Объединенная сеть относительно мала;
она состоит из трех разных сетей, каждая из которых относительно мала и
изолирована. Каждая сеть использует собственное адресное пространство и свой
протокол динамической маршрутизации. С учетом несовместимости трех
протоколов динамической маршрутизации, администраторы решили не
перераспределять маршрутные данные между сетями и определили статические маршруты.
В табл. 13.1 приведено содержимое маршрутных таблиц для трех шлюзов.
Маршрутизатор D соединяет небольшую сеть с другими сетями, а
последовательный порт этого маршрутизатора выполняет функции шлюза для всех пакетов,
предназначенных для IP-адресов, не входящих в сеть 192.168.126.
Таблица 13.1. Статические маршруты
Маршрутизатор Получатель Следующий переход
А 172.16.0.0 В
А 192.168.125.0 С
А 192.168.126.0 С
В 10.0.0.0 А
В 192.168.125.0 С
В 192.168.126.0 С
С 10.0.0.0 А
С 172.16.0.0 В
С 192.168.126.0 О
В этом сценарии маршрутизатор А пересылает все пакеты, адресованные хостам
в адресном пространстве сети 172.16, маршрутизатору В. Маршрутизатор А также
пересылает все пакеты» адресованные хостам в сетях 192.168.125 и 192.168.126,
маршрутизатору С. Маршрутизатор В пересылает все пакеты, адресованные
хостам в сетях 192.168.125 и 192.168.126, маршрутизатору С. Маршрутизатор В
пересылает пакеты, адресованные хостам в сети 10, маршрутизатору А.
Маршрутизатор С пересылает все пакеты, предназначенные для сети 10,
маршрутизатору А. а пакеты, предназначенные для сети 172.16, — маршрутизатору В. Кроме
того, маршрутизатор С пересылает пакеты, предназначенные для сети 192.168.126,
маршрутизатору D, в концевую сеть. Сеть называется концевой (stub),
поскольку она буквально образует «тупик» в сетевой иерархии; она связана с
объединенной сетью одним входом и одним выходом. Весь обмен данными с хостами
объединенной сети полностью зависит от канала, ведущего к маршрутизатору С,
и от самого маршрутизатора С.
В этом примере сбой сетевого канала приведет к тому, что некоторые
получатели станут недоступными, несмотря на существование альтернативного
маршрута. На рис. 13.2 сбой произошел в сетевом канале между маршрутизаторами А и С.
Г Сеть 10 !?
/Маршрутизатор А\
/ Маршрутизатор В Маршрутизатор С \ ^ч.
£ Сеть 172.16 !) \ $192.168.125 J)
Маршрутизатор D ]
Сеть 192.168.126
Рис. 13.2. В результате сбоя канала в сети сю статическими маршрутами
часть сети может стать недоступной
В результате сбоя хосты сетей 10 и 192.168 не смогут связаться друг с
другом, несмотря на существование альтернативного пути через маршрутизатор В!
Таблица 13.2 поясняет, как подобные сбои отражаются на работе таблиц
маршрутизации.
Таблица 13.2. Статические маршруты при сбое в канале связи
Маршрутизатор Получатель Следующий переход
А 172.16.0.0 В
А 192.168.125.0 С — недостижим
А 192.168.126.0 С —недостижим
В 10.0.0.0 А
В 192.168.125.0 С
В 192.168.126.0 С
С 10.0.0.0 А — недостижим
С 172.16.0.0 В
Из-за отсутствия динамических механизмов маршрутизаторы А и С не
распознают сбой в канале. Они не используют протоколы маршрутизации, которые
бы обнаружили факт сбоя и проверили качество связи с известными
получателями. Соответственно, маршрутизаторы А и С не могут обнаружить
альтернативный путь через маршрутизатор В. Хотя этот путь вполне работоспособен,
жестко запрограммированные маршруты не позволяют обнаружить или
использовать его. Ситуация останется без изменений до тех пор, пока администраторы
сети не внесут необходимые исправления вручную.
Преимущества статической маршрутизации
Возможно, после всего сказанного возникает вопрос — какая польза от
статического определения маршрутов? Статическая маршрутизация пригодна только
для очень малых сетей, в которых к любому узлу ведет только один путь. Как
правило, механизм статической маршрутизации обладает наибольшей
эффективностью, поскольку он не тратит ресурсы на попытки построения путей или
взаимодействие с другими маршрутизаторами.
По мере роста сетей и добавления альтернативных путей статическая
маршрутизация начинает требовать все большего объема работы. Любые изменения
в доступности маршрутизаторов или каналов связи в глобальных сетях
приходится обнаруживать и программировать вручную. Глобальные сети со сложными
топологиями, подразумевающими наличие альтернативных маршрутов,
неизбежно требуют применения динамической маршрутизации. Попытки
использования статической маршрутизации в сложных глобальных сетях противоречат
самой идее наличия альтернативных маршрутов.
В некоторых ситуациях применение статических маршрутов оправдано даже
в крупных и сложных сетях. Например, статические маршруты могут повысить
уровень защиты. Подключение компании к Интернету может связываться
статическим маршрутом с сервером безопасности. Любой доступ к сети будет возможен
лишь после прохождения процедуры аутентификации, обеспечиваемой сервером.
Кроме того, статически определяемые маршруты исключительно полезны при
организации экстрасетевых подключений на базе IP к другим компаниям,
интенсивно работающим с вашей компанией. Наконец, статические маршруты могут
оказаться оптимальным способом подключения небольших участков с концевыми
сетями к глобальной сети. Короче говоря, статические маршруты тоже приносят
пользу. Вы лишь должны хорошо понимать, когда их следует применять.
Дистанционно-векторная маршрутизация
При маршрутизации на базе дистанционно-векторных алгоритмов, также
иногда называемых алгоритмами Беллмана—Форда, копии таблиц маршрутизации
периодически передаются узлам, находящимся в непосредственном соседстве.
Каждый получатель добавляет в таблицу значение дистанции и передает его
своим непосредственным соседям. Процесс повторяется по всем направлениям
между соседними маршрутизаторами. В результате этой многошаговой процедуры
каждый маршрутизатор получает сведения о других маршрутизаторах и
накапливает информацию о сетевых «расстояниях».
Накопленная информация используется для обновления таблиц
маршрутизации на каждом маршрутизаторе. После его завершения каждый маршрутиза-
тор узнает примерные «расстояния» между сетевыми ресурсами. Он не знает
ничего конкретного о других маршрутизаторах и о фактической топологии сети.
Недостатки дистанционно-векторной маршрутизации
В некоторых обстоятельствах дистанционно-векторная маршрутизация создает
проблемы с маршрутизацией. Например, в случае сбоя или изменений в сети
требуется некоторое время на согласование (то есть распространение новых
представлений о сетевой топологии между маршрутизаторами). В процессе
согласования сеть может страдать от непоследовательной и даже циклической
маршрутизации. Специальные защитные меры позволяют ограничить многие из
этих опасностей, но даже в этом случае в процессе согласования
производительность сети оказывается под угрозой. Из-за этого старые
дистанционно-векторные протоколы с медленным распространением изменений оказываются
неподходящими для больших, сложных глобальных сетей.
Даже в сетях меньшего масштаба дистанционно-векторные протоколы
маршрутизации порождают проблемы (в худшем случае) или оказываются
неоптимальными (в лучшем случае). Дело в том, что простота, которая является одной из
сильных сторон этого механизма маршрутизации, оборачивается его слабостью.
Например, на рис. 13.3 представлена объединенная сеть с несколькими филиалами.
Нью-Йорк
Филадельфия
£ 10.0.0.0 р ^192.168.125.0 }
Маршрутизатор А / Маршрутизатор С
/ Стоимость = 1
Маршрутизатор В Маршрутизатор D
ч. Сеть S С. Сеть j
Ч 172.16.0.0 р <>192.168.123.0 р
Сиэтл Миннеаполис
Рис 13.3. Объединенная сеть с использованием дистанционно-векторного
протокола маршрутизации
В данном примере сеть 1 находится в Нью-Йорке, сеть 2 — в Сиэтле, сеть 3 —
в Филадельфии, а сеть 4 — в Миннеаполисе. Дистанционно-векторный
протокол маршрутизации использует для каждого перехода статически
назначенную стоимость 1, независимо от протяженности канала и даже его пропускной
способности. В табл. 13.3 приведена сводка количества по всем остальным сетям.
Из таблицы видно, что маршрутизаторы не обязаны создавать в таблице
отдельную запись для каждой конечной системы. Сеть может выполнять подобную
маршрутизацию на уровне хостов, но, скорее всего, она будет работать гораздо
эффективнее, если ограничиться маршрутизацией на уровне сети. В сетевых
маршрутах используется только сетевая часть IP-адреса; идентификатор хоста
отсекается.
Теоретически для всех хостов и конечных систем любой конкретной сети
может использоваться один и тот же маршрут. Следовательно, создание отдельной
записи для каждого хостового адреса ничего не дает.
Таблица 13.3. Количество переходов в дистанционно-векторном протоколе
Маршрутизатор Приемник Следующий переход Длина пути в переходах
А 172.16.0.0 В 1
А 192.168.125.0 С 1
А 192.168.253.0 В или С 2
В 10.0.0.0 А 1
В 192.168.125.0 С 1
В 192.168.253.0 D 1
С 10.0.0.0 А 1
С 172.16.0.0 В 1
С 192.168.253.0 D 1
D 10.0.0.0 В или С 2
D 172.16.0.0 В 1
D 192.168.125.0 С 1
В любой сети с альтернативными маршрутами дистанционно-векторные
протоколы удобнее статических маршрутов, поскольку они позволяют
автоматически обнаруживать и исправлять многие сетевые сбои. К сожалению,
дистанционно-векторные протоколы тоже не идеальны. Для примера рассмотрим записи
маршрутизации для маршрутизатора А (нью-йоркский шлюз). С его точки
зрения шлюз D (Миннеаполис) удален на два перехода независимо от пути
следования пакета (через Филадельфию или Сиэтл). С точки зрения маршрутизатора
оба пути равноправны.
При одинаковых сетевых характеристиках (включая уровни трафика,
пропускные способности каналов и даже технологию передачи) самый короткий
в географическом отношении путь обеспечивает минимальную задержку.
Следовательно, логика подсказывает, что при пересылке из Нью-Йорка в Миннеа-
полис следует использовать кратчайший путь через Филадельфию. На практике
такая логика выходит за границы возможностей простых
дистанционно-векторных протоколов. Впрочем, это нельзя считать недостатком
дистанционно-векторных протоколов, поскольку задержка передачи часто является наименее
существенным фактором, определяющим эффективность маршрута.
Пропускная способность каналов и уровни трафика оказывают гораздо большее влияние
на эффективность.
Преимущества дистанционно-векторной маршрутизации
Как правило, дистанционно-векторные протоколы устроены очень просто; такие
протоколы легко понять, настроить, сопровождать и использовать. Таким
образом, эти протоколы приносят несомненную пользу в очень мелких сетях с
минимальным количеством альтернативных путей и отсутствием жестких
требований к производительности сети. Основные принципы дистанционно-векторной
маршрутизации воплощены в протоколе RIP (Routing Information Protocol),
который определяет оптимальный путь для любого конкретного пакета по
единственной метрике — стоимости. Протокол RIP широко использовался в течение
десятилетий, и только недавно возникла необходимость в его обновлении. За
дополнительной информацией о протоколе RIP обращайтесь к главе 15.
Топологическая маршрутизация
Алгоритмы топологической маршрутизации, часто объединяемые термином SPF
(Shortest Path First, то есть «предпочтительный выбор кратчайшего пути»),
ведут сложную базу данных, описывающую топологию сети. В отличие от
дистанционно-векторных протоколов, топологические протоколы располагают
полной информацией о маршрутизаторах сети и о способах их соединения. Задача
решается посредством обмена сообщениями LSA (Link-State Advertisement) с
другими маршрутизаторами в сети.
Каждый маршрутизатор, участвующий в обмене сообщениями LSA, строит
топологическую базу данных на основании всей полученной информации, после
чего доступность сетевых узлов оценивается по алгоритму SPF. Полученная
информация используется для обновления таблиц маршрутизации. Этот процесс
позволяет обнаруживать изменения в сетевой топологии, вызванные сбоями
отдельных компонентов или расширением сети.
Обмен сообщениями LSA не производится на периодической основе, а
инициируется событиями в сети. Тем самым существенно ускоряется процесс
распространения изменений в сети, поскольку маршрутизаторам не приходится
ожидать завершения целой серии произвольно выставленных интервалов тайм-аута.
Если бы в объединенной сети, изображенной на рис. 13.3, использовался
протокол топологической маршрутизации, то все проблемы с выбором пути
между Нью-Йорком и Миннеаполисом автоматически отпали бы. В зависимости
от выбора протокола и метрик весьма вероятно, что протокол маршрутизации
найдет два альтернативных маршрута и попытается выбрать лучший.
Обобщенная сводка содержимого таблиц маршрутизации приведена в табл. 13.4.
Таблица 13.4. Данные топологической маршрутизации
Маршрутизатор Приемник Следующий переход Длина пути в переходах
А 172.16.0.0 В 1
А 192.168.125.0 С 1
А 192.168.253.0 В 2
А 192.168.253.0 С 2
В 10.0.0.0 А 1
В 192.168.125.0 С 1
В 192.168.253.0 D 1
С 10.0.0.0 А 1
С 172.16.0.0 В 1
С 192.168.253.0 D 1
D 10.0.0.0 В 2
D 10.0.0.0 С 2
D 172.16.0.0 В 1
D 192.168.125.0 С 1
Анализ таблиц маршрутизации очевидно показывает, что для пути из Нью-
Йорка в Миннеаполис топологический протокол запомнит оба маршрута.
Некоторые топологические протоколы даже могут оценить эффективность этих двух
маршрутов и выбрать оптимальный вариант. Если в оптимальном маршруте
(например, ведущем через Филадельфию) возникнут какие-либо проблемы,
включая перегруженность сети или сбой отдельных компонентов, топологический
протокол обнаружит эти изменения и начнет пересылать пакеты через Сиэтл.
Недостатки топологической маршрутизации
Несмотря на широту возможностей и гибкость, топологическая маршрутизация
обладает двумя потенциальными недостатками:
О На стадии исходного сбора информации протоколы топологической
маршрутизации передают по сети большой объем информации, существенно снижая
возможности сети по пересылке данных. Это снижение производительности
является временным, но оно может быть очень заметным. Влияние
трафика на эффективность работы сети зависит от двух факторов: пропускной
способности и количества маршрутизаторов, обменивающихся
маршрутными данными. В больших сетях с относительно слабыми каналами (например,
в малопроизводительных каналах DLCI в сетях Frame Relay) это влияние
будет гораздо заметнее, чем в мелкомасштабных сетях с производительными
каналами (например, ТЗ).
О Топологическая маршрутизация требует больших затрат памяти и
процессорных ресурсов. Следовательно, для обеспечения топологической
маршрутизации требуются более мощные компьютеры, чем для дистанционно-векторной,
что приводит к повышению стоимости маршрутизаторов.
Вряд ли эти недостатки топологического подхода к маршрутизации можно
считать фатальными. Проблемы с потенциальным снижением быстродействия в
обоих случаях решаются посредством планирования, прогнозирования и
технического оснащения.
Преимущества топологической маршрутизации
Топологический подход к динамической маршрутизации приносит пользу в сетях
любого размера. В хорошо спроектированной сети топологическая
маршрутизация позволяет корректно адаптироваться к эффектам неожиданных
топологических изменений. Применение событий для обновления данных маршрутизации
(вместо таймеров с фиксированными интервалами) значительно ускоряет начало
распространения информации о топологических изменениях.
Кроме того, топологическая маршрутизация обходится без частых,
периодических обновлений, присущих дистанционно-векторной маршрутизации. В
результате повышается доля ресурсов сети, расходуемых на пересылку полезных
данных, а не на служебные операции (при условии, что сеть была правильно
спроектирована).
Из повышенной эффективности протоколов топологической маршрутизации
в отношении пропускной способности сети вытекает другое, дополнительное
преимущество: эти протоколы упрощают масштабирование сети по сравнению
со статическими маршрутами или дистанционно-векторными протоколами.
Принимая во внимание ограничения статических маршрутов и
дистанционно-векторных протоколов, нетрудно убедиться, что топологическая маршрутизация
лучше работает в больших сетях со сложной структурой, а также в сетях,
которые должны обладать высокой степенью масштабируемости. Исходная
настройка топологической маршрутизации в большой сети — задача непростая, но
в конце концов эти усилия окупятся. За дополнительной информацией о
топологической маршрутизации обращайтесь к главе 16.
Согласование в сетях IP
Одним из самых замечательных аспектов маршрутизации является согласование.
Другими словами, при каждом изменении топологии или размеров сети все
маршрутизаторы, входящие в сеть, должны согласовать друг с другом новые
данные об изменившейся топологии сети. В процессе согласования
маршрутизаторы обмениваются информацией друг с другом, однако каждый из них должен
самостоятельно определить воздействие топологических изменений на
маршрутные данные. Поскольку маршрутизаторы должны независимо прийти к единому
представлению о новой топологии с разных позиций, этот процесс называется
согласованием.
Согласование необходимо из-за того, что маршрутизаторы являются
интеллектуальными устройствами, способными самостоятельно принимать решения
о маршрутизации. В этом одновременно кроется их сила и слабость. В обычных
условиях механизм независимого распределенного сбора информации обладает
огромными преимуществами. С другой стороны, при изменении топологии сети
процесс согласования может породить временную нестабильность и проблемы
с маршрутизацией.
Адаптация к топологическим изменениям
К сожалению, самостоятельность маршрутизаторов создает проблемы при
изменении сетевой топологии. Рисунок 13.4 показывает, как разрыв одного сегмента
сети фактически приводит к изменению в ее топологии.
£ 10.0.0.0 р $192.168.125.0 }
Маршрутизатор А Маршрутизатор С
Маршрутизатор В Маршрутизатор D
Компьютер
Сервер 192.168.253.2 пользователя
Рис. 13.4. Объединенная сеть с четырьмя шлюзами
На рис. 13.4 представлена довольно простая объединенная сеть из четырех
узлов с альтернативными маршрутами. Обобщенная сводка содержимого
таблиц маршрутизации приведена в табл. 13.5. В целях нашего примера
приведенные данные отражают содержимое таблиц маршрутизации до начала
согласования.
Таблица 13.5. Содержимое таблиц маршрутизации перед согласованием
Маршрутизатор Приемник Следующий переход Длина пути в переходах
А 172.16.0.0 В 1
А 192.168.125.0 С 1
А 192.168.253.0 В или С 2
В 10.0.0.0 А 1
В 192.168.125.0 АилиР 2
В 192.168.253.0 D 1
С 10.0.0.0 А 1
С 172.16.0.0 Аилий 2
С 192.168.253.0 D 1
D 10.0.0.0 В или С 2
D 172.16.0.0 В 1
D 192.168.125.0 С 1
Если пакеты, передаваемые маршрутизатором С на сервер 192.168.253.2, вдруг
перестают доставляться, скорее всего, где-то в сети произошел сбой. Существует
огромное количество разных причин, из которых самыми распространенными
являются следующие:
О полный отказ сервера (аппаратный, программный или сбой питания);
О сбой подключения сервера к локальной сети;
О общий сбой на маршрутизаторе D;
О сбой интерфейсного порта на маршрутизаторе D;
О сбой канала между маршрутизаторами С и D;
О сбой интерфейсного порта на маршрутизаторе С.
Разумеется, определение новой топологии сети возможно лишь после точной
идентификации места сбоя. Кроме того, маршрутизаторы не смогут пытаться
обойти сбойный участок до тех пор, пока не будет определено его
местонахождение. В первых двух случаях из приведенного списка сервер 192.168.253.2
становится полностью недоступным для всех пользователей объединенной сети,
независимо от наличия альтернативных маршрутов.
Аналогично, полный отказ маршрутизатора D изолирует все ресурсы,
подключенные к его локальной сети, от остальной части сети. Но если
маршрутизатор сохранил частичную работоспособность или сбой произошел в другом
месте, возможно, хосты сети 192.168.255 остаются доступными. При поиске
нового маршрута к сети 192.168.255 маршрутизаторы должны распознать сбойный
компонент сети и согласовать общую информацию о нем. Исключение этого
компонента из сети фактически изменяет сетевую топологию.
Продолжая наш пример, допустим, что сбой произошел в интерфейсном порте
маршрутизатора D к каналу, ведущему к маршрутизатору С. Новая топология
сети изображена на рис. 13.5.
£ 10.0.0.0 р ^192.168.125.0 р
Маршрутизатор А Маршрутизатор С
ж
Маршрутизатор В Маршрутизатор D
с Свть < №&ЖШ':ч:^г^™м'^"" \ РЩ
V 172.16.0.0 р ^MI«V^^ISS^Zb^J
Компьютер
Сервер 192.168.253.2 пользователя
Рис. 13.5. Канал между маршрутизаторами С и D стал недоступным
Маршрутизаторы, использующие протокол динамической маршрутизации,
быстро определяют, что сервер 192.168.253.2 стал недоступным через текущий
маршрут. Ни один из маршрутизаторов сам по себе не может определить, где
произошел сбой и сохранились ли возможные альтернативные маршруты. Тем
не менее, обмениваясь информацией друг с другом, они совместно создают новое
представление сетевой топологии.
ПРИМЕЧАНИЕ
В примерах этой главы намеренно используется обобщенная методика согласования. Специфика
согласования в каждом из протоколов маршрутизации описана в главах 14-16.
В этой объединенной сети используется относительно простой протокол
маршрутизации. Каждый маршрутизатор обменивается маршрутными данными
только со своими непосредственными соседями, хотя при этом для каждой
конечной точки поддерживается возможность записи нескольких маршрутов.
В табл. 13.6 приведена сводка связей между парами маршрутизаторов,
представленных на рис. 13.5.
Таблица 13.6. Маршрутизаторы, обменивающиеся маршрутными данными
с непосредственными соседями
Маршрутизатор ABC D
А — Да Да Нет
В Да — Нет Да
С Да Нет — Да
D Нет Да Да —
Ячейки таблицы со словом «Да» обозначают пары маршрутизаторов, которые
являются непосредственными соседями и обмениваются маршрутными данными.
Ни один маршрутизатор не может соседствовать сам с собой, такие ячейки
помечены прочерком. Наконец, ячейки со словом «Нет» обозначают несмежные
пары маршрутизаторов, которые не могут напрямую обмениваться маршрутными
данными. Для обновления информации друг о друге они используют
информацию, полученную от непосредственных соседей.
Из таблицы становится ясно, что маршрутизаторы А и D, не соединенные
друг с другом напрямую, получают информацию друг о друге на основании
данных, полученных от маршрутизаторов В и С. С другой стороны,
маршрутизаторы В и С обмениваются информацией друг о друге через
маршрутизаторы А и D.
На рис. 13.6 обмен информацией через непосредственных соседей
представлен в графическом виде.
У такого сценария есть один важный аспект: поскольку не все
маршрутизаторы непосредственно соседствуют друг с другом, для распространения новой
информации о сбойном канале может потребоваться несколько обновлений.
Следовательно, адаптация к топологическим изменениям является
итеративным процессом, в котором участвуют все стороны.
Простоты ради допустим, что в нашем примере согласование выполняется за
два обновления таблиц маршрутизации. При первой итерации маршрутизаторы
начинают согласовывать новые представления о топологии сети.
Маршрутизаторы С и D из-за сбоя в канале не могут обмениваться маршрутной
информацией. Соответственно, они исключают из своих таблиц этот маршрут и все пути,
в которых он используется. Содержимое таблиц маршрутизации во время
процесса согласования приведено в табл. 13.7. Обратите внимание: в некоторых
таблицах может сохраняться ошибочное представление о том, что канал между
маршрутизаторами С и D по-прежнему остается рабочим.
Как видно из табл. 13.7, маршрутизаторы С и D обнаружили, что
соединяющий их канал неработоспособен. Тем не менее маршрутизаторы А и С все еще
полагают, что маршруты, проходящие через этот канал, остаются
действительными. Они узнают об изменении топологии сети лишь после обновления
маршрутных данных на маршрутизаторах С и D.
Ъ* Автономная система № 1 ) Ъ* Автономная система № 3 )
\у Сеть 10.0.0.0 S V. Сеть 192.168.125.0 "S
Маршрутизатор А Маршрутизатор С
I А I А
| Т | Т
Маршрутизатор В Маршрутизатор D
>■ Автономная система № 1 ) (^mw^£ww>-vwrv v.../.-.-Ц? v-ч^.'ш^
с сеть 172.16.0.0 ^ШШЁШШШштт
li ||Ш I ИМИ I IbWfll
ИЕДи шш|. ! f
1 /шШ™\~~
Компьютер
Сервер 192.168.253.2 пользователя
Ч ► Обмен маршрутными данными
Рис. 13.6. Обмен маршрутными данными между непосредственными соседями
Таблица 13.7. Содержимое таблиц маршрутизации во время согласования
Маршрутизатор Приемник Следующий переход Длина пути в переходах
А 172.16.0.0 В 1
А 192.168.125.0 С 1
А 192.168.253.0 В или С 2
В 10.0.0.0 А 1
В 192.168.125.0 АилиР 2
В 192.168.253.0 D 1
С 10.0.0.0 А 1
С 172.16.0.0 Только A (D не отвечает) 2
продолжение ё
Таблица 13.7 (продолжение)
Маршрутизатор Приемник Следующий переход Длина пути в переходах
С 192.168.253.0 D — недействительный Не работает
маршрут
D 10.0.0.0 В или С 2
D 172.16.0.0 В 1
D 192.168.125.0 С — недействительный Не работает
маршрут
В табл. 13.8 приведено содержимое таблиц на всех четырех маршрутизаторах
после согласования новой топологии. Не забывайте, что это описание процесса
согласования было намеренно обобщено и из него были исключены все
специфические механизмы конкретных протоколов.
Таблица 13.8. Содержимое таблиц маршрутизации после завершения согласования
Маршрутизатор Приемник Следующий переход Длина пути в переходах
А 172.16.0.0 В 1
А 192.168.125.0 С 1
А 192.168.253.0 Только В 2
В 10.0.0.0 А 1
В 192.168.125.0 Только А 2
В 192.168.253.0 D 1
С 10.0.0.0 А 1
С 172.16.0.0 Только А 2
С 192.168.253.0 А 3
D 10.0.0.0 Только В 2
D 172.16.0.0 В 1
D 192.168.125.0 Только В 3
Как следует из табл. 13.8, все маршрутизаторы объединенной сети в
конечном счете приходят к выводу, что канал между С и D не может использоваться,
но конечные узлы каждой автономной системы по-прежнему доступны через
альтернативные маршруты.
Время согласования
Изменение топологии сети не может быть обнаружено всеми маршрутизаторами
сети одновременно. В зависимости от выбранного протокола маршрутизации,
а также множества других факторов согласование новой топологии на всех
маршрутизаторах сопровождается существенной задержкой, которая называется
временем согласования. Следует помнить, что согласование не наступает
мгновенно; единственное, чего нельзя сказать заранее, — сколько времени на него
потребуется.
Следующие факторы влияют на продолжительность задержки при
согласовании:
О расстояние от маршрутизатора до точки изменений (в переходах);
О количество маршрутизаторов в сети, использующих протоколы
динамической маршрутизации;
О пропускная способность и загруженность коммуникационных каналов;
О загруженность маршрутизатора;
О закономерности распределения трафика на участке, где произошли
топологические изменения;
О выбор протокола маршрутизации.
Отрицательное воздействие некоторых факторов может быть
скомпенсировано тщательным планированием работы сети. Например, сеть может
проектироваться с расчетом на минимальную загрузку маршрутизаторов и
коммуникационных каналов. Другие факторы — такие, как количество маршрутизаторов
в сети — воспринимаются как неизбежный риск, присущий самой структуре сети.
Тем не менее сеть можно спроектировать так, чтобы в процессе согласования
участвовало меньшее количество маршрутизаторов. В частности, для этого можно
подключать концевые сети через статические маршруты. Результат — прямое
уменьшение времени согласования. Учитывая сказанное, становится ясно, что
ключевую роль в минимизации времени согласования играют два фактора:
О выбор протокола маршрутизации, обеспечивающего эффективное построение
маршрутов;
О правильное проектирование сети.
Построение маршрутов в сетях IP
Приведенные в предыдущем разделе примеры наглядно показывают, что время
согласования играет важнейшую роль в способности сети реагировать на
изменяющиеся условия ее работы. В целом согласование сводится к обмену данными
между маршрутизаторами сети, за который отвечают протоколы маршрутизации.
А именно, эти протоколы должны проектироваться так, чтобы маршрутизаторы
могли обмениваться информацией о маршрутах, ведущих к разным узлам сети.
К сожалению, протоколы маршрутизации не равноценны. Один из лучших
способов оценить пригодность протокола — воспользоваться его средствами для
вычисления маршрутов и определения времени согласования, а затем сравнить
полученные данные с другими протоколами. Однако из приведенного выше
списка факторов очевидно, что время согласования трудно определить с
достаточной степенью уверенности. Возможно, в этом вам поможет поставщик
маршрутизатора, даже если он предоставит лишь общие оценки.
Время согласования также зависит от того, насколько эффективно протокол
строит маршруты. Эффективность построения маршрутов зависит от
нескольких факторов:
О возможность построения и хранения нескольких маршрутов для каждой
конечной точки;
О механизм, инициирующий обновление маршрутных данных;
О метрики, используемые для вычисления расстояний и стоимости.
В нескольких ближайших разделах мы рассмотрим все эти факторы, а также
их вклад в общую эффективность протокола маршрутизации.
Хранение альтернативных маршрутов
Для повышения эффективности своей работы некоторые протоколы
маршрутизации хранят для каждой конечной точки только один маршрут (в идеальном
случае — оптимальный). Недостаток подобного решения заключается в том, что
при изменении топологии сети каждому маршрутизатору приходится строить
новые маршруты для всех точек, которые будут затронуты этим изменением.
Другие протоколы идут на увеличение таблиц маршрутизации и хранят
несколько маршрутов для каждой конечной точки. В нормальном рабочем режиме
наличие нескольких маршрутов позволяет маршрутизатору сбалансировать
трафик по нескольким каналам. При изменении топологии сети маршрутизаторы
уже знают альтернативные маршруты к соответствующим конечным точкам.
Наличие готовых альтернативных маршрутов не обязательно ускоряет
согласование, однако оно помогает сетям более корректно адаптироваться к
изменениям в топологии.
Механизм инициирования обновлений
Некоторые протоколы маршрутизации инициируют обновление маршрутных
данных по прошествии определенного времени. Другие протоколы управляются
событиями, то есть обновление инициируется автоматически при обнаружении
топологических изменений. При неизменности остальных факторов событийное
обновление ускоряет процесс согласования по сравнению с периодическим
обновлением.
Периодическое обновление
Механизм периодического обновления чрезвычайно прост. С течением времени
уменьшаются показания счетчика. После завершения установленного интервала
маршрутные данные обновляются независимо от того, происходили в сети
топологические изменения или нет. Такой способ обновления обладает двумя
недостатками:
О многие обновления выполняются без необходимости, что приводит к
пересылке лишних данных и напрасному расходованию маршрутизатора;
О зависимость построения маршрутов от прохождения времени увеличивает
время согласования.
Периодическое обновление данных обычно используется в протоколах
дистанционно-векторной маршрутизации.
Событийное обновление
Обновление, управляемое событиями, предоставляет гораздо больше
возможностей для инициирования обновления. Вполне логично приступать к обновлению
только в случае изменения топологии сети. Поскольку необходимость в
согласовании возникает только при изменении топологии сети, этот подход
обеспечивает наибольшую эффективность.
Выбирая протокол маршрутизации, вы фактически выбираете механизм
инициирования обновлений; в любом протоколе реализован один из этих двух
вариантов. Следовательно, это еще один фактор, который необходимо учитывать
при выборе протокола маршрутизации.
Событийное обновление обычно используется в протоколах топологической
маршрутизации.
Маршрутные метрики
Выбор протокола маршрутизации также определяет выбор метрик. Наборы
метрик, используемые разными протоколами, заметно различаются — как в
количественном, так и в качественном отношении.
Количество метрик
Простые протоколы маршрутизации ограничиваются одной-двумя метриками.
Более сложные протоколы могут поддерживать пять и более метрик. Чем больше
метрик, тем больше разнообразную и специфичную информацию можно
получить с их помощью. Следовательно, большое количество метрик позволяет лучше
приспособить работу сети под конкретные надобности. Например, простейшие
дистанционно-векторные протоколы используют всего одну эвфемистическую
метрику: расстояние. На практике значение этой метрики совершенно не связано
с географическим расстоянием и еще в меньшей степени зависит от физической
длины кабеля, соединяющего отправителя с получателем. Вместо этого обычно
подсчитывается количество переходов между этими двумя точками.
Топологические протоколы также могут учитывать другие факторы при
вычислении маршрутов:
О уровень трафика;
О занятость канала;
О задержка с распространением;
О сетевая стоимость использования канала (хотя эта метрика носит скорее
приблизительный характер).
Большинство из этих факторов носит динамический характер, то есть
изменяется в зависимости от времени суток, дня недели и т. д. Главное — помнить,
что вместе с этими факторами изменяется общая производительность сети.
Следовательно, метрики динамической маршрутизации позволяют принимать
оптимальные решения относительно выбора маршрута на основании самой свежей
информации.
Статические и динамические метрики
Одни метрики просты и имеют статический характер, другие чрезвычайно сложны
и динамичны. Значения статических метрик обычно настраиваются на стадии
выбора конфигурации. После завершения настройки значения остаются
постоянными до тех пор, пока они не будут изменены вручную.
Динамические метрики позволяют принимать решения, связанные с
выбором маршрута, на основании оперативно собираемых данных о состоянии сети.
Эти метрики поддерживаются только относительно сложными топологическими
или гибридными протоколами маршрутизации.
Итоги
Маршрутизация дает возможность пользователям и конечным системам
обмениваться данными в объединенных сетях IP. Тем не менее существует много
способов построения и сравнения маршрутов. Проблема выбора выходит за чисто
академические и философские рамки — принятое решение напрямую отражается
на производительности и функциональности сети IP. В этой главе представлен
общий обзор разных способов маршрутизации с обсуждением преимуществ и
недостатков каждого варианта. На основе этих общих сведений в трех следующих
главах будут проанализированы специфические особенности протоколов RIP,
OSPF и BGP.
М Шлюзовые протоколы
Тим Паркер (Tim Parker)
Протокол TCP/IP предназначался в первую очередь для поддержки межсетевого
трафика в сети, которая со временем превратилась в Интернет. По этой
причине для TCP/IP была выбрана иерархическая архитектура, особенно хорошо
подходящая для объединенных сетей. При переходе из одной сети в другую
дейтаграмма проходит через компьютеры, выполняющие маршрутизацию для
каждой сети.
Маршрутизатор определяет, предназначена ли дейтаграмма для локальной
сети, подключенной через шлюз. Если проверка дает положительный результат,
дейтаграмма выводится из магистральной пересылки в объединенной сети и
направляется в локальную сеть. Если дейтаграмму необходимо переслать дальше,
то маршрутизатор выполняет эту операцию. Чтобы правильно выбрать
следующий узел в цепочке пересылки, на маршрутизаторе должна храниться таблица
путей, содержимое которой соответствует текущему состоянию сети и
используется программными средствами маршрутизации. В этой главе объясняется,
как организуется обмен данными между маршрутизаторами в объединенных
сетях. Для разных типов маршрутизаторов были разработаны
специализированные протоколы.
Шлюзы, мосты и маршрутизаторы
Получив дейтаграмму из объединенной сети, маршрутизатор выполняет
простую проверку адреса получателя, хранящегося среди данных протокола TCP.
Если сетевая часть IP-адреса получателя совпадает с IP-адресом сети,
маршрутизатор понимает, что дейтаграмма предназначена для одного из компьютеров
подсети, к которой он подключен, и передает дейтаграмму в сеть для доставки.
Если анализ IP-адреса показывает, что дейтаграмма не предназначена для
подсети, обслуживаемой текущим маршрутизатором, она передается
следующему маршрутизатору в объединенной сети.
Организовать пересылку сообщений с компьютера на компьютер в малой сети
несложно, потому что каждый компьютер может знать IP-адреса всех остальных
компьютеров в сети. В крупной сети, а также при слиянии нескольких сетей
в объединенную сеть сложность неимоверно возрастает. В очень больших
объединенных сетях (таких, как Интернет) один маршрутизатор ни при каких
условиях не может хранить IP-адреса всех остальных компьютеров. По этой
причине были разработаны специальные устройства, упрощающие
маршрутизацию между сетями, в объединенной или глобальной сети. Такие устройства
называются шлюзами, мостами и маршрутизаторами. Они различаются по
выполняемым функциям:
О Шлюз (gateway) — компьютер, выполняющий протокольные преобразования.
Шлюзы работают на уровнях OSI с 4 по 7. Обычно шлюзы работают на
уровне 7 (например, шлюзы электронной почты).
О Мост (bridge) — компьютер, соединяющий две и более сетей, использующих
один протокол. Мост работает на уровне 2 модели OSI. В последнее время
появился новый класс устройств, называемых коммутаторами уровня 2,
которые могут использоваться в качестве замены мостов. Мосты работают с
канальными адресами, но не с IP-адресами сетевого уровня.
О Маршрутизатор (router) — компьютер, пересылающий дейтаграммы в сети.
Маршрутизаторы работают на уровне 3 модели OSI. Коммерческие
маршрутизаторы также могут выполнять функции, не относящиеся к уровню 3.
Например, некоторые маршрутизаторы одновременно работают как мосты,
выполняют преобразование сетевых адресов (NAT) или решают задачи,
связанные с безопасностью — скажем, фильтрацию пакетов.
ПРИМЕЧАНИЕ
В ранней литературе, посвященной Интернету, шлюзами обычно назывались устройства, которые
в наши дни называются маршрутизаторами. К сожалению, это иногда вызывает путаницу. В
современной терминологии старые шлюзовые устройства называются маршрутизаторами.
Шлюз
Шлюзом называется устройство, занимающееся преобразованием протоколов.
Такие преобразования необходимы, если шлюз обеспечивает интерфейс между
Интернетом (использующей TCP/IP) и локальной сетью (например,
использующей Novell NetWare). Чтобы эти две сети могли обмениваться данными, шлюз
должен преобразовывать пакеты NetWare IPX/SPX в дейтаграммы TCP/IP,
и наоборот. Шлюзы выполняют преобразования многих разных протоколов и
довольно часто обслуживают сразу несколько протоколов в зависимости от сетевых
подключений. В некоторых сетевых системах шлюзы также занимаются
преобразованиями файловых форматов или шифрованием/расшифровкой данных.
Мост
Мост проще всего представить себе как канал, связывающий две и более сети.
Иногда локальные сети соединяются скоростными выделенными линиями, как
это часто делается в многонациональных компаниях с представительствами
в разных регионах. Обе сети используют один и тот же протокол (например,
TCP/IP), но для скоростного телекоммуникационного канала нужна быстрая
система маршрутизации. Мост выполняет маршрутизацию дейтаграмм из одной
локальной сети в другую. Мосты могут обслуживать сразу несколько локальных
сетей, но все эти сети должны использовать один и тот же протокол.
Маршрутизатор
Большинство функций, выполняемых маршрутизаторами, относится к сетевому
уровню. Основная функция маршрутизаторов — пересылка дейтаграмм к месту
назначения, но при использовании альтернативных маршрутов некоторые
маршрутизаторы, как и шлюзы, могут выполнять преобразования протоколов.
Автономная система
Термин «автономная система» часто встречается при описании сетей,
подключенных к Интернету и другим объединенным сетям. Автономной называется такая
система, в которой структура локальной сети, к которой она подключена, остается
невидимой для остальной объединенной сети. Обычно локальная сеть
подключается через граничный маршрутизатор, через который проходит весь трафик для
этой сети. Внутренняя структура локальной сети изолируется от объединенной
сети, что одновременно упрощает управление дейтаграммами и улучшает защиту.
Знакомство со шлюзовыми протоколами
Как упоминалось выше в этой главе, хранить на одном компьютере таблицу
маршрутизации с информацией обо всем Интернете в принципе невозможно,
поэтому большинство маршрутизаторов обслуживает конкретный участок
объединенной сети и получает информацию о других сетях от соседних шлюзов.
Однако в результате возникает распространенная проблема, когда нехватка
информации не позволяет принять полностью обоснованные решения по выбору
маршрута. В таких ситуациях используются маршруты по умолчанию.
Протоколы маршрутизации обмениваются информацией о маршрутах и
состоянии сети между шлюзами. Существует несколько протоколов маршрутизации,
спроектированных для быстрой и надежной пересылки данных с минимальным
объемом непроизводительных затрат. Но прежде чем переходить к
рассмотрению конкретных протоколов, необходимо различать два типа шлюзов,
используемых в Интернете (и в других объединенных сетях): базовые и не-базовые.
К категории базовых шлюзов относятся компьютеры, администрируемые
центром INOC (Internet Network Operations Center) и являющиеся частью
магистральной структуры Интернета. Как упоминалось выше, хотя эти компьютеры
называются шлюзами, в действительности их следовало бы называть
маршрутизаторами. Базовые шлюзы первоначально разрабатывались для ARPANET.
Не-базовые шлюзы администрируются группами из внешних компаний или
организацией. Как правило, корпорации и образовательные учреждения, представленные
в Интернете, используют не-базовые шлюзы. В эпоху ARPANET шлюзы, не
находящиеся под прямым управлением ARPANET (то есть не-базовые шлюзы в
современной терминологии), назывались не-маршрутизирующими шлюзами.
Изменения в структуре Интернета и увеличение количества базовых шлюзов
потребовали разработки протокола, который бы позволял базовым шлюзам
обмениваться информацией друг с другом. Так появился протокол GGP (Gateway-
to-Gateway Protocol), который обычно используется только между базовыми
шлюзами. Протокол GGP в основном используется для распространения
информации о не-базовых шлюзах, подключенных к каждому базовому шлюзу; на
основании этой информации базовые шлюзы обновляют таблицы маршрутизации.
Некоторые локальные или глобальные сети содержат несколько
маршрутизаторов. Например, в крупной сети объем интернет-трафика может быть таким,
что для его обслуживания потребуется два маршрутизатора. С другой стороны,
если у вас имеется две локальные сети, входящие в глобальную сеть
корпоративного уровня, их можно настроить так, чтобы каждая сеть имела собственный
маршрутизатор. Если в локальной или глобальной сети используются два
маршрутизатора, которые могут общаться друг с другом, они считается соседями
в контексте этой сети. Если маршрутизаторы не могут общаться друг с другом
напрямую, так как принадлежат к разным автономным системам, они называются
внешними шлюзами или граничными маршрутизаторами. При использовании
маршрутов по умолчанию внешние шлюзы отвечают за маршрутизацию
сообщений между автономными системами.
В отдельно взятой локальной или глобальной сети маршрутные данные
обычно передаются между внутренними шлюзами при помощи протокола RIP (Routurm
Information Protocol). В некоторых системах используется менее
распространенный протокол HELLO. Протоколы RIP и HELLO относятся к категории
протоколов внутреннего шлюза IGP (Interior Gateway Protocols), предназначенных для
обмена информацией между соседними маршрутизаторами внутри сети. Обмен
информацией между двумя внешними шлюзами обычно производится с
использованием протокола EGP (Exterior Gateway Protocol).
Работа протоколов RIP, HELLO и EGP зависит от частой пересылки
дейтаграмм с информацией состояния между шлюзами. Передаваемая информация
используется для обновления таблиц маршрутизации. Протокол EGP используется
между шлюзами в автономных системах, тогда как протоколы RIP и HELLO
(принадлежащие к категории IGP) используются внутри сети. Протокол GGP
обеспечивает обмен данными между базовыми шлюзами в Интернете.
Протоколы IGP и EGP
Подробности работы протоколов, используемых для обмена данными между
маршрутизаторами, не представляют особого интереса для пользователей и
разработчиков, поскольку приложения очень редко напрямую работают с
протоколами маршрутизации.
Протокол GGP
Чтобы правильно и эффективно осуществлять маршрутизацию дейтаграмм,
базовые шлюзы должны знать текущее состояние дел в Интернете. Это означает,
они должны обмениваться информацией и сообщать друг другу характеристики
присоединенных подсетей. Например, если один из шлюзов, который является
единственной точкой входа в подсеть, перегружен обработкой большого объема
данных; другие шлюзы сети регулируют трафик, чтобы разгрузить
перегруженный шлюз.
Протокол GGP предназначен, прежде всего, для обмена маршрутными
данными. Маршрутные данные (адреса, топология и информация о задержках) не
следует путать с алгоритмами, используемыми для принятия решений по выбору
маршрута. Алгоритмы маршрутизации обычно фиксируются на уровне шлюза,
и протокол GGP не влияет на их работу. Базовый шлюз общается с другими
базовыми шлюзами, рассылая сообщения GGP, ожидая ответа и затем обновляя
таблицы маршрутизации, если полученный ответ содержит полезную информацию.
Протокол GGP относится к категории дистанционно-векторных протоколов.
Этот термин означает, что в сообщениях протокола передается конечная точка
(вектор) и расстояние до этой конечной точки. Для эффективной работы
дистанционно-векторных протоколов шлюз должен располагать полной
информацией обо всех шлюзах объединенной сети, без которой он не сможет вычислить
эффективный маршрут к конечной точке. По этой причине все базовые шлюзы
поддерживают таблицу с информацией обо всех остальных базовых шлюзах в
Интернете. Список получается относительно небольшим, и шлюзы легко
справляются с его хранением.
ПРИМЕЧАНИЕ
Базовые маршрутизаторы Интернета обмениваются информацией о доступности при помощи
протокола BGP (Border Gateway Protocol). Текущая версия BGP имеет номер 4. Протокол BGP4
необходим для поддержки механизма бесклассовой междоменной маршрутизации CIDR, обобщающего
данные маршрутизации.
Протокол EGP
Протокол EGP (Exterior Gateway Protocol) используется для обмена
информацией между нс-базовыми соседними шлюзами. He-базовые шлюзы содержат
полную маршрутную информацию для своих непосредственных соседей в сети
и компьютеров, подключенных к ним, но не обладают сведениями о других
зонах Интернета.
Протокол EGP в основном ограничивается передачей информации о
локальной и глобальной сети, обслуживаемой шлюзом. Тем самым предотвращается
пересылка чрезмерного объема маршрутных данных в локальных и глобальных
сетях. Протокол EGP ограничивает состав узлов, с которыми не-базовые шлюзы
обмениваются маршрутными данными.
Базовые шлюзы используют протокол GGP, не-базовые шлюзы используют
EGP, однако и те и другие находятся в Интернете; следовательно, должен
существовать механизм взаимодействия между этими категориями шлюзов.
Интернет позволяет любому автономному (пе-базовому) шлюзу отправлять другим
системам информацию о доступности, которая также должна попасть на
минимум один базовый шлюз. В больших автономных сетях обработка информации
о доступности обычно поручается специальному шлюзу.
Протокол EGP, как и GGP, использует механизм опроса (polling), чтобы
шлюзы постоянно располагали информацией о своих соседях и постоянно обменива-
лнсь с ними маршрутной и статусной информацией. EGP относится к
категории протоколов, управляемых состоянием] это означает, что их работа зависит от
таблицы состояния, содержащей информацию о состоянии шлюзов и операциях,
которые должны выполняться при изменении информации в таблице состояния.
Протоколы IGP
В настоящее время используется несколько протоколов IGP. Самыми
популярными являются протоколы RIP и HELLO, упоминавшиеся выше в этой главе,
а также протокол OSPF (Open Shortest Path First). Ни один из протоколов не
является безусловным лидером, хотя на практике чаще встречаются протоколы
RIP и OSPF. Выбор конкретного протокола IGP зависит от сетевой архитектуры.
Протоколы RIP и HELLO вычисляют расстояние до конечной точки, а в их
сообщениях передастся идентификатор компьютера и расстояние до него. В
общем случае сообщения этих протоколов имеют большую длину, потому что они
содержат информацию о данных, нескольких записей таблиц маршрутизации.
Протоколы RIP и HELLO постоянно связываются с соседними шлюзами и
убеждаются в том, что компьютеры активны.
Протокол RIP версии 1 использует технологию широковещательной рассылки.
Это означает, что шлюзы периодически рассылают свои таблицы
маршрутизации другим шлюзам сети. В этом заключается один из недостатков RIP, так
как увеличение сетевого трафика и неэффективный обмен сообщениями
замедляют работу сети. RIP версии 2 рассылает обновления маршрутных данных
с использованием групповой рассылки. Групповая рассылка эффективнее
широковещательной, потому что сообщение обрабатывается только
маршрутизаторами RIP, входящими в определенную группу.
Протокол HELLO отличается от RIP тем, что в качестве маршрутной метрики
в нем выбрано время, а не расстояние. Чтобы этот протокол нормально работал,
шлюз должен обладать относительно точной хронометражной информацией по
каждому маршруту, вследствие чего HELLO зависит от сообщений
синхронизации часов. Протокол HELLO использовался в некоторых университетах, но
широкого распространения в корпоративных сетях он не получил.
Протокол OSPF был разработан группой IETF как более эффективный
протокол IGP. Выражение «кратчайший маршрут» недостаточно точно описывает
принципы маршрутизации этого протокола. С учетом количества критериев,
используемых для выбора лучшего маршрута к заданной точке, правильнее было
бы использовать термин «оптимальный маршрут».
Итоги
Настоящая глава посвящена шлюзовым протоколам. Устройства, которые раньше
назывались шлюзами, а теперь называются маршрутизаторами, играют
важнейшую роль при передаче информации между сетями. В настоящее время
существует несколько основных шлюзовых протоколов, все они были упомянуты в
этой главе. Подробные описания таких протоколов, как RIP и OSPF, будут
приведены в следующих главах.
4 С Протокол RIP
Марк А, Спортак (Mark A. Sportack)
Протокол маршрутной информации RIP (Routing Information Protocol) имеет
одну из самых длинных историй среди всех протоколов маршрутизации. Он
основывается на алгоритмах дистанционно-векторной маршрутизации,
разработанных еще до появления ARPANET. Первые академические описания этих
алгоритмов появились между 1957 и 1962 годами. В 1960-х годах эти алгоритмы
были реализованы многими компаниями и распространялись на рынке под
разными названиями. Конечные продукты имели много общего, но из-за внесения
закрытых (запатентованных) усовершенствований они не обеспечивали полной
совместимости.
В этой главе подробно описан механизм работы и область применения
современных открытых стандартов RIP. Последняя версия RIP имеет номер 2 (RIPv2)
и включает в RIP поддержку подсетей. Кроме того, в RIPv2 применяется
групповая рассылка вместо широковещательной, применявшейся в исходной версии
RIP, которая также называется RIP версии 1 (RIPvl).
RFC 1058
Реализация RIP появилась раньше стандарта RIP, описанного в RFC 1038.
Реализация RIP для TCP/IP создавалась на базе версии RIP для XNS (Xerox
Networking System). Семейство протоколов XNS было разработано фирмой
Xerox и широко использовалось в разных формах разными организациями на
ранних стадиях сетевых технологий. Первая реализация RIP для TCP/IP
впервые появилась в BSD Unix еще до появления стандарта, который описывал ее
работу. В течение нескольких лет считалось, что «стандарт» RIP определяется
исходными текстами BSD.
В июне 1988 года был опубликован документ RFC 1058 с описанием RIP.
Следовательно, версии RIP, появившиеся до выхода RFC 1058, могут оказаться
несовместимыми.
RFC 1058 описывает новую и по-настоящему открытую форму
дистанционно-векторного протокола маршрутизации. Открытый стандарт RIP, как и его
закрытые предшественники, принадлежал к числу простых дистанционно-век-
торных протоколов, предназначенных для выполнения функций протокола IGP
в небольших, простых сетях.
Каждое устройство, использующее RIP, должно иметь по крайней мере один
сетевой интерфейс. Если сеть имеет стандартную архитектуру (Ethernet, Token
Ring или FDDI), протоколу RIP придется строить маршруты только для
устройств, не подключенных к этой локальной сети напрямую. Устройствам,
находящимся в одной локальной сети, для взаимодействия друг с другом вполне
достаточно средств этой локальной сети.
Формат пакета RIP
Протокол RIP использует специальный формат пакета для сбора и
распространения информации о расстояниях до известных конечных точек объединенной
сети. На рис. 15.1 изображен пакет RIP с маршрутными данными для одной
конечной точки.
Команда ^1®Ч Ноль AFI Ноль Me^L®l Ноль Ноль МвтРика
A октет)L <РТ0Т) Bоктета) Bоктета) Bоктета) Dоктета) Dоктета) Dоктета) Dоетета)
Рис. 15.1. Структура пакета RIP
Пакет RIP может содержать до 25 записей с полями AFI, межсетевого адреса
и метрики. Это позволяет использовать один пакет RIP для обновления
нескольких записей в таблицах маршрутизации других маршрутизаторов. В пакетах
RIP с несколькими записями маршрутизации просто многократно повторяется
фрагмент от поля AFI до поля метрики, включая все поля с нулями.
Дополнительные записи присоединяются в конец структуры, изображенной на рис. 15.1.
Пакет RIP с двумя записями изображен на рис. 15.2.
Команда ^J^JM Ноль AFI Ноль Мв^^В° I Ноль Ноль Метрика
A октет) L ^ет) Bоктета) Bоктета) Bоктета) Dо!авга) К4 о^ета) D октета) D оетета)
Мва^Н Ноль Ноль Мвфии
D октета) D октета) D октета) D октета)
Рис. 15.2. Структура пакета RIP с двумя записями
В поле адреса содержится либо адрес отправителя, либо серия IP-адресов из
таблицы маршрутизации отправителя. Пакет запроса содержит одну запись с адресом
отправителя. Пакет ответа содержит до 25 записей из таблицы маршрутизатора RIP.
Общий размер пакета RIP ограничивается 512 октетами. Из-за этого в
больших сетях RIP запрос на полное обновление таблицы маршрутизации может
потребовать передачи нескольких ответных пакетов RIP. По прибытии к месту
назначения пакеты не упорядочиваются. В этом нет необходимости, так как
данные отдельных записей не разбиваются между пакетами RIP. Таким
образом, содержимое любого пакета RIP вполне самостоятельно, даже при том, что
пакет может содержать подмножество записей полной таблицы маршрутизации.
Узел-получатель обрабатывает обновления по мере получения пакетов, не
пытаясь восстанавливать их исходный порядок.
Предположим, таблица маршрутизатора RIP содержит 100 записей. Обмен
маршрутными данными с другим узлом RIP потребует четырех пакетов RIP,
каждый из которых содержит 25 записей. Если первым будет принят четвертый
пакет (содержащий записи с 76 по 100), получатель просто начинает
обновление таблицы с соответствующей части. Никакой порядковой зависимости между
пакетами не существует. Это позволяет при пересылке пакетов RIP обойтись без
затрат, присущих полноценным транспортным протоколам типа TCP.
ПРИМЕЧАНИЕ
В качестве транспортного протокола RIP использует UDP. Сообщения RIP инкапсулируются в
пакетах UDP/IP. Процессы RIP на маршрутизаторах используют порт UDP с номером 520.
Команда
Поле команды указывает тип содержимого пакета RIP — запрос или ответ. В обоих
случаях используется одинаковая структура кадра:
О пакет запроса требует, чтобы маршрутизатор передал содержимое своей
таблицы маршрутизации (частично или полностью);
О пакет ответа содержит записи таблицы маршрутизации, которые должны быть
переданы другим узлам RIP в сети. Ответ генерируется либо в результате
поступления запроса, либо как обновление по инициативе маршрутизатора.
Номер версии
Поле номера версии содержит номер версии RIP, использованной при создании
пакета RIP. Хотя протокол маршрутизации RIP определяется открытым
стандартом, он не стоит на месте. За прошедшее время в RIP вносились изменения,
отраженные в номере версии. Несмотря на появление многочисленных аналогов,
протокол RIP существует всего в двух версиях. Версия 1 использует
широковещательную рассылку для передачи сообщений RIP, а в версии 2 используется
групповая рассылка. Групповая рассылка эффективнее широковещательной, а в случае
RIP версии 2 сообщения групповой рассылки обрабатываются только
маршрутизаторами RIPv2. Протокол RIPv2 использует групповой адрес класса D 224.0.0.9.
Нулевые поля
В каждый пакет RIP входят многочисленные нулевые поля. Это пережитки
прошлого, которые остались от RIP-подобных протоколов, предшествовавших
RFC 1058. Большинство нулевых полей обеспечивает обратную совместимость
со старыми аналогами RIP без поддержки их специфических возможностей.
В качестве примера таких устаревших механизмов можно привести режимы
traceon и traceoff. Они не вошли в RFC 1058, однако открытый стандарт RIP
должен быть совместим с закрытыми аналогами RIP, в которых эти режимы
поддерживались. По этой причине стандарт RFC 1058 сохранил в пакете
соответствующие поля, но потребовал, чтобы эти поля всегда заполнялись нулями.
Полученные пакеты, у которых значение полей отлично от нуля, просто игнорируются.
Но не все нулевые поля появились для обеспечения совместимости. По
крайней мере одно из нулевых полей зарезервировано для использования в будущем.
В RIPv2 первое нулевое поле содержит метку маршрутизации, а второе —
домен маршрутизации. Нулевые записи в формате пакетов RIPvl были заменены
маской подсети и информацией о следующем маршрутизаторе в формате RIPv2.
Версия RIPvl не поддерживала использования масок подсетей в записях
таблицы маршрутизации. На момент создания RIPvl механизм определения масок
подсетей вообще не существовал.
Поле AFI
Поле AFI (Address Family Identifier) задает семейство адресов, представленное
полем межсетевого адреса. Хотя стандарт RFC 1058 создавался группой IETF,
что подразумевало использование протокола IP, он проектировался с расчетом
на обеспечение обратной совместимости с предыдущими версиями RIP. Из этого
следовало, что протокол должен был поддерживать передачу маршрутных данных
для разнообразных архитектур межсетевых адресов. Соответственно, открытому
стандарту RIP требовался механизм определения типа адреса, передаваемого в его
пакетах. В стандарте RIP поле AFI равно 2.
Межсетевой адрес
Поле межсетевого адреса состоит из 4 октетов, может содержать адрес хоста,
сети или даже код адреса основного шлюза. Следующие примеры показывают,
насколько сильно может различаться содержимое поля:
О в пакете запроса, рассчитанном на одну запись, это поле содержит адрес
отправителя пакета;
О в пакете ответа, рассчитанном на несколько записей, это поле содержит
IP-адреса, хранящиеся в таблице маршрутизации отправителя.
Метрика
Последнее поле пакета RIP — поле метрики — содержит счетчик метрики для
данного пакета. Значение увеличивается при проходе через маршрутизатор.
Допустимые значения метрики для этого поля лежат в интервале от 1 до 15.
Вообще говоря, метрика может быть увеличена до 16, но это значение связано
с недействительными маршрутами. Соответственно, значение поля метрики,
равное 16, является кодом ошибки и не входит в диапазон допустимых значений.
Оно означает, что конечная точка недостижима.
Таблица маршрутизации RIP
В предыдущем разделе был рассмотрен формат пакетов, при помощи которых
хосты RIP обмениваются информацией. На хостах эта информация хранится
в таблицах маршрутизации. Для каждой известной и доступной на данный мо-
мент конечной точки в таблицу включается одна запись, которая определяет
маршрут с минимальной стоимостью, ведущий к заданной точке.
ПРИМЕЧАНИЕ
Количество записей, хранящихся для каждой конечной точки, зависит от разработчика
маршрутизатора. Разработчики могут придерживаться опубликованных спецификаций или «улучшать» их
так, как сочтут нужным. Вполне вероятно, что вам попадется какая-нибудь разновидность
маршрутизаторов, которая позволяет хранить до четырех маршрутов с равной стоимостью для каждой
конечной точки сети.
Каждая запись в таблице маршрутизации содержит следующие поля:
О IP-адрес конечной точки;
О дистанционно-векторная метрика;
О IP-адрес следующего маршрутизатора;
О флаг изменения маршрута;
О маршрутные таймеры.
ПРИМЕЧАНИЕ
Хотя открытый стандарт RFC 1058 поддерживает различные схемы межсетевой адресации, он
разрабатывался группой IETF для использования в автономных системах в Интернете. При этом
подразумевалось, что данная форма RIP будет использоваться в сочетании с межсетевым протоколом IP.
IP-адрес конечной точки
Самой важной информацией в любой таблице маршрутизации следует считать
IP-адреса всех известных конечных точек. Получив пакет, маршрутизатор RIP
ищет указанный в заголовке IP-адрес получателя в своей таблице
маршрутизации и по результатам поиска определяет, куда следует переслать этот пакет.
Метрика
Метрика, хранящаяся в таблице маршрутизации, представляет общие затраты
на пересылку дейтаграммы от точки отправления до заданной конечной точки.
В поле метрики хранится сумма всех затрат, присвоенных сетевым каналам,
образующим сквозной путь между маршрутизатором и конечной точкой.
IP-адрес следующего маршрутизатора
Поле содержит IP-адрес следующего интерфейса маршрутизации в сетевом пути,
ведущем к конечному IP-адресу. Поле заполняется только в том случае, если
IP-адрес конечной точки принадлежит к сети, не подключенной напрямую к
текущему маршрутизатору.
Флаг изменения маршрута
Флаг изменения маршрута показывает, изменялся ли в последнее время маршрут
к данному IP-адресу. Предполагалось, что эта информация важна, поскольку
в таблицах маршрутизации RIP хранится только один маршрут для каждого
IP-адреса.
Маршрутные таймеры
С каждым маршрутом связаны два интервала времени: тайм-аута и удаления
маршрута. Таймеры, измеряющие эти маршруты, совместно определяют
действительность маршрутов, хранящихся в таблице маршрутизации. Процесс
ведения таблицы маршрутизации более подробно описан в разделе «Обновление
таблицы маршрутизации» этой главы.
Механика работы RIP
Как объяснялось в главе 13, маршрутизаторы, использующие
дистанционно-векторные протоколы маршрутизации, должны периодически пересылать копии
своих таблиц маршрутизации своим непосредственным соседям по сети. Таблица
маршрутизации содержит данные о расстояниях между маршрутизатором и
известными ему конечными точками — хостами, принтерами и даже сетями.
Каждый получатель добавляет в таблицу свое значение расстояния и
пересылает измененную таблицу своим непосредственным соседям. Этот процесс
происходит в обе стороны между всеми соседними маршрутизаторами. На
рис. 15.3 изображена простая объединенная сеть RIP, на примере которой будет
продемонстрирована концепция обмена маршрутными данными между
непосредственными соседями.
Шлюзовый
маршрутизатор
Маршрутизатор А ; ! Маршрутизаторе
Маршрутизатор В
Рис. 15.3. Каждый узел RIP рассылает содержимое своей таблицы
маршрутизации своим непосредственным соседям
На рис. 15.3 показаны четыре маршрутизатора. Шлюзовый маршрутизатор
связан с каждым из трех маршрутизаторов и должен обмениваться с ними
маршрутными данными. Маршрутизаторы А, В и С подключены только к шлюзу,
поэтому каждый из них может напрямую обмениваться информацией только со
шлюзом. Они узнают друг о друге через информацию, распространяемую через
шлюз. В табл. 15.1 приведено сокращенное содержимое таблиц маршрутизации
на всех трех маршрутизаторах. Этими данными маршрутизаторы обмениваются
со шлюзом.
Таблица 15.1. Содержимое таблиц маршрутизации
Маршрутизатор Хост Следующий узел
А 192.168.130.10 Локальный
192.168.130.15 Локальный
В 192.168.125.2 Локальный
192.168.125.9 Локальный
С 192.68.254.5 Локальный
192.68.254.20 Локальный
На основе полученных данных шлюзовый маршрутизатор строит свою
собственную таблицу маршрутизации. Сокращенное содержимое этой таблицы
приведено в табл. 15.2.
Таблица 15.2. Содержимое таблицы маршрутизации на шлюзовом маршрутизаторе
Хост Следующий узел Количество переходов
192.168.130.10 А 1
192.168.130.15 А 1
192.168.125.2 В 1
192.168.125.9 В 1
192.68.254.5 С 1
192.68.254.20 С 1
Маршрутные данные из табл. 15.2 рассылаются в пакетах обновления
маршрутных данных всем остальным маршрутизаторам в сети. Маршрутизаторы
используют полученную информацию для построения собственных таблиц. В табл. 15.3
приведено сокращенное содержимое таблицы маршрутизатора А после обмена
маршрутными данными со шлюзовым маршрутизатором.
Таблица 15.3. Содержимое таблицы маршрутизации на шлюзовом маршрутизаторе
Хост Следующий узел Количество переходов
192.168.130.10 Локальный 0
192.168.130.15 Локальный 0
192.168.125.2 Шлюз 2
192.168.125.9 Шлюз 2
192.68.254.5 Шлюз 2
192.68.254.20 Шлюз 2
Маршрутизатор А знает, что шлюзовый маршрутизатор расположен на
расстоянии одного перехода. Получив информацию о том, что хосты 192.168.125.x
и 192.68.254.x тоже находятся на расстоянии одного перехода от этого шлюза,
он складывает два числа и определяет, что эти компьютеры находятся на
расстоянии двух переходов.
Подобное описание чрезвычайно упрощено, но оно дает представление о том,
как каждый маршрутизатор узнает о других маршрутизаторах, постепенно
формирует свое представление о сети и о расстояниях между отправителем и
получателем.
Вычисление расстояний
Дистанционно-векторные протоколы маршрутизации используют метрики для
измерения расстояния, отделяющего маршрутизатор от всех известных
конечных точек. Маршрутные данные позволяют маршрутизатору определить точку
следующего перехода с максимальной эффективностью.
В RFC 1058 определена всего одна дистанционно-векторная метрика:
количество переходов. По умолчанию в RIP используется метрика, равная 1. Таким
образом, для каждого маршрутизатора, получающего и пересылающего пакет,
количество переходов в поле метрики пакета RIP увеличивается на 1.
Полученные дистанционные метрики используются при построении таблиц
маршрутизации. В этих таблицах хранятся данные о следующем узле, которому следует
переслать пакет для того, чтобы он прибыл к месту назначения с минимальными
затратами.
В предыдущих, закрытых аналогах RIP каждому переходу обычно
назначалась фиксированная стоимость, равная 1. В RIP стандарта RFC 1058 это правило
было сохранено (по умолчанию расстояние равно количеству переходов), но
у администратора появилась возможность установить более высокую стоимость.
Увеличение стоимости помогает различать каналы с разными характеристиками
быстродействия — такими, как пропускная способность сетевого канала
(например 56 кбит/с в сравнении с линией Т1) или даже различия в быстродействии
старой и новой модели маршрутизатора.
Обычно каждому порту маршрутизатора, подключенному к другой сети,
назначается стоимость 1. Разумеется, этот пережиток сохранился с времен,
предшествовавших появлению RFC 1058, когда стоимость каждого перехода была
равна 1 и оставалась неизменной. В относительно небольшой сети,
использовавшей однородные средства передачи, присваивание стоимости 1 всем портам было
вполне логично. Пример изображен на рис. 15.4.
Администратор маршрутизатора может изменить метрику, используемую по
умолчанию. Например, медленным каналам к другим маршрутизаторам можно
назначить более низкую стоимость. Но даже если повышенная стоимость более
адекватно представляет затраты или расстояние до указанной конечной точки,
поступать подобным образом не рекомендуется. Дело в том, что значения,
большие 1, повышают риск того, что счетчик переходов превысит пороговое
значение 161 Рисунок 15.5 показывает, как быстро становятся недействительными
маршруты в результате увеличения маршрутных метрик.
Сеть 172.31.1
Шлюзовый
Стоимость = 1 у маршрутизатор ч стоимость = 1
Сеть / \ Сеть
192.168.130/ \192.68.254
Маршрутизатор А Маршрутизатор с\
Стоимость = 1 \
1_ I Сеть /^ ^ч
О^т— Ethernet —pL ) | 192.168.125 / \
^ШШШШШШ^ ( Token Ring j
РЯД ЩЯ Маршрутизаторе yS *\
\^^*\ [ШШ I sQ \
192.168.130.10 192.168.130.15 ВВ |ДД
J 192.68.254.20 [ИШ]
|) —.— EtHeitiet | )
U — ' 192.168.254.5
ш в
192.168.125.2 192.168.125.9
Рис. 15.4. Однородная сеть с одинаковой стоимостью каналов
На рис. 15.5 представлен слегка измененный вариант глобальной сети,
изображенной на рис. 15.4. В исходную топологию добавлены избыточные связи
с низкой пропускной способностью. Чтобы альтернативные маршруты
использовались только при недоступности основного маршрута, сетевой
администратор присваивает им метрику 10. Повышение стоимости приводит к тому, что
основная нагрузка сохраняется за скоростным каналом Т1. В случае сбоя одной из
линий Т1 объединенная сеть продолжает нормально работать, хотя пониженная
пропускная способность резервного канала 56 кбит/с может привести к
снижению общей производительности. На рис. 15.6 показано, как сеть реагирует на
сбой канала Т1 между шлюзом и маршрутизатором А.
Сеть 172.31.1
' /' Ш^^^^ШШШЯШШш\ ч
// I I \ \
Сеть // Шлюзовый \\ Сеть
192.168.130 /У маршрутизатор \\ 192.68.254
Маршрутизатор А ; ! Маршрутизатор CN.
192.168.130.10 192.168.130.15 ИВ ШШ
192.68.254.20 ШШ
192.168.125.2 192.168.125.9
Условные
обозначения
Линия Т1
Стоимость = 1
Линия 56 кбит/с
Рис. 15.5. Назначение каналам повышенной стоимости для того, чтобы при маршрутизации
различались основные и альтернативные маршруты
Альтернативный канал 56 кбит/с остается единственной линией, через
которую маршрутизатор А может обмениваться данными с прочими узлами сети.
Содержимое таблицы маршрутизации узла А после того, как маршрутизаторы
согласуют общее представление о новой топологии сети, приведено в табл. 15.4.
Хотя повышение стоимости маршрута более точно отражает низкую пропускную
способность альтернативных маршрутов, оно может вызвать нежелательные
проблемы маршрутизации. На рис. 15.7 произошел сбой сразу двух каналов Т1,
вследствие чего одновременно активизировались сразу два альтернативных маршрута.
Сеть 172.31.1
Сеть >/ ^^^^^^^^ ч\ч Сеть
192.168.130 //' Шлюзовый \\ 192.68.254
^^ШШШйЯ^^ маршрутизатор ЛЙЩ[^
Маршрутизатор А Маршрутизатор С\
L_ Сеть у^~^\
, Ethernet |-L- ) \ 192.68.125 / \
^ШШШШ^^Ъ I Token Ring J
L ' ■. щ L . щ Маршрутизатор В / \
[ЯИВВИв] | II lg~j :*•:••;:;•::: Ш: h1.1'" 'jj'' I' —г|
192.168.130.10 192.168.130.15 НН ВШИ
192.68.254.20 МД
О—I— Ethernet , ) 192.168.254.5
ВС ЩЯ
рн||'1'11'1||иИ'ип|| Hl^flliffilHtilil *
192.168.125.2 192.168.125.9
Условные
обозначения
Линия Т1
Стоимость = 1
Линия 56 кбит/с
Стоимость = 1
Рис. 15.6. Стоимость маршрута резко увеличивается, но сеть продолжает работать
Таблица 15.4. Содержимое таблицы маршрутизации на маршрутизаторе А после сбоя канала
Хост Следующий узел Количество переходов
192.168.130.10 Локальный 0
192.168.130.15 Локальный 0
192.168.125.2 Шлюз 11
продолжение £
Таблица 15.4 (продолжение)
Хост Следующий узел Количество переходов
192.168.125.9 Шлюз 11
192.68.254.5 Шлюз И
192.68.254.20 Шлюз 11
Сеть 172.31.1
192.168.130 //' Шлюэовый \\ 192.68.254
Маршрутизатор А ! I Маршрутизатор с\
l_^ ! ; Сеть у^ ^\
(Q ■ Ethernet г-1- ) jj 192 168.125 / \
I. в| !•' ""ш! Маршрутизатор В у^ \
192.168.130.10 192.168.130.15 \Ш\^'"! jGeSmI;
192.68.254.20 |№'-\li
О 1 Ethernet , ) 192.168.254.5
ющ Si:
I* ш1 • ш
192.168.125.2 192.168.125.9
Условные
обозначения
Линия Т1
Стоимость = 1
_ _ Линия 56 кбит/с
Стоимость = 1
Рис. 15.7. Стоимость маршрута быстро накапливается, но сеть продолжает работать
Поскольку у обоих альтернативных каналов метрика стоимости равна 10, их
одновременная активизация приводит к тому, что стоимость маршрута превышает 16.
Допустимые значения счетчика переходов RIP лежат в интервале от 0 до 16, при
этом код 16 представляет недействительный маршрут. Таким образом, если
метрика (суммарная стоимость) маршрута превышает 16, маршрут объявляется
недействительным, с рассылкой оповещения по всем соседним маршрутизаторам.
Очевидно, сохранение стоимости по умолчанию, равной 1, помогает
избежать этой проблемы. Если увеличение метрики стоимости некоторого перехода
абсолютно необходимо, к выбору нового значения следует подходить очень
внимательно. Сумма метрик для любой пары адресов получателя и отправителя
в сети никогда не должна быть больше 15. В табл. 15.5 показано, как сбой второго
канала изменяет содержимое таблицы маршрутизации на узле А.
Таблица 15.5. Содержимое таблицы маршрутизации на маршрутизаторе А после двух сбоев каналов
Хост Следующий узел Количество переходов
192.168.130.10 Локальный 0
192.168.130.15 Локальный 0
192.168.125.2 Шлюз 11
192.168.125.9 Шлюз И
192.68.254.5 Шлюз 16
192.68.254.20 Шлюз 16
Как видно из табл. 15.5, стоимость маршрута между А и С превысила 16,
поэтому записи всех маршрутов между этими точками объявлены
недействительными. Маршрутизатор А по-прежнему может обмениваться данными с В, потому
что суммарная стоимость этого маршрута равна 11.
Обновление таблицы маршрутизации
Протокол RIP хранит в таблице маршрутизации только одну запись для каждой
конечной точки, поэтому ему приходится активно поддерживать целостность
таблицы маршрутизации. Для этого протокол требует, чтобы все активные
маршрутизаторы RIP рассылали содержимое своих таблиц маршрутизации.
Получаемые обновления автоматически замещают предыдущее содержимое таблиц
маршрутизации.
Для ведения таблицы маршрутизации в протоколе RIP используются три
таймера:
О Таймер обновления.
О Таймер тайм-аута маршрута.
О Таймер удаления маршрута.
Таймер обновления инициирует обновление таблицы маршрутизации на
узловом уровне. На каждом узле RIP используется только один таймер обновления.
С другой стороны, для каждого маршрута поддерживаются отдельные таймеры
тайм-аута и удаления.
По этой причине в каждую запись таблицы маршрутизации включаются
отдельные таймеры тайм-аута и удаления. При помощи этих таймеров узлы RIP
проверяют целостность маршрутов, а также активно восстанавливают
маршрутные данные после сетевых сбоев, инициируя обновление по прошествии
определенного времени. В нескольких следующих разделах описываются основные
операции по ведению таблиц маршрутизации.
Периодическое обновление таблиц
Обновление таблиц инициируется каждые 30 секунд. Этот интервал времени от-
считывается таймером обновления. По истечении заданного времени узел RIP
генерирует серию пакетов с полным содержимым своей таблицы маршрутизации.
Пакеты рассылаются между соседними узлами. Таким образом, каждый
маршрутизатор RIP примерно через 30 секунд должен получать обновленную
информацию от своих соседей по RIP.
ПРИМЕЧАНИЕ
В больших автономных системах на базе RIP периодические обновления могут порождать
неприемлемо большой объем трафика. Следовательно, обновление для каждого узла желательно
инициировать с небольшой случайной задержкой. RIP делает это автоматически; при каждой
инициализации интервал обновления увеличивается на небольшую случайную величину.
Если обновление не происходит в предполагаемое время, это указывает на сбой
или ошибку в объединенной сети. Диапазон причин очень широк, от элементарных
сбоев вроде потери пакета, содержащего обновленную информацию, до очень
серьезных (отказ маршрутизатора). Разумеется, дальнейшие действия зависят от
конкретной причины сбоя. Было бы нелогично объявлять недействительными целую
серию маршрутов из-за потери одного пакета с обновлением (вспомните: для
повышения эффективности пакеты с обновленными данными RIP пересылаются
с использованием ненадежного транспортного протокола). Итак, одно
пропущенное обновление не должно стать причиной для серьезных исправительных
операций. Чтобы протокол RIP лучше понимач, насколько серьезна та или иная ошибка,
для идентификации недействительных маршрутов в нем используются таймеры.
Идентификация недействительных маршрутов
Маршруты становятся недействительными по одной из двух причин:
О истечение срока жизни маршрута;
О получение информации о недоступности маршрута от другого маршрутизатора.
В обоих случаях маршрутизатор RIP должен обновить свои таблицы
маршрутизации, чтобы в них отражалась информация о недействительных маршрутах.
Если маршрутизатор не получает обновленных данных о доступности
маршрута в течение заданного времени, срок жизни маршрута истекает. Интервал
тайм-аута для маршрутов обычно устанавливается равным 180 секундам. Отсчет
времени начинается с момента активизации или очередного обновления маршрута.
За 180 секунд маршрутизатор обычно получает до шести обновлений
маршрутных данных от своих соседей (если предположить, что они обновляют таблицы
каждые 30 секунд). Если по истечении 180 секунд маршрутизатор RIP не
получает обновления для данного маршрута, считается, что IP-адрес конечной точки
стал недоступным. Соответственно, маршрутизатор помечает эту запись в своей
таблице как недействительную, для этого он заносит в поле метрики значение 16
и устанавливает флаг изменения маршрута. Далее эта информация
распространяется среди соседей при периодических обновлениях таблиц маршрутизации.
ПРИМЕЧАНИЕ
Для узлов RIP код 16 означает бесконечность. Таким образом, присваивание 16 полю метрики
фактически объявляет маршрут недействительным.
Получив оповещение о недоступности маршрута, соседние узлы используют
полученную информацию для обновления своих таблиц маршрутизации. Это
второй из двух вариантов появления недействительных записей в таблице
маршрутизации.
Недействительная запись остается в таблице маршрутизации очень недолго,
пока маршрутизатор решает, следует ли ее удалить. Даже несмотря па
присутствие записи в таблице, отправка дейтаграмм на IP-адрес данной записи
невозможна: протокол RIP не может маршрутизировать дейтаграммы по
недействительным маршрутам.
Удаление недействительных маршрутов
Когда маршрутизатор признает запись недействительной, он запускает второй
таймер — таймер удаления записи. Таким образом, таймер удаления записи
запускается через 180 секунд после последнего перезапуска таймера тайм-аута.
Обычно он устанавливается на 90 секунд.
Если и через 270 секунд для маршрута не будет получено обновление A80
секунд на тайм-аут + 90 секунд на удаление), маршрут удаляется из таблицы.
Таймеры удаления играют важную роль в механизме восстановления после
сетевых сбоев.
ПРИМЕЧАНИЕ
Важно помнить, что для правильной работы объединенных сетей RIP необходимо участие всех
шлюзов в сети. Участие может быть активным или пассивным, но участвовать должны все.
Активными называются узлы, которые активно участвуют в обмене маршрутными данными. Они
получают обновления от соседних узлов и рассылают копии своих таблиц маршрутизации соседям.
Пассивные узлы получают обновления от соседей и используют их для модификации своих таблиц
маршрутизации. С другой стороны, пассивные узлы не занимаются активным распространением
копий своих таблиц.
Пассивное поддержание таблиц маршрутизации было чрезвычайно полезно в эпоху,
предшествующую появлению аппаратных маршрутизаторов, когда маршрутизация выполнялась демоном routed
в системах Unix. Пассивный режим сводил к минимуму затраты на маршрутизацию на хосте Unix.
Проблемы адресации
Группа IETF позаботилась о совместимости протокола RIP со всеми известными
разновидностями RIP и routed. Так как ранние реализации были относительно
закрытыми, открытый стандарт RIP не мог жестко определять тип адресации.
По этой причине поле адреса в пакете RIP может содержать:
О адрес хоста;
О идентификатор подсети;
О идентификатор сети;
О 0 (признак маршрута по умолчанию).
Из этого разнообразия вариантов следует, что RIP позволяет строить
маршруты как к отдельным хостам, так и к сетям, содержащим множество хостов.
Чтобы реализовать эту гибкость адресации на практике, узлы RIP используют
при пересылке дейтаграмм наиболее конкретные из имеющихся данных.
Например, когда маршрутизатор RIP получает пакет IP, он анализирует адрес
получателя и пытается найти его в своей таблице маршрутизации. Если найти запись с
указанным адресом не удается, маршрутизатор проверяет, не входит ли этот
адрес в одну из известных ему сетей или подсетей. Если и на этом уровне
совпадение не найдено, маршрутизатор RIP использует маршрут по умолчанию.
Маршрутизация на шлюз
До настоящего момента подразумевалось, что записи в таблице маршрутизации
RIP относятся к отдельным хостам. Это упрощенное предположение в большей
степени относится к исходному механизму работы маршрутизации. В наши дни
сети стали слишком большими и содержат слишком много хостов, что сделало
маршрутизацию на уровне хостов непрактичной. Хостовая маршрутизация
приводит к излишнему увеличению размеров таблиц и замедляет маршрутизацию
в объединенных сетях.
В реальных сетях маршруты строятся для адресов сетей, а не для адресов
хостов. Например, если все хосты заданной сети (или подсети) доступны через
один и тот же шлюз (или шлюзы), таблица маршрутизации может просто
определить этот шлюз в качестве IP-адреса получателя. Все дейтаграммы,
адресованные хостам этой сети или подсети, будут пересылаться шлюзу. Далее шлюз
отвечает за доставку дейтаграмм их конечному месту назначения. Ситуация
представлена на рис. 5.8; мы сохраняем топологию сети из нескольких
предыдущих примеров, но используем более традиционные IP-адреса.
На рис. 15.8 хост 172.31.254.4 должен передать пакет IP хосту 192.168.125.10.
Маршрутизатору С этот адрес неизвестен. Маршрутизатор проверяет маску
подсети 255.255.255.0 и находит идентификатор подсети 192.168.125. Маршрут
к этой подсети ему известен. Предполагается, что шлюзовый маршрутизатор
подсети знает, как связаться с нужным хостом. Соответственно, маршрутизатор С
пересылает пакет на шлюз. При таком подходе хосты должны быть известны
только ближайшему маршрутизатору, а остальные маршрутизаторы не обязаны
их знать. Пунктирная линия на рис. 15.8 обозначает два этапа перемещения
дейтаграммы IP. На первом этапе дейтаграмма пересылается с маршрутизатора С
на маршрутизатор А, а затем — с маршрутизатора А на хост 192.168.125.10.
ПРИМЕЧАНИЕ
Протокол RIPvl не поддерживает масок подсетей переменной длины (VLSM). Соответственно, для
каждой сети может быть назначена только одна маска подсети. Вполне вероятно, что сеть будет
содержать несколько подсетей, каждая из которых обладает собственным адресом с постоянной длиной
маски. RIP также относится к категории «классовых» протоколов маршрутизации, поскольку он
поддерживает только классовые адреса IPv4. Версия RIPv2 поддерживает как VLSM, так и бесклассовую
междоменную маршрутизацию QDR. Механизм QDR, описанный в предыдущих главах, позволяет
объединять записи таблиц маршрутизации в блоки адресов, ассоциируемые с одной записью таблицы.
\ !
! Сеть 172.31.1
| х.—..-~-- — ---„ Автономная
п *'' 11ШШШШШШ п^^ Сеть 172.31
Сеть ^ у<^Ш^штШШ Сеть ч-ч
192.168.125 / |~! '\ \ 172.31.254 Ч
/ , Шлюзовыи X
Маршрутизатор А \ \ Маршрутизатор с\ \
D 1 j Ethernet —pi- )' Сеть 172.31.12 f^\ \
' ' J^^''m'^H^Zh ( Token ^'n9 ] l
\* *'m\\ •""""" m | Маршрутизатор В у/ \ \
|'~^Ш~Аj L |;^=Ш^-. ; • m\ I, J на
192.168.125.10 192.168.125.15; |jj||j||| . m\
\ I 172.31.254.20 | Z\
! @ i Ethernet - i )
j u — ' 172.31.254.5
! Цг^пД; ll ГД fill
! !• m\ • m\
i 172.31.12.2 172.31.12.9
Рис. 15.8. Узлы RIP могут пересылать дейтаграммы на шлюзы
Маршрутизация между шлюзами
Пример, представленный в предыдущем разделе, создает потенциальную проблему
маршрутизации. Если маршрутизатор С не знает маску подсети для IP-адреса
получателя, а хостовая часть адреса отлична от нуля, маршрутизатор не сможет
определить, содержит ли адрес идентификатор подсети или номер хоста. В итоге
пакет будет отвергнут из-за невозможности доставки.
Во избежание этой двойственности маршруты, ведущие в подсеть, не
распространяются за пределами сети, содержащей эту подсеть. Маршрутизатор на
границе подсети выполняет функции шлюза; каждая подсеть рассматривается как
отдельная сеть. Обновления RIP выполняются между непосредственными сосе-
дями внутри каждой подсети, но сетевой шлюз распространяет только
идентификатор сети между соседними шлюзами в других сетях.
На практике это означает, что граничный шлюз рассылает разную
информацию среди своих соседей. Непосредственные соседи внутри сети получают
обновления со списками всех подсетей, напрямую подключенных к шлюзу. В
записях таблицы маршрутизации перечисляются идентификаторы подсетей.
Непосредственные соседи вне сети получают всего одно обновление, в
котором объединяются все хосты подсетей, находящихся внутри сети. Передаваемая
метрика задает расстояние только до входа в сеть, без учета переходов внутри
сети. В результате удаленные маршрутизаторы RIP считают, что любой хост в
подсети известен граничному шлюзовому маршрутизатору сети и доступен через него.
Маршруты по умолчанию
1Р-адрес 0.0.0.0 используется для определения маршрута по умолчанию. По
аналогии с группировкой подсетей при маршрутизации на сетевой шлюз, маршрут
по умолчанию может использоваться для маршрутизации в несколько сетей без
их явного определения и описания. Единственное требование заключается в том,
чтобы между этими сетями существовал как минимум один шлюз, готовый
обработать сгенерированный трафик.
Для определения маршрута по умолчанию в RIP создается запись с адресом
0.0.0.0. Этот специальный адрес обрабатывается по тем же правилам, что и
обычные IP-адреса. В поле следующего маршрутизатора указывается IP-адрес
соседнего шлюзового маршрутизатора. Запись маршрута по умолчанию используется
так же, как и остальные записи, с одним важным исключением: маршрут по
умолчанию используется для маршрутизации всех дейтаграмм, у которых адрес
получателя не подходит ни под одну запись в таблице.
В табл. 15.6 приведено сокращенное содержимое таблицы маршрутизации
узла А с маршрутом по умолчанию. В этой таблице явно определены только два
локальных хоста. Все остальные локальные запросы автоматически передаются
на шлюзовый маршрутизатор.
Таблица 15.6. Содержимое таблицы маршрутизации с маршрутом по умолчанию на узле А
Хост Следующий узел
192.168.125.10 Локальный
192.168.125.15 Локальный
0.0.0.0 Шлюз
Топологические изменения
До настоящего момента основные механизмы и спецификации RIP
рассматривались в относительно статической ситуации. Тем не менее для получения
более глубокого понимания механики RIP следует разобраться в том, как
происходит взаимодействие этих механизмов при изменении топологии сети.
Согласование
Самым важным последствием топологических изменений в объединенной сети
RIP следует считать изменение маршрутных данных на соседних узлах.
Изменение также может привести к тому, что при следующем построении
дистанционных векторов будут получены другие результаты. Таким образом, новые группы
соседних узлов должны прийти к общему представлению о новой сетевой
топологии, начиная с разных отправных точек. Процесс разработки общего
представления о топологии сети называется согласованием.
Процесс согласования изображен на рис. 15.9. На рисунке представлены два
возможных маршрута к маршрутизатору D от маршрутизатора А и сети 192.168.125.
Маршрутизатор D является шлюзовым. Основной маршрут к сети
маршрутизатора D проходит через маршрутизатор С. Если внутри этого маршрута
произойдет сбой, маршрутизаторам потребуется некоторое время на согласование новой
топологии, не содержащей связи между маршрутизаторами С и D.
Сеть 172.31.1
Стоимость = 10 /™^ИИЯ\ Стоимость = 1
/ Маршрутизатор D \
Сеть / \ Сеть
192.168.130^/ B.D \ 192.68.254
Маршрутизатор В \ / Маршрутизатор С
Стоимость = 1^1^168^125^ / д Q N.
\ ^Ш11Ш|1ШшШ/ Стоимость = 1 /^^^Х
I Ethernet -р1 ) |^^^^|^Ш / \
ьшсрщищ, (Token Ring)
1 1 Маршрутизатор А V I
i и' г ei ^^ \
192.168.130.2 192.168.130.9 jjjjjjjj L^J^J
192.68.254.20 [гЁЙ]
f] I Ethernet ■ i I
4 — ' 192.68.254.5
L^SS ||с~пИ|
{• ш\ }• ш\
192.168.125.10 192.168.125.15
Рис. 15.9. Два возможных пути от маршрутизатора D к маршрутизатору А
Канал C-D перестает работать сразу же после сбоя, но на то, чтобы
информация об этом распространилась в сети, может потребоваться некоторое время.
Согласование начинается с того, что маршрутизатор D узнает о недоступности С.
Предполагается, что таймер обновления на маршрутизаторе D истекает раньше
таймера на маршрутизаторе С. Поскольку обновления от D к С передавались
именно по тому каналу, на котором произошел сбой, их пересылка прекращается.
Соответственно, маршрутизатор С (а также А и В) еще не знает о том, что канал
C-D не работает. Все маршрутизаторы объединенной сети продолжают
передавать через этот канал дейтаграммы, предназначенные для сети D. Первая стадия
согласования изображена на рис. 15.10.
Сеть 172.31.1
.,.. .,4.л,..л..л у Автономная
ШМЩтШ^Ш^М система
рШШ^ЩЩу Сеть 172.31
/ Маршрутизатор D \ _ _
/ у \ Стоимость = 1
Стоимость = 10/ _„-.-*'' B_D \ j^S
Маршрутизатор В ' д-В / / Маршрутизатор С
Стоимость = 1192^68Ь125/ / \
0~Т~ Ethemet | ) jHlllCTOHM^bH (CenRir^
I .1 Маршрутизатор А V J
• m\ • m „v^L \
192.168.130.2 192.168.130.9 'ВИН! L' m\
192.68.254.20 |ШШш{
(P i Ethernet i ~H
* — } 192.68.254.5
I* И • KB;
192.168.125.10 192.168.125.15
Рис. 15.10. Только маршрутизатор D знает о сбое канала
После истечения таймера обновления маршрутизатор D попытается передать
соседям свое представление об изменившейся топологии сети. Единственным
непосредственным соседом, с которым ему удастся связаться, будет
маршрутизатор В. Получив обновление, маршрутизатор В обновляет свою таблицу
маршрутизации и устанавливает для маршрута от В к D (через С) бесконечную
метрику. Это позволяет ему продолжить обмен данными с D через канал B-D.
После обновления своей таблицы узел В распространяет информацию об
изменившейся топологии сети среди своих соседей — А и С.
ПРИМЕЧАНИЕ
Помните, что узлы RIP объявляют маршрут недействительным, присваивая ему метрику 16 — в RIP
этот код обозначает бесконечность.
Как только А и С получат обновления и пересчитают стоимости, они могут
заменить свои устаревшие маршруты, использовавшие канал C-D, каналом B-D.
Маршрут B-D раньше отвергался всеми узлами, включая В, как более дорогой
по сравнению с C-D. Присвоенная ему метрика 10 уступала метрике C-D,
равной 1. Теперь, после сбоя канала C-D, наименьшей стоимостью обладает канал
B-D. В результате новый маршрут заменяет старый, ставший недействительным
в результате тайм-аута, в таблицах соседних маршрутизаторов.
Когда все маршрутизаторы придут к выводу, что самый эффективный
маршрут к D ведет через В, согласование завершается (рис. 15.11).
Период времени, в течение которого будет производиться согласование,
определить нелегко. Он сильно зависит от многочисленных факторов, в том числе
от ошибкоустойчивости маршрутизаторов и средств передачи данных, объема
трафика и т. д.
Проблема бесконечного отсчета
В примере из предыдущего раздела единственный сбой произошел в канале,
соединяющем узлы С и D. Маршрутизаторы смогли согласовать новую
топологию, вследствие чего доступ к сети маршрутизатора D был восстановлен по
альтернативному маршруту. Но если бы сбой произошел на самом
маршрутизаторе D, ситуация была бы гораздо более серьезной. Процесс согласования
в предыдущем примере начался с того, что маршрутизатор D смог оповестить В
о сбое в сети. Если работать перестанет сам маршрутизатор D, а не канал связи
с С, то маршрутизаторы В и С не получат обновлений и не узнают от
изменившейся топологии.
Согласование новой топологии при сбоях такого рода порождает явление,
называемое проблемой бесконечного отсчета. Если сеть становится совершенно
недоступной, обновления между оставшимися маршрутизаторами могут привести
к устойчивому увеличению метрик маршрутизации до недоступной конечной
точки; при этом каждый маршрутизатор ошибочно полагает, что другой
маршрутизатор может получить доступ к потерянной конечной точке. Если не
вмешаться в происходящее, маршрутизаторы буквально начинают отсчет до
бесконечности (в интерпретации RIP)
Сеть 172.31.1
^!Y,^,t,j; ? ^ Автономная
И|^^Ш^й система
/^^^ggfegv Сеть 172.31
Гтлмм^ _ 1П /^Маршрутизатор D C-D
Стоимость - 1Су, 4 v Стоимость = 1
Сеть // ? ч. V Сеть
192168130// | ^B-D /\ 192.68.254
Маршрутизатор В ' д.^^ х / Маршрутизатор С
Стоимость =1 192.168.125 / \
\ ^Ш1^^^85Э^ Стоимость = 1 /^~~^\
I I Маршрутизатор А V 7
192.168.130.2 192.168.130.9 j^^^ L' ,
192.68.254.20 |рШШ|
(Г^— Ethernet ■ )
« — ' 192.68.254.5
•,,-•:■:;:;■•,■ • га
192.168.125.10 192.168.125.15
Рис. 15.11. Маршрутизаторы согласовали новый маршрут B-D
Чтобы лучше понять опасность подобных фатальных сбоев по отношению
к механизму маршрутизации, вернемся к знакомой топологии, на примере
которой пояснялся процесс согласования. На рис. 15.12 на маршрутизаторе D
произошел сбой.
Сбой маршрутизатора D приводит к тому, что внешний доступ к хостам,
входящим в его сеть, становится невозможным. Не получив шесть
последовательных обновлений от D, маршрутизатор С объявляет маршрут C-D
недействительным и рассылает информацию о его недоступности (рис. 15.13).
Маршрутизаторы А и В не знают о сбое маршрута до тех пор, пока их не известит об
этом маршрутизатор С.
Сеть 172.31.1 Автономная
^^^;^;";-,;ж;;;^^<^ СИСТвМа
yl^^S^^S Сеть 172.31
/ Маршрутизатор d\ Стоимость = 1
B-D „--' ^Vn£ Сеть
Стоим^эсть = 10/ - - " * ' в-D | ^Aw-jwJ[92.68.254
Маршрутизатор В « * / / Маршрутизатор С
Стоимость =1 192.168.125/ / N,
\ шШш1жС# Стоимость = 1 /^ "Х
ж^тжуштш^т (Token Ring)
I l Маршрутизатор А V 7
U вв| [* ав | х \
192.168.130.2 192.168.130.9 Щрр! L'T' ■
192.68.254.20 |^^^|
Cl Ethernet 1 )
— ' 192.68.254.5
||{—]Д| ||г~]^|
* в U щ
192.168.125.10 192.168.125.15
Рис 15.12. Сбой на маршрутизаторе D
На этой стадии А и С полагают, что к D можно обратиться через узел В. Они
пересчитывают маршруты и включают в них повышенную стоимость обходного
пути (рис. 15.14).
Маршрутизаторы отправляют очередные обновления В — непосредственному
соседу обоих маршрутизаторов. Маршрутизатор В после наступления тайм-аута
для маршрута к D полагает, что он все еще может обратиться к D через А или С.
Разумеется, на самом деле это невозможно, поскольку эти маршрутизаторы
используют канал, который узел В только что объявил недействительным.
Фактически между А, В и С возникает цикл, порожденный ошибочным
представлением о том, что А и С могут связаться с недоступным маршрутизатором D через
друг друга. Это объясняется тем, что они оба связаны с маршрутизатором В,
который в, свою очередь, связан с D.
Сеть 172.31.1 Автономная
^яж^.Щ5^}да|^ система
/fei^ll^^gfx Сеть 172.31
/ N^mp>nn^TopD\ стоимость = 1
"В"^ .// B-D ><С Сеть
^!^l3—. Стоимость = 1 ^Д_Д92.68;254
Маршрутизатор В 'А-В р ^/Маршрутизатор С
Стоимость =1 g1 у Ч
О —I— Ethernet —Н ) |^^^И|1Н8| Стоимость =1 / \
ч _ 1 шш^шш^ш^^т Token Rjngj
, I,,, I Маршрутизатор А V 7
192.168.130.2 192.168.130.9 Sjjjj| LSH
| 192.68.254.20 [ДВВ)
0~ I Ethernet i ^П
— ' 192.68.254.5
192.168.125.10 192.168.125.15
Рис. 15.13. Маршрутизатор С объявляет канал C-D недействительным
При каждой итерации обновлений стоимость метрики возрастает с учетом
дополнительного перехода, добавленного к уже построенному циклу. Причиной
зацикливания является задержка, присущая независимому согласованию с
передачей обновлений по соседним узлам.
Теоретически узлы рано или поздно поймут, что узел D недоступен. Тем
не менее практически невозможно предсказать, сколько времени им для этого
потребуется. Данный пример убедительно объясняет, почему в RIP был
выбран такой низкий порог бесконечности. Когда сеть становится недоступной,
наращивание метрик вследствие стандартных обновлений необходимо
остановить как можно раньше. К сожалению, это означает ограничение
продолжительности отсчета узлов, после которого конечная точка объявляется недоступ-
ной. Любое ограничение такого рода напрямую ограничивает максимальный
размер диаметра маршрутизируемой сети. Разработчики RIP решили, что 15
переходов для автономной системы будет более чем достаточно. В системах
больших масштабов можно воспользоваться более сложным протоколом
маршрутизации.
Сеть 172.31.1 А
s. ^ ^ ^" Автономная
Шж^Ш^^Ш система
у^ЩП Сеть 172.31
/ Маршрутизатор D \ C"D
/ \ Стоимость = 1
B-D / d n О/ Сеть
CT0ll£ii^<- -°™^-ь- - -1- - - ^§Ы111254
Маршрутизатор В I \ \^ /Маршрутизатор С
Стоимость = 1 \l92.168.125 / Nv
(Ш^!^у£;У'-.-!',:г ..!^Й^^^.. ^ТТ^ЙЛ-3 |^^^H[lm| Стоимость = 1 ( \
" 'Г"'"''""""'**'"'™ '""'''*'\ гу^шмрйииг™ (Token Ring)
вив в|а | V 7
р"' '"'] [^^Sj Маршрутизатор A J^^^_^^\
Sail § Ш
192.168.130.2 192.168.130.9 bgd \^Ш^\
ЛТР! :". J
192.68.254.20 ЩП
^^^^^^^^Щр^ 192.68.254.5
IhJh | КЗ
ПШИ|1 LIHJ
ЛТП. JBEl
192.168.125.10 192.168.125.15
Рис. 15.14. Маршрутизаторы А и С полагают, что они могут обратиться к D через В
В RIP предусмотрены три способа решения проблемы бесконечного отсчета:
О асимметричное распространение;
О асимметричное распространение с обратным исправлением;
О экстренные обновления.
Асимметричное распространение
Проблема зацикливания, описанная в предыдущем разделе, решается с
применением специальной логической схемы, которая обычно называется
асимметричным распространением. Хотя протокол RIP не поддерживает асимметричного
распространения «в чистом виде», понимание этого механизма поможет вам
лучше понять его более сложную разновидность — асимметричное
распространение с обратным исправлением (split horizon with poisoned reverse).
Механизм асимметричного распространения основан на предположении, что
узел RIP не передает информацию о маршруте конкретному соседу, если
изначально информация об этом маршруте была получена именно от этого соседа.
Рисунок 15.15 поясняет ситуацию.
Сеть 172.31.1
.. гО^Ч*4 Обновления только
Маршрутизатор D ^ч дляД.ВиС!
Обновления только для D! чч^\Ч
Сеть „ s\4x Сеть
192.168.130 Обновления только N>\4l9Z68.254
Г:,,,,,:,:,,^:,,::,,:,,.,:^.™Г - ОбНОВЛвНИЯ ТОЛЬКО Р^^ЩШ23&Ш*
Маршрутизатор В Для А и в' Маршрутизатор С
Чч\\ Обновления только * /*''
\\\ Для А, С и D! '//
ч\ чх Обновления только/ V/1-
\\ ч af»i / / * Обновления только
\\ \ для А и В! //' ^пи»,«п"л iwjww
Обновления только ч>\\ //''' для В, С и D!
для В, С и D! Чч\Ч\ Сеть ///
ч\\ \ 192.168.125 ///
Маршрутизатор А
Рис. 15.15. Асимметричное распространение
На рис. 15.15 маршрутизаторы поддерживают логику асимметричного
распространения. Маршрутизатор С (поддерживающий единственный путь к
маршрутизатору D) не может получать от А обновления, касающиеся сети D, поскольку
при получении этой информации А зависит от С (и даже В). Маршрутизатор А
должен исключить из распространения информацию о маршрутах, полученных
от С. Этот простой способ предотвращения циклов относительно эффективен,
но у него есть серьезный функциональный недостаток: отказ из
распространения обратных маршрутов приводит к тому, что узлам приходится дожидаться
тайм-аута для каждого недоступного маршрута.
В протоколе RIP тайм-аут происходит только после пропуска шести
сообщений об обновлении маршрута. Следовательно, неправильно информированный
узел может до пяти раз передать другим узлам неправильную информацию о
недоступной конечной точке. Именно эта задержка создает возможность
зацикливания неправильных маршрутных данных. Из-за этого ограничения в RIP
используется слегка измененная схема, называемая асимметричным распространением
с обратным исправлением.
Асимметричное распространение
с обратным исправлением
Простая схема асимметричного распространения пытается предотвратить
зацикливание посредством отказа от возвращения информации тому узлу, от
которого она была получена. Хотя в некоторых ситуациях этот способ помогает,
существуют более эффективные средства предотвращения циклов.
Асимметричное распространение с обратным исправлением использует гораздо более
радикальный способ: для разрыва циклических маршрутов их метрики «портятся»
присваиванием бесконечного значения. Пример представлен на рис. 15.16.
Сеть172 31 1
T--w-wmr--^miirrTT|%N^ч ^ ОбНОВЛвНИЯ ТОЛЬКО
Маршрутизатор D ч>\4 для А, В и С!
Обновления только для D! ччЧ?4ч
Сеть 4nNN Сеть
192.168.130 Обновления только для А и В! чХ>ч 192.68.254
t^ilu^n,^ Маршруты к D испорчены tf=JSl!3iib
Маршрутизаторов Маршрутизатор С
\ \ * / / *'
\ Обновления только для А и С! / / /
Маршруты к D испорчены '//
чч\ \ Обновления только для А и В! '/
\\ \ Маршруты к D испорчены
Обновления только ч\\\ Сеть У/*''
для А и С! \\\ 192 168 125 '//
Маршруты к D испорчены \\ V—^^—L—^'V/ Обновления только
^^ШШ^Ш/ШШ'' для • и
Маршрутизатор А
Рис. 15.16. Асимметричное распространение с обратным исправлением
Как видно из рис. 15.16, маршрутизатор А может предоставить
маршрутизатору В информацию о том, как достичь маршрутизатора D, но этот маршрут
содержит метрику 16. Следовательно, В не может обновить свою таблицу мар-
шрутизации информацией о том, как лучше достичь D. В сущности, А сообщает
о том, что он не может напрямую связаться с D, и это действительно так.
Подобная форма распространения маршрутных данных быстро и эффективно
разрывает циклы;
Как правило, в дистанционно-векторных сетях асимметричное
распространение с обратным исправлением гораздо надежнее простого асимметричного
распространения. И все же ни один из вариантов не идеален. Асимметричное
распространение с обратным исправлением эффективно предотвращает
зацикливание в топологиях, ограничивающихся двумя шлюзами, но в более крупных
сетях протокол RIP по-прежнему страдает от проблемы бесконечного отсчета.
Чтобы бесконечные циклы обнаруживались как можно раньше, RIP
поддерживает механизм экстренного обновления.
Экстренные обновления
Топологии с тремя шлюзами к общей сети по-прежнему подвержены проблеме
зацикливания, возникающей при «взаимном обмане» шлюзов. Пример
представлен на рис. 15.17. На рисунке изображены три шлюза А, В и С, ведущих к
маршрутизатору D.
Сеть
172.31.1
/ Маршрутизатор D \
192.168.130/ \ 192.68.254
Маршрутизатор В Маршрутизатор С
Маршрутизатор А
Сеть
192.168.125
Рис. 15.17. Три шлюза, связанных с D
Если на маршрутизаторе D произойдет сбой, маршрутизатор А может
считать, что маршрутизатор В все еще может работать с D. Маршрутизатор В
считает, что С по-прежнему работает с D, а маршрутизатор С думает то же самое
о маршрутизаторе А. В результате возникает знакомая ситуация зацикливания.
Ситуация представлена на рис. 15.18.
Сеть
172.31.1
/ Маршрутизатор D \
Сеть / Стоимость = \ Сеть
192.168.130/ Стоимость + 1 \ 192.68.254
Маршрутизатор В Стоимость = Маршрутизатор С
\Стоимость + 1 Стоимость = / /
\ \ Стоимость + 1\/
Маршрутизатор А
Сеть
192.168.125
Рис. 15.18. Проблема бесконечного отсчета с тремя шлюзами
Логика асимметричного распространения в этом сценарии неэффективна,
что объясняется задержкой перед объявлением недействительных маршрутов.
Для ускорения согласования протокол RIP использует другой механизм,
называемый экстренным обновлением. В соответствии с правилом экстренного
обновления при изменении маршрутной метрики шлюз должен немедленно разослать
информацию об этом независимо от того, сколько времени осталось до
истечения 30-секундного таймера обновления.
Как показывает предыдущий раздел, время является ахиллесовой пятой
асимметричного распространения, с обратным исправлением или без него.
Экстренное обновление призвано преодолеть этот недостаток за счет сведения задержки
до абсолютного минимума.
Таймеры временного отказа от приема
Тем не менее экстренное обновление — не панацея. Обновления в сети не
распространяются мгновенно, поэтому возможно (хотя и маловероятно), что другой
шлюз выполнит периодическое обновление до получения экстренного
обновления от другого шлюза. В этом сценарии устаревший (недействительный)
маршрут может получить дальнейшее распространение в сети. Хотя вероятность
такого события чрезвычайно мала, нельзя утверждать, что экстренные обновления
полностью исключают зацикливание в сетях RIP.
Одно из решений потенциальной проблемы основано на использовании
таймеров временного отказа. Таймер временного отказа используется в сочетании с
механизмом экстренного обновления. Сразу же после экстренного обновления
на маршрутизаторе запускается таймер. Пока счетчик не достигнет нуля, мар-
шрутизатор не принимает обновления от соседей для указанного маршрута или
конечной точки.
В результате маршрутизатор RIP не принимает обновления
недействительного маршрута в течение заданного интервала времени. Это сделано для того,
чтобы маршрутизатор не пришел к ошибочному выводу, что другому
маршрутизатору известен действительный путь к недоступной точке.
Недостатки RIP
Несмотря на свою долгую историю существования, протокол RIP не лишен
недостатков. Он прекрасно подходил для построения маршрутов на ранних порах
развития объединенных сетей, но технологические достижения радикально
изменили принципы построения и использования объединенных сетей. Из-за этого
в современных объединенных сетях протокол RIP быстро уходит в прошлое.
Среди главных недостатков RIP необходимо выделить следующие:
О отсутствие поддержки маршрутов, длина которых превышает 15 переходов;
О использование фиксированных метрик при построении маршрутов;
О высокий уровень трафика при обновлении таблиц;
О относительно медленное согласование;
О отсутствие поддержки динамического распределения нагрузки.
Ограничение количества переходов
Протокол RIP разрабатывался для относительно небольших автономных систем,
поэтому максимальная длина маршрута в нем жестко ограничивается 15
переходами. При пересылке пакета маршрутизатор увеличивает его счетчик переходов
на величину стоимости канала, через который этот пакет передается. Если
счетчик переходов достигает 15, а пакет еще не добрался до положенной конечной
точки, эта точка считается недоступной, а пакет уничтожается.
Ограничение длины маршрута фактически ограничивает максимальный
диаметр сети 15 переходами. При грамотном проектировании этого достаточно для
построения довольно большой сети, однако возможности RIP серьезно
ограничены по сравнению с масштабируемостью других, более современных
протоколов маршрутизации. Таким образом, если ваша сеть не относится к
категории самых мелких, RIP вряд ли можно считать правильным выбором протокола
маршрутизации.
Фиксированные метрики
От ограничения количества переходов будет логично перейти к следующему
принципиальному ограничению RIP: фиксированным стоимостным метрикам. Хотя
метрики могут настраиваться администратором, они имеют статическую
природу. Протокол RIP не может обновлять их в реальном времени в соответствии
с изменениями, обнаруженными в сети. Стоимостные метрики, определенные
администратором, сохраняют фиксированные значения до того момента, когда
они будут обновлены вручную.
Отсюда следует, что протокол RIP плохо подходит для динамичных сетей,
в которых маршруты строятся в реальном времени в ответ на изменения в
состоянии сети. Например, если в сети поддерживаются приложения, критичные
по времени, будет разумно выбрать протокол маршрутизации, который бы строил
маршруты на основании измерений задержек в каналах связи или даже текущей
нагрузки каналов. RIP использует фиксированные метрики и поэтому
принципиально не поддерживает построение маршрутов в реальном времени.
Высокий уровень трафика при обновлении таблиц
Через каждые 30 секунд узел RIP производит широковещательную рассылку
таблиц маршрутизации. В больших сетях с большим количеством узлов это
может породить заметный объем трафика.
Медленное согласование
С точки зрения пользователя 30-секундное ожидание обновления не создает
особых проблем. Тем не менее маршрутизаторы и компьютеры работают гораздо
быстрее людей, а ожидание обновлений в течение 30 секунд имеет ярко
выраженные негативные последствия (см. выше раздел «Топологические изменения»
этой главы).
Но 30-секундное ожидание обновлений — далеко не самое неприятное. Гораздо
хуже то, что для обновления маршрута недействительным приходится ждать
целых 180 секунд, причем по истечении этого времени один маршрутизатор всего
лишь начинает согласование. В зависимости от количества маршрутизаторов
и топологии объединенной сети полное согласование может потребовать
многократных обновлений. Низкая скорость согласования маршрутных данных
маршрутизаторами RIP создает массу возможностей для ложного распространения
маршрутов, которые успели стать недействительными. Разумеется, это ухудшает
производительность сети как в целом, так и в субъективном восприятии
конкретного пользователя.
В этой главе были наглядно продемонстрированы отрицательные
последствия медленного согласования, характерного для RIP.
Отсутствие распределения нагрузки
Еще один существенный недостаток RIP — отсутствие средств динамического
распределения нагрузки. На рис. 15.19 изображен маршрутизатор с двумя
последовательными соединениями с другим маршрутизатором объединенной сети.
В идеальном случае этот маршрутизатор должен стараться как можно
равномернее распределять трафик по двум соединениям для поддержания минимальной
загрузки обоих каналов и оптимизации скорости передачи данных.
К сожалению, протокол RIP не обладает средствами динамического
распределения нагрузки. Он просто использует первое из двух известных ему
физических соединений. RIP направляет весь трафик по этому соединению, несмотря
на наличие второго свободного соединения. Ситуация изменится только в том
случае, если маршрутизатор на рис. 15.19 получит обновление маршрутных
данных, извещающее об изменении метрик к любой заданной конечной точке. Если
в результате обновления второй канал станет путем с минимальной стоимостью,
RIP переходит на второй канал и перестает использовать первый.
Стоимость = 1
„ - ** "*"''■»
,''* Нет трафика N
Сеть *' \ Сеть
192.168.130 / \ 192.68.254
EEESSE™|SS£1 ВеСЬ ТрафИК ESZS3Z£SEE3£ID
Маршрутизатор А \
7, Г (Token Ring
m Щ ИЗ \
гтйвигН Г'йям"! I [ ЩШШЩ
I СшЦ I LJuSsh—J LZ_I_LIIZJ hE» I
) HT ^ Jhi.т l т д^ I I ВШ5Э I
hatd
192.168.130.2 192.168.130.9 tmd [—II]
иЩ-] I ' i
192.68.254.20 f|||j
192.68.254.5
Рис. 15.19. Проблема бесконечного отсчета с тремя шлюзами
Принципиальное отсутствие средств распределения нагрузки в RIP лишь
подтверждает то, что этот протокол изначальо предназначался для простых сетей.
Такие сети по своей природе ограничиваются минимум альтернативных
маршрутов (или обходятся вообще без них), поэтому распределение нагрузки не входит
в число целей проектирования, а его поддержка не развивалась.
Итоги
Благодаря простоте настройки, гибкости и удобству использования протокол
маршрутизации RIP пользовался большим успехом. С момента его разработки
в компьютерных, сетевых и межсетевых технологиях появились огромные
достижения, отразившиеся на популярности RIP. В наши дни используется множество
других протоколов, превосходящих RIP с технической точки зрения. Но несмотря
на успех этих протоколов, RIP остается весьма полезным протоколом
маршрутизации для тех, кто понимает практические следствия его недостатков и
использует его соответствующим образом. В этой главе также были рассмотрены
усовершенствования новой версии RIP — RIPv2.
"I 4% пР°токол OSPF
Марк А. Спортак (Mark A. Sportack)
В конце 1980-х годов принципиальные недостатки дистанционно-векторной
маршрутизации становились все более очевидными. Одна из попыток
улучшения масштабируемости сетей была основана на том, чтобы решения по выбору
маршрута принимались на основании состояния каналов, а не на количестве
переходов или других дистанционных метриках. Каналом называется соединение
между двумя маршрутизаторами сети. К состоянию канала причисляются такие
атрибуты, как скорость передачи и задержка.
В этой главе дается подробное описание версии открытого протокола
предпочтительного выбора кратчайшего пути OSPF (Open Shortest Path First).
Протокол был разработан группой IETF, а его первая спецификация содержалась
в RFC 1131. Эта недолговечная спецификация быстро ушла в прошлое с
выходом RFC 1247. Различия между двумя спецификациями OSPF были достаточно
значительными, поэтому версия OSPF из RFC 1247 получила название OSPF
версии 2. Протокол OSPF версии 2 продолжал развиваться и совершенствоваться.
Последующие модификации были описаны в RFC 1583, 2178 и 2328 (текущая
версия). Текущей версии OSPF по-прежнему присвоен номер 2. Интернет и IP
быстро развиваются, и вполне вероятно, что OSPF будет совершенствоваться
наравне с ними.
Происхождение OSPF
В соответствии с растущей потребностью в построении крупномасштабных
IP-сетей в IETF была сформирована рабочая группа по разработке открытого
топологического протокола маршрутизации, предназначенного для больших
разнородных сетей IP. Новый протокол маршрутизации создавался на базе более или
менее успешных запатентованных протоколов маршрутизации SPF, в большом
количестве представленных на рынке. Все протоколы маршрутизации SPF,
включая OSPF, непосредственно основаны на математическом алгоритме, известном
как алгоритм Дейкстры. Вместо дистанционно-векторных метрик этот алгоритм
выбирает маршрут на основании состояния каналов.
Протокол маршрутизации OSPF был разработан в IETF в конце 1980-х
годов. Он представлял собой открытую версию семейства протоколов
маршрутизации SPF. Исходный вариант OSPF был описан в RFC 1131. Эта первая версия
вскоре была заменена существенно улучшенной версией, документированной
в RFC 1247. За новой версией было закреплено название «OSPF версии 2», что
должно было явно обозначить существенные улучшения в ее устойчивости и
функциональности. В эту версию были внесены многочисленные улучшения,
каждое из которых воплощалось в форме открытого стандарта с обсуждением
на форуме IETF. Последующие спецификации публиковались в RFC с номерами
1583, 2178 и 2328.
Вместо того чтобы анализировать путь постепенного развития текущей
версии OSPF, в этой главе основное внимание будет уделено основным
возможностям, специфике и области применения последней версии OSPF.
Принципы работы OSPF
Протокол OSPF разрабатывался как протокол маршрутизации IP,
предназначенный для использования в автономных системах. По этой причине он не
способен пересылать дейтаграммы других маршрутизируемых сетевых протоколов
(таких, как IPX или AppleTalk). Если ваша сеть должна поддерживать несколько
разных протоколов маршрутизации, подумайте над использованием другого
протокола маршрутизации вместо OSPF.
Протокол OSPF строит маршруты на основании IP-адреса получателя,
указанного в заголовке дейтаграммы IP; поддержка построения маршрутов для
получателей, не являющихся узлами IP, не предусмотрена. Сообщения OSPF
инкапсулируются в IP напрямую, их доставка не требует применения других
протоколов (TCP, UDP и т. д.).
Одной из целей, поставленных при разработке OSPF, было быстрое
обнаружение топологических изменений в автономных системах и быстрое согласование
новой топологии после обнаружения изменений. Решения по выбору
маршрутов учитывают состояние каналов, связывающих маршрутизаторы в автономной
системе. На каждом из маршрутизаторов хранится идентичная копия базы
данных с информацией о состоянии каналов в сети. В базу данных включены
данные о состоянии маршрутизатора, в том числе о его интерфейсах, доступных
соседях и состоянии каналов связи.
Обновления таблицы маршрутизации, называемые сообщениями LSA (Link-
State Advertisements), передаются непосредственно всем остальным соседям в зоне
маршрутизатора. В технической терминологии такой механизм обновления
называется лавиной (flooding), но этот термин несет отрицательный подтекст и создает
неверное представление о реальных характеристиках быстродействия OSPF.
На практике согласование в сетях OSPF происходит очень быстро. Все
маршрутизаторы сети используют один и тот же алгоритм маршрутизации и
пересылают обновления таблицы маршрутизации непосредственно друг другу. На
основании этой информации строится образ сети и ее каналов. На каждом мар-
шрутизаторе сеть представляется в виде древовидной структуры, в которой сам
маршрутизатор является корневым узлом. Это дерево, называемое деревом
кратчайших путей, содержит информацию о кратчайшем маршруте к каждой
конечной точке автономной системы. Доступ к конечным точкам за пределами
автономной системы осуществляется через граничные шлюзы внешних сетей, которые
представляются листовыми узлами на дереве кратчайших путей. Данные о
состоянии каналов для таких конечных точек и/или сетей не могут храниться
просто потому, что они находятся за пределами сети OSPF и не могут
отображаться в виде ветвей на дереве кратчайших путей.
Зоны OSPF
Среди причин, объясняющих быстроту согласования в протоколе OSPF, одно
из ключевых мест занимает использование зон. Стоит напомнить, что при
разработке OSPF группа IETF выдвинула две основные цели:
О улучшение масштабируемости сети;
О ускорение согласования.
Ключом к достижению обеих целей является разделение сети на области
меньшего размера, называемые зонами. Зона представляет собой совокупность
конечных систем, маршрутизаторов и каналов связи, объединенных в сеть. Каждая зона
характеризуется уникальным номером, настраиваемым на уровне
маршрутизатора. Интерфейсы маршрутизаторов, которым назначены одинаковые номера
зоны, становятся частью одной зоны. В идеальном варианте зоны определяются
не произвольно, а так, чтобы свести к минимуму объем межзонного трафика.
Разбиение на зоны производится с учетом реальных закономерностей трафика,
а не географических или политических границ. Конечно, это идеальный случай,
который может оказаться непрактичным для вашей конкретной среды.
Количество зон, поддерживаемых сетью OSPF, ограничивается размером поля
идентификатора зоны. Поле представляет собой 32-разрядное двоичное число,
потому теоретическое максимальное количество сетей определяется 32-разрядным
двоичным числом, у которого все биты равны 1. В десятичном представлении
это число равно 4 294 967 295. Разумеется, реальное количество
поддерживаемых зон значительно ниже теоретического максимума. На практике
максимальное количество зон в сети зависит от того, насколько правильно была
спроектирована сеть. На рис. 16.1 изображена относительно простая сеть OSPF с тремя
зонами, которым присвоены номера 0, 1 и 2.
Типы маршрутизаторов
Не забывайте, что протокол OSPF относится к категории топологических
протоколов. По этой причине каналы и интерфейсы маршрутизаторов, к которым
они подключаются, относятся к определенной зоне. В зависимости от зонной
принадлежности в сетях OSPF различаются три типа маршрутизаторов:
О внутренние маршрутизаторы;
О граничные маршрутизаторы;
О магистральные маршрутизаторы.
/ Маршрутизатор! Зона 0 Маршрутизатор \.
Маршрутизатор Маршрутизатор | Маршрутизатор Маршрутизатор
Маршрутизатор ! Маршрутизатор
Рис. 16.1. Небольшая сеть OSPF с тремя зонами
На рис. 16.2 изображены все три типа маршрутизаторов для сети из
предыдущего примера.
.Маршрутизатор | Магистральные Маршрутизатор
/ маршрутизаторы \
Маршрутизатор ч"^% Маршрутизатор » ; /Маршрутизатор ,'' Маршрутизатор
Маршрутизатор ч" *. '• ' ■'.*'' Маршрутизатор
w Граничные ^
\ маршрутизаторы /
ч /
""---_ _. - Внутренние .. _ _ ,.. ~ ~'
маршрутизаторы
Рис. 16.2. Внутренние, граничные и магистральные маршрутизаторы в сети OSPF
Как показано на рис. 16.2, маршрутизатор с несколькими интерфейсами
может принадлежать к двум и более зонам. Такие маршрутизаторы называются
граничными. К категории магистральных относятся маршрутизаторы, у которых
как минимум один интерфейс определен как принадлежащий к зоне 0. Любой
граничный маршрутизатор, подключенный к зоне с номером 0, одновременно
является и граничным, и магистральным.
Внутренний маршрутизатор содержит интерфейсы, принадлежащие к одной
зоне, но не к зоне 0. Использование трех базовых типов маршрутизаторов
позволяет строить эффективные, масштабируемые сети OSPF.
Типы маршрутизации
Наряду с тремя типами маршрутизаторов, представленными на рис. 16.2,
протокол OSPF поддерживает два типа маршрутизации:
О внутризонная маршрутизация;
О межзонная маршрутизация.
Смысл терминов не требует объяснений. Внутризонная маршрутизация
ограничивается внутренними маршрутизаторами одной зоны. На рис. 16.3
представлен пример межзонных коммуникаций в сети OSPF, изображенной на
рис 16.1.
/М а рш рути затор \ Зона О I Маршрутизатора
Маршрутизатор \ \ Маршрутизатор ! Маршрутизатор / Маршрутизатор
\ \ Зона 1 | Зона 2 /
ШЧ {Маршрутизатор • Маршрутизатор
Сервер \ ;
иДДвэ
Рабочая станция
Рис. 16.3. Внутризонные коммуникации в сети OSPF
Межзонная маршрутизация требует обмена данными между зонами. Вся
межзонная маршрутизация должна осуществляться через зону с номером 0.
Зонам с номерами, отличными от 0, не разрешено напрямую взаимодействовать
друг с другом. Это иерархическое ограничение обеспечивает корректное
масштабирование сетей OSPF без хаотического переплетения каналов и
маршрутизаторов. Подобные иерархические механизмы иногда называются иерархической
маршрутизацией.
На рис. 16.4 показано, как выглядит правильная организация межзонных
коммуникаций в сетях OSPF.
/Маршрутизатор! Маршрутизатору
Маршрутизатору / Маршрутизатор ! Маршрутизатор \ / Маршрутизатор
[дч Маршрутизатор i Маршрутизатор ',
°~ Ш_
1ИМП Т'Ж'1
Рабочая станция
Рис. 16.4. Межзонные коммуникации в сетях OSPF
Предыдущие примеры показывают, как на высоком уровне организуется
обмен данными в сетях OSPF. Тем не менее протокол OSPF также может
применяться для обмена маршрутными данными между сетями OSPF, а не только
между зонами одной сети. Использование OSPF продемонстрировано в
следующем разделе.
Межсетевая маршрутизация
Протокол OSPF может использоваться для объединения сетей, независимо от
того, используют ли они OSPF или работают на базе совершенно других
протоколов маршрутизации. Стыковка сети OSPF с другим протоколом
маршрутизации — сложная задача, основанная на использовании механизма
перераспределения маршрутов. Маршрутные данные сети, работающей на базе другого
протокола, обобщаются и перераспределяются в сети OSPF.
В сети OSPF все маршруты, полученные подобным образом, помечаются как
внешние. Объединить две сети OSPF проще, поскольку это не требует
преобразования затратных метрик одного протокола к формату, понятному для другого
протокола. Протокол OSPF также используется при создании автономных сие-
тем. Автономной системой (AS, Autonomous System) называется замкнутая сеть,
обслуживаемая одним сетевым администратором или группой администраторов
и использующая один протокол маршрутизации.
Подобное определение автономной системы выглядит недостаточно четко,
но это, в общем-то, несущественно. Важно другое — что OSPF позволяет
присваивать сетям номера AS. Одна очень большая сеть OSPF может быть
сегментирована на две и более автономные системы. Эти системы связываются через
маршрутизатор OSPF четвертого типа — граничный маршрутизатор
автономной системы ASBR (Autonomous System Border Router). ASBR обобщает всю
маршрутную информацию для своей автономной системы и пересылает
обобщенные данные парному ASBR в соседней автономной системе. В этом
отношении ASBR работают практически так же, как зонные граничные
маршрутизаторы. Разумеется, главное различие состоит в том, что граница проходит между
автономными системами, а не зонами, входящими в одну автономную систему
или сеть.
На рис. 16.5 продемонстрировано объединение автономных систем через
ASBR.
/ Граничный ! Граничный \
/ маршрутизатор ! маршрутизатор \
-—У автономной системы | автономной системы \ ^—^
> Автономная ) | > Автономная )
V, система 1 \ \ \. система 2 \
Рис. 16.5. Объединение автономных систем на базе OSPF
Обновление маршрутных данных
Одна из причин хорошей масштабируемости OSPF кроется в механизме
обновления маршрутных данных. Для распространения маршрутных данных между
узлами OSPF используются сообщения LSA. Данные распространяются
полностью внутри зоны, но не выходят за ее пределы.
Таким образом, каждому маршрутизатору известна топология той зоны, в
которой он находится, но за пределами зоны информация о ее топологии не
распространяется. Поскольку существуют четыре типа маршрутизаторов OSPF
(внутренние, граничные, ASBR и магистральные), становится ясно, что каждый
тип маршрутизатора связывает конечные точки разных типов, обменивающиеся
сообщениями LSA.
Внутренние маршрутизаторы
Внутренние маршрутизаторы обмениваются сообщениями LSA непосредственно
со всеми остальными маршрутизаторами зоны — как внутренними, так и
граничными, которые также входят в эту зону. На рис. 16.6 изображена
последовательность лавинной пересылки LSA в зоне 1 для сети OSPF, представленной
в предыдущих примерах главы. Важно заметить, что для обмена информацией
LSA маршрутизаторы OSPF не обязательно должны быть соединены напрямую.
Маршрутизатор OSPF напрямую адресует пакеты LSA каждому известному
маршрутизатору в этой области и пересылает их по любым доступным каналам.
Лавинная рассылка LSA осуществляется на базе групповой рассылки,
которая эффективнее широковещательной. Только процессы маршрутизации OSPF,
присоединившиеся к группе 224.0.0.5, получают сообщения LSA. Кроме того,
эффективность групповой рассылки OSPF повышается еще и тем, что сообщения
пересылаются непосредственно в дейтаграммах IP с кодом протокола 89. Протокол
OSPF не использует транспортные протоколы (такие, как TCP и UDP), и этим
он отличается от протокола RIP, использующего порт UDP с номером 520.
/Маршрутизатор! Маршрутизатор \
Маршрутизатор W- ► Маршрутизатор ; Маршрутизатор / Маршрутизатор
Маршрутизатор • Маршрутизатор
Рис. 16.6. Лавинная рассылка сообщений LSA внутри зоны 1
В схеме, показанной на рис. 16.6, идея заключается в том, что согласование
в ней происходит довольно быстро. Это объясняется двумя причинами.
Во-первых, маршрутизаторы OSPF напрямую адресуют и одновременно передают LSA
всем маршрутизаторам в этой зоне (лавинная рассылка). Этим они существенно
отличаются от согласования RIP, основанного на распространении данных
среди непосредственных соседей. В результате новая топология практически
одновременно распространяется в масштабах зоны.
Согласование также ускоряется определением и использованием зон.
Топологические данные не распространяются за границы зоны, поэтому в согласовании
участвуют не все маршрутизаторы автономной системы, а только
маршрутизаторы соответствующей зоны. Эта особенность ускоряет процесс согласования
и одновременно повышает устойчивость сети, поскольку нестабильность,
присущая процессу согласования, проявляется только среди части маршрутизаторов
автономной системы.
Граничные маршрутизаторы
Граничные маршрутизаторы хранят в своих базах данных топологическую
информации обо всех зонах, с которыми они связаны. Следовательно, если
граничный маршрутизатор связывает две зоны, он должен обмениваться
сообщениями LSA с конечными точками в обеих сетях. Как и в случае с внутренними
маршрутизаторами, данные LSA адресуются и передаются напрямую
одноранговым узлам в каждой зоне, как показано на рис. 16.7.
/ Маршрутизатору Зона О Т Маршрутизатор \\
Маршрутизатору «< ►Маршрутизатор | Маршрутизатор Ч—►Маршрутизатор
\ \ Зона 1 / ; Зона 2 \ \
Маршрутизатор • Маршрутизатор
Рис. 16.7. Межзонная лавинная рассылка LSA граничными маршрутизаторами в сети OSPF
Другая особенность, повышающая производительность OSPF, — обобщение
маршрутов. Топологическая информация о зоне не распространяется среди
маршрутизаторов, находящихся за ее пределами. Вместо этого граничный
маршрутизатор собирает сводную информацию обо всех адресах в зонах, к которым он
подключен. Затем эти обобщенные данные передаются в пакетах LSA
одноранговым маршрутизаторам в каждой зоне, к которой этот маршрутизатор
подключен. В OSPF используется несколько типов LSA, выполняющих разные
функции. Сообщения LSA, используемые для обмена обобщенными маршрутными
данными, называются LSA типа 3. Остальные типы LSA в OSPF будут описаны
в оставшейся части главы.
На рис. 16.7 граничный маршрутизатор передает обобщенные данные
напрямую всем маршрутизаторам в зоне 0. OSPF не позволяет зонам с номерами,
большими или равными 1, напрямую общаться друг с другом. Все такие
взаимодействия должны осуществляться через зону 0. Таким образом, граничный
маршрутизатор соединяет зону 0 минимум с одной зоной, номер которой отличен
от нуля.
Магистральные маршрутизаторы
Магистральные маршрутизаторы отвечают за поддержание топологической
информации, определяющей основу сети, а также за распространение обобщенной
топологической информации внутри всех остальных зон автономной системы.
Обмен сообщениями LSA между магистральными маршрутизаторами
изображен на рис. 16.8.
2 Маршрутизатор ! Маршрутизатор Маршрутизатор
Зона 1 | Зона 2 \ \
Маршрутизатор ■ Маршрутизатор
Рис. 16.8. Межзонная лавинная рассылка LSA магистральными маршрутизаторами в сети OSPF
Хотя различия между магистральными, граничными и внутренними
маршрутизаторами кажутся четкими и наглядными, возможность подключения к
другим маршрутизаторам через несколько портов ввода/вывода иногда создает
недоразумения. Теоретически все порты могут быть подключены к разным зонам,
и тогда маршрутизатор находится на границе разных зон, с которыми его
связывают интерфейсные порты.
Знакомство со структурами данных OSPF
OSPF — весьма сложный протокол маршрутизации, который обладает
многочисленными возможностями, повышающими его быстродействие и надежность.
Не приходится удивляться тому, что этот протокол использует множество
служебных структур данных. Каждая структура (или тип сообщения) предназначена
для выполнения определенной задачи. Во все структуры включается общий
заголовок, который называется заголовком OSPF. Заголовок OSPF состоит из
24 октетов и содержит следующие поля:
О Номер версии — в первом октете заголовка OSPF хранится номер версии
протокола.
О Тип — второй октет определяет, какой из пяти типов пакетов OSPF следует
после заголовочной структуры. Тип пакета OSPF (HELLO, описание базы
данных, запрос о состоянии канала, обновление состояния канала и
подтверждение состояния канала) задается числовым кодом.
О Длина пакета — в двух следующих октетах заголовка OSPF узлу,
получающему пакет, передается его общая длина. В общей длине учитывается как
заголовок, так и полезные данные пакета.
О Идентификатор маршрутизатора — каждому маршрутизатору в зоне
присваивается уникальный идентификатор, состоящий из четырех октетов.
Маршрутизатор OSPF сохраняет свой идентификатор в поле заголовка перед
отправкой сообщения OSPF другим маршрутизаторам.
О Идентификатор зоны — следующие четыре октета заголовка определяют
номер зоны.
О Контрольная сумма — каждый заголовок OSPF содержит поле контрольной
суммы, состоящее из двух октетов. Контрольная сумма используется для
выявления порчи данных во время пересылки. Отправитель обрабатывает каждое
сообщение по определенному математическому алгоритму и сохраняет
полученный результат в этом поле. Получатель выполняет те же действия с
полученным сообщением и сравнивает полученный результат с величиной,
хранящейся в поле контрольной суммы. Если сообщение не изменилось, два
результата совпадут. Расхождение означает, что пакет OSPF был поврежден
в процессе передачи. Поврежденные пакеты просто отвергаются получателем.
О Тип аутентификации — OSPF обеспечивает защиту от злонамеренных
действий, которые могут привести к распространению ложной маршрутной
информации, посредством проверки отправителя каждого сообщения OSPF.
Поле типа аутентификации состоит из двух октетов и определяет, какая из
различных форм аутентификации используется для данного сообщения.
О Аутентификация — последние девять октетов заголовка используются для
пересылки данных, необходимых получателю для аутентификации
отправителя сообщения. Протокол OSPF позволяет администратору сети определять
различные уровни аутентификации, от NONE и SIMPLE до мощного механизма
аутентификации MD5.
Заголовок содержит всю информацию, на основании которой узел OSPF может
определить, следует ли принять пакет для дальнейшей обработки или отвергнуть
его. Пакеты, поврежденные в процессе пересылки (и обнаруженные при
помощи контрольной суммы), а также не прошедшие аутентификацию, отвергаются.
В OSPF используются пакеты пяти типов, каждый из которых выполняет
в сети свою, узкоспециализированную функцию:
О пакеты HELLO (тип 1);
О пакеты описания базы данных (тип 2);
О пакеты запроса состояния канала (тип 3);
О пакеты обновления состояния канала (тип 4);
О пакеты подтверждения состояния канала (тип 5).
На типы пакетов иногда ссылаются по номерам, а не по именам (то есть под
пакетом OSPF типа 5 понимается пакет подтверждения состояния канала). Все
пять типов пакетов используют заголовок OSPF.
ПРИМЕЧАНИЕ
Пять базовых структур данных OSPF существуют в множестве вариантов, поэтому подробное
описание этих структур и размеров их полей выходит за рамки книги. Данная глава ограничивается
описанием области применения и правил использования каждой структуры данных.
Пакет HELLO
В OSPF входит протокол HELLO, предназначенный для установления и
поддержания отношений между соседними узлами. Такие отношения называются
отношениями смежности. Отношения смежности заложены в основу обмена
маршрутными данными в OSPF.
Именно этот протокол и пакеты этого типа позволяют узлам OSPF
обнаруживать другие узлы OSPF в этой зоне. Протокол HELLO использует
специальную структуру субпакета, присоединяемого к стандартному 24-октетному
заголовку OSPF. Комбинация этих структур образует пакет HELLO.
Все маршрутизаторы в сети OSPF должны соблюдать некоторые правила,
распространяющиеся на всю сеть. К числу этих правил относятся:
О маска сети;
О интервал рассылки пакетов HELLO {интервал HELLO)',
О период времени, по истечении которого неотвечающий маршрутизатор
объявляется недоступным другими маршрутизаторами сети {интервал
недоступности маршрутизатора).
Все маршрутизаторы в сети OSPF должны использовать одинаковые
значения для каждого из перечисленных параметров, в противном случае сеть может
работать неправильно. Обмен значениями параметров осуществляется при
помощи пакетов HELLO. В сочетании эти параметры образуют основу для
взаимодействия смежных узлов. Единство их значений гарантирует, что
отношения между соседями (отношения смежности) не будут формироваться между
маршрутизаторами разных сетей и что все узлы сети связываются друг с другом
с одинаковой частотой.
Пакет HELLO также включает список других маршрутизаторов (с
уникальными идентификаторами), с которыми недавно связывался
маршрутизатор-отправитель. Эта информация облегчает поиск соседей. Пакет HELLO содержит
еще несколько полей, в том числе отмеченный (designated) маршрутизатор,
резервный отмеченный маршрутизатор и т. д. Информация, хранящаяся в этих
полях, обеспечивает поддержание отношений смежности и функционирование
сети OSPF в периоды стабильной работы и согласования. Назначение полей
отмеченного маршрутизатора и резервного отмеченного маршрутизатора будет
описано ниже в настоящей главе.
Пакет описания базы данных
Во время инициализации отношений смежности два маршрутизатора OSPF
обмениваются пакетами описания базы данных (DD). Пакеты этого типа
используются для описания (но не для фактической передачи) содержимого базы
состояния каналов. Поскольку эта база данных может быть довольно большой,
для описания всего содержимого может потребоваться несколько пакетов. В
пакетах описания базы данных предусмотрено специальное иоле, определяющее
последовательность пакетов описания базы данных. Сохранение исходной
последовательности пакетов гарантирует точное воспроизведение переданного
описания базы данных на стороне получателя.
Процесс обмена DD также основан на схеме «опрос/ответ», в которой один
маршрутизатор назначается ведущим, а другой — подчиненным. Ведущий
маршрутизатор отправляет содержимое своей таблицы маршрутизации
подчиненному. Подчиненный обязан подтвердить получение пакетов DD. Разумеется,
роли ведущего и подчиненного меняются с каждым обменом DD. Любой
маршрутизатор сети в разные моменты времени выступает в роли как ведущего, так
и подчиненного.
Пакет запроса состояния канала
К третьему типу пакетов OSPF относятся пакеты запроса состояния канала.
Пакеты этого типа используются для запроса конкретных данных из базы данных
состояния каналов соседнего маршрутизатора. После получения обновления
маршрутизатор OSPF может обнаружить, что информация соседа является
более новой или более полной, чем его собственная. В этом случае маршрутизатор
посылает пакет (или пакеты) запроса состояния канала своему соседу,
располагающему более свежими данными, чтобы получить более достоверную
информацию топологической маршрутизации.
Запрос дополнительной информации должен быть предельно точным.
Запрашиваемые данные определяются в нем по следующим критериям:
О номер типа состояния капала (LS) от 1 до 5;
О идентификатор LS;
О маршрутизатор, передающий информацию.
Набор этих критериев определяет логическое подмножество базы данных
OSPF, но не его конкретный экземпляр (то есть постоянную совокупность
данных во временном интервале). Помните, что протокол OSPF является
динамическим протоколом маршрутизации и может автоматически обновлять данные
о топологии сети в соответствии с изменениями в состоянии каналов. Таким
образом, запрос LS считается относящимся к последней итерации маршрутной
базы данных.
Пакет обновления состояния канала
Пакеты обновления состояния канала используются для непосредственной
пересылки данных LSA соседним узлам. Обновления генерируются в ответ на
запросы LSA. Существуют пять типов пакетов LSA. Тип пакета определяется
числовым кодом в интервале от 1 до 5.
Типы пакетов и соответствующие им коды LSA перечислены ниже.
О Маршрутный пакет LSA (тип 1) — описывает состояние и стоимости
каналов, связывающих маршрутизатор с зоной. Все каналы должны описываться
одним пакетом LSA. Кроме того, маршрутизатор должен сгенерировать
маршрутный пакет LSA для каждой зоны, к которой он принадлежит.
Следовательно, граничный маршрутизатор должен сгенерировать несколько
маршрутных пакетов LSA, а внутреннему маршрутизатору достаточно одного
такого пакета.
О Сетевой пакет LSA (тип 2) — как и маршрутный пакет LSA, описывает
состояние каналов и стоимости всех маршрутизаторов, соединенных с сетью.
Различие между маршрутным и сетевым пакетами LSA заключается в том,
что сетевой пакет LSA содержит информацию о состоянии и стоимости всех
каналов сети. Только отмеченный маршрутизатор (designated router) сети
отслеживает эту информацию и генерирует сетевой пакет LSA.
О Сводный пакет LSA-IP (тип 3) — этот тип пакетов LSA может генерироваться
в сетях OSPF только граничными маршрутизаторами. Он используется для
распространения сводной маршрутной информации о зоне в смежных зонах
сети OSPF. Обычно считается более желательным обобщать информацию
о маршрутах по умолчанию, нежели распространять обобщенную
информацию OSPF в других сетях.
О Сводный пакет LSA-ASBR (тип 4) — близкий аналог пакета LSA типа 3.
Главное различие между двумя типами пакетов заключается в том, что тип 3
описывает межзонные маршруты, а тип 4 описывает маршруты, внешние по
отношению к сети OSPF.
О Пакет LSA AS-внешняя система (тип 5) — как следует из названия, эти
пакеты LSA используются для описания конечных точек, находящихся за
пределами сети OSPF — как отдельных хостов, так и внешних сетей. Узел OSPF,
выполняющий ASBR по отношению к внешней автономной системе,
отвечает за распространение внешних маршрутных данных среди всех зон OSPF,
к которым он принадлежит.
Перечисленные типы сообщений LSA используются для описания различных
аспектов домена маршрутизации OSPF. Они напрямую адресуются каждому
маршрутизатору в зоне OSPF и передаются одновременно. Механизм лавинной
рассылки гарантирует, что все маршрутизаторы в зоне OSPF будут располагать
одинаковой информацией о пяти разных аспектах своей сети (соответствующих
пяти типам LSA). Маршрутизатор хранит полный набор данных LSA в базе
данных состояния канала. В результате обработки содержимого этой базы
данных по алгоритму Дейкстры генерируется содержимое таблицы маршрутизации
OSPF. Различия между таблицей и базой данных заключаются в том, что база
данных содержит полный набор необработанных данных, а таблица
маршрутизации содержит список кратчайших путей к известным конечным точкам через
интерфейсные порты конкретного маршрутизатора.
Мы не будем подробно рассматривать структуру каждого типа пакетов LSA
и ограничимся их заголовками.
Заголовок LSA
Все пакеты LSA используют общий формат заголовка. Заголовок имеет длину
20 октетов и присоединяется к стандартному 24-октетному заголовку OSPF.
Заголовок LSA предназначен для однозначной идентификации каждого пакета
LSA, поэтому в нем хранится код типа LSA, идентификатор состояния канала
и идентификатор маршрутизатора, распространяющего информацию. Ниже
перечислены поля заголовка LSA.
О Возраст пакета LSA — в первых двух октетах заголовка хранится возраст LSA,
то есть количество секунд, прошедших с момента создания пакета.
О Параметры OSPF — следующий октет содержит набор флагов, описывающих
необязательные возможности, которые могут поддерживаться сетью OSPF.
О Тип LS — поле типа LS состоит из одного октета и определяет один из пяти
возможных типов, к которым может относиться пакет LSA. Пакеты разных
типов различаются по формату, поэтому важно знать, данные какого типа
следуют после заголовка.
О Идентификатор состояния капала — поле из четырех октетов,
определяющее конкретную часть сетевой среды, описываемую сообщением LSA. Поле
тесно связано с предыдущим полем заголовка (типом LS). Более того, его
содержимое напрямую зависит от типа LS. Например, в маршрутном LSA
в поле идентификатора состояния канала хранится идентификатор
распространителя — маршрутизатора OSPF, сгенерировавшего пакет.
О Распространитель — поле содержит идентификатор маршрутизатора OSPF,
сгенерировавшего пакет LSA. Поскольку длина идентификатора
маршрутизатора OSPF равна 4 октетам, размер поля также должен быть равен 4 октетам.
О Порядковый номер LS — маршрутизаторы OSPF постоянно увеличивают
порядковые номера сгенерированных ими пакетов LSA. Таким образом,
маршрутизатор, получивший два экземпляра одних и тех же данных LSA, может
выбрать более новый пакет одним из двух способов. Поле порядкового номера
имеет длину 4 октета; проверяя его, можно определить, какой из двух
пакетов был сгенерирован позже. Также можно проверить поле возраста пакета,
но теоретически возраст нового пакета LSA может быть больше возраста
старого пакета LSA, особенно в больших и сложных сетях. По этой причине
проверка основывается на порядковом номере LS; тот пакет, у которого этот
номер больше, был сгенерирован позже. Этот механизм избавлен от
превратностей динамической маршрутизации и потому обеспечивает более надежное
средство определения новизны пакетов LSA.
О Контрольная сумма — поле контрольной суммы, состоящее из трех октетов,
предназначено для обнаружения возможных повреждений пакетов LSA в
процессе пересылки. Вычисление контрольной суммы производится по простому
математическому алгоритму. Результат зависит только от исходных
данных, поэтому такой механизм проверки отличается высокой надежностью.
Передавая алгоритму одни и те же входные данные, вы всегда получите один
и тот же результат. Величина, хранящаяся в поле контрольной суммы,
вычисляется на основании части содержимого пакета LSA (включая заголовок,
кроме полей возраста и контрольной суммы). Узел-отправитель выполняет
вычисления по специальному алгоритму, называемому алгоритмом Флетчера,
и сохраняет результат в поле контрольной суммы. Узел-получатель
выполняет те же математические действия и сравнивает результат с содержимым
поля контрольной суммы. Если значения различаются, можно достаточно
уверенно утверждать, что в процессе пересылки пакет был поврежден. В этом
случае генерируется запрос на повторную пересылку.
В оставшейся части пакета LSA содержится список записей LSA. Каждая
запись описывает один из пяти аспектов сети OSPF (в соответствии с числовым
кодом). Таким образом, маршрутный пакет LSA распространяет информацию
о маршрутизаторах этой зоны, о которых ему известно.
Выполнение обновлений LSA
OSPF существенно отличается от других протоколов маршрутизации тем, что
его обновления не используются узлами-получателями напрямую. Обновление,
полученное от другого маршрутизатора, содержит информацию о сети в
представлении этого маршрутизатора. Прежде чем интерпретировать или
использовать эти данные, маршрутизатор должен обработать полученные данные LSA
по алгоритму Дейкстры и преобразовать их к своему представлению.
Предполагается, что данные LSA были переданы из-за того, что
маршрутизатор обнаружил изменения в состоянии канала или каналов. Следовательно,
после получения LSA любого типа маршрутизатор OSPF должен сравнить
содержимое LSA с соответствующей частью своей маршрутной базы данных. Это
молено сделать лишь после того, как маршрутизатор использует новые данные
для формирования нового представления сети по алгоритму SPF. Результат
обработки представляет собой новое сетевое представление данного
маршрутизатора. Полученные данные сравниваются с существующей маршрутной базой
данных OSPF, и маршрутизатор проверяет, повлияло ли изменение состояния
сети на какие-либо из его маршрутов.
Если изменение состояния сети привело к изменению каких-либо
существующих маршрутов, маршрутизатор строит новую маршрутную базу данных на
основе новой информации.
Дублирование LSA
Из-за лавинной рассылки данных LSA в зонах возникает вероятность того, что
одни данные LSA будут существовать в нескольких экземплярах. Следовательно,
для надежной работы сети OSPF маршрутизатор должен уметь выбирать самый
последний экземпляр дублированных данных LSA. Маршрутизатор, получивший
два и более экземпляра с одинаковым типом LSA, анализирует поля возраста,
порядкового номера и контрольной суммы в заголовках LSA. Маршрутизатор
принимает только информацию, содержащуюся в самом новом пакете, и
обрабатывает ее так, как описано в предыдущем разделе.
Пакет подтверждения состояния канала
К пятому типу пакетов OSPF относятся пакеты состояния канала. В OSPF
реализовано надежное распространение пакетов LSA. Под этим термином понимается
то, что получение пакета должно быть подтверждено получателем. В противном
случае отправитель не может быть уверен в том, что данные LSA добрались до
предполагаемого адресата. Следовательно, протоколу OSPF необходим механизм
подтверждения получения пакетов LSA, и этот механизм использует пакеты
подтверждения состояния канала.
Пакет подтверждения состояния канала однозначно идентифицирует
пакет LSA, получение которого он подтверждает. Идентификация производится
на основе данных, содержащихся в заголовке LSA, включая порядковый номер
LS и маршрутизатор, распространяющий информацию. Между пакетами LSA
и подтверждениями не обязательно должно существовать однозначное соот-
ветствие; один пакет подтверждения может подтверждать получение сразу
нескольких пакетов LSA.
Построение маршрутов
Несмотря на свою относительную сложность, протокол OSPF вычисляет
стоимость маршрута одним из двух простых способов:
О для каждого интерфейса OSPF может использоваться значение по
умолчанию, независимо от пропускной способности канала;
О OSPF может автоматически вычислять стоимость использования отдельных
интерфейсов маршрутизации.
Независимо от выбора способа стоимость любого конкретного маршрута
вычисляется суммированием стоимости всех интерфейсов, входящих в этот
маршрут. Вычисленная стоимость маршрутов к известным конечным точкам
хранится в дереве кратчайших путей OSPF.
Автоматическое вычисление
Протокол OSPF умеет автоматически вычислять стоимость интерфейса.
Алгоритм вычисления основан на различной пропускной способности,
поддерживаемой разными типами интерфейсов. Сумма вычисленных стоимостей всех
интерфейсов по заданному маршруту образует основу для принятия решений
маршрутизации в OSPF. Благодаря этим данным OSPF может строить
маршруты, руководствуясь как минимум пропускной способностью каждого канала
в альтернативных маршрутах. На рис. 16.9 изображена простая сеть, на примере
которой будет поясняться процесс автоматического вычисления.
На рис. 16.9 стоимость маршрута между хостом в сети 193.1.3.0 и конечной
системой в сети 193.1.4.0 равна 138. Она складывается из стоимости двух каналов Т1,
связывающих эти сети (каждому каналу присвоена стоимость 64), и стоимости
интерфейса Ethernet к сети 193.1.4.0. Стоимость интерфейсов Ethernet в точках
отправки и получения не включается в расчет стоимости OSPF, потому что
OSPF учитывает только стоимости интерфейсов внешних маршрутизаторов.
В табл. 16.1 приведена сводка значений, используемых при автоматическом
вычислении стоимости интерфейсов сети, представленной на рис. 16.9.
Таблица 16.1. Зависимость стоимости от типа интерфейса
Тип интерфейса Вычисляемая стоимость
FDDI 100 Мбит/с 1
Ethernet 10 Мбит/с 10
Последовательный канал Т1 1,544 Мбит/с 64
Последовательный канал 56 кбит/с 1 768
193 .V\.0 Стоимость = 1 193.1^0
Т1 Маршрутизатор 1 '\ Зона 0 Маршрутизатор 2 \ к итс
Стоимость =/ Т1 Т1 \ Стоимость =
/ Стоимость = 64 | Стоимость = 64 \
Маршрутизатор 3 Маршрутизатор 4 « Маршрутизатор 5 Маршрутизатор 6
| Стоимость-10
I ! I Зона 2 II
193.1.3.0 193.1.4.0 | 193.1.5.0 193.1.6.0
Рис. 16.9. Автоматическое вычисление стоимости каналов
Использование стоимости маршрутов
по умолчанию
Автоматическое вычисление стоимости маршрутов в OSPF весьма удобно, но
такая возможность существует не всегда. Например, старые маршрутизаторы могут
не поддерживать механизм автоматического вычисления. В таких случаях всем
интерфейсам присваивается одинаковая стоимость OSPF, и канал Т1 не будет
отличаться по стоимости от выделенной линии 56 кбит/с. Естественно, эти две
линии сильно различаются по быстродействию. Это различие должно быть
заложено в основу для принятия обоснованных решений по маршрутизации.
Тем не менее в некоторых ситуациях использование стоимости по умолчанию
оказывается приемлемо. Например, если сеть состоит из относительно однородных
каналов передачи данных, значения по умолчанию дают адекватное представление
об относительной стоимости пересылки. Кроме того, стоимостные метрики
конкретных интерфейсов могут настраиваться вручную. Это позволяет вам
организовать распределение трафика в критических участках сети OSPF по своему
усмотрению, сохранив стоимостные метрики по умолчанию во всех остальных случаях.
Однородные сети
В однородных сетях все каналы передачи обладают одинаковыми
характеристиками. Например, все подключения к локальной сети осуществляются через ин-
терфейсы Ethernet 10 Мбит/с, а последовательные интерфейсы глобальной сети
относятся к типу Т1. В таких ситуациях использование стоимости по
умолчанию не вызывает проблем с маршрутизацией, особенно при минимальном
количестве альтернативных маршрутов.
Рисунок 16.10 наглядно иллюстрирует это утверждение.
Т1 /^Маршрутизатор \ I Маршрутизатор \Т1
Стоимость = / Т1 Т1 \Стоимость =
1768 / Стоимость = 1768 Зона 0 Стоимость == 1768 \ 1768
Маршрутизатор Маршрутизатор • Маршрутизатор Маршрутизатор
Зона 1 ; Зона 2
Стоимость = 1768 Стоимость = 1768 •
Рис. 16.10. Возможный вариант использования стоимостных метрик по умолчанию
Каждому интерфейсу, изображенному на рис. 16.10, присваивается стоимость
по умолчанию 1768. Все значения равны, поэтому вы можете использовать
любую числовую величину по своему усмотрению — 1, 128, 1768 или 1 000 000.
Решения по маршрутизации в однородных сетях сводятся к простому подсчету
и сравнению количества переходов (хотя и кратного стоимости по умолчанию).
Это правило выполняется независимо от количества альтернативных
маршрутов в сети.
Разумеется, в сложной сети со значительным количеством альтернативных
маршрутов и разнообразием используемых технологий передачи данных
значения по умолчанию не позволят выбрать оптимальный маршрут к любой
заданной конечной точке.
Ручная настройка значений
В некоторых сетях бывает удобнее принять стоимости по умолчанию, а затем
вручную настроить значения для тех каналов, у которых наблюдаются наиболее
серьезные отличия. Предположим, по умолчанию каналам вашей сети присваи-
вается стоимость 1768 — значение, вычисленное для последовательного канала
56 кбит/с.
Если все каналы сети, кроме одного или двух, обладают одинаковой
пропускной способностью, вы можете принять значения по умолчанию и
отредактировать стоимость этих конкретных каналов.
С точки зрения узлов OSPF неважно, как именно была получена стоимость
маршрута —вычислена автоматически, получена по умолчанию или настроена
вручную. Узел принимает любое значение и использует его при построении
представления сети в виде дерева кратчайших путей.
Дерево кратчайших путей
Различные механизмы LSA в конечном счете предназначены для того, чтобы
каждый маршрутизатор мог построить собственное представление топологии
сети, оформленное в виде дерева. Корнем этого дерева является маршрутизатор
OSPF. Дерево содержит полные пути ко всем известным адресам получателей
(как сетей, так и хостов), даже несмотря на то, что для непосредственной
маршрутизации дейтаграмм используется только следующий переход. Причина
проста: отслеживание полных путей позволяет сравнить альтернативные пути
и выбрать лучший из них для каждой конечной точки. Если существует
несколько путей с равной стоимостью, все они будут обнаружены протоколом
OSPF и использованы для распределения нагрузки. Динамическое
распределение трафика по всем доступным каналам повышает общую пропускную
способность канала.
Дерево кратчайших путей для маршрутизатора 3
Принципы построения дерева кратчайших путей лучше пояснить на
конкретном примере. На рис. 16.11 изображена небольшая сеть OSPF.
Администратор разрешил автоматическое вычисление стоимости маршрутов. Обратите
внимание: канал Ethernet, проходящий между маршрутизаторами 5 и 6, создает
альтернативный маршрут для сетей 193.1.5.0 и 193.1.6.0. Ему присваивается
автоматически вычисленная стоимость 10, тогда как остальным сетям Ethernet
в этом примере аналогичная стоимость не присваивается.
Вид дерева кратчайших путей для сети, представленной на рис. 16.10,
зависит от маршрутизатора. Например, на рис. 16.12 представлено дерево
кратчайших путей для маршрутизатора 3.
Как видно из рис. 16.12, древовидная структура заметно упрощает
вычисление стоимости маршрута к любой конечной точке. Корневой
маршрутизатор (в данном примере это маршрутизатор 3 с адресом 193.1.3.0) может быстро
просуммировать стоимости всех интерфейсов, входящих в маршрут к заданной
точке. Данные о стоимости маршрутизации для разных сетей с точки зрения
маршрутизатора 3 приведены в табл. 16.2. Для конечных точек, находящихся
на расстоянии более одного перехода, в круглых скобках приводится формула
вычисления стоимости маршрута. Это поможет вам проанализировать
различные варианты путей в сети, изображенной на рис. 16.12.
Стоимость = 1
193.1.1.0 & Ч 193.1.2.0
Т1 .Маршрутизатор l'\ зона 0 Маршрутизатор 2 \ 56 кбит/с
64 / Стоимость = 64 Стоимость = 64 \ 1768
Маршрутизатор 3 Маршрутизатор 4 | Маршрутизатор 5 Маршрутизатор 6
| Стоимость-10
! Зона 2 II
193.1.3.0 193.1.4.0 | 193.1.5.0 193.1.6.0
Рис. 16.11. Возможный вариант использования стоимостных метрик по умолчанию
Корневой узел:
маршрутизатор 3
Стоимость = 64
193.1.1.0
Стоимость = 1 / \ Стоимость = 64
193.1.2.0 193.1.4.0
Стоимость = 64 / \ Стоимость = 1768
193.1.5.0 193.1.6.0
Стоимость = 10
Рис. 16.12. Дерево кратчайших путей для маршрутизатора 3
Таблица 16.2. Маршруты от узла 3 к известным сетям
Сеть Длина маршрута в переходах Суммарная стоимость
193.1.3.0 - 0
193.1.1.0 1 64
193.1.2.0 2 65 F4+1)
193.1.4.0 2 128F4+64)
193.1.5.0 3 129 F4+1+64)
193.1.6.0 3 1833 F4+1+1768)
193.1.6.0 4 139F4+1+64+10)
В этом примере существует два возможных маршрута к сети 193.1.60. Один
маршрут содержит меньше переходов, но обладает более высокой стоимостью
из-за медленного канала между маршрутизаторами 2 и 6. Альтернативный
маршрут содержит больше переходов, но с гораздо меньшей суммарной стоимостью.
В этой ситуации OSPF игнорирует маршрут с высокой стоимостью и
использует только маршрут с меньшей стоимостью, несмотря на большее количество
переходов. Если два маршрута имеют одинаковую стоимость, OSPF хранит их
в разных записях таблицы маршрутизации и старается как можно более
равномерно распределять трафик между ними.
Дерево кратчайших путей для маршрутизатора 2
Каждый маршрутизатор использует свое, отличное от других представление сети.
Изучать все представления было бы несколько однообразно, однако один
дополнительный пример лучше продемонстрирует зависимость структуры дерева
кратчайших путей от представления конкретного маршрутизатора. На рис. 16.13
изображено дерево кратчайших путей для маршрутизатора 2.
Корневой узел:
маршрутизатор 2
Стоимость = 1 / \ Стоимость = 1768
/ Стоимость = 64
193.1.1.0 193.1.6.0
Стоимость = 64/ \ 193.1.5.0 Стоимость =10
/ Стоимость = 64\
193.1.3.0 193.1.4.0
Рис. 16.13. Дерево кратчайших путей для маршрутизатора 3
В табл. 16.3 приведена сводка стоимости маршрутов ко всем известным
конечным точкам в представлении маршрутизатора 2.
Таблица 16.3. Маршруты от узла 2 к известным сетям
Сеть Длина маршрута в переходах Суммарная стоимость
193.1.2.0 — 0
193.1.5.0 1 64
193.1.6.0 1 1 768
193.1.6.0 2 74 F4+10)
193.1.1.0 1 1
193.1.3.0 2 65F4+1)
193.1.4.0 2 65 F4+1)
Сравнение табл. 16.2 и 16.3 показывает, что суммарные расстояния между
отправителем и получателем в сети изменяются в зависимости от начальной
точки. Дерево полностью зависит от перспективы, поэтому для построения
собственной перспективы сети маршрутизаторы OSPF используют данные,
полученные от других маршрутизаторов через LSA, вместо того чтобы напрямую
обновлять свои маршрутные таблицы этой информацией.
Итоги
OSPF — один из самых мощных и функциональных открытых стандартов
протоколов маршрутизации. Сложность протокола также является одной из его
слабых сторон, поскольку проектирование, построение и управление объединенной
сети OSPF требует больше опыта и усилий, чем при использовании любых других
протоколов маршрутизации. Назначение стоимости по умолчанию существенно
упрощает проектирование сети OSPF. По мере освоения OSPF и появления новой
информации о рабочих характеристиках сети вы сможете постепенно настроить
производительность сети посредством модификации переменных OSPF.
Проектирование зон и общей топологии сети требует тщательного
планирования. Правильно спроектированная сеть OSPF вознаградит ваши усилия
хорошей скоростью работы и быстрым согласованием.
4| "J Протокол IPP
Тим Паркер (Tim Parker)
Протокол печати в объединенной сети IPP (Internet Printing Protocol)
принадлежит к числу новых разработок в семействе протоколов TCP/IP. Он
проектировался для упрощения процедуры печати в больших объединенных сетях
с использованием IP-адресов. Такие компании, как Hewlett-Packard, уже
выпускают устройства с поддержкой стандарта IPP, который пока существует на
уровне предложения. Предполагается, что по мере продвижения IPP до уровня
принятого стандарта количество таких устройств возрастет.
В этой главе объясняется, что представляет собой протокол IPP и как он
работает. Хотя этот протокол вряд ли понадобится тем пользователям, у которых
принтер подключен непосредственно к компьютеру, знакомство с IPP поможет
лучше понять принципы организации печати в объединенных сетях.
История IPP
IPP — последнее название целой серии конкурентных разработок. История IPP
начинается в 1996 году, когда компания Novell (разработчик NetWare) обратилась
к ведущим производителям принтеров с предложением о разработке нового
протокола печати, который бы работал по Интернету и поддерживал IP. Некоторые
компании (в том числе Xerox) присоединились к Novell. Совместными усилиями
они создали проект и план разработки. Проект, находившийся под руководством
Novell, получил название LDPA (Lightweight Document Printing Application).
Тем временем в IBM разрабатывайся аналогичный протокол НТРР (Hypertext
Printing Protocol). Название было выбрано не случайно — протокол работал
в Web по аналогии с HTTP. Аналогичные проекты также вели Hewlett-Packard
и фирма Microsoft, которая разрабатывала новый протокол печати для
операционной системы Windows 2000. Для координации конкурирующих проектов
и ведении разработок под эгидой IETF — организации, контролирующей все
протоколы Интернета — была создана рабочая группа PWG (Printer Working
Group). Группа состояла из нескольких компаний, производителей принтеров
и разработчиков операционных систем. В результате объединения лучших
аспектов LDPA и HTTP был разработан протокол IPP.
Основной целью PWG являлось формирование единого стандарта печати,
который бы не ограничивался IP и работал с другими протоколами. Тем не
менее основное внимание уделялось поддержке печати в Интернете на базе IP.
Вместо разработки принципиально нового протокола, работающего поверх IPP,
используется протокол НТРР, который работает в сочетании со следующей
версией HTTP, называемой HTTP 1.1. Такой подход упрощает реализацию для
фирм-производителей, поскольку большинство из них очень хорошо знакомо
с HTTP. IPP использует новый тип расширений MIME «application/ipp».
Группа PWG планирует включить в спецификацию IPP ряд дополнительных
возможностей, в том числе:
О проверка возможностей принтера, поддерживающего IPP;
О отправка заданий печати на принтер IPP;
О получение информации о состоянии задания печати;
О отмена заданий, находящихся в очереди на печать.
Эти четыре возможности, ориентированные на конечного пользователя,
включают практически все операции, выполняемые при печати, от получения
информации о доступных принтерах до управления и отмены запросов на печать по
Интернету, локальной или глобальной сети. Кроме того, протокол позволяет
быстро найти доступные принтеры в сети или межсетевом объединении,
обеспечивает безопасность запросов на печать и самих принтеров.
В идеальном варианте IPP реализуется как протокол, работающий на стороне
клиента. Серверная сторона может быть реализована разными способами —
например, в виде выделенного сервера печати или принтера, подключенного через IP.
Тем не менее это не должно привести к изменению спулеров печати и систем,
используемых в настоящее время, — таких, как Ipr и Ipd в системе Unix или
подсистемы печати в Windows. Протокол IPP дополняет существующие
возможности, но не заменяет их.
В долгосрочной перспективе в протоколе IPP должны появиться средства
управления принтером, поддержка сбора учетной информации и даже
возможность проведения коммерческих транзакций.
Другой целью, поставленной разработке IPP, была возможность
преобразования протокола LPR (Line Printer) в IPP, и наоборот. Впрочем, клиенты LPR
не получат доступа к новым возможностям IPP, а требования к преобразованию
расширений LPR в IPP ограничиваются возможностями, доступными в
реализации LPR для BSD Unix 4.2.
ПРИМЕЧАНИЕ
Дополнительную информацию о IPP можно найти в нескольких документах RFC, присутствующих
в любом архиве RFC. Список таких RFC приведен в приложении А. Кроме того, группа PWG ведет
web-сайт с общей информацией о IPP и данными о текущем состоянии проекта. Сайт находится по
адресу http://www.ietf.org/html.charters/ipp-charter.html.
Протокол IPP с точки зрения пользователя
Широкое применение IPP открывает перед пользователями принципиально
новый уровень возможностей, связанных с печатью. В документе RFC,
посвященном IPP, новые возможности разбиты на шесть категорий:
О поиск принтера;
О создание локального экземпляра принтера;
О получение информации о состоянии и возможностях принтера;
О отправка задания на печать;
О получение информации о состоянии печати;
О модификация заданий печати.
IPP позволит вывести список доступных принтеров в браузере или другом
приложении, способном находить IPP-совместимые принтеры. Протокол
проектируется так, чтобы поиск можно было производить разными способами, в том
числе по имени, по географическому местонахождению или атрибутам принтера.
Возможность поиска по атрибутам пригодится в крупных организациях.
Предположим, вы хотите напечатать страницы размера 11x17 дюймов; IPP поможет
найти принтер, который обладает такой возможностью. Кроме того, вы можете
искать принтеры с поддержкой цветной печати, с лотками для бумаги
определенного размера, с поддержкой брошюровки и любыми другими поддерживаемыми
атрибутами. А при некотором уточнении условий поиска можно проводить
поиск по дополнительным критериям — скажем, по максимальному удалению от
вашего офиса или принадлежности к определенному домену (даже в масштабах
страны или континента). Такие возможности поиска не входят в спецификацию
IPP, но неизбежно появятся в результате эволюции.
Итак, вы нашли принтер, которому будет передан запрос на печать. Далее
необходимо сообщить локальному компьютеру информацию о принтере и о том,
как к нему обращаться. Эта операция называется созданием локального
экземпляра принтера. Конкретная последовательность действий зависит от
операционной системы, но в результате выбранный принтер включается в список
доступных принтеров вашего компьютера.
Иногда при создании локального экземпляра требуется загрузить драйверы
для принтера. В настоящее время такая необходимость существует при сетевой
печати в Windows 95/98/ME. В некоторых операционных системах (таких, как
Unix, Linux и Windows NT/2000) процесс создания локального экземпляра
обладает большей гибкостью. Например, вы можете разместить очередь печати на
другом компьютере или выбрать конфигурацию с локальным хранением
драйверов и очереди. Протокол IP обладает достаточной гибкостью, чтобы
удовлетворять всем этим требованиям при создании экземпляра принтера.
После создания локального экземпляра все выглядит так, словно принтер
подключен непосредственно к компьютеру. Например, в системе Windows принтер
(независимо от того, где он на самом деле находится) отображается в
приложении Принтеры (Printers) панели управления, присутствует во всех диалоговых
окнах и всех остальных приложениях, получающих информацию о доступных
принтерах. Удаленный принтер используется точно так же, как если бы он был
подключен к компьютеру через параллельный порт.
Перед тем как использовать принтер с поддержкой IPP, желательно
проверить его конфигурацию и определить, занят ли принтер в настоящий момент,
какая бумага в нем загружена, сколько памяти на нем установлено,
поддерживается ли конкретный язык описания страниц (например, PostScript и PCL), и по-
лучить другую информацию о состоянии. Протокол IPP предоставляет средства,
при помощи которых пользователь может получить информацию о состоянии
и возможностях принтера. В частности, пользователь может узнать, включен ли
принтер в настоящий момент, получить его параметры по умолчанию и т. д.
Спецификация IPP не регламентирует конкретные способы отображения
информации на экране и выполнения операций с принтерами на уровне
приложения. Вместо этого IPP регламентирует механизм передачи сообщений и тип
передаваемой информации. Тем не менее при правильной работе клиентского
приложения пользователь должен иметь возможность получить информацию
о текущем состоянии доступного принтера, находящегося в любой точке мира,
а также о состоянии очереди печати.
После создания локального экземпляра принтера можно переходить к
отправке запросов на печать. Главное преимущество протокола IPP заключается
в том, что он позволяет печатать на любом принтере, для которого имеется
локальный экземпляр, так, как если бы он был физически подключен к
компьютеру. Например, приложения Windows отображают принтеры с поддержкой IPP
в диалоговых окнах печати — как локальные, так и удаленные. Некоторые аспекты
печати на удаленном принтере реализуются на других уровнях; например, выбор
интерпретатора языка описания страниц обычно автоматически выполняется
принтером, а за выбор драйвера обычно отвечает операционная система.
После постановки задания печати в очередь IPP позволяет запросить у
принтера или сервера печати информацию о текущем состоянии очереди, а также
удалить задания из очереди.
Реализация IPP от HP
Фирма Hewlett-Packard уже предоставила своим клиентам доступ к IPP при
помощи программного продукта Internet Printer Connection. Программа Internet
Printer Connection предназначена для настройки и печати на принтерах HP
(и других принтерах с поддержкой IPP) по Интернету или интрасети
(локальной или глобальной). В этой программе протокол IPP реализован как
транспорт для данных, выводимых на печать, и информации о состоянии принтера.
Internet Printer Connection устанавливается как обновление существующего
программного обеспечения, что упрощает ее интеграцию с существующими сетями.
Для работы с ней необходим компьютер с системой Windows NT (управляющий
хост) и сервер печати HP JetDirect с поддержкой IPP. Пользователям также
потребуется браузер. Не все серверы печати JetDirect работают с Internet Printer
Connection; подходят только микропрограммы версий Х.07.16 и выше. К счастью,
обновления микропрограмм для сервера печати JetDirect имеются на web-сайте
HP. Процесс установки Internet Printer Connection прост: запустите принятый
файл и выполните настройку принтеров, доступ к которым будет
предоставляться через Internet Printer Connection.
После установки Internet Printer Connection позволяет любому
пользователю, обладающему необходимыми привилегиями, печатать на любом принтере
с поддержкой IPP. Для этого пользователь должен указать IP-адрес принтера,
имя хоста (если поддерживается разрешение имен через DNS) или URL
принтера. Прелесть Internet Printer Connection заключается в том, что при наличии
необходимых привилегий вы можете работать с принтером, расположенным в
любой точке мира. Например, находясь в гостиничном номере в Германии, можно
отправить запрос на печать на принтере, находящемся в вашем офисе в Сан-
Франциско. Маршрутизация заданий печати с использованием IPP
осуществляется средствами Интернета. С точки зрения пользователя удаленный принтер
ничем не отличается от любого другого принтера, подключенного к компьютеру
или сети.
Итоги
Протокол IPP еще не получил широкого распространения в Интернете. Тем не
менее достигнутые результаты и появление таких реализаций, как Internet Printer
Connection (Hewlett-Packard), внушают надежды на будущее. Ожидается, что
протокол IPP войдет в состав стандартных служб TCP/IP и значительно
упростит удаленную печать в сетях TCP/IP.
ft Протоколы
АО удаленного доступа
Марк Кадрич (Mark Kadrich)
С ростом Интернета возрастает и потребность в подключении к нему из любого
места. Такой тип доступа называется удаленным. Когда-то удаленный доступ
осуществлялся с терминалов, подключенных к большой ЭВМ или
мини-компьютеру. Такое решение оставалось приемлемым лишь до тех пор, пока доступ
производился из определенного помещения — например, из офиса. С сокращением
численности технического персонала стало очень важно, чтобы системный
администратор мог подключиться к корпоративной сети из дома. Так появился
удаленный доступ. Сначала он осуществлялся по медленным модемам того
времени, обычно со скоростью 110 бод (скорость в бодах достаточно близка к
скорости в битах в секунду, поэтому в контексте излагаемого материала эти две
единицы будут считаться эквивалентными). Системные администраторы
следили за работой сети и управляли ей из относительно комфортных домашних
условий. Для организаций это означало, что важнейшие системы фактически
круглосуточно обслуживались людьми, которые могли принять экстренные меры
в аварийной ситуации (естественно, при условии, что терминалы продолжали
нормально работать!)
В результате технического прогресса конца 70-х и начала 80-х годов
скорость модемов за каждые два года возрастала примерно в два раза.
Современные модемы обычно работают на скорости 56 кбит/с, а их фактическая
пропускная способность определяется архаичной инфраструктурой коммутируемой
телефонной сети. Старая инфраструктура в сочетании с повышением
требований к надежности и безопасности данных потребовала разработки протоколов,
которые бы обеспечивали эффективный прием и передачу цифровых данных.
Удаленное подключение
Как уже сказано выше, главным компонентом механизмов удаленного доступа
является модем (МОдулятор/ДЕМодулятор). Существует много типов
устройств, причисляемых к этой категории. Основная функция модема —
преобразование цифровых сигналов, сгенерированных компьютером, к аналоговой
форме, которая может передаваться по коммутируемой телефонной сети. Чтобы
этот механизм пересылки данных работал правильно, на обоих концах
соединения должны быть установлены совместимые модемы (рис. 18.1). На стороне
получателя аналоговые сигналы демодулируются в цифровую форму и передаются
компьютеру.
ъ. Телефонная j
Удаленный ^С ^ Сервер
[ragnl Модему^ Телефонная Телефонная\м0дем [%Щ
—ЗВВИЙДГ... — У......].,.,1„1
И У«*"Щ • ' fciafadK-i
"' w1 Последовательный Последовательный рДр|
канал канал /""l:"fi':V'i'k
Рис. 18.1. Модемы в коммутируемой сети
ISDN
Не все устройства, относящиеся к категории модемов, совместимы друг с
другом. Стандартный модем может использоваться только для связи по каналам
ISDN, a NT-1 не позволяет соединиться ни по каким линиям, кроме ISDN. С
другой стороны, технология ISDN обладает рядом существенных преимуществ.
Интерфейс BRI (Basic Rate Interface) позволяет подписчику использовать
аналоговый телефон наряду с чисто цифровой передачей данных. В США BRI состоит
из двух каналов 64 кбит/с и одного канала 16 кбит/с, мультиплексируемых с
временным разделением каналов до суммарной скорости 144 кбит/с.
Универсальность ISDN обусловлена тем фактом, что в любой момент
времени все три канала могут использоваться по отдельности или два канала 64 кбит/с
могут использоваться вместе для обеспечения суммарной пропускной
способности 128 кбит/с. В числе преимуществ ISDN следует упомянуть возможность
использования двухпроводного телефонного кабеля, имеющегося в большинстве
организаций и домов (рис. 18.2). Данный фактор сыграл важную роль как для
бизнеса, так и для телефонных компаний, которые должны были поддерживать
ISDN, поскольку дорогостоящая замена существующей телефонной сети
становилась излишней. Хотя это решение как нельзя лучше подходило с позиций
продления срока эксплуатации существующей телефонной сети, в результате
бурного развития Интернета к сети стали подключаться миллионы новых
пользователей. Дни ISDN были сочтены.
Кабельные модемы
Кабельные модемы начали использоваться несколько лет назад (рис. 18.3). В их
работе используется тот факт, что в домах многих пользователей уже имеется
широкополосный канал передачи данных в виде кабельного телевидения.
Канал В f¥^\ \
Канал D W_J ISDN BRI
Канал В ^ J ) I
Телефон
Мультиплексор |
*,-г - Линия ISDN BRI
NT-1
1ЯИ Ш '
Компьютер
Рис. 18.2. Конфигурация BRI в ISDN
Телевизор
П
Кабельный
модем
I 1 I гп Кабельное телевидение
ЯН ' ] 1 Разветвитель
^а= i ' ' ^ Компьютер
Рис. 18.3. Кабельный модем
За счет использования свободной части полосы пропускания, а также
применения нетривиальной модуляции кабельные модемы обеспечивают скорость
передачи данных около 1 Мбит/с, весьма впечатляющую для домашних условий.
Недавние разработки в области программного обеспечения и операционных
систем позволяют нескольким компьютерам использовать общую точку доступа.
Кабельный модем подключает компьютер к кабельной линии по тому же
принципу, как в архитектуре Ethernet компьютеры подключаются к коаксиаль-
ному кабелю. Все данные передаются по одной шине. Это означает, что соседи
теоретически могут получить доступ к вашему компьютеру, для
предотвращения которого необходимо принять особые меры. Один из вариантов основан на
преобразовании сетевых адресов NA T (Network Address Translation).
Методика NAT, описанная в RFC 1918, «Address Allocation Techniques for
Private Networks», позволяет обеспечить доступ к Интернету и безопасность
для каждого компьютера домашней сети.
DSL
Относительно новая технология DSL (Digital Subscriber Loop) существует в
нескольких интересных вариантах. Уровень сервиса напрямую зависит от цены, то
есть более высокая цена обеспечивает повышение пропускной способности.
Самая популярная разновидность DSL — ADSL (Asymmetric DSL) —
использует тот факт, что типичный пользователь принимает больше информации, чем
отправляет. Так, во время работы в Web большинство пользователей принимает
большой объем графики и кода HTML, тогда как отправка данных
ограничивается простыми ответами на запросы Web. Щелкая на кнопке, находящейся на
web-странице, вы передаете серверу простое сообщение с требованием
выполнить некоторую операцию — например, вернуть графическое изображение или
текст. При работе с электронной почтой картина меняется, но даже с учетом
электронной почты общий объем принимаемых данных обычно на порядок
превышает объем отправляемых данных.
Технология DSL разрабатывалась для решения ряда специфических проблем,
обусловленных бурным развитием Интернета, и прежде всего — проблем
пропускной способности. Существующая телефонная сеть строилась на предположении,
что большинство разговоров продолжается около 10 минут, при этом в доме
проведено в среднем две телефонные линии. С учетом этого технические
мощности АТС определялись с учетом средней ожидаемой загрузки. Иначе говоря,
если в любой момент времени только 10 процентов абонентов использует
телефон, количество коммутаторов на стендах АТС рассчитывается на поддержку
этого числа абонентов.
ПРИМЕЧАНИЕ
Технология DSL не лишена недостатков. Например, если линия DSL входит в кабельный комплекс,
включающий линию ISDN, существенные затраты на граничную передачу данных снижают
эффективность DSL. Обсудите возможные технические проблемы с фирмой-поставщиком, прежде чем
принимать решение об установке линии DSL
Интересное преимущество DSL перед кабельными модемами — постоянная
пропускная способность. Поскольку сегмент кабельной сети используется
совместно с соседними компьютерами, установка кабельных модемов у соседей
снижает фактическую пропускную способность канала. Технология DSL создает
соединение типа «точка-точка» с поставщиком службы, поэтому она избавлена
от этого недостатка. Тем не менее DSL зависит от пропускной способности
канала к Интернету, а максимальное расстояние от точки подключения DSL
до АТС ограничено. В настоящее время это ограничение равно примерно 4,5 км,
но с развитием технологии оно может измениться.
Радиосети
Радиосети строятся на базе разных технологий беспроводной связи, от сотовых
сетей до «классических» радиомодемов наподобие предлагаемых фирмами Ricochet
и Metricom. Радиомодемы Ricochet связываются с приемо-передающими
устройствами, закрепляемыми на фонарных столбах, и обеспечивают беспроводную
связь с Интернетом. Пользователь может подключаться к Интернету из любого
места, как при использовании сотовых телефонов или пейджеров. Хотя этот
способ связи чрезвычайно удобен, он не обеспечивает достаточной безопасности.
RADIUS
Протокол RADIUS (Remote Authentication Dial-In User Service), описанный
в RFC 2138, был разработан фирмой Livingston Enterprises в 1992 году. Он
относится к классу протоколов «клиент-сервер» и предоставляет пользователям
сервис удаленного подключения. Разработка протокола была обусловлена
потребностью в усовершенствованном механизме аутентификации пользователей.
Протокол RADIUS стал важным инструментом в работе системных
администраторов, стремящихся сделать процесс аутентификации более надежным.
В конфигурацию RADIUS обычно входит центральный сервер базы данных
и один или несколько серверов удаленного доступа (рис. 18.4).
Клиенты RADIUS ^^" ^Ч" ^
(, . -) £ Интернет J
Г^Х Внутренний | ^1 Маршрутизаторы
f a^v , . ^ г—-^^-i маршрутизатор Rgba R Интернета
1^^У..Ы."""" : ' '.::■:."J L bj.'::»:..".:.!»:.»».:;* L"JI£l£jJ
i I ЭВЗ
Внутренние клиенты /v ' Л
I Сервер RADIUS
Рис. 18.4. Примерная конфигурация RADIUS
Аутентификация RADIUS
Механизм обмена данными на базе RADIUS весьма прямолинеен. После того
как пользователь установит связь с сервером удаленного доступа, сервер
запрашивает у пользователя имя и пароль с использованием протоколов РАР или CHAP.
Протокол РАР
Старый протокол РАР (Password Authentication Protocol), документированный
в RFC 1334, основан на использовании имен и паролей. После удаленного
подключения имя пользователя и пароль передаются серверу RADIUS. Как показано
на рис. 18.5, сервер удаленного доступа многократно посылает введенное имя
и пароль серверу аутентификации до тех пор, пока не произойдет тайм-аут.
Если вы уделяете внимание безопасности, протокол РАР вам вряд ли подойдет,
поскольку пароли передаются «в открытую». Другими словами, имя
пользователя и пароль не шифруются. Следовательно, злоумышленник может
перехватить передаваемые пакеты, узнать имя пользователя с паролем или просто
переслать сохраненные пакеты для получения доступа к критическим ресурсам
системы. Протокол РАР обычно используется в качестве резервного, если
попытка использования протокола CHAP завершилась неудачей.
Клиенты RADIUS,^—^—л.—-.
использующие РАР (^ <.
< д^..„—j £ Интернет J
Внутренний ^Щ
маршрутизатор l««l«jHi
ЙДЧ Брандмауэр
Сервер RADIUS, аутентификацию
использующий РАР
Рис. 18.5. Принцип работы протокола РАР
Протокол CHAP
В отличие от РАР протокол CHAP предоставляет более сильный механизм
аутентификации пользователя. Подробное описание CHAP приведено в RFC 1994.
Аутентификация CHAP проводится в три этапа. После установления связи
сервер посылает клиенту специальный пакет — «вызов». Клиент вычисляет ответ
с использованием одностороннего алгоритма хэширования (например, MD5).
Клиент посылает результат серверу, который уже вычислил предполагаемый
ответ. Если ответ от клиента совпадает с ответом, вычисленным сервером,
клиенту разрешается доступ к сети. Если ответы не совпадают, доступ запрещается.
Для предотвращения атак типа «перехват сеанса» протокол CHAP можно
настроить на периодическое проведение повторной аутентификации клиента. В
отличие от РАР сторона, проводящая аутентификацию, контролирует все
происходящие события, и повторные попытки допускаются редко.
Подобная схема аутентификации предотвращает атаки с воспроизведением
сохраненных пакетов (вроде упомянутой в предыдущем разделе). Поскольку
каждый вызов отличается от предыдущих, вычисленные ответы тоже будут
различаться. Следует учитывать, что работа протокола зависит от общего ключа,
используемого при хэшировании (рис. 18.6), поэтому ключ необходимо хранить
в секрете. Вызов должен удовлетворять двум критериям: он должен быть
уникальным и непредсказуемым.
Ключ
Т
Вызов J ~
или ответ
Т
Хэш-код
фиксированной
длины
Рис. 18.6. Применение хэширования в протоколе CHAP
Метод аутентификации CHAP следует использовать в тех случаях, если
вы собираетесь обратиться к важным сетевым ресурсам или просто заботитесь
о безопасности. Как указано в CHAP RFC 1994, применение протокола РАР
для проверки пароля при использовании РРР считается нежелательным.
Учетные данные
Существует много разновидностей учетных данных: имя пользователя, пароль,
ограничения доступа по времени, данные авторизации и аудита.
Всем хорошо известны классические учетные данные — имя пользователя
и пароль. RADIUS дополняет их расширенной информацией, при помощи
которой можно узнать, когда пользователь пытается выйти за пределы своих полно-
мочий. Например, можно задать время, в течение которого пользователю
разрешается доступ к сети. Если секретарь работает с 9 до 17 часов, включите этот
интервал в его учетную запись. Любые попытки доступа за пределами этого
интервала автоматически отвергаются. Подобное ужесточение внешнего доступа
к сети повышает ее безопасность.
Аналогичный эффект дает ограничение доступа к службам. Явно
перечисляя службы, разрешенные для конкретного пользователя, вы запрещаете доступ
к остальным службам. Если пользователь обращается к службе, к которой ему
обращаться не положено, сервер RADIUS пресекает сто попытку. В этой
стратегии управления доступом используется централизованная база данных с
информацией о пользователях, легко обновляемая в случае необходимости.
Транспортировка дейтаграмм IP
в протоколах SLIP, CSLIP и РРР
Существует несколько протоколов, предназначенных для передачи дейтаграмм IP
по телефонным линиям. Выбор протокола зависит от того, какие из его
возможностей вы собираетесь использовать. Ниже кратко описана история протоколов
удаленного доступа и современное положение дел.
Протокол SLIP
SLIP (Serial Line Internet Protocol) — ранний протокол, предназначенный для
подключения удаленных пользователей к хостам. Документ RFC 1055 содержал
только информативную спецификацию, поскольку на момент написания этого
документа протокол SLIP уже превратился в фактический стагщарт. SLIP стал
одним из первых по-настоящему полезных протоколов удаленного доступа,
поскольку он обеспечивал подключение IP к удаленным сетям, которые начали
появляться в начале 1980-х годов. На рис. 18.7 показано, как протокол SLIP
использовался и операционных системах Berkeley и Sun Microsystems.
Маршрутизатор
с поддержкой SLIP
/1^™™/\ TCP/IP
Удаленный SLIP ^ — ^ Сервер
клиент / \. Корпоративный Е§ЭЯ
1 ьцум^яи"] Модем / Телефонная Линия Т-1 \маршрутизатор [«йдд
i^^— R.,.,...J...... ,i ГТ^ПтН
1 ===** Последовательный Сеть [ ТП \
канал /"' -'-''А
Рис. 18.7. Протокол SLIP
Протокол SLIP весьма тривиален, поскольку он разрабатывался во времена
простых сетевых технологий, а решаемая проблема сводилась к простой передаче
дейтаграмм IP по телефонным линиям. Весь документ RFC вместе с
программным кодом занимал всего пять страниц. В сущности, протокол SLIP всего лишь
определяет механизм формирования кадра для последовательного канала. Он не
обладает средствами обнаружения и исправления ошибок, адресации,
идентификации пакетов или сжатия данных. У него есть только одна задача — отправка
пакетов по последовательному каналу.
ПРИМЕЧАНИЕ
Следует понимать, что протоколы последовательных каналов (такие, как SLIP и РРР) являются
протоколами канального уровня (уровень 2 модели OSI). Необходимость в таких протоколах
связана с тем, что последовательные каналы не имеют собственных протоколов канального уровня.
В этом отношении они отличаются от протоколов локальных сетей (таких, как Ethernet и Token
Ring), имеющих определенную структуру кадра канального уровня. Во многих
последовательных каналах на физическом уровне используются асинхронные коммуникации, когда символьный
кадр формируется с использованием стоповых битов и необязательных битов контроля четности.
Возможно, вы знакомы с правилами формирования кадров на физическом уровне асинхронных
коммуникаций с описаниями вида «N,8,2», означающими «отсутствие контроля четности, 8 бит
данных, 2 стоповых бита». Описания вида «N,8,2» относятся к физическому уровню передачи
данных в последовательных каналах. Но какой протокол канального уровня должен использоваться
для последовательных каналов? Другими словами, как должны группироваться символы в кадре
информации и как должен выглядеть формат пакета канального уровня? При попытках найти
ответ на этот вопрос становится ясно, что последовательные каналы не имеют собственного
протокола канального уровня, а формат кадра для последовательных каналов выбирается
разработчиком протокола. Раньше в качестве протокола канального уровня для последовательных
каналов использовался протокол SLIP, описанный выше. Ниже рассматривается современный
протокол РРР, заменивший SLIP.
Из-за своей простоты протокол SLIP обладает рядом недостатков, делающих
нежелательным его применение в широкомасштабных сетях. Самый серьезный
недостаток заключается в том, что в сеансах SLIP обе стороны должны знать
IP-адреса друг друга, без чего невозможно выполнить маршрутизацию. В
современных сетях это может вызвать проблемы, особенно при использовании средств
автоматической конфигурации DHCP. С другой стороны, примитивность
протокола SLIP упрощает его реализацию.
Размер дейтаграммы обычно поддерживается меньше 1006 байт, что
существенно ниже предельного размера MTU большинства каналов. Также
ограничивается максимальная скорость модема. В соединениях SLIP не рекомендуется
превышать скорость 19,2 кбит/с. При больших скоростях возникает потребность
в средствах проверки ошибок, поддерживаемых РРР.
Протокол CSLIP
Протокол CSLIP (Compressed SLIP) сокращает непроизводительные затраты
на транспортировку за счет применения сжатия заголовков TCP по алгоритму
Ван-Джейкобсона, вследствие чего размер объединенных заголовков TCP и IP
сокращается с 40 до 3-7 байт. В большинстве пакетов содержимое заголовков
TCP и IP остается практически одинаковым, что позволяет использовать
алгоритмы сжатия — такие, как кодирование длин серий (RLE), при котором
последовательная серия одинаковых элементов заменяется одним символом и числом
его повторений. Сжатие дает особенно существенный выигрыш при отправке
большого количества мелких пакетов, как при использовании протоколов типа
Telnet.
Протокол РРР
Многочисленные ограничения и недостатки протокола SLIP наглядно показали,
что нужен новый протокол. Так на замену SLIP появился протокол РРР.
Исходная спецификация RFC 1134 с описанием РРР была написана в 1989 году
Дрю Перкинсом (Drew Perkins) из университета Карнеги Меллон. Протокол РРР
отличается высокой универсальностью, он поддерживает передачу дейтаграм по
последовательным каналам «точка-точка» и по Интернету. Дейтаграммой
называется блок данных, по своей природе сходный с пакетом. Инкапсуляция
дейтаграмм позволяет РРР сохранить независимость от среды передачи и
поддерживать протоколы, отличные от IP. РРР используется с такими протоколами, как
UDP/IP, IPX/SPX и даже AppleTalk.
Режимы работы РРР
Чтобы протокол РРР поддерживал практически любые типы пользовательских
сеансов, в него была включена поддержка нескольких режимов работы. При
получении запроса на установление связи РРР может перейти в один из трех
режимов:
О прямой канал РРР;
О режим автоматического распознавания;
О интерактивный режим.
Прямой канал
Как нетрудно предположить по названию, в режиме прямого канала после
ответа на запрос создается канал связи РРР. Вся аутентификация должна
выполняться средствами самого протокола РРР. Данный способ соединения весьма
рискован из-за возможности отключения аутентификации, что позволит любому
желающему подключиться к вашей сети.
Автоматическое распознавание
В режиме автоматического распознавания сервер выбирает между РРР, SLIP,
интерактивным режимом и другими протоколами в соответствии с настройкой
системы. В данном случае ключевым преимуществом является универсальность.
Благодаря поддержке широкого спектра протоколов для сети теперь могут
эффективно решаться проблемы обновления и миграции. Вместо принудительного
перевода на РРР можно осуществить постепенную миграцию пользователей
и служб. Одновременный перевод всех систем на новую технологию сильно
испортил жизнь многим системным администраторам, потому что
преобразование не всегда идет гладко и неизменно сопровождается непредвиденными
проблемами.
Интерактивный режим
Другое преимущество — поддержка неинтеллектуальных терминалов и
терминальной эмуляции. Некоторым программам, работающим с базами данных,
по-прежнему необходим доступ к унаследованным системам, поэтому об этой
возможности следует помнить.
В начале сеанса РРР проверяет тип сеанса — активный или пассивный.
Активный узел начинает передавать кадры в попытке согласовать установление связи
с другой стороной. Пассивный узел ожидает, пока процесс согласования будет
инициирован другой стороной. Как правило, узлы с исходящим доступом
настраиваются на активный режим, тогда как узлы с входящим доступом могут
быть как активными, так и пассивными. Для определения протокола линии
передачи данных удаленного узла сервер удаленного доступа с автоматическим
распознаванием должен работать в пассивном режиме.
Чтобы протокол РРР приступил к процессу согласования, один из узлов
должен быть активным. Учтите, что не все программное обеспечение
поддерживает выбор режима. Например, сервер удаленного доступа NT является
пассивным, а сервер РРР для Solaris работает только в активном режиме. При
использовании РРР 2.3 вам будет предоставлен выбор между активным и пассивным
режимом.
РРР поддерживает шифрование в форме протокола ЕСР (Encrypting Control
Protocol), описанного в RFC 1962 и RFC 1968. Возможно применение
различных алгоритмов шифрования, в том числе DES. Обе стороны должны
поддерживать шифрование и согласовать общий алгоритм. Будьте внимательны,
шифрование поддерживается не всеми программными продуктами, поскольку оно
относится к числу расширений РРР.
В отличие от SLIP протокол РРР обладает многими полезными
возможностями:
О одновременная поддержка нескольких протоколов;
О настройка канала связи;
О обнаружение ошибок;
О сжатие;
О шифрование;
О получение информации о сети;
О аутентификация.
Как показано на рис. 18.8, РРР находится в стеке протоколов на канальном
уровне и взаимодействует с физическим и сетевым уровнями.
Подобное использование стека позволяет РРР поддерживать несколько
протоколов. Так, на рис. 18.9 показано, как дейтаграммы IP инкапсулируются
в кадрах РРР.
Прикладной уровень
Представительский уровень
Другие
Сеансовый уровень ТСР/|Р („g^p, ,PX)
Транспортный уровень
Сетевой уровень
Канальный уровень РРР
^ ^ Интерфейс последовательной
Физический уровень | передачи данных |
Рис. 18.8. Место протокола РРР в стеке TCP/IP
Данные приложения
перемещаются по стеку
сверху вниз
I
Дейтаграмма IP
Кадр РРР
у
I Форматирование на I
| физическом уровне |
Кадр направляется
в линию последовательной
I передачи данных
Рис. 18.9. Инкапсуляция дейтаграмм IP для пересылки в канале
Точно так же инкапсулируются данные IPX — вместо дейтаграммы IP
канальному уровню с поддержкой РРР передается дейтаграмма IPX. Подобная схема
сохраняет логическую целостность стека и одновременно обеспечивает гибкость,
столь необходимую в современных сетевых средах с поддержкой нескольких
протоколов.
О гибкости РРР также свидетельствуют возможности модификации рабочих
параметров этого протокола. Для обеспечения максимальной э(})фективности работы
канала РРР позволяет задать целый ряд параметров конфигурации, в том числе:
О максимальная единица приема (MRU);
О асинхронная карта управляющих символов (АСММ);
О протокол аутентификации;
О протокол контроля качества;
О «волшебное число»;
О сжатие поля протокола;
О сжатие поля адреса и управления;
О альтернативная контрольная последовательность кадра.
Максимальная единица приема
Максимальная единица приема (MRU) сообщает другому узлу, что получатель
способен работать с единицами MTU, размер которых отличен от стандартного
A500 байт). Следует заметить, что все реализации должны при любых
обстоятельствах поддерживать передачу данных РРР объемом 1500 байт независимо
от того, какие значения были согласованы на стадии подключения. Вычисление
MRU считается довольно сложным процессом из-за протоколов сжатия,
которые могут увеличивать объем некоторых данных из-за специфики алгоритмов
подстановки. В некоторых реализациях РРР параметр MRU вычисляется на
основании скорости подключения.
Асинхронная карта управляющих символов
Асинхронная карта управляющих символов АССМ (Async Control Character Map),
описанная в RFC 1662, указывает другой стороне, какие символы в потоке данных
должны «экранироваться» для предотвращения порчи данных. Это делается для
разрешения или запрета использования управляющих символов ASCII с кодами
в интервале от 18 до IF. Некоторые управляющие последовательности (такие,
как Ctrl+S и Ctrl+A — XON и XOFF), обычно используемые для остановки и
возобновления передачи, иногда весьма странным и удивительным образом портят
данные.
Протокол аутентификации
Параметр протокола аутентификации описан в RFC 1661. Выдавая запрос на
аутентификацию, отправитель сообщает другой стороне, что перед дальнейшим
обменом данными она должна передать информацию о себе. По умолчанию
аутентификация не используется. Получатель может ответить отказом, запрашивая
тем самым другой протокол (рис. 18.10).
I I Запрос (с указанием | I
протокола аутентификации)
<< Отказ
q (протокол неизвестен) £,
s Запрос (с указанием другого fe
го протокола аутентификации) >,
Е §
I EZ I
О Подтверждение
(протокол известен)
Отправка
1 ' идентификационных ' '
данных
Рис. 18.10. Последовательность аутентификации
Получив отказ, отправитель может завершить сеанс или повторить попытку
с другим протоколом. Допустимые протоколы аутентификации — PAP (RFC 1334),
MD5 CHAP (RFC 1994), MS CHAP, EAP и SPAP. После того как другая сторона
передаст подтверждение, она должна сообщить информацию о себе с
использованием одного из перечисленных протоколов.
Протоколы CHAP и РАР были описаны выше. В оставшейся части этого
раздела приводится краткая сводка других протоколов аутентификации и
перечислены остальные поля РРР.
ЕАР
Протокол ЕАР (Extensible Authentication Protocol), описанный в RFC 2284 и 2484,
рекомендован для использования в качестве протокола аутентификации РРР.
РРР создает подключение, а выбор алгоритма откладывается до фазы
управления каналом (LCP, Link Control Phase). Затем во время фазы аутентификации
ЕАР запрашивает у клиента дополнительные сведения о конкретных протоколах
аутентификации. Основным преимуществом ЕАР является поддержка
использования вспомогательных систем для шифрования и аутентификации, что
существенно упрощает интеграцию РРР с серверами RADIUS и другими аппаратными
и программными средствами безопасности.
Shiva PAP
Shiva PAP тоже использует аппаратные средства безопасности, но, похоже, Shiva
не собирается делать свой протокол общественным достоянием и предоставляет
лицензии избранным производителям. Найти свободно распространяемую
документацию по этой теме нелегко.
MS CHAP
Протокол MS CHAP фактически представляет собой обычный CHAP с
измененным алгоритмом хэширования. Вместо обычного алгоритма MD5 в MS CHAP
используется DES или MD4 в зависимости от того, используется ли
LAN-версия (DES) или NT-версия (MD4). В обоих случаях при построении ответа
используется DES.
Протокол контроля качества
Еще одна интересная особенность РРР — возможность измерения параметров
качества сервиса (QoS, Quality of Service). Сообщив другой стороне о своем
желании получать информацию QoS, вы сможете отслеживать потерю данных
и процент ошибок. По умолчанию этот параметр принимает значение «нет
протокола», а предоставляемая информация ограничивается простой статистикой
о состоянии канала.
«Волшебное число»
«Волшебное число» используется в запросах QoS, а также в запросах на
исключение данных и в пакетах с информацией о качестве связи. Оно выбирается
случайным образом, используется для взаимной идентификации узлов, а также
упрощает выявление ошибок и «петель». По умолчанию «волшебное число» не
используется.
Сжатие поля протокола
При включении сжатия поля протокола 16-разрядное поле протокола
заменяется 8-разрядным значением. Чтобы сжатие работало, старший октет должен быть
равен 0; передается только младший октет. По умолчанию сжатие поля протокола
не используется.
Сжатие поля адреса и управления
Включение сжатия поля адреса и управления сообщает другой стороне, что
фиксированные значения HDLC Oxff и 0x03, связанные с этим полем, можно
игнорировать. По умолчанию сжатие поля адреса и управления не используется.
В приложениях, критичных по задержке (например, в приложениях реального
времени), этот параметр позволяет игнорировать неиспользуемые части поля
и сэкономить несколько байт при передаче пакетов.
Альтернативная последовательность передачи кадра
Последний из рассматриваемых параметров — альтернативная
последовательность передачи кадра — сообщает другой стороне, что узел желает получать
нестандартное поле контрольной последовательности кадра. Этот параметр LCP
обычно не используется, поскольку он по-разному интерпретируется в разных
реализациях РРР. Включение альтернативной последовательности передачи
кадра позволяет сторонам согласовать использование 32-разрядных
контрольных сумм вместо обычных 16-разрядных.
Существуют и другие параметры и расширения, поддерживаемые РРР, но они
считаются либо устаревшими, либо дефектными. Применяйте их только в
крайнем случае, а там, где это возможно — рассмотрите другие варианты. Описания
этих параметров приводятся в RFC 1570, RFC 1663, RFC 1976 и RFC 1990.
Туннелирование удаленного доступа
Перемещение данных между сетями нередко требует применения специальных
приемов. Иногда проблема решается простой инкапсуляцией одного протокола
в другом, как это делается при передаче пакетов IPX в каналах IP (рис. 18.11).
Завершитель Заголовок
канального Пакет IPX Заголовок UDP Заголовок IP канального
уровня уровня
Рис. 18.11. Передача IPX в пакетах IP
Основной протокол (в данном случае IPX) может не обладать возможностями
перемещения данных между объединенными сетями IP. Для решения этой
проблемы к пакету IPX присоединяется заголовок IP с информацией,
необходимой для маршрутизации пакета к месту назначения. Эта стандартная методика
используется с первых дней существования AppleTalk и доказала свою
эффективность.
Впрочем, у подобных решений есть свои недостатки. Некоторые приложения
рассчитаны на прямую работу с базовыми протоколами, в данном случае Novell
NetWare. Во многих реализациях IP присутствуют свои особенности, сильно
усложняющие их использование. Для примера можно снова привести протокол
IPX в сетях Microsoft. В некоторых реализациях IPX для сетей MS наблюдаются
странные проблемы с тайм-аутом, а сетевые ресурсы случайным образом
появляются и исчезают. Чаще всего эти проблемы возникают с принтерами и
объясняются неправильным взаимодействием драйвера принтера с сетевыми драйверами.
В этом и заключается суть проблемы. Инкапсуляция требует особого
внимания ко всем мелочам, поскольку в ней фактически задействованы два и более
сетевых протоколов. Всего один неправильно установленный или устаревший
драйвер создает проблемы, которые крайне трудно выявить и устранить. Что
еще важнее, такие проблемы создают впечатление общей ненадежности сети,
а это крайне нежелательно.
В прошлом были предложены некоторые решения, оказавшиеся весьма
эффективными. Во-первых, существуют специальные продукты удаленного
администрирования, при помощи которых системные администраторы устанавливают
удаленные узлы и управляют их работой. Продукты таких компаний, как Vector Networks
(www.vector-networks.com) и Traveling Software (www.travelingsoftware.com) обладают
дополнительными возможностями, не поддерживаемыми стандартными
рабочими средами. В них реализованы средства удаленного управления и
администрирования и средства сбора информации о программах и оборудовании,
предназначенные для формирования надежной сетевой среды. Впрочем, не стоит
считать подобные продукты панацеей. При неправильной настройке они могут
предоставить несанкционированный доступ к конфиденциальной информации.
Позаботьтесь о том, чтобы пароли были сильными, а административный доступ
предоставлялся только тем, кому он действительно нужен. Программа ZENWorks
for Desktop для сетей Novell обладает встроенными средствами защиты
удаленного доступа.
В некоторых случаях обычного уровня безопасности оказывается
недостаточно. В таких особых случаях приходится использовать протоколы
шифрования — такие, как РРТР и L2TP.
Протокол РРТР (Point-to-Point Tunneling)
Протокол РРТР является результатом сотрудничества между Ascend
Communications ECI Telematics, Microsoft, 3Com и US Robotics. Данная группа получила
название форума РРТР. Предполагалось, что протокол РРТР откроет новые
возможности для пользователей и производителей оборудования. При поддержке
этого стандарта пользователи смогут подключиться по модему к местному
поставщику услуг Интернета и создать защищенный туннель к корпоративной
сети. В результате корпорациям не придется тратить силы и средства на
создание и сопровождение собственных средств контроля удаленного доступа.
Протокол должен был сблизить корпорации с существующими структурами
Интернета. Поставщикам услуг Интернета (ISP) оставалось делать то, что они
умеют — подключать отдельных пользователей к Интернету. Корпорациям
оставалось лишь приобрести оборудование, подключаемое к региональным
сетям (MAN) и местные линии связи для демультиплексирования входящих
подключений удаленного доступа. С их точки зрения внешнее подключение
выглядело как связь с обычным сайтом Интернета. На рис. 18.12 проиллюстрированы
различия в двух архитектурных моделях.
ШРЩХВ Мультиплексный канал от ISP
Н№|||§9' Маршрутизатор
ЖЙЁЁИ: \ мультиплексного канала
^^ДД^^^Интернет <^ пь^Л
/ \ г'РЙН
Удаленные ЖЩЕЗД Точка доступа к Интернету, предоставленная ISP I /■■ 'Т!.,,'Ь
РНШ1, Маршрутизатор
' ■ /"""£1— мультиплексного канала
q Интернет J I ЦД |
^ШШШШгУ^. Корпоративная
^£^S Уцаленные [ЯРРШ]
Рис. 18.12. Два варианта архитектуры удаленного подключения к корпоративной сети
Агрегирование сеансов РРР
Протокол РРТР, работающий по схеме «клиент-сервер», проектировался
специально для поддержки туннелирования в сетях IP с использованием РРР и
уровня 2. В нем предусмотрена такая интересная возможность, как поддержка несколь-
ких подключений РРР по одному туннелю РРТР. Она хорошо работает в модели
с поставщиком услуг Интернета, в которой несколько удаленных пользователей
подключаются к корпоративной точке входа (рис. 18.13). Такие туннели обычно
называются виртуальными частпьши сетями (VPN, Virtual Private Networks).
С^^^П Агрегатный канал РРТР
KKK ^S^f:;^^ Интернет Ц шяж
Клиенты ^ I ]
W ••--fH Сервер
&п та=г| удаленного
U^sJ доступа
Рис. 18.13. РРТР с многопользовательской поддержкой
Для работы РРТР необходимо дополнительное управление через порт TCP
1723 с использованием протокола GRE (General Routing Encapsulation). Тем не
менее протокол GRE не получил такого распространения, как TCP или
родственный ему UDP, поэтому он не поддерживается многими поставщиками услуг
Интернета. Без поддержки GRE протокол РРТР работать не будет.
Самый распространенный способ реализации основан на обслуживании
удаленных точек присутствия (POP, Point of Presence). В этом случае поставщик
услуг Интернета просто предоставляет сервис IP, а клиенты согласовывают
свои каналы РРТР с частными маршрутизаторами. Следует учитывать, что не
все программные средства РРР поддерживают РРТР, поскольку этот протокол
не является стандартным. В качестве примера клиента и сервера,
поддерживающих РРТР, можно привести реализацию РРР от Microsoft в операционных
системах Windows 98 и NT.
После установления физического соединения и проверки пользователя
дейтаграммы создаются средствами РРР. Далее РРТР инкапсулирует пакеты РРР
для передачи по туннелю IP.
Отдельный управляющий канал
Как упоминалось выше, в РРТР подключение производится по двум каналам:
каналу данных и управляющему каналу. Управляющий канал работает на порте
TCP 1723. По нему передается информация, относящаяся к состоянию связи,
а также управляющие сообщения для создания, управления и завершения
туннелей РРТР. Именно управляющий канал позволяет регулировать скорость
передачи данных РРТР, что может быть полезно при высоком уровне помех в линии
или сильной перегрузке сети, приводящей к потере пакетов.
Данные передаются между узлами в потоке данных, инкапсулированном
в «оболочке» IP; для управления маршрутизацией используется протокол GRE.
Следует еще раз напомнить, что GRE не поддерживается некоторыми
поставщиками услуг Интернета, поэтому создание туннелей может потребовать
непосредственного согласования между клиентом и сервером.
Поддержка других протоколов
Другая интересная особенность РРТР — поддержка таких протоколов, как
NetBEUI, IPX и даже AppleTalk (для тех, кто еще продолжает им пользоваться).
Поскольку РРТР относится к протоколам второго уровня, он также включает
заголовок носителя, что позволяет ему работать через Ethernet или
подключения РРР.
Аутентификация и защита
Шифрование и управление ключами не входят в спецификацию РРТР.
Протокол РРТР использует средства аутентификации и шифрования,
предоставляемые протоколом РРР. Для повышения надежности защиты данных в паре
РРР/РРТР фирма Microsoft реализовала новый механизм шифрования —
алгоритм Microsoft Point-to-Point Encryption, основанный на стандарте RSA RC4.
Для выполнения аутентификации РРТР использует протоколы CHAP, PAP,
ЕАР и MS-CHAP, поддерживаемые РРР.
Типы туннелей РРТР
Протокол РРТР поддерживает несколько базовых конфигураций туннельных
подключений. Тип туннеля зависит от нескольких условий. Первое и самое
главное — это выполнение требования о поддержке GRE поставщиком услуг
Интернета. Второе условие — возможность поддержки подключений РРТР самим
клиентом. Конечной точкой туннеля является либо сервер удаленного доступа
(RAS) поставщика услуг Интернета, либо компьютер пользователя. Туннели этих
двух видов называются соответственно добровольными и принудительными.
Добровольный туннель
При создании добровольного туннеля пользователь создает подключение РРТР
к корпоративному компьютеру. Однако в этом случае на его компьютере
должен работать полноценный клиент РРТР (такие клиенты имеются в
операционных системах Windows 9x и NT). В этом случае от поставщика услуг Интернета
не требуется ничего, кроме предоставления базового сервиса IP (рис. 18.14).
Если сервер удаленного доступа предоставляется поставщиком услуг
Интернета, присутствие клиента РРТР на компьютере пользователя не
обязательно; необходим только клиент РРР. В принудительных туннелях пользователь
подключается к серверу удаленного доступа поставщика услуг Интернета и не
может управлять туннелем (рис. 18.15). Как правило, пользователь вообще не
знает о существовании туннеля РРТР.
Каналы /^ С Корпоративная}
РРТР / ^ .—. > сеть \ J
ЛУ г Интернет <^ ^^-—г~~-^Лл
Клиенты fh^S- «^j* Сервер удаленного
РРТР \ШЩ Ш доступа РРТР
Рис. 18.14. Туннель РРТР «пользователь-сервер» через Интернет
Агрегатный канал
Г#5ё«»*йП а/ РРТР к сети
жЙИб^П^ч Г ^^ Корпоративная!)
4=^даГ J^>. jf -*У ^\^--«~Л-—Хг- сеть и
j^|i^||^^^ Интернет | <^ I Т&зШ
Клиенты / ^—-^\^_^У^ Я I ри^ЕС]
ррр X / pzd
^__ J7 Обратный выход I
['Ш^йй I в Интернет через Hfc^-l
г§Ш|$я корпоративную сеть I ЬрИч
Ч "''< '^warH Сервер
| да п ч^^ удаленного
s=a^ доступа
Рис. 18.15. Принудительный туннель
Принудительный туннель
Принудительные туннели делятся на две категории: статические и
динамические. Статические туннели работают на специально выделенном
оборудовании, их также называют туннелями иа базе областей (realm-based tunnels).
Область (realm) является частью имени пользователя и может ассоциироваться
с пользовательским доменом. Эта информация используется сервером RAS для
определения конечной точки подключения РРТР. Поддержание соединений
такого рода требует ручной настройки сервера RAS. Преимущество статических
туннелей состоит в том, что корпорации могут контролировать работу своих
пользователей в Интернете. Пользователь подключается к корпоративной сети
и пользуется корпоративным сервисом, а его выход в Интернет производится
через корпоративную сеть и полностью подчиняется корпоративным
требованиям (см. рис. 18.15).
Динамические туннели более эффективны, потому что туннель создается только
в случае необходимости. Для получения информации о пользователе сервер
RAS связывается с сервером RADIUS. Туннель создается на основе сведений
о пользователе. Информация об использовании туннеля и контроле доступа
хранится на сервере RADIUS и запрашивается сервером RAS по мере
необходимости.
Другое преимущество принудительных туннелей — возможность
агрегирования трафика. Несколько клиентов РРР могут быть объединены в одно
подключение РРТР к корпоративной интрасети, что обеспечивает сокращение объема
трафика и экономию затрат.
С другой стороны, у принудительных туннелей имеется недостаток,
связанный с безопасностью: канал от клиента к серверу RAS остается незащищенным.
Тем не менее то же самое можно сказать и о добровольном туннеле, поскольку
ничто не мешает пользователю подключиться к Интернету, загрузить
вредоносную программу, а затем подключиться к корпоративной сети.
Туннельный протокол уровня 2 (L2TP)
Протокол L2TP (Layer 2 Tunneling Protocol) имеет много общего с РРТР. Он
объединяет РРТР с протоколом Cisco L2F (Layer 2 Forwarding). Преимущество
L2F перед РРТР заключается в том, что он не зависит от GRE, а, следовательно,
совместим с другими средствами передачи данных (например, ATM и другими
пакетными сетями, включая Х.25 и Frame Relay). С другой стороны, это означает,
что в спецификации должны быть определены правила обработки пакетов L2F.
L2F
По аналогии с РРТР, протокол L2F использовал РРР в качестве базового
протокола, обеспечивающего подключение и вспомогательные функции
(например, аутентификацию). Но в отличие от РРТР L2F с самого начала
использовал TACACS (Terminal Access Controller Access-Control System) —
запатентованный протокол, разработанный Cisco Systems. TACACS обеспечивает сервис
аутентификации, авторизации и сбора данных для маршрутизаторов Cisco.
Протокол TACACS обладает некоторыми ограничениями, которые рассматриваются
ниже в этой главе.
L2F также использует туннельные подключения, что позволяет ему
поддерживать несколько туннелей в одном подключении L2F. Стремясь к повышению
уровня безопасности, L2F поддерживает дополнительный уровень
аутентификации. Кроме простой аутентификации на уровне РРР, в L2F была добавлена
аутентификация на уровне корпоративного шлюза или брандмауэра.
Главные преимущества L2F были перенесены в спецификацию L2TP. В L2TP
используется тот же способ подключения удаленных пользователей через РРР;
также был позаимствован и туннельный протокол L2TP. Эта особенность важна,
если учесть тенденцию перехода на сети ATM и Frame Relay, наблюдающуюся за
последние несколько лет.
Аутентификация
В L2TP, как и в РРТР, аутентификация выполняется средствами РРР. L2TP
использует PAP, CHAP и ЕАР для подключения к серверам RADIUS и но
эффективности не уступает РРТР. Наряду с этим уровнем эффективности в L2TP
используется сервис PACACS, TACACS+ и IPSec.
Поддержка IPSec
Основное отличие IPSec от других аналогичных служб заключается в том, что
эта открытая спецификация поддерживает не только аутентификацию, но и
защиту данных. В IPSec реализованы гораздо более сильные средства
безопасности, чем в простой модели РРР. Как видно из рис. 18.16, в L2TP предусмотрена
возможность поддержки PKI (Public Key Infrastructure) за счет применения
LDAP и сильных средств аутентификации. PKI является средством
управления открытыми ключами и теми сертификатами, которые ими поддерживаются.
В IPSec используется несколько различных механизмов аутентификации и
шифрования, включая асимметричные алгоритмы шифрования, на базе которых
работает PKI. Но хотя ниже мы поговорим о некоторых из этих механизмов, тема
PKI выходит за рамки настоящей главы и далее не рассматривается.
Клиенты RADIUS ^>^-—^ ч.—^
f .л.» i ,,„,,.•"] С Интернет J
Внутренние клиенты |Щ Внутренний ^* Маршрутизаторы
п маршрутизатор l^Um Интернета
серверы ииииввя
сертификатов Р*?Н Сервер РРТР
и LDAP ГИГ11 на брандмауэре
щ
| Сервер RADIUS
Рис. 18.16. L2TP и PKI
L2TP, как и РРТР, создает подключение средствами РРР. L2TP ожидает, что
РРР установит физическое соединение, выполнит начальную аутентификацию,
создаст дейтаграммы РРР, а по завершении сеанса — закроет подключение. На
этом сходство завершается. L2TP «переговаривается» с другим узлом и
определяет, разрешено ли подключение и собирается ли другая сторона поддерживать
L2TP. Если проверка дает отрицательный результат, сеанс на этом завершается.
Как и в РРТР, в L2TP определены два типа сообщений: управляющие и
данные. Управляющие сообщения предназначены для создания и поддержания
туннелей, а также для управления передачей и приемом данных. В отличие от
протокола РРТР, использующего два раздельных канала, L2TP объединяет
каналы управления и данных в один поток данных. В сети IP такое объединение
выглядит как упаковка данных и управляющей информации в одной дейтаграмме
UDP (рис. 18.17).
Заголовок Заголовок Заголовок Полезная
UDP L2TP РРР нагрузка IP
Рис. 18.17. Дейтаграмма в пакете UDP
Полезная нагрузка фактически состоит из пакета РРР за вычетом элементов
формирования кадра, зависящих от канала передачи. Поскольку L2TP относится
к протоколам второго уровня, он должен включать заголовок носителя, который
передает следующему уровню информацию о том, как должен передаваться пакет.
Возможны различные варианты: Ethernet, Frame Relay, X.25, ATM или исходный
канал РРР. Как видите, схема получается достаточно гибкой.
Для борьбы с перегрузкой сети в L2TP поддерживается управление потоком
данных. Оно реализуется между концентратором доступа L2TP LAC (L2TP
Access Concentrator) и сервером сетевого доступа L2TP LNS (L2TP Network
Access Server), предоставляющим доступ к корпоративной сети. Управляющие
сообщения содержат информацию о скорости передачи и параметрах
буферизации. Обмениваясь этой информацией, LAC и LNS регулируют поток данных,
а следовательно, способствуют разгрузке сети (рис. 18.18).
[ ЦЩ&шГ] Подключение через Интернет
ррр jXs-aBrassssB^^v У LHS
Д^^^^^ЁЮ Интернет | ■< ^
Рис. 18.18. LAC и LNS
В L2TP применяется и такой способ снижения объема трафика, как сжатие
заголовков пакетов. Как говорилось выше, такая возможность существует и в РРТР.
L2TP, как и РРТР, также поддерживает два типа классов подключений и
добровольные и принудительные туннели.
В добровольном туннеле подключение L2TP инициируется с компьютера
пользователя. Тем не менее это означает, что на этом компьютере должен быть
установлен действующий клиент L2TP. От поставщика услуг Интернета в этом
случае не требуется ничего, кроме предоставления базового сервиса связи
(рис. 18.19).
Каналы /^ С Корпоративная j
L2TP / ТЬ^Г СвТЬ \ ?
/ г" Интернет А? ^t
■в М — / w
[ии—j u~w / •••
'ЕттшЯЯШг' [ ■вгтч-:т-а5, уу У I I —;_"■- I
КРРТРЫ ||Ш|Н; L2TPLNS
Рис. 18.19. Добровольный туннель L2TP между пользователем и сервером
Если LAC предоставляется поставщиком услуг Интернета, присутствие
клиента L2TP на компьютере пользователя не обязательно; нужен только клиент
РРР. В принудительном туннеле пользователь подключается к LAC поставщика
услуг Интернета и не контролирует работу туннеля (рис. 18.20). Как правило,
пользователь вообще не знает о существовании туннеля L2TP.
Принудительные туннели делятся на две категории: статические и
динамические. Статические туннели работают на специально выделенном оборудовании.
В общем случае они неэффективно используют оборудование, поскольку оно
остается занятым даже в то время, пока туннель не используется. Кроме того,
поддержание соединений такого рода требует ручной настройки LAC.
Динамические туннели более эффективны, потому что туннель создается
только в случае необходимости. LAC получает информацию о пользователях от
сервера аутентификации (например, от сервера RADIUS или TACACS).
Использование принудительного динамического туннеля в сочетании с сервером
аутентификации имеет большие преимущества: туннели создаются с учетом
информации о пользователе (например, телефонного номера и метода аутентификации).
Аутентификация может производиться с использованием биометрических
признаков или смарт-карт, получающих все более широкое распространение. Кроме
того, в процессе аутентификации может производиться аудит и сбор статистики.
На основании накопленной информации выставляются счета за обслуживание
и выбирается скорость передачи данных в арендуемом канале.
■Н |™li Агрегатный канал L2TP
/iJILHHJ"8K^" Чуч г КорпоративнаяГ)
fefffliBffl}iRi^ \ s*r- -^^{ ^ч^. i.^^ ^ сеть )
РРР Ъ»-«—я^^^- У LNS
ЙШЭ|ЁР^ Интернет [ < ^
Клиенты / ^ 'V___^/Ss ^ 1г»»'",И1
|ИП| &^», •••:?• "J^
ИИ КЗ: *":-::; 1'"ч
Доступ к внутреннему |* а!
сервису | ■■ |
Рис. 18.20. Принудительный туннель через LAC поставщика услуг Интернета
Преимущества такого подхода уже упоминались в предыдущем разделе.
Пользователи подключаются к корпоративной интрасети для работы с
корпоративным сервисом и доступа к Интернету через корпоративную сеть, если он
разрешен (рис. 18.21).
_.. . Агрегатный канал L2TP
[ уимт-шу Выход в Интернет I [_^J
Клиенты НИШ через корпоративную сеть | ЩЦ
^г:';-;>ГГтгН Сервер
доступа
Рис. 18.21. Принудительное подключение к Интернету через L2TP
Другим преимуществом принудительных туннелей является агрегирование
трафика. Объединение нескольких подключений в один туннель L2TP к
корпоративной интрасети повышает эффективность использования ресурсов канала
и снижает затраты.
Не следует забывать и о недостатках принудительных туннелей. Канал от
клиента к серверу LAC не защищен, так как это простой канал РРР. Впрочем,
выше уже говорилось о том, что этот недостаток присущ и добровольным
туннелям. Ничто не мешает пользователю подключиться к Интернету, загрузить
вредоносную программу, а затем подключиться к корпоративной сети.
Как и в случае с реализацией РРТР, вопросы безопасности приходится
решать на системном уровне. Невозможно обеспечить безопасность, опираясь
только на технологические решения. Забывая о культурных особенностях и
процессах, вы сами создаете угрозу для безопасности системы.
Аутентификация L2TP через поставщика услуг Интернета сложнее той,
которая используется РРТР. При исходном контакте поставщик предоставляет
один из трех признаков, идентифицирующих пользователя:
О номер телефона, с которого поступил вызов;
О номер телефона, на который поступил вызов;
О имя пользователя или идентификатор.
После этого LAC поставщика услуг Интернета генерирует новый
идентификатор вызова, по которому данный сеанс будет определяться в туннеле, и
передает эту информацию LNS корпоративной сети (рис. 18.22).
Пользователь подключается ^
к поставщику услуг Интернета
Поставщик передает ^
информацию LNS
^ LNS возвращает подтверждение
поставщику
Пользователь создает
канал РРР с LNS
^ LNS запрашивает данные
аутентификации пользователя
Пользователь передает ^
данные аутентификации
Рис. 18.22. Последовательность аутентификации L2TP
Корпоративная сеть анализирует предоставленную информацию и решает,
принять или отвергнуть запрос на подключение. Если запрос будет принят,
наступает следующая фаза — аутентификация РРР. Хотя конечные точки были
определены и аутентифицированы, следует заметить, что сообщения
по-прежнему передаются в незашифрованном виде. Любой желающий с протокольным
анализатором может перехватить ваши данные. Кроме того, в поток пакетов
могут быть вставлены посторонние пакеты в попытке нарушить логику работы
получателей. Для предотвращения подобных попыток применяется механизм
IPSec.
Вспомните, что протокол РРР обеспечивает шифрование данных, но при этом
используется общий ключ. Чтобы процесс работал, ключ должен быть известен
обеим сторонам; следовательно, необходимо предусмотреть средства передачи
ключей по дополнительному каналу. То же самое относится и к
аутентификации туннелей L2TP. Но даже при использовании шифрования РРР протокол
L2TP не защищает управляющую информацию. IPSec может помочь и в этом.
IPSec
Протокол TCP/IP не обеспечивает сколько-нибудь надежной защиты. За
прошедшие годы было разработано немало механизмов, пытающихся заполнить этот
пробел. Тем не менее эти решения не обладали межплатформенной
совместимостью и работали недостаточно надежно. Для решения этой проблемы группа
IETF разработала набор протоколов, известных под общим названием IPSec.
Хотя эта тема скорее относится к виртуальным частным сетям (VPN),
некоторые функции IPSec достаточно эффективно используются L2TP, поэтому ниже
приводится краткий обзор возможностей IPSec.
В 1995 году были опубликованы документы RFC 1825-1829 с описаниями
механизмов аутентификации и шифрования дейтаграмм IP, первоначально
предназначавшиеся для нового стандарта IPv6. Вскоре эти механизмы были
адаптированы для текущей схемы адресации Интернета IPv4. В спецификациях IPSec
концепции решений разделены на две категории:
О Аутентификация.
О Шифрование.
Аутентификация обеспечивается элементом АН (Authentication Header), а
шифрование — элементом ESP (Encapsulating Security Payload). Каждая из этих
возможностей представлена заголовком, присоединяемым к пакету IP (рис. 18.23).
Стандарты шифрования
В отличие от других механизмов аутентификации, упоминавшихся до
настоящего момента, IPSec наряду с аутентификацией и шифрованием также
обеспечивает проверку целостности данных. Иначе говоря, IPSec проверяет, не были
ли данные изменены в процессе пересылки.
Для обеспечения совместимости стандарт IPSec использует несколько
криптографических стандартов:
О D-H (алгоритм Даффи—Хеллмана) — для обмена ключами;
О алгоритм шифрования с открытым ключом — для сертификации операций
D-H;
О шифрование DES;
О MD5, SHA и НМАС (Hash-based Message Authentication Code) —
хэширование с ключом;
О цифровые сертификаты.
IPv4 с ESP
Заголовок Заголовок T~D nauUufl Завершитель Аутент.
IP ESP TCP ДаННЫв ESP ESP
|Ч Шифрование Н
|< Аутентификация ►]
IPv6 с ESP
Заголовок Данные Заголовок тгр л Завершитель Аутент.
IP маршрутизации ESP и манные Esp ESp
|< Шифрование w
|Ч Аутентификация Н
IPv4 с АН
Заголовок Заголовок тср Данные
|< Аутентификация ►)
IPv6 с АН
Заголовок Данные Заголовок Спецификации Данные
IP маршрутизации АН адресата iv*r данные
(Ч Аутентификация ►)
Рис. 18.23. Структура заголовков пакета IPSec
Основным достоинством такого подхода является его универсальность. По мере
разработки новые алгоритмы также могут внедряться с стандарт IPSec (рис. 18.24).
Создание ассоциации безопасности
В самом начале обе стороны должны установить ассоциацию безопасности (SA,
Security Association). Хотя для установления защищенных каналов связи
существуют значения по умолчанию, IPSec дает возможность согласовать значения
ключей, используемые алгоритмы и временные характеристики. Для удобства
работы с многочисленными параметрами в IPSec используется концепция домена
интерпретации (DOI, Domain of Interpretation), упрощающая стандартизацию
этих элементов и значительно упрощающая создание SA. SA определяет
следующие атрибуты:
О режим алгоритма аутентификации и ключи, используемые в АН;
О режим алгоритма шифрования и ключи, используемые в ESP;
О параметры криптографической синхронизации;
О протокол, алгоритм и ключ, используемый для аутентификации;
О протокол, алгоритм и ключ, используемый для шифрования;
Протокол Протокол
I AH ESP I
1 ▼ Т1 1 ▼ I
Алгоритмы Алгоритмы
И аутентификации шифрования И
I * М DOI U * 1
J
Управление
ключами
Рис. 18.24. Архитектура IPSec
О частота обмена ключами аутентификации и шифрования;
О алгоритм аутентификации, режим, преобразование и ключи, используемые
ESP;
О срок действия ключа;
О срок действия SA;
О исходный адрес SA.
Аутентификация
АН позволяет выполнить сильную аутентификацию отправителя пакета и
содержащейся в нем информации. Криптографические хэш-функции используются
для вычисления контрольной суммы, а полученная информация вставляется
вместе с другими управляющими данными между заголовком IP и другими
заголовками (см. рис. 18.23).
ESP
АН всего лишь доказывает, что пакет действительно поступил от указанного
отправителя, а его содержимое не изменялось в процессе пересылки, однако
это не мешает злоумышленнику просмотреть содержимое пакетов. Защита
конфиденциальности данных осуществляется ESP. Информация ESP вставляется
между заголовком IP и оставшейся частью пакета, зашифрованной методом,
указанным в индексе SPI (Security Parameter Index). Некоторые режимы ESP
обладают интересными возможностями. Например, одним из режимов является
режим туппелироваиия (рис. 18.25).
IPv4 с ESP туннельного режима
I , Н™„ |заголовок|^ЭДн"Й| тгр Lhh J Завершитель I Аутент.I
заголовок „D заголовок TCP Данные £ео ' D
IP tor |р ь "^
|*< Шифрование ►]
|< Аутентификация ►]
IPv4 с ESP туннельного режима
Новый Новый L Исходный исх°Дныв
заголовок расширенный PQD заголовок
расширен- тср даННЫв завершитель Аутент.
| и» | заголовок | | IP \^ZJ I II I
|< Шифрование >|
|^ Аутентификация м
Рис. 18.25. Туннелирование в IPSec
Туннелирование
В режиме туннелирования весь пакет шифруется, аутентифицируется и
снабжается префиксом адреса промежуточного шлюза (например, брандмауэра). Тем
самым предотвращается раскрытие конечной точки маршрута в случае перехвата
пакета. Поскольку весь пакет вместе с заголовком зашифрован, он выглядит как
данные с другим заголовком IP. Этот заголовок содержит IP-адреса
отправителя и получателя конечных точек туннеля и используется для пересылки пакета
к месту назначения.
Как видите, стандарт IPSec обладает заметными преимуществами перед
стандартными средствами безопасности РРТР и L2TP и широко используется
продуктами построения VPN.
Итоги
Существует много способов удаленного подключения пользователей к
локальной сети. Протоколы SLIP, PPP, РРТР и L2TP обладают разными
возможностями и обеспечивают разную степень защиты.
Протокол РРР предоставляет базовый сервис подключения к серверу, но по
своим возможностям он значительно превосходит более ранний протокол SLIP.
Благодаря средствам управления каналом и поддержке нескольких протоколов
РРР быстро вытеснил SLIP. Возможно, протокол SLIP с его простыми
возможностями подходит для терминальных подключений по выделенным линиям, но
на фоне мощи и универсальности РРР он явно проигрывает.
Протокол РРТР расширяет возможности РРР и позволяет корпорациям более
эффективно использовать Интернет в своих целях. Благодаря поддержке
дополнительных протоколов в РРТР сервис интрасетей становится доступным для
домашних и портативных компьютеров удаленных пользователей. Применение
механизмов удаленной аутентификации (таких, как PAP, CHAP и RADIUS)
обеспечивает дополнительный контроль над использованием сетевых ресурсов.
Протокол L2TP также расширяет список возможностей удаленного доступа.
В L2TP объединены лучшие аспекты многих протоколов и используется
потенциал Интернета. Поддержка сильной модели безопасности IPSec повышает
надежность работы клиентов в удаленном режиме. Внедрение новых возможностей
в сетевую инфраструктуру должно сопровождаться разработкой новых методов,
предотвращающих их неправильное или злонамеренное применение.
Предполагается, что протокол L2TP предоставит такие гарантии, особенно если он будет
использоваться в сочетании с IPv6.
1 О Брандмауэры
Тим Паркер (Tim Parker)
Каждый раз, когда речь заходит о сетях, межсетевых объединениях и
Интернете, рано или поздно упоминаются такие термины, как «брандмауэр», «шлюз»
или «прокси-сервер». Читатель уже знает, что такое шлюз и как он работает, но
брандмауэры и прокси-серверы в книге еще не рассматривались. Хотя
брандмауэры и прокси-серверы не имеют прямого отношения к TCP/IP, они
повсеместно используются в сетях на базе TCP/IP и в Интернете.
А значит, стоит потратить немного времени и разобраться в том, как работают
брандмауэры и прокси-серверы и какие функции они выполняют в сетях TCP/IP.
Настоящая глава (а также глава 21) посвящена вопросам защиты сети,
маскировке и предотвращению порчи данных.
Безопасность сети
Брандмауэры и прокси-серверы, а также механизмы шифрования и
аутентификации, которые будут рассматриваться в следующей главе, призваны
обеспечивать безопасность данных. Но зачем беспокоиться о защите, если вы уверены,
что в ваших сообщениях электронной почти или на шлюзе нет ничего ценного?
Очень просто: если ваш компьютер подключен к Интернету, то и Интернет
подключен к вашему компьютеру. Это означает, что любой пользователь Интернета
теоретически может войти в вашу сеть, если не принять специальных мер. Если
система безопасности на шлюзовом компьютере не настроена, любой
пользователь с подключением к Интернету может использовать TCP/IP, чтобы пройти
через шлюз и получить доступ к любому компьютеру сети. Вероятно, где-нибудь
в сети у вас имеются данные, не предназначенные для посторонних глаз, а
значит, необходимо позаботиться о блокировке внутреннего доступа к сети для
пользователей Интернета.
Настраивая систему безопасности для сети, вы в действительности
стремитесь защитить данные, хранящиеся в сети, и оборудование, подключенное к ней.
Если хакер сможет пользоваться вашим оборудованием, он может испортить
его. То же самое относится к данным. Ведь вы не хотите, чтобы ваша конфиден-
циальная информация распространялась по всему Интернету с сообщениями
электронной почты, не правда ли? Наконец, система безопасности также косвенно
защищает репутацию — вашу личную или репутацию вашей компании. Если
вся служебная документация крупной компании (такой, как IBM или Hewlett-
Packard) станет доступна для всех желающих, вряд ли это пойдет ей на пользу.
Самый распространенный тип проблем безопасности уже упоминался выше —
доступ к сети через Интернет. Подобные несанкционированные вторжения и
являются основной причиной для принятия мер безопасности. Злоумышленники
или хакеры могут войти в сеть, найти любые данные, внести в них любые
изменения и даже вызвать физические повреждения системы. Злоумышленник
может проникнуть в сеть разными способами, от использования известных
дефектов в системе безопасности операционной системы и приложений, до прямого
шпионажа. Главной задачей системы безопасности, а еще точнее — брандмауэров,
является предотвращение несанкционированного доступа.
Другая категория проблем из области безопасности называется отказом от
обслуживания, или DoS (Denial of Service). Такая ситуация возникает в том
случае, если вмешательство хакера не позволяет вам нормально использовать ваши
собственные компьютеры. Существует много форм отказа от обслуживания.
Типичный пример, часто встречающийся в Интернете, — затопление службы
(электронной почты, сайта FTP или web-сервера). Иначе говоря, служба начинает
получать так много данных, что не может с ними справиться и либо аварийно
завершает свою работу, либо тратит время на обработку фиктивных данных и
отказывает в обслуживании нормальным пользователям. Хакеры часто применяют
эту методику к электронной почте, когда ежечасно па почтовый сервер адресата
отправляются многие тысячи сообщений. Сервер не справляется с поступающими
сообщениями, и служба электронной почты парализуется. Аналогичный прием
может использоваться с большинством служб TCP/IP, включая FTP, Telnet
и Web. Другой аспект отказа от обслуживания связан с повторной
маршрутизацией — вместо обращения к нужной службе на одном компьютере ваш запрос
перенаправляется на другой сайт. В частности, это может произойти при
вмешательстве в работу серверов DNS, в результате которого действительные имена
DNS ассоциируются с неправильными (или недействительными) IP-адресами.
Существует несколько способов защитить сеть, ее данные и службы. Многие
администраторы полагаются на анонимность и нераспространение информации.
Предполагается, что если никто не знает о вашей сети и ее содержимом, то сеть
надежно защищена. Разумеется, подобная «безопасность» ни от чего не защищает,
потому что многочисленные способы получения информации в Интернете не
позволяют прятаться слишком долго. Наивно полагать, что хакеры не
заинтересуются вашим сайтом, потому что там нет ничего особенно интересного. Для
большинства хакеров вполне достаточно самого процесса получения доступа к данным.
Самая распространенная форма безопасности — хостовая безопасность —
основана на защите каждого компьютера в сети по отдельности. В частности,
хостовая безопасность используется при настройке прав доступа в системе
Windows и при настройке разрешений файловой системы в Unix. Хотя хостовая
безопасность может защитить отдельные компьютеры, было бы неправильно
полагать, что сеть, состоящая из защищенных компьютеров, автоматически стаио-
вится защищенной. Нужно лишь найти одну «брешь», и вся сеть станет открытой
для хакеров. Кроме того, поскольку уровень защиты на разных компьютерах
может различаться, использование средств плохо защищенного компьютера
позволит без проблем получить доступ к хорошо защищенному компьютеру.
Функции брандмауэров
Большинству из нас следует ориентироваться на уровень сетевой безопасности.
Под этим термином подразумевается защита всех точек доступа к сети с
применением хостовой безопасности внутри нее. Ключевым компонентом сетевой
безопасности является брандмауэр (firewall) — компьютер, который обеспечивает
взаимодействие сети и Интернетом, уделяя основное внимание безопасности.
Брандмауэр выполняет несколько функций:
О Сокращение количества точек доступа к сети до минимума.
О Предотвращение несанкционированного доступа к сети.
О Принудительная отправка трафика в Интернет через защищенные точки.
О Предотвращение атак типа отказа от обслуживания.
О Ограничение возможных действий в сети со стороны пользователей
Интернета.
Брандмауэры не ограничиваются подключениями сети к Интернету, они также
используются на серверах удаленного (модемного) доступа и при объединении
сетей. Принцип работы брандмауэра заключается в направлении всего
входящего и исходящего трафика по каналу, настройка которого обеспечивает контроль
за службами и доступом.
Использование брандмауэров
Многие полагают, что брандмауэр представляет собой отдельный компьютер,
и в некоторых сетях это действительно так. Существуют готовые конфигурации,
которые не делают ничего, кроме выполнения шлюзовых функций в системе
безопасности. Кроме того, администратор сети может создать отдельный хост,
на котором будет работать только программное обеспечение брандмауэра. Тем
не менее термин брандмауэр в большей степени относится к выполняемым
функциям, нежели к физическому устройству. Брандмауэр может состоять из
нескольких компьютеров, совместная работа которых обеспечивает управление
взаимодействием сети с Интернетом. Для выполнения этих функций существует
множество различных программ. Однако возможности брандмауэров отнюдь не
ограничиваются простым отслеживанием обращений к сети.
Брандмауэры не обеспечивают стопроцентной гарантии. Довольно часто в них
обнаруживаются дефекты, которые могут использоваться хакерами. Вдобавок
брандмауэры весьма дороги, а на их установку и настройку уходит немало
времени. И все же преимущества, получаемые большинством сетей от применения
брандмауэров, значительно превышают проблемы.
Брандмауэры способны на многое. Они обеспечивают единую точку для
реализации всех мер безопасности в сети, благодаря чему изменения вносятся в одном
месте, а не на каждом компьютере в сети (например, можно запретить
анонимный доступ FTP). Брандмауэры обеспечивают соблюдение политики
безопасности на уровне сети — например, запретить доступ к службам Интернета для
всех, кто находится внутри сети. Впрочем, брандмауэры не всесильны, и вы
должны понимать, чего они сделать не смогут. Брандмауэр никак не помешает
пользователю, находящемуся внутри сети, сделать что-либо с другим
компьютером сети. Брандмауэр не защитит сеть от вторжения с другого подключения —
например, если компьютер с системой Windows подключится к Интернету по
модему через поставщика (если пересылка данных не проходит через
брандмауэр, вся безопасность, предоставляемая брандмауэром, будет фактически
обойдена). Наконец, брандмауэр не спасает от многих напастей, распространяемых
через Интернет, таких как вирусы и троянские программы.
Существует два варианта реализации брандмауэра в сети:
О самостоятельное построение на основе базовых сетевых служб;
О приобретение коммерческого продукта.
Второй вариант проще, но он обходится достаточно дорого. Например,
типичный пакет программного обеспечения брандмауэра для Unix в небольшой сети
стоит от $10 000 и выше. С увеличением размеров сети стоимость программного
обеспечения брандмауэра может возрасти более чем в 10 раз! Преимущества
коммерческих пакетов просты: большая часть работы уже выполнена за вас.
Остается лишь воспользоваться меню для выбора служб, доступ к которым
нужно разрешить или запретить, а пакет сделает все остальное. При
самостоятельном построении брандмауэра для решения тех же задач приходится
настраивать компьютер, находящийся между сетью и Интернетом. Разрешение или запрет
доступа требует ручной настройки каждой службы. Например, на компьютерах
с системой Unix для блокировки некоторых типов запросов приходится
редактировать файлы конфигурации сети и такие файлы, как /etc/services.
Самостоятельное построение брандмауэра занимает много времени, требует опыта и
долгих экспериментов. С другой стороны, вам не придется тратить много денег на
покупку коммерческого пакета.
При установке брандмауэра вам будет предоставлена возможность настроить
несколько аспектов защиты. Захотите ли вы реализовывать их все — решайте
сами. Однако при этом необходимо знать, что означают некоторые понятия, в том
числе «прокси-сервер» и «пакетный фильтр». Ниже смысл этих терминов
объясняется более подробно.
Прокси-серверы
Прокси-сервер находится между сетью и Интернетом, принимает запросы к
службам, анализирует их и, если сочтет запрос допустимым, — передает для
дальнейшей обработки. Фактически прокси-сервер предоставляет промежуточную точку,
через которую должно производиться подключение к службе. Например, если
вы находитесь внутри сети и хотите воспользоваться службой Telnet для
подключения к интернет-хосту, прокси-сервер примет запрос, решит, стоит ли
разрешить такое подключение, и затем создаст сеанс Telnet между собой и сервером
Telnet. Прокси-сервер находится между пользователем и сервером Telnet,
скрывает часть информации от пользователя, а все взаимодействие со службой
осуществляется через него. Прокси-серверы работают со службами и
приложениями, поэтому их часто называют «шлюзами уровня приложения».
Для чего нужны прокси-серверы? Представьте, что вы работаете над
секретным проектом и хотите скрыть от Интернета всю информацию, относящуюся к
вашей сети, — IP-адреса, учетные данные пользователей и т. д. При создании
сеанса Telnet с удаленным хостом по Интернету ваш IP-адрес будет передан в
пакетах. По адресу хакер может определить размер сети, особенно если мимо него
проходят пакеты с разными IP-адресами. Прокси-сервер заменяет ваш IP-адрес
своим собственным и использует внутреннюю таблицу для распределения
входящего и исходящего трафика между нужными сторонами. За пределами сети
виден только один IP-адрес, принадлежащий прокси-серверу. Иначе говоря,
из-за специфики своей работы прокси-сервер также выполняет функции
преобразования сетевых адресов (NAT).
Прокси-серверы всегда реализуются на программном уровне. Они не обязаны
быть частью программного обеспечения брандмауэра, но обычно выбирается
именно этот вариант. Многие коммерческие брандмауэры также обладают
функциями прокси-сервера. С другой стороны, многие программные прокси-серверы
не ограничиваются выполнением посреднических функций; они также
контролируют состав используемых приложений и блокируют некоторые
входящие/исходящие данные.
Если вы предпочитаете строить брандмауэр самостоятельно, существует ряд
пакетов, упрощающих эту задачу. Наибольшее распространение получил пакет
SOCKS. Другой популярный пакет, TIS FWTK (Trusted Information Systems
Internet Firewall Toolkit), содержит готовые прокси-серверы, написанные для
многих приложений TCP/IP, в том числе FTP и Telnet.
Пакетные фильтры
Система фильтрации пакетов (пакетный фильтр) обеспечивает избирательное
прохождение пакетов из сети в Интернет, и наоборот. Иначе говоря, он
отфильтровывает некоторые пакеты, предотвращая их дальнейшее прохождение, и
беспрепятственно пропускает другие. Пакеты различаются по типу приложения,
которым они были сгенерированы. Соответствующая информация берется из
заголовков. Как было показано в предыдущих главах, заголовок пакета TCP/IP
содержит IP-адреса отправителя и получателя, номера портов отправителя и
получателя (также используемые для идентификации приложения), тип
протокола (TCP, UDP или ICMP) и прочие данные. Например, если вы решили
полностью заблокировать весь входящий и исходящий трафик FTP в своей сети,
пакетный фильтр обнаруживает все пакеты с номерами портов 20 и 21 и не
пропускает их. Фильтрация пакетов может выполняться программным
обеспечением брандмауэра или маршрутизатора. Во втором варианте маршрутизатор
называется экранирующим.
Экранирующий маршрутизатор отличается от обычного только способом
обработки пакетов. Обычный маршрутизатор просто анализирует IP-адреса и
пересылает пакеты по правильному маршруту к получателю. Экранирующий мар-
шрутизатор анализирует заголовок и не только строит маршрут к получателю,
но и на основании заданного набора правил решает, нужно ли пересылать
данный пакет. Иначе говоря, экранирующий маршрутизатор не ограничивается
выполнением функций уровня 3.
Напрашивается мысль, что система фильтрации пакетов обходится
изменением номера порта, и до некоторой степени это действительно возможно. Тем
не менее, поскольку пакетный фильтр работает в вашей сети, он также может
вычислить, какому интерфейсу будет передан пакет и откуда он поступил.
Следовательно, даже при изменении номеров портов TCP пакетным фильтрам
иногда удается правильно блокировать трафик.
Существует несколько вариантов использования пакетных фильтров. В самом
распространенном варианте фильтр используется для простой блокировки
отдельных служб (например, FTP или Telnet). Также можно указать отдельные
компьютеры, для которых следует запретить или разрешить трафик. Например, если
некоторая сеть создает слишком много проблем, можно приказать пакетному
фильтру на основании IP-адреса игнорировать все пакеты, поступающие из этой
сети. В особых случаях фильтр может блокировать все службы или
ограничиваться минимальным набором служб (например, пересылкой электронной почты).
Защита служб
Одним из ключевых аспектов настройки брандмауэра является принятие
решений о том, какие службы следует пропускать через интерфейс сети с
Интернетом, а какие следует запретить. Хотите ли вы разрешить подключения из сети
к внешним компьютерам через FTP? А как насчет запросов web-страниц?
В этом разделе приведены очень краткие описания основных служб,
используемых через брандмауэр, и присущих им проблем безопасности.
Администратор разрешает или запрещает отдельные службы, руководствуясь требованиями
безопасности своей сети.
Многие брандмауэры по умолчанию разрешают прохождение шести служб:
О электронная почта (SMTP);
О HTTP (доступ к World Wide Web);
О FTP;
О Telnet (удаленный доступ);
О Usenet (NNTP);
О DNS (разрешение имен хостов).
Как будет показано ниже, эти шесть служб не лишены проблем, связанных
с безопасностью.
Электронная почта (SMTP)
Электронная почта используется чаще всех остальных служб Интернета, поэтому
прохождение ее через брандмауэр ограничивается крайне редко. У почтовых
программ, широко распространенных в Интернете (например, sendmail), были
свои проблемы с безопасностью, но этим проблемам уделялось пристальное
внимание, и они были решены. Современные почтовые программы хорошо
защищены от хакеров, однако передаваемые сообщения могут содержать вирусы.
Большинство систем электронной почты использует протокол SMTP (Simple
Mail Transfer Protocol). При обработке почты сервер SMTP часто использует
привилегии суперпользователя или учетной записи, которой адресовано
сообщение. Умный хакер может воспользоваться сменой привилегий. Самый
распространенный сервер SMTP sendmail работает в системе Unix. Чтобы хакеры не
могли пользоваться дефектами sendmail, необходимо установить все последние
обновления этой программы.
Другая проблема заключается в том, что протокол SMTP не поддерживает
аутентификации заголовков сообщения, что позволяет хакерам и программам
массовой рассылки фальсифицировать заголовки. Программа sendmail должна
быть настроена на проверку действительности адресов электронной почты и имен
DNS, используемых в заголовках сообщений. Последние обновления sendmail
находятся по адресу http://www.sendmail.org.
ПРИМЕЧАНИЕ
В последнее время объектами атаки все чаще становятся почтовые клиенты Microsoft (такие, как
Outlook и Outlook Express). Вредоносное действие большинства атак основано на простоте доступа
к Outlook из сценарных языков (в частности, VBScript). Как правило, злоумышленник обманным
путем заставляет почтового клиента выполнить некоторый сценарий. Сценарий читает адресную
книгу и рассылает себя всем лицам, перечисленным в книге.
HTTP: World Wide Web
В наши дни практически любая сеть имеет выход в Интернет. Весьма вероятно,
что вам не потребуется ограничивать доступ из внутренней сети через
брандмауэр. Разрешение доступа в Web с компьютеров сети не создает особой угрозы
для безопасности, если не считать загрузки вредоносных апплетов Java, но эта
проблема решается при помощи программ обнаружения вирусов на
компьютерах-получателях.
Другая, более серьезная проблема — обращения пользователей Интернета
к web-серверам внутренней сети. При этом создаются серьезные проблемы
безопасности. Одно из лучших решений этой проблемы заключается в вынесении
хостов, предоставляющих сервис Web, за брандмауэр. Большинство современных
web-серверов достаточно безопасны, хотя известны некоторые дефекты,
которые могут использоваться хакерами. Например, Internet Information Server (IIS)
фирмы Microsoft известен своими многочисленными дефектами безопасности,
для исправления которых приходилось устанавливать специальные
обновления. Также обязательно проследите за тем, чтобы все расширения,
загружаемые на сервер для CGI (Common Gateway Interface) и других подобных вещей,
тщательно защищались посредством назначения соответствующих прав доступа.
FTP
Протокол FTP (File Transfer Protocol) широко используется в Интернете. Тем
не менее возможность пересылки любого файла из Интернета в сеть означает,
что входящие файлы могут содержать вредоносный код (например, вирусы
и троянские программы), передающий информацию о сети хакеру. Служба FTP
сама по себе достаточно хорошо защищена, но и в ней существуют хорошо
известные дефекты безопасности, которые должны исправляться системными
администраторами в зависимости от версии FTP.
Впрочем, еще более серьезная проблема — анонимный доступ FTP, при котором
любой желающий может войти на сервер FTP с гостевого входа. Привилегии
доступа на анонимный сервер FTP должны тщательно контролироваться; в противном
случае квалифицированный хакер легко сможет использовать сервер в своих целях.
ПРИМЕЧАНИЕ
В системах семейства Unix, включая Linux, по умолчанию создается анонимная учетная запись
«ftp» с домашним каталогом /home/ftp. Системный вызов chroot ограничивает анонимный доступ
этим домашним каталогом и не позволяет анонимным пользователям выходить за его пределы.
В качестве меры безопасности следует запретить системным администраторам использовать свои
стандартные учетные записи при регистрации на сервере FTP. Дело в том, что FTP передает
информацию о пароле пользователя в виде обычного текста, который может быть перехвачен
программами-шпионами. Чтобы привилегированные пользователи не могли использовать для входа
данные своих учетных записей, включите их имена в файл /etc/ftpusers. Также следует подумать
об использовании ssh (Secure Shell) для сеансов telnet и ftp. Ssh создает между клиентом и
службой виртуальную частную сеть (VPN). В системах Unix при этом должен работать демон shhd
(Secure Shell Daemon). Бесплатные реализации ssh можно найти на web-сайте www.ssh.com.
Наконец, не разрешайте использовать протокол TFTP (Trivial FTP) через
интерфейс сети с Интернетом. Лишь немногие приложения используют TFTP,
и они обычно не выходят за пределы сети. Дело в том, что TFTP не требует
никакой аутентификации пользователя. Также проследите за тем, чтобы доступ
TFTP ограничивался определенной областью. В семействе Unix TFTP но
умолчанию ограничивается каталогом /tftpboot.
ПРИМЕЧАНИЕ
В системах Unix использование протокола TFTP можно запретить. Для этого следует
закомментировать записи службы TFTP в файлах /etc/inetd.conf или /etc/xinetd.conf и перезапустить демона
inetd или xinetd.
Telnet
Популярная служба Telnet дает возможность пользователю подключиться к
удаленному компьютеру и работать так, словно он подключен напрямую. У Telnet
есть очень существенный недостаток: вся информация передается в
незашифрованном виде. Если Telnet передает имя и пароль для входа в систему, эти
данные пересылаются в виде обычного текста; хакер может перехватить эту
информацию и воспользоваться ей. С этой проблемой можно бороться при помощи
протоколов аутентификации, но на практике Telnet все равно используется
достаточно часто.
Вместо Telnet нередко применяются берклиевские утилиты (rlogin, rsh, exec
и т. д.). В основу их работы заложена концепция доверенного хоста,
неприменимая к Интернету. Берклиевские средства удаленного доступа крайне ненадежны
и легко подвержены атакам хакеров, поэтому их трафик не должен пропускаться
через брандмауэр.
ПРИМЕЧАНИЕ
Вместо Telnet также можно воспользоваться утилитой ssh, позволяющей создавать шифрованные
сеансы между клиентами и серверами.
Usenet: NNTP
Протокол NNTP (Network News Transfer Protocol) является самым
распространенным механизмом отправки и приема материалов Usenet. Если вы собираетесь
принимать новости в свою сеть, использование NNTP потребует тщательного
планирования в сфере безопасности. Протокол NNTP легко может
использоваться хакерами для получения доступа к внутренней сети. К счастью, защитить
NNTP относительно легко, поскольку в каждом сеансе коммуникации между
хостами NNTP почти всегда остаются одинаковыми.
Более важная проблема для пользователей Usenet, особенно в крупных
организациях, — предотвращение отправки материалов внутренних (закрытых)
конференций в Интернет. Возможно, также стоит ограничить состав принимаемых
конференций. Протокол NNTP можно настроить так, чтобы разрешить или
запретить прием практически любых конференций.
DNS
DNS является неотъемлемым компонентом больших сетей и использует
Интернет-хосты для разрешения имен. Проблемы безопасности возникают не столько
из-за самой службы DNS, сколько из-за протоколов, на основе которых она
работает. Установка специальных средств аутентификации помогает убедиться
в подлинности запросов и отсутствии перенаправлений. Впрочем, в целом служба
DNS достаточно хорошо защищена.
Построение собственного брандмауэра
Как уже было сказано, брандмауэр можно построить самостоятельно, хотя для
этого потребуется очень хорошее знание операционной системы и TCP/IP.
Установить качественный брандмауэр в Windows 95 и 98 практически невозможно, что
связано с архитектурой этих операционных систем. В Unix и Windows NT/2000
дело обстоит лучше, хотя настроить брандмауэр в Windows NT/2000 сложнее,
чем в Unix.
Описание процедуры настройки брандмауэра в Windows NT/2000 и Unix
выходит далеко за рамки этой книги. Существует несколько книг, посвященных
только этой теме (для разных операционных систем). В основном настройка
брандмауэра включает блокировку всех служб, которые не должны проходить
в сеть, и настройку брандмауэра для предотвращения доступа к нему со
стороны хакеров. Самостоятельное построение брандмауэра занимает много
времени, даже если вы точно знаете, что нужно сделать.
ПРИМЕЧАНИЕ
Информацию о самостоятельной настройке брандмауэров можно найти на следующих сайтах:
http://www.linux-mag.com/1999-08/guru_01.htm
http://www.linuxgazette.eom/issue26/kunz.html#fire
http://www.hotwired.lycos.com/webmonkey/01/31/index2a_page4.html
http://tech.irt.org/articles/jsl49/
http://www.practicailynetworked.com/serving/firewall_config.htm
http://www.linuxworld.com. au/article.php3?tid=8&aid=160
http://www.isaac.cs.bereley.edu/simple-firewall.html
http://www.ncmag.com/2001_05/ifolder51/settingup.html
Использование коммерческих брандмауэров
На рынке представлено много программных пакетов для установки
брандмауэров, причем все они обычно довольно дороги. Примером коммерческого
брандмауэра может послужить программа Cyberguard от Cyberguard Corporation.
Также стоит упомянуть брандмауэры BorderManager от Novell, Checkpoint от Check
Point Software Trchnologies и Eagle от Raptor Systems. Названия других
коммерческих продуктов можно найти на сайте http://www.thegild.com/firewall/.
Программа Cyberguard существует для платформ Windows NT/2000 и Unix.
Первоначальный вариант был написан для системы Unix, и лишь недавно
программа была адаптирована для Windows NT/2000. Популярность Cyberguard
связана с тем, что это один из самых надежных брандмауэров, который к тому
же чрезвычайно прост в установке, настройке и сопровождении.
ПРИМЕЧАНИЕ
Информацию о Cyberguard можно найти на web-сайте компании http://www.cyberguard.com. Здесь
имеется описание пакета, а также ряд официальных документов. За дополнительной
информацией о брандмауэрах и проблемах безопасности, связанных с их использованием, обращайтесь на
сайт CERT (Computer Emergency Response Team) по адресу http://www.cert.org.
Cyberguard особенно легко устанавливается и настраивается на серверах
Windows NT/2000; для простых сетевых конфигураций эта процедура занимает
не более 15 минут. Программа предназначена для работы на хостах с двумя
подключениями, к внутренней сети и к Интернету (напрямую или через
поставщика услуг Интернета). При установке пакета Cyberguard предлагает выбрать
одну из трех стандартных конфигураций безопасности (рис. 19.1).
Выбрав один из стандартных вариантов, вы можете проверить все параметры,
зависящие от этого выбора. Для этого следует просмотреть последовательно
отображаемые окна и проверить варианты. На рис. 19.2 изображено окно,
которое показывает, как выбранный вариант влияет на учетные записи и пароли
Windows NT/2000.
Далее Cyberguard перезагружает сервер Windows NT/2000, и с этого момента
начинает действовать защита. Администратор может изменить настройку любого
аспекта брандмауэра. На рис. 19.3 изображено окно фильтрации пакетов; с его
помощью администратор выбирает, какие пакеты пропускаются брандмауэром,
а какие должны быть отвергнуты. Как видно из иллюстраций, Cyberguard
использует диалоговые окна Windows для упрощения сложного процесса настройки.
Select a Preset !
\ Choose a Security Preset thai matches your site's security . ;
j policy and your system's requirements.
You may select an Environment Preset that matches your needs, S elect4 View D etaite4' io
examine the specftc security settings sand make fnocSficatiom to the preset S elect' "Skip
to Finish" to proceed to the finish page where you may eppJy your selection.
• Security Pieset* ~- —-^.—-„^..,...- _..„ t
Example Utage: • j I
Г* High Security Dedicatecl Fireweb j
: Г Medium Security ftewals that are Domain Gontiolet* " Sky to Trash j
P* Standard Security Firewal* that are database server? 1
<Iack ]#**'Petals >j ";:': CanceJ |
Рис. 19.1. Три стандартные конфигурации Cyberguard поддерживают большинство
вариантов настройки брандмауэров в Windows NT/2000
'■■ Accounts and Passwords . ;. I
\.\ Select Measures that control user accounts and user ;
4 passwords pi
J,, n.jiM.uin^r^MMnn.ilMm?!^?^.^^!? nmfn V-i м--- ц ■ -- ■ ■ j
IP: rJD Disable Guest account _ :
Enable Strong Password Filtering
Г: F [S Tighten User Rights i
: P m Disallow blank passwords
Description: ТЫ* security measure disables'theguest account.
. <fi«* :.| jjjext> | Caned |
Рис. 19.2. Выбор конфигурации Cyberguard определяет настройку отдельных
параметров, отображаемых в диалоговых окнах
MS System 2 Cpnliguietian Ш Exports $ Iacls Oifi^ndow ? Help j
||^ ••■--—■ И
HI JO deny AU EVERYONE EVERYONE Ш^# Jl
гт^ ■ ■ ■ i ■ ***** j—■,:,,,!:';;:'; ■;■ d .в r-<.- ,,^-/ |.
h «$► г ?ъщ , ;;,;••--у,-,;—;— «„. p ■.-,,>,, .,..<.., I
;* rpt0sy \ . —-- . и г*^.^.-*. jJ
MA Г Den* ' РайкеЮейллюп J ll Ml
HI ; ; _.••• • >>• г^-<.:,*■■->■ ~.:**.с \ .
[I 1 -. : 1 ' ■•^.:ift:1--: • • " r:-..,;:-...-^;:.^W.r^ .Ц
|госКе^р|«$п =:...:H.; ■..■■.■■..jrZJS^l".: -1
Рис. 19.3. Диалоговое окно для определения критериев фильтрации входящих и исходящих пакетов
Функциональность прокси-сервера настраивается так же просто. На рис. 19.4
изображено диалоговое окно настройки прокси-сервера в программе Cyberguard.
Выбор протоколов сводится к простому выделению строк в списке. На рисунке
настраивается прокси-сервер FTP.
^System J Configuration В ВерогЦ $ Ipole OYtfndow ? fcleip \
\ '■■ Tr* ED -1ч ;S' П Sft V <"* Hotiefwi/Oomen Relcom j 0 ;j
jl «~ Inbound-.~; }'Outbound —< -~Ш
11 [ Sm-ytPtoweg | a ,.,,~ i ll.. ■'■,ui'i.i,ililp?i^ft^rP^ i I TofiteweB ] T^oughFrewaS JToFyewaS | Thtoyffij ||
rlftp L^*Jj^ks£'.2*«=5L. _....1.„.05LJ. r~; Г.. 1 JTL , И IL-Ilt II
j HTTP~ Hypertext Truster Protocol ® S *" ~P "' """"' Г '*"G ~ *" P '~'~ ~ P jl]
LDE LoadEquafcei ® V Г Г Ш Г Р, j
||.IWNTP N«KwrkN*mTr*n<™rr Prnrnr.nl (Ь \'l: P Г P P Г ]|j
||] HideOptions I .П? Updatepdck^Hftenngidfts •'•:;' j|j
: Serup jusers |'M««ag«i CVPSe^up] :;.. ":'•. j|J
11 j 17 Atewinbound atrtherticatedFTP Server.) |||
jjl P Afiowinbe*jr*iartor>ymou«FTP Serve» j^ " V:..::"- •'. . . 11;
HI inactiveSessionTimeout(iecGnds} |ЗСЮ |i
ll] p Authent«4tehbound II
||M -;f J ^1
LfaHelpipressFl _ ^.'^Cl.. - ...... I'.^^l'Z'^M
Рис. 19.4. Простое и удобное окно настройки прокси-серверов в Cyberguard
Cyberguard также превосходно справляется с таким аспектом настройки
брандмауэра, как использование DNS. Как видно из рис. 19.5, программа позволяет
легко настроить параметры DNS и даже определить зоны в сети.
Hi System S Configuration Ш Вэро-rtsj; 3 Tools C3 Window 7 Help i
Mi -*►' £3 Зк Ф '■ PS IR ? M « ■;''^fe*i*w '.'Otwire'lpdcMB • jj j r.T 0 ' • *• . • •j
Setup Severs | Zone» | Hwts | ,11
j j [Server 1 bye 1 Interface* :- ■■ 1 Privileged Addresses I Towardc?? I ||
II! HI
II •••• 111
•: i ..,...._......... • i
^fr**0* 1 ''flw< 1 &№**»^\ШлШ\ Сору 1 Fo*eJ Delete j jjj J^j • |
Swver | "'' " Y jtj
ill TVP« Г Irtemal """^t Г external Ш
InMaces . • p205T5O837 • • I ]3
I
Privileged Addiesmj 4|1
\\\<\ : . •, ••■,;,•■•• \; ,• ,,':-r- • : - •••; . J 2O
|faH<jp.pt»ttn ^ _ J.::-j£iiz ..,..,..,......■..,.., ,..,... А~''Щ*Г''''"'...А
Рис. 19.5. Настройка DNS через графический интерфейс Cyberguard
Существует много других коммерческих пакетов, выполняющих функции
брандмауэров. Многие журналы, посвященные сетевым технологиям, регулярно
проводят сравнительное тестирование. Если вы решили приобрести
коммерческий брандмауэр, начните со сбора информации, потому что качество и цена
коммерческих реализаций очень сильно различаются.
Итоги
В этой главе объясняется, что такое брандмауэр, как он работает и какие
основные функции им выполняются. Также вы узнали, как работают прокси-серверы
и пакетные фильтры. Тема безопасности IP продолжена в следующей главе,
где мы рассмотрим некоторые сопутствующие темы, в том числе криптографию
и аутентификацию.
Т1'Л Сетевая и системная
Шш\3 безопасность
Тим Паркер (Tim Parker)
В предыдущей главе рассматривались принципы работы брандмауэров, прокси-
серверов и пакетных фильтров. Брандмауэр играет важную роль в обеспечении
сетевой безопасности, предотвращая вторжения извне и несанкционированный
доступ к конфиденциальным данным. Тем не менее предотвращение доступа
нарушителей к сети является лишь одним из факторов безопасности. Необходимо
позаботиться о решении других проблем — например, убедиться в том, что
пересылаемые по Интернету данные не могут быть прочитаны посторонними; что
лицо, которому вы посылаете почту (или от которого ее принимаете), является
именно тем, за кого себя выдает; наконец, реализовать дополнительные меры
безопасности в сети на тот случай, если злоумышленнику все же удастся
проникнуть через брандмауэр.
Определить нужный уровень безопасности в объективных показателях
нелегко. Хотя большинство операционных систем предоставляет базовую защиту
файлов и каталогов, вам могут понадобиться механизмы шифрования или
другие методы предотвращения постороннего доступа. Не существует единой
системы оценок уровней безопасности, хотя Министерство обороны США
попыталось назначать разные уровни безопасности своим компьютерам (работающим
в основном под управлением Unix или специализированных операционных
систем). Ниже эти уровни перечисляются в порядке возрастания безопасности:
О D: отсутствие мер безопасности или защиты данных.
О С1: пользователи идентифицируются по данным, указанным при входе в
систему; возможен контроль доступа к файлам и каталогам.
О С2: уровень С1 в сочетании со средствами аудита (регистрация системной
активности) и назначением административных привилегий.
О В1: уровень С2 в сочетании со средствами управления доступом, которые не
могут переопределяться пользователями.
О В2: уровень В1 в сочетании с безопасностью всех устройств, поддержкой
доверенных хостов и управлением доступом на уровне приложений
О ВЗ: уровень В2 в сочетании с возможностью группировки системных
объектов с управлением доступом на уровне этих групп.
О А1: уровень ВЗ в сочетании с проверенной и заведомо надежной системной
архитектурой аппаратного и программного обеспечения.
Уровень безопасности А1 обычно считается недостижимым. В настоящее
время не существует ни одной операционной системы, которая бы его
обеспечивала (по крайней мере, открытая информация на этот счет отсутствует).
Большинство разновидностей Unix и Windows NT может обеспечивать безопасность
уровня С2, некоторые операционные системы были сертифицированы на
соответствие уровню В1, но более высокие уровни ограничения, накладываемые
требованиями безопасности, слишком сильно отражаются на работе системы.
Но что же делать с существующими системами на базе Windows, Macintosh
и Linux, подключенными к локальной сети? Вы должны предпринять ряд
действий по защите этих систем, а также работающих на них приложений от
вторжения извне. Если подключение к Интернету производится через TCP/IP,
необходимо знать о проблемах безопасности, связанных с этим протоколом и его
практическими применениями.
Мы начнем эту главу со знакомства с шифрованием — одного из
механизмов, обеспечивающих защиту данных даже в случае их перехвата. Далее будут
рассмотрены вопросы безопасности сети и приложений TCP/IP.
Шифрование
В наши дни трудно найти правительственные организации или коммерческие
предприятия, которые бы не заботились о безопасности своих данных —
особенно при виде ежедневно появляющихся сообщений о проникновении хакеров
в корпоративные сети, промышленном шпионаже и саботаже со стороны
бывших работников. Многие работники работают в корпоративных сетях в режиме
удаленного доступа, подключаясь из дома, гостиниц или прямо в пути по
средствам сотовой связи. В таких условиях очень важно обеспечить высокий
уровень защиты данных. Также следует подумать о защите данных, передаваемых
по Интернету и телефонным линиям, чтобы в случае перехвата злоумышленник
не смог бы прочитать эти данные. Единственным эффективным и относительно
дешевым способом защиты этих данных является шифрование.
Шифрование данных стало одной из крупных и выгодных отраслей. К
нескольким ведущим компаниям, развивавшим средства шифрования в течение
десятилетий, прибавляются новые фирмы, специализирующиеся на технологиях
шифрования. Всего пару лет назад найти хорошие средства шифрования было нелегко,
потому что спецслужбы пытались предотвратить появление сильных алгоритмов
шифрования (что затруднило бы их собственную работу). До последнего времени
в США считалось незаконным применение любых технологий с более чем
40-разрядным шифрованием — системы шифрования считались оружием. Впрочем,
с распространением бесплатных и условно-бесплатных продуктов шифрования
в Интернете, а также под давлением разработчиков приложений и операционных
систем ограничение было снято, и теперь продукты с 128-разрядным
шифрованием разрешается распространять практически во всех странах (за редкими
исключениями). В отдельных странах разрешены еще более сильные методы
шифрования.
В общих чертах алгоритмы шифрования при помощи ключа преобразуют
данные к виду, который может быть прочитан лишь стороной, обладающей
ключом для расшифровки. Чем длиннее ключ, тем больше времени требуется на
раскрытие шифра. Простое шифрование с применением паролей успешно
работает, потому что пароль должен быть известен обеим сторонам. Если сообщение
было зашифровано с использованием пароля, оно может быть расшифровано
только с тем же паролем.
Если вам нужны простые средства шифрования с применением паролей,
опробуйте программу CodedDrag по адресу http://www.fim.uni-linz.ac.at/codeddrag/
codedrag.htm. Пробная копия CodedDrag бесплатна, а ее регистрация для
неограниченного использования требует лишь небольшого пожертвования в фонд
данного сайта. В программе CodedDrag, разработанной университетом Линца
(Австрия), реализован очень быстрый вариант алгоритма шифрования DES (Data
Encryption Standard). Точнее, CodedDrag предоставляет на выбор пользователя
алгоритмы DES, Triple-DES и BlowFish; два последних алгоритма взломать
гораздо сложнее, чем DES. CodedDrag подключается к рабочему столу
Windows 95/98 и Windows NT и добавляет команды шифрования и расшифровки
в контекстные меню. После однократного ввода пароля файлы шифруются и
расшифровываются так быстро, что процесс остается незаметным для
пользователя. В Windows 2000 файловая система NTFS версии 5 позволяет зашифровать
содержимое любого файла или папки, для чего достаточно соответствующим
образом пометить этот файл или папку. Расшифровать файлы может только
пользователь или агент восстановления (с административными правами). Файлы
автоматически расшифровываются при использовании и шифруются при закрытии.
Шифрование с парными ключами
Схема шифрования с парными ключами пользуется гораздо большей
популярностью среди пользователей Интернета, поскольку она позволяет
расшифровывать сообщения без ввода отдельного пароля для каждого сообщения. Принцип,
по которому работает система шифрования с парными ключами, прост: имеются
два строковых ключа, один из которых (открытый) доступен для всех желающих;
другой ключ (закрытый) известен только вам. Чтобы отправить зашифрованное
сообщение, другой стороне нужен открытый ключ. Программа шифрования
шифрует сообщение с использованием открытого ключа. После того как
сообщение будет получено, оно может быть расшифровано только с закрытым
ключом, поэтому только обладатель закрытого ключа сможет прочитать сообщение.
Открытый ключ не может использоваться для расшифровки сообщений. Для
отправки сообщения другой стороне вам потребуется ее открытый ключ. Чтобы
содействовать распространению подобного способа шифрования, многие
пользователи присоединяют открытые ключи к своей электронной почте.
RSA
Проект RSA Data Security (http://www.rsa.com), основанный в 1977 году тремя
учеными из Массачусетсского технологического института, был одним из пер-
вых коммерческих проектов, обеспечивающих средства шифрования с парными
ключами. Алгоритм RSA продолжает широко использоваться в наши дни; он
требует относительно малых ресурсов, обладает очень высокой надежностью
и прост в использовании. Программное обеспечение RSA существует в разных
формах для разных операционных систем; в простейшем варианте оно
добавляет несколько новых команд меню в программы просмотра типа Проводника
Windows. Если выделить файл и выполнить команду Encrypt, файл
автоматически шифруется после ввода пароля. При расшифровке соответствующая
команда меню отображает окно для ввода пароля, и если введенный пароль
правилен — пользователь получает доступ к восстановленному файлу. Для
упрощения процесса пароли могут сохраняться в системе.
PGP
Одним из самых знаменитых средств шифрования стала система PGP (Pretty
Good Privacy) Фила Циммермана (Phil Zimmermann). За свободное
распространение PGP в Интернете правительство США выдвинуло обвинение против
Циммермана. В конце концов дело было закрыто, но эта история практически
гарантировала широкое распространение PGP, особенно в других странах.
Реализации PGP имеются на многих web-сайтах, и ключи PGP нередко прилагаются
к сообщениям электронной почты.
Шифрование с симметричным закрытым ключом
Базовая форма шифрования называется шифрованием с симметричным
закрытым ключом. При шифровании с симметричным закрытым ключом используется
подстановка, при которой каждая буква заменяется другой буквой: например, все
вхождения а заменяются на х, все вхождения b заменяются на d и т. д. В
простейшем варианте выбирается постоянная величина сдвига, и все замены
осуществляются с соответствующим смещением позиции (а заменяется на d, b — на с,
с — на f и т. д.).
Более гибкие схемы с симметричным ключом обеспечивают случайный
подбор пар, а иногда для расшифровки сообщения необходимо знать пароль.
Шифрование с симметричным ключом легко реализуется и быстро работает. К
сожалению, простые схемы с симметричным ключом также обладают наименьшей
надежностью. Причина проста: при достаточно большом объеме текста по
относительному распределению частот символов можно вычислить соответствие
между буквами. Например, самой распространенной буквой в английском языке
является «е»; если в зашифрованном тексте буква «х» встречается чаще других
символов, можно предположить, что буквы «е» в исходном тексте в процессе
шифрования были заменены на «х». После подбора нескольких пар остальные
пары легко подбираются по фрагментам слов. «Симметричность» означает, что
один и тот же ключ используется как для шифрования, так и для расшифровки.
Для повышения надежности алгоритмов шифрования с симметричным ключом
были разработаны дополнительные схемы, вносящие дополнительный
случайный сдвиг в зависимости от позиции в тексте.
DES, IDEA и другие
Фирма IBM в 1976 году разработала стандарт DES для правительства США.
Алгоритм DES использует 56-разрядный ключ шифрования, что позволяет
использовать 72 057 594 037 927 936 разных ключей. Один и тот же ключ
используется как для шифрования, так и для расшифровки сообщений. DES не является
простой схемой шифрования с симметричным закрытым ключом — подстановка,
то есть соответствие между парами букв, изменяется в зависимости от позиции
символа. Теоретически DES всегда можно взломать. Для этого необходимо
проверить 72 квадриллиона возможных комбинаций, но нашлись люди, которые
справились с этой задачей (и выиграли $10 000 за свою работу) и доказали,
что DES не обеспечивает абсолютной надежности. Дополнительная информация
о раскрытии шифра DES приведена по адресу http://www.cryptography.com/des.
ПРИМЕЧАНИЕ
Для проведения быстрого подбора ключей DES использовался компьютер, построенный Cryptography
Research, Advanced Wireless Technologies и EFF. В проекте DES Key Search было задействовано
специальное оборудование и программы, обеспечивающие перебор около 90 миллиардов ключей
в секунду. В результате после 56 часов работы ключ был успешно подобран.
В ходе работы семинара DIMACS в 1995 году был опубликован документ, в котором описывалось
применение молекулярной электроники для подбора ключа DES примерно за 4 месяца работы.
Кроме того, в документе было показано, что при некоторых условиях и предварительной обработке
текста ключ DES может быть подобран за один день. Этот метод обобщается для взлома любой
криптографической системы, использующей ключи с длиной более 64 бит.
Алгоритм Triple DES CDES) представляет собой модификацию базового
алгоритма с увеличенным ключом, что значительно затрудняет взлом шифра.
Вероятно, самым надежным из всех современных алгоритмов шифрования
является алгоритм IDEA (International Data Encryption Algorithm),
разработанный Швейцарским федеральным технологическим институтом. Для повышения
надежности алгоритм IDEA использует 64-разрядный блок в 128-разрядном
ключе с обратной связью. Уже появилась усовершенствованная версия IDEA,
которая называется Triple IDEA. Полный алгоритм IDEA работает относительно
медленно, поэтому был разработан ряд упрощенных версий, в том числе
популярный вариант Tiny IDEA. Считается, что IDEA превосходит по надежности
как DES E6-разрядный ключ), так и Triple-DES A12-разрядный ключ). Ниже
перечислены некоторые характеристики Tiny IDEA:
О Файлы обрабатываются «на месте» (то есть с замещением оригинала).
О Использование 8-проходного алгоритма IDEA в режиме обратной связи.
О Заполнение вектора инициализации нулями.
О Обратная связь осуществляется 8-байтовыми блоками.
О Ключ IDEA представляет собой пользовательский ключ, дополненный
символом '\г' и нулями.
О Алгоритм оптимизирован по затратам памяти, а не по скорости, но работает
все равно быстро.
За дополнительной информацией о Tiny IDEA обращайтесь по адресу http://
www.cypherspace.org/~adam/rsa/idea.html. Здесь же можно загрузить бесплатную
копию программы.
Алгоритм CAST получил свое название по именам разработчиков — Карлайла
Адамса (Carlisle Adams) и Стаффорда Тавареса (Stafford Tavares). В нем
используется 64-разрядный ключ и 64-разрядный блок. Подробности не столь
существенны, поскольку на их объяснение потребовалась бы отдельная книга. Алгоритм
CAST до настоящего времени еще не был взломан, но как и IDEA, он несколько
замедляет шифрование и расшифровку данных. За дополнительной
информацией о CAST обращайтесь по адресу http://www.cs.wm.edu/~hallyn/des/sbox.html.
Система шифрования Skipjack была разработана Агентством национальной
безопасности США специально для чипа Clipper, который правительство США
планировало установить во всех устройствах связи. До практической
реализации этого плана так и не дошло, но система Skipjack существует. Подробная
информация засекречена; известно, что в Skipjack используется 80-разрядный
ключ с 32-проходной обработкой. В работе Skipjack задействованы два ключа:
закрытый и главный ключ, находящийся в распоряжении правительства.
Теоретически на взлом Skipjack с использованием лучшего современного
оборудования потребуется около 400 миллиардов лет.
В RSA Data Security были разработаны секретные алгоритмы RC2 и RC4.
К сожалению, исходные тексты алгоритмов были опубликованы в Интернете, так
что особого секрета не получилось. Алгоритм RC4 считался достаточно хорошо
защищенным и использовался Netscape в экспортных версиях Navigator. Шифр
был одновременно взломан двумя разными группами, на решение этой задачи
потребовалось около восьми дней.
Какие же из упомянутых алгоритмов шифрования быстрее и надежнее
остальных? С надежностью однозначного фаворита нет; алгоритмы Triple DES,
IDEA и Skipjack достаточно хорошо защищены и взломать их практически
невозможно. Тем не менее дополнительная защита требует значительных затрат
на шифрование и расшифровку. Если предположить, что шифрование или
расшифровка документа с применением DES занимает одну секунду, то Triple DES
на выполнение этой операции потребуется 3 секунды, IDEA — 2,5 секунды,
и Triple IDEA — 4 секунды. На первый взгляд затраты не так уж велики, но при
обработке множества больших файлов задержки, присущие более защищенным
алгоритмам, становятся более заметными. Теоретически Skipjack не уступает DES
по скорости, но кто рискнет доверить ключ к своим секретам правительству?
Из всех систем шифрования с парными ключами в наши дни чаще всего
используется алгоритм RSA, названный по фамилиям разработчиков (Ривест, Ша-
мир и Адельман, если вы вдруг захотите поразить окружающих своей
эрудицией). Его ближайшим конкурентом является алгоритм PGP Фила Циммермана.
RSA и PGP используют очень длинные ключи, нередко их длина равна 100
битам и более. Чем длиннее ключ, тем больше времени требуется на шифрование
и расшифровку и тем труднее вскрыть шифр без ключа. На практике нередко
встречаются 1024-разрядные ключи. На сайте RSA (http://www.rsa.com/rsalabs/)
обсуждается зависимость надежности шифрования от длины ключа. Для взлома
512-разрядных ключей потребуются серьезные вычислительные мощности, но
эта задача вполне реальна. Ключи большей длины G68- или 1024-разрядные)
требуют вычислительных мощностей, недоступных для большинства
злоумышленников. Теоретически любая система, основанная на использовании ключей,
может быть вскрыта простым перебором или при помощи удачной догадки,
основанной на знании зашифрованного текста, но на практике алгоритмы RSA
и PGP достаточно надежны при использовании длинных ключей.
Система Диффи—Хеллмана (Diffie—Hellman) относится к категории
алгоритмов, генерирующих ключи для открытого распространения. Она не шифрует
и не расшифровывает сообщения, а используется исключительно для создания
надежных ключей. Процесс прост, но требует участия обеих взаимодействующих
сторон (отправителя и получателя) для построения ключа с использованием
простых чисел.
Аутентификация с применением
цифровых подписей
Кроме шифрования данных, для обеспечения безопасного обмена информацией
необходимо решить другую важную проблему — проверки подлинности
отправителя (или получателя) сообщения. Для аутентификации отправителей и
получателей используется система так называемых цифровых подписей. Цифровые
подписи основаны на шифровании с парными ключами, при этом открытый
ключ предоставляется любому, кто пожелает проверить подлинность
отправителя, а сообщение шифруется с применением закрытого ключа.
Правительство США разработало и приняло к использованию систему DSS
(Digital Signature Standard), которая, как следует из ее названия, обеспечивает
аутентификацию с использованием цифровых подписей. Впрочем, у системы
DSS имеется один крупный недостаток: если одно и то же случайное число,
используемое при шифровании, будет выбрано дважды и хакер имеет доступ
к обоим сообщениям, он сможет легко получить доступ к ключу. Что еще хуже,
содержимое зашифрованных сообщений иногда достаточно легко
расшифровывается.
Алгоритмы SHA (Secure Hash Algorithm) и SHS (Secure Hash Standard) также
были разработаны правительством США, но они превосходят DSS по надежности,
В SHS используется алгоритм хэширования с 160-разрядным ключом. К
сожалению, SHS относительно медленно работает. Если принять во внимание скорость
работы RSA и PGP, трудно найти доводы в пользу применения SHS.
Другая разновидность цифровых подписей — алгоритмы профилирования
сообщений. Из них в широком обращении находятся три алгоритма (MD2,
MD4 и MD5). Алгоритмы категории MD обрабатывают блок входных данных
и генерируют 128-разрядный цифровой профиль. Теоретически два сообщения
никогда не обладают одинаковыми профилями. Наиболее защищенным из
перечисленных алгоритмов является алгоритм MD5, разработанный RSA с
применением специального алгоритма хэширования. Фирма Microsoft использует MD4
в своих файлах пользователей Windows NT для шифрования паролей.
ПРИМЕЧАНИЕ
Алгоритм MD4 неоднократно вскрывался. В Web легко находятся программы для вскрытия файлов
паролей Windows NT (например, http://js-it-true.org/nt/atips/atips92.shtml и http://www.atstake.com/
research/lc3index.html). Вскрытие паролей в Windows 2000 рассматривается в статье 9186 на сайте
http://www.windowsitsecurity.com/Articles. Квалифицированный администратор может
воспользоваться этими программами для проверки безопасности в сетях Windows. Хакеры уже знают об
этом дефекте, поэтому публикация этих сведений не сделает вашу систему более уязвимой.
Серверы сертификации управляют ключами, выдаваемыми компаниям и
организациям, и обычно легко доступны через Интернет. Существует несколько
коммерческих серверов сертификации для платформ Windows и Unix. Одна из
лучших реализаций принадлежит Netscape. Кроме того, Netscape публикует
список FAQ (http://home.netscape.com/certificate), который объясняет, для чего нужны
серверы сертификации, а также описывает возможности продукта.
Говоря об аутентификации, невозможно не упомянуть о Kerberos. Каждый,
кто когда-либо занимался установкой серверов или сопровождением программного
обеспечения Web, наверняка сталкивался с этим названием. Пакет Kerberos
обеспечивает сетевую безопасность посредством контроля доступа к сетевым
службам на уровне пользователей. Серверы Kerberos работают в сети (обычно
на защищенном компьютере) и иногда называются центрами распределения
ключей (KDC, Key Distribution Centers). Каждый раз, когда пользователь пытается
воспользоваться некоторой сетевой службой, сервер Kerberos проверяет, что
пользователь является именно тем, за кого он себя выдает и что служба работает
на соответствующем хосте. Безопасность системы Kerberos основана на
использовании системы шифрования с закрытым ключом, которая, в свою очередь,
основана на алгоритме DES. Каждому клиенту и каждому серверу в сети выдается
закрытый ключ, который проверяется при любых операциях, находящихся под
управлением Kerberos. Kerberos работает на выделенном сервере и поэтому
обычно используется в больших сетях, а также в сетях, требующих усиленных
мер безопасности.
Раскрытие шифров
Наука (а по мнению некоторых — искусство) взлома криптографических систем
называется криптоанализом. Конечная цель криптоанализа — прочитать
зашифрованное сообщение без знания ключа, который использовался при шифровании.
Некоторые факторы уменьшают объем работы по взлому кодов; самый
распространенный прием основан на знании части сообщения или ключа. Например,
если заранее известно, что в сообщении говорится об акциях компании ABC,
вам будет гораздо проще выдвинуть обоснованные предположения относительно
некоторых слов в зашифрованном сообщении, а это способствует ускорению
расшифровки.
Иногда закрытые ключи случайно или преднамеренно попадают в руки
посторонних. Знание части ключа или его особенностей также ускоряет
расшифровку. Например, если вы знаете, что некоторое лицо часто выбирает в качестве
ключа имена своих детей, которые нетрудно узнать, вы существенно
приблизитесь к раскрытию шифра. Получение ключей обычно не вызывает особых
трудностей, особенно если сообщения пересылаются в Интернете. Существует много
способов перехвата пакетов IP; иногда из перехваченной информации удается
получить представление о ключах пользователя. Если хакеру известна хотя бы
часть ключа или он знает открытые ключи обеих сторон, шансы на расшифровку
всего сообщения заметно повышаются.
Если эти полезные приемы не работают, криптоанализ продолжает
действовать методом «грубой силы». Существует много подходов к расшифровке
сообщений; выбор зависит от методики, которую предпочитает использовать хакер,
предположений относительно сообщений и ключа, а также сообразительности
хакера и имеющихся в его распоряжении вычислительных ресурсов. Если
никакой информации, кроме текста сообщения, не имеется, используется метод
перебора. Компьютер пытается расшифровать сообщение с разными ключами,
иногда с помощью хакера, который пытается угадать отдельные слова в
сообщении. Поскольку большинство сообщений имеет стандартный формат (сколько
вы знаете разных вариантов структуры деловых писем?), часть зашифрованного
текста иногда помогает определить ключ для расшифровки всего сообщения.
Если известен алгоритм шифрования, хакер может попытаться шифровать
другое сообщение по тому же алгоритму (но с другим ключом). Повторяя этот
процесс с разными сообщениями и ключами, можно получить представление о
ключе, использовавшемся для шифрования исходного сообщения. Данная
методика работает на удивление эффективно.
Также существуют сложные математические способы расшифровки
сообщений, основанные на тонкостях алгоритма с парными ключами. Между ключами
и зашифрованным сообщением существует связь, которую можно
проанализировать при достаточно больших вычислительных мощностях. Математики
написали целые книги, посвященные теории раскрытия шифров. Многие приемы,
описанные в этих книгах, используются учеными и инженерами, работающими
в области национальной безопасности.
Защита сети
Локальные сети редко рассматриваются как угроза для безопасности, однако
именно они открывают один из самых простых путей в систему. Если хотя бы
один узел сети имеет плохо защищенную точку доступа, то все остальные узлы
становятся доступными через сетевые службы этого компьютера.
PC и Macintosh обычно слабо защищены (особенно при внешнем
подключении по модему), поэтому через них злоумышленник может получить доступ
к сетевым службам. Основное правило безопасности в локальных сетях гласит,
что защищенный компьютер не может существовать в одной сети с
незащищенными компьютерами. Следовательно, любые решения в области
безопасности, примененные на одном компьютере, должны быть реализованы на всех
машинах сети.
Вход в систему и пароли
Самый распространенный способ несанкционированного входа в систему по сети,
модемному подключению или через терминал основан на использовании
слабых паролей. Слабые (а значит, легко подбираемые) пароли встречаются очень
часто. Если пользователи системы используют слабые пароли, даже лучшая
система безопасности не защитит от вторжения.
Если под вашим управлением находится система с несколькими
пользователями, установите политику безопасности, в соответствии с которой пользователи
будут регулярно изменять свои пароли (рекомендуемый срок составляет от
шести до восьми недель), причем в качестве пароля не могут использоваться
английские слова. Лучшими паролями считаются комбинации букв и цифр,
отсутствующие в словарях.
Однако в некоторых случаях одних правил защиты от слабых паролей
оказывается недостаточно. Рассмотрите возможность использования общедоступных
или коммерческих программ, проверяющих потенциальные пароли на
допустимость. Коммерческие и условно-бесплатные утилиты проверки паролей
существуют во многих операционных системах.
Если вы работаете в операционной системе Unix или Linux, уделите особое
внимание файлам /etc/passwd и /etc/group. Неиспользуемые записи в этих
файлах необходимо заблокировать, а пароли должны быть назначены всем учетным
записям — как активным, так и временно неиспользуемым.
ПРИМЕЧАНИЕ
В системе Unix следует воспользоваться утилитой pwconv, которая использует «теневые» файлы
для хранения данных паролей. В отличие от обычного файла паролей, теневой файл не может
быть прочитан любым желающим.
Учетные записи пользователей Windows NT/2000 должны быть правильно
созданы в User Manager for Domains или Active Directory (Users and Computers),
где могут создаваться учетные записи уровня рабочих групп и доменов. С
пользователями Windows 95 и 98 дело обстоит сложнее, поскольку в этих
операционных системах не существует полноценной безопасности учетных записей.
Любой пользователь, находящийся за компьютером, может создать новую
учетную запись. Если компьютеры с Windows 95/98 не входят в домен,
находящийся под контролем Windows NT, слабым местом сети всегда будут клиенты
Windows 95/98.
Разрешения доступа к файлам и каталогам
Безопасность начинается на уровне файловых разрешений, назначение которых
требует тщательного планирования. Чтобы защитить файл от доступа со стороны
злоумышленника или другого пользователя, хорошо продумайте структуру
файловых разрешений, чтобы она обеспечивала максимальную безопасность.
Способ настройки разрешений доступа к файлам и каталогам зависит от
операционной системы. В системах Unix и Linux для этой цели используется команда
chmod, а в Windows 95/98 и NT/2000 — списки управления доступом ACL (Access
Control List).
Самым распространенным внешним интерфейсом к любой системе является
модем (за исключением полностью автономной работы или замкнутых сетей).
Модемы обеспечивают удаленный доступ пользователей к сети и Интернету.
Защита линий модемного подключения к вашей системе является простой и
эффективной мерой, вполне достаточной для того, чтобы преградить путь простым
любопытствующим.
Самая надежная методика предотвращения несанкционированного доступа
по модему заключается в использовании модема с обратным вызовом. Такой
модем позволяет пользователю подключиться к системе обычным способом;
затем он разрывает связь, проверяет список допустимых пользователей и их
телефонных номеров и перезванивает пользователю. Модемы с обратным
вызовом довольно дороги, поэтому в большинстве систем такое решение не
оправдано с экономической точки зрения.
Кроме того, у модемов с обратным вызовом есть свои проблемы, особенно
если пользователи часто перемещаются с места на место. Наконец, модемы с
обратным вызовом открывают возможности для злоупотреблений из-за
возможностей динамического перенаправления вызовов современных телефонных
коммутаторов.
Обычный модем тоже может стать источником проблем, если он не
разорвет связь после завершения сеанса. Чаще всего подобные проблемы возникают
из-за неправильного подключения модема или параметров конфигурации.
Фраза «неправильное подключение» может показаться странной, однако в
некоторых системах встречается модемы с самодельными кабелями, которые не
обеспечивают полноценного управления всеми контактами. В результате система
может остаться в состоянии, когда сеанс модемного подключения не был
должным образом закрыт с выходом пользователя из системы. Любой, кто
подключится к этому модему, продолжит работу с того момента, на котором ее закончил
предыдущий пользователь. Для предотвращения подобных проблем убедитесь
в том, что модем связан с компьютером нормальным кабелем. Замените все
самодельные кабели, в которых вы не уверены, нормальными промышленными
изделиями. Также понаблюдайте за тем, как ведет себя модем после завершения
сеанса, и убедитесь в том, что он правильно разрывает связь.
Доверительные отношения
Если два компьютера связаны доверительными отношениями, одни компьютер
разрешает пользователям другого компьютера доступ к ресурсам без повторного
входа в систему. Предполагается, что «законные» пользователи одного
компьютера автоматически пользуются доверием на другом компьютере. Система
доверительных отношений была разработана много лет назад для того, чтобы
упростить доступ пользователя к сетевым ресурсам. Предположим, вы
зарегистрировались на одном компьютере и хотите получить доступ к файлу или
приложению, находящемся на другом компьютере. Каждый раз вводить имя и
пароль было бы весьма неудобно, поэтому доверительные отношения позволяют
обращаться к ресурсам без регистрации на каждом компьютере. Не путайте
доверительные отношения со службами типа NIS (Network Information Service)
или YP (Yellow Pages), использующими централизованный файл с
информацией о пользователях.
Возможность настройки доверительных отношений предусмотрена в
большинстве операционных систем, включая Windows NT, Unix и Linux. Основная
проблема с доверительными отношениями вполне очевидна: если
злоумышленник взломает один компьютер, он получит доступ ко всем остальным
компьютерам, связанным с ним доверительными отношениями.
Доверительные отношения могут быть как двусторонними (оба компьютера
доверяют друг другу), так и односторонними (первый компьютер доверяет
второму, но не наоборот). Кроме того, они могут устанавливаться для целых сетей.
Предположим, в вашей компании используются три подсети, одна из которых
содержит хорошо защищенную информацию; в двух других подсетях работают
обычные пользователи. Чтобы при обращении к ресурсам пользователям не
приходилось регистрироваться в каждой подсети, между подсетями можно
установить доверительные отношения. Вероятно, защищенная сеть не должна
доверять незащищенным (но при этом защищенной подсети следует разрешить
доступ к любым ресурсам незащищенных подсетей). Две незащищенные подсети
могут быть связаны двусторонними доверительными отношениями, а между
защищенной и незащищенными подсетями устанавливаются односторонние
отношения. Windows NT и Unix позволяют легко установить подобные отношения.
С точки зрения безопасности необходимо проследить за тем, чтобы
доверительные отношения сводили к минимуму ущерб от проникновения на
доверенный компьютер или сеть. Компьютер с конфиденциальной информацией
никогда не должен доверять компьютерам, доступным для всех желающих.
UUCP в системах Unix и Linux
Программа UUCP для системы Unix проектировалась с учетом требований
безопасности. Однако с тех пор прошло много времени, и требования безопасности
существенно изменились. За годы существования UUCP было обнаружено много
проблем безопасности, многие из которых решались посредством модификации
и установки исправлений в системе. И все же надежная и безопасная работа
UUCP требует внимания со стороны системного администратора.
Если вы не собираетесь использовать UUCP, исключите пользователя uucp
из файла /etc/passwd или назначьте сильный пароль, который невозможно легко
подобрать (замена первого символа пароля в файле /etc/passwd фактически
блокирует учетную запись). В системе Linux удаление пользователя uucp из файла
/etc/passwd больше ни на что не повлияет.
Для всех каталогов UUCP (обычно это каталоги /usr/lib/uucp, /usr/spool/uucp
и /usr/spool/uucppublic/) следует установить как можно более жесткие
ограничения. В большинстве систем доступ к этим каталогам предоставляется весьма
либерально; воспользуйтесь командами chown, chmod и chgrp и ограничьте доступ
учетной записью uucp. Регулярно проверяйте файловые разрешения.
Для управления доступом UUCP используются конфигурационные файлы
(такие, как /usr/lib/uucp/Systems и /usr/lib/uucp/Permissions). Они должны принад-
лежать и быть доступными только для учетной записи uucp. Тем самым
предотвращается модификация файла со стороны злоумышленников, вошедших в
систему под другим именем.
Каталог /usr/spool/uucppublic часто становится объектом нападения, поскольку
чтение и запись в него должны быть разрешены для всех систем, которые
работают с этим каталогом. Чтобы организовать защиту каталога, создайте два
подкаталога: для получения и отправки файлов. При желании можно создать
подкаталоги следующего уровня для всех систем, входящих в список разрешенных
пользователей.
Приготовьтесь к худшему
Предположим, кто-то все же проник в вашу сеть и учинил в ней погром. Что
делать? Разумеется, в таких случаях пригодятся резервные копии системы,
позволяющие восстановить любые поврежденные или удаленные файлы. Возможны
ли какие-то другие меры?
Прежде всего определите, как злоумышленник получил доступ к системе,
и предотвратите его использование в будущем. Если способ проникновения в
систему неизвестен, закройте все модемы и терминалы и тщательно проверьте
конфигурационные файлы на предмет дефектов безопасности. Такой дефект
должен существовать, иначе проникновение в систему было бы невозможно. Также
проверьте списки пользователей и паролей на предмет существования плохо
защищенных или устаревших данных.
Если ваша систем подвергается периодическим атакам, подумайте об
установлении системы аудита, которая бы следила за входом в систему и выполняемыми
операциями. Как только вы увидите, что злоумышленник вошел в систему,
примите необходимые меры.
Наконец, если атаки продолжаются, обратитесь к органам правопорядка.
В большинстве стран проникновение в компьютерные системы (как крупные
корпоративные, так и домашние) является незаконным, а злоумышленников
обычно удается отследить до того места, откуда осуществляется взлом.
Посягательства на безопасность вашей системы не должен оставаться безнаказанными!
Итоги
В этой главе рассматриваются механизмы шифрования и аутентификации, а также
некоторые простейшие меры предосторожности. Тема безопасности TCP
чрезвычайно широка, и эта глава лишь дает начальное представление о ней. Если вы
захотите больше узнать о компьютерах и сетевой безопасности, обратитесь к
специализированной литературе.
*Ъ 4 Общая конфигурация
Курт Хадсон (Kurt Hudson)
Протокол TCP/IP является самым распространенным сетевым протоколом, но
он также вызывает наибольшие трудности с конфигурацией. Соответственно,
возможности ошибиться в процессе настройки конфигурации чрезвычайно
широки. В этой главе рассматривается базовый процесс установки и настройки
сетевой платы и сетевых служб. Обязательные параметры конфигурации IP
рассматриваются наряду с характерными ошибками, допускаемыми в процессе
настройки. Также рассматривается туннелирование других протоколов в
каналах IP. В качестве примера в настоящей главе выбрана система Windows 98.
Настройка сетевых средств в других операционные системах будет подробно
описана в следующих главах. Система Windows 98 используется потому, что
она знакома большинству пользователей. Еще не все перешли на систему
Windows ME, которая не пользуется особой популярностью, а переход на
Windows NT/2000 и ХР не всегда возможен из-за возросших аппаратных
требований этих операционных систем.
Установка сетевой платы
Чтобы ваш компьютер мог связываться с другими компьютерами и обмениваться
с ними данными по сети, необходимо правильно настроить сетевую плату.
Существует несколько типов сетевых плат, которые к тому же по-разному
настраиваются. Тем не менее любая сетевая плата должна быть физически установлена на
компьютере и логически настроена при помощи программных драйверов.
ПРИМЕЧАНИЕ
Если на компьютере установлено две и более сетевые платы, используемые в обмене данными
TCP/IP, каждой плате должен быть назначен собственный IP-адрес и набор параметров
конфигурации TCP/IP.
Чтобы установить сетевую плату, следует отключить компьютер, снять кожух
и закрепить плату в одном из слотов. На портативных компьютерах физическая
установка устройства может сводиться к простой вставке устройства в слот
PCMCIA. Фаза физического подключения устройства к компьютеру
присутствует независимо от типа системы.
После физической установки устройства сетевой плате необходимо
выделить системные ресурсы. Одни сетевые платы получают свои ресурсы
автоматически, другие приходится настраивать вручную.
Сетевые платы
Прежде чем устанавливать сетевую плату на компьютер, следует сначала узнать
правильный тип платы, а для этого нужно знать тип аппаратных слотов вашего
компьютера. На обычных настольных компьютерах чаще всего используются
сетевые платы для слотов ISA (Industry Standard Architecture) и PCI (Peripheral
Component Interconnect). В документации системной платы должно быть
указано, какие слоты на ней установлены. Найдите свободный слот и установите
в нем сетевую плату.
После выяснения типа слота также необходимо узнать тип сети, к которой
будет подключено устройство. Тип физического интерфейса сетевой платы с сетью
обычно называется типом траисивера. На практике чаще всего используются
стандартные трансиверы RJ-45, BNC (British Naval Connector) и AVI (Attachment
Unit Interface). Интерфейс RJ-45 предназначен для подключения сетевой платы
к сети на базе витой пары. Коннектор BNC используется при подключении к
тонкому коаксиальному кабелю (сети 10Base-2). Интерфейс AUI позволяет
подключить адаптер к толстому коаксиальному кабелю A0Base-5). Вы должны заранее
узнать тип сети, к которой будет подключена сетевая плата, чтобы выбрать
устройство с правильным типом интерфейса.
Многие сетевые платы поддерживают несколько типов трансиверов. Иногда
тип траисивера выбирается перед установкой сетевой платы в системе —
обычно при помощи конфигурационной программы, предоставленной
производителем, или перемычек на плате. Обязательно ознакомьтесь с документацией перед
тем, как устанавливать устройство. Впрочем, большинство сетевых плат с
несколькими типами трансиверов настраивается автоматически, посредством
распознавания подключения на стадии инициализации.
После того как сетевая плата будет вставлена в соответствующий слот и
задания типа траисивера (если это потребуется), фаза физического подключения
устройства завершается. Следующая задача — настройка ресурсов. Однако
перед тем, как переходить к настройке, следует упомянуть другие типы сетевых
адаптеров: устройства PCMCIA, модемы и адаптеры для параллельных портов.
Устройства PCMCIA
Устройства стандарта PCMCIA (Personal Computer Memory Card International
Association) обычно используются в портативных компьютерах. Чаще всего
интерфейс PCMCIA используется при подключении сетевых плат, модемов и
внешних жестких дисков. Обычно сетевые платы PCMCIA подключаются к сетевому
кабелю через переходник.
Сетевые платы PCMCIA используют типичные сетевые ресурсы (как
правило, один номер IRQ и диапазон адресов ввода/вывода). Тем не менее для
работы устройств PCMCIA также необходимы специальные программные
интерфейсы, предоставляемые системами с поддержкой этих устройств.
Модемы
При подключении к удаленной сети или Интернету модемы выполняют те же
функции, что и сетевые адаптеры. Конфигурация модема несколько отличается
от конфигурации сетевых плат, поскольку модемы обычно используют
последовательные коммуникационные порты СОМ1, COM2, COM3 и COM4. На многих
модемах имеются собственные СОМ-порты, в таких случаях СОМ-порты
системной платы приходится отключать в параметрах CMOS/BIOS. Модемы также
используют номера IRQ, присвоенные соответствующим СОМ-портам. По
умолчанию порты СОМ1 и COM3 работают с IRQ 4, а порты COM2 и COM4 — с IRQ.
Адаптеры для параллельных портов
Некоторые модемы и другие сетевые устройства (например, маршрутизаторы)
могут подключаться к параллельным портам (вместо последовательных СОМ-
портов). Обычно эти устройства содержат специальный кабель или переходник
для параллельного порта, к которому подключается устройство. Процесс
настройки аналогичен настройке СОМ-портов, поскольку параллельным портам
тоже назначаются номера IRQ и диапазоны ввода/вывода по умолчанию.
Сетевые устройства, работающие на параллельных портах, часто используют
стандартные значения этих параметров.
Настройка ресурсов
Для любой сетевой платы, установленной на компьютере, необходимо задать
параметры — номер линии IRQ и диапазон адресов ввода/вывода. Как правило,
в документации производителя указываются значения этих параметров,
используемые по умолчанию. Чтобы сетевая плата работала с операционной системой,
необходимо проверить, свободны ли указанные номера линий IRQ и диапазоны
адресов ввода/вывода. Если необходимые ресурсы доступны, у вас не будет
проблем с настройкой сетевой платы. Но если ресурсы заняты, вам придется найти
другие свободные значения.
Новые сетевые платы и другие устройства поддерживают стандарт Plug and
Play (PnP), а это означает, что ресурсы (IRQ и диапазон ввода/вывода)
настраиваются автоматически в процессе загрузки. Технология РпР должна
поддерживаться на уровне операционной системы; в частности, ее поддержка реализована
в Windows 95, Windows 98 и Windows 2000. Во время загрузки операционная
система и устройство РпР согласовывают ресурсы, доступные для устройства.
Если сетевая плата не поддерживает РпР, вам придется найти свободные ресурсы
и закрепить их за устройством.
ПРИМЕЧАНИЕ
При настройке ISDN (Integrated Services Digital Network) или другого подключения, использующего
шину USB, достаточно выделить устройству свободный диапазон адресов ввода/вывода.
В Windows 98 свободные ресурсы определяются легко — для этого достаточно
открыть Диспетчер устройств. В диалоговом окне свойств компьютера
отображаются используемые номера IRQ и диапазоны адресов ввода/вывода (рис. 21.1).
;;• View Resources j Reserve fliieii^J;/:" J
?••'" f* J?JJ!?.^Щ^?ШЭД! ^::СШ>^.Д!?Ц!ДОу*CCe$$(PMAj;! .::.. j
W :Г• InpU^tpUtA/0} V-'Л:-:Р%1^^""'••'•;-".:" .;:•""
• j Settingh;Hefdy^eusing^'M^.::.:.: : • y'"; ';1*»j I
тЩОО System timer *;j""'|
. Щ& 01 Standard 101/102-Key or Microsoft Natural Keyboard rf• J
' Ш02 Prc^rammable interrupt controller- ill! In
• ЫоЗ Communjcatbnj Port [COM2] Й| Г
: ьУ04 Communfcdtiorw Port {COM3) :|ffi i
•; & 05 Creative Sound Blaster 1Б Plug and Play ЙЙ1Ш
K&06 Standard Floppy Disk Controller ЙЧ1Й
U? 07 Printer Port [LPT1) ^Щ
| OK | Cancel Щ j
Рис. 21.1. Поиск свободных ресурсов в Диспетчере устройств
Диалоговое окно свойств компьютера в Windows 98 открывается следующим
образом:
1. Щелкните правой кнопкой мыши на значке Мой компьютер (My Computer).
2. Выберите в контекстном меню команду Свойства (Properties).
3. Перейдите на вкладку Диспетчер устройств (Device Manager).
4. Щелкните на кнопке Свойства (Properties).
Чтобы найти неиспользуемый номер IRQ или диапазон адресов, установите
соответствующий переключатель в верхней части окна. После определения
свободных ресурсов проверьте по документации своего сетевого адаптера,
поддерживаются ли эти ресурсы устройством. Возможно, для настройки правильных
ресурсов сетевой платы вам придется установить перемычки на плате, изменить
положение переключателей или воспользоваться программой, предоставленной
фирмой-производителем.
Установка программного обеспечения
сетевой платы
После того как сетевая плата будет настроена на использование свободных
ресурсов операционной системы, необходимо установить драйверы сетевой платы.
Некоторые операционные системы включают подборку стандартных
драйверов для различных сетевых плат, но большинство сетевых плат поставляется
с собственными драйверами. Вы можете использовать драйверы операционной
системы, взять их с диска, предоставленного производителем (если он есть), или
обратиться на web-сайт производителя в Интернете.
Установка программного обеспечения сетевой платы в Windows 98
выполняется следующим образом:
1. Щелкните правой кнопкой мыши на значке Сетевое окружение (Network
Neighborhood).
2. Выберите в контекстном меню команду Свойства (Properties).
3. На вкладке Конфигурация (Configuration) диалогового окна Сеть (Network)
щелкните на кнопке Добавить (Add).
4. Выберите в диалоговом окне Выбор типа компонента (Select Network Component
Туре) строку Адаптер (Adapter) и щелкните на кнопке Добавить (Add) (рис. 21.2).
5. В следующем диалоговом окне выводится список производителей
оборудования и моделей сетевых плат. Выберите нужную комбинацию или вставьте
в дисковод диск, предоставленный производителем, и щелкните на кнопке
Установить с диска (Have Disk).
6. Щелкните на кнопке ОК. Возможно, вам придется ввести информацию о
ресурсах, используемых сетевой платой (номер IRQ и диапазон адресов
ввода/вывода).
7. После того как программное обеспечение будет успешно установлено, закройте
диалоговое окно Сеть (Network) кнопкой ОК, и если потребуется —
перезагрузите компьютер.
Click the type of network c^ponenS^u want to irma8:.
ГШ№& !__ Li :: ^ I
pjAdapter
NrProlocol Cancel j |
Ш} Service I
Рис. 21.2. Установка программной поддержки сетевой платы
После установки драйвера сетевой платы можно переходить к установке и
настройке программных компонентов сети — редиректора, сетевых служб и
семейства протоколов TCP/IP.
Редиректоры и API
Редиректором (redirector) называется программный компонент стека протоколов,
который перенаправляет локальные запросы сетевым ресурсам. Иначе говоря,
редиректор — компонент операционной системы, при помощи которого
компьютер получает доступ к сетевым ресурсам и службам. Иногда редиректор
называется клиентской службой, поскольку он выполняет соответствующие функции.
Редиректор должен быть совместим с типом сети, в которой он будет
использоваться. Редиректоры, созданные разными разработчиками, редко бывают
совместимыми. В разнородной сети это часто приводит к тому, что клиентские
системы приходится настраивать с несколькими редиректорами.
Чтобы упростить поддержку нескольких редиректоров и отделить работу
стека протоколов от разработки приложения, производители сетевого
оборудования создают специальные интерфейсы внутри стека протоколов. Например,
Microsoft использует интерфейс NetBIOS для отделения стека протоколов от
кода операционной системы. Многие протоколы и редиректоры интегрируются
через этот интерфейс. NetBIOS представляет собой программный интерфейс
приложений (API), поскольку он отделяет приложения от сетевых компонентов.
Это позволяет разработчику приложений сосредоточить основное внимание на
создаваемом приложении, не беспокоясь о специфических особенностях базовой
сети, в которой приложение может использоваться.
Установка редиректора в операционной системе Windows 98 выполняется так:
1. Щелкните правой кнопкой мыши на значке Сетевое окружение (Network
Neighborhood).
2. Выберите в контекстном меню команду Свойства (Properties).
3. На вкладке Конфигурация (Configuration) диалогового окна Сеть (Network)
щелкните на кнопке Добавить (Add).
4. Выберите в диалоговом окне Выбор типа компонента (Select Network Component
Туре) строку Клиент (Client) и щелкните на кнопке Добавить (Add).
5. В следующем диалоговом окне выводится список производителей
оборудования и сетевых клиентов (а фактически — редиректоров). Выберите нужную
комбинацию и щелкните на кнопке ОК.
6. Подтвердите или введите путь к установочным файлам и щелкните на
кнопке ОК.
7. После того как программное обеспечение будет успешно установлено, закройте
диалоговое окно Сеть (Network) кнопкой ОК, и если потребуется —
перезагрузите компьютер.
Службы
Службы, как и редиректоры, обычно реализуются на прикладном (то есть
верхнем) уровне стека протоколов. В частности, такие известные службы, как FTP
(File Transfer Protocol), HTTP (Hypertext Transfer Protocol) и Telnet, работают
на прикладном уровне TCP/IP. Службы также выигрывают от использования
API стека протоколов, поскольку процесс их разработки не зависит от структуры
базовой сети.
Службы совместного использования файлов и принтеров обычно зависят от
типа сети. Например, в сетях NetWare используются не такие службы, как в
сетях Microsoft. В операционной системе Windows 98 предусмотрена поддержка
служб совместного использования файлов и принтеров как для Microsoft, так
и для NetWare, а процесс ее установки очень похож на установку редиректора.
Единственное различие заключается в том, что в диалоговом окне Выбор типа
компонента (Select Network Component Type) вместо строки Клиент (Client)
выбирается строка Служба (Service).
Сетевые интерфейсы
На первых порах существования сетей стеки протоколов не обладали модульной
структурой. Вместо того чтобы использовать отдельные редиректоры, службы
и протоколы, стек протоколов оформлялся в виде единого монолитного
программного компонента, который обладал весьма ограниченными возможностями.
Каждая фирма-производитель выпускала программные продукты, рассчитанные
на определенный тип сети.
Один из первых и наиболее очевидных недостатков такого подхода заключался
в том, что он не позволял использовать разные транспортные протоколы. Чтобы
справиться с подобными ограничениями, фирмы-производители сетевого
оборудования и организации, занимающиеся выработкой стандартов (такие, как ISO),
направили свои усилия на развитие модульной структуры стека протоколов.
Так появились два интерфейса, которые продолжают использоваться в
наши дни — ODI (Open Datalink Interface) и NDIS (Network Driver Interface
Specification). Интерфейс ODI был разработан фирмой Novell для того, чтобы
ее сетевые компоненты могли использовать разные протоколы с одной или
несколькими сетевыми платами. NDIS является частью стека протоколов Microsoft
и позволяет организовать работу нескольких протоколов с несколькими
сетевыми платами на одном компьютере.
Сетевые и транспортные протоколы
Чтобы компьютер мог обмениваться данными с другими компьютерами, кроме
программного обеспечения сетевой платы, редиректора и служб также
необходима программная реализация протокола. Устанавливаемый протокол зависит
от типа сети и других систем, с которыми будет связываться ваш компьютер.
Вы должны заранее убедиться в том, что устанавливаемый протокол
поддерживается сетью. Чтобы две системы могли обмениваться данными, они должны
поддерживать общие протоколы.
Книга посвящена семейству протоколов TCP/IP, поэтому в этом разделе
будут рассматриваться вопросы конфигурации TCP/IP.
Обязательные параметры конфигурации IP
Минимальные требования к конфигурации TCP/IP включают два параметра:
IP-адрес и маску подсети. Возможно, это все, что вам потребуется для работы
в локальной сети через TCP/IP.
Чтобы компьютер участвовал в обмене данными, ему должен быть присвоен
правильный IP-адрес в локальном сегменте сети. При настройке системы ей
присваивается уникальный IP-адрес и соответствующая маска подсети, котрая
должна совпадать с маской других систем той же подсети, чтобы эти компьютеры
могли взаимодействовать. Кроме того, IP-адрес должен быть уникальным в
границах подсети, он должен содержать правильный идентификатор сети и
идентификатор подсети (если он используется). Идентификатор сети определяется
маской подсети. Например, маска подсети 255.255.0.0 означает, что первые два
октета IP-адреса определяют сегмент сети (то есть адрес подсети). Если первые
два октета определяют сеть, то два других октета должны однозначно
определять хост в этом сегменте. Рассмотрим пример, приведенный в табл. 21.1.
Таблица 21.1. IP-адрес и маска подсети
Хост/1Р-адрес Маска подсети
HostA/192.168.1.12 255.255.0.0
HostB/192.168.2.17 255.255.255.240
HostC/192.168.1.250 255.255.0.0
HostD/192.168.2.30 255.255.255.240
HostE/192.168.2.33 255.255.255.240
В приведенном примере хосты HostA и HostC принадлежат одной логической
сети (идентификатор 192.168.0.0). Хосты HostB и HostD тоже принадлежат одной
логической подсети (идентификатор 192.168.1.16). Хост HostE находится в другой
логической сети (идентификатор 192.168.1.32). Если бы все хосты были
подключены к одному физическому кабелю, хосты HostA и HostC смогли бы
взаимодействовать друг с другом, как и хосты HostB и HostD. Во всех остальных комбинациях
взаимодействие было бы невозможно из-за различий в логических подсетях.
ПРИМЕЧАНИЕ
Возможно, тот факт, что HostE не входит в одну подсеть с хостами HostB и HostD, не является
очевидным. Тем не менее, если просмотреть главу 4, вы увидите, что идентификатор подсети для
маски 255.255.255.240 определяется каждым 16-м числом, начиная с 16 и заканчивая 224. Ниже
перечислены действительные идентификаторы и диапазоны для адреса 192.168.1.0 с маской
подсети 255.255.255.240:
192.168.1.16, адреса хостов 192.168.1.17-192.168.1.30
192.168.1.32, адреса хостов 192.168.1.33-192.168.1.46
192.168.1.48, адреса хостов 192.168.1.49-192.168.1.62
192.168.1.64, адреса хостов 192.168.1.65-192.168.1.78
192.168.1.80, адреса хостов 192.168.1.81-192.168.1.94
192.168.1.96, адреса хостов 192.168.1.97-192.168.1.110
192.168.1.112, адреса хостов 192.168.1.113-192.168.1.126
192.168.1.128, адреса хостов 192.168.1.129-192.168.1.142
192.168.1.144, адреса хостов 192.168.1.145-192.168.1.158
192.168.1.160, адреса хостов 192.168.1.161-192.168.1.174
192.168.1.176, адреса хостов 192.168.1.177-192.168.1.190
192.168.1.192, адреса хостов 192.168.1.193-192.168.1.206
192.168.1.208, адреса хостов 192.168.1.209-192.168.1.222
192.168.1.224, адреса хостов 192.168.1.225-192.168.1.238
Таким образом, создаются 14 логических подсетей, каждая из которых содержит 14 хостов. В этой
схеме адреса 192.168.1.33 и 192.168.1.30 принадлежат разным подсетям.
Чтобы хосты одной локальной сети могли обмениваться данными, они должны
обладать уникальными идентификаторами хостов и идентичными
идентификаторами сети/подсети. Чтобы хосты могли взаимодействовать с другими хостами
в удаленных сегментах (через маршрутизатор), на каждом из них должен быть
настроен адрес основного шлюза.
Настройка адреса основного шлюза
Чтобы система могла взаимодействовать с удаленными сетями или с другими
сегментами локальной сети, отделенными маршрутизатором, в ней необходимо
настроить адрес основного шлюза. Как правило, адрес основного шлюза
является IP-адресом локального маршрутизатора. Тем не менее при наличии в
локальном сегменте сети нескольких маршрутизаторов обмен данными с
удаленными сетями желательно производить через основной шлюз.
На основании маски подсети хост определяет, с каким сегментом сети он
должен взаимодействовать — локальным или удаленным. Если идентификатор
подсети получателя совпадает с идентификатором локального сегмента, пересылка
производится внутри локального сегмента. Но если идентификаторы отличаются,
данные передаются основному шлюзу. Как правило, основным шлюзом является
маршрутизатор, который пересылает пакет соответствующему получателю или
в следующую точку маршрута на пути к конечному получателю.
Чтобы локальный хост мог правильно взаимодействовать с основным шлюзом,
на нем должны быть заданы некоторые параметры: действительный уникальный
IP-адрес, правильная маска подсети и адрес основного шлюза. Если какие-либо
из этих параметров будут заданы неверно, у хоста возникнут проблемы. Адрес
основного шлюза должен быть задан в локальном сегменте сети. Иначе говоря,
удаленный хост не может использоваться вашей системой в качестве основного
шлюза.
Если система нормально связывается с локальными хостами, но не может
связаться с удаленными хостами, проблема обычно связана с основным шлюзом
или его конфигурацией. Среди потенциальных проблем с основным шлюзом
можно назвать следующие:
О Основной шлюз временно недоступен.
О Кабель или интерфейс, связывающий основной шлюз с локальным
сегментом, не работает.
О На клиенте неверно задан адрес основного шлюза.
О На клиенте не настроен адрес основного шлюза.
О Запись кэша ARP (Address Resolution Protocol) для маршрутизатора содержит
неверную информацию. Проблема обычно решается перезагрузкой клиента,
если только клиент не использует статическую загрузку данных в кэш ARP.
Многие конфигурационные проблемы легко распознаются и решаются. Тем
не менее проблема с неправильными данными в кэше ARP не столь очевидна.
Следует помнить, что весь обмен данными в локальном сегменте в конечном
счете проводится между аппаратными адресами MAC (Media Access Control).
Если сетевой интерфейс основного шлюза изменился, а все клиенты
продолжают использовать аппаратный адрес старого Интернета, они не смогут связаться
с основным шлюзом. Обычно перезагрузка клиентской системы обновляет кэш
ARP и заставляет клиента заново разрешить адрес MAC. Но если операционная
система была настроена на загрузку статической записи ARP для основного
шлюза, проблема не решается простой перезагрузкой — необходимо
отредактировать файл, из которого в кэш ARP загружается статическая запись.
Настройка адреса сервера имен
Другой важный параметр хоста TCP/IP — IP-адрес сервера имен. Существует
два основных типа серверов имен: серверы DNS (Domain Name System) и
серверы WINS (Windows Internet Name Service). Серверы DNS преобразуют имена
хостов, обычно используемые в Интернете, в IP-адреса. Такое преобразование
обеспечивает возможность взаимодействия между хостами TCP/IP. Серверы
WINS преобразуют имена NetBIOS, используемые в сетях Microsoft, в
IP-адреса. Серверы DNS подробно описаны в главе 6, а серверы WINS — в главе 7.
При настройке хостов IP следует задать правильный адрес соответствующего
сервера имен. Для правильного разрешения имен (то есть преобразования их
в IP-адреса) при настройке клиентов Microsoft иногда приходится задавать
IP-адреса как сервера DNS, так и сервера WINS. Если вы можете связаться с
хостом по IP-адресу, но не по имени, значит, где-то в процессе разрешения имени
происходит ошибка. Ниже перечислены некоторые распространенные причины.
О На клиенте неверно задан адрес сервера имен.
О Сервер имен недоступен.
О Маршрутизатор между сервером имен и вашей системой недоступен (что не
позволяет связаться с сервером имен), но хост, с которым вы пытаетесь
связаться, находится по одну сторону от маршрутизатора с вашей системой.
О Где-то между вашей системой и сервером существует физическая ошибка
связи, тогда как канал связи с другим хостом работает нормально.
О Имя системы, к которой вы пытаетесь подключиться, не настроено на сервере
имен (или настроено неверно).
Настройка адреса почтового сервера
Чтобы локальный хост мог отправлять и получать электронную почту, следует
задать в почтовой программе адрес почтового сервера. Для передачи
сообщений в сетях TCP/IP обычно используется протокол SMTP (Simple Mail Transfer
Protocol). Клиенты, как правило, принимают почту с использованием протокола
POP (Post Office Protocol) или IMAP (Internet Message Access Protocol). При
настройке входящей почты обычно указываются данные одного из серверов POP
или IMAP, но не обоих сразу.
Многие почтовые приложения Интернета позволяют указать как имя хоста
почтового сервера, так и его IP-адрес. Например, в данных почтового сервера
можно ввести имя mail.server.com или адрес 192.168.1.50. Некоторые поставщики
услуг Интернета используют один и тот же почтовый сервер как для входящей,
так и для исходящей почты, но иногда для этих целей используются разные
серверы. Чтобы ваша система могла как принимать, так и отправлять почту,
необходимо правильно задать адрес почтового сервера (или серверов).
Регистрация доменного имени
Если вы собираетесь использовать в Интернете конкретное доменное имя типа
domaJn.com, это имя необходимо зарегистрировать в InterNIC. Обычно
регистрация доменных имен выполняется через поставщика услуг Интернета, который
берет на себя все формальности, связанные с регистрацией. Тем не менее вся
необходимая информация о регистрации доменных имен приведена на сайте
InterNIC по адресу http://www.internic.net.
Разновидности конфигурации IP
Некоторые устройства и операционные системы обладают интегрированной
поддержкой TCP/IP, которая должна настраиваться в процессе настройки этого
устройства или операционной системы. Настройка осуществляется по тем же
принципам, что и выше; различается только конкретная процедура. В качестве
примера устройств, в процессе настройки которых настраивается IP, можно
привести маршрутизатор (например, Cisco). Поскольку маршрутизаторы
обладают несколькими интерфейсами, настройка выполняется на уровне отдельного
интерфейса. Во время автоматизированной настройки Cisco вам предлагается
произвести настройку IP для каждого интерфейса. Также можно обойти
соответствующее диалоговое окно и настроить интерфейсы непосредственным
вводом команд Cisco IOS в режиме командной строки.
Между процедурами настройки IP-адресов и масок подсетей в разных
системах также существуют различия. Например, при настройке маски подсети IP
для маршрутизатора Cisco не нужно вводить всю 32-разрядную маску, поскольку
маска по умолчанию вычисляется по типу сети. Например, если интерфейсу
маршрутизатора Cisco назначается IP-адрес 192.168.1.1, вам не придется вводить
маску подсети 255.255.255.0. Поскольку адрес относится к классу С,
предполагается, что ему соответствует маска 255.255.255.0. Вам будет предложено
ввести только количество дополнительных битов. Например, для маски подсети
255.255.255.240 вводится число 4, поскольку эта маска на 4 разряда превышает
маску подсети по умолчанию.
Кроме того, в настройках IP некоторых устройств не всегда используются
десятичные маски подсетей — также часто встречается двоичный формат маски
подсети и формат CIDR (Classless InterDomain Routing). В двоичном формате
числа остаются прежними, изменяется только система счисления — например,
255.255.240.0 превращается в 11111111.11111111.11110000.00000000. В формате
CIDR за IP-адресом указывается количество бит в маске. Например, адрес
192.168.1.1 с маской подсети 255.255.255.240 представляется в виде 192.168.1.1/28,
поскольку маска подсети содержит 28 двоичных цифр.
Настройка таблицы маршрутизации
Ошибки в таблицах маршрутизации создают проблемы со связью в сетях IP.
Многие маршрутизаторы автоматически настраиваются динамическими протоколами
маршрутизации — такими, как RIP (Routing Information Protocol) и OSPF (Open
Shortest Path First). Однако когда маршруты вводятся администратором вручную,
возможные опечатки увеличивают вероятность появления ошибок в таблицах
маршрутизации. Наряду с опечатками в таблицах маршрутизации также часто
встречается и такая проблема, как неправильное указание интерфейса для следующего
перехода. Рассмотрим сетевую конфигурацию, изображенную на рис. 21.3.
| 1192.168.3.2 192.168.2.1 i 1
RouterY p^^ J RouterQ
^^-^J92.168.3.1 s^ oj
I I уГ ^
RouterX F192.168.2.2 Щ
^^-^92.168.4.1 Щ
RouterZ r"""^
I 1192.168.4.2
Таблица маршрутизации RouterX
Сеть Маска Интерфейс
192.168.4.0 255.255.255.0 192.168.4.1
192.168.3.0 255.255.255.0 192.168.3.1
192.168.2.0 255.255.255.0 192.168.2.2
I 192.168.1.0 I 255.255.255.0 J 192.168.2.2 |
Рис. 21.3. Диагностика проблем с настройкой таблиц маршрутизации
Ошибка, допущенная при настройке таблицы маршрутизации RouterX,
незаметна на первый взгляд, однако она вызывает проблемы в сети. Последняя строка
таблицы RouterX указывает на то, что трафик для сети 192.168.1.0 должен
пересылаться через интерфейс 192.168.2.2, но это неправильно. Маршрутизатор
должен направлять трафик в точку следующего перехода. С точки зрения RouterX
следующим переходом к сети 192.168.1.0 является интерфейс RouterQ с
IP-адресом 192.168.2.1. Если не исправить эту ошибку, то пакеты, предназначенные
для сети 192.168.1.0, не пройдут через маршрутизатор RouterX.
Поскольку маршрутизатор RouterX связан со всеми сегментами, указанными
в его таблице маршрутизации, он взаимодействует с этими сегментами через
свои интерфейсы. Только если маршрутизатор не связан напрямую с сегментом,
он использует интерфейс другого маршрутизатора для пересылки данных
удаленному сегменту.
Чтобы исправить ошибку, представленную на рис. 21.3, необходимо ввести
правильный адрес интерфейса, которому RouterX пересылает пакеты для сети
192.168.1.0. Исправленная запись выглядит так:
192.168.1.0 255.255.255.0 192.168.2.1
Инкапсуляция внешних протоколов
Протокол IP часто используется для инкапсуляции пакетов других протоколов
сетевого уровня и их последующей передачи в сетях IP. Примером может
послужить пересылка пакетов IPX в туннелях IP. Сети Novell NetWare работают
на базе протокола IPX/SPX. Если потребуется связать две локальные сети Novell
NetWare через Интернет, достаточно организовать пересылку пакетов IPX через
туннельный канал IP.
Слово туннель (tunnel) описывает ситуацию на концептуальном уровне.
После того как данные протоколов верхнего уровня инкапсулируются в пакетах
IPX, весь набор инкапсулируется в пакетах IP и пересылается в удаленную сеть
IPX. Ситуация представлена на рис. 21.4.
IPX/SPX LAN IPX/SPX LAN
| •_ m\ L « I
f IPX ) *1 * f IPX )
V—L_—/ Передача пакетов V /
в обоих направлениях
GD Г ) CZD
► Сеть Интернет TCP/IP ►
Рис. 21.4. В результате пересылки пакетов IPX в туннеле IP
фактически формируется глобальная сеть IPX
Серверы на обеих сторонах канала TCP/IP должны быть настроены на
упаковку/распаковку данных IPX из пакетов IP. На серверах NetWare,
выполняющих эти функции, используется драйвер IP Tunnel, для чего в файл NET.CFG
сервера NetWare обычно включаются следующие строки:
Link Driver IPTUNNEL
Gateway 192.168.1.50
Protocol IPXODI
Bind #2
Первая часть указывает на то, что распаковка пакетов на другом конце канала
будет осуществляться шлюзом. Вторая часть привязывает IPXODI ко второму
определенному драйверу, которым является драйвер IP Tunnel. Кроме внесения
этих изменений в NET.CFG, на сервере должна быть установлена и загружена
программная поддержка TCP/IP (tcpip), а также драйвер IP Tunnel (iptunnel).
ПРИМЕЧАНИЕ
Серверы Unix и Linux также поддерживают туннелирование IPX в сетях IP. Туннелирование чаще
используется при выполнении приложений IPX no Интернету, нежели при пересылке данных между
локальными сетями. Поддержка туннелирования обеспечивается приложением ipxtunnel, которое
можно загрузить с сайта sunsite.unc.edu и с множества других сайтов Интернета.
Инкапсуляция внешних протоколов не ограничивается пересылкой IPX в сетях
TCP/IP — в пакетах IP могут передаваться пакеты других протоколов. Фирма
Microsoft использует протокол РРТР (Point-to-Point Tunneling Protocol) для
шифрования обмена данными между хостами, подключенными к Интернету.
Для создания безопасных туннелей также применяется протокол L2TP в
сочетании с IPSec. Туннели такого типа защищают пересылку данных в Интернете.
Многие брандмауэры используют аналогичную методику шифрования для
инкапсуляции трафика специализированных протоколов между двумя удаленными
точками в Интернете. Это позволяет компаниям создавать в Интернете
защищенные соединения или виртуальные локальные сети (VLAN). Инкапсуляция
затрудняет (а по мнению некоторых — полностью исключает) перехват данных,
передаваемых в соединениях VLAN, со стороны хакеров.
Итоги
Включение нового хоста в сеть IP сопровождается настройкой многочисленных
параметров. Если на компьютере еще не была установлена и настроена сетевая
плата, настройка начинается с анализа аппаратных ресурсов. Возможно, вам
придется проверить линии IRQ и диапазоны адресов ввода/вывода и найти значения,
не используемые другими устройствами. Настройка сетевых плат часто
выполняется программными драйверами, предоставленными производителем
устройства. Впрочем, операционная система Windows содержит драйверы для
множества сетевых плат.
После установки сетевой платы и настройки драйвера обычно
устанавливается редиректор и дополнительные службы. Конкретный тип редиректора и служб
зависит от типа сети, к которой подключается компьютер, и сервиса,
предоставляемого но сети.
Чтобы организовать обмен данными в сети IP, необходимо либо использовать
устройство с интегрированной поддержкой IP, либо установить семейство
протоколов TCP/IP. Если устройство обладает интегрированной поддержкой IP,
конфигурация протокола обычно задается во время настройки. Для работы
хоста IP в сети IP абсолютно необходимы два параметра: IP-адрес и маска
подсети. Если вы хотите, чтобы система взаимодействовала с хостами IP в
удаленных сетях, также необходимо задать адрес основного шлюза — приемника
пакетов, пересылаемых в удаленные сегменты. Адрес основного шлюза представляет
собой IP-адрес маршрутизатора в локальном сегменте сети, занимающегося
пересылкой пакетов в удаленные сети и/или другим маршрутизаторам. Чтобы
хост мог обращаться к другим хостам по хостовым именам, на нем должна быть
настроена одна из схем разрешения имен. Для получения доступа к сервису
разрешения имен в конфигурации клиента задается адрес сервера имен.
*J *% Настройка TCP/IP
ЖшЖшЪ Windows 95
и Windows 98
Курт Хадсои (Kurt Hudson)
В этой главе рассматривается настройка сетевых компонентов Windows 98.
Основное внимание уделяется двум аспектам: конфигурации сетевых драйверов и
настройке TCP/IP. Также приводятся общие сведения о сетевой архитектуре
Windows 98 и рассматриваются такие специфические области конфигурации, как
статические файлы TCP/IP и некоторые ключи системного реестра Windows 98.
ПРИМЕЧАНИЕ
В Windows 95 и Windows 98 используются практически одинаковые процедуры настройки сетевых
компонентов. Информация, приведенная в этой главе, применима к любой из этих операционных
систем.
Сетевая архитектура Windows 98
В основу сетевой архитектуры Windows 98 заложены два основных интерфейса:
NetBIOS (Network Basic Input/Output System) и NDIS (Network Device Interface
Specification). Кроме того, на верхних уровнях сетевой поддержки систем от
Microsoft используется протокол SMB (Service Message Blocks). Базовое
строение стека протоколов Windows 98 по сравнению с сетевой моделью OSI
изображено на рис. 22.1.
Из рисунка видно, какие места занимают эти компоненты в стеке протоколов
TCP/IP. Там, где на графике находятся протоколы TCP, UDP и IP, можно было
бы разместить еще несколько транспортных и сетевых протоколов, потому что
уровень NDIS позволяет привязать несколько протоколов к одной или
нескольким сетевым платам. Уровень NetBIOS обеспечивает независимость
приложений NetBIOS от протокола. Проектировщики сетевой архитектуры Microsoft
стремились к тому, чтобы процесс разработки сетевых приложений как можно
меньше зависел от используемого протокола. Это делалось для того, чтобы
разработчики могли сосредоточить внимание на создаваемом приложении и не
беспокоиться о том, какой протокол из сетевого стека при этом используется.
Прикладной уровень
— SMB
Представительский уровень
Сеансовый уровень NetBIOS WinSocks
Транспортный уровень TCP UDP
Сетевой уровень IP
Канальный уровень Драйверы локальной сети
Физический уровень Сетевая плата
Рис. 22.1. Специфические компоненты реализации TCP/IP от Microsoft
находятся на канальном уровне и выше транспортного уровня
Также обратите внимание на добавление интерфейса WinSocks (Windows
Sockets) к сеансовому уровню модели. Интерфейс WinSocks был разработан
фирмой Microsoft для того, чтобы существующие приложения и утилиты TCP/IP
могли использоваться клиентами Microsoft. Например, такие утилиты, как ping
и tracert, обращаются к стеку протоколов через интерфейс Windows Sockets.
Из всего стека протоколов Windows 98 администратор или пользователь
может настраивать только драйверы локальной сети, сетевые и транспортные
протоколы, а также выбирать тип сетевой платы. SMB, NetBIOS и NDIS
являются постоянными компонентами сетевой поддержки Windows 98. Кроме того,
при установке реализации TCP/IP от Microsoft автоматически добавляется
интерфейс Windows Sockets.
Основными компонентами, добавляемыми пользователем, являются
драйверы сетевой платы, протоколы и сетевые службы (клиентские и серверные
компоненты). На рис. 22.2 изображено диалоговое окно Сеть (Network) системы
Windows 98 с перечнем компонентов. В этой главе все компоненты будут
рассмотрены более подробно.
Установка сетевой платы
В главе 22 был описан процесс установки устройства сетевой платы, а также
процесс настройки ресурсов и драйверов в Windows 98. В этом разделе различные
варианты установки и настройки сетевых плат будут рассмотрены более подробно.
ПРИМЕЧАНИЕ
Предполагается, что сетевая плата уже установлена на компьютере. Кроме того, следует узнать
название фирмы-производителя, адрес web-сайта и номер модели сетевой платы.
Как сказано в предыдущей главе, перед установкой программного
обеспечения сетевой платы следует узнать номера свободных прерываний (IRQ) и
доступных адресов ввода/вывода. Для получения этой информации можно
воспользоваться диспетчером устройств (за подробным описанием обращайтесь
к главе 22). Возможно, перед началом работы потребуется настроить нужные
номера IRQ и адреса ввода/вывода на сетевой плате при помощи утилиты,
предоставленной производителем.
Configuration j Identification | Access Control j
• The folov^neKvwk components ate installed 11
2J Client for Microsoft Networks j j
. ^N£2000 Compatible '
: . [Г TCP/IP ■;.:. J
Ш} File and printer sharing for Microsoft Networks j J
Primary Network ^одоп: : , I
| Client for Microsoft Network? 3 11
ffteartf Print Sharing.,. II
: Oescripbon j j
OK | Cancel | j
Рис. 22.2. Диалоговое окно Сеть (Network) системы Windows 98 используется для
централизованной настройки большинства сетевых параметров в Windows 98
Мастер установки нового оборудования
Для установки программного обеспечения сетевой платы можно воспользоваться
мастером установки нового оборудования. Откройте панель управления
командой Пуск ► Настройка ► Панель управления (Start ► Settings ► Control panel).
1. Дважды щелкните на значке Установка оборудования (Add New Hardware).
2. Мастер установки нового оборудования сначала предлагает закрыть все
остальные открытые приложения. Последуйте его совету и щелкните на кнопке
Далее (Next).
3. В следующем окне выводится сообщение о том, что Windows выполняет
поиск устройств Plug and Play. Если устанавливаемая сетевая плата
соответствует стандарту Plug and Play, система найдет ее и автоматически настроит
номер IRQ и диапазон адресов. В противном случае ресурсы, используемые
платой, придется задать вручную.
4. Щелкните на кнопке Далее (Next).
5. Если установленная сетевая плата присутствует в списке, выделите ее,
щелкнув на соответствующем значке в окне Устройства (Devices).
6. Установите переключатель Да, устройство присутствует в списке (Yes, the Device
is In the List) и щелкните на кнопке Далее (Next). Это должно привести к
автоматической установке и настройке сетевой платы Plug and Play.
7. Если сетевая плата не входит в список, установите переключатель Нет,
устройства нет в списке (No, the Device Isn't In the List) и щелкните на кнопке Далее
(Next). Если вам пришлось выбрать этот вариант, значит, ваша сетевая плата
не поддерживает стандарт Plug and Play.
8. Для устройств, не соответствующих стандарту Plug and Play, в следующем
окне вам будет предложено поручить поиск сетевой платы системе Windows.
К сожалению, процедура поиска может привести к «зависанию» компьютера;
в этом случае систему придется перезагрузить. С другой стороны, если
Windows 98 успешно обнаружит сетевую плату, вам не придется выбирать ее в
списке устройств.
9. Если вы хотите провести автоматический поиск сетевой платы, установите
переключатель Да (рекомендуется) (Yes(Recommended)) и щелкните на кнопке
Далее (Next). Если поиск будет успешным, вы сможете подтвердить его
результаты и перейти к дальнейшей настройке.
10. С другой стороны, если вы точно знаете модель устанавливаемой сетевой
платы или у вас имеется диск от производителя оборудования, который бы
вы хотели установить, установите переключатель Нет, выбрать из списка (No,
I Want to Select the Hardware from a List) и щелкните на кнопке Далее (Next).
11. Если устройство не было обнаружено (или если вы пропустили фазу поиска),
на экране появляется диалоговое окно с предложением выбрать устройство
из списка допустимых устройств.
12. Найдите в списке строку Сетевые платы (Network Adapters), выделите ее и
щелкните на кнопке Далее (Next).
13. В следующем окне слева выводится список производителей, а справа —
список моделей.
14. Выберите производителя сетевой платы и модель. Например, если
устанавливается устройство 3COM ЗС509 ISA, выберите в списке производителей
строку «3COM», прокрутите второе окно и найдите в списке моделей строку
«3COM Etherlink III ISA CC509/3C509b) in ISA mode».
15. Щелкните на кнопке ОК.
Существует и другая возможность — кнопка Установить с диска (Have Disk)
позволяет установить драйвер, предоставленный производителем оборудования.
Далее вам будет предложено вставить гибкий диск, CD-ROM или ввести путь
к драйверам, после чего процесс установки продолжится. Также система может
предложить выбрать один из драйверов, найденных на диске. За информацией
о выборе драйвера обращайтесь к документации, предоставленной
производителем сетевой платы.
ПРИМЕЧАНИЕ
Возможно, перед продолжением установки вам будет предложено выбрать ресурсы, используемые
сетевой платой. Введите необходимые значения и щелкните на кнопке Далее (Next).
После того как мастер установки нового оборудования Windows 98 найдет
и установит драйвер, на экране появляется диалоговое окно с информацией об
успешном завершении установки. Вам предлагается завершить процесс
установки, щелкнув на кнопке Готово (Finish). Систему можно перезагрузить
немедленно или подождать. Драйвер сетевой платы появится в системе только
после перезагрузки.
Ручная установка сетевой платы
Процесс ручной установки сетевой платы в Windows 98 подробно описан в
главе 22 (подробные инструкции по установке драйвера здесь не повторяются).
В этом случае вместо использования мастера установки нового оборудования
следует воспользоваться значком Сеть (Network) на панели управления. На экране
появляется диалоговое окно Сеть (Network). Далее следует щелкнуть на кнопке
Добавить (Add), выбрать сетевую плату и установить соответствующий драйвер.
После щелчка на кнопке Добавить (Add) процесс практически не отличается от
установки сетевой платы, не поддерживающей стандарт Plug and Play, с помощью
мастера нового оборудования.
16-разрядные сетевые драйверы
Если в системе Windows 98 устанавливается старая сетевая плата, возможно,
вам придется использовать старые 16-разрядные драйверы. Такое решение не
оптимально и его следует по возможности избегать. Тем не менее в Windows 98
поддерживаются старые конфигурационные файлы (такие, как autoexec.bat,
config.sys и system.ini), что позволяет использовать старое оборудование и
программы, существовавшие до появления Windows 95.
Процесс настройки старой сетевой платы достаточно прост. Сначала
запустите программу установки, предоставленную производителем сетевой платы.
Программа устанавливает драйвер и обновляет старые конфигурационные файлы.
Если конфигурационные файлы потребуется обновить вручную, проще всего
воспользоваться программой sysedit Программа запускается из диалогового окна
Пуск ► Выполнить (Start ► Run); она автоматически открывает все старые
конфигурационные файлы в окнах текстового редактора. Далее вы можете внести
необходимые изменения.
Изменение параметров конфигурации
сетевой платы
Ресурсы, используемые сетевой платой, можно изменить в диспетчере устройств
Windows 98. После установки сетевой платы значок этого устройства появляется
в окис диспетчера устройств.
1. Чтобы вызвать диспетчера устройств, щелкните на значке Система (System)
панели управления или щелкните правой кнопкой мыши на значке Мой
компьютер (My Computer) и выберите команду Свойства (Properties).
2. Щелкните на вкладке Устройства (Device Manager).
3. Щелкните на значке + рядом с категорией Сетевые платы (Network Adapters).
В окне появляется список сетевых плат, установленных в системе.
4. Дважды щелкните на значке сетевой платы, настройки которой требуется
изменить.
Количество вкладок, отображаемых для конкретной сетевой платы, зависит
от его модели и возможностей настройки. Впрочем, для большинства устройств
отображаются три вкладки:
О Общие (General) — информация о текущем состоянии устройства (например,
устройство работает нормально, или в системе существует конфликт ресурсов).
О Драйвер (Driver) — изменение и обновление драйвера сетевой платы.
О Ресурсы (Resources) — изменение параметров конфигурации сетевой платы.
Если Windows 98 не загружается
Если установка сетевой платы вызывает конфликт ресурсов, возможно, у вас
возникнут трудности с перезагрузкой системы. Драйверы некоторых устройств
вызывают «зависание» системы Windows 98 в процессе загрузки. В этом случае
следует попытаться загрузить Windows 98 в безопасном режиме. Как правило,
этот режим активизируется автоматически, когда Windows 98 обнаруживает
неудачную попытку загрузки. Тем не менее, если потребуется активизировать
безопасную загрузку вручную, нажмите клавишу F8 в процессе загрузки.
ПРИМЕЧАНИЕ
Время, в течение которого воспринимается нажатие клавиши F8, ограничено, поэтому эту
клавишу обычно нажимают многократно в начале загрузки системы. Если на экране появляется
заставка Windows 98, значит, вы не успели вовремя нажать клавишу.
При нажатии клавиши F8 во время загрузки открывается меню, состоящее
из нескольких команд. Вероятно, проще всего загрузиться в безопасном режиме
и сбросить настройки сетевой платы.
Интерфейс безопасного режима очень похож на стандартный интерфейс
Windows 98, в котором производилась первоначальная настройка сетевой платы.
Воспользуйтесь этим режимом для выявления проблем с ресурсами сетевой платы.
Если проблема обусловлена 16-разрядным драйвером, отредактируйте
конфигурационные файлы программой SYSEDIT. Если проблема возникла из-за
32-разрядных драйверов, измените настройку ресурсов в диспетчере устройств.
Если вам не удается выявить и исправить проблему в безопасном режиме,
попробуйте сохранить журнал загрузки в файле bootlog.txt. Возможно, вы
установили не тот драйвер устройства. Журнал загрузки создается так:
1. Выберите в меню запуска Windows 98 команду Logged....
2. Перезагрузите систему и подождите, пока загрузка завершится неудачей.
3. Загрузите систему в безопасном режиме или в режиме командной строки.
Найдите файл bootlog.txt в корневом каталоге диска С:.
4. Откройте файл в текстовом редакторе (например, в DOS-редакторе edit или
в Блокноте Windows). Вероятно, вам удастся определить причину
возникающих сбоев по последней строке — в ней выводится информация о последнем
драйвере, который система попыталась загрузить перед «зависанием».
Если выяснится, что драйвер сетевой платы не загружается, найдите
нормальный драйвер. Убедитесь в том, что содержимое файла драйвера не испорчено.
Проверьте диск программой ScanDisk — возможно, драйвер был испорчен из-за
дефектов поверхности диска. За сведениями об известных проблемах с
конфигурацией устройства следует обращаться на сайт фирмы-производителя или
в службу технической поддержки.
Если в процессе диагностики будет обнаружен конфликт ресурсов, сбросьте
настройки ресурсов сетевой платы или другого конфликтующего устройства.
Если оба устройства обязательно используют одни и те же аппаратные ресурсы,
для разрешения конфликта придется выбрать одно из этих устройств и убрать
другое устройство из системы. После того как все необходимые исправления
будут внесены, перезагрузите систему — она должна работать правильно.
Настройка TCP/IP в Windows 98
Основная настройка TCP/IP в Windows 98 достаточно проста и выполняется
через удобный графический интерфейс. Тем не менее некоторые параметры
конфигурации можно изменить только правкой реестра Windows 98 и/или
конфигурационных файлов. В этом разделе мы рассмотрим оба варианта.
Сбор предварительной информации
Прежде чем устанавливать TCP/IP в системе Windows 98, необходимо собрать
основные сведения о текущем сегменте сети. В процессе настройки следует
использовать IP-адрес и маску подсети данного сегмента, если вы не собираетесь
использовать сервер DHCP. При использовании DHCP необходимо определить,
какие параметры будут автоматически настраиваться сервером DHCP.
Если вы собираетесь связываться с хостами, находящимися в удаленных
сегментах, то кроме IP-адреса и маски подсети вам потребуется адрес основного
шлюза (также называемого локальным маршрутизатором). При использовании
HDCP необходимо узнать, будет ли производиться автоматическая настройка
IP-адреса маршрутизатора, и если не будет — вручную добавить адрес в
локальную конфигурацию TCP/IP.
Если связь с хостами в сети будет осуществляться по именам, вам также
потребуется адрес сервера DNS, который будет обеспечивать разрешение имен.
Без сервера DNS придется создать файл HOSTS с перечнем списком всех
IP-адресов и имен хостов, к которым вы будете подключаться. Также потребуется
механизм разрешения имен NetBIOS — сервер WINS или файл LMHOSTS. Адреса
серверов DNS и WINS могут предоставляться сервером DHCP, если он
используется в локальной сети.
Когда вы будете располагать всеми перечисленными сведениями, можно
переходить к установке семейства протоколов TCP/IP. Держите под рукой компакт-
диск или установочные файлы Windows 98, они понадобятся при установке
протокола.
Установка TCP/IP
В Windows 98 семейство протоколов TCP/IP устанавливается из диалогового
окна Сеть (Network), которое вызывается при помощи значка Сетевое окружение
(Network Neighborhood), находящегося на рабочем столе, или из панели управления.
Чтобы вызвать диалоговое окно с рабочего стола, щелкните правой кнопкой
мыши на значке Сетевое окружение (Network Neighborhood) и выберите команду
Свойства (Properties). Чтобы вызвать его из панели управления, выполните команду
Пуск ► Настройка ► Панель управления (Start ► Settings ► Control Panel) и дважды
щелкните на значке Сеть (Network). Далее выполните следующие действия:
1. Щелкните на кнопке Добавить (Add).
2. Выберите в диалоговом окне Выбор типа компонента (Select Network Component
Туре) строку Протокол (Protocol) и щелкните на кнопке Добавить (Add). В окне
появляется список протоколов.
3. Выберите в списке производителей строку Microsoft, а в списке протоколов —
строку TCP/IP. Щелкните на кнопке Добавить (Add).
4. Вероятно, система запросит путь к установочным файлам Windows 98.
Введите путь вручную или щелкните на кнопке Обзор (Browse) и найдите файлы.
Щелкните на кнопке ОК — протокол добавляется в список установленных
протоколов.
5. Щелкните на кнопке ОК в диалоговом окне Сеть (Network). Вам будет
предложено перезагрузить систему. Подтвердите перезагрузку, чтобы завершить
установку.
В процессе установки семейства протоколов TCP/IP система Windows 98 не
спрашивает, нужно ли настраивать DHCP; служба настраивается по умолчанию.
Следовательно, если в вашем сегменте IP протокол DHCP не используется,
необходимо перезагрузить систему и изменить настройку параметров TCP/IP.
Настройка реализации TCP/IP от Microsoft
Настройка параметров Microsoft TCP/IP (IP-адрес, маска подсети, основной
шлюз и т. д.) также производится в диалоговом окне Сеть (Network).
Установленный протокол TCP/IP появляется на вкладке Конфигурация (Configuration). Если
в системе установлено несколько сетевых плат или даже служба модемного
подключения, TCP/IP автоматически привязывается ко всем доступным
устройствам. Если вы захотите «отвязать» протокол от какого-либо адаптера, найдите
строку, изображающую привязку протокола TCP/IP к устройству, и щелкните
на кнопке Удалить (Remove). Данные привязки изменяются после того, как вы
закроете диалоговое окно Сеть (Network) кнопкой ОК. Если в окне будет нажата
кнопка Отмена (Cancel), внесенные изменения теряются.
Чтобы вручную настроить протокол TCP/IP для сетевого адаптера, дважды
щелкните в строке списка, изображающей привязку TCP/IP к сетевой плате
(кроме того, можно выделить строку и нажать кнопку Свойства (Properties)). На
экране появляется диалоговое окно свойств TCP/IP (рис. 22.3).
tl'DNS Conflgurdtion. J Шщгу I.-VANS &x^№$. '/ *Pj№ess J I
1 An IP address can be automatical assigned to this eonputer. j 1
^:::. ify^fle*¥rok<ioe£r«taUuma6c^ J j
Ш• •'' your network administrator tor an addte$i and then type km : j j
P;:: the space beiow. j j
W : jsrC::. Speedy an JP address: ~- •...^^.l-.:t.:,:1:_ • j!
|, j' $$г?,-л^<Ф.: \ .-...• l:-;.-.^K .;[•• ••;.. j. • ;j J
Г •' j , OK • j?:':|УЬпЬе1 |:j
Рис. 22.3. Диалоговое окно настройки параметров TCP/IP
По умолчанию диалоговое окно Свойства TCP/IP (TCP/IP Properties)
открывается на вкладке IP-адрес (IP Address ). На этой вкладке можно либо настроить
систему на использование DHCP, либо вручную настроить IP-адрес и маску
подсети. Дело в том, что минимальный набор данных, предоставляемых
сервером DHCP, включает IP-адрес и маску подсети. Конечно, при соответствующей
настройке сервер DHCP также может предоставлять дополнительные
параметры — например, адрес основного шлюза.
Настройка шлюза
Чтобы настроить основной шлюз вручную, перейдите на вкладку Шлюз (Gateway).
На этой вкладке можно задать один или несколько адресов шлюзов для вашего
компьютера. Адрес в начале списка используется по умолчанию, а остальные
адреса шлюзов используются только при недоступности основного шлюза.
Порядок обращения к шлюзам определяется порядком перечисления адресов в
списке (сверху вниз).
Настройка WINS
На компьютере с системой Windows 98 также следует по возможности ввести
данные сервера WINS. Сервер WINS преобразует имена NetBIOS в IP-адреса.
Служба WINS была обязательным сетевым интерфейсом в операционных
системах Microsoft до появления Windows 2000. При использовании Windows 98 с
семейством протоколов TCP/IP необходим механизм разрешения имен NetBIOS.
Механизмы разрешения имен NetBIOS, WINS и файл LMHOSTS
рассматриваются в главе 7.
На вкладке Конфигурация WINS (WINS Configuration) диалогового окна свойств
TCP/IP включается разрешение имен WINS и вводятся IP-адреса серверов
WINS (рис. 22.4). Если настроить разрешение имен WINS, компьютер с
системой Windows 98 будет использовать первый доступный сервер WINS для
разрешения имен NetBIOS. Если первый сервер WINS в списке недоступен, система
пытается связаться со вторым сервером. Обращение к каждому серверу WINS
в списке производится только в том случае, если предыдущий сервер WINS был
недоступен. Если какой-либо сервер ответил (даже если в ответе говорится, что
имя отсутствует в базе данных), связь с другими серверами WINS не
устанавливается.
• c©nfgureybi«cc^pui«lor.^NS. I j
К; '}■; •':; :Cj Й$ф1е WINS Яе$окШщ|.:, ". •
h • ■' |о:Щмш8 йвгокшшлл; щу
, ]<•• .] .£••. ']'. $Щ&& I '• v'. ' 1.1
•••;.^цЩ^Ш^Щ^' '■ •'•;'•'Щ/- ,M,ui,im^i,iiii","":,|:•••••! |
•; '.'•;'-''. ^Ш|.:--' 'ОК.•■'.•;.}•• '.Сапов! •■ |J
Рис. 22.4. На вкладке WINS вводятся адреса серверов WINS
или включается использование DHCP для разрешения имен
На вкладке Конфигурация WINS (WINS Configuration) также присутствует
текстовое поле Код области (Scope ID), которое обычно оставляется пустым. Поле
предназначено для ввода суффикса NetBIOS — произвольной комбинации
алфавитно-цифровых символов, присоединяемых к имени компьютера NetBIOS.
Например, если ввести в поле символы 123АВС, а компьютеру в системе присвоено
имя NetBIOS Server2, то полное имя системы имеет вид Server2.123ABC. Системы
Microsoft, использующие TCP/IP, могут общаться только с другими системами
Microsoft, имеющими тот же суффикс. Более того, поскольку суффикс изменяет
имя компьютера, в сети может существовать другой компьютер с тем же именем
Server2, но с другим суффиксом. Суффиксы NetBIOS создают путаницу с
именами и подключениями, поэтому на практике они используются редко.
По умолчанию в окне устанавливается переключатель Использовать DHCP для
распознавания WINS (Use DHCP for WINS Resolution). Это означает, что сервер DHCP
совмещен с сервером WINS и выполняет обе функции. Если в вашей ситуации
это т так, введите IP-адрес сервера WINS в текстовом поле.
Разрешение имен WINS можно отключить. В частности, это уместно в тех
случаях, когда служба WINS не используется в сети для разрешения имен. При
отключении WINS система не будет пытаться искать сервер WINS в сети. Если
разрешение WINS включено, а в сети нет ни одного сервера WINS, клиент лишь
зря потратит время на поиски сервера WINS.
Конфигурация DNS
Вероятно, кроме имен NetBIOS вам также потребуется разрешение имен хостов
вида www.informIT.com. Это особенно важно при подключении к Интернету или
при наличии в сети хостов, не использующих системы Microsoft. Чтобы
настроить разрешение имен хостов в системе, перейдите на вкладку Конфигурация DNS
(DNS Configuration) — рис. 22.5.
Г-0Ш0Йдиг^оп j Gateway ] WIWS Солй^г^с^ j• IP^tMeis |
x; ,; ::;^,Р^5Ш1 : . . . :
■i:;• jif %nabJe DNS ••::;:-.f :;:;-;v; ::•■•-" ;"::-"] ■
:V j ;•;.:.:: I %**£$■?$ j ; j j ]
Г..-:- • * ;-:'::::-'.|:.:J i \ ]
г • I * 11
Рис 22.5. На вкладке DNS можно разрешить или запретить использование DNS,
а также настроить различные параметры
Если щелкнуть на кнопке Включить DNS (Enable DNS), вы сможете ввести имена
хоста и домена для своего компьютера с Windows 98. Обычно хостовое имя
компьютера совпадает с именем NetBIOS. Использование другого имени NetBIOS
усложняет отладку, поскольку одни программы пытаются связываться с
компьютерами по хостовому имени, а другие используют имя NetBIOS.
На этой вкладке также задаются адреса серверов DNS, обеспечивающих (таре-*
образование имен хостов в IP-адреса. Адреса используются по тем же правилам,
что и адреса серверов WINS на вкладке Конфигурация WINS — если первый
сервер DNS ответил, то система не пытается связываться с остальными серверами
DNS даже в том случае, если первый сервер не располагает адресом для данного
имени. Обращение к каждому серверу в списке производится только в том
случае, если предыдущий сервер недоступен.
Если сервис DNS в сети не поддерживается, то разрешение имен DNS
желательно отключить. Если сеть подключена к Интернету, то DNS понадобится
клиенту для разрешения web-адресов вида http://www.miaosoft.com. Тем не менее,
если подключение по доменным или хостовым именам не обязательно или не
желательно, использование DNS можно запретить. Во внутренних сетях,
использующих только системы Microsoft, сервис DNS не нужен (если в сети не
используются внутренние web-серверы с доменными или хостовыми именами).
Настройка привязки
Вкладка Привязка (Bindings) определяет, с какими службами может
взаимодействовать тот или иной протокол. Например, если протокол TCP/IP должен
использоваться для работы с сетевыми службами, но не для совместного доступа к
файлам, настройка привязок показана на рис. 22.6.
L^ ib"N$ С!ютйзыиййп'J" GTatewasn':| 'WINS Corrfiguation j IP Address I 1
Bincfings j: Advanced j NetBIOS |
Oick the network components lhat wiB communicate using this j j
protocol To improve your computer's speed, click ordy the 11
;• components that need to usethts protocol. j I
|[#j Client for Microsoft Networks j j
В Re and printer sharing lor Microsof t Network? j. j
W-' If
W ■■■ Л
'•■/ [. OK I ^^ 1 1
Рис. 22.6. Если протокол не должен использоваться для совместного доступа
к файлам, отключите привязку соответствующей службы к TCP/IP
Флажок Служба доступа к файлам и принтерам сетей Microsoft (File and printer
sharing) снят, а флажок Клиент для сетей Microsoft (Client for Microsoft Networks)
установлен. Это означает, что TCP/IP может использоваться для подключения
к другим системам Microsoft с общими файлами и принтерами, но эти системы
не могут воспользоваться TCP/IP для подключения к вашим локальным
файлам и принтерам.
Установка службы совместного доступа к файлам
и принтерам для сетей Microsoft
Если служба совместного доступа к файлам и принтерам не установлена, она не
будет присутствовать на вкладке Привязка (Binding) и другие клиенты Microsoft
не смогут подключиться к вашей системе для работы с общими файлами и
принтерами. Чтобы установить службу доступа к файлам и принтерам для сетей
Microsoft, выполните следующие действия:
1. Откройте диалоговое окно Сеть (Network) — щелкните правой кнопкой мыши
на значке Сетевое окружение (Network Neighborhood) и выберите команду
Свойства (Properties) в контекстном меню.
2. Щелкните на кнопке Добавить (Add).
3. Выделите строку Служба (Service), затем щелкните на кнопке Добавить (Add).
4. Выберите в списке производителей строку Microsoft и убедитесь в том, что в
списке Сетевые службы (Network Services) появилась строка Служба доступа к файлам
и принтерам (File and Printer Sharing).
5. Щелкните на кнопке OK и введите путь к установочным файлам, если система
запросит его.
6. Щелкните на кнопке ОК, чтобы подтвердить введенный путь, и затем еще раз —
для подтверждения установки.
7. Перезагрузите систему.
Дополнительная настройка
На вкладке Дополнительно (Advanced) имеется только одна полезная
возможность — флажок Использовать данный протокол по умолчанию (Set This Protocol to
Be the Default Protocol). Если выбрать этот флажок, клиентская система пытается
использовать TCP/IP перед всеми остальными настроенными протоколами.
Если в системе установлен только протокол TCP/IP, он автоматически
назначается протоколом по умолчанию.
NetBIOS
Вкладка NetBIOS в действительности не позволяет настраивать параметры. У
клиентов сетей Microsoft, предшествующих Windows 2000, служба NetBIOS была
важной частью сетевой поддержки, использующей семейство протоколов TCP/IP.
Флажок отключения NetBIOS через TCP/IP заблокирован и всегда остается
установленным. Поддержку NetBIOS можно разрешить или запретить для
IPX/SPX-совместимых протоколов, но не для TCP/IP.
Статические конфигурационные файлы
Файлы HOSTS и LMHOSTS.SAM (см. главу 7) находятся в корневом каталоге Windows.
ПРИМЕЧАНИЕ
Помните, что корневой каталог системы Windows не всегда называется «Windows». Чтобы
определить имя корневого каталога Windows, введите команду %windir% в диалоговом окне выполнения
Выполнить. Окно вызывается командой Пуск ► Выполнить (Start ► Run).
В корневом каталоге Windows также находится другой статический
конфигурационный файл с именем SERVICES (обратите внимание на отсутствие
расширения). Содержимое файла SERVICES соответствует списку хорошо известных
номеров портов служб TCP и UDP, приведенному в RFC 1700 (в самом файле
говорится, что он соответствует RFC 1060, но этот RFC был пересмотрен в RFC
1700 — см. http://www.ietf.org/rfc/rfcl700.txt). В файле SERVICES перечислены
различные службы, номера портов и протоколов, назначенные хорошо известным
службам в RFC. В частности, в файле указаны номера портов команд и данных
FTP B1/TCP и 20/ТСР соответственно). По содержимому этого файла
встроенный клиент FTP от Microsoft определяет, какие порты должны использоваться
для коммуникаций FTP. Модификация файла приводит к изменению порта
по умолчанию, используемому программой FTP режима командной строки. Тем
не менее файл SERVICES используется не всеми программами TCP/IP. Более
того, некоторые программы обращаются к файлу SERVICES лишь после
специальной настройки параметров. Многие программы независимых фирм и даже
браузер Microsoft Internet Explorer не используют файл SERVICES.
Настройка реестра
Многие важные параметры настройки TCP/IP отсутствуют в диалоговом окне
свойств TCP/IP и находятся только в реестре Windows 98. В этом разделе
будут рассмотрены основные параметры конфигурации TCP/IP, настройка
которых производится на уровне реестра.
ПРИМЕЧАНИЕ
Другие параметры конфигурации TCP/IP в реестре Windows 98 более подробно описаны в статье
Knowledge Base Q158474 на сайте www.microsoft.com/support или в технической документации
Microsoft Tech Net.
Все параметры, описанные в этом разделе, настраиваются в разделе HKEY_
LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP (рис. 22.7).
Редактирование реестра Windows 98 производится следующим образом:
1. Выполните команду Пуск ► Выполнить (Start ► Run).
2. Введите команду REGEDIT и щелкните на кнопке ОК.
3. Команда REGEDIT может вводиться как прописными, так и строчными
буквами. В Windows 98 имена подавляющего большинства команд вводятся без
учета регистра символов.
ПРИМЕЧАНИЕ
Модификация реестра может привести к сбою системы вплоть до того, что систему не удастся
нормально перезапустить. Соответственно, изменяйте только те параметры реестра, в которых вы
твердо уверены, и не экспериментируйте в системе, которая выполняет особенно важные
функции. Перед редактированием рекомендуется создать резервную копию реестра. Экспортирование
реестра выполняется следующим образом:
1. Выполните команду Пуск ► Выполнить (Start ► Run).
2. Введите в диалоговом окне команду REGEDIT.
3. В открывшемся окне редактора реестра откройте меню Реестр (Registry) и выберите команду
Экспорт файла реестра (Export Registry).
4. Введите имя файла (например, RegSave).
5. Задайте каталог, в котором будет сохраняться файл.
6. Щелкните на кнопке Сохранить (Save).
7. Закройте редактор реестра. Файл архива (RegSave.reg) появляется в том каталоге, в котором
он был сохранен.
Если после редактирования реестра система перестает нормально работать, дважды щелкните на
сохраненном файле, чтобы вернуться к старой конфигурации.
Если вы хотите заархивировать физические файлы, образующие реестр, найдите файлы system.dat
и user.dat в каталоге Windows и скопируйте их в другое место. Если после внесения изменений
система не загружается, скопируйте файлы system.dat и user.dat обратно в каталог Windows.
■ ДедЫу £d* yiew jjslp '\ '' ; = • •/ '• :=;:-.-\ '';':'.'.[■■. . .•• ..-. • :
I! ) Г+: LJ RemoteAccess3 l Waime^__.____J^L^.iLL™w.^^^.^.L~~~—* J
II ; p UPDATE j|»||Deiault) "(value not self ~ ~ \
I Й-О VxD IgjEnableDNS " J
I] I CJ AFVXD J*b]LMHo$tFile TAWINDOWSXImhosls" |
:- !■ OJ ASPIENUM 1
II K^B,os i I
i-CJ BIOSXLAT l
II ;■ CJ CnrApiEng 11 j
Г) i-Cl COMBUFF j
J : Ж p CQNFIGMG U j
1 • "CJ CyberKm :| j
: I D DFS
i It) О DHCP
I : S) CJ DHCPOptions
:-Cj dosmgr j
: p IFSMGR :j
Q I0S
\\ •■ ^ D ISAPNP J I
• ! p JAVAS„UP 1 J
j [+1 CJ Parameters j I
I • ■ О Se-rviceProvider ▼]|< \ '.'.''"'•''•:,:. ''.: ':'••"'"■'•''• ■'' I ►)[
;My Cc^'a^ •.•?••:' , }
Рис. 22.7. Для изменения параметров конфигурации TCP/IP в реестре
используется программа regedit.exe
Включение маршрутизации
Если компьютер с Windows 98 должен использоваться в качестве статического
маршрутизатора, внесите соответствующие настройки в реестр Windows 98. Для
этого следует найти в реестре ключ MSTCP и добавить в него строковый
параметр с именем EnableRouting и значением 1. Это делается так:
1. Выполните команду Пуск ► Выполнить (Start ► Run).
2. Введите в диалоговом окне команду REGEDIT.
3. Последовательно щелкая на значках +, раскройте нужную ветвь реестра и
выберите ключ MSTCP (рис. 22.7).
4. Откройте меню Правка (Edit) и выберите команду Создать ► Строковый
параметр (New ► String Value).
5. На правой панели редактора появляется новый параметр. Введите имя
EnableRouting и нажмите клавишу Enter.
6. Дважды щелкните в строке EnableRouting.
7. Введите в поле Значение (Value Data) строку 1.
8. Щелкните на кнопке ОК и закройте редактор реестра.
Чтобы убедиться в том, что в результате изменений в реестре действительно
была включена маршрутизация, воспользуйтесь программой winipcfg. Запустите
WINPCFG из диалогового окна Выполнить; щелкните на кнопке Сведения (More
Info). Вы увидите, что флажок Маршрутизация IP (IP Routing Enabled) установлен
(рис. 22.8).
г- Host Information ^Vlbrjx^ww:.".":- ::;:;:•; у :■-/:-: г •
1 • • НоайШр" KURT ч
; DNS ServerЛ ^20470.123.1
NodeTypef Broadcast
; ... NdBlOSScopf jd|: :; !
.' IP Routing ЕпаЬЙ £/ • WINS Proxy Enabled
] NetBIOS Resolution UsesDfef"
r Ethernet Adapter Information —,- •'- r :..:.:...;.r
i I:; JPPPAdapter.2j\
I Adapter Addresif" 4445'5>54-00-00
; IP Addre^ Г ' : 1£5.1 Vs. 138 203
Subnet Mask f ""'255 255 00
• ; Default Gatewayi'7 " 165.113.156.203
[ DHCP Server f "'Ж.255\ 25&2S5
I Primary WINS Sever p™ "
5 Secondary WINS Server Г
. Lease Obtained f: 0101801200:00 AM ll
■ t \
\\ tease EspjfesS . 0101801200.00AM ]
Г I- — "^l r'kj?;^- I ■*'■■■■"■ I Re^eAll j RenewАЯ |
Рис. 22.8. Включение маршрутизации IP в реестре
проверяется при помощи программы WINIPCFG
В Windows 98 и реализацию TCP/IP от Microsoft не входят протоколы
маршрутизации (такие, как RIP или OSPF). Следовательно, таблицы
маршрутизации Windows 98 придется обновлять вручную. Чтобы разместить статические
маршруты на новом маршрутизаторе, следует выполнить команду route:
1. Откройте приглашение командной строки.
2. Введите команду route /?.
3. Нажмите клавишу Enter для получения дополнительной информации.
При включении маршрутизации также можно задать размер буфера
маршрутизации, по умолчанию равный 73 216. Если вы хотите изменить буфер
маршрутизации, добавьте в раздел MSTCP строковый параметр RoutingBufSize и задайте
нужное значение. Также можно задать числовой параметр RoutingPackets,
определяющий количество одновременно маршрутизируемых пакетов (по умолчанию
равное 50).
Случайный выбор сетевого адаптера
Параметр реестра Random Adapter предназначен для компьютеров Windows 98,
оснащенных несколькими сетевыми платами. При включении этого параметра
система Windows 98 возвращает случайно выбранный адрес из набора своих
IP-адресов независимо от того, какая сетевая плата приняла запрос. Такой
режим может пригодиться для распределения нагрузки между несколькими
сетевыми адаптерами. Чтобы настроить этот режим, добавьте в раздел MSTCP
строковый параметр RandomAdapter и задайте ему значение 1. По умолчанию сетевые
платы Windows 98 возвращают адрес, получивший запрос.
Тайм-аут при разрешении имен
Когда клиент WINS с системой Windows 98 пытается преобразовать имя
компьютера NetBIOS в IP-адрес, он обращается к серверу WINS до трех раз с интервалом
750 миллисекунд, прежде чем пытаться использовать другой метод разрешения
имен. Включение строковых параметров NameSrvQueryCount и NameSrvQueryTimeout
в раздел MSTCP реестра позволяет изменить стандартную процедуру разрешения
имен в Windows 98. Параметр NameSrvQueryCount определяет, сколько раз клиент
Windows 98 попытается связаться с сервером WINS перед наступлением тайм-
аута. Параметр NameSrvQueryTimeout определяет период времени, по истечении
которого клиент Windows 98 либо попытается снова связаться с сервером WINS,
либо откажется от дальнейших попыток.
Если клиент Windows 98 не настроен на использование сервера WINS или не
получает от него ответа, он пытается преобразовать имя компьютера NetBIOS
в IP-адрес посредством широковещательной рассылки. По умолчанию система
производит три рассылки с интервалом 750 миллисекунд, после чего прекращает
дальнейшие попытки. Эти количественные характеристики по умолчанию
определяются параметрами BcastNameQueryCount и BcastNameQueryTimeout раздела MSTCP.
Срок жизни пакетов по умолчанию
По умолчанию срок жизни пакетов IP, отправляемых системой Windows 98,
равен 32. Чтобы изменить срок жизни пакетов IP в Windows 98, следует
добавить строковый параметр DefaultTTL в раздел MSTCP реестра. Значение параметра
определяется максимальным количеством переходов, после которого пакет
должен прекратить свое существование.
Размер окна TCP
По умолчанию размер окна TCP в Windows 98 равен 8192. Чтобы изменить это
значение, включите в раздел MSTCP реестра Windows 98 строковый параметр
DefaultRcvWindow. Значение параметра определяет количество байт, которые
могут быть переданы отправителем без предварительного подтверждения
предыдущей отправки.
Тестирование TCP/IP
В комплект поставки Windows 98 входит несколько утилит, предназначенных для
тестирования конфигурации TCP/IP после ее установки. В число основных
утилит немедленной проверки конфигурации входят утилиты ping, tracer! и WINIPCFG.
После установки семейства протоколов TCP/IP вы можете проверить
конфигурацию при помощи программы WINIPCFG. Если настройка системы
осуществлялась с применением протокола DHCP, программа WINIPCFG покажет параметры,
переданные сервером DHCP. Если параметры настраивались вручную, WINIPCFG
поможет убедиться в правильности введенных данных.
Утилита ping проверяет наличие связи с другими системами. Проверку
настройки протокола следует начать с адреса обратной связи.
1. Откройте приглашение командной строки — введите команду command в
диалоговом окне Выполнить (Run) и нажмите Enter. На экране появляется окно
с приглашением командной строки.
2. Введите команду ping 127.0.0.1 и нажмите клавишу Enter.
Вы должны получить ответ от вашей системы. Если ответа не будет,
переустановите семейство протоколов TCP/IP. Если ответ будет получен, произведите
опрос по своему IP-адресу (как говорилось выше, для получения IP-адреса
можно воспользоваться программой WINIPCFG).
Если адрес обратной связи и адрес локальной системы работают нормально,
попробуйте проверить локальный основной шлюз. Если шлюз ответит, проверьте
хост в удаленной сети. Если и эта проверка завершится успешно, значит, TCP/IP
работает нормально. Если на компьютере были настроены службы
разрешения имен (такие, как DNS и WINS), опросите эти серверы и убедитесь в их
доступности.
При возникновении проблем с получением ответа от удаленного хоста
воспользуйтесь утилитой tracer! Программа tracert запускается из командной строки
и предназначается для отслеживания маршрута к удаленному хосту от
локальной системы. Tracert последовательно генерирует сообщения ICMP с постоянно
увеличивающимся сроком жизни. Это позволяет проследить путь запроса от
локальной системы к удаленной и получать информацию о его прохождении.
Если запрос останавливается где-то на своем пути, вы будете знать, где в сети
следует искать проблемы.
Для проверки конфигурации разрешения имен DNS воспользуйтесь
программой ping или tracert с именами хостов. Попробуйте связать диск с именем
сервера Microsoft, чтобы убедиться в правильности работы разрешения имен
NetBIOS. Если при выполнении какой-либо из этих операций возникнут
проблемы, проверьте конфигурацию соответствующего сервера и своей системы.
NBTSTAT
Программа NBTSTAT (NetBIOS over TCP/IP Status) предназначена для
получении информации о работе NetBIOS на базе TCP/IP. Чтобы запустить эту
программу, откройте приглашение командной строки и введите команду NBTSTAT /?.
В окне выводится список ключей команды NBTSTAT.
Команда NBTSTAT -С выводит информацию о состоянии кэша имен NetBIOS.
По умолчанию сведения о связи имен NetBIOS с IP-адресами хранятся в кэше
имен в течение 360 000 миллисекунд (то есть 6 минут). Чтобы изменить
продолжительность хранения информации в кэше, добавьте параметр CacheTimeout
в раздел реестра MSTCP и задайте другое число. Команда NBTSTAT -R очищает
и инициализирует кэш имен NetBIOS. Если в системе имеется файл LMHOSTS,
содержащий записи с тегом #PRE, в результате выполнения команды NBTSTAT -R
эти записи будут загружены в кэш.
ПРИМЕЧАНИЕ
Содержимое файла LMHOSTS описано в файле LMHOSTS.SAM, находящемся в корневом каталоге
Windows. Чтобы получить дополнительную информацию, откройте файл LMHOSTS.SAM в Блокноте
или в другом текстовом редакторе.
Еще одна полезная возможность утилиты NBTSTAT — получение таблицы
имен локального или удаленного хоста. Введите команду NBTSTAT -А с
IP-адресом компьютера, для которого следует получить таблицу имен. Если вы
предпочитаете использовать имя удаленного компьютера, введите команду NBTSTAT -a
с именем удаленного компьютера. Также можно ввести имя или IP-адрес вашей
системы, чтобы проверить содержимое ее таблицы имен. Команда также
выводит адрес MAC удаленной системы.
NETSTAT
Полезная утилита NETSTAT предназначена для проверки соединений TCP и UDP.
Например, команда NETSTAT -р TCP используется для проверки состояния
протокола TCP; вы получите список используемых портов TCP. Команда NETSTAT -s
выводит полную информацию о текущем состоянии всех протоколов.
ARP
Все локальные IP-адреса должны преобразовываться в адреса MAC. Программа
ARP используется для просмотра адресов MAC локальных систем, находящихся
в локальном кэше ARP. Если IP-адрес был разрешен один раз, но не
использовался снова, соответствующая запись остается в кэше ARP в течение двух
минут. Если адрес был снова использован в течение двух минут, срок жизни записи
ARP равен десяти минутам. В кэш ARP также можно добавить статические
данные, которые остаются в нем до перезагрузки системы. Статические записи
позволяют уменьшить количество широковещательных запросов ARP для
адресов MAC в локальном сегменте. Чтобы получить информацию о синтаксисе
добавления статических записей ARP, введите команду ARP /? в командной
строке Windows 98.
Итоги
Фирма Microsoft разработала собственную реализацию семейства протоколов
TCP/IP для операционной системы Windows 98. Реализация TCP/IP от Microsoft
включает поддержку интерфейсов NetBIOS и Windows Sockets для поддержки
программ, ориентированных на NetBIOS и Unix (например, ping и tracert). Кроме
того, стек IP от Microsoft поддерживает спецификацию NDIS, что позволяет
привязать несколько протоколов к одной или нескольким сетевым платам.
Установка и настройка семейства протоколов TCP/IP производится в
диалоговом окне Сеть (Network). Протоколы устанавливаются кнопкой Добавить (Add).
Чтобы изменить конфигурацию протоколов после установки, вызовите
диалоговое окно Сеть (Network) и найдите строку нужного протокола. Дважды щелкните
на ней — открывается диалоговое окно свойств TCP/IP. Нужные параметры
настраиваются на вкладках этого окна.
Если нужные параметры отсутствуют в окне свойств TCP/IP, вероятно, вам
придется настраивать их в редакторе реестра Windows. Настройка параметров
TCP/IP в реестре Windows 98 описана в статье Microsoft Knowledge Base Q158474
(http://support.microsoft.eom/support/kb/articles/ql58/4/74.asp).
Следующая глава посвящена настройке Windows 98 для модемного
подключения к Интернету. Многие концепции этой главы в равной степени относятся
и к следующей главе, но процесс настройки модема несколько отличается от
процесса настройки сетевой платы для локальной сети.
*к ^* Настройка TCP/IP
4Jb Windows 2000
Kapawicum С. Сияй (Karanjit S.Siyan)
Глава посвящена вопросам установки и настройки сетевых компонентов и
протоколов TCP/IP в Windows. Также рассматривается процесс настройки рабочих
станций Windows 2000. Обычно протокол TCP/IP устанавливается вместе с
другими сетевыми средствами во время установки операционной системы. Впрочем,
иногда автономный компьютер требуется подключить к сети после добавления
соответствующего сетевого оборудования. В таких случаях поддержку TCP/IP
приходится устанавливать вручную.
В этой главе вы также научитесь настраивать стек TCP/IP для
использования сетевых служб WINS и DNS.
Установка TCP/IP
Программа установки Windows 2000 автоматически включает поддержку стека
протоколов TCP/IP при установке любых сетевых служб. В этой главе описана
процедура установки и настройки стека протоколов TCP/IP Windows 2000.
Необходимость в ручной установке TCP/IP возникает только в том случае, если
поддержка стека была удалена ранее, но теперь ее потребовалось установить
заново. Выполните следующие действия:
1. Зарегистрируйтесь на компьютере с системой Windows 2000 с правами
администратора.
2. Выполните команду Пуск ► Настройка ► Сетевые подключения (Start ► Settings ►
Network and Dial-Up Connections). Щелкните правой кнопкой мыши на команде
Подключение по локальной сети (Local Area Network) и выберите команду
Свойства (Properties). На экране появляется диалоговое окно свойств подключения
по локальной сети (рис. 23.1). Его также можно открыть другим способом —
щелкните правой кнопкой мыши на значке Сетевое окружение (My Network
Neighborhood) и выберите команду Свойства (Properties). Затем щелкните правой
кнопкой мыши на значке Подключение по локальной сети (Local Area Network)
и выберите команду Свойства (Properties).
3. Чтобы переустановить стек протоколов TCP/IP, щелкните на кнопке
Установить (Install). Появляется диалоговое окно Выбор типа сетевого компонента
(Select Network Component Type) (рис. 23.2). Выберите строку Протокол (Protocol)
и щелкните на кнопке Добавить (Add). В диалоговом окне Выбор сетевого
протокола (Select Network Protocol) отображается перечень протоколов для установки.
4. Выберите строку Протокол TCP/IP и щелкните на кнопке ОК.
5. Завершите процедуру установки по отображаемым инструкциям.
После установки протокола TCP/IP наступает следующий этап — настройка
основных параметров TCP/IP.
. General | Sharing | /ШШГ
Connect ushg I I
j m 3Com EtherLinkШ0Л 00 Pd NIC (X905*TX) ~
: I Configure } j j
Components checked are i&&i by this connection:
| i^TNWLink NetBIOS 3
J l?<) "Г" ЫЧ^гшк IPX/SPK/NetBIOS Compatible Transparr Proto
ШT*Network Monitor Drive* _J
l.iJ-■..•.....;..;,,. _*. 12Г
г Description- : I I
; E^ablelorhet Windows comput«s to access NetWare • I
. servers witl^t ruir^ NetWare Client Software. !
P Show ben in ta^bar when connected II
OK | Caned ||
Рис. 23.1. Диалоговое окно свойств подключения по локальной сети
Dck the type of network component you want to install:
jMhHI ^v
ШЦ Service i
ПГ Protocol Щ
rDesertion —— - - —• ~i
: A client provide» access to computer* and files on j ]
. ! the network you are connecting to. -Ш j
| Add.. | Cancet j j
Рис. 23.2. Диалоговое окно выбора типа сетевого компонента
Настройка IP-адреса
Каждый сетевой интерфейс, обслуживаемый стеком протоколов TCP/IP,
описывается набором параметров IP. К числу таких параметров относится IP-адрес,
маска подсети, шлюз по умолчанию и IP-адреса серверов имен. Как минимум
для каждого сетевого интерфейса должен быть задан IP-адрес и маска подсети.
Настройка параметров IP может производиться двумя способами: вручную
или автоматически. При ручной (статической) настройке параметров IP
необходимо вести учет IP-адресов всех компьютеров, а также назначить уникальный
IP-адрес каждому сетевому интерфейсу. Из-за невнимательности часто
происходят ошибки настройки IP, которые обходятся довольно дорого из-за времени,
затрачиваемого на отладку. По этой причине во многих сетях используется
механизм автоматической настройки параметров IP с центрального сервера
(например, сервера DHCP).
Если вы не используете протокол DHCP для динамического назначения
IP-адресов в Windows 2000 Server, на экране появляется диалоговое окно свойств
TCP/IP (рис. 23.3).
General I
You can ge* IP settings assigned automatical if you network supports
this сараЫШу. Otherwise, you пъъй. to. ask your network асЫпЫга1ог for j
the appropriate IP settings;
Г Obtain anIP address aufoinaticaJjy
:■■■(• U^theto|fowr^lPadAes?:r""™ ;
\ IP address:. : ;:.: j 10 . 0 . 0 . 102 \
\ Subnet rrtask: . \.\/-:-.j 255 . 0.0.0 !
\ Default gateway: :./• J 10 0 0 .114 j
г-*? Use the following DNS server addresses: ; jj
| Preferred DNS server: ::, ;j 10 . 0 . 0 .102 j
: | Alternate DNS server: . j 63 24 . 13 Л18 j
I [ _ ...,.,'. •■■■■,■'■■•„■■■,,.• „. Л i I j
Advanced., j j j
j OK ] СапЫ'" |
Рис. 23.3. Диалоговое окно свойств TCP/IP
Диалоговое окно также можно вызвать другим способом — выбрать строку
Протокол Интернета (TCP/IP) (Internet Protocol TCP/IP) в диалоговом окне свойств
подключения по локальной сети. В этом диалоговом окне задается IP-адрес,
маска подсети и адрес основного шлюза для сетевого интерфейса. IP-адрес,
маска подсети и настройки основного шлюза должны соответствовать
параметрам сети, к которой подключен компьютер с Windows 2000. Например, если эта
сеть описывается сетевым адресом 192.120.12.0/255.255.255.255, то значения
IP-адресов компьютеров, принадлежащих этой сети, должны находиться в
интервале 192.120.12.1 - 192.12.12.254 с маской подсети 255.255.255.0.
IP-адрес основного шлюза также должен входить в этот интервал, поскольку
шлюз должен находиться в той же сети.
Настройка IP-адреса производится следующим образом:
1. Если в сети уже работает сервер DHCP и вы хотите использовать его для
настройки компьютера с Windows 2000, установите переключатель Получить
IP-адрес автоматически (Obtain an IP address automatically). Сервер DHCP
содержит сведения о конфигурации TCP/IP, используемые другими хостами
TCP/IP. При запуске хост TCP/IP запрашивает свои конфигурационные
данные у сервера DHCP.
2. При автоматическом получении IP-адреса компьютер принимает IP-адрес
и маску подсети с сервера. Если ввести значения IP-адреса и маски подсети,
работа клиента DHCP блокируется и он не принимает никакой информации
с сервера DHCP.
3. Если сервер DHCP не работает в сети или его функции должны выполняться
сервером Windows 2000, IP-адрес и маска подсети вводятся вручную в
соответствующих полях (см. рис. 23.3).
4. Если сеть подключена к другим сетям или подсетям TCP/IP, следует
заполнить поле Основной шлюз (Default Gateway), чтобы вы могли связаться с другими
сетями. TCP/IP определяет, что адрес получателя относится к другой сети,
и направляет пакет основному шлюзу (а точнее говоря, основному
маршрутизатору — термин «основной шлюз» продолжает использоваться, поскольку
устройства, называемые маршрутизаторами, раньше назывались шлюзами).
5. Если на компьютере установлено несколько сетевых плат, каждая из них
настраивается по отдельности. Задайте параметры конфигурации IP (IP-адрес,
маска подсети, основной шлюз, использование сервера DHCP) для каждого
адаптера с привязкой к протоколу TCP/IP, последовательно выбирая сетевые
платы в списке.
6. Щелкните на кнопке Дополнительно (Advanced), если потребуется настроить
несколько IP-адресов или несколько основных шлюзов для одной сетевой
платы, а также для настройки параметров безопасности. Учтите, что параметры
конфигурации IP в этом диалоговом окне относятся только к выбранной
ранее сетевой плате. Процедура настройки WINS/DNS будет описана ниже
в этой главе.
7. Чтобы задать несколько IP-адресов и масок подсети для выбранной сетевой
платы, введите нужные значения в соответствующих полях диалогового окна
Дополнительные параметры TCP/IP (Advanced TCP/IP Settings), изображенного на
рис. 23.4, и щелкните на кнопке Добавить (Add).
8. Возможность определения нескольких IP-адресов и масок подсетей особенно
полезна в ситуациях, когда одна физическая система должна выглядеть как
несколько логических систем. Например, почтовому серверу назначается адрес
199.245.180.1, серверу DNS - адрес 200.1.180.2, а серверу FTP - 203.24.10.3.
Кроме того, использование нескольких IP-адресов и масок подсетей упрощает
переход на другую схему назначения IP-адресов в сети. Множественные
IP-адреса также используются в сетях, состоящих из нескольких логических
сетей IP.
• IP Settings ] от j WINS | Options | .:.
■!. : IP addfesses
I I IP address ] Si&net mask j :
I j i o.'o.'o.'i 02 255.o.ab !
' I Addl> j; j | Edit.. | Remove j j
г Default gateway's:
i I Gateway j Metric _ •
! mciaiu: "T """ Л ~ i
Add.'.. j Edit... | Remove j !
I rA erfac© metric: у II
1 °K 1 CanCd 1
Рис. 23.4. Диалоговое окно дополнительных свойств TCP/IP
9. Если потребуется настроить дополнительные шлюзы, введите их IP-адреса
в поле Основные шлюзы (Default Gateways) и щелкните на кнопке Добавить (Add).
10. В этом поле задаются IP-адреса маршрутизаторов в локальной сети. При
отправке пакета по IP-адресу, отсутствующему в локальной сети и не
включенному в локальную таблицу маршрутизации компьютера с Windows 2000,
используется основной шлюз. Если в системе определено несколько
основных шлюзов, они последовательно перебираются в порядке перечисления
(обращение к следующему шлюзу производится только в том случае, если
попытка связаться с предыдущим шлюзом оказалась безуспешной).
ПРИМЕЧАНИЕ
Чтобы удалить IP-адрес с маской подсети или данные шлюза, выделите соответствующую строку
в списке и щелкните на кнопке Удалить (Remove).
Назначение IP-адресов при отказе сервера DHCP
Если найти сервер DHCP не удается, клиент DHCP для Windows 2000 решает
проблему назначения IP-адресов несколько иначе. Если на компьютере с
Windows 2000 настроен режим автоматического получения IP-адресов, происходит
следующее:
1. При установке клиент пытается обнаружить сервер DHCP. Во многих сетях
TCP/IP используются серверы DHCP, настроенные администратором для
предоставления в аренду IP-адресов и назначения других конфигурационных
данных.
2. Если попытка обнаружить сервер DHCP завершается неудачей, Windows 2000
автоматически настраивает клиента DHCP с IP-адресом из
зарезервированной IANA сети класса В с адресом 169.254.0.0 и маской подсети 255.255.0.0.
Этот частный адрес зарегистрирован за Microsoft. Клиент DHCP при помощи
протокола ARP проверяет, не используется ли выбранный IP-адрес в
настоящее время. Если адрес используется, клиент выбирает другой IP-адрес и
делает новую попытку (до десяти раз). Когда клиенту DHCP удается найти
неиспользуемый IP-адрес, он настраивает интерфейс с этим адресом, но
продолжает в фоновом режиме обращаться к серверу DHCP через каждые пять
минут. Если сервер DHCP снова начнет работать, автоматически выбранные
данные заменяются сведениями, предоставленными сервером DHCP.
Если клиент DHCP ранее получил от сервера арендованный адрес,
последовательность событий выглядит несколько иначе:
1. Если во время загрузки срок аренды еще не истек, клиент пытается продлить
аренду у сервера DHCP. Если при этом клиенту не удается найти сервер DHCP,
клиент при помощи ping опрашивает основной шлюз, указанный в аренде. Если
шлюз отвечает, клиент приходит к выводу, что он все еще находится в сети,
где был получен текущий арендуемый адрес, но сервер DHCP по какой-то
причине временно недоступен; в этом случае клиент продолжает использовать
арендованный адрес. После истечения половины срока аренды клиент в
фоновом режиме пытается возобновить аренду. Попытки возобновления аренды по
прошествии половины интервала является частью стандартной операции DHCP.
2. Если попытка опроса основного шлюза завершается неудачей, клиент считает,
что он был перемещен в сеть, не поддерживающую сервиса DHCP. Далее
клиент производит автоматическую настройку описанным выше способом
для сети 169.254.0.0/24. После этого он продолжает свои попытки связаться
с сервером DHCP каждые 5 минут.
Настройка параметров DNS
Пользователи обычно идентифицируют хосты по именам DNS. Компьютер с
системой Windows 2000 должен разрешить имя DNS, то есть преобразовать его в
соответствующий IP-адрес. В Windows 2000 имеется клиент DNS, также
называемый резолъвером, который выдает запросы к серверу DNS на разрешение имен.
На компьютере с Windows 2000 должен быть задан IP-адрес как минимум одного
сервера DNS. Поскольку сервис разрешения имен имеет критическое значение
для работы Windows 2000, в сети следует поддерживать дополнительный сервер
DNS на случай отказа основного сервера.
Адреса серверов DNS в Windows 2000 настраиваются на вкладке DNS в
диалоговом окне Дополнительные параметры TCP/IP (Advanced TCP/IP Settings). DNS
является самым распространенным механизмом разрешения имен в Интернете
и в сетях на базе Unix. При включении разрешения имен DNS в сети должен
работать сервер DNS, с которым может связаться клиент Windows 2000. Адрес
сервера указывается на вкладке DNS. В этом разделе рассматривается
клиентская часть DNS.
Если настройка параметров IP осуществляется при помощи сервера DHCP,
то последний также может использоваться для настройки параметров DNS
клиента Windows.
Непосредственное обращение к другим хостам TCP/IP в сети производится
по IP-адресам. Пользователи обычно предпочитают запоминать и использовать
символические имена вместо IP-адресов. В системе DNS имена узлов TCP/IP
(как компьютеров с Windows 2000, так и хостов Unix) имеют иерархическую
структуру вида wksl.kinetics.com или wk2.cello.org. DNS является наиболее
распространенной системой формирования имен для хостов Unix и Интернета. Если
вы планируете использовать компьютер с системой Windows 2000 в сети Unix
или в Интернете, настройте Windows 2000 на использование DNS. Приложения
TCP/IP, написанные для программного интерфейса Windows Sockets (например,
Internet Explorer, FTP и Telnet), производят разрешение символических имен
при помощи DNS или по локальному файлу HOSTS.
При установке TCP/IP на компьютере с системой Windows 2000 также
устанавливается клиент DNS. Помимо динамического разрешения имен, клиент DNS
также используется для разрешения имен компьютеров NetBIOS на серверах
WINS. Настройка DNS на компьютере с Windows 2000 относится ко всем
сетевым платам, установленным на компьютере.
Ниже описана процедура настройки клиента DNS на компьютере с
Windows 2000.
1. Перейдите на вкладку DNS диалогового окна Дополнительные параметры TCP/IP
(Advanced TCP/IP Settings), изображенного на рис. 23.4. Внешний вид вкладки
показан на рис. 23.5.
2. Чтобы добавить в список IP-адрес сервера DNS, щелкните на кнопке Добавить
(Add). Редактирование IP-адреса производится при помощи кнопки Изменить
(Edit). Чтобы удалить адрес из списка, щелкните на кнопке Удалить (Remove).
Клиент DNS пытается разрешить имена DNS, связываясь с первым сервером
в списке. Если разрешить имя не удается, клиент пытается обратиться ко
второму серверу и т. д. до тех пор, пока не будут опробованы все серверы.
Порядок перебора серверов DNS изменяется при помощи кнопок со стрелками
справа от списка.
Следующие три параметра относятся ко всем подключениям TCP/IP и
используются для разрешения неполных доменных имен.
IP Settings DNS jv/INS j Option |
DNS server addresses, in order of u$e:
]63 224 13.11^^^^^^^^^^^^^^^^^ JLl
Add... j Edit... j Remove |
f The following three settings are applied to ail connections with ТСРУ1Р j j
;:: enabled f- or resolution of unquaSfied пагле?:
И (• Append primary and connection specific DNS suffixes
■ Г" Append parent suffixes of the primary DNS suffix ] j
: Г Append these DNS suflwes.fa order):
[ и
DNS suffix for this connection: jsiyan.com
. P Register tHs connection's addresses in DNS j
Г" Use this connection's DNS suffix in DNS registration j
| OK \ Cancel |
Рис. 23.5. Вкладка DNS диалогового окна дополнительных параметров TCP/IP
Переключатель Дописывать основной DNS-суффикс и суффикс подключения (Add
Primary and connection specific DNS suffixes) указывает на то, что к неполному
доменному имени должно присоединяться название родительского домена DNS.
Например, для компьютера NTWS1, находящегося в родительском домене
KINETICS.COM, будет производиться поиск имени NTWS1.KINETICS.COM.
При установке этого переключателя поиск ограничивается родительским
доменом. Если разрешить имя не удается, дальнейший поиск на этом прекращается.
Переключатель Дописывать следующие DNS-суффиксы (по порядку) (Append these
DNS suffixes (in order)) используется для задания списка суффиксов DNS,
которые будут присоединяться к неполному доменному имени в процессе
разрешения. Чтобы изменить порядок поиска доменных суффиксов, выделите
суффикс имени и переместите его в нужную позицию при помощи кнопок
со стрелками. Чтобы удалить суффикс, выделите его в списке и щелкните
на кнопке Удалить (Remove). Чтобы отредактировать суффикс, выделите его
и щелкните на кнопке Изменить (Edit).
В поле DNS-суффикс подключения (DNS suffix for this connection) можно задать
суффикс DNS, используемый для текущего подключения. При установке
флажка Зарегистрировать адреса этого подключения в DNS (Register this connection's
address in DNS) на сервере DNS создается запись для IP-адреса и доменного
имени текущего подключения. При регистрации имени можно использовать
имя хоста с суффиксом DNS, для чего устанавливается флажок Использовать
DNS-суффикс подключения при регистрации в DNS (Use this connection's DNS suffix
in DNS registration).
ПРИМЕЧАНИЕ
На серверах DNS хранится информация о соответствии между IP-адресами и именами хостов.
Берклиевские средства удаленного доступа (такие, как rep, rsh и гехес) используют для
аутентификации хостовые имена, в которых запрещено использование некоторых символов, разрешенных
в именах компьютеров Windows 2000 (прежде всего символа подчеркивания). При подключении
к Интернету следует использовать зарегистрированные имена DNS.
На рис. 23.6 представлен пример настройки DNS для хоста NTS. В этом примере
используется локальное доменное имя SIYAN.COM и серверы DNS с адресами
10.0.0.102 и 63.224.13.118. Сначала с запросом на разрешение имени клиент
обращается к серверу DNS с IP-адресом 10.0.0.102. Если этот сервер не может
преобразовать имя в IP-адрес, используется сервер DNS с адресом 63.224.13.118.
При поиске доменные суффиксы перебираются в порядке SIYAN.COM, KINETICS.
СОМ и SCS.COM. В ряде старых клиентов Windows (Windows 95 без Winsock2,
Windows NT до выхода SP5) резольвер DNS связывается со вторым
сервером DNS только в том случае, если первый сервер DNS не ответил на запрос.
Если первый сервер DNS не может разрешить имя, такие клиенты не
пытаются обратиться с запросом на разрешение имени ко второму серверу DNS.
у ONS server dddresiei/jri order of use:
ШШЕШШШ^ШШШШШИШШШШШШШШ -'•*> I
; 163.224.13.118 :_J
I .: ,„:..,„вд„ст„_ _Д±]
.• The fotowtng three'settbgs are applied to sA comectton* with TCP/IP
h enabled. For re^oUicrj of oiqualined name$:
г С Append primary and connection specific DNS suffixes jj
П Append р£Ш^и&&>: .6Ь.&й ^аду DNS. &#«. ]
h С Append theie DNS suffixes ftn order): jj
N nunetics.com :—LJ j
h jsce.com i i
k; • 1.,.... . ...,,,,,.,,:.,,, iULj '■
Щ:.-. • ■ •");:; •' -: АоШ;.. ''$£.;:' Edit!: f •••.•' RehroveV': j
%■: РЩ. ^u№k *°f №* connect^:-jsiyanxom ;. • :-•:
k;. jf? {Register this; сопгшсЙопЧ iSdoVe$$e$ in ONS . . I
Шг Г^ Use this connection's DNS «ifa in DNS reoifctration 1.
:':iv--/'-:^';.:';\-/-'-: 'j/'';Q^'' 'jv!':'::''''Canc^ : [j
Рис 23.6. Пример настройки параметров DNS в диалоговом окне дополнительных параметров TCP/IP
3. Завершив настройку параметров DNS, щелкните на кнопке ОК.
В Windows 2000 DNS использует негативное кэширование. Если сервер DNS
не может разрешить некоторое имя, то на последующие запросы к этому имени
дается отрицательный ответ в течение интервала, заданного параметром реестра
NegativeCacheTime (по умолчанию — 300 секунд).
Настройка адресов WINS
Если в сети установлены серверы WINS (Windows Internet Name Service), для
разрешения имен компьютеров могут использоваться серверы WINS в
сочетании с широковещательными запросами. Сервер WINS является примером
сервера NNBS (NetBIOS Name Server), используемым для разрешения имен
NetBIOS в соответствии с правилами, определенными в RFC 1001 и 1002.
Клиенты Windows 2000 и Windows NT, Windows 95 и Windows 98 с
установленным обновлением Active Directory не нуждаются в использовании
пространства имен NETBIOS. Служба WINS остается необходимой для того, чтобы
старые клиенты могли находить серверы, и наоборот. Если в сети не осталось
старых клиентов, серверы WINS можно отключить. К категории старых
относятся клиенты для Windows 95, Windows 98 и Windows NT.
Если данные сервера WINS отсутствуют, то компьютер с системой
Windows 2000 использует широковещательные запросы и локальный файл LMHOSTS
для разрешения компьютерных имен в IP-адреса. Широковещательное
разрешение производится только внутри локальной сети.
Процедура настройки адресов WINS описана ниже.
1. Чтобы указать, что вы собираетесь использовать серверы WINS, введите
IP-адреса основного и вторичных серверов WINS па вкладке WINS диалогового
окна дополнительных параметров TCP/IP (рис. 23.7). Вторичные серверы
WINS используются в качестве резервных на случай, если первичный сервер
WINS не ответит. IP-адреса WINS добавляются кнопкой Добавить (Add), а
порядок поиска серверов WINS изменяется при помощи кнопок со стрелками.
2. Разрешение имен компьютеров NetBIOS в сетях Windows может выполняться
на основании содержимого файла LMHOSTS. Режим использования файла
LMHOSTS включается установкой флажка Включить просмотр LMHOSTS (Enable
LMHOSTS lookup). Кнопка Импорт LMHOSTS (Import LMHOSTS) позволяет
импортировать имена и IP-адреса из существующих файлов LMHOSTS. Например,
если вы создали файл LMHOSTS с именами компьютеров вашей сети и теперь
хотите продублировать введенную информацию на всех компьютерах сети,
воспользуйтесь кнопкой импортирования.
3. Если компьютер настроен на использование DHCP, вы можете установить
переключатель Использовать параметры NetBIOS, полученные с DHCP-сервера (Use
NetBIOS settings from the DHCP sen/er).
4. Смысл переключателей Включить NetBIOS через TCP/IP (Enable NetBIOS over TCP/IP)
и Отключить NetBIOS через TCP/IP (Disable NetBIOS over TCP/IP) не требует
комментариев. Работа NetBIOS через TCP/IP описывается в RFC 1001 и 1002.
Приложения, использующие интерфейс Winsock, не нуждаются в NetBIOS.
Новые приложения работают непосредственно на уровне TCP/IP, а это
означает, что они используют стек TCP/IP напрямую без участия NetBIOS. Службы
Windows 2000 разрешают имена при помощи DNS и не нуждаются в услугах
разрешения имен в NetBIOS. В «чистой» сети Windows 2000, в которой
отсутствуют приложения, зависящие от NetBIOS, использование NetBIOS
через TCP/IP можно отключить. Такое отключение уменьшает объем сетевого
трафика NetBIOS, а компьютеру с Windows 2000 не приходится тратить
ресурсы на поддержку протокола NetBIOS.
IP Setting*| DNS WINS | Option*] ..
г WINS addresses, in order cfr usee— :~~—~i' . j j
|i.. j.
j ' **•• 1;;^; 1 j— 1 [
К LMHQSTS lookup is enabled й applies to зй connection* for which I
TCP/IP is enabled
\? Enable LMHQSTS lookup/:. : Import LMHQSTS. |
Г Enable NetBIOS over TCP/IP
Г Disable NetBIOS over TCP/I£,
<* UseN«BIDS setting fromIheOHCP server
| OK | Cancel j
Рис. 23.7. Вкладка WINS диалогового окна дополнительных параметров TCP/IP
ПРИМЕЧАНИЕ
По умолчанию файл LMHOSTS находится в каталоге \%SystemRoot%\SYSTEM32\DRIVERS\ETC. При
использовании сервера WINS обращение к файлу LMHOSTS происходит только после обращения
к серверу WINS. Файлы LMHOSTS хорошо работают в сетях Windows с небольшим количеством
компьютеров, а также в сетях, топология которых остается относительно постоянной. С другой
стороны, в больших, динамично изменяющихся сетях использование файлов LMHOSTS весьма
проблематично. Синхронизация копий LMHOSTS на разных компьютерах — непростая задача, при этом
слишком легко создать ситуацию, при которой два компьютера (даже находящиеся вблизи друг
от друга) располагают разной информацией о сети. А если IP-адреса назначаются при помощи
DHCP, то содержимое файла LMHOSTS может оказаться недействительным для хоста,
относящегося к другой подсети.
Безопасность и фильтрация TCP/IP
В Windows 2000 предусмотрены средства обеспечения безопасности и фильтрации
трафика TCP/IP. Настройка этих средств производится на вкладке Параметры
(Options) диалогового окна дополнительных параметров TCP/IP (рис. 23.8),
вызываемого кнопкой Дополнительно (Advanced) в диалоговом окне свойств
протокола TCP/IP. Чтобы вызвать это окно, выделите строку Протокол Интернета
(TCP/IP) (Internet Protocol (TCP/IP)) в свойствах подключения по локальной сети
и щелкните на кнопке Свойства (Properties).
. IP Settings] DNS | WINS • Optbrw: |
к Optional settings; 11
fipiecuri^'j '.. I J
:; TCP/IP Filtering |
Г I Pmpettles | 1
k : p Description: ~т: ■•;• p';1: •:: ггг^фуг^— - '-у; 11
• i IP security protects the confidemtia6<y, integrity and authenticity of IP j I
U ! pockets bet ween two computers on a network I P security settings \ 1!
;. ! apply to afi connections for which TCP/IP is enabled j; II
г I -II
: | i
• °fej Cancel |
Рис. 23.8. Вкладка Параметры в диалоговом окне дополнительных параметров TCP/IP
Система безопасности обеспечивает конфиденциальность, целостность и
аутентичность пакетов IP, передаваемых между двумя компьютерами сети. Параметры
безопасности относятся ко всем подключениям, использующим TCP/IP. Выделите
строку Безопасность IP (IP Security), щелкните на кнопке Свойства (Properties),
затем в открывшемся диалоговом окне Безопасность IP (IP Security), изображенном
на рис. 23.9, установите переключатель Use this IP security policy. Выберите в списке
нужную политику безопасности: Клиент (только ответ) (Client (Respond Only)),
Сервер безопасности (требуется безопасность) (Secure Server (Request Security)) или
Сервер (запрос безопасности) (Server (Request Security)).
ПРИМЕЧАНИЕ
Если сервер Windows NT/2000, подключенный к нескольким сетям, выполняет важные функции
(например, является web-сервером) и вы не хотите тратить процессорное время на выполнение
других задач, для которых существуют специализированные серверы, отключите маршрутизацию.
Маршрутизацию также следует отключать на брандмауэрах и прокси-серверах. Пакеты не должны
обходить программное обеспечение брандмауэра или прокси-сервера, обрабатывающее эти пакеты
с учетом политики безопасности системы. При включенной маршрутизации пакеты пересылаются
маршрутизатором независимо от ограничений, установленных в конфигурации
брандмауэра/прокси-сервера.
IP security settings; apply to «I connections for which TCP/IP к enabled I
. *V Use фЫР secwty ройсу: .
(Client (Respond Only] ~" 3 1
Selected IP secisily po&oy description: I
jCommunicate normally jtwsec^red^Ueetnedebuitre^on&emleb I
jnegotiatewith.serversthat request $ешй^ QNy the requested 1
jpiotocol and port ЬаШс with that server is secured I
'.':• ' ' j ГЖ J 'Щ0Ы ' ,[ J
Рис. 23.9. Параметры безопасности IP
Политика Клиент (только ответ) (Client (Respond Only)) обеспечивает обычный
обмен данными в незащищенных сеансах. Если от сервера поступает запрос на
безопасность IP, то клиент переходит на защиту трафика для указанного
протокола и номера порта.
При политике Сервер безопасности (требуется безопасность) (Secure Server
(Request Security)) трафик IP обязательно защищается протоколом Kerberos.
Небезопасный обмен данными с незащищенными клиентами запрещается. Поскольку
многие хосты Интернета не поддерживают проверку подлинности с
применением Kerberos, выбор этой политики фактически блокирует связь с
большинством хостов Интернета.
При политике Сервер (запрос безопасности) (Server (Request Security)) сервер
запрашивает у клиента защиту трафика IP с применением Kerberos. Для
клиентов, не ответивших на запрос, разрешается небезопасный обмен данными.
Чтобы настроить средства фильтрации TCP/IP, выделите строку Фильтрация
TCP/IP (TCP/IP Filtering) в диалоговом окне дополнительных параметров TCP/IP
и щелкните на кнопке Свойства (Properties). На экране появляется диалоговое
окно Фильтрация TCP/IP (TCP/IP Filtering) — рис. 23.10. Установите флажок
Задействовать фильтрацию TCP/IP (все адаптеры) (Enable TCP/IP Filtering (All adapters)). По
умолчанию разрешаются все порты TCP/UDP, а также протоколы IP. Чтобы
разрешить трафик только для конкретных номеров портов TCP/UDP или про-
токолов IP, установите соответствующий переключатель Только (Permit Only),
щелкните на кнопке Добавить (Add) и включите в список нужные порты или
протоколы.
ГдЕпаЫе TCP/IP Filtering (АЯ «daptets)
<• Permit A8 <? Permit AI <? Р&гЫМ
1:"гГ;"РвшЛ0л!у 1 г Г PermitOnly < rC Perm* Only ;
i. Ш^^*'ГЛ | J jjjbpE»b„l .1 • !..IP Protocols j !
M '■] ■' i .".." ! \ \\
:!: \ I :■■■ j ■■"■ ' i 1 M
Ml ■ ! I •• I X] I M
f "I " ■ • I
•::| Add., | 1 :; j Л Add.. | J j Add | \
Г > с | ! ' I ■ Л" j I ,. I M
| OK I Cancel |
Рис. 23.10. Диалоговое окно Фильтрация TCP/IP
Механизм фильтрации особенно полезен в ситуации, когда принимается
только трафик хорошо известных служб с конкретными номерами портов. Перечень
официально утвержденных номеров портов и протоколов приводится в RFC 1700,
«Assigned Numbers». По умолчанию разрешено прохождение пакетов для всех
портов TCP и UDP и протоколов IP, то есть Windows 200 принимает пакеты IP,
предназначенные для любых портов TCP и UDP. Чтобы изменить значения по
умолчанию, установите переключатель Только (Permit Only) и измените критерии
фильтрации при помощи кнопок Добавить (Add) и Удалить (Remove).
Настройка служб разрешения имен
Из предыдущих разделов вы узнали, как настраиваются данные серверов WINS
и DNS в параметрах конфигурации IP на компьютерах Windows 2000. Серверы
WINS и DNS обеспечивают разрешение имен в сетях Windows. Кроме того, в
разрешении имен задействованы два дополнительных файла, LMHOSTS и HOSTS.
Они часто применяются в малых сетях, не имеющих серверов WINS pi DNS,
поскольку информация о связях имен с IP-адресами хранится в текстовом виде
и легко изменяется в текстовом редакторе.
Также стоит заметить, что механизм разрешения имен NetBIOS на базе WINS
не нужен в «чистых» сетях Windows 2000, в которых разрешение имен
осуществляется через DNS. Тем не менее в смешанных сетях, содержащих компьютеры
с Windows 2000 и Windows NT, приходится обеспечивать разрешение имен
NetBIOS для старых клиентов. Именно это обстоятельство является главной
причиной для рассмотрения средств разрешения имен NetBIOS в этой главе.
Службы NetBIOS
NetBIOS предоставляет службы имен, службы дейтаграмм и службы сеансов
(табл. 23.1). Когда NetBIOS работает на базе TCP, службы имен и дейтаграмм
используют порты 137 и 138 протокола транспортного уровня UDP. Службы
сеансов используют порт 139 протокола TCP. Использование протокола UDP
службами имен и дейтаграмм объясняется тем, что трафик этих служб по своей
природе ориентируется на схему «запрос-ответ». Кроме того, службы имен часто
используют в своей работе широковещательную рассылку, a UDP подходит для
этой цели лучше, чем TCP. В больших сетях широковещательная рассылка
создает проблемы из-за чрезмерного роста трафика, поэтому многие
маршрутизаторы по умолчанию настраиваются на блокировку широковещательных
рассылок. Процедура настройки зависит от конкретного маршрутизатора.
Таблица 23.1. Службы NetBIOS
Название Порт Протокол Сокращенное название
Служба имен NetBIOS 137 UDP nbname
Служба дейтаграмм NetBIOS 138 UDP Nbdatagram
Служба сеансов NetBIOS 139 TCP Nbsession
Служба сеансов NetBIOS использует TCP. Протокол TCP гарантирует
доставку данных, тогда как UDP таких гарантий не дает. Кроме того, сеансовая
модель TCP более точно воспроизводит сущность сеансов NetBIOS. И TCP,
и NetBIOS генерируют специальные примитивы для открытия и закрытия сеанса.
На любом конкретном компьютере работает несколько процессов. Процессы,
предоставляющие некоторый сервис, называются службами приложений.
Некоторые службы приложений регистрируются под именами NetBIOS. Windows 2000
позволяет зарегистрировать на компьютере до 250 имен NetBIOS. Ниже
приводятся примеры служб приложений на компьютерах с системой Windows:
О Служба сервера — идентифицирует выполняемую службу приложения; обычно
относится к службе, обеспечивающей совместное использование файлов и
принтеров на компьютере.
О Служба рабочей станции — позволяет рабочей станции выполнять функции
клиента и использовать сервис, предоставляемый службой сервера на другом
компьютере.
О Служба сообщений — получает и отображает сообщения для имен,
зарегистрированных на компьютере.
Максимальная длина имен NetBIOS равна 16 символам. Первые 15
символов определяют имя NetBIOS, а последний символ (байт) содержит код типа
имени NetBIOS. Значения этого однобайтового идентификатора лежат в интер-
вале от 0 до 255. Ниже перечислены имена некоторых регистрируемых служб
(число в квадратных скобках представляет шестнадцатеричный код
однобайтового идентификатора):
О компьютер[0х00] — служба рабочей станции, зарегистрированная для
компьютера.
О компьютер\0\03] — служба сообщении, зарегистрированная для компьютера.
О компьютер[0\06] — служба сервера удаленного доступа, зарегистрированная
для компьютера.
О компыотер\Ох\¥] — служба NetDDE, зарегистрированная для компьютера.
О компъютер\ 0x20] — служба сервера, зарегистрированная для компьютера.
О компъютер[0х2\] — служба клиента удаленного доступа, зарегистрированная
для компьютера.
О компьютер\0хВЕ] — служба агента сетевого монитора, зарегистрированная
для компьютера.
О компъютер[0хВ¥] — служба приложения сетевого монитора,
зарегистрированная для компьютера.
О домен [0x00] — регистрация принадлежности к домену или рабочей группе.
О домен [OxIE] — используется для упрощения выбора браузера.
О домен [0x1В] — регистрация компьютера в качестве главного браузера домена.
ПРИМЕЧАНИЕ
Раньше в NetBIOS использовались только имена компьютеров. На каждом компьютере работал
всего один пользователь; он получал все сообщения, отправляемые этому компьютеру.
По мере роста сетей и количества пользователей появились имена NetBIOS для пользователей
и доменов. Имена пользователей позволяли передавать сообщения конкретному пользователю.
Если имя пользователя существовало в нескольких экземплярах (из-за того, что пользователь
зарегистрировался в системе несколько раз), сообщение передавалось только тому имени, которое
было зарегистрировано первым.
Поддержка доменных имен появилась для того, чтобы разные системы можно было группировать
под общим именем для упрощения получения информации, выполнения управляющих операций и
настройки безопасности в доменной модели Windows NT. Эти групповые имена регистрировались
в сети как имена NetBIOS.
В Windows 2000 имена NetBIOS продолжают использоваться в смешанных доменах, содержащих
домены и компьютеры под управлением Windows NT. Именно поэтому мы рассматриваем NetBIOS
в этой главе.
В «чистых» доменах Windows 2000 настраивать NetBIOS не нужно, поскольку разрешение имен
выполняется через DNS.
О домен [0x1 С] — регистрация компьютера в качестве контроллера домена.
О домен [0x1 D] — регистрация компьютера в качестве главного браузера
локальной подсети.
О пользователь [0x03] — имя, зарегистрированное службой сообщений для
заданного пользователя.
О группа — имя группы.
О \\-_MSBROWSE_l01h] - главный браузер.
Допустим, пользователь Phylos на рабочей станции WS1 с системой
Windows 2000 Professional, находящейся в домене KINETD, хочет принять файлы
с сервера ADS с системой Windows 2000, используя имя в стандартном
формате UNC (Universal Naming Convention) \\ADS\sharename. Имя пользователя
«Phylos[0x03]» сначала использует службу рабочей станции с именем NetBIOS
«WSl[0x00]» для аутентификации контроллером домена с именем NetBIOS
«KINETD[0xlC ]». После аутентификации служба рабочей станции «WSl[0x00]»
связывается со службой сервера «ADS[0x20]» для приема файлов.
Механизмы разрешения имен
Механизмы разрешения имен Windows 2000 делятся на следующие категории:
О стандартное разрешение (также называемое разрешением имен хостов);
О специализированное разрешение (также называемое разрешением имен NBT
NetBIOS).
Ниже эти механизмы рассматриваются более подробно.
Стандартное разрешение имен
Стандартное разрешение имен используется в системах семейства Unix и в
программном обеспечении, перенесенном из Unix в среду Windows. При
стандартном разрешении проверка производится в следующей последовательности:
1. Локальный хост.
2. Файл HOSTS.
3. DNS.
4. Разрешение имен NetBIOS (если попытка использования DNS завершилась
неудачей).
Сначала проверяется, не совпадает ли разрешаемое имя с именем локального
компьютера.
ПРИМЕЧАНИЕ
В Windows 2000 разрешение имен DNS выполняется клиентской службой DNS. Служба реализует
резольвер DNS, который вызывает сокетные функции Windows gethostbynameQ и getnamebyhost().
Если разрешаемое имя не совпадает с именем локального компьютера, на
следующем этапе проверяется файл HOSTS. В этом файле хранится информация
о соответствии между именами хостов и IP-адресами. Формат файла HOSTS
позаимствован из BSD (Berkeley Software Distribution) Unix 4.3. В частности,
файл HOSTS используется такими приложениями, как Telnet, FTP и ping.
Файл HOSTS не является централизованным ресурсом — каждый
компьютер должен поддерживать собственный вариант файла HOSTS. В случае
изменений в сети содержимое файла должно быть изменено на всех компьютерах.
Если разрешаемое имя отсутствует в файле HOSTS, запрос на разрешение
имени посылается серверу DNS. Серверы DNS хранят распределенную базу
данных с информацией о соответствии между именами хостов и IP-адресами.
Большинство серверов DNS в Интернете работает на базе Unix, хотя
реализации DNS существуют и на других платформах, включая Windows 2000.
Специализированное разрешение имен
Механизм специализированного разрешения имен применяется только в сетях
Windows. Он представляет собой комбинацию следующих механизмов:
О локальная широковещательная рассылка;
О WINS;
О файл LMHOSTS.
Под «локальной широковещательной рассылкой» подразумевается
пересылаемый по локальной сети запрос на получение IP-адреса, соответствующего
разрешаемому имени. Компьютер, распознающий указанное в запросе имя как
свое собственное, передает свой IP-адрес. Если такого компьютера не найдется,
ответ на широковещательную рассылку не приходит и система приходит к
выводу о невозможности разрешения имени посредством широковещательной
рассылки. Этот способ также называется «b-узловым разрешением имен».
Служба WINS является примером сервера имей NetBIOS (NBNS). Самый
распространенный пример NBNS — реализация WINS в серверах Windows NT и
Windows 2000. Спецификация разрешения имен NBNS приведена в RFC 1001 и 1002.
ПРИМЕЧАНИЕ
Файлы хостов обычно используются лишь в очень мелких сетях. В приложениях TCP/IP
разрешение имен чаще выполняется при помощи DN5.
ПРИМЕЧАНИЕ
Перед полным разрешением имен система проверяет, не совпадает ли разрешаемое имя NetBIOS
с локальным именем; в этом случае разрешение имен выполнять не нужно.
Результаты предыдущих запросов сохраняются в кэше имен. Прежде чем разрешать имя, система
проверяет, не присутствует ли ответ в кэше имен, и если поиск окажется успешным, разрешение
на этом прекращается.
Файл LMHOSTS содержит таблицу соответствия между именами NetBIOS и IP-
адресами. По своей структуре файл LMHOSTS напоминает файл HOSTS, однако
в его синтаксисе предусмотрены дополнительные директивы, упрощающие
настройку разрешения имен. Windows 2000 обращается к файлу LMHOSTS только
в том случае, если все остальные способы завершились неудачен.
Конкретный порядок действий при специализированном разрешении имен
зависит от настройки методов разрешения имен на компьютере с Windows 2000.
К числу таких методов относятся b-узловое, р-узловое, m-узловое и h-узловое
разрешение имен. Ниже приведены краткие описания всех четырех методов.
О При b-узловом разрешении для регистрации и разрешения имен используются
только широковещательные пакеты. Поскольку широковещательные рассылки
быстро приводят к перегрузке сети, этот способ лучше всего подходит для
мелких локальных сетей, не имеющих сервера WINS. Чтобы настроить сеть
для использования этого режима, убедитесь в том, что в сети отсутствуют
серверы WINS, а компьютеры Windows не настроены на использование WINS.
Другими словами, убедитесь в том, что на клиентских компьютерах Windows
не указан IP-адрес сервера WINS.
О При р-узловом разрешении используются только серверы WINS. Если имя
не удается разрешить средствами WINS, остальные методы разрешения имен
не применяются.
О М-узловое разрешение представляет собой комбинацию первых двух
методов. Сначала делается попытка применить b-узловое разрешение. Если эта
попытка завершается неудачей, клиент переходит к р-узловому разрешению.
Таким образом, данный метод сначала генерирует широковещательный
трафик, а затем применяет средства WINS. Он хорошо подходит для мелких
сетей с сервером WINS, база данных которого не обновлялась в течение
некоторого времени данными новых хостов.
ПРИМЕЧАНИЕ
В-узловое разрешение работает только в границах локальной подсети, если только
маршрутизаторы, ведущие к другим сетям, не настроены на пересылку широковещательного трафика.
ПРИМЕЧАНИЕ
Если при р-узловом или b-узловом разрешении основной метод завершается неудачей,
применяются другие методы (такие, как поиск в файле LMHOSTS).
ПРИМЕЧАНИЕ
М-узловое разрешение обычно применяется в маленьких региональных филиалах, подключенных
к глобальной сети через медленный канал. В таких ситуациях разрешение логично начинать с
обращения к локальным ресурсам и серверам.
О Н-узловое разрешение также является комбинацией b-узлового и р-узлового
разрешения, однако на этот раз сначала применяется р-узловое разрешение.
Если попытка завершается неудачей, клиент переходит к b-узловому
разрешению. Этот метод генерирует широковещательный трафик только в крайнем
случае, после попытки связаться с сервером WINS. Этот способ обладает
наибольшей эффективностью и подходит для больших сетей с надежными
серверами WINS, своевременно обновляемыми информацией о новых хостах.
Настройка кэша имен NetBIOS
Обработка запроса на разрешение имени в системе Windows 2000 начинается
с обращения к специальной области памяти — кэшу имен NetBIOS. В кэше
имен хранится список имен компьютеров и их IP-адресов. Хранение этих
данных в памяти обеспечивает быструю выборку найденной информации. Данные
кэша имен берутся из двух источников:
О результаты успешного разрешения имен;
О предварительная загрузка данных из файла LMHOSTS no директиве #PRE.
Все элементы кэша, за исключением предварительно загруженных, устаревают
по тайм-ауту и удаляются из кэша. По умолчанию интервал тайм-аута равен
10 минутам. Читатели, знакомые с протоколом ARP, заметят, что кэш имен
NetBIOS работает аналогичным образом.
Очистка и повторная загрузка кэша имен осуществляется командой
Nbtstat -R
Обратите внимание на регистр символа в параметре -R. Параметр -г
используется для других целей, а именно для вывода статистики разрешения имен.
Характеристики кэша имен настраиваются при помощи двух параметров
реестра, находящихся в разделе
HKEY_LOCAL_MACHINE\SYSTEM\CuгrentControlSet\Services\NetBT\Parameters
ПРИМЕЧАНИЕ
В малых сетях с низким трафиком (и при отсутствии квалифицированных администраторов) вполне
подойдет b-узловой метод разрешения имен.
В крупных сетях самым эффективным оказывается метод h-узлового разрешения, который
начинается с попытки прямого разрешения имен при помощи WINS (р-узловое разрешение). Только если
WINS не удастся разрешить имя, применяется b-узловой метод. При наличии правильно
настроенного сервера WINS h-узловой метод порождает наименьший уровень сетевого трафика.
Речь идет о следующих параметрах:
О Size/Small/Medium/Large. Параметр определяет максимальное количество имен,
хранящихся в кэше. Существуют три допустимых значения,
соответствующие малому, среднему и большому размеру кэша. Если параметр равен 1,
в кэше помещается до 16 имен. Если параметр равен 2, кэш позволяет
хранить до 64 имен. Наконец, если параметр равен 3, в кэше помещается до 128
имен. По умолчанию используется значение 1, что вполне допустимо для
многих сетей. Параметр относится к типу REG_DWORD.
О CacheTimeout. Максимальная продолжительность хранения данных в кэше
(в секундах). Значение по умолчанию равно 0х927с0 F00 000 секунд, то есть
10 минут), оно вполне нормально подходит для большинства сетей. Параметр
относится к типу REG_DWORD.
Эти и другие параметры NetBT изображены на рис. 23.11. Для параметров
реестра, значения которых не указаны, используются значения по умолчанию.
Настройка широковещательных запросов
на разрешение имен
Если имя, подлежащее разрешению, отсутствует в кэше имен, то при
использовании b-, m- и h-узлового метода разрешения имен будет разослан
широковещательный запрос на разрешение имени. NetBIOS рассылает пакеты в локальный
сегмент сети через порт UDP с номером 137 (см. табл. 23.1).
Широковещательный пакет обрабатывается каждым компьютером локальной подсети. Если
компьютер сети настроен на использование протокола NetBIOS через TCP/IP
(NetBT), широковещательный запрос принимается модулем NetBIOS, который
ищет имя, указанное в запросе, с зарегистрированными именами NetBIOS. При
обнаружении совпадения модуль NetBIOS отправляет пакет с положительным
ответом на разрешение имени.
и" IЛ 1Щ|IjjikiMиШЛИГ^»\Wm\m\m Im\*У\Ш ч\км)ШШШШШЯШШЯШШШЯШШШШШШШШШШШШШИШ I''''i" I
Щ Registry ;;.$cSfe: :Tpg9 . Vtew ■■$<$*** •! Орфг» ^tyndw» : *«p . _' . . \ »1Д|Х1
I I pCDmitsumi ^JlBcastNameQueiyCount: REG_DWORD :0x3 |
f-QmkecrSxx ^J BcastQueryTimeout: REG_DWORD : 0x2ee
I f-GDmnmdd CacheTimeout REG_DWORD: 0x92?c0
L&mnmsrvc EnableLMHOSTS : REGJDWORD : 0x1
кШ Modem EnableProxy:REG_DWORD:0
hODMouclass NameServerPort. REG_DWORD 0x89 I
hSDMountWgr NameSivQueiyCount: REGJDWORD: 0x3
kCt)mraid35x NameSrvQueiyTimeout: REG.DWORD: 0x5dc I
hdlMRxSmb NbProvider: REG SZ : tcp
kSDMSDTC NodeType REG DWORD: 0x8
L&Msfs ScopelD: REG.SZ:
k©MSFTPSVC SessionKeepAlive: REGJDWORD: 0x36ee80
H(±] MSIServer Size/Small/Medium/Large : REG.DWORD : 0x1
kSMSKSSRV TransportBindName : REG_SZ: \Device\
L-GJMSPCLOCK
hQDMSPQM :|J
I kQ]Mup ill
kDNcr53c9x ill
L(£)ncr77c22
hDNcrc700
k-QNcfc710
k(±)NDIS
J-ODNdisTapi
k&NdisWan
I kSNDProxy I
I J-GDneo20xx
кф NetBIOS
f-QNetBT
I l-CDEnum
I [-CD Linkage I
I ИР?ТЙ№МЙШ11 II I
|| *-Ш Interfaces I
*-CD Security ;*«
Рис. 23.11. Раздел параметров NetBT
Получение нескольких ответов свидетельствует о дублировании имен NetBIOS,
о чем выводится информация на консоль компьютера, получившего ответ.
Интересно заметить, что широковещательный запрос на разрешение имени
обрабатывается на каждом компьютере вплоть до сеансового уровня независимо от
того, располагает ли данный компьютер ответом или нет. Следовательно,
широковещательный запрос не только увеличивает трафик, но pi приводит к лишним
затратам процессорного времени на многих компьютерах.
Характеристики широковещательных запросов на разрешение имен
настраиваются при помощи двух параметров реестра, находящихся в разделе
HKEY_L0CAL_MACHINE\5YSTEM\CurrentControlSet\Services\NetBT\Parameters
О BcastNameQueryCount. Параметр определяет, сколько раз система попытается
разослать широковещательный запрос на разрешение имени. Значение по
умолчанию, равное 3, хорошо подходит для сетей с низким и средним
уровнем трафика. Параметр относится к типу REG_DWORD.
О BcastQueryTimeout Интервал между отправками широковещательных запросов.
Значение по умолчанию равно 7,5 секунды и задается в сотых долях секунды.
Параметр относится к типу REG_DWORD.
Настройка файла LMHOSTS
В малых сетях Windows 2000, содержащих до 30 компьютеров и использующих
NetBIOS через TCP/IP, разрешение имен компьютеров обычно производится с
использованием b-узлового метода или файла LMHOSTS. Если в сети работают
серверы WINS, использовать файл LMHOSTS не обязательно (разве что для
дополнительной страховки). Разрешение имен на базе LMHOSTS хорошо подходит
для малых сетей, в которых поддержание файла LMHOSTS не вызывает
трудностей. С другой стороны, в больших сетях обновление LMHOSTS требует слишком
больших усилий, и администратору следует рассмотреть другие средства
разрешения имен — например, DNS или WINS.
ПРИМЕЧАНИЕ
Если уровень трафика в сети постоянно находится на высоком уровне и вы часто сталкиваетесь
с повторениями одного и того же неразрешенного запроса NetBIOS, попробуйте увеличить
значения параметров BcastNameQueryCount и BcastQueryTimeout. Увеличьте параметр BcastQueryTimeout
с 0,5 до 1 секунды, а параметр BcastNameQueryCount следует повысить на 1. Наблюдение за
сетевым трафиком осуществляется при помощи анализаторов протоколов и системных программ —
например, Монитор сети (Network Monitor) из комплекта Windows 2000 Server и SMS (System
Management Server).
Синтаксис файла LMHOSTS
Файл LMHOSTS в Windows 2000 содержит информацию о соответствии между
именами NetBIOS и IP-адресами. Файл находится в каталоге %SystemRoot%\SYSTEM32\
DRIVERS\ETC, а его синтаксис совместим с синтаксисом файла LMHOSTS,
используемым в Microsoft LAN Manager 2.x.
Ниже приведен пример файла LMHOSTS, устанавливаемого на компьютерах
Windows 2000.
# Copyright (с) 1993-1999 Microsoft Corp.
#
#
# Это образец файла LMHOSTS, использующегося Microsoft TCP/IP для
# Windows.
#
# Этот файл содержит таблицу соответствия IP-адресов и обычных (NetBIOS)
# имен компьютеров. Каждый элемент должен располагаться в отдельной
# строке. IP-адрес должен начинаться с первой позиции строки, а за ним
# следует соответствующее имя компьютера. IP-адрес и имя компьютера должны
# быть отделены друг от друга хотя бы одним пробелом или символом табуляции.
# Знак "#" используется обычно для указания на начало комментария
# (Исключения из этого правила будут перечислены ниже).
#
# Этот файл совместиим с файлами Microsoft LAN Manager 2.x TCP/IP Imhosts,
# и в нем можно использовать следующие дополнительные операторы:
#
# #PRE
# #Э0М:<домен>
# #INCLUDE <имя_файла>
# #BEGIN_ALTERNATE
# #END_ALTERNATE
# \0xnn (поддержка специальных символов)
#
# Если дополнить любую из строк символами "#PRE", то соответствующий
# элемент будет предварительно загружен в буфер имен. По умолчанию
# элементы этого списка не загружаются предварительно, а весь список
# просматривается только в том случае, если динамическое разрешение
# соответствий имен не привело к успеху.
#
# Если дополнить любую из строк символами "#D0M:<домен>", то
# соответствующий элемент будет связан с указанным доменом.
# Это влияет на поведение служб обзора и регистрации в среде TCP/IP.
# Для того чтобы обеспечить предварительную загрузку имени, связанного
# со строкой #DOM, необходимо также добавить #PRE к этой строке.
# Имя такого домена будет предварительно загружено, хотя и не будет
# отображаться при просмотре буфера имен.
#
# Если дополнить любую из строк символами "#INCLUDE <имя_файла>", то
# это приведет к тому, что RFC NetBIOS (NBT) произведет поиск указанного
# файла и выполнит его просмотр так, словно он является локальным файлом.
# Обычно <имя_файла> задается в формате UNC, что позволяет хранить
# централизованный файл LMH0STS на сервере. Учтите, что в таком случае
# строка соответствия IP-адреса для используемого сервера ОБЯЗАТЕЛЬНО
# должна предшествовать его использованию в директиве #INCLUDE.
# Это соответствие также должно исползовать директиву #PRE.
# Кроме того, общий ресурс "public" из приведенного ниже примера должен
# присутствовать в списке "NullSessionShares" на LanManServer для того,
# чтобы клиенты смогли успешно прочитать файл LMH0ST5.
# Этот параметр хранится в системном реестре по адресу
# \machine\system\currentcontrolset\services\lanmanserver\parameters\
nullsessionshares.
# Нужно просто добавить строку "public" к имеющемуся там списку.
#
# Ключевые слова #BEGIN_ и #END_ALTERNATE позволяют группировать вместе
# несколько директив #INCLUDE. Хотя бы одно успешное выполнение директивы
# "include" считается успешным выполнением всей группы.
#
# Наконец, можно использовать специальные символы при сопоставлении имен
# с помощью заключения соответствующего имени в кавычки, а затем
# использования шестнадцатеричного кода символа с помощью записи \0xnn.
#
# В следующем примере используются все перечисленные выше дополнительные
# операторы:
#
# 102.54.94.97 rhino #PRE #D0M:networking #домен группы
# 102.54.94.102 "appname \0xl4" Специальный сервер
приложений
# 102.54.94.123 popular #PRE Предварительно
загружаемое имя
# 102.54.94.117 localsrv #PRE #сервер, используемый
в "INCLUDE"
#
# #BEGIN_ALTERNATE
# #INCLUDE \\localsrv\public\lmhosts
# #INCLUDE \\rhino\public\lmhosts
# #END_ALTERNATE
#
# В приведенном выше примере в имени сервера "appname" содержится специальный
# символ, имена серверов "popular" и "localsrv" будут предварительно загружены,
# имя сервера "rhino" будет использоваться для получения централизованного
# файла LMH0STS в том случае, если система "localsrv" будет недоступна.
#
# Учтите, что весь файл LMHOSTS, включая комментарии, будет просматриваться
# при каждом его использовании, так что имеет смысл минимизировать количество
# используемых комментариев. По этой причине не следует просто дополнять
# данный файл нужными строками таблицы соответствия, а лучше будет
# создать новый файл.
Комментарии начинаются с символа #. Если несколько первых символов,
следующих после #, совпадают с ключевыми словами из табл. 23.2, эти символы
интерпретируются как команды, которые должны обрабатываться особым
образом. Поскольку ключевые слова начинаются с символа комментария, синтаксис
LMHOSTS совместим с синтаксисом файла HOSTS, используемым приложениями
Unix и Windows Sockets.
Таблица 23.2. Директивы в файле LMHOSTS
Директива Описание
#PRE Запись файла LMHOSTS, в конце которой находится ключевое слово
#PRE, заранее загружается в кэш имен. Записи без директивы #PRE
не загружаются в кэш имен и обрабатываются только в том случае,
если имя не удается разрешить средствами WINS и широковещательных
запросов на разрешение имен. Записи, добавленные директивой
#INCLUDE, должны загружаться заранее. Следовательно, директива
#PRE должна быть включена в записи файлов, указанных в директиве
#INCLUDE; в противном случае записи игнорируются
#DOM:домен Определение имени компьютера, выполняющего функции контроллера
домена. В аргументе передается имя домена Windows 2000,
по отношению к которому компьютер является контроллером домена.
Директива #DOM влияет на работу служб в сети, состоящей из
нескольких сегментов, соединенных маршрутизаторами
#INCLUDE файл Из заданного файла извлекается информация о соответствии имен
и адресов. Имя файла может быть задано в формате UNC, что позволяет
подгружать файлы с удаленных компьютеров. Если компьютер,
указанный в имени UNC, не входит в локальную зону широковещательной
рассылки, то ассоциация для имени компьютера должна находиться
в файле LMHOSTS. В отображение для имени компьютера может
быть включена директива #PRE, гарантирующая его предварительную
загрузку в кэш имен. Записи, подгружаемые из файла, должны
быть предварительно загружены директивой #PRE; в противном
случае эти записи игнорируются
#BEGIN_ALTERNATE Директива отмечает начало группы директив #INCLUDE. Резольвер
пытается использовать команды #INCLUDE в порядке их перечисления.
Успех при использовании одной из директив #INCLUDE автоматически
приводит к успеху всей группы, в этом случае остальные директивы
#INCLUDE, входящие в группу, не обрабатываются. Если все файлы,
указанные в директиве #INCLUDE, оказались недоступны, в журнал
событий включается информация о том, что попытка включения
завершилась неудачей. Для просмотра журнала событий можно
воспользоваться программой Event Viewer
Директива Описание
#END_ALTERNATE Директива отмечает конец группы директив #INCLUDE. У каждой
директивы #BEGIN_ALTERNATE должна существовать парная директива
#END_ALTERNATE
\0xnn Служебная последовательность для включения непечатаемых символов
в имена NetBIOS. Имена NetBIOS, содержащие коды символов,
должны заключаться в кавычки. Коды символов используются только
в специальных именах устройств и в нестандартных приложениях.
При использовании этого синтаксиса помните, что заключенное
в кавычки имя NetBIOS дополняется пробелами, если оно содержит
менее 16 символов
Обратите внимание на следующую запись в приведенном выше примере
файла LMHOSTS:
# 102.54.94.102 "appname \0xl4" Специальный сервер приложений
Имя приложения отделено от специального символа восемью пробелами;
таким образом, общая длина имени равна 16 символам.
Код 0x14 представляет собой 1-байтовый идентификатор службы
приложения.
Правила обработки файла LMHOSTS
Файл LMHOSTS особенно удобен в тех случаях, когда в сетевом сегменте, в
котором находится клиент Windows 2000, отсутствует сервер WINS. В таких
ситуациях используется механизм широковещательного разрешения имей, основанный
на рассылке широковещательных пакетов уровня IP; обычно такие пакеты
блокируются маршрутизаторами. Следовательно, широковещательное разрешение
имен никогда не выходит за границы маршрутизаторов. Для решения этой
проблемы механизм разрешения имен Windows 2000 при отсутствии сервера WINS
работает так:
1. Windows 2000 ведет локальный кэш имен, инициализируемый во время
загрузки системы. Разрешение имен начинается с обращения к кэшу. Загрузка
данных из LMHOSTS в кэш имен осуществляется директивой #PRE (см. выше).
2. Если в кэше имен данные не найдены, Windows 2000 рассылает
широковещательный запрос на разрешение имени. Этот механизм разрешения имен,
называемый b-узловым методом разрешения, документирован в RFC 1001
и 1002.
3. Если попытка широковещательного разрешения имени завершается
неудачей, резольвер просматривает файл LMHOSTS и использует любые
совпадающие записи.
4. Если просмотр файла LMHOSTS не приносит результатов, попытка
разрешения имени завершается неудачей и выдается сообщение об ошибке.
На рис. 23.12 показана последовательность действий при разрешении имен
с использованием файла LMHOSTS.
С Кэш имен <^
> L 144.19.74.2 zadkiel I ) s-^
( ^ 144.19.74.5 michael |*^ И) Просмотр кэша имен
/ / у <^
|LMHOSTTS\ / / G\ ... J> к
л ' I \^J Широковещательное <Г к g
144.19.74.1 uziel / V' разрешение имен <^> | & о
144.19.74.2 zadkiel #PRE \ , .,.,.,....„ t ' ^> g | о
144.19.74.3 gabriel / \ | ДДИI /^X^\ S> & о 8
144.19.74.4 Uriel / / I Ш§Я I ' > ( () ) <Г 15?
144.19.74.5 michael #PRE / ЗДНЩ V*V <Г о 2 ^
| 144.19.74.6 chamuel / ^uil^^SIH ^p ^> g § |.
\ / l Компьютер <C> о.
с системой <^
©Windows 2000 ^
Просмотр файла LMHOSTS I I
Рис. 23.12. Разрешение имен с использованием LMHOSTS
Кэш имен инициализируется записями файла LMHOSTS, помеченными
директивой #PRE. Ниже приведен фрагмент файла LMHOSTS, в котором только часть
записей помечена для предварительной загрузки.
144.19.74.1 uziel
144.19.74.2 zadkiel #PRE
144.19.74.3 gabriel
144.19.74.4 uriel
144.19.74.5 michael #PRE
144.19.74.6 chamuel
Предварительная загрузка обычно используется для данных серверов и
других хостов, которые должны постоянно оставаться доступными. В результате
предварительной загрузки имена сохраняются в кэше, тем самым
предотвращается повторное чтение LMHOSTS в процессе разрешения имен.
В приведенном фрагменте файла LMHOSTS данные хостов zadkiel и michael
автоматически загружаются в кэш в процессе запуска системы. Если компьютеру
с Windows 2000 потребуется разрешить имена zadkiel и michael, он не будет
генерировать широковещательные пакеты, поскольку необходимая информация берется
из кэша имен. При разрешении имен uziel, gabriel, uriel и chamuel будет
использоваться широковещательный запрос. Если попытка широковещательного
разрешения завершается неудачей, имена ищутся в файле LMHOSTS. Если имя, не
прошедшее предварительную загрузку, было успешно разрешено в процессе просмотра
LMHOSTS, оно кэшируется в течение некоторого времени для будущих запросов.
Имена, разрешенные в результате широковещательных запросов, также
сохраняются в кэше вплоть до истечения интервала тайм-аута.
Объем данных, предварительно загружаемых в кэш, не может превышать 100
записей. Если в файле LMHOSTS директивой #PRE помечено более 100 записей,
предварительно загружаются только первые 100 записей. Остальные записи не
загружаются в кэш и используются в процессе стандартного просмотра файла
LMHOSTS.
При добавлении или удалении директив #PRE в файле LMHOSTS следует
очистить и перезагрузить кэш имен командой
nbtstat -R
Одним из достоинств программы nbtstat является возможность перезагрузить
кэш имен, не перезапуская компьютер с Windows 2000.
Вызов nbtstat с параметром -RR приводит к обновлению имен NetBIOS,
зарегистрированных компьютером:
nbtstat -RR
Стратегия использования общего файла LMHOSTS
Файл LMHOSTS хранится на локальных компьютерах с системой Windows 2000
в каталоге \%SystemRoot%\SYSTEM32\DRIVERS\ETC. При частых модификациях
LMHOSTS ведение локальных копий этого файла на всех компьютерах сети
вызывает немало проблем.
Директива #INCLUDE упрощает сопровождение файла LMHOSTS. Предположим,
основные данные хранятся в файле LMHOSTS на сервере Windows 2000 с именем
AKS. В файлы LMHOSTS на остальных компьютерах сети с системой Windows 2000
включается следующая ссылка:
#INCLUDE \\AKS\ETC\LMHOSTS
В этом примере ETC является общим именем каталога \%SystemRoot%\SYSTEM32\
DRIVERS\ETC на компьютере AKS. Преимущество такого решения заключается
в том, что все предварительно загружаемые общие имена хранятся в одном файле.
Если компьютер AKS не входит в область широковещательной рассылки, для
него необходимо создать специальную запись. Например, если хосту AKS присвоен
IP-адрес 134.21.22.13, то файл LMHOSTS может содержать следующий фрагмент:
134.21.22.13 AKS #PRE
#INCLUDE \\AKS\ETC\LMH0STS
Чтобы общий файл LMHOSTS всегда оставался доступным, его можно
реплицировать на другие компьютеры с Windows 2000 при помощи службы
репликации. Общий файл LMHOSTS должен находиться на сервере Windows 2000
(то есть в системе Windows 2000 Server или Windows 2000 Advanced Server),
поскольку только серверы Windows 2000 могут выполнять функции экспортного
сервера при репликации.
Если в сети имеются дублирующие серверы, следует указать, что файл LMHOSTS
также можно взять с любого из этих серверов. Для этой цели существуют удобные
команды #BEGIN_ALTERNATTVE и #END_ALTERNATTVE. Как было указано в табл. 23.1,
эти директивы предназначены для определения блоков #INCLUDE, в которых
может использоваться любая из перечисленных директив.
Рассмотрим следующий пример со списком альтернативных файлов LMHOSTS
на компьютерах с системой Windows 2000 в текущем сегменте сети:
134.21.22.13 AKS #PRE
134.21.22.14 АС1 #PRE
134.21.22.15 АС2 #PRE
#BEGIN_ALTERNATIVE
#INCLUDE \\AKS\ETC\LMH05TS # Основная копия файла LMHOSTS
#INCLUDE \\AC1\ETC\LMH0STS # Резервная копия 1
#INCLUDE \\AC2\ETC\LMH0STS # Резервная копия 2
#END_ALTERNATIVE
Предполагается, что файл LMHOSTS на сервере AKS реплицируется на резервные
хосты АС1 и АС2. На всех компьютерах Windows 2000 каталог \%SystemRoot%\
SYSTEM32\DRIVERS\ETC обозначается общим именем ETC. Включение блока
оказывается успешным лишь в том случае, если доступен хотя бы один из файлов
LMHOSTS на трех хостах. Если файл недоступен (например, если все хосты
отключены или указан неверный путь), в журнал событий Windows 2000 заносится
соответствующее событие.
Настройка файла HOSTS
Файл HOSTS используется утилитами TCP/IP, разработанными для системы
Unix (в частности, ping и netstat), для преобразования имен хостов в IP-адреса.
Синтаксис файла HOSTS близок к синтаксису LMHOSTS. Более того, файл HOSTS
хранится в одном каталоге с LMHOSTS (\%SystemRoot%\SYSTEM32\DRIVERS\ETC).
Ниже перечислены различия между синтаксисом двух файлов.
О В файле HOSTS не могут использоваться специальные директивы (такие, как
#PRE и #DOM).
О Для одного IP-адреса в файле HOSTS можно определить несколько
псевдонимов (альтернативных имен). Псевдонимы перечисляются в одной строки
и разделяются пробелами.
Существует два варианта обобщенного синтаксиса каждой строки файла HOSTS:
IP-адрес имя1 [имя2 ... имяИ] # Комментарий
# Комментарий
Имя2 и гашЫ — необязательные псевдонимы для имени имя1. Как и в файле
LMHOSTS, все символы после # интерпретируются как комментарий.
Ниже приведен пример файла LMHOSTS:
# (С) Корпорация Майкрософт (Microsoft Corp.), 1993-1999
#
# Это образец файла HOSTS, используемый Microsoft TCP/IP для Windows.
#
# Этот файл содержит сопоставления IP-адресов именам узлов.
# Каждый элемент должен располагаться в отдельной строке. IP-адрес должен
# находиться в первом столбце, за ним должно следовать соответствующее имя.
# IP-адрес и имя узла должны разделяться хотя бы одним пробелом.
#
# Кроме того, в некоторых строках могут быть вставлены комментарии
# (такие, как эта строка), они должны следовать за именем узла и отделяться
# от него символом '#'.
#
# Например:
#
# 102.54.94.97 rhino.acme.com # исходный сервер
# 38.25.63.10 х.acme.com # узел клиента х
127.0.0.1 localhost
199.245.180.1 ntwsl
199.245.180.2 ntws2
199.245.180.3 ntws3
199.245.180.4 ntws4
199.245.180.5 ntws5
199.245.180.6 ntws6 phylos anzimee
ntsmain ntc ntcontroller
Другие служебные файлы TCP/IP
Как упоминалось выше в этой главе, файл HOSTS определяет конфигурацию
многих Unix-служб, адаптированных для Windows 2000. Кроме файла HOSTS,
адаптированные версии служб Unix для Windows 2000 используют еще три
файла - NETWORKS, PROTOCOL и SERVICES, находящиеся в каталоге \%SystemRoot%\
SYSTEM32\ DRIVERS\ETC. Обычно содержимое этих файлов не изменяется — разве
что если вы захотите определить символические имена для своих сетей или
занимаетесь адаптацией новых служб и протоколов для среды Windows.
Файл NETWORKS
Файл NETWORKS используется для идентификации сетей, входящих в
объединенную сеть (то есть сеть, состоящую из нескольких сетей, обычно связанных
через маршрутизаторы). Файл NETWORKS на концептуальном уровне похож на
файл HOSTS. В файле HOSTS хранится информация о соответствии между
адресами и именами хостов, а в файле NETWORKS — информация о соответствии между
адресами и именами сетей.
Каждая строка в текстовом файле NETWORKS содержит информацию в
следующем формате:
имя_сети идентификатор_сети[/маска_подсети] псевдонимы # Комментарий
Здесь имя_сети — идентификатор, представляющий данную сеть, а иденти-
фикатпор_сети — сетевая часть IP-адреса сети. Имя сети не может содержать
пробелов, символов табуляции и знаков # и должно быть уникальным в
границах файла NETWORKS.
Маска ^подсети записывается в десятичной или шестнадцатиричной системе,
компоненты разделяются точками. Квадратные скобки ([]) в приведенном выше
описании синтаксиса NETWORKS указывают на то, что присутствие маски подсети
не обязательно. Если маска подсети не указана, то по умолчанию считается, что
маска не используется.
Необязательные псевдонимы определяют другие имена, которые могут
использоваться для ссылок на данную сеть. Обычно имя сети записывается строчными
буквами, а псевдонимы — прописными.
Все символы от знака # до конца строки игнорируются и интерпретируются
как комментарии, содержащие справочную информацию. Комментарий может
занимать всю строку.
Имена сетей, указанные в файле NETWORKS, используются в конфигурационных
утилитах и командах — например, имя сети может указываться вместо сетевого
адреса. Файл NETWORKS обычно редактируется сетевыми администраторами,
чтобы вместо трудно запоминаемых сетевых адресов в командах и утилитах
использовались более удобные символические имена.
ПРИМЕЧАНИЕ
Файл NETWORKS также приносит пользу при выводе сетевых данных в символическом
представлении — например, при выводе таблиц маршрутизации при помощи route или других аналогичных
команд.
Ниже приведен пример файла NETWORKS.
# (С) Корпорация Майкрософт (Microsoft Corp.), 1993-1999
#
# Этот файл содержит сопоставления сетевых имен/номеров сети для
# локальных сетей. Номера сети задаются в десятичном формате с точками.
#
# Формат:
#
# <сетевое имя> <номер сети> [псевдонимы...] [#<комментарий>]
#
# Например:
#
# loopback 127
# campus 284.122.107
# london 284.122.108
loopback 127
Kinet 199.245.180
SCSnet 200.24.4.0
MyNet 144.19
Файл PROTOCOL
Файл PROTOCOL предназначен для идентификации имен протоколов и
соответствующих им номеров. Номер протокола в семействе протоколов Интернета
совпадает со значением идентификатора протокола в заголовке IP. Поле
идентификатора протокола используется протоколами верхних уровней, работающих
с протоколом IP.
Файл PROTOCOL дополняет модуль TCP/IP и содержит определения
основных протоколов; не изменяйте его содержимое без крайней необходимости.
Каждая строка в текстовом файле PROTOCOL содержит информацию в
следующем формате:
имя_протокола номер_протокола [псевдонимы] # Комментарий
Здесь имя_протокола — идентификатор, представляющий данный протокол,
а помер_протокола — числовой код, используемый для идентификации
протокола в заголовках IP. Имя сети не может содержать пробелов, символов
табуляции и знаков # и должно быть уникальным в границах файла PROTOCOL.
Необязательные псевдонимы определяют другие имена, которые могут
использоваться для ссылок на данный протокол. Обычно имя протокола записывается
строчными буквами, а псевдонимы — прописными.
ПРИМЕЧАНИЕ
Файл PROTOCOL часто используется приложениями, адаптированными из среды Unix.
Некоторые программы с интерфейсом BSD Sockets берут номера транспортных протоколов из файла
PROTOCOL, тогда как в других программах TCP/IP используется «жесткое» кодирование номеров
протоколов.
Все символы от знака # до конца строки игнорируются и интерпретируются
как комментарии, содержащие справочную информацию. Комментарии может
занимать всю строку.
Ниже приведен пример файла PROTOCOL для Windows 2000.
# (С) Корпорация Майкрософт (Microsoft Corp.), 1993-1999
#
# Этот файл содержит протоколы Интернета, определенные
# в документе RFC 1700 (назначенные номера).
#
# Формат:
#
# <протокол> «^назначенный номер> [псевдонимы...] [#<комментарий>]
ip 0 IP # Internet protocol
icmp 1 ICMP # Internet control message protocol
ggp 3 GGP # Gateway-gateway protocol
tcp 6 TCP # Transmission control protocol
egp 8 EGP # Exterior gateway protocol
pup 12 PUP # PARC universal packet protocol
udp 17 UDP # User datagram protocol
hmp 20 HMP # Host monitoring protocol
xns-idp 22 XNS-IDP # Xerox N5 IDP
rdp 27 RDP # "reliable datagram" protocol
rvd 66 RVD # MIT remote virtual disk
Файл SERVICES
В файле SERVICES определяются:
О названия служб;
О транспортные протоколы;
О номера портов, используемых службами.
Службы представляют собой программы, работающие на прикладном уровне
модели TCP/IP, — Telnet, FTP, SMTP, SNMP и т. д. Каждая служба работает на
базе определенного транспортного протокола (TCP или UDP). Информация
о том, какой транспортный протокол используется той или иной службой,
хранится в конфигурационном файле SERVICES. Некоторые службы доступны как
через TCP, так и через UDP. В этом случае служба представлена в файле двумя
записями: для TCP и для UDP.
Файл SERVICES дополняет модуль TCP/IP и содержит определения основных
служб TCP/IP; не изменяйте его содержимое без крайней необходимости.
Каждая строка в текстовом файле SERVICES содержит информацию в
следующем формате:
имя_службы порт/транспорт [псевдонимы] # Комментарий
Здесь имя_служ6ы — идентификатор, представляющий название службы: telnet,
ftp, ftp-data, smtp и т. д. Имя службы не может содержать пробелов, символов
табуляции и знаков # и должно быть уникальным в границах файла SERVICES.
Необязательные псевдонимы определяют другие имена, которые могут
использоваться для ссылок на данную службу.
Все символы от знака # до конца строки игнорируются и интерпретируются
как комментарии, содержащие справочную информацию. Комментарий может
занимать всю строку.
Ниже приведен пример файла SERVICES операционной системы Windows 2000.
# (С) Корпорация Майкрософт (Microsoft Corp.), 1993-1999
#
# Этот файл содержит номера портов для стандартных служб,
# определенные IANA
#
# Формат:
#
# <служба> <номер порта>/<протокол> [псевдонимы...] [#<комментарий>]
#
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users #Active users
systat 11/tcp users #Active users
daytime 13/tcp
daytime 13/udp
qotd 17/tcp quote #Quote of the day
qotd 17/udp quote #Quote of the day
chargen 19/tcp ttytst source #Character generator
chargen 19/udp ttytst source #Character generator
ftp-data 20/tcp #FTP, data
ftp 21/tcp #FTP. control
telnet 23/tcp
smtp 25/tcp mail #Simple Mail Transfer Protocol
time 37/tcp timserver
time 37/udp timserver
rip 39/udp resource #Resource Location Protocol
nameserver 42/tcp name #Host Name Server
nameserver 42/udp name #Host Name Server
nicname 43/tcp whois
domain 53/tcp #Domain Name Server
domain 53/udp #Domain Name Server
bootps 67/udp dhcps #Bootstrap Protocol Server
bootpc 68/udp dhcpc #Bootstrap Protocol Client
tftp 69/udp #Trivial File Transfer
gopher 70/tcp
finger 79/tcp
http 80/tcp www www-http #World Wide Web
kerberos 88/tcp krb5 kerberos-sec #Kerberos
kerberos 88/udp krbS kerberos-sec #Kerberos
hostname 101/tcp hostnames #NIC Host Name Server
iso-tsap 102/tcp #IS0-TSAP Class 0
rtelnet 107/tcp #Remote Telnet Service
pop2 109/tcp postoffice #Post Office Protocol - Version 2
рорЗ 110/tcp #Post Office Protocol - Version 3
sunrpc 111/tcp rpcbind portmap #SUN Remote Procedure Call
sunrpc 111/udp rpcbind portmap #SUN Remote Procedure Call
auth 113/tcp ident tap identification Protocol
uucp-path 117/tcp
nntp 119/tcp usenet #Network News Transfer Protocol
ntp 123/udp #Network Time Protocol
epmap 135/tcp loc-srv #DCE endpoint resolution
epmap 135/udp loc-srv #DCE endpoint resolution
netbios-ns 137/tcp nbname #NETBI0S Name Service
netbios-ns 137/udp nbname #NETBI0S Name Service
netbios-dgm 138/udp nbdatagram #NETBI0S Datagram Service
netbios-ssn 139/tcp nbsession #NETBI0S Session Service
imap 143/tcp imap4 #Internet Message Access Protocol
pcmail-srv 158/tcp #PCMait Server
snmp 161/udp #SNMP
snmptrap 162/udp snmp-trap #SNMP trap
print-srv 170/tcp #Network PostScript
bgp 179/tcp #Border Gateway Protocol
ire 194/tcp #Internet Relay Chat Protocol
ipx 213/udp #IPX over IP
Idap 389/tcp #Lightweight Directory Access
Protocol
https 443/tcp MCom
https 443/udp MCom
microsoft-ds 445/tcp
microsoft-ds 445/udp
kpasswd 464/tcp # Kerberos (v5)
kpasswd 464/udp # Kerberos (v5)
isakmp 500/udp ike #Internet Key Exchange
exec 512/tcp #Remote Process Execution
biff 512/udp comsat
login 513/tcp #Remote Login
who 513/udp whod
cmd 514/tcp shell
syslog 514/udp
printer 515/tcp spooler
talk 517/udp
ntalk 518/udp
efs 520/tcp #Extended File Name Server
router 520/udp route routed
timed 525/udp timeserver
tempo 526/tcp newdate
courier 530/tcp rpc
conference 531/tcp chat
netnews 532/tcp readnews
netwall 533/udp #For emergency broadcasts
uucp 540/tcp uucpd
klogin 543/tcp #Kerberos login
kshell 544/tcp kremd #Kerberos remote shell
new-rwho 550/udp new-who
remotefs 556/tcp rfs rfs_server
rmonitor 560/udp rmonitord
monitor 561/udp
Idaps 636/tcp sldap #LDAP over TL5/SSL
doom 666/tcp #Doom Id Software
doom 666/udp #Doom Id Software
kerberos-adm 749/tcp #Kerberos administration
kerberos-adm 749/udp #Kerberos administration
kerberos-iv 750/udp #Kerberos version IV
kpop 1109/tcp #Kerberos POP
phone 1167/udp #Conference calling
ms-sql-s 1433/tcp #Microsoft-SQL-Server
ms-sql-s 1433/udp #Microsoft-SQL-Server
ms-sql-m 1434/tcp #Microsoft-SQL-Monitor
ms-sql-m 1434/udp #Microsoft-SQL-Monitor
wins 1512/tcp #Microsoft Windows Internet
Name Service
wins 1512/udp #Microsoft Windows Internet
Name Service
ingreslock 1524/tcp ingres
12tp 1701/udp #Layer Two Tunneling Protocol
pptp 1723/tcp #Point-to-point tunnelling protocol
radius 1812/udp #RADIUS authentication protocol
radacct 1813/udp #RADIUS accounting protocol
nfsd 2049/udp nfs #NFS server
knetd 2053/tcp #Kerberos de-multiplexor
man 9535/tcp #Remote Man Server
ПРИМЕЧАНИЕ
Если вы устанавливаете в Windows 2000 новую службу, напрямую адаптированную из Unix, новая
служба может брать определения портов и транспортных протоколов из файла SERVICES. Если
устанавливаемая служба не сохраняет свое описание в файле SERVICES, вероятно, в файл SERVICES
придется добавить строку с информацией о новой службе.
Установка и настройка службы сервера FTP
Серверы Windows 2000 (Windows 2000 Server и Windows 2000 Advanced Server),
а также рабочие станции с Windows 2000 Professional могут выполнять
функции серверов FTP и предоставлять клиентам FTP доступ к файлам. Клиентами
FTP могут быть другие компьютеры с системами Windows 2000, Unix, DOS или
Windows, Macintosh или VMS.
Служба сервера FTP в Windows 2000 поддерживает все клиентские команды
FTP, реализуется в виде многопоточиого приложения Win32 и соответствует
спецификациям протоколов и служб FTP, приведенным в RFC 959, «File Transfer
Protocol (FTP)» и 1123, «Requirements for Internet Hosts».
Серверы FTP используют учетные записи пользователей операционной
системы. В случае с Windows 2000 учетные записи FTP состоят из доменных
учетных записей, созданных на компьютере FTP, и учетной записи анонимного
доступа FTP.
Сервер FTP является частью Microsoft Internet Information Server (IIS). В
следующем разделе приводятся общие сведения об установке и использовании
сервера FTP.
Установка и настройка службы сервера FTP
на сервере Windows 2000
Служба сервера FTP и другие службы Интернета могут устанавливаться в
процессе исходной установки Windows 2000. Выберите строку Internet Information
Server при выборе компонентов Windows во время установки. Сервер FTP
автоматически устанавливается как часть IIS.
Если вы уже установили Windows 2000 Server без Internet Information Server,
IIS можно установить и позднее. Поскольку служба сервера FTP использует
протокол TCP/IP, поддержка TCP/IP должна быть установлена перед
установкой сервера FTP.
ПРИМЕЧАНИЕ
В Windows 2000 большинство параметров сервера FTP настраивается в консоли IIS в программе
Управление компьютером (Computer Management) и в Диспетчере служб Интернета. В Windows NT
некоторые нетривиальные параметры приходится настраивать при помощи реестра. В Windows 2000
использовать реестр не обязательно.
Все параметры сервера FTP находятся в разделе реестра HKEYJ_OCAl_MACHINE\SYSTEm\
CurrentControlSet\Services\MSFTPSRV\Parameters.
Если сервер FTP не установлен, установите IIS и выполните следующие
действия по настройке FTP-сайта:
1. Войдите в систему с правами администратора.
2. Выполните команду Пуск ► Настройка ► Панель управления (Start ► Settings ► Control
Panel).
3. Дважды щелкните на значке Установка и удаление программ (Add/Remove
Programs). Выберите значок Установка компонентов Windows (Add/Remove Windows
Components). Запускается Мастер компонентов Windows.
4. Установите флажок в строке Internet Information Services и щелкните на кнопке
Состав (Details). Убедитесь в том, что флажок Служба FTP (FTP Server) установлен.
5. Щелкните на кнопке ОК. Щелкните на кнопках Далее (Next) в следующих
окнах (не забудьте вставить компакт-диск с дистрибутивом Windows 2000
в дисковод) и завершите установку при помощи кнопки Готово (Finish).
6. Перезагрузите Windows 2000. Просмотрите список служб и убедитесь в том,
что служба FTP была успешно запущена. Чтобы вызвать список служб,
выберите значок Управление компьютером (Computer Management) в приложении
Администрирование (Administrative Tools) панели управления. Откройте папку
Службы и приложения (Services and Applications).
7. Дважды щелкните на значке Службы (Services) на правой панели и убедитесь
в том, что служба FTP готова к работе.
8. В окне приложения Управление компьютером (Computer Management) откройте
папку Службы и приложения\1^еп^ Information Services.
9. Щелкните правой кнопкой мыши на строке FTP-узел по умолчанию (Default FTP
Site) и выберите в контекстном меню команду Свойства (Properties). На экране
появляется диалоговое окно свойств FTP-узла по умолчанию.
10. Введите справочную информацию в поле Описание (Description) или
измените существующее описание. В поле IP-адрес (IP Address) выберите IP-адрес
компьютера с системой Windows 2000. Оставьте в поле TCP-порт (TCP Port)
значение 21 — стандартный номер управляющего порта, через который
устанавливается связь с сервером FTP.
11. В рамке Подключение (Connection) задайте допустимое количество
одновременных подключений FTP к серверу. Количество подключений может быть
ограниченным или неограниченным. Ограничение количества подключений
используется для распределения нагрузки. На практике для предотвращения
перегрузки сервера FTP обычно устанавливается' верхняя граница от 50 до
250 одновременных подключений.
12. Содержимое поля Время ожидания подключения (Connection Timeout) указывает
продолжительность периода бездействия, после которого пользователь FTP
будет отключен от сервера. По умолчанию этот срок составляет 900 секунд
A5 минут). Нулевое значение запрещает отключение пользователей по тайм-
ауту. Тайм-аут обычно используется в целях безопасности для уменьшения
потенциальной угрозы со стороны бездействующих сеансов FTP.
13. Флажок Вести журнал (Enable Logging) управляет протоколированием сеансов
FTP и выбором формата текущего журнала (файл журнала Microsoft IIS,
журнал ODBC, расширенный формат файла журнала W3C).
14. На вкладке Безопасные учетные записи (Security Accounts) указываются
пользователи, которым разрешен доступ к серверу FTP.
15. Установите флажок Разрешить анонимные подключения (Allow Anonymous
Connections), чтобы разрешить вход на сервер FTP под именем anonymous или ftp.
При анонимном входе пользователь не обязан вводить пароль, хотя ему
предлагается ввести свой адрес электронной почты.
16. В поле Пароль (Password) вводится пароль для учетной записи, указанной в поле
Пользователь (Username).
17. Установите флажок Разрешить только анонимные подключения (Allow Only
Anonymous Connections), чтобы пользователи не использовали при подключении к
серверу FTP свои имена и пароли в Windows 2000. Помните, что пароли FTP не
шифруются, и их использование в сети может привести к нарушению
безопасности. По умолчанию этот флажок снят. Если установить флажок Разрешить
управление паролем из IIS (Allow IIS to control password), на узле FTP
осуществляется автоматическая синхронизация пароля анонимного пользователя с
паролем Windows.
18. В рамке Операторы FTP-узла (FTP Site Operators) можно предоставить
пользователям Windows операторские привилегии. По умолчанию операторами
являются члены локальной административной группы.
19. На вкладке Сообщения (Messages) вводится текст сообщений, отображаемых
при подключении и отключении пользователя, а также при превышении
максимально разрешенного количества клиентских подключений.
20. На вкладке Домашний каталог (Home Directory) задается каталог, к которому
подключается пользователь при входе в систему. Домашний каталог может
находиться на локальном компьютере или в общей папке другого компьютера.
Для домашнего каталога устанавливаются права чтения, записи и записи в
журнал, а также стиль вывода содержимого каталога (Unix или MS-DOS).
21. На вкладке Безопасность каталога (Directory Security) устанавливаются
ограничения доступа TCP/IP для заданного IP-адреса и маски подсети.
ПРИМЕЧАНИЕ
Имя пользователя anonymous зарезервировано на компьютерах с системой Windows 2000 для
анонимного входа в систему. Следовательно, вы не сможете использовать учетную запись
пользователя с именем anonymous. В поле Пользователь (Username) следует ввести имя учетной записи
пользователя Windows 2000, которая будет назначаться пользователям при анонимном
подключении. Права доступа для анонимных пользователей FTP определяются правами пользователя с
указанным именем. По умолчанию анонимному пользователю назначается учетная запись с именем
«IUSR_nMflj<oMnbiOTepa».
Настройка TCP/IP для печати
из Windows 2000 на принтерах Unix
Windows 2000 поддерживает возможность печати на принтерах Unix по сети. Для
пересылки заданий печати используется протокол TCP/IP. Поддержка печати
йа принтерах Unix из Windows 2000 соответствует спецификации RFC 1179,
«Line Printer Daemon Protocol».
Для печати на компьютере Unix достаточно одного хоста с системой
Windows 2000 (рабочей станции или сервера), на котором установлена и настроена
служба печати Microsoft TCP/IP. Этот хост выполняет функции шлюза печати
для других клиентов Microsoft (рис. 23.13). Чтобы другие клиенты Microsoft могли
использовать шлюз печати, на них даже не обязательно устанавливать
поддержку TCP/IP. На рис. 23.13 показано, что на компьютере AKS с
установленной поддержкой печати TCP/IP определены общие принтеры \\AKS\Unix|__PRl
и \\AKS\Unixl_PR2. Один принтер подключен непосредственно к сети, а другой —
к хосту Unix. Другие клиенты Microsoft подключаются к общим принтерам так,
словно они являются устройствами печати Microsoft. Задания печати,
отправляемые на общие принтеры \\AKS\Unix_PRl и \\AKS\Unix_PR2, передаются AKS на
соответствующий принтер Unix.
Установка и настройка сетевой печати TCP/IP
Поддержка печати через TCP/IP устанавливается вместе с другими компонентами
в категории Другие службы доступа к файлам и принтерам в сети (Other Network File
and Print Services) во время установки Windows 2000. Если этот компонент не был
установлен, выполните следующие действия:
1. Войдите в систему с правами администратора.
2. Выполните команду Пуск ► Настройка ► Панель управления (Start ► Settings ► Control
Panel).
3. Дважды щелкните на значке Установка и удаление программ (Add/Remove
Programs). Выберите значок Установка компонентов Windows (Add/Remove Windows
Components). Запускается Мастер компонентов Windows.
Windows 2000
с установленной поддержкой
сетевой печати TCP/IP
I | pro. Принтер
|[ :: II 25 Unix
... |1 1| \\AKS\Unix_PR1 Ущ \\AKS\Unix_PR2-. v_,
I Хост ! |AKS \ i
Unix ! 41 PR2
* • 1 4 ♦-f-^ ±+
J : L— -
Windows 2000 DOS/Windows Micintosh
Рис. 23.13. Печать TCP/IP в Windows 2000
4. Установите флажок в строке Другие службы доступа к файлам и принтерам в сети
(Other Network File and Print Services) и щелкните на кнопке Состав (Details).
Убедитесь в том, что флажок Службы печати для Unix (Print Services for Unix)
установлен.
5. Щелкните на кнопке ОК. Щелкните на кнопках Далее (Next) в следующих окнах
(не забудьте вставить компакт-диск с дистрибутивом Windows 2000 в
дисковод) и завершите установку при помощи кнопки Готово (Finish).
Ниже кратко описан процесс настройки печати TCP/IP на компьютере
Windows 2000 для использования служб печати Unix, работающих на другом
компьютере Windows 2000, или эквивалентной службы демона построчной печати на
компьютере Unix:
1. Войдите в Windows 2000 (Server или Workstation) с правами администратора.
2. Выполните команду Пуск ► Настройка ► Принтеры (Start ► Settings ► Printers).
3. Дважды щелкните на значке Установка принтера (Add Printer). Когда на экране
появится окно мастера установки принтеров, щелкните на кнопке Далее (Next).
4. В следующем окне выберите тип устанавливаемого принтера (локальный или
сетевой) и щелкните на кнопке Далее (Next). Если выбрать локальный
принтер, мастер попытается автоматически определить и установить принтер Plug-
and-Play. Если попытка завершится неудачей, выберите принтер из списка.
5. Мастер установки принтеров выводит список доступных портов. Установите
переключатель Создать новый порт (Create a New Port), выберите в списке Тип
порта (Туре) порт LPR и щелкните на кнопке Далее (Next).
6. На экране появляется диалоговое окно Добавление LPR-совместимого принтера
(Add LPR compatible printer).
7. В поле Имя или адрес LPD-сервера (Name or address of server providing LPD) введите
имя DNS или IP-адрес устройства Unix (хоста или сетевого принтера), на
котором работает служба LPD — демон построчной печати, выполняющий
функции сервера печати Unix.
ПРИМЕЧАНИЕ
При печати на сетевом принтере с поддержкой LPR устанавливать службу не обязательно. Она
необходима только в том случае, если очередь принтера находится на обычном хосте Unix.
8. В поле Имя принтера или очереди печати на сервере (Name of printer or print queue
on that server) введите имя принтера Unix в системе.
9. Завершив ввод данных в диалоговом окне Добавление LPR-совместимого принтера
(Add LPR compatible printer), щелкните на кнопке ОК. Если служба LPD не
поддерживается, будет выведено соответствующее сообщение. Щелкните на кнопке ОК.
10. В следующем окне мастера установки принтеров выберите производителя
оборудования в списке Изготовитель (Manufacturers) и модель принтера в
списке Принтеры (Printers). Щелкните на кнопке Далее (Next).
11. Мастер установки принтеров отображает имя принтера и спрашивает,
должен ли этот принтер использоваться по умолчанию. Выберите нужный ответ
и щелкните на кнопке Далее (Next).
12. Далее мастер установки принтеров предлагает указать, будет ли этот принтер
совместно использоваться в сети. Установите переключатель Имя общего
ресурса (Share as) или Нет общего доступа к этому принтеру (Do not share this
printer). По умолчанию имя общего принтера совпадает с именем принтера,
введенным ранее. Щелкните на кнопке Далее (Next).
13. В следующем диалоговом окне находятся поля Размещение (Location) и
Комментарий (Comment) для ввода информации о местонахождении и
возможностях принтера. Щелкните на кнопке Далее (Next).
14. При желании напечатайте тестовую страницу, чтобы убедиться в
правильности выбранной конфигурации. Щелкните на кнопке Далее (Next) и завершите
установку принтера кнопкой Готово (Finish).
15. Если тестовая страница напечатана успешно, щелкните на кнопке ОК, а если
нет — провепьте настройки принтера. Для этого следует щелкнуть правой
кнопкой мыши на значке нового принтера и выбрать в контекстном меню
команду Свойства (Properties).
16. На вкладке Параметры устройства (Device Settings) выбираются такие
параметры, как тип и источник бумаги, объем памяти и т. д. Внесенные изменения
сохраняются кнопкой ОК.
Настройка принтера TCP/IP завершена. Закройте окно Принтеры.
Печать в Windows 2000 из клиентов Unix
В предыдущем разделе рассматривается процедура настройки печати на
принтерах Unix из клиентов Microsoft. В смешанных сетях, содержащих клиентов Unix
и Microsoft, иногда возникает необходимость в печати из клиента Unix на
принтере Windows 2000.
Для печати из клиента Unix на компьютере с системой Windows 2000 на
последнем должна работать служба печати TCP/IP. Клиенты печати Unix
используют службу Unix LPD. В Windows 2000 запускается служба LPDSVC, которая
эмулирует демона построчной печати Unix. На рис. 23.14 показано, как
организуется печать из клиентов Unix в Windows 2000.
Г LPDSVC ^
I ^ \Ь^г^,,;^г Устройство печати
' \ ^ЯШВ& Windows 2000
Windows 2000
? ^ »■■ ч»^ •
kS Pi г~"л
I > _ LPR «^ I Г_ LPR ^ I f _ LPR •?
nLJ HUJ Q_^^_/
i»j^!!!!I!!I!II!f^^[! PiiSl!I!!IIIIT^3) f^^^JUJiJU^^^^^^j
liHttF^ ijj|piT^i| /MlBM^
Клиенты Unix
Рис. 23.14. Печать из клиентов Unix на компьютере с системой Windows 2000
Запуск, остановка, продолжение и завершение службы Windows 2000 LPDSVC
осуществляются следующими командами NET:
О NET START LPDSVC,
О NET PAUSE LPDSVC,
О NET CONTINUE LPDSVC,
О NET STOP LPDSVC.
Кроме того, эти операции могут выполняться при помощи значка Службы
(Services) панели управления. Служба LPDSVC называется сервером печати
TCP/IP в диалоговом окне, изображенном на рис. 23.15. По умолчанию эта служба
запускается автоматически. Чтобы изменить способ запуска службы, выберите
нужную строку в списке Тип запуска (Startup type).
Отправка задания печати в Windows 2000 из клиента Unix выполняется
соответствующей командой Unix (обычно используется команда Ipr). За
дополнительной информацией о команде Ipr обращайтесь к документации Unix.
Обобщенный синтаксис команды Ipr:
Ipr -s хост -Р принтер файл
Здесь хост — имя DNS компьютера с системой Windows 2000, на котором
работает LPDSVC; принтер — имя принтера Windows 2000, определенного в
Windows 2000; файл — имя файла Unix, выводимого на печать.
Программы командной строки TCP/IP
Комплект поставки Windows 2000 содержит ряд служебных программ TCP/IP,
работающих в режиме командной строки. В основном эти программы созданы
на базе прототипов, написанных для системы Unix. Они хорошо знакомы всем,
кто уже пользовался инструментарием TCP/IP для Unix.
Tfee | 1 Name / j tescnptipn [Status|. 5tat1xip,T>3?e fbag^OnAs 1 Al
№i Sfervice$(LotaO' :j^g&Remote Registry Service Allows rem... Started Automatic LoealSystem
I ]<%Removable Storage Manaoes f... Started Automatic LocalSystem
I J ^Routing and Remote Access tflffiOESSSIiSBSIZES
I ;;|%RunAs Service En. } 1 j
:]%Security Accounts Manager Stc Ge^dt IL^ °" I ****** I Depended*» \
I I ^u Server Pre 111
II^SfenpbMalTransportProto... Tr*. *"*•"■"«■ >^VC • |
№s«npleTCPAP Services Sut 0^^- УёАЫа,1Ш>ЦЦ|
№ Smart Card Ma * •■ ::, I
I -I$&Smart Card Hefcer Pre Оевсф^юл; {Provides a TCP/IP-based printing service that uses the I j ]
I :№SNMP Service Inc . ill
:№SNMP Trap Service Re ^towepujaWer
%System Event Notification Tr< ;iC;^SNNT\SyJt^2Mcpsvcieie~ ~"'
I I % Task Scheduler En. ; |j
;]%TCP/IP NetBIOS Helper Ser... En. Startup t^P*- |Automatic 3 I
|^1iOWI^5»>^.:.:;,. ^i; Pr<
I ::|^b Telephony Pre • 1 j
I I та Telnet Alk ; Sav«e tfattw Started 1 j
I y& Terminal Services Pre ♦ . , I j I 1
^: %UmnterruptWe Power Supply Ma yr 1 Stop I Pau?e 1 :""'/'• 1 j 1
I ]%Utiflty Manager Stc ,. , ' , . , , , . _L j I
I IJr Youcari spec «j< the s*ai»paf6melets»-«lappjy when you s»a*» ihe serwee I j I
№ Windows Installer Ins fomhwe . j 1
I :№ Windows Internet Name Se... Pre . | J
I | <f»> Windows Management Inst... Pre U- :-- o: ••-':. .; j II 1
I «^Windows Management Inst... Pre 111
^Windows Time Set J j j
^Workstation Pre , Г r5F~~| Cancel | • :, f J
та World Wide Web Publishing... Pre ^__ i » » * j *^f
|^Start|;j g -S НИ ^ jj t-JMUSERSfr... | ^NovellOnfo.,, j jjjftecjtstrvm..\\^Services .'^'"^'"""i'loi'pM |
Рис. 23.15. Окно свойств сервера печати TCP/IP
Помимо программ командной строки, в Windows 2000 также включены
простые службы TCP/IP, работающие на большинстве хостов Unix (например, ECHO,
DAYTIME, CHARGEN и DISCARD). Впрочем, в Windows 2000 эти службы
устанавливаются отдельно в категории Простые службы TCP/IP.
В Windows 2000 включены следующие программы командной строки.
arp tracert
hostname finger
ipconfig rep
Ipq rexec
Ipr rsh
nbtstat ftp
netstat tftp
ping telnet
route pathping
Хотя программы ftp, rexec и telnet требуют аутентификации, пароли перед
отправкой не шифруются. Следовательно, использование этих программ создает
потенциальную угрозу для безопасности системы. Для работы с этими
программами рекомендуется создавать дополнительные учетные записи, чтобы
предотвратить несанкционированный доступ к паролям. В Windows 2000 Telnet
поддерживает механизм шифрованной аутентификации. Используйте его, если
имеется сколько-нибудь существенный риск перехвата данных учетных записей
Telnet.
В этом разделе описан процесс установки простых служб TCP/IP, а также
рассматриваются основные программы командной строки.
Простые службы TCP/IP входят в категорию сетевых служб Windows,
устанавливаемых в процессе основной установки системы. Ниже описана процедура
установки простых служб TCP/IP, если они почему-либо не были установлены
ранее.
1. Войдите в систему с правами администратора.
2. Выполните команду Пуск ► Настройка ► Панель управления (Start ► Settings ► Control
Panel).
3. Дважды щелкните на значке Установка и удаление программ (Add/Remove
Programs). Выберите значок Установка компонентов Windows (Add/Remove Windows
Components). Запускается Мастер компонентов Windows.
4. Выберите категорию Сетевые службы (Network Services) и щелкните на кнопке
Состав (Details). Установите флажок Простые службы TCP/IP (Simple TCP/IP Services)
(рис. 23.16).
То add or remove a component, click the checfc box. A shaded box means that only part
of the cornponerrt w! be hstalMЛ^ I
Subcomponents of Metworking Sefvlce^ :{:: I
Internet Services Proxy 0.0 MB "+J 1
P |SJ Domain Ndrne System (DNS) 1.1MB ^1
D $ Dynamic Host Configuration Protocol (DHCP) 0.0 MB I I
IG JUI nternet Authentication S ervice 0.0MB I . ■ J
iG (j^QoS Admission Control Service 0.0 MB -J I
JD JUSite Server ILS Services 1 6 MB zl: J
[ Description: Supports the fofiov^^gT^/IP se^rces: CrwadefGer^ratoi.Daytffne, I
Discard, Echo, and Qudteof She Day
Total disk space lequeedf; ;; U9;&8 П^-filj |
Space available on di$lc 667ДМ8 ~~ •
• ' - J OK | Cancel |
Рис. 23.16. Установка простых служб TCP/IP
5. Щелкните на кнопке ОК. Щелкните на кнопках Далее (Next) в следующих
окнах (не забудьте вставить компакт-диск с дистрибутивом Windows 2000
в дисковод) и завершите установку при помощи кнопки Готово (Finish).
ПРИМЕЧАНИЕ
В категорию простых служб TCP/IP входят службы CHARGEN, DAYTIME, DISCARD, ECHO и QUOTE,
часто применяемые в диагностических целях.
Служба CHARGEN работает на порте TCP с номером 19. При подключении к этому порту через Telnet
на экране выводится циклическая последовательность из 95 печатаемых символов в кодировке ASCII.
Следующая команда Telnet подключается к службе CHARGEN на удаленном компьютере remote:
telnet remote 19
Служба CHARGEN может использоваться как средство диагностики, позволяющее убедиться в
нормальной работе удаленного компьютера вплоть до уровня TCP.
Служба DAYTIME работает на порте TCP с номером 13. При подключении к этому порту через
Telnet выводится представление текущего времени на удаленном компьютере в кодировке ASCII.
Следующая команда Telnet подключается к службе DAYTIME на удаленном компьютере remote:
telnet remote 13
Команда позволяет узнать время на удаленном компьютере и убедиться в нормальной работе
канала связи вплоть до уровня TCP на удаленном компьютере.
Служба DISCARD работает на порте TCP с номером 9. При подключении к этому порту через Telnet
все передаваемые данные игнорируются. Это своего рода «черная дыра», в которой бесследно
пропадают любые данные. Следующая команда Telnet подключается к службе DISCARD на
удаленном компьютере remote:
telnet remote 9
Порт TCP с номером 9 часто используется в качестве фиктивного порта для тестирования программ.
Например, службе DISCARD можно передавать тестовые сообщения TCP, которые не содержат
важной информации и потому могут уничтожаться.
Служба ECHO работает на порте TCP с номером 7. При подключении к этому порту через Telnet
все передаваемые данные возвращаются отправителю. Служба используется как средство
диагностики, позволяющее убедиться в том, что передаваемые сообщения доходят до адресата и
возвращаются обратно без искажений. Следующая команда Telnet подключается к службе ECHO на
удаленном компьютере remote:
telnet remote 7
Служба QUOTE работает на порте TCP с номером 17. При подключении к этому порту через Telnet
выводится «цитата дня», случайным образом выбранная из файла %SystemRoot%\System32\Drivers\
Etc\Quotes. Служба используется для проверки приема сообщений с удаленного компьютера.
Следующая команда Telnet подключается к службе QUOTE на удаленном компьютере remote:
telnet remote 17
После успешной установки связи на экране выводится «цитата дня».
Итоги
В процессе настройки TCP/IP в Windows 2000 задаются значения таких
базовых параметров, как IP-адрес, маска подсети, основной шлюз и серверы имен.
Чтобы выйти за пределы текущей сети, компьютер с системой Windows 2000
должен располагать данными по крайней мере одного основного шлюза. Если
сеть состоит только из компьютеров на базе Windows 2000, для разрешения
имен хватит данных сервера DNS. Тем не менее, если потребуется обеспечить
совместимость со старыми клиентами и серверами Windows, на компьютерах
Windows 2000 необходимо настроить параметры WINS. В сетях Windows 2000
механизм разрешения имен NetBIOS по-прежнему играет важную роль при
обеспечении обратной совместимости.
Хотя работа службы Active Directory в Windows 2000 зависит от TCP/IP, стек
протоколов TCP/IP практически не требует специальной настройки — достаточно
указать сервер DNS, обеспечивающий разрешение имен.
2 А Поддержка IP
&l? в Novell NetWare
Джо Девлии (Joe Devlin), Эмили Берк (Emily Berk)
Многие считают систему NetWare фирмы Novell предком всех современных
сетевых операционных систем. Это надежный продукт, который развивался в
течение 18 лет. В наши дни NetWare работает на 5 миллионах серверов и 81
миллионе рабочих станций по всему миру.
Novell и TCP/IP
Поддержка TCP/IP в продуктах Novell внедрялась медленно и постепенно.
Версия NetWare 3.11 была выпущена в 1987 году с интегрированной встроенной
поддержкой туннелирования IP, поддержкой стека TCP/IP и прикладных служб
TCP/IP (таких, как FTP и NFS). С того времени фирма Novell включила в свои
сетевые операционные системы широкий спектр решений на базе TCP/IP. Многие
из этих старых решений до сих пор продолжают использоваться. Novell создает
надежные операционные системы, и в мире NetWare старые серверы обычно
оставляют обслуживать сети отделов, филиалов и т. д., тогда как новые серверы
назначаются на решение более масштабных задач или управление Интернетом.
IP и NetWare 4
Система NetWare 4 стала первой серьезной попыткой Novell в создании
операционной системы, обладающей полноценной поддержкой Интернета. В NetWare 4
появилась служба NDS (Novell Directory Services), упрощающая управление
широким спектром сетевых ресурсов в глобальной сети, содержащей серверы
NetWare, NT и Unix. Служба NDS привлекла внимание сетевых
администраторов и лишь укрепила репутацию Novell как разработчика практичных решений,
выходящих за рамки технических возможностей Microsoft.
Попытка внедрения основных средств интернет-разработки в NetWare 4 была
несколько менее успешной. Версия NetWare 4.11 (прозванная Intranet Ware),
выпущенная в октябре 1996 года, содержала собственный набор интернет-средств,
в том числе NetWare Web Server, NetWare FTP Server и NetWare Internet Access
Services (NIAS). Фирма Novell также добавила инструменты для подключения
серверов и клиентов NetWare к интернет-устройствам, работающим на базе TCP/IP.
Служба NDS пользовалась огромным успехом. Тем не менее одного сервера
Novell 4.x с NDS было вполне достаточно для управления большим
конгломератом серверов Novell 3.x, NT и Unix. Корпорации хотели использовать поддержку
TCP/IP на своих серверах Novell, но эта задача решалась многими способами
с использованием серверов NetWare 3.x и 4.x. Не было никаких убедительных
доводов в пользу перехода на NetWare 4.x. Такие доводы появились с выходом
NetWare 5 и Pure IP.
Версия NetWare 6, выпущенная в 2001 году, базируется на возможностях
NetWare 5 и дополняет их такими новыми возможностями, как iPrinter, SAN
(Storage Are Network), Remote Management, встроенными средствами
кластеризации и рядом других служб. Тем не менее базовая поддержка протокола
TCP/IP осталась на том же уровне, что и в NetWare 5. По этой причине
описание сервиса TCP/IP в NetWare 5 в этой главе в равной степени относится
к NetWare 6.
NetWare 5 и NetWare 6
В версии NetWare 5 произошли принципиальные изменения в отношении Novell
к IP. IPX, старый коммуникационный протокол Novell, элегантен, надежен и прост
в использовании. Тем не менее повсеместное распространение получил
протокол IP. Фирма Novell вовремя поняла, что происходит, и переработала NetWare
так, что главным коммуникационным протоколом системы стал протокол IP
(вместо IPX).
Версия NetWare 5 была выпущена в сентябре 1998 года как решение на базе
«чистого IP»; версия NetWare 6, выпущенная в 2001 году, также использует
«чистый IP». Термин «чистый IP» означает, что надобность в инкапсуляции
IPX отпала. Протокол прикладных служб NCP (NetWare Core Protocol)
работает исключительно через TCP/IP.
NetWare 5 использует средства IP для поиска, адресации и пересылки
данных. По сравнению с маршрутизацией NetBIOS в Windows NT или
инкапсуляцией IPX, использовавшейся в прежних версиях NetWare, «чистый IP»
обеспечивает прямой, беспрепятственный доступ к другим сетям на базе IP, включая
платформы Unix и Интернет. Тем самым обеспечивается улучшенное
быстродействие, снижение затрат и простота управления для компаний, полагающихся
на IP в коммуникациях.
Фирма Novell хорошо справилась с расширением знакомых средств типа NDS
и их адаптацией к миру TCP/IP. Кроме того, некоторые стандартные
технологии (такие, как SLP, DHCP и DNS) в NetWare были расширены для поддержки
сетей IP, IPX и смешанных сетей. При этом фирма Novell не забыла об
огромной существующей базе серверов NetWare 3.x и 4.x, работающих на базе IPX.
Хотя стандартным коммуникационным протоколом NetWare теперь является IP,
система NetWare 5 полностью совместима со старыми версиями NetWare,
построенными на базе IPX.
Традиционные решения: IP в NetWare 3.x-4.x
Протокол IPX/SPX (часто сокращается до IPX) был отдаленным аналогом
TCP/IP в сетях Novell. Он является базовым коммуникационным протоколом
во всех серверах NetWare 3.x и 4.x. Протокол IPX отличается надежностью и
стабильностью, но по популярности он значительно уступает TCP/IP. Фирма Novell
стала включать в NetWare интерфейс IPX-TCP/IP, начиная с 1987 года. С того
времени было разработано немало продуктов, связывающих IPX с TCP/IP,
каждый из которых обладает своими специфическими возможностями. В табл. 24.1
приведена краткая сводка основных продуктов с указанием областей
применения по каждому продукту.
Таблица 24.1. Основные технологии, связывающие IPX с TCP/IP
Название Характеристика Область применения Недостатки
IP Tunneling Сервер снабжает Обеспечение связи между Не обеспечивает
каждый исходящий двумя сетями Novell связи TCP/IP между
пакет IPX заголовком на базе IPX, связанных по рабочими станциями.
TCP/IP магистральному каналу TCP/IP Не подходит для
и автоматически или через Интернет. Хорошо соединения большого
восстанавливает подходит для небольшого количества серверов
входящие пакеты количества серверов
IP Relay Обмен данными IPX Технология оптимизирована Технология обладает
инкапсулируется для постоянных соединений теми же достоинствами
в пакетах TCP/IP, (выделенных линий и т. д.); и недостатками, что
которые могут ретрансляция IP обычно и туннелирование IP,
передаваться применяется при создании но лучше подходит
по магистральному виртуальных частных сетей для использования
каналу IP (VPN) в больших сетях
LAN Предоставление Клиентская часть предоставляет Для использования
Workspace доступа к ресурсам доступ к ресурсам TCP/IP этого продукта
TCP/IP и NetWare IPX на компьютерах, не сетевые
за счет предоставления подключенных к локальной администраторы
клиентским сети. Серверная часть должны хорошо
приложениям поддерживает разбираться как
TCP/IP возможности централизованную в IPX, так и в TCP/IP
чтения/записи установку, настройку и
в стеках TCP/IP и IPX сопровождение ресурсов IP
IPX-IP Шлюз преобразует Поскольку все назначение Необходима установка
Gateway данные IPX в данные IP-адресов ограничивается как серверной, так
TCP/IP и направляет адресом шлюза, обычные и клиентской части,
их нужному пользователи IPX, Рабочие станции
получателю подключенные через шлюз, общаются с хостами
могут использовать стандартные IP через шлюз,
web-браузеры или другие что увеличивает
WinSock-совместимые программы непроизводительные
TCP так, как если бы поддержка затраты ресурсов во
TCP/IP была настроена на их всех сеансах связи
локальном компьютере
Название Характеристика Область применения Недостатки
NetWare/IP Инкапсуляция всего Поскольку поддержка IPX На клиенте и сервере
трафика IPX в IP остается доступной на каждой необходимо
рабочей станции, старые установить несколько
IPX-приложения могут компонентов,
взаимодействовать напрямую взаимодействующих
независимо друг
от друга
IP Tunneling
Для установления связи между двумя IPX-сетями Novell, связанными
магистральными каналами TCP/IP или через Интернет, лучше всего подойдет технология
тунпелировапия IP (IP Tunneling), поддерживаемая во всех версиях NetWare,
начиная с 3.11. В этой технологии рабочие станции на базе IPX отправляют
стандартные пакеты IPX локальному или удаленному туннельному серверу. Сервер, на
котором работает соответствующая программная поддержка, ожидает
поступления пакетов IPX. Получив такой пакет, сервер снабжает его заголовком TCP/IP
и маршрутизирует в сети TCP/IP к заданному адресу. Обычно туннелирование
реализуется загружаемым модулем NetWare IPTUNNEL.NLM. Драйвер IPTUNNEL на
сервере инкапсулирует пакеты IPX/NCP в кадрах IP, добавляет заголовок UDP,
заголовок IP и поле контрольной суммы IP для проверки целостности данных.
Туннельные серверы используют стандартные IP-адреса, что позволяет
организовать маршрутизацию пакетов между серверами через Интернет или
магистральный канал TCP/IP. При получении пакета на другом конце канала другой
туннельный сервер IPX удаляет заголовок TCP/IP и передает «чистый» пакет
IPX в точку приема.
Главное преимущество туннелирования IP заключается в том, что оно
позволяет организовать межсетевое взаимодействие IP/IPX с минимальными
неудобствами для сетевых администраторов и пользователей. Например, для
реализации туннелирования на рабочей станции не придется устанавливать
специальные клиентские програмы. Более того, рабочая станция вообще не знает
о том, что пакеты данных IP будут инкапсулироваться. В результате все
существующие приложения IPX работают точно так же, как в обычной сети IPX.
Главный недостаток туннелирования IP заключается в том, что оно не
обеспечивает связи TCP/IP между рабочими станциями. Тем не менее это
надежное и дешевое решение, которое достаточно хорошо справляется со своими
задачами, особенно при связывании небольшого количества серверов. С другой
стороны, инкапсуляция пакетов снижает эффективность пересылки, а
необходимость в дополнительном управлении и диагностике затрудняет сопровождение
сети. По этой причине туннелирование не подходит для объединения большого
количества серверов.
IP Relay
Технология ретрансляции IP (IP Relay) обладает более широкими возможностями,
чем технология туннелирования IP. В ней также используется серверная
инкапсуляция данных IPX в пакетах TCP/IP, которые затем передаются по каналу IP.
Отличие заключается в том, что ретрансляция IP оптимизирована для постоянно
действующих каналов — таких, как выделенные линии, широко используемые
для связи филиалов с основными представительствами фирм. Ретрансляция
часто используется для создания виртуальных частных сетей, не требующих
установки и сопровождения дорогостоящих программ на стороне клиента. В остальных
отношениях ретрансляция IP обладает теми же достоинствами и
недостатками, что и туннелирование. Продукт IP Relay от Novell является частью NetWare
Multiprotocol Router (MPR) версии 2.0 и выше, а также интегрируется с WAN-
версией NetWareLink Services Protocol.
Ретрансляция IP также использует инкапсуляцию, но ее применение для
архитектур «точка-точка» в глобальных сетях значительно упрощает ее настройку
и администрирование по сравнению с туннелированием IP. Сети IP Relay лучше
всего реализуются в архитектурах типа «звезда». Центральный сервер
располагает таблицей IP-адресов всех периферийных серверов. Периферийные серверы
не обязаны знать IP-адрес центрального сервера, они могут работать в режиме
прослушивания и ждать момента, когда центральный сервер откроет
коммуникационную линию.
Технология ретрансляции IP, спроектированная для архитектур
«точка-точка», порождает существенно меньше трафика, чем туннелирование, а также
упрощает процессы установки и администрирования. В конечном счете она также
обладает лучшим потенциалом масштабирования.
LAN Workplace
Продукты Novell LAN Workplace предоставляют пользователям Windows NT/2000
и DOS доступ к ресурсам как TCP/IP, так и NetWare IPX. В этих продуктах
дейтаграммы IPX не инкапсулируются в заголовках TCP/IP. Вместо этого на
стороне клиента используются программные средства, поддерживающие чтение
и запись в стеках TCP/IP и IPX. Таким образом, LAN Workplace позволяет
рабочим станциям DOS и Windows получить доступ к хостам Unix и дискам
NetWare через TCP/IP.
LAN Workplace устанавливается на уровне рабочей станции или сервера.
После установки LAN Workplace предоставляет доступ к ресурсам TCP/IP
даже компьютеру, не имеющему прямого подключения. При установке на сервере
LAN Workplace дает возможность всем пользователям сети работать с ресурсами
TCP/IP. Кроме того, серверная установка также позволяет администраторам
сети NetWare централизованно решать задачи установки, настройки (включая
назначение IP-адресов рабочих станций) и сопровождения.
Недостатком LAN Workplace можно считать то, что сеть IPX не
преобразуется в сеть TCP/IP. Вместо этого поддержка TCP/IP существует отдельно и
независимо от поддержки IPX. Следовательно, управление сетью LAN Workplace
требует всех навыков, необходимых для управления сетями IPX и TCP/IP.
IPX-IP Gateway
Фирма Novell включила свой продукт IPX-IP Gateway в NetWare 4.0 в 1996 году.
Данное решение требует установки компонентов как на сервере (шлюз), так
и на клиенте (редиректор). Тем не менее IP-адреса необходимы только шлюзам.
Затем шлюз автоматически обеспечивает адресацию TCP/IP и IPX и
маршрутизацию сообщений, отправляемых и получаемых клиентом.
IPX-IP Gateway — изящное решение, которое избавляет сетевых
администраторов от хлопот с адресацией IP (поскольку IP-адреса нужны только шлюзам).
Маршрутизация через шлюз реализована достаточно полно, поэтому каждая
подключенная рабочая станция IPX может использовать стандартный браузер или
другую WinSock-совместимую программу TCP так, словно протокол TCP/IP
настроен непосредственно на ней.
Маршрутизация всего трафика IP через шлюз означает новые
непроизводительные затраты в сеансах связи. С другой стороны, шлюз может выполнять
функции простого брандмауэра. В сочетании с программой Novell NDS, продукт
IPX-IP Gateway предоставляет в распоряжение сетевого администратора
централизованную консоль для определения и сопровождения всей информации о
правах доступа пользователей и групп.
NetWare/IP
Продукт NetWare/IP, впервые появившийся как дополнение к NetWare 3.1x
и NetWare 4.x в 1993 году, предназначался для интеграции сервиса NetWare
в среду TCP/IP. Он также поставлялся в качестве компонента Novell Multi-
Protocol Router.
NetWare/IP обеспечивает более полную интеграцию сервиса NetWare 3.x
и 4.x в среду TCP/IP, чем любое из представленных выше решений. В его работе
используется как инкапсуляция, так и передача стандартных пакетов IP.
Впрочем, это решение также потребует больших усилий со стороны администратора.
Например, для NetWare/IP придется установить несколько независимых
компонентов на стороне клиента и сервера.
Клиентская поддержка NetWare/IP состоит из файла TCPIP.EXE (стек TCP),
модуля NWIP.EXE и одного из виртуальных загрузочных модулей оболочки NetWare
(NETX.EXE) или NetWare DOS Requester. Клиентская архитектура NetWare/IP
соответствует традиционной клиентской архитектуре NetWare на физическом,
канальном и прикладном уровнях. Впрочем, транспортный уровень изменился —
вместо традиционной схемы адресации IPX используется стек UDP-TCP/IP
(TCPIP.EXE).
NetWare/IP также расширяет возможности стандартных средств
управления IP. Например, распределенная служба разрешения имен DNS
используется для централизованного хранения информации о соответствии имен хостов
и IP-адресов. Служба DSS (Domain SAP Server) ведет базу данных,
используемую для хранения и предоставления информации IPX SAP среди клиентов
и серверов NetWare/IP.
Такие службы NetWare 3.x и 4.x, как службы файлов, печати и каталогов,
распространяют информацию о себе при помощи протокола Novell SAP (Service
Advertising Protocol). Каждые 60 секунд эти службы производят
широковещательную рассылку пакета, в котором указывается имя, тип службы и адресная
информация. Во время загрузки сервер NetWare/IP сообщает о себе остальным
узлам сети, посылая запись SAP ближайшему серверу DSS с использованием
протокола UDP.
В NetWare/IP весь трафик IPX инкапсулируется в IP. Поскольку стек IPX
остается доступным на каждой рабочей станции, старые приложения на базе
IPX по-прежнему могут общаться напрямую на уровне этого стека. Так как стек
работает под инкапсуляцией IP, к тем же приложениям IPX пользователи могут
обращаться и через TCP/IP. Естественно, существуют некоторые ограничения
того, что можно сделать при помощи эмуляции TCP/IP. Например,
приложения, использующие механизм широковещательной рассылки IPX, не будут
нормально работать при передаче пакетов через маршрутизатор IP.
NetWare 5/NetWare 6 — IP и все
удобства Novell
Полноценная поддержка TCP/IP в NetWare 5 и NetWare 6 была действительно
эффектным новшеством. Фирма Novell полностью переработала архитектуру
операционной системы и средства управления, входившие в ее поставку, что
позволило настроить NetWare для «чистой» сети IP, для «чистой» сети IPX или
для смешанной сети, поддерживающей оба протокола одновременно. Из ядра
операционной системы были исключены все старые зависимости от IPX. Там,
где это было уместно, были добавлены связи между NCP и TCP/IP. В результате
весь сервис NetWare, присутствующий в предыдущих версиях, теперь доступен
и через TCP/IP.
Полноценная поддержка IP
Операционные системы NetWare 5 и NetWare б, а также связанные с ними
вспомогательные средства типа NDS, теперь обладают полноценной поддержкой
TCP/IP. Операционная система, зарегистрированные в ней клиенты и
приложения, работающие в этой операционной системе, могут взаимодействовать друг
с другом, не выходя за рамки стека протоколов TCP/IP. Им уже не приходится
прибегать к инкапсуляции IPX, маршрутизации, туннелированию или шлюзам.
Эти технологии справлялись со своими задачами в ранних версиях IP и
продолжают использоваться большинством других (не входящих в семейство Unix)
операционных систем, однако они порождают лишний трафик и приводят к
лишним затратам аппаратных ресурсов. Использование только трафика IP в канале
снижает требования к программной и аппаратной поддержке маршрутизации,
повышает фактическую пропускную способность сети, освобождает от
необходимости поддерживать несколько сетевых протоколов и расширяет
возможности удаленного подключения к Интернету и корпоративным интрасетям.
Поддержка нескольких протоколов
Хотя протокол IP стал стандартным коммуникационным протоколом NetWare,
фирма Novell не стала разрывать связи с миллионами пользователей NetWare
3.x, 4.x и традиционного инструментария на базе IPX. В NetWare 5 и NetWare 6
осталась поддержка IPX, которую можно активизировать в случае необходимости.
NetWare 5 и NetWare 6 позволяют перейти на работу в среде IP без
преобразования всех существующих IPX-приложений и без нарушения работы
корпоративных систем. С другой стороны, вы можете выбрать IPX в качестве стандартного
протокола и полностью избежать всех вопросов, которые приходится решать
при переходе на IP. Наконец, возможен третий вариант — работать в смешанной
среде и постепенно переходить с IPX на IP по мере возникновения новых
потребностей или роста квалификации.
Варианты установки
При установке NetWare 5 или NetWare 6 выбирается один из трех режимов:
О IP;
О IP/IPX;
О IPX.
Выбранный вариант определяет способы привязки NetWare к стекам
протоколов и сетевым платам, но не сказывается на том, какие стеки протоколов
загружаются в системе. Например, в первом варианте установки («только IP»)
загружаются оба стека, TCP/IP и IPX, но к сетевой плате привязывается только
стек TCP/IP. В этом случае протокол IP является основным, а стек IPX
загружается только для того, чтобы система могла выполнять приложения IPX и
связываться с другими системами IPX при помощи Novell Migration Agent.
Системы, установленные со смешанной поддержкой IP и IPX, позволяют
создавать подключения NCP как через стек TCP/IP, так и стек IPX.
Предоставляя одновременный доступ к IPX и TCP/IP, NetWare 5 и NetWare 6
обеспечивают поддержку существующих IPX-приложений, а также всю
маршрутизацию IP и IPX. В NetWare 5 и NetWare 6 также предусмотрен режим
совместимости (подробности см. ниже), который может использоваться для управления
IPX-приложениями в тех случаях, когда при установке сети был выбран вариант
«чистой» сети IP. Другое средство, входящее в поставку системы — NetWare
Migration Agent, — обеспечивает связь между двумя сетями, одна из которых
устанавливалась как «чистая» сеть IP, а другая работает на базе протокола IPX.
Разные варианты установки IP/IPX представлены на рис. 24.1.
Установка NetWare 5 и NetWare 6 для IP
Вариант установки NetWare 5 и NetWare 6 «только для IP» сильно упростит
жизнь клиентам, активно использующим IP-коммуникации, устранит
необходимость в сопровождении нескольких протоколов и снизит загрузку сети. В этой
конфигурации сервер напрямую обменивается данными с любым клиентом или
сервером, использующим стек TCP/IP. Стек IPX загружается, но не
привязывается к сетевой плате. Для запуска IPX-приложений можно воспользоваться
встроенным режимом совместимости, но сначала необходимо установить Migration
Agent для подключения к IPX-серверам и клиентам. Этот вариант установки
обладает многими преимуществами: сопровождение одного протокола требует
меньше аппаратных и программных ресурсов, повышает эффективность
управления и использования сети, повышает производительность и снижает затраты.
В очень больших сетях он оказывается наиболее эффективным.
fi^^ss) Шзш fnni ysi рив
щЭШщ^—7 1 111 Шш
— 11 ИПШПГ сеть IP I I jSL
Чистый клиент IP ен±э f^ki ^^^
ЖИНИ О \m\ mi
т Тит T ,,px Ш. ^ т пг,'Т'|Т' и
Сеть IPX u ^ ' ™ „ Сеть IP JSL
щзэ п=±=э Клиент с поддержкой rzfci гц£щ
(Я) P^l обоих стеков [fff] PflH
JssmL Нт «see. TriH scmd Щшт\SCMD ^p >& Js. ЧН f__^
li iJffi СеТЬ|РХ Клиент в режиме Сеть [i] i
\Щ \Щ совместимости в режиме \Ш\ Щ]
шЯШЬт шЯШЁт СОВМеСТИМОСТИ иЛИЙи -Я£.
i i 1 [ы!
т ' 1 ' ' ^ BHlCSsi
Сеть IPX ,, «aese
Ejfa pnii Чистый клиент IPX
н и
Рис. 24.1. Варианты установки IP/IPX в NetWare 5
Что необходимо знать перед установкой
При установке NetWare 5 и NetWare 6 с поддержкой TCP/IP вам будет
предложено ввести стандартный IP-адрес сервера. В память загружаются оба стека,
TCP/IP и IPX, но к сетевой плате привязывается только стек TCP/IP. Стек IPX
обеспечивает нормальную работу приложений, написанных для IPX, а также дает
возможность Novell Migration Agent обслуживать пользователей,
подключающихся из сетей IPX.
Установка NetWare 5 и NetWare 6 для IPX
В малых (и даже некоторых средних) сетях протокол IPX по-прежнему остается
вполне достойным решением. Административные затраты на организацию и
сопровождение малой сети IPX гораздо ниже, чем для сети TCP/IP аналогичного
масштаба. В NetWare используется механизм динамических обновлений,
избавляющий от многих хлопот по администрированию IPX. В частности,
администратор может без труда добавить новые устройства и сетевые сегменты.
Достаточно включить имя нового устройства в локальный файл AUTOEXEC.NCF, а все
остальное сделает сервер. Широковещательные обновления IPX, происходящие
через каждые 60 секунд, распространяют по всем серверам и маршрутизаторам
сети информацию, на основании которой они обновляют свои внутренние
таблицы и узнают о том, как связаться с новым устройством.
Вся эта информация требует дополнительных ресурсов. С ростом количества
подключений увеличиваются и затраты ресурсов на обновления. По этой
причине в очень больших сетях TCP/IP бесспорно обеспечивает более высокую
эффективность. Тем не менее при более скромных потребностях стоит подумать,
нужно ли отказываться от IPX.
Разумеется, сервер NetWare 5 и NetWare 6, установленный в режиме IPX,
эффективно и без лишних преобразований обменивается данными с другими
серверами и клиентами IPX. Кроме того, он может (хотя и менее эффективно)
взаимодействовать с серверами и клиентами TCP/IP при содействии Novell
Migration Agent (подробности см. ниже).
Что необходимо знать перед установкой
Если будет выбран вариант установки «только для IPX», вам будет предложено
выбрать для сервера внутренний IPX-адрес, как это требовалось в NetWare 3.x
и NetWare 4.x.
Смешанная установка IPX/IP
Novell уже давно занимается решениями, позволяющими организовать обмен
данными TCP и IPX в одной сети. Любой администратор, сталкивавшийся с
непростой задачей управления смешанными сетями, убедится в том, что в NetWare 5
и NetWare 6 эта задача заметно упростилась.
Серверы и клиенты NetWare 5 и NetWare 6, установленные в смешанном
варианте IP/IPX, могут взаимодействовать по любому из протоколов. Такой
подход позволяет серверу с NetWare 5 или NetWare 6 свободно обмениваться
сообщениями с любым нормально настроенным сервером или клиентом IP или IPX.
На сервере также могут выполняться приложения, написанные для IPX.
Смешанную установку усложняет тот факт, что пользователи получают
большую свободу выбора в отношении схем адресации IP и IPX, поддерживаемых
их сетями. Как и следует ожидать, увеличение количества вариантов приводит
к возрастанию затрат. Из-за этого многие сетевые администраторы
устанавливают только те средства, которые с наибольшей вероятностью будут регулярно
использоваться в их сетях.
При попытках установить связь между двумя смешанными серверами
NetWare 5 или NetWare 6, настроенных разными людьми в разное время, неизбежно
возникают проблемы. Например, трудности могут возникнуть при пересылке
сообщений от одного IP-клиента NetWare, настроенного на использование
«чистой» схемы адресации IP, на другой сервер, соединенный с клиентами NetWare,
признающими только адресацию IPX. Подобные расхождения легко исправляются
утилитой Migration Agent, входящей в комплект поставки NetWare 5 и NetWare 6.
Migration Agent автоматически преобразует межпротокольный обмен данными
по мере необходимости. Применение Migration Agent не приводит к
дополнительным затратам ресурсов. Ключом к эффективной установке является
конфигурация сети, которая включает все регулярно используемые средства, а
относительно редкие преобразования IP/IPX перенаправляются вспомогательным
компонентам типа Migration Agent.
Что необходимо знать перед установкой
Если в процессе установки будет выбран вариант с одновременной
поддержкой IP и IPX, система настраивается на использование подключений NCP через
стек TCP/IP или стек IPX. Для сервера необходимо задать внутренний адрес
IPX и стандартный IP-адрес.
Средства, упрощающие переход на IP
Фирма Novell хорошо понимает, что переход с IPX на TCP/IP для большой части
пользователей окажется достаточно серьезным шагом. Она постаралась по
возможности упростить эту задачу, включив в NetWare 5 и NetWare 6
многочисленные средства преобразования и миграции. Некоторые из них представляют
собой обновленные версии средств, существовавших ранее. Например, служба
NDS была переработана так, что теперь она может отслеживать ресурсы TCP/IP
наряду с ресурсами IPX. Область действия NDS была расширена за счет
создания связей между NDS и другими стандартными средствами IP, входящими
в поставку NetWare. К их числу относятся реализации DNS, DDNS и DHCP,
разработанные Novell. Протокол SLP также был переработан для среды NetWare
IP/IPX. Наконец, режим совместимости и Migration Agent поддерживают
функции, обеспечивающие оперативные преобразования между IPX и TCP/IP.
NDS
NDS (NetWare Directory Service) — глобальная каталоговая служба с
возможностью расширения. Она предоставляет в распоряжение сетевого администратора
центральную консоль для просмотра и управления всевозможными сетевыми
ресурсами, распределенными в одной сети или в смешанном конгломерате сетей
NT/2000, NetWare и Unix, объединенных в глобальную сеть. База данных NDS,
впервые появившаяся в NetWare 4, содержит полную информацию обо всех поль-
зователях, объектах и других ресурсах, находящихся в ее ведении. В NetWare 5
область действия NDS была расширена так, что теперь NDS позволяет
управлять смешанными наборами устройств и сеансов IP и IPX.
DNS
Служба DNS обычно используется для сопоставления пользовательских имен
систем с уникальными адресами в сетях IP или в Интернете. Сервер DNS в
NetWare может быть объединен с другим (разработанным не в NetWare) сервером
DNS в качестве основного или вторичного. Предусмотрены средства
организации двустороннего обмена данными между основным и вторичным серверами.
Возможность подобной пересылки информации существенно снижает стоимость
реализации NetWare 5 в больших корпоративных сетях.
DHCP
Протокол DHCP (Dynamic Host Configuration Protocol) автоматически
назначает и отслеживает IP-адреса, а также другие параметры конфигурации сетевых
устройств. Параметры DHCP могут задаваться на уровне предприятия, подсети
или клиента. Например, вы можете задать промежуток времени, в течение
которого клиентам DHCP будет разрешено использовать некоторый IP-адрес.
Частое перераспределение ресурсов IP помогает освободить неиспользуемые ресурсы
и тем самым обеспечить использование ограниченного пула IP-адресов большим
числом клиентов.
DDNS
Служба DDNS (Dynamic DNS) в NetWare 5 и NetWare 6 помогает
координировать функции реализаций DNS и DNCP в Novell. Например, DDNS оперативно
обновляет информацию DNS в соответствии с изменениями адресов,
произведенными через DHCP. Служба DHCP в NetWare также предоставляет
клиентам конфигурационные данные NDS, включая начальный контекст, имя сервера
NDS и т. д.
SLP
На смешанных серверах IP/IPX NetWare 5 и NetWare 6 используют
стандартный протокол Интернета SLP (Service Location Protocol) для распространения
информации о структуре сети. Протокол SLP не занимается разрешением имен,
как DNS или NDS. Он предназначен для передачи информации о серверах NDS,
серверах DNS, серверах DHCP, серверах регистрации NDPS и шлюзах разных
протоколов.
Протокол SLP совместим со службами и приложениями SAP (старый агент
Novell для распространения информации об IPX). В «чистых» сетях IP, не
требующих обратной совместимости, поддержка SLP не обязательна. Сети IPX могут
продолжать использовать SAP; возможно, SLP им не понадобится.
Режим совместимости
Режим совместимости предоставляет поддержку IPX тогда, когда в ней
возникнет потребность в «чистых» сетях NetWare 5 и NetWare 6. Для этого
дейтаграммы IPX инкапсулируются в стеке UDP, чтобы их можно было пересылать в
сетях TCP/IP, а запросы RIP и SAP обрабатываются при помощи SLP.
Клиентские и серверные драйверы режима совместимости устанавливаются
автоматически при «чистой» IP-установке NetWare 5 и NetWare 6. Когда режим
совместимости не используется, его драйверы (модуль SCMD.NLM) находятся
в пассивном ожидании, не оказывая воздействия на сетевой обмен данными.
Инкапсуляция выполняется только тогда, когда возникает необходимость в
поддержке IPX. Весь трафик, не требующий поддержки IPX, автоматически
передается через IP без инкапсуляции.
Режим совместимости хорош прежде всего тем, что он позволяет организовать
поэтапный переход на IP. Вы можете выбрать нужный темп перехода, точно зная,
что режим совместимости исправит все возникающие расхождения в протоколах.
Драйверы режима совместимости начинают работать в тот момент, когда любой
из подключенных клиентов или серверов захочет передать данные протокола IPX
через канал, предназначенный для обмена данными TCP/IP. Например, это
может произойти при поступлении на вход брандмауэра сообщения в формате
IPX, которое должно быть доставлено пользователю в сети IP. Режим
совместимости также может обеспечивать поддержку магистральной передачи данных —
например, две сети IPX, не связанные друг с другом напрямую, могут
обмениваться информацией через IP-сеть. Режим совместимости также поддерживает
работу со службами Bindery NetWare 3.x.
Migration Agent
Migration Agent решает две основные задачи: преобразование между IP и IPX и
создание «моста» между старыми и новыми службами распространения сетевой
информации (SLP и SAP в NetWare 4).
Необходимость в Migration Agent возникает только тогда, когда вам
потребуется связать две разнородные логические структуры IP и IPX. Migration Agent
обеспечивает эмуляцию, позволяющую семейству протоколов IPX общаться с
миром IP, и заменяет пакеты SAP и RIP для клиентов IPX. На основании адресов
IP и IPX и маршрутной информации, содержащейся в пакетах IPX, Migration
Agent пересылает каждый пакет в соответствующую конечную точку.
Серверы NetWare 5 и NetWare 6, установленные с поддержкой Migration
Agent, могут общаться напрямую с любой системой независимо от того, какой
вариант установки был выбран для этой системы. Кроме того, они
обеспечивают маршрутизацию сетевого трафика между системами IP и IPX.
Стратегии перехода
Вероятно, для большинства пользователей оптимальным вариантом окажется
постепенный переход, возможный благодаря стремлению Novell по поддержке
существующих сетей IPX. Тем не менее появление систем NetWare 5 и NetWare 6,
построенных на базе инфраструктуры «чистого IP», лишний раз доказывает, что
дни IPX сочтены, а TCP/IP быстро занимает ведущее положение даже в мире
сетей NetWare. Теперь перед пользователями NetWare возникает другой вопрос:
с какой скоростью переходить на TCP/IP? К счастью, Novell предоставляет
достаточно богатый выбор вариантов. Переход может осуществляться постепенно
или одним мощным рывком. Главное — заранее обдумать стратегию перехода.
Тестовая платформа
Не проводите эксперименты с переходом в сети, выполняющей жизненно
важные функции. Большинство сетей Novell в результате постепенного развития
превратилось в комбинацию старых и новых программных и аппаратных средств,
в которой трудно разобраться одному человеку. Решение проблем перехода в
рабочей сети — неудачная мысль. Использование тестовой платформы избавит вас
от многих проблем. Симптомы «ухода от IPX» лучше изолировать и вылечить
в лабораторных условиях, не давая им распространиться на пользователей,
занимающихся важными делами. Тестирование рекомендуется начать с установки
NetWare в режиме «чистого IP» (без установки стека IPX). Посмотрите, как
ваши старые приложения будут работать без модификаций или после установки
бесплатных или недорогих обновлений. Попробуйте запустить неработающие
приложения на тестовой платформе, установленной в смешанном режиме IPX/IP.
Возможные сценарии перехода
Если на тестовой платформе IP все работает нормально, скорее всего, вы
предпочтете вариант резкого и полного перехода на IP. Но обычно дело обстоит
подобным образом только в небольших сетях, потребности которых
ограничиваются организацией простого совместного доступа к файлам и принтерам.
Более крупные сети лучше переводить на IP медленно и постепенно. Следует
выявить небольшие сегменты сети, которые могут работать автономно.
Например, в одном из вариантов переход начинается с вывода трафика IPX из сетевой
магистрали и его заменой на IP. Такой подход хорош тем, что магистральный
трафик избавлен от влияния специфических приложений IPX и переход обычно
производится относительно легко.
Магистральный IP-канал может соединять серверы на базе IPX; для этого
необходимо лишь чтобы во всех точках соприкосновения сегментов IP с IPX был
установлен Novell Migration Agent. Migration Agent выполняет инкапсуляцию
и прочие преобразования данных, необходимые для пересылки сообщений IPX
по каналам IP. Если повезет, перевод магистрали на IP приведет к существенному
снижению административных затрат, связанных с поддержанием магистрального
трафика IPX, и создаст условия для перевода следующего сегмента на IP.
Другая стратегия может заключаться в переводе на IP тех сегментов сети,
которые в наибольшей степени выиграют от этого — например, интернет-сервера
вашей компании. Отчет о достигнутых успехах станет лишним доводом в пользу
перехода на IP. Недостатком такого подхода можно считать то, что он не влияет
на работу магистрального канала, поэтому темпы снижения административных
издержек будут не столь впечатляющими.
Самый трудный этап перехода связан с настройкой сети IP для запуска
старых IPX-приложений. Хотя NetWare 5 и NetWare 6 спроектированы так, что
все базовые протоколы могут обслуживаться на уровне IP, многие старые
приложения напрямую записывают данные IPX или используют старые технологии
IPX (такие, как SAP и Novell Bindery). Такие приложения необходимо по
возможности заменить новыми версиями, написанными с учетом поддержки IP.
К сожалению, многие полезные унаследованные приложения жестко привязаны
к IPX и не существуют в версиях с поддержкой IP. Обычно такие программы
работают в режиме совместимости с IPX, но следует помнить, что режим
совместимости сопряжен с некоторым снижением эффективности. Например, работа
драйверов режима совместимости требует правильной настройки
инфраструктуры SLP, а на это требуется время. С другой стороны, протокол SLP является
интернет-стандартом, который играет все более важную роль; чем больше
приложений будет пользоваться предоставляемыми им услугами, тем больше
практической пользы он принесет.
Итоги
Глава начинается с рассмотрения различных режимов работы серверов NetWare
на базе IPX (NetWare 3.x и 4.x) в мире, быстро переходящем на протокол IP. Во
второй части, посвященной NetWare 5 и NetWare 6, обсуждаются механизмы
перевода сетей NetWare 3.x и 4.x, работающих на базе IPX, на «чистый»
протокол IP в NetWare 5 и 6. Также описаны вспомогательные средства фирмы Novell,
обеспечивающие взаимодействие между сетями IP и IPX. В частности,
рассматриваются некоторые компоненты и служебные программы, включенные в комплект
поставки NetWare 5 и NetWare 6, упрощающие переход на IP. Глава завершается
описанием некоторых стратегий, которые могут применяться при переходе от
IPX к IP.
2ЩГ Настройка TCP/IP
Э в системе Linux
Тим Паркер (Tim Parker)
Linux — популярная, свободно распространяемая версия Unix, создававшаяся
для систем на базе Intel. Позднее система Linux была адаптирована для других
платформ, включая SPARC, Alpha, Motorola 6800, Power PC, ARM, Hitachi
SuperH, ISM S/390, MIPS, HPPA-RISC, Intel IA-64, DEC-VAX, AMD x86-64
и для других архитектур.
Система Linux состоит из центрального компонента (ядра), системных
программ и приложений. Ядро Linux находится под управлением Линуса Торвальдса
и небольшой группы программистов. Тем не менее существует много разных
вариантов поставки Linux, использующих стандартное ядро Linux, но
различающихся по составу системных и прикладных программ. Ядро Linux ориентировано
на соответствие спецификациям POSIX и SUS (Single Unix Specification). Многие
системные программы создавались в рамках проекта GNU, который породил
немало самых качественных программ в истории — и притом распространяемых
с открытыми исходными текстами. Дополнительную информацию о
распространении программ с открытыми исходными текстами можно найти на сайте
http://www.eff.org и других сайтах аналогичной направленности.
Поскольку система Linux принадлежит к семейству Unix, она может
выполнять функции клиента и сервера в системах TCP/IP.
В этой главе мы не будем вдаваться в подробное описание операционной
системы Linux, а ограничимся методикой настройки компьютера с системой Linux
в роли клиента и сервера в сетях TCP/IP, а также предоставлением поддержки
РРР и SLIP.
В примерах этой главы используется поставка Slackware Linux на компакт-
диске. Впрочем, описанная процедура подойдет и для RedHat, и для многих
других поставок. Предполагается, что на вашем компьютере уже установлена
система Linux с сетевыми компонентами.
ПРИМЕЧАНИЕ
Система Linux обладает бесконечными возможностями настройки; некоторые поставки также
различаются по составу устанавливаемых и автоматически запускаемых служб. Ядру Linux присваивается
номер версии — например, 2.0, 2.2, 2.4 и т. д. Первая цифра обозначает принципиальные
изменения по сравнению с предыдущей версией, а вторая — второстепенные модификации. Четными
значениями дополнительного номера версии обозначаются стабильные версии ядра Linux.
ПРИМЕЧАНИЕ
Нечетные значения дополнительного номера обозначают версии ядра с экспериментальными
возможностями, которые еще не прошли полное тестирование. Следовательно, ядра версий 2.1 и 2.3
являются «экспериментальными». Применять экспериментальные версии ядра в среде реальной
эксплуатации обычно не рекомендуется.
Последние версии ядра Linux можно загрузить с сайта http://www.kernel.org и с его зеркальных
сайтов.
В различных поставках (RedHat, Debian, Mandrake, Slackware и т. д.) ядро Linux дополняется
системными программами, приложениями и сценариями запуска. В частности, поставки различаются
и по механизмам добавления и настройки этих дополнительных программ. Например, RedHat 7.0
использует ядро Linux версии 2.2, тогда как в RedHat 7.2 используется ядро версии 2.4.
Подготовка системы к настройке TCP/IP
Прежде чем переходить к настройке TCP/IP в системе Linux, следует
выполнить ряд дополнительных проверок и обеспечить выполнение всех требований.
Сначала необходимо убедиться в том, что в системе были установлены сетевые
компоненты. Пакет сетевой поддержки устанавливается из программы установки
системы (рис. 25.1). В категории Networking устанавливаются приложения,
необходимые для использования TCP/IP в Linux.
ПРИМЕЧАНИЕ
В других поставках (прежде всего, в RedHat) имеются графические программы, упрощающие
установку Linux для новичков.
Вероятно, после установки сетевых компонентов систему придется
перезагрузить.
Д^^^ИДВ^^ИнёТйогкЛпд (TCP/IP, UUCP, flail, Неи7ТДДДДДДцДД^Д|Д
Рис. 25.1. Выбор сетевых компонентов в программе установки Linux
В некоторых версиях Linux (в первую очередь использующих ядро 2.0 и
многие последующие версии) для нормального функционирования сети необходима
файловая система /proc. В большинстве версий ядра Linux с интегрированной
сетевой поддержкой файловая система /ргос автоматически создается при
установке операционной системы, поэтому вам останется лишь убедиться в том, что
она правильно монтируется ядром (файловая система /ргос обеспечивает простой
интерфейс для получения сетевых данных ядром, а также используется ядром
для хранения служебных таблиц, обычно находящихся в каталоге /proc/net).
Чтобы убедиться в том, что в вашей версии Linux используется файловая
система /ргос, попробуйте перейти в каталог /ргос командой cd /ргос. Результат
выполнения команды показан на рис. 25.2.
merlin:~# cd /proc
merlin:/proc# Is
1/ 46/ 73/ 80/ kcore pci
174/ 49/ 74/ cpuinfo kmsg self/
24/ 51/ 75/ devices ksyms stat
38/ 55/ 76/ dma loadavg uptime
40/ 6/ 77/ filesystems meminfo versions
42/ II 78/ interrupts module
44/ 72/ 79/ ioports net/
merlin:/proc#
Рис. 25.2. Если вам удалось перейти в каталог /ргос и получить список его содержимого,
значит, файловая система готова к настройке TCP/IP
Если перейти в каталог /ргос не удается, скорее всего, он не существует
(предполагается, что у вас имеются соответствующие права доступа). Если файловая
система /ргос не была создана автоматически в процессе установки Linux, вам
придется построить ядро заново с поддержкой /ргос. Перейдите в каталог с
исходными текстами Linux (например, /usr/src/Linux) и запустите процедуру
конфигурации ядра командой
make config
Если в системе работает среда X Window, можно запустить графическую
программу конфигурации:
make xconfig
На вопрос о поддержке procfs ответьте положительно. Если программа
конфигурации не задает вопросов о поддержке /ргос, а каталог /ргос не создается
в файловой системе, обновите ядро до версии с поддержкой сети.
Файловая система /ргос должна монтироваться автоматически при загрузке
системы Linux. Если этого не происходит, отредактируйте файл /etc/fstab и
включите в него строку вида
none /proc proc defaults
Перед настройкой TCP/IP также следует задать имя хоста. Задача решается
командой вида
hostname имя
где имя — имя, назначаемое локальному компьютеру. Если у компьютера имеется
полное доменное имя, вы можете задать его в своей системе. Например, если
компьютер с системой Linux spinnaker входит в домен yacht.com, полное
доменное имя задается командой
hostname spinnaker.yacht.com
Убедитесь в том, что в файле /etc/hosts появилась запись с именем хоста.
Также необходимо заранее узнать уникальный IP-адрес, назначенный
компьютеру. Эта информация будет использоваться в процессе конфигурации.
Если вы собираетесь передавать информацию в нескольких сетях, возможно,
вам также придется отредактировать файл /etc/networks. В этом файле хранится
список всех имен и IP-адресов сетей, которые должны быть известны вашему
компьютеру. Приложения используют этот файл для определения адресов сетей
по их именам. Записи файла /etc/networks состоят из двух полей: символического
имени удаленной сети и ее IP-адреса. Многие файлы /etc/networks содержат
по крайней мере одну запись для адреса обратной связи, который должен
присутствовать в каждой установке Linux (адрес обратной связи используется по
умолчанию некоторыми приложениями Linux, подробности будут приведены
ниже). Примерный файл /etc/networks выглядит так:
Toopback 127.0.0.0
merlin-net 147.154.12.0
BNR 47.0.0.0
В приведенном фрагменте определяются имена и IP-адреса двух сетей. В этих
адресах указывается только сетевая часть IP-адреса, а хостовая часть
заполняется нулями.
Доступ к сетевому интерфейсу
На следующем этапе необходимо предоставить операционной системе доступ
к сетевому интерфейсу и его вспомогательным средствам. Задача решается при
помощи команды ifconfig. Команда ifconfig организует работу сетевого уровня
ядра с сетевым интерфейсом, для чего передает ядру IP-адрес и выдает команду
активизации интерфейса. Активный интерфейс может использоваться ядром
для приема и передачи данных.
Для компьютера необходимо настроить ряд интерфейсов, в том числе
интерфейс обратной связи и интерфейс Ethernet (впрочем, вместо Ethernet могут
использоваться и другие интерфейсы). Команда ifconfig последовательно
выполняется для всех сетевых интерфейсов. Синтаксис команды ifconfig выглядит так:
ifconfig тип_интерфейса ip_aflpec
где тип_интерфейса — имя драйвера устройства интерфейса (например, 1о для
интерфейса обратной связи, ррр для РРР или eth для Ethernet). В поле ip_adpec
указывается IP-адрес, используемый данным интерфейсом.
После выполнения команды ifconfig и активизации интерфейса
воспользуйтесь командой route для добавления или удаления маршрутов из таблицы мар-
шрутизации ядра. Это необходимо для того, чтобы локальный компьютер мог
находить другие компьютеры в сети. Синтаксис команды route:
route add|del 1р_адрес
Аргумент add или del используется для включения или удаления маршрута
из таблицы маршрутизации ядра, а аргумент гр_адрес определяет маршрут.
Чтобы отобразить текущее содержимое таблицы маршрутизации ядра,
введите команду route без аргументов. Например, если в системе установлен только
драйвер обратной связи, результаты выполнения этой команды будут
выглядеть так:
$ route
Kernel Routing Table
Destination Gateway Genmask Flags MSS Window Use Iface
loopback * 255.0.0.0 U 1936 0 16 lo
ПРИМЕЧАНИЕ
Таблица маршрутизации также отображается командой
netstat -rn
Ключ -г является признаком вывода таблицы маршрутизации, а ключ -п означает, что вместо
символических имен должны отображаться IP-адреса.
Нас интересуют, прежде всего, поля с именем приемника (в данном случае
loopback), маска (Genmask) и интерфейс (Iface, в нашем примере — /dev/lo). Чтобы
вместо символических имен отображались IP-адреса, передайте команде ключ -п:
$ route -n
Kernel Routing Table
Destination Gateway Genmask Flags MSS Window Use Iface
127.0.0.1 * 255.0.0.0 U 1936 0 16 lo
Как упоминалось выше, типичная сетевая конфигурация Linux содержит
интерфейс обратной связи (который должен присутствовать на любом хосте) и
сетевой интерфейс — например, Ethernet.
Настройка интерфейса обратной связи
Интерфейс обратной связи должен присутствовать на любом компьютере. Он
используется некоторыми приложениями, для правильной работы которых
необходим IP-адрес (а если в системе Linux не настроена сетевая поддержка, этого
адреса может не быть). Драйвер обратной связи также используется в
диагностических целях некоторыми приложениями TCP/IP. Интерфейс обратной связи
ассоциируется с IP-адресом 127.0.0.1, поэтому файл /etc/hosts должен содержать
запись для этого интерфейса.
ПРИМЕЧАНИЕ
Для обратной связи может использоваться любой адрес вида 127.х.х.х, где х — число от 0 до 255.
По историческим причинам обычно выбирается адрес 127.0.0.1 — формат, в котором адрес
обратной связи задавался в файле /etc/hosts в семействе Unix.
Драйвер обратной связи может быть создан ядром в процессе установки,
поэтому поищите в файле /etc/hosts строку вида
localhost 127.0.0.1
Если такая строка существует, значит, драйвер обратной связи уже
установлен и вы можете переходить к интерфейсу Ethernet. Если у вас возникнут
сомнения насчет файла /etc/hosts, воспользуйтесь утилитой ipconfig для вывода
информации о драйвере обратной связи. Введите команду
ifconfig lo
На экране должны появиться несколько строк с информацией. Если вы
получите сообщение об ошибке, драйвер обратной связи не существует.
Если запись интерфейса обратной связи отсутствует в файле /etc/hosts,
создайте ее при помощи ifconfig. Следующая команда включает необходимую строку
в файл /etc/hosts:
ifconfig lo 127.0.0.1
Просмотрите подробную информацию о только что созданном драйвере
обратной связи. Следующая команда выводит типичную конфигурацию драйвера
обратной связи:
$ ifconfig lo
lo Link encap: Local Loopback
inet addr 127.0.0.1 Beast {NONE SET} Mask 255.0.0.0
UP BROADCAST LOOPBACK RUNNING MTU 2000 Metric 1
RX packets:© errors:© dropped:© overruns:©
TX packets:© errors:© dropped:© overruns:©
Если информация о драйвере обратной связи присутствует в выходных
данных команды Ifconfig, значит, с этим интерфейсом все в порядке. После проверки
драйвер обратной связи включается в таблицы маршрутизации ядра одной из
следующих команд:
route add 127.0.0.1
route add localhost
Подойдет любая из двух команд. Чтобы быстро проверить правильность
настройки драйвера обратной связи, воспользуйтесь утилитой ping. Введите
следующую команду:
ping localhost
Результат выглядит примерно так:
PING localhost: 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0. 111=255 time=l ms
64 bytes from 127.0.0.1: icmp_seq=l. ttl=255 time=l ms
64 bytes from 127.0.0.1: icmp_seq=2. ttl=255 time=l ms
64 bytes from 127.0.0.1: icmp_seq=3. ttl=255 time=l ms
64 bytes from 127.0.0.1: icmp_seq=4. ttl=255 time=l ms
64 bytes from 127.0.0.1: icmp_seq=5. ttl=255 time=l ms
64 bytes from 127.0.0.1: icmp_seq=6. ttl=255 time=l ms
64 bytes from 127.0.0.1: icmp_seq=7. ttl=255 time=l ms
лс
localhost PING Statistics
7 packets transmitted, 7 packets received, 0% packet loss
round-trip (ms) min/avg/max = 1/1/1
Выполнение утилиты ping было прервано нажатием клавиш Ctrl+C Если вы
не получите от ping никаких результатов, значит, имя localhost не опознано
системой. Проверьте содержимое конфигурационных файлов и запись маршрута,
затем повторите попытку.
Настройка интерфейса Ethernet
Процедура настройки драйвера Ethernet аналогична описанной выше. Сначала
утилита ifconfig передает информацию об интерфейсе ядру, затем в таблицу
маршрутизации включаются маршруты к удаленным компьютерам сети. Если
компьютер подключен к сети, подключение можно немедленно проверить при
помощи утилиты ping.
Интерфейс активизируется командой ifconfig, которой передается имя
устройства Ethernet (обычно ethO) и IP-адрес компьютера. Например, следующая
команда настраивает интерфейс Ethernet с IP-адресом 147.123.20.1:
ifconfig eth0 147.123.20.1
Задавать маску сети не нужно, поскольку ifconfig вычислит правильное
значение по IP-адресу. Если вы предпочитаете задать маску сети в явном виде,
включите ее в командную строку с ключевым словом netmask:
ifconfig ethO 147.123.20.1 netmask 255.255.255.0
Для проверки введите команду ifconfig с именем интерфейса Ethernet:
$ ifconfig eth0
eth0 Link encap 10Mps: Ethernet Hwaddr
inet addr 147.123.20.1 Beast 147.123.1.255 Mask 255.255.255.0
UP BROADCAST RUNNING MTU 1500 Metric 1
RX packets:© errors:0 dropped:© overruns:©
TX packets:© errors:0 dropped:© overruns:©
Обратите внимание: адрес широковещательной рассылки задается на
основании IP-адреса локального компьютера. Он используется TCP/IP для
одновременного обращения ко всем машинам локальной сети. Параметру MTU (Maximum
Transfer Unit) обычно присваивается максимальное значение 1500 (для сетей
Ethernet).
Далее необходимо добавить в таблицы маршрутизации ядра запись, которая
сообщит ядру сетевой адрес локального компьютера. Для этого в команде route
указывается адрес сети в целом, без локального идентификатора. Адрес всей
локальной сети задается с ключом -net. Для IP-адресов из приведенного выше
примера команда выглядит так:
route add -net 147.123.20.0
Все узлы локальной сети, определяемой сетевым адресом 147.123.20,
добавляются в список доступных компьютеров, поддерживаемый ядром. Без опреде-
ления сетевого адреса вам пришлось бы вручную вводить IP-адреса всех
компьютеров в сети.
Альтернативное решение основано на использовании файла /etc/networks для
задания сетевых частей IP-адресов. Файл /etc/networks содержит список имен
сетей и их IP-адресов. Например, если в нем присутствует запись сети с именем
foobar_net, то включение всей сети в таблицы маршрутизации выполняется
командой
route add foobar_net
Впрочем, решение с файлом /etc/networks создает проблемы безопасности —
доступ предоставляется ко всем компьютерам сети. В некоторых ситуациях это
может оказаться нежелательным.
После того как маршрут будет включен в таблицу маршрутизации ядра,
проверьте работу интерфейса Ethernet. Чтобы проверить связь с другим компьютером
при помощи утилиты ping (естественно, при наличии связи по кабелю Ethernet),
необходимо знать его IP-адрес или имя, которое разрешается по файлу /etc/hosts
или службами типа DNS. Команда и результат ее работы выглядят так:
tpci_scol-45> ping 142.12.130.12
PING 142.12.130.12: 64 data bytes
64 bytes from 142.12.130.12: icmp_seq=0. time=20. ms
64 bytes from 142.12.130.12: icmp_seq=l. time=10. ms
64 bytes from 142.12.130.12: icmp_seq=2. time=10. ms
64 bytes from 142.12.130.12: icmp_seq=3. time=20. ms
64 bytes from 142.12.130.12: icmp_seq=4. time=10. ms
64 bytes from 142.12.130.12: icmp_seq=5. time=10. ms
64 bytes from 142.12.130.12: icmp_seq=6. time=10. ms
AC
142.12.130.12 PING Statistics
7 packets transmitted, 7 packets received, 0% packet loss
round-trip (ms) min/avg/max = 10/12/20
Если удаленный компьютер не отвечает, убедитесь в том, что он правильно
подключен и использует указанный IP-адрес. Если все нормально, проверьте
правильность конфигурационных файлов и команд route. Если и это не
поможет, попробуйте опросить другой компьютер.
После настройки интерфейса ваш компьютер с системой Linux сможет
обратиться к любому компьютеру локальной сети через TCP/IP. Если вы работаете
в малой сети, ничего больше делать не придется. В больших сетях, а также при
использовании специальных протоколов и при наличии шлюзов необходимо
выполнить ряд дополнительных действий по настройке. Все эти действия будут
описаны ниже.
Если вы хотите разрешить доступ к компьютеру с системой Linux с других
компьютеров, входящих в сеть TCP/IP, внесите их имена и IP-адреса в файл
/etc/hosts. На рис. 25.3 приведен пример файла /etc/hosts с сокращенными и
полными именами (например, godzilla и godzilla.tcpi.com) и IP-адресами. Эти
компьютеры, работающие под управлением любой операционной системы с
поддержкой TCP/IP, теперь смогут подключиться к вашей системе Linux при помощи
telnet, ftp или другой аналогичной программы. Разумеется, это произойдет только
в том случае, если вы создали на своем компьютере учетную запись для
удаленного пользователя. Если имя удаленного компьютера присутствует в файле /etc/hosts,
вы также сможете связаться с ним по имени или IP-адресу при помощи
программ типа telnet или ftp.
merlin:/etc# cat hosts
#
# hosts This file describes a number of hostname-to-address
# mappings for the TCP/IP subsystem. It is mostly
# used at boot time, when no name servers are running.
# On small systems, this file can be used instead of a
|# "named" name server. Just add the names, addresses.
# and any aliases to this file...
# By the way, Arnt Gulbrandsen <agulbra@nvg.unit.no> says that 127.0.0.1
# should NEVER be named with the name of the machine. It causes problems
# for some (stupid) programs, ire and reputedly talk. :A)
#
# For loopbacking.
127.0.0.1 localhost
147.120.0.1 merlin.tpci.com merlin
147.120.0.2 pepper pepper.tcpi.com
147.120.0.3 megan megan.tcpi.com
147.120.0.4 godzilla godzilla.tcpi.com
# End of hosts,
merlin:/etc#
Рис. 25.3. Файл /etc/hosts позволяет удаленным компьютерам подключаться к серверу Linux
Служба имен
Простейшее преобразование символических имен в IP-адреса в Linux
осуществляется при помощи файла /etc/hosts. Например, если в команде указано имя
компьютера darkstar, TCP/IP просмотрит файл /etc/hosts, найдет это имя и затем
прочитает соответствующий ему IP-адрес. Если поиск окажется неудачным,
связаться с компьютером не удастся.
Но если вы работаете в большой сети, связь приходится устанавливать с
многими компьютерами. Включение информации об этих компьютерах в файл /etc/
hosts становится утомительным и сложным делом, а модификация этих файлов
при изменении структуры сети приносит еще больше хлопот. Впрочем, в тех
редких случаях, когда ваш компьютер связывается с десятком других машин,
файла /etc/hosts вполне достаточно.
Для решения общей проблемы преобразования имен удаленных компьютеров
в IP-адреса была разработана служба BIND (Berkeley Internet Name Domain),
которая позднее превратилась в DNS. В большинстве поставок Linux реализована
служба BIND, хотя уже появилось несколько версий с поддержкой DNS. BIND
и DNS — сложные темы, отягощенные множеством технических деталей,
которые не представляют особого интереса для многих пользователей Linux. Если
в вашей сети уже имеется сервер DNS или вы будете пользоваться сервером DNS
поставщика услуг Интернета, производить настройку BIND не нужно. Тем не
менее в системе необходимо по крайней мере ввести данные сервера DNS,
поскольку перечисление всех хостов в файле /etc/hosts — дело крайне утомительное.
Клиент DNS называется резольвером (resolver); в случае Linux он
представляет собой набор библиотечных процедур, которые вызываются при запросе на
разрешение имен через DNS. Конфигурация резольвера определяется в файле
/etc/resolv.conf.
В типичном варианте этот файл состоит из директив search и nameserver.
Директива search имеет следующий формат:
search домен! домен2 доменИ
Аргументы домен1, домен2 и доменЫ заменяются доменными суффиксами,
которые присоединяются резольвером к имени хоста, не заданного в форме
полностью определенного доменного имени (FQDN). В качестве примера
рассмотрим следующую директиву search:
search xyz.com us.xyz.com europe.xyz.com
Имена вида www.abc.com уже находятся в формате FQDN — за именем хоста
www следует полное имя домена abc.com. В этом случае директива search не
используется. Но если службе TCP/IP будет передано неполное имя www, в
соответствии с директивой search сначала будет сделана попытка разрешить его
в виде www.xyz.com, затем — в виде www.us.xyz.com и www.europe.xyz.com. Если
хотя бы одно из этих имен будет правильно разрешено, остальные варианты не
проверяются.
Сервер DNS, используемый сервером имен, задается директивой nameserver:
nameserver 1р_адрес
Аргумент ipjadpec определяет IP-адрес сервера DNS. Например, если
первому серверу DNS назначен IP-адрес 199.231.13.10, то директива будет
выглядеть так:
nameserver 199.231.13.10
Файл resolv.conf определяет до трех серверов DNS, каждый из которых задается
отдельной директивой nameserver. Например, если IP-адреса второго и третьего
сервера DNS равны 199.231.13.20 199.231.13.15, то полный набор директив с
именами серверов выглядит так:
nameserver 199.231.13.10
nameserver 199.231.13.20
nameserver 199.231.13.15
Ниже приведен окончательный вариант файла /etc/resolv/conf в нашем примере:
search xyz.com us.xyz.com europe.xyz.com
nameserver 199.231.13.10
nameserver 199.231.13.20
nameserver 199.231.13.15
Вы также можете указать, в каком порядке должно производиться
разрешение имен — должен ли резольвер сначала просматривать файл /etc/hosts, а затем
обращаться к серверу DNS, или наоборот. Порядок разрешения определяется
в файле /etc/nsswitch.conf.
В больших системах, а также для предоставления компьютеру с системой
Linux полного доступа к службам Интернета необходимо правильно настроить
службу BIND. К счастью, настройка BIND обычно выполняется только один
раз, после чего о ней можно забыть. Вам понадобится программное обеспечение
BIND, которое обычно входит в поставку системы. Пакет BIND содержит все
конфигурационные и исполняемые файлы, а также руководство оператора BIND
с информацией о настройке файлов базы данных BIND.
Шлюзы
Объединение двух и более локальных сетей производится при помощи шлюзов.
Шлюзом (gateway) называется компьютер, который обеспечивает связь между
сетями и маршрутизирует данные между ними на основании IP-адреса
получателя. Если локальный компьютер будет использовать шлюз (или использоваться
в качестве шлюза, вам придется внести ряд изменений в сетевые
конфигурационные файлы.
Чтобы использовать другой компьютер как шлюз, необходимо внести в
таблицы маршрутизации сведения о шлюзе и тех сетях, к которым он подключен.
Простейший вариант использования шлюза — подключение к глобальной
внешней сети (например, к Интернету). Для этого используется команда route
следующего вида:
route add default gw шлюз
где шлюз — имя компьютера локальной сети, выполняющего функции шлюза.
Ключевое слово default означает, что через этот шлюз можно связаться с любой
сетью, и этот факт должен быть отражен в таблицах маршрутизации ядра.
Если шлюз настраивается для связи с другой локальной сетью, имя этого
шлюза должно храниться в файле /etc/networks. Например, если шлюзовый
компьютер с именем gate_serv связывает вашу локальную сеть с соседней сетью big_corp
(и в файле /etc/networks существует запись с IP-адресом сети big_corp), то
настройка таблиц маршрутизации на локальном компьютере, обеспечивающая
доступ к big_corp через gate_serv, производится следующей командой:
route add big_corp gw gate_serv
В таблице маршрутизации удаленной сети должна присутствовать запись
с адресом вашей сети; в противном случае вы сможете только отправлять
данные, но не получать их.
Если сам.локальный компьютер должен выполнять функции шлюза, следует
ввести информацию о соединяемых сетевых подключениях. Обычно это некая
комбинация двух сетевых плат, подключений РРР или SLIP. Предположим,
ваш компьютер будет выполнять функции простого шлюза между сетями small_
net и big_net и на компьютере установлены два адаптера Ethernet. Интерфейсы
Ethernet настраиваются по отдельности с соответствующими сетевыми 1Р-адре-
сами (например, в сети big_net шлюзовому компьютеру может быть присвоен
IP-адрес 163.12.34.36, а в сети small__net он обладает адресом 147.123.12.1).
Чтобы упростить разрешение имен, включите два сетевых адреса в файл
/etc/hosts. Для упомянутых выше сетей и IP-адресов файл /etc/hosts будет
содержать следующие записи:
163.12.34.36 merlin.big_net.com merlin-ifacel
147.123.12.1 merlin.small_net.com merlin-iface2
В данном примере файла /etc/hosts приведены полностью определенные
доменные имена (предполагается, что в каждой сети шлюзу присвоено имя merlin,
что вполне допустимо). Также возможно использование сокращенных имен
(merlin, merljn.big_.net и т. д.). Для удобства в записи также включены имена
интерфейсов (то есть merlin-ifacel — первый интерфейс на компьютере merlin,
a merlin-iface2 — второй).
Далее команда ifconfig связывает интерфейсы Ethernet с именами, указанными
в файле /etc/hosts:
ifconfig ethO merlin-ifacel
ifconfig ethl merlin-iface2
Предполагается, что адаптер Ethernet /dev/ethO подключен к сети big_net, а
адаптер /dev/ethl подключен к сети smalijiet.
Остается лишь обновить таблицы маршрутизации ядра и включить в них имена
сетей. В нашем примере для этой цели используются следующие команды:
route add big_net
route add small_net
После завершения всех перечисленных действий компьютер может
использоваться компьютерами, входящими в любую из соединяемых сетей, в качестве
межсетевого шлюза.
Графические программы настройки
сетевых интерфейсов
В предыдущем разделе было показано, как происходит настройка сетевых
интерфейсов в режиме командной строки. Обычно при запуске системы Linux
вам не придется выполнять эти команды, поскольку они выполняются
автоматически в стартовых сценариях Linux. Стартовые сценарии представляют
собой сценарии командного интерпретатора bash и различаются в зависимости от
поставки. В одних поставках (например, в Slackware) используются стартовые
сценарии в стиле BSD Unix, в других (таких, как RedHat) — стартовые
сценарии в стиле System VR4. Содержимое стартовых сценариев зависит от поставки,
но даже в разных версиях одной поставки стартовые сценарии иногда радикально
отличаются друг от друга.
Во многие поставки включены графические программы, упрощающие процедуру
настройки сети. Эти программы автоматически вносят изменения в системные
стартовые сценарии Linux и включают в них соответствующие параметры TCP/IP.
Ниже рассматривается процедура настройки TCP/IP в Linux с
использованием графических программ netcfg и linuxconf.
Программа netcfg
Программа netcfg стала одним из первых графических инструментов настройки
Linux. Запустите программу netcfg в режиме командной строки и исследуйте
ее структуру. На рис. 25.4 изображено начальное меню netcfg. Программа может
использоваться для настройки имен, хостов, интерфейсов и маршрутов.
1 -^^^ •; Nsy j
|L;Wames:;i Hosts Interfaces Routing I
I Hostname: . [itreei Itreexom . •::X'; ^.™™^._^_^
I Domain: ptree,com .-j- ■■-»**^^.-«ш.-^J;.^.u.. ^,.
J Search for hostnames in additional domains: jj
I • - ' ••.'••:•:.:••'••■•••:•; Лщ
j Hameservers: f^TJOO г?^- '■ " ~" ■•?^-г:Ж:-™""Я
204.147 80.1 fl j
1 III
1 j 1 \>л Ы
Save I Quit J i
Рис. 25.4. Графическая программа netcfg
Программа linuxconf
Программа linuxconf, обладающая исключительно мощными возможностями,
предназначена для настройки сети и выполнения большинства операций по
администрированию системы. Время, потраченное на освоение этой программы, не
пропадет — вы сможете быстро выполнять как повседневные, так и довольно
сложные операции. Запустите linuxconf из командной строки. В программах
рабочего стола X-Window (таких, как KDE или GNOME) программа linuxconf
может входить в одну из программных групп; в этом случае программу можно
выбрать и запустить мышью. На рис. 25.5 изображено исходное окно linuxconf.
Чтобы изменить имена хостов, раскройте ветвь дерева Config ► Networking ►
Client Tasks ► Basic host information (рис. 25.6).
Настройка резольвера производится в ветви Config ► Networking ► Client Tasks ►
Name server specification (DNS) (рис. 25.7).
г-—~^ : ^ г3^<~|
.JEh-Config С;
У Вт Networking I г I
| [ф—Client tasks г
§1 [—Basic host information H
I И— Name server specification (DNS) 1 I
I ф-Routing and gateways j I
I I I—Set Defaults ! •
|] M—Set other routes to networks J *
I U-Set other routes to hosts 1 i I
|| [—Set routes to alternate locai nets j, I
I M—Configure the routed daemon I . I
M [—Host name search path I I
h] [—Network Information System (NIS) !..! I
I [—IPX interface setup j • I
I Lppp/SLIP/PLIP Г ^
| ф-Server tasks I \
И I—Exported file systems (NFS) \,[
i И—IP aliases for virtual hosts 1 : I
I EH Apache Web server j
H I Ill-Defaults I/**
Quit 1 AcyChan9e$ I Help |
Рис. 25.5. Графическая программа linuxconf
ЮЙшИпд Fj ™*** basic con^on]
Ш №-Client tasks I You ar* allowed to control the parameters
, П-Basic host information j -^^ are ^ t0 m h0§t and ^m
У [-Name server specrficat.on (DNS) to its «am connection to the local network
Ш-Routing and gateways H _:,..:.:... I
I Tl—Set Defaults | . if I i I
I U-Set other routes to networks ; p :Ho$t name | Adaptor! |2j3J4| M
[—Set other routes to hosts I : r—— II
Uset routes to alternate local nets '. :,Hostname jltree1.lUee.corn
I—Configure the routed daemon I : j I
\~ Host name search path : II
\-Network Information System (NIS) I • --. I I
U-IPX interface setup I | j I
I Lppp/sLiP/PUP l : N
ф-Server tasks I 1 I
|—Exported file systems (NFS) 11
H UIP aliases for virtual hosts . j \ I
S-Apache Web server • II
I—Defaults : II
1—Virtual domains j I I
i [— Sub-directory specs , ^,:v |
• I I—Files specs ; •;.'•_':■':.' II
N [-Modules .• \.[„/. ' —m!,,,,,,,,",m!!!,",,,!!!'M\,\,M,,,,,!!:!!!!!':!,!!!!!!!',!!!""!,"!\',,,,,\;,!,,l"".,i |
^-Performance [ ! 1 J i I
.! M-mod_SS| configuration j Accept) Cancel] Help]
И I |r*l~nnmsin N.ar»\P Sorwer <Г\ЫЪ\ j/ - I
Quit | Act/Changes | Help |
Рис. 25.6. Основная информация о хостах в программе linuxconf
Чтобы настроить основной шлюз, раскройте ветвь Config ► Networking ► Client
Tasks ► Routing and gateways ► Set Defaults (рис. 25.8).
I l^Nerwarklna I• •Pils.lfl0$tb^° configuralioft .Revolver configuration >;:::::
j в-Client tasks = you can specify which name server will be used Г
I I- Basic host information •.. to resQ|v host, numljef Usj ^ DNS j5
J-Name server specification (DNS) i t0 hand)e mis on a TCP/IP ne^K The others
. (^Routing and gateways U; are the local/etc/hosts tile
:j П-Set Defaults \ : . (see "information about other hosts" menu
;] П-Set other routes to networks I . or the NIS system
1 k-Set other routes to hosts '
::j П-Host name search path L | . i default domain | it
■j U Network Information System (NIS) j "!.tP of name server 1 J204.147.80.5 — i
I] UIPX Interface setup f : i I
;] I—ppp/SLIP/PLIP •: I tP Of name Server 2 (Opt) J204.147.80 Л I
[•] B-Server tasks ; • i IP of name server 3 (opt) J i j
T U Exported file systems (NFS) j j seafch domaJn 1 ■ ■ rj^^; . j.
•1 I—IP aliases for virtual hosts [: ;■ !_______ _ - Г j
; гк-Apache Web server • | search domain 2 (opt) -| ; I
:•] I-Defaults Mi search domain 3 (opt) | '[
I h-Virtual domains I ; , ^ . , „ \ : j 1
Esub-directory specs ; . |,$earch *»**4 <0^ ■!
И [-Files specs i' • | search domain S (opt) | i I
::J [-Modules ; | search domain 6 (opt) [j I 1
И [—Performance j '.:":::.:.::..::...:::..■...: . ...':...■.■..:.: ..Mi.r.t.:. I
j I—mod ssl configuration I I л j Л »J ,. , j I
■ i-DomaTn Name Server (DNS) 'j *cc***\ Cancel] Jjelpj ::.,:, Г _ j
Quit) AcvChanges j Help | J
Рис. 25.7. Настройка разрешения имен в программе linuxconf
I] Вт Networking И' i I
[;. \т- Client tasks . Enter foe IP number of the main gateway
У m-Basic host information . And indicate If this machine Is allowed to
N [-Name server specification (DNS) : route ip packets \\
::| в-Routing and gateways \\ -.:".л .':., '.-..-.•: 1
J hSet Defaults : ; 0вйЛщ gateway h44.19.74.254] I ^
I [—Set other routes to networks : 3 1 ■ <—' j
J П-Set other routes to hosts \ J Enable routing
M—Set routes to alternate local nets : I
•1 M-Configure the routed daemon ; Accept | Cancel | Help j
: И—Host name search path : —*«—J __i |
II U Network Information System (NIS) : j
I i,p* interface setup : 1
I j L_ PPP/SLIP/PLIP \
II в-Server tasks .; I
t] T|— Exported file systems (NFS) . I
[i M—IP aliases for virtual hosts : j
HI в-Apache Web server [:: j
I T \~Defaults : I
hi p Virtual domains : I
1 [—Sub-directory specs ; j
ij [-Files specs \ \ 11
N [—Modules : I
Г [—Performance :. 11
I L-mod_ssl configuration j ! I
ij в-Domain Name Server (DNS) :j II
pi I ITrh r™^ I/; >
Quit | Act/Changes j Help j I
Рис. 25.8. Настройка основного шлюза в программе linuxconf
Чтобы задать порядок действий при разрешении имен, раскройте ветвь Config ►
Networking ► Client Tasks ► Host name search path (рис. 25.9).
iJ^NrtSorklng И ДЩ1Ш1^ N*** ****?****** \^y I
I й-Client tasks Jlvi You «lust tell th$$y$»mti» which ordw
\ ^-Basic host information I Jj; :v.^:^0UJ name «еМее*гошШ probed : ; |
I M—Name server specification (DNS) j |; ...v^•:••:.; : I
^Routing and gateways ЦI. -9>* «ЯП /ete/ho$t$ I* pfOtoxT <
U ГI . 1 . ♦ . -. Pi ''&$&**** ** N«*brk IntormaUdn Syrstem •,: •.
| m-Set other routes to networks Щ^Йй'!^
•1 и—Set other routes to hosts p ■■ :t J
1 1 '—Configure the routed daemon |^;";чфу;;...лл.::.:..:......,:.:....;...:. •..:........:. •....;.•:..«...-. j j
If h-Host name search path | Ы;• :Щу Ш%, NIS, dn* • v !*>«*, NJS v hosts, dn$, NJS : j
H II [-Network Information System (NIS) pr-tei;::-,' 7 . ! I
| UlPX Interface setup КГЙК^?^^С> ''-г'*-**?*--:.: , v: ^ ^ host*, dM \"\\
Ц Ш-ppp/sup/PUP fehlfevws/fwflt'•; •".•: v Nis#da*, ho«fr 'vN!S/dh» :. :
M \m-Server tasks Щ|^МЖ::;Р':;-Ж--.•'•':':': "■" •:*: i
W Jl-Exporled file systems (NFS) ft;J#$#*&-:' ■■"^ ' .:• V«.b^t*. / v *•,**•: :> |: •
I J- IP aliases for virtual hosts j|[; >1р^"<Ц; N15, ho$t* . >,dn$,NIS . . : ^ dn* | j
LI ShApache Web server ||:!/:Ж^;^;.;1,.:.^л. ,...:..::...: :.-л*...-л.-...; «.;...,..- ! j j
LI [-Sub-directory specs fe?-'^€ii^::5:'i'V.!;:-- II
hi rFiles specs Ш'-ШШ^УА '' II
I r~Modu,BS Ы\' -ШШу^
I I Pen*ormance М^^!^:-й:':-'-:
H mod_ssl configuration f||f ЖЖ-".: v-':'.:
N MP"DomaJn Name Server (DNS) Kj .Й:.^4.:-:^ I
Guttj AcVChanges| и»» | :'Щ)^-\/ I
Рис. 25.9. Определение последовательности поиска при разрешении имен в программе linuxconf
Программа linuxconf даже позволяет настроить BIND — для этого следует
раскрыть ветвь Config ► Networking ► Server Tasks ► Domain Name Server (DNS) ► Config
(рис. 25.10). Тем не менее, если вы намерены серьезно освоить настройку BIND,
вам придется изучить синтаксис стартового файла BIND (/etc/named.boot для
BIND 4 и /etc/named.conf для BIND 8 и 9) и синтаксис файлов зонных данных
и научиться напрямую редактировать эти файлы.
Настройка SLIP и РРР
Настройка протоколов SLIP (Serial Line Internet Protocol) и РРР (Point-to-Point
Protocol) выполняется после общей настройки TCP/IP, рассмотренной в
предыдущем разделе. Протоколы SLIP и РРР работают по модему; сначала с удаленной
системой устанавливается модемная связь, а затем на базе установленного
соединения начинает работать протокол SLIP или РРР. Вы можете настроить SLIP и РРР
во время общей настройки файлов TCP/IP или отложить настройку до того
момента, когда потребуется организовать доступ SLIP или РРР для пользователей.
Поддержка SLIP и РРР задействована не во всех установках, хотя многие
поставщики услуг Интернета используют ее для организации доступа из малых систем.
Щ I I I I—Set routes to alternate locat nets Щ\ primaries! I
щ L-Configure the routed daemon { ! i I
kj [—Host name search path j j= You are allowed to ediVadd/remave primaries I
A UNetworK information System (WIS) I i I I
: П-IPX Interface setup : Select [Add) to define a new pnmary
Щ L-ppp/sLlP/PLIP j.j; -::p-..::-.::..A.i?- - :
j;j в-Server tasks Ui':^i-": ^m?'ft:. Revision date Revision count • . . 1
Щ [[-Exported file systems (NFS) И; л "jt^aro I - I 2 Г
[I Ь- IP aliases for virtual hosts \{\ •: s .'...jl.'. V..'..1..1.1:"..'.■.'■. ..'/v.'1 ч'::::..: ■.?...= j
•1 В-Apache Web server \ ] ■■',.{■ ж.. i ,, , < I
H U-Dttoih K;-^_2!SLI J522J
|| U Virtual domains II::.;.:х.::.л ,:::.:.. . I]
II к-Sub-directory specs щ\••'•••,: I
H r"p,l6S8Pecs "l^r- I
Я [-Modules ||:;j J
•I U-Performance 1-4 . I
II L—mod_ssl configuration I < II
Щ B-Domain Name ServBr (DNS) 1=1: I
Fl Тф-Conflg ,fjl: . .11
•1 T |~ Configure domains lp|: I
\i\ I— Configure IP reverse mappings |-Si .... 1
fcl I— Configure secondaries F\ " I
:.] i- Configure forward zones ьЛ]. -I
•1 N— Configure forwarders l{\ ..,-.... ]
rl r-Configure features [If: :-'::'\!';'." I
p;j M—Configure IP allocation space [e;!:.: ё- =•' I
H ф-Add/Edit M^','-^,, '.'• j
К Quit| AcyChangesl H»ip| V I
Рис. 25.10. Настройка BIND в программе linuxconf
Настройка фиктивного интерфейса
Фиктивный интерфейс предоставляет вашему компьютеру IP-адрес, с которым
он может работать при использовании только интерфейсов SLIP и РРР.
Фиктивный интерфейс решает проблему автономного компьютера, единственным
действительным IP-адресом которого является адрес драйвера обратной связи
A27.0.0.1). Хотя протоколы SLIP и РРР связывают компьютер с внешним
миром, в то время пока интерфейс не активен, у компьютера нет внутреннего
IP-адреса, который мог бы использоваться приложениями.
Создать фиктивный интерфейс несложно. Если в файле /etc/hosts вашему
компьютеру уже назначен IP-адрес, от вас потребуется лишь настроить
интерфейс и создать маршрут. Задача решается следующими командами:
ifconfig dummy имя_хоста
route add имя__хоста
где имя_хоста — имя локального компьютера. В результате выполнения этих
команд создается ссылка на IP-адрес самого компьютера. Если в файле /etc/hosts
еще нет записи с IP-адресом вашего компьютера, создайте ее перед созданием
фиктивного интерфейса. Добавьте строку и укажите в ней имя компьютера,
псевдонимы и IP-адрес:
147.120.0.34 merlin merlin.tpci.com
Настройка SLIP
Протокол SLIP используется многими поставщиками услуг Интернета,
применяющими модемную связь, а также при организации связи с другими
компьютерами. После установления модемной связи SLIP управляет дальнейшим ходом
сеанса. Драйвер SLIP обычно настраивается как часть ядра. Драйвер SLIP для
Linux также обеспечивает поддержку CSLIP — сжатой версии SLIP,
поддерживаемой некоторыми реализациями. Обычно драйвер SLIP встраивается в ядро
Linux по умолчанию, но в некоторых версиях Linux необходимо построить ядро
заново и ответить положительно на вопрос об использовании SLIP и CSLIP.
Протокол CSLIP может использоваться только в том случае, если он
поддерживается на обоих концах соединения. Многие поставщики услуг Интернета
поддерживают как SLIP, так и CSLIP, но вопрос о поддержке CSLIP следует
выяснить заранее. CSLIP передает в пакетах больше полезной информации, чем SLIP,
что повышает фактическую скорость обмена данными.
В системе Linux под протокол SLIP выделяется последовательный порт,
который не может использоваться для других целей. Программа SLIPDISC управляет
портом SLIP и блокирует попытки его использования другими приложениями.
В простейшем способе выделения порта для SLIP используется программа
slattach. В качестве аргумента ей передается имя устройства
последовательного порта. Например, чтобы выделить под SLIP второй последовательный порт
(/dev/cual), введите команду
slattach /dev/cual &
Знак & означает, что команда должна выполняться в фоновом режиме. Если
этого не сделать, терминал или консоль, с которой была введена команда, не
сможет использоваться до завершения процесса. Команда slattach может
выполняться в стартовом сценарии.
После успешного выделения порт связывается с первым устройством SLIP
/dev/slO. По умолчанию большинство систем Linux разрешает использование CSLIP
в порте SLIP. Если вы захотите переопределить этот режим, включите в команду
ключ -р и имя slip:
slattach -p slip /dev/cual &
Убедитесь в том, что на обоих концах соединения используется одна и та же
форма SLIP. Например, вы не сможете настроить порт на CSLIP и
обмениваться данными с другим компьютером, настроенным на поддержку SLIP. Если
версии SLIP не совпадают, попытки выполнения команд типа ping завершаются
неудачей.
После настройки последовательного порта на использование SLIP сетевой
интерфейс настраивается так же, как при обычных сетевых подключениях.
Например, если ваш компьютер merlin подключается к системе с именем arthur,
введите следующие команды:
ifconfig s!0 merlin-slip pointtopoint arthur
route add arthur
Команда ifconfig настраивает интерфейс merlin-slip (локальный адрес
интерфейса SLIP) для соединения класса «точка-точка» с системой arthur. Rjvfylf route
включает удаленный компьютер arthur в таблицы маршрутизации. Кроме того,
при помощи команды route можно назначить arthur основным шлюзом:
route add default gw arthur
Если порт SLIP будет использоваться для доступа к Интернету, он должен
иметь IP-адрес и запись в файле /etc/hosts.
После выполнения команд ifconfig и route проверьте, как работает канал SLIP.
Если в будущем потребуется исключить интерфейс SLIP из системы, удалите
запись из таблицы маршрутизации, отключите интерфейс SLIP командой ifconfig
и завершите процесс slattach. Первые два действия выполняются следующими
командами:
route del arthur
ifconfig sl0 slO down
Чтобы завершить процесс slattach, определите его идентификатор (PID) при
помощи команды ps и введите команду kill.
В некоторые версии Linux входит утилита dip (Dial-up IP), которая помогает
автоматизировать перечисленные действия, а также предоставляет
интерпретируемый язык для линии SLIP. В настоящее время существует много версий dip.
Настройка РРР
Протокол РРР по своим возможностям превосходит SLIP. Обычно
предпочтение отдается именно этому протоколу, если только он поддерживается
соединением. В Linux функции РРР делятся на две части: протокол HDLC (High-level
Data Link Control) помогает определить правила пересылки дейтаграмм РРР
между двумя компьютерами, а демон РРР pppd управляет работой протокола
после того, как система HDLC установит параметры связи. Кроме того, в Linux
используется программа chat, которая вызывает удаленную систему. Как и в
случае с протоколом SLIP, сначала между двумя компьютерами устанавливается
модемная связь, а затем управление линией передается протоколу РРР.
Для оптимизации защиты протокол РРР желательно использовать со
специальной учетной записью пользователя. Вообще говоря, это не обязательно, и
протокол РРР может использоваться с любой учетной записью, но для повышения
уровня безопасности следует создать в системе учетную запись пользователя РРР.
Сначала данные нового пользователя включаются в файл /etc/passwd. Примерная
запись /etc/passwd для учетной записи РРР (с UID=201 и GID=51) выглядит так:
ррр:*:201:51:РРР account:/tmp:/etc/ppp/pppscript
В приведенном примере учетная запись создается без пароля. Создавать файлы
не нужно, поэтому пользователю РРР назначается домашний каталог /tmp. В
качестве стартового сценария указывается файл /etc/ppp/pppscript, который
выглядит примерно так:
#!/bin/sh
mesg n
stty -echo
exec pppd-detach silent modem crtscts
Первая строка обеспечивает выполнение сценария в командном
интерпретаторе Bourne. Вторая строка подавляет все попытки записи на терминал учетной
записи РРР. Команда stty отключает эхо-вывод. Наконец, команда exec запускает
демона pppd, управляющего всем трафиком РРР. Демон ррр и параметры его
запуска рассматриваются ниже.
Чтобы протокол РРР мог получить управление, с удаленным компьютером
необходимо предварительно установить связь по модему. Существует несколько
программ для решения этой задачи; на практике чаще всего используется chat.
Для работы программы chat необходимо составить командную строку,
которая управляет взаимодействием с модемом и подключением к удаленной системе.
Например, следующая команда устанавливает связь с удаленным компьютером
через Hayes-совместимый модем (с использованием набора команд AT) по
номеру 555-1234:
chat "" ATZ OK ATDT5551234 CONNECT "" ogin: ppp word: secretl
Команды задаются в формате «запрос-ответ»: сначала вы указываете, какие
данные должны поступить от удаленного компьютера, а затем — какие данные
отправляются в ответ. Сценарий chat всегда начинается с пустой строки,
поскольку без получения команды никакие данные от модема не поступят. После
«получения» пустой строки мы выдаем команду ATZ (сброс), ожидаем ответа
«ОК» (признак успешного выполнения команды) и затем передаем команду
набора номера. При получении сообщения «CONNECT» выполняется сценарий
входа в удаленную систему. Мы отправляем «пустой символ», ожидаем
приглашения ogin:, передаем имя ррр, ожидаем приглашения word: и передаем пароль.
После завершения процедуры входа программа chat завершается, оставляя
линию открытой.
ПРИМЕЧАНИЕ
Почему вместо обычных слов «login» и «password» в сценарии используются «ogin» и «word»?
Прежде всего из-за возможных различий в регистре символов приглашения удаленной системы,
чтобы «login» и «Login» интерпретировались одинаково. Сокращение слова «password» допускает
потерю некоторых символов без зависания сеанса.
Если другая сторона подключения после ответа модема не запускает
сценарий входа в систему, можно «встряхнуть» ее командой BREAK:
chat -v "" ATZ OK ATDT5551234 CONNECT ""
ogin:-BREAK-ogin: ppp word: secretl
Сеанс РРР открывается запуском демона pppd. Демон запускается после
установления модемной связи и регистрации на удаленном компьютере с
данными учетной записи РРР. Если на локальном компьютере для подключения
РРР используется устройство /dev/cual на скорости 38 400 бод, то демон pppd
запускается командой
pppd /dev/cual 38400 crtscts defaultroute
Команда приказывает ядру Linux переключить интерфейс /dev/cual на РРР
и установить связь IP с удаленным компьютером. Аргумент crtscts, обычно ис-
пользуемый для всех подключений РРР на скорости свыше 9600 бод,
переключается на аппаратное подтверждение установления связи.
Поскольку перед запуском pppd необходимо установить связь программой
chat, вызов chat при желании можно включить в командную строку pppd. При
этом сценарий chat желательно загружать из файла (ключ -f). В этом случае
команда запуска pppd может выглядеть так:
pppd connect "chat -f chat_fileH /dev/cual 38400
-detach crtscts modem defaultroute
Файл chatjlle содержит следующую строку:
и" ATZ OK ATDT5551234 CONNECT "" ogin: ppp word: secretl
Кроме заключенного в кавычки вызова chat в глаза бросаются еще несколько
параметров. Параметр connect определяет сценарий подключения, с которого
должна начаться работа pppd, а ключ -detach указывает, что демон pppd не
отсоединяется от консоли. Ключевое слово modem означает, что демон pppd
должен следить за состоянием порта модема (на случай преждевременного разрыва
связи) и дать отбой после завершения сеанса.
Сначала демон pppd согласовывает параметры подключения с удаленным
компьютером и обменивается IP-адресами. Затем он настраивает сетевой
уровень ядра Linux на Интернет /dev/pppO (если это первый активный канал РРР
на компьютере). Наконец, pppd заносит в таблицу маршрутизации ядра ссылку
на компьютер, находящийся на другом конце канала РРР.
У демона pppd имеются и параметры, файлы и процедуры аутентификации,
которые могут потребоваться при подключении к некоторым удаленным
системам. Подробное описание заняло бы слишком много места, поэтому за
дополнительной информацией читателю следует обратиться к специализированной
литературе.
Итоги
После выполнения всех действий, описанных в этой главе, на вашем
компьютере будет успешно настроена поддержка TCP/IP. Теперь компьютер с системой
Linux сможет выполнять функции клиента при подключении к другим
компьютерам TCP/IP или предоставлять им доступ в роли сервера. В этой главе также
кратко рассматривались РРР и SLIP — модемные протоколы, используемые
при подключении к Интернету.
*Э 4% Whois и Finger
Нил С. Джеймисон (Neal S.Jamison)
Для упрощения поиска информации в Интернете были созданы многочисленные
поисковые системы, метапоисковые системы, интеллектуальные агенты и т. д.
Тем не менее количество пользователей, хостов и доменов постоянно растет
и найти информацию о них становится все сложнее. На помощь приходят два
протокола TCP/IP прикладного уровня: Whois и Finger. Протокол Whois
используется для получения информации о хостах и доменах, а протокол Finger
предназначен для поиска информации о конкретных людях. Оба протокола будут
подробно рассмотрены в этой главе.
Протокол Whois
Whois — служба и протокол TCP/IP для получения информации о хостах и
доменах Интернета. Протокол Whois, задуманный как «белые страницы»
Интернета, использовался (а в отдельных случаях — продолжает использоваться) в
сочетании с большими базами данных кадров. Однако из-за стремительного роста
Интернета поддерживать такие базы данных стало невозможно, поэтому сейчас
информация Whois ограничивается хостами и доменами. В наши дни
популярные базы данных Whois содержат сведения о контактных лицах хостов и
доменов, организациях и адресах. Данные Whois также используются при
регистрации доменов для проверки того, не был ли домен с таким именем создан ранее.
Протокол Whois работает на хорошо известном порте TCP с номером 43, а его
спецификация приводится в RFC 954. Дополнительная информация о Whois
и родственном протоколе Finger приводится в следующих RFC:
О RFC 2167 - «Referral Whois (RWhois) Protocol V1.5», S. Williamson, M. Kosters,
D. Blacka, J. Singh, K. Zeistra, июнь 1997.
О RFC 1834 — «Whois and Network Information Lookup Service, Whois++»,
J. Gargano, K. Weiss, 1995.
О RFC 1835 - «Architecture of the WHOIS++ service», P. Deutsch, R. Schoultz,
P. Faltstrom, C. Weider, 1995.
О RFC 1913 - «Architecture of the Whois++ Index Service», C. Weider, J. Full-
ton& S. Spero, 1996.
О RFC 1914 - «How to Interact with a Whois++ Mesh», P. Faltstrom, R. Schoultz
& С Weider, 1996.
О RFC 1288 — «The Finger User Information Protocol», D.Zimmerman, 1991.
Регистрация имен в Интернете
Регистрация имен в Интернете иногда сопряжена с определенными сложностями,
поскольку ни одна организация не обладает полным контролем над Интернетом
(дополнительная информация об основных организациях, выполняющих
административные функции в Интернете, приведена в главе 2). Эта путаница
отразилась и на структуре традиционной службы Whois, поскольку каждый
регистратор поддерживает собственную базу данных.
ПРИМЕЧАНИЕ
Доменные имена Интернета имеют многоуровневую структуру. Самыми распространенными
доменами верхнего уровня являются домены .com, .edu, .gov, .mil, .net и .org. Также существуют домены
верхнего уровня для отдельных стран — us (США), са (Канада), nl (Нидерланды), de (Германия)
и int (международный домен — см. RFC 1591). Домены второго уровня уточняют домен верхнего
уровня — например, ibm.com, mit.edu, nasa.gov и army.mil. На третьем уровне логическое деление
продолжается — например, whois.nic.mil и www.internic.net.
Совет регистраторов CORE (Council of Registrars) также представил дополнительные домены
верхнего уровня, называемые родовыми доменами верхнего уровня:
.firm — коммерческие предприятия;
.shop — торговля;
.web — организации, деятельность которых связана с World Wide Web;
.arts — культура и досуг;
.гее — развлечения;
.info — информационные услуги;
.name — персоналии;
.biz — бизнес;
.tv — телевидение;
.coop — кооперативы;
.museum — музеи;
.pro — профессиональная деятельность (бухгалтеры, адвокаты, врачи);
.aero — воздушный транспорт.
За дополнительной информацией об этой инициативе обращайтесь на сайт http://www.icann.org/.
Информационный центр InterNIC (деятельность которого осуществляется
Network Solutions, Inc.) был основным регистратором доменов верхнего уровня
с 1993 года. Надзор за деятельностью InterNIC осуществляет Национальная
администрация в области телекоммуникаций и информации NTIA (National
Telecommunications and Information Administration), входящая в Министерство торговли.
Часть полномочий InterNIC была делегирована другим официальным
регистраторам — таким, как Информационный центр Министерства обороны или Азиатско-
Тихоокеанский информационый центр. Недавно были разработаны новые
инициативы, которые могут привести к дальнейшему дроблению полномочий NIC.
Одна из таких инициатив, известная как SRS (Shared Registry System), стремится
внести в процесс регистрации доменов элементы честной и открытой
конкуренции. Среди ведущих конкурентов следует отметить Register.com
(дополнительная информация приводится на сайте http://www.register.com).
Конечно, честная конкуренция и делегирование полномочий положительно
влияют на процессе регистрации, но они приводят к усложнению службы Whois.
Как упоминалось выше, каждый регистратор ведет собственную базу данных
зарегистрированных организаций. Например, база данных Whois центра InterNIC
не содержит информации о доменах, относящихся к Министерству обороны,
и наоборот. Из этого следует, что пользователь должен знать, какая база данных
с наибольшей вероятностью содержит искомую информацию, и адресовать свой
запрос этой базе данных.
ПРИМЕЧАНИЕ
InterNIC присваивает всем лицам, зарегистрированным в качестве доменных контактов,
неформальные имена.
Например, мне присвоили неформальное имя NJ1181. Запрос к базе данных Whois центра InterNIC
по этому имени выдает следующую информацию:
Jamison, Neal (NJ1181) jamisonn@ANVI.COM
AnviCom, Inc.
7921 Jones Branch Dr.
Suite G-10
McLean, VA 22102
Базы данных Whois
Информация Whois хранится в нескольких базах данных. Как упоминалось
выше, большинство крупных баз данных Whois содержит только информацию
о зарегистрированных хостах и доменах Интернета. Впрочем, некоторые базы
данных содержат более подробные сведения.
InterNIC
Основным источником информации о зарегистрированных доменах и хостах
в США является центр InterNIC (деятельность которого осуществляется
Network Solutions, Inc.). InterNIC обладает полномочиями для регистрации всех
доменов верхнего уровня в США, поэтому его база данных содержит информацию
об огромном количестве доменов.
За дополнительной информацией об InterNIC обращайтесь к главе 2 и на
сайт http://www.internic.net.
Сервер Whois InterNIC находится по адресу whois.internic.net.
Министерство обороны США
Информационный центр Министерства обороны (DoD) поддерживает
регистрационные данные всех хостов домена .mil. В настоящее время деятельность центра
осуществляется корпорацией Boeing. Дополнительная информация имеется на
сайте http://whois.nJc.mil.
Сервер Whois DoD находится по адресу whois.nic.mil.
Федеральное правительство США
Информационный центр Федерального правительства США поддерживает
регистрационные данные всех хостов доменов .gov и .fed. В настоящее время
деятельность центра осуществляется Администрацией общих служб GSA (General
Services Administration). За дополнительной информацией обращайтесь на сайт
http://whois.nic.gov.
Сервер Whois Федерального правительства США находится по адресу whois.
nic.gov.
RIPE
Дополнительная информация о Европейском координационном сетевом центре
RIPE (Reseaux IP Europeens) приведена на сайте http://www.ripe.net/.
Сервер Whois RIPE находится по адресу whois.ripe.net.
APNIC
APNIC (Asia Pacific Network Information Center) является регистратором в
Азиатско-Тихоокеанском регионе. За дополнительной информацией о APNIC
обращайтесь на сайт http://www.apnic.net/.
Сервер Whois APNIC находится по адресу whois.apnic.net.
Другие серверы Whois
В Интернете существует множество других баз данных Whois, содержащих
информацию о корпорациях, университетах и других организациях. Полный список
серверов Whois, собранный Мэттом Пауэром (Matt Power) из Массачусетсского
технологического института, размещается по адресу ftp://sipb.mit.edu/pub/whois/
whois-servers.list
Сервис Whois в Web
Хотя протокол и служба Whois появились гораздо раньше Web, для обращения
с запросами к базам данных Whois и поиска нужной информации был
разработан ряд web-интерфейсов.
Некоторые клиенты Whois на базе Web перечислены в табл. 26.1.
Таблица 26.1. Основные web-интерфейсы к Whois
База данных URL
InterNIC http://www.networksolutions.com/cgi-bJn/whois/whois/
IANA http://www.isi.edu:80/in-notes/usdnr/rwhois.html
RIPE (Европа) http://www.ripe.net/db/whois.html
APNIC (Азиатско-Тихоокеанский регион) http://www.apnic.net/apnic-bin/whois.pl
Министерство обороны США http://www.nic.mil/cgi-bin/whois
Правительство США http://www.nic.gov/cgi-bin/whois
Allwhois.com
При таком количестве баз данных иногда бывает трудно понять, где именно
следует искать информацию. Впрочем, иногда это неважно. В Web имеется сайт
с именем Allwhois.com (http://www.allwhois.com), позволяющий проводить
поиск одновременно во всех крупных базах данных Whois. Домашняя страница
Allwhois.com изображена на рис. 26.1.
I ^g^tew Mlttnnt.XC-г "-■-": N- * .WJI
дай» Alwttots » com тшлнж ц
|iim0miiiiiii|i|||||[|WiMii||||-]|||| | " :•••<:'-•. .. JW ■ K.ji
ИШШЩШЯ"Я th* mo9t complete whoii service on the internet |:|
I Afjjn-Pjoifie к.:; ^^ЩЦщщЩщ^^^ТддщЗщДЦ! ЯИЕиЯшЕшНЕцЩЁмШ Ш
\: iyourdomain ". ^Щ ^Ascension Island (ас) Щ,.• Я
ША ;j-'=- ■ = •'• ••■•• '•••>•:••$: J American Samoa (as) Щ- :...••• hi
I .usoomjinj ' |сот "'.'..-'."у 1Э8М1НЯМИИИИИИИвША*'^ |gj
тК™.. ^--/-1 :/:! lArgentina (ar) ^^^^ ... |J
ripe мое Valid Character: .:.;. iAustria (at) Щ
ip*.eutop.jr, •. Letters,Numbers.Dash"-*. ,•..;:? 1 Belgium (be)
"••!*; '• ШШ.сшМ*. ti&pf ftwgin '..% |вгагн(ь»)
M5^ iK^SifiOS . >:: jBritish Indian Ocean Territory (io)
.-У. .jCanada(ca) . M■■■■■■■'■
Ьмпшмпмиттгитг Enhanced to search аЛ corn/net/org
РШШУ Registrars! 4 Щ>Г ._ ..,.,,.:.:...::,...: J.;. • ' -
'•■'"•.'" Ш^::\'"."::' ^:^^рЖП#1 '
lfrfofcf'.ffln..nit. • Thi«M*rohw«l«rt<lh«>»h.oyd4Ul>att<«»tb«'"% . .. '"•'. .'.••. ]
jiu£* р*гисч1»»4««тц(л л|Т1» jutf 0>*p]«ytbe output ]
Д1Ыш1а13 p*rtk«iU*<J«*mift*jrr.t tht outputwffl <e1um
аК&ш ■.••»«•«•«••'-•«»*"•-. :, £3-V.
к*> ,Л output
uuisjiirftja . •• ..■.-...... .4..........
|&M£iil*l) . I Щ\
Afiau:ii»r»i4 •" I ""*] 1
Рис. 26.1. Домашняя страница Allwhois.com
Как будет показано ниже, для упрощения поиска также существует
специальное расширение службы Whois, называемое RWhois (Referral Whois).
Клиенты Whois режима командной строки
Хотя у клиентов Whois, работающих в режиме командной строки, появился
конкурент в лице Web, такие клиенты по-прежнему включаются в большинство
современных операционных систем и реализаций TCP/IP. В этом разделе
описана команда whois и ее разновидности.
Команда whois для Unix
Стандартным клиентом Whois для системы Unix является команда whois. Команда
имеет следующий синтаксис:
whois [-h хост] идентификатор
Параметры:
-h - сервер Whois
Некоторые метасимволы, находящиеся в начале идентификатора, позволяют
ограничить круг поиска. Например, чтобы поиск производился только по
именам, идентификатор должен начинаться с точки (.). В табл. 26.2 перечислены
допустимые метасимволы и их влияние на поиск. Идентификатор может
начинаться с нескольких метасимволов.
Таблица 26.2. Символы, используемые для ограничения поиска командой whois
Метасимвол Смысл
Поиск только по именам
! Поиск только по неформальным именам
* Поиск только по группам или организациям
Примеры использования символов управления поиском приводятся ниже
в разделе «Примеры».
fwhois
Fwhois (Finger Whois) — клиент Whois для систем BSD Unix, распространяемый
с открытыми текстами — был написан Крисом Каппучио (Chris Cappuccio).
Fwhois свободно распространяется в Интернете, и вы можете легко включить его
в свою систему. Команда fwhois имеет следующий синтаксис:
fwhois пользователь [@<сервер.whois>]
Примеры
В первом примере команда Unix whois используется для поиска по именам —
допустим, мы хотим найти человека с именем «neal» и фамилией «Jamison».
Если не указывать конкретный сервер Whois, по умолчанию whois ищет данные
в базе InterNIC. Выходные данные команды whois выглядят так:
% whois Jamison, n
[rs.internic.net]
The Data in Network Solutions' WHOIS database is provided by Network
Solutions for information purposes, and to assist persons in obtaining
information about or related to a domain name registration record.
Network Solutions does not guarantee its accuracy. By submitting a
WHOIS query, you agree that you will use this Data only for lawful
purposes and that, under no circumstances will you use this Data to:
A) allow, enable or otherwise support the transmission of mass
unsolicited, commercial advertising or solicitations via e-mail
(spam); or B) enable high-volume, automated, electronic processes
that apply to Network Solutions (or its systems). Network Solutions
reserves the right to modify these terms at any time. By submitting
this query, you agree to abide by this policy.
Jamison, Neal (NJ795) iamisonn@PATRIOT.NET
Jamison, Neal (NJ1181) jamisonn@ANVI.COM
To single out one record, look it up with "!xxx", where xxx is the
handle, shown in parenthesis following the name, which comes first.
Далее команда Unix whois позволяет выбрать ту запись, по которой вы хотите
получить дополнительную информацию. Обратите внимание на использование
метасимвола «!», экранированного символом «\», чтобы он не обрабатывался
командным интерпретатором Unix:
% whois \!NJU81
[rs.internic.net]
The Data in Network Solutions' WHOIS database is provided by Network
Solutions for information purposes, and to assist persons in obtaining
information about or related to a domain name registration record.
Network Solutions does not guarantee its accuracy. By submitting a
WHOIS query, you agree that you will use this Data only for lawful
purposes and that, under no circumstances will you use this Data to:
A) allow, enable or otherwise support the transmission of mass
unsolicited, commercial advertising or solicitations via e-mail
(spam); or B) enable high-volume, automated, electronic processes
that apply to Network Solutions (or its systems). Network Solutions
reserves the right to modify these terms at any time. By submitting
this query, you agree to abide by this policy.
Jamison, Neal (NJ1181) jamisonn@ANVI.COM
AnviCom, Inc.
7921 Jones Branch Dr.
Suite G-10
McLean, VA 22102
Record last updated on 20-Feb-99.
Database last updated on 20-Aug-99 04:31:00 EDT.
Так выглядит моя запись в базе данных InterNIC.
Аналогичный результат можно получить и при помощи команды fwhois. В
следующем примере мы запрашиваем информацию об известном агентстве NASA,
занимающемся космическими программами США:
% fwhois nasa.gov
[rs.internic.net]
The Data in Network Solutions' WHOIS database is provided by Network
Solutions for information purposes, and to assist persons in obtaining
information about or related to a domain name registration record.
Network Solutions does not guarantee its accuracy. By submitting a
WHOIS query, you agree that you will use this Data only for lawful
purposes and that, under no circumstances will you use this Data to:
A) allow, enable or otherwise support the transmission of mass
unsolicited, commercial advertising or solicitations via e-mail
(spam); or B) enable high-volume, automated, electronic processes
that apply to Network Solutions (or its systems). Network Solutions
reserves the right to modify these terms at any time. By submitting
this query, you agree to abide by this policy.
No match for "NASA.GOV".
Оказывается, в команде не был указан сервер Федерального правительства
США, на котором должен производиться поиск. Следующая попытка приводит
к желаемому результату:
% fwhois nasa.gov@whois.nic.gov
[nic.gov]
National Aeronautics and Space Administration (NASA-DOM)
NASA Marshall Space Flight Center
MSFC. AL 35812
Domain Name: NASA.GOV
Status: Active
Administrative Contact:
Pirani, Joseph L. (JLP1)
JOSEPH.PIRANI@MSFC.NASA.GOV
Domain servers in listed order:
E.ROOT-SERVERS.NET 192.203.230.10
NS1.J PL.NASA.GOV 137.78.160.9
NS.GSFC.NASA.GOV 128.183.10.134
MX.NSI.NASA.GOV 128.102.18.31
%
Whois на базе Telnet
Раньше на многих серверах Whois поддерживался интерфейс Telnet. Теперь при
попытке подключиться к серверу Whois Информационного центра Министерства
обороны (whois.nic.mil) выдается следующее сообщение:
% telnet whois.nic.mil
Trying 207.132.116.6...
Connected to is-l.nic.mil.
Escape character is ,A]'.
The telnet service to nic.mil has been discontinued.
For WHOIS usage, please use the online web form at
http://nic.mil.
On Unix platforms, you can also use the WHOIS client service,
included with most operating systems.
$ whois -h nic.mil 'keyword'
Connection closed by foreign host.
Впрочем, серверы Whois, доступные через Telnet, еще существуют. Один
из таких серверов находится по адресу whois.ripe.net. Пример использования
Telnet-интерфейса к Whois:
% telnet whois.ripe.net
Trying 193.0.0.200...
Connected to joshua.ripe.net.
Escape character is ,A]'.
* RIPE NCC
* Telnet-Whois interface to the RIPE Database
*
* Most frequently used keys are: IP address or prefix (classless).
* network name, persons last, first or complete name, NIC handle,
* and AS<number>.
* Use 'help' as key to get general help on the RIPE database.
* Contact <ripe-dbm@ripe.net> for further help or to report problems.
Enter search key [q to quit]:
Расширения Whois
Протокол и служба Whois предоставляют в распоряжение пользователя богатый
сервис для обращения к конкретным базам данных Whois с запросами
информации о зарегистрированных хостах, доменах, а в отдельных случаях — и людей.
Тем не менее у Whois есть свои недостатки. Например, иногда бывает трудно
выбрать правильную базу данных для запроса, что может существенно
усложнить поиск необходимой информации. Существует два протокола, являющихся
расширениями WHOIS++:
О RWhois (Referral Whois);
О WHOIS++.
Краткие описания этих протоколов приводятся ниже.
RWhois
Вследствие огромных размеров Интернета поддерживать единую базу данных
с информацией обо всех хостах, доменах и пользователях немыслимо. Чтобы
сократить размеры базы данных и сложность ее сопровождения до разумных
пределов, необходима децентрализация.
Каталоговый протокол и служба RWhois расширяют концепцию Whois для
передачи запроса любому количеству децентрализованных баз данных Whois.
В RWhois эта задача решается примерно по тому же принципу, что и в DNS.
Если база данных RWhois не содержит информации, необходимой для ответа на
запрос, она может переадресовать запрос другой базе данных. Процесс
повторяется до обнаружения нужной базы данных и получения ответа на запрос.
За дополнительной информацией о RWhois обращайтесь к RFC 2167 или на
сайт http://www.rwhois.net.
WHOIS++
WHOIS++ представляет собой расширение традиционного протокола и службы
Whois. Задействованные в нем серверы аналогичны Whois, но предоставляют
более подробную и структурированную информацию.
Описание WHOIS++ приводится в RFC 1834, 1835, 1913 и 1914.
Finger
Finger — название протокола и программы, предназначенных для получения
информации о состоянии хостов или пользователей в Интернете. Обычно Finger
используется для получения информации о том, подключен ли пользователь
к Интернету, а также для получения адресов электронной почты и имен. Finger
работает на порте TCP с номером 79.
Finger относится к числу простых служб TCP/IP. Сеанс между клиентом
и сервером проходит по следующему сценарию:
О Клиент Finger отправляет запрос серверу Finger.
О Сервер открывает подключение для клиента.
О Клиент передает однострочный запрос.
О Сервер ищет информацию в локальных файлах «учетных записей» и
возвращает результаты.
О Сервер закрывает подключение.
Ниже приведен простейший пример использования Finger с применением
команды telnet:
% telnet host.mydomain.com 79
Trying...
Connected to host.mydomain.com
Escape character is ,A]'
jamisonn
Login: jamisonn Name: Neal Jamison
Directory: /users/home/jamisons Shell: /bin/tcsh
On since Mon Aug 16 19:20 (EOT) in ttyp4 from poo!180-128
No mai1.
No plan.
Connection closed by foreign host.
%
Спецификация Finger приводится в RFC 1288.
ПРИМЕЧАНИЕ
Концепция базы данных «электронного телефонного справочника» CSO была разработана
отделом средств связи и вычислительной техники Иллинойсского университета. На сервере CSO
хранятся данные телефонной книги и выполняется программа qi (интерпретатор запросов)/ которая
получает запросы и возвращает информацию. Клиент запускает программу рп, которая отправляет
запросы серверу. Программа рп была адаптирована для большинства основных платформ; кроме
того, клиент рп интегрирован во многие программные продукты (в том числе Eudora и Mosaic).
За дополнительной информацией обращайтесь к списку FAQ, посвященному рп, по адресу http://
www.landfield.com/faqs/ph-faq/.
Команда finger
Команда finger предназначена для поиска информации о локальных и удаленных
пользователях. В этом разделе основное внимание сосредоточено на
применении finger для сбора информации об удаленных пользователях.
Команда finger для Solaris
В операционной системе Solaris для работы с протоколом Finger используется
клиентская команда finger. Команда finger запрашивает у сервера подключение
и после установления связи передает однострочный запрос. Синтаксис команды
finger для Solaris:
finger [ -bfhilmpqsw ] [ пользователь... ]
finger [ - 1 ][ пользователь@хост1[@хост2...@хостп]
finger [ - 1 ][ @хост1 [@хост2. . .@хостп] ... ]
ПРИМЕЧАНИЕ
При использовании finger для поиска удаленных пользователей поддерживается только ключ -I.
Параметры:
О -b — подавление длинного формата вывода.
О -f — подавление заголовка.
О -h — не выводить файл .project.
О -j — аналог короткого формата, но с выводом только имени пользователя,
терминала, времени входа в систему и времени бездействия.
О -I — принудительное использование длинного формата вывода.
О -т — поиск только по системному имени пользователя (но не по имени или
фамилии).
О -р — не выводить файл .plan.
О -q — ускоренный вывод (аналог короткого формата, но с выводом только
имени пользователя, терминала и времени входа в систему).
О -s — короткий формат вывода.
О -w — не выводить полное имя.
Пример:
$finger jamisonn@mydomain.com
Login name: jamisonn In real life: Neal Jamison
Directory: /www/home/jamisonn Shell: /bin/csh
On since Aug 3 13:21:37 on pts/1 from hostnamel
No unread mail
Project: AlphaBeta Project
Plan: To finish this AlphaBeta project.
$
Команда finger для Linux
Версия finger для Linux напоминает реализацию для Solaris. Синтаксис команды
finger для Linux:
finger [ -Imsp ] [ пользователь... ] [пользователь@хост ... ]
Параметры:
О -s — вывести системное имя пользователя, реальное имя, имя терминала и
состояние записи (в виде * после имени терминала при запрете записи), время
бездействия, время входа в систему, местонахождение организации и номер
телефона.
О -I — вывести всю информацию, выводимую для параметра -s, а также
домашний каталог пользователя, домашний номер телефона, командный
интерпретатор, состояние почтового ящика и содержимое файлов .plan, .project и .forward
из домашнего каталога пользователя.
О -р — не выводить содержимое файлов .plan и .project при использовании
параметра -I.
О -т — предотвратить поиск по реальным именам. Пользователь обычно
идентифицируется по системному имени, указываемому при входе в систему, но
без параметра -т в поиск также будет включено реальное имя пользователя.
При поиске команда finger не учитывает регистр символов.
Если параметры не заданы, то при наличии аргументов finger по умолчанию
использует длинный формат вывода (-1); в противном случае используется
формат -s. Следует учитывать, что в обоих форматах вывода могут отсутствовать
некоторые поля, если для них отсутствует информация в базе данных.
При отсутствии аргументов finger выводит информацию обо всех
пользователях зарегистрированных в системе в настоящий момент.
Пример:
$finger jamisonn@domain.com
Login name: jamisonn In real life: Neal Jamison
Directory: /www/home/jamisonn Shell: /bin/csh
On since Aug 3 13:21:37 on pts/1 from hostnamel
No unread mail
Project: AlphaBeta Project
Plan: To finish this AlphaBeta project.
S
Демоны Finger
Демоны fingerd и in.fingerd, прослушивающие запросы finger, автоматически
запускаются демоном inetd. Иногда Finger (и демоны) отключаются
администратором по соображениям «конфиденциальности». Попытка обращения к серверу
с отключенной службой Finger приводит к следующему результату:
$ finger jamisonn@host.mydomain.com
[host.mydomain.com]
Connection refused.
$
Демон in.fingerd для Solaris
in.fingerd — демон Finger для системы Solaris. Он находится под управлением inetd
и прослушивает запросы на подключение. При поступлении запроса in.fingerd
передает его команде finger, которая ищет запрашиваемую информацию среди
системных файлов. Демон in.fingerd возвращает ответ клиенту и закрывает
подключение. Демон in.fingerd запускается командой
/usr/sbin/in.fingerd
Параметры: нет.
В табл. 26.3 приводится список файлов/команд, связанных с in.fingerd.
Таблица 26.3. Команды и файлы, связанные с in.fingerd
Файл/команда Описание
.plan Пользовательский файл
.project Пользовательский файл с информацией о проектах
/var/adm/utmp Сведения о пользователях
/etc/passwd Системный файл паролей, содержащий информацию о пользователе
/var/adm/lastlog Время последнего входа в систему
Демон fingerd для Linux
Демон fingerd в системе Linux похож на демона in.fingerd для Solaris. Демон
fingerd запускается командой
fingerd [-wul] [-pl_ путь]
Параметры:
О -w — вывод заголовка с информацией о состоянии системы.
О -и — отвергать запросы вида finger @xocm.
О -I — вести журнал запросов к finger.
О -р — передача альтернативного каталога, в котором находится локальная
команда finger.
Finger в других системах
Служба Finger, как и большинство команд и программ TCP/IP, родилась в среде
Unix. Тем не менее некоторые фирмы разработали реализации Finger для других
операционных систем. В табл. 26.4 представлены две реализации Finger и адреса,
по которым можно получить дополнительную информацию.
Таблица 26.4. Программное обеспечение Finger для других платформ
Производитель URL
Hummingbird Communications LTD http://arctic.www.hummingbird.com/products/nc/nfs/index.html
Trumpet Winsock http://www.trumpet.com.au/
В Интернете также существует несколько web-интерфейсов (шлюзов) к службе
Finger. В частности, в своей работе я встречал следующие шлюзы Finger:
http://www.es.indiana.edu/finger/
http://webrunner.webabc.com/egi-bin/finger
На рис. 26.2 изображен шлюз Web/Finger в действии.
Необычное применение Finger
Время от времени инструментарий TCP/IP используется в целях, которые вряд ли
были предусмотрены его разработчиками. В следующем примере умные (и не
лишенные чувства юмора) студенты приспособили Finger для получения
информации о работе автомата, продающего охлажденные напитки. Выходные данные
слегка сокращены для экономии места.
% finger coke@cs.wisc.edu
[cs.wisc.edu]
[coke@lime.es.wisc.edu]
Login name: coke In real life: Coke
Directory: /var/home/coke Shell: /var/home/cokead/bin/coke
On since Aug 10 11:47:46 on term/a 3 hours 6 minutes Idle time
Plan:
This Coke (tm) machine is computer operated. It is available to SACM
members, Computer Sciences personnel, and CS&S building support staff.
(Plus anyone who asks really nice :-)
If you do not have an account set up or your account is below $.40,
then you can leave a check made out to SACM in a sealed envelope in
the SACM mailbox (fifth floor) with your email address and an initial
password. The Coke machine will email you when your account has been
created/updated.
Contents of the Coke machine:
Coke, Diet Coke, Mendota Springs Lemon (sparkling mineral water),
Sprite, Barq's Root Beer, Cherry Coke, Nestea Cool
%
This page generated by the )U finger gateway Щ
nasanews@space.mit.edu Ш
nasanews: [space] Mon Aug 16 20:44:11 1999
MIT Center for Space Research Щ
This NasaNews service is brought to you by the Microwave Subnode of \
NASA*a Planetary Data System. It is also available via World Ride ЯеЬ
at "http: //space.mit. edu/nasanews. html". AOL users can receive this
bulletin as: keyword "Gopher" > Aerospace and Astronomy > Nasa News.
We also maintain an email listserver for planetary microwave
information at "pds-listserver@space.mit.edu", an anonymous ftp server at
"delcano.mit.edu", and a WWW home page at "http://delcano.mit.edu/".
I If you have any suggestions for how we might improve our services,
I please mail them to "pds-requests@space.mit.edu".
I NASA press releases and other information are available automatically J
bv sendina an Internet electronic mail messaae to "domoOha.nasa.aov", Щ
И*Ь >-..АЬшт&Шт. , л ч 3.л..^.Г ^,,ЗЗЖ2,31^3,^,^^.,,Ъ:^ Д„titijba^fl
Рис. 26.2. Обращение к NASA News через шлюз Finger университета штата Индиана
Другой (и вероятно, более полезный) пример использования Finger можно
найти в сети Тихоокеанской Северо-Западной сейсмографической лаборатории.
Как и в предыдущем примере, выходные данные приводятся в сокращении.
% finger quake@geophys.washington.edu
[geophys.washington.edu]
Earthquake Information (quake)
Plan:
The following catalog is for earthquakes (M>2) in Washington and Oregon
produced by the Pacific Northwes Seismograph Network, a member of the
Council of the National Seismic System. PNSN support comes from the
US Geological Survey. Department of Energy, and Washington State.
Additional catalogs and information for the PNSN (as well as other
networks) are available on the World-Wide-Web at
URL:*http'V/www.geophys.washington.edu/'
For specific questions regarding our network send E-mail to:
seis_info@geophys.washington.edu
DATE-TIME is in Universal Time (UTC) which is PST + 8 hours. Magnitudes are
reported as duration magnitude (Md). QUAL is location quality A-excellent,
B-good, C-fair, D-poor, *-from automatic system and may be in error.
Updated as of Tue Sep 18 09:00:12 PDT 2001
DATE-(UTC)-TIME LAT(N) LON(W) DEP MAG QUAL COMMENTS
yy/mm/dd hh:mm:ss deg. deg. km Ml
01/07/31 05:07:32 47.73N 117.44W 0.6 2.2 AC FELT 7.4 km NNW of Spokane.
01/08/01 14:29:48 47.71N 117.44W 0.6 2.2 AD FELT 5.9 km NNW of Spokane.
01/08/02 15:35:23 47.72N 122.38W 27.0 2.2 BA 14.3 km WNW of Kirkland, WA
01/08/13 11:47:28 48.25N 120.02W 7.2 2.3 CD 35.3 km WSW of Okanogan. WA
01/08/15 00:37:29 47.66N 122.41W 26.1 2.2 BA 9.6 km NW of Seattle, WA
01/08/19 06:17:32 48.25N 121.61W 1.7 3.0 CC FELT 1.0 km WSW of Darringt
01/08/20 06:14:09 45.29N 120.14W 8.8 2.1 BD 6.8 km NNE of Condon, OR
01/08/25 17:52:34 48.23N 121.60W 2.7 2.1 CC FELT 2.1 km S of Darringt
01/08/30 03:47:31 48.23N 121.62W 4.8 2.7 CC FELT 2.9 km SW of Darringt
Итоги
В этой главе описаны два основных протокола и набора команд,
предназначенных для поиска информации о хостах, доменах и пользователях.
Служба/протокол Whois раньше использовалась для сбора информации о зарегистрированных
хостах и доменах. Обычно эта информация ограничивается сведениями об
организации-регистраторе, контактных лицах и почтовых адресах. Протокол Whois
первоначально задумывался как информационная служба для получения данных
обо всех пользователях Интернета, однако из-за стремительного развития
Интернета эта задача стала невыполнимой. RWhois и WHOIS++ расширяют
традиционные возможности Whois и пытаются превратить Whois в более полную
информационную службу. Во многих организациях, включая корпорации и
учебные заведения, Whois эффективно используется для реализации каталогового
сервиса.
Служба/протокол Finger используется для сбора информации о хостах
Интернета и их пользователях. Как показано выше, при помощи Finger можно
узнать, подключен ли в настоящий момент пользователь к системе, а также
получить различные сведения, включая время входа в систему, номер телефона
и описание его «рабочих планов». Finger также может применяться для
получения другой информации — например, прогнозов погоды, текущих новостей
и даже для проверки состояния автомата по продаже напитков.
*% "Т Протоколы пересылки
Жт Ш файлов
Энн Карасик (Anne Carasik)
Пересылка файлов из одной системы в другую считается одной из важнейших
задач в работе сети. Вообще говоря, файлы можно пересылать во вложениях
электронной почты, однако это косвенный способ, уступающий по
эффективности прямой пересылке файлов. Если вы хотите немедленно добиться желаемого
результата, следует воспользоваться протоколом пересылки файлов. К этой
категории относятся интернет-протоколы FTP (File Transfer Protocol) и TFTP
(Trivial FTP). Процесс удаленного копирования рассматривается в главе 32.
Роль FTP и TFTP в современном мире
В наши дни многие пользователи используют протокол HTTP для пересылки
данных между серверами, поэтому приложения FTP и TFTP не так
распространены, как раньше. Тем не менее web-серверы работают не во всех системах, поэтому
для пересылки файлов независимо от наличия web-сервера все равно необходимы
протоколы FTP и TFTP. Также следует заметить, что при пересылке файлов
протокол HTTP уступает FTP по эффективности. Если адрес URL, внедренный
в тег HTML, подразумевает пересылку по FTP (например, ftp://ftp.xyz.com), то
система переадресует запрос на пересылку клиенту FTP.
Впрочем, даже при использовании Web пересылка файлов по-прежнему
затруднена. В целом команды Web уступают по своим возможностям командам
FTP и не обладают таким количеством режимов и функций.
Приложения пересылки файлов, работающие в режиме командной строки,
позволяют передавать файлы без установки web-сервера. В большинстве систем
Unix и Linux поддержка FTP устанавливается по умолчанию.
Поскольку большинство таких команд работает в текстовом режиме (хотя
существуют программы, выполняющие те же операции через графический
интерфейс), работу FTP лучше всего продемонстрировать на примере клиентов
командной строки, входящих в поставку Unix. Тем не менее, независимо от того, в каком
режиме работает клиент FTP — графическом или в режиме командной строки,
во внутренних операциях всех клиентов используются базовые команды FTP.
Хотя протокол TFTP используется в гораздо меньшем масштабе, чем FTP,
в этой главе рассматриваются оба протокола.
Пересылка файлов через FTP
Протокол FTP является стандартным средством пересылки файлов в Интернете
и в сетях IP. На ранней стадии развития Интернета, до повсеместного
распространения World Wide Web, для пересылки файлов использовались
приложения командной строки. Одним из самых популярных средств решения этой
задачи наряду с электронной почтой (SMTP) стал протокол FTP.
FTP относится к категории приложений TCP/IP, а это означает, что
протокол работает на прикладном уровне — седьмом в модели OSI и четвертом в
модели TCP. Спецификация FTP приводится в RFC 959. В качестве транспортного
протокола FTP использует TCP (рис. 27.1).
Прикладной уровень —► FTP
Представительский уровень
Сеансовый уровень
Прикладной уровень [—►FTP Транспортный уровень
Транспортный уровень Сетевой уровень
Сетевой уровень Канальный уровень
Физический уровень Физический уровень
Модель TCP Модель OSI
Рис. 27.1. Место FTP в моделях OSI и TCP
Первоначально FTP проектировался как протокол пересылки файлов между
компьютерами ARPANET, предшественника Интернета. Старая сеть ARPANET
поддерживалась Министерством обороны США с 1960-х по 1980-е годы прошлого
века. В те времена главной функцией FTP считалась эффективная и надежная
пересылка файлов между хостами. Сейчас FTP по-прежнему обеспечивает
надежную пересылку, а также удаленное хранение файлов, то есть возможность
работать в одной системе и хранить файлы где-то в другом месте. Например,
если вы поддерживаете работу web-сервера и хотите загрузить файлы HTML
и программы CGI для правки на локальном компьютере, вам достаточно
загрузить эти файлы с сайта, на котором они хранятся (то есть с удаленного web-
сервера).
После внесения изменений файлы передаются обратно на web-сервер через
FTP. В этом случае вам не придется регистрироваться и работать на удаленном
компьютере, как при использовании Telnet.
Подключения FTP
Подключение FTP устанавливается сразу с двумя портами: 20 и 21. Эти два
порта выполняют разные функции — порт 20 используется для обмена данными,
а порт 21 предназначен для управляющих команд.
На рис. 27.2 показано, как клиент FTP подключается к демону FTP на
удаленном сервере.
Любой порт с номером п 21
1024 и выше : И
Управляющий порт
Любой порт с номером Р 2q
1024 и выше z И р
Порт данных
Клиент FTP Сервер FTP
Рис. 27.2. Подключение клиента FTP к серверу
Управляющий порт
Управляющий порт FTP предназначен для передачи команд и ответов на них.
Например, при отправке команды вида get thisfile будет получен примерно такой
ответ:
200 PORT command successful
150 Opening ASCII mode data connection for .message A27 bytes).
256 Transfer complete.
local: .message remote: .message
135 bytes received in 1,4 seconds @,09 Kbytes/s)
Обратите внимание: команды, передаваемые через управляющий порт 21,
обозначаются префиксом PORT. В некоторых реализациях FTP вместо
управляющего порта (PORT) допускается передача команд через порт данных
командами пассивного режима (PASV).
В выходных данных команды указывается состояние данных, текущий режим,
состояние пересылки и объем принятых данных. Подключение использует
протокол Telnet, спецификация которого приведена в RFC 495.
В некоторых реализациях команда PASV допускает «низкоуровневое»
подключение FTP, при котором не используются знакомые пользователю команды. Это
позволяет пересылать файлы с использованием единственного порта 20 вместо
двух портов 20 и 21.
ПРИМЕЧАНИЕ
Истинное предназначение команды PASV — обеспечить нормальное прохождение FTP через
брандмауэры. В обычном режиме клиент FTP посылает серверу команду PORT,
идентифицирующую конечную точку, с которой сервер FTP должен установить подключение для передачи
данных. Такой способ часто называется обратным подключением. Точка на стороне клиента
представляет собой временный порт, лежащий в интервале от 1024 до 65 535, однако брандмауэру
об этом неизвестно, и он не может разрешить доступ к заданному порту, не зная заранее его
номера. Проблема решается выдачей команды PASV сервером FTP, в результате чего сервер
переводится в «пассивный режим». Команда PASC идентифицирует для клиента FTP конечную
точку для передачи данных на стороне сервера. Затем клиент FTP осуществляет активное
подключение к конечной точке данных на стороне сервера. Поскольку брандмауэры обычно разрешают
исходящие подключения по любому номеру порта, работа FTP через брандмауэр проходит
нормально.
При подключениях PASV в распоряжении пользователя находится полный
набор команд; тем не менее подключение с использованием управляющих
команд гораздо надежнее и лучше контролируется, так как администратор может
выбрать команды, доступные для пользователя.
Порт данных
Через порт данных информация FTP (файлы) передается серверу FTP (ftpd).
ПРИМЕЧАНИЕ
Серверный демон FTP ftpd (или in.ftpd) предназначен для системы Unix. В других операционных
системах сервер FTP может быть реализован иначе.
Не путайте порт данных с управляющим портом, через который посылаются
команды, вводимые пользователем. При пересылке файлов через порт 20 (порт
данных) передаются сами файлы, а не команды.
Подключения к порту данных называются пассивными. Все, что известно при
подключении к порту данных, — это режим пересылки и тип файла, а также
количество передаваемых файлов. Кроме того, существует возможность отправки
фрагмента файла, хотя практические применения для этого находятся довольно редко.
При ожидании подключений сервер прослушивает порт данных (порт 20)
в ожидании запросов, по которым открывается подключение данных. Пассивное
подключение открывается одновременно с управляющим подключением. В этом
случае команды передаются через управляющий порт, однако вы можете
напрямую управлять портом данных при помощи пассивных команд FTP.
ПРИМЕЧАНИЕ
Команда PASV не вводится пользователями; пользовательский интерфейс обеспечивается
командой PORT. Серверы FTP должны поддерживать пассивные команды (RFC 1123), хотя на практике
это делается не всегда.
Для ввода команд в пассивном режиме следует подключиться к порту 21 через Telnet:
tigerlair:/home/stripes- telnet localhost 21
Примерный результат выглядит так:
Trying 1.2.3.4...
Connected to localhost.
Escape character is ,Л]'
220 mysystem.tigerlalr.com FTP server (SunOS 5.6) ready.
Далее все вводимые команды будут восприниматься как пассивные.
Команда PWD выводит информацию о текущем каталоге:
PWD
257 7home/stripesH is current directory.
Команда CDUP осуществляет переход в родительский каталог:
CDUP
250 CWD command successful.
Повторный ввод команды PWD выводит информацию о новом текущем каталоге:
PWD
257 "/home" is current directory.
Команды не снабжаются префиксом PORT, поскольку управляющий порт при этом не
используется — вместо этого вы работаете с портом данных напрямую.
Подключение с использованием клиентов FTP
Чтобы открыть подключение через FTP, выполните команду ftp с именем хоста.
Синтаксис команды ftp:
ftp [параметры] [хост]
Например, для подключения к серверу ftp.example.org выполняется
следующая команда:
tigerlair:/home/stripes- ftp ftp.example.org
Если вы хотите изменить обычный режим работы клиента FTP,
воспользуйтесь параметрами командной строки, перечисленными в табл. 27.1.
Таблица 27.1. Параметры командной строки клиента ftp
Параметр Назначение
-d Включение отладки
-i Отключение подтверждений
-п Запрет автоматического входа в систему
-v Вывод ответов от удаленного сервера
-д Запрет метасимволов (глобов)
Например, чтобы запретить автоматический вход в систему (когда клиент FTP
автоматически запрашивает имя пользователя и пароль) и не запрашивать
подтверждения при пересылке нескольких файлов, следует ввести следующую команду:
ftp -i -n ftp.example.org
Но вернемся к исходному примеру запуска клиента FTP без параметров:
tigerlaiг:/home/stripes- ftp ftp.exampTe.org
Следующее сообщение выглядит так:
Connected to ftp.example.org
220 ftp.example.org FTP Server (Version wu-2.4.2-VR16(l)
Wed Apr 7 15:59:03 PDT 1999) ready.
Name (ftp.example.org:stripes):
По умолчанию FTP использует для входа на удаленный сайт имя вашей
локальной учетной записи (в данном случае — stripes). Если нужно использовать
другое имя, введите его:
Connected to ftp.example.org
220 ftp.example.org FTP Server (Version wu-2.4.2-VR16(l)
Wed Apr 7 15:59:03 PDT 1999) ready.
Name (ftp.example.org:stripes): ahc
Password:
Вам предлагается ввести пароль; будьте внимательны и введите его без
ошибок. Во время ввода символы не отображаются на экране и даже не
маскируются звездочками.
ПРИМЕЧАНИЕ
Не используйте example.org для экспериментов с FTP, здесь этот адрес используется только в
качестве примера. Если вы хотите поэкспериментировать с FTP, не создавая угрозы для удаленной
системы, воспользуйтесь локальной системой и запустите клиента FTP с подключением к локальному
хосту. В этом случае предполагается, что сервер FTP работает на одном компьютере с клиентом.
На экране появляется приглашение FTP, которое выглядит так:
ftp>
В этом режиме, называемом интерактивным режимом, вводятся команды на
пересылку файлов.
Интерактивный режим FTP
Интерактивный режим позволяет вводить и интерпретировать команды в
клиенте FTP. В частности, вы можете отправлять клиентские команды на открытие
и закрытие подключений, пересылку файлов, изменение типа пересылки и т. д.
прямо из клиента FTP.
В табл. 27.2 перечислены команды интерактивного режима FTP.
Таблица 27.2. Команды FTP
Команда Описание
!<локальная команда> Выполнение командного интерпретатора в локальной системе
$<макрос> Выполнение макроса
account [пароль] Использование другого имени/пароля для получения расширенного
доступа к удаленной системе
ascii Выбор ASCII-режима пересылки файла
append локальный Присоединение локального файла к удаленному (файла на удаленном
файл [удаленный файл] компьютере)
bell Подача звукового сигнала после завершения пересылки
binary Выбор двоичного режима пересылки файла
bye, exit Завершение удаленного подключения
case Переключение режима учета регистра символов
close, disconnect Закрытие удаленного подключения
cd <каталог> Смена текущего каталога в удаленной системе
cdup Переход к родительскому каталогу
debug <уровень> Установка уровня отладки
dir Вывод содержимого каталога
delete <файл> Стирание файла на удаленном компьютере
get <файл> Загрузка файла с удаленного компьютера в локальную систему
glob Разрешение/запрет использования метасимволов при пересылке файлов
Команда Описание
hash Вывод символа # после передачи каждых 1024 байт
help Вывод справки
led <каталог> Смена текущего каталога в локальной системе
Is Вывод содержимого каталога на удаленном компьютере
Ipwd Вывод содержимого рабочего каталога на локальном компьютере
macdef <макрос> Определение макроса
mdel <файл(ы)> Удаление нескольких файлов
mdir <файл(ы)> Вывод содержимого нескольких каталогов
mget <файл(ы)> Загрузка нескольких файлов из удаленной системы на локальный
компьютер
mkdir <каталог> Создание каталога на удаленном компьютере
mput <файл(ы)> Пересылка нескольких файлов на удаленный компьютер
open < сайт> Открытие подключения к сайту
prompt Управление режимом интерактивного ввода команд
put <файл> Пересылка файла на удаленный компьютер
pwd Вывод текущего рабочего каталога
user [пользователь] Вход в удаленную систему
[пароль]
verbose Разрешение/запрет расширенного вывода
При таком количестве команд протокол FTP способен на многое. Чтобы вы
лучше поняли, как используются эти команды, в следующем разделе будет
рассмотрен пример сеанса FTP.
Пример сеанса FTP
Большинство сеансов FTP проще того, что описан ниже — этот пример
разработан специально для демонстрации некоторых возможностей, доступных при
использовании FTP. Прежде всего необходимо открыть подключение к удаленному
сайту FTP:
tigerlair:/home/stripes- ftp ftp.example.org
Connected to ftp.example.org
220 ftp.example.org FTP Server (Version wu-2.4.2-VR16(l)
Wed Apr 7 15:59:03 PDT 1999) ready.
Name (ftp.example.org:stripes): ahc
Password:
230 User ahc logged in.
ftp>
Получив доступ к удаленному сайту, мы хотим получить список имеющихся
файлов. В FTP существует две команды для решения этой задачи: Is и dir. Сле-
дует учитывать, что в нашем примере подключение FTP производится к
системе Unix. Выходные данные команды Is выглядят примерно так:
ftp> Is
200 PORT command successful.
150 ASCII data connection for /bin/Is A.2.3.4,52262) @ bytes).
ISS-SOLARIS.TAR
Mail
ar203sol.tar.Z
c-files.tar.gz
debug.ssh
deshadow.c
e205-pdf.pdf
226 ASCII Transfer complete.
468 bytes received in 0.0077 seconds E9.35 Kbytes/s)
ftp>
Команда dir выдает следующий результат:
ftp> dir
200 PORT command successful.
150 ASCII data connection for /bin/Is A.2.3.4,52263) @ bytes).
total 56220
drwrx-xr-x 16 ahc users 1536 May 25 09:22 .
drwrx-xr-x 6 root others 512 Oct 27 1998 ..
-rw 1 ahc users 168 May 7 11:26 .Xauthority
-rw-r--r-- 1 ahc users 424 Dec 2 14:43 .alias
-rw-r--r-- 1 ahc users 313 Jun 2 1998 .cshrc
drwxr-xr-x 11 ahc users 512 May 7 11:27 .dt
-rwxr-xr-x 1 ahc users 5111 Nov 2 1998 .dtprofile
drwx 2 ahc users 512 Jan 27 15:04 .elm
-rw-r--r-- 1 ahc users 174 Dec 2 14:45 .login
-rw-r--r-- 1 ahc users 556 Dec 2 15:32 .tcshrc
-rw 1 ahc users3655680 Jan 4 08:27 ISS-SOLARIS.TAR
drwx 2 ahc users 512 Dec 8 16:01 Mail
-rw-r--r-- 1 ahc users5919933 Nov 3 1998 ar302sol.tar.Z
-rw 1 ahc users 14605 May 13 10:43 c-files.tar.gz
-rw 1 ahc users 1818 Mar 8 12:09 debug.ssh
-rw-r--r-- 1 ahc users 2531 Jan 7 10:07 deshadow.c
-rw-r--r-- 1 ahc users 54532 Nov 19 1998 e205-pdf.pdf
-rw-r--r-- 1 ahc users 898279 Jan 6 09:50 neotrl22.zip
226 ASCII Transfer complete.
3830 bytes received in 0.047 seconds G9.06 Kbytes/s)
ftp>
Команда dir не только выводит более подробную информацию о файлах, чем
команда Is, но и отображает скрытые файлы Unix (имена таких файлов
начинаются с символа «точка»).
ПРИМЕЧАНИЕ
В Unix список файлов выводится командами Is и dir, но команда dir выводит более подробную
информацию, включая дату последней модификации, владельца, привилегии и размер файла. При
подключении через FTP к системе Windows NT/2000 или Windows 9x команда Is работает несколько
иначе, и для получения списка файлов рекомендуется использовать команду dir.
После получения списка файлов наступает очередь следующей операции —
загрузки файла из удаленной системы на локальный компьютер. Сначала
желательно проверить локальный каталог и убедиться в том, что файл будет
сохранен в нужном месте:
ftp> Ipwd
/home/stripes
ftp>
Загруженные файлы будут храниться в домашнем каталоге, который
является текущим. Загрузка файлов выполняется командой get:
ftp> get notes
200 PORT command successful.
150 ASCII data connection for notes A.2.3.4,52264) B10 bytes).
226 ASCII Transfer complete.
local: notes remote: notes
226 bytes received in 0.019 seconds A1.81 Kbytes/s)
ftp>
Файл из удаленной системы сохраняется в локальной системе под тем же
именем, если только новое имя файла не было включено в команду get Для
этой цели используется следующий синтаксис:
get имя_удаленного_файла имя_локального_файла
Следовательно, если потребуется принять другой файл с именем notes, один
из файлов придется переименовать. После появления в локальной системе файла
notes переименовывается либо этот файл, либо удаленный файл на стадии
загрузки в локальную систему. В нашем примере второму загружаемому файлу
будет присвоено имя notes2. Имена локального и удаленного файлов
указываются в выходных данных FTP.
ftp> get notes notes2
200 PORT command successful.
150 ASCII data connection for notes A.2.3.4,52264) B10 bytes).
226 ASCII Transfer complete.
local: notes2 remote: notes
226 bytes received in 0.019 seconds A1.81 Kbytes/s)
ftp>
Файлы notes являются текстовыми. Из выходных данных видно, что FTP по
умолчанию использует пересылку данных в формате ASCII, то есть в текстовом
формате. А если потребуется переслать двоичный файл? Для этого следует
отдать FTP команду на изменение типа файла.
ftp> bin
200 Type set to I.
Двоичный формат обозначается кодом типа I, а текстовый формат — кодом
типа А. В частности, к категории двоичных файлов относятся исполняемые,
сжатые и библиотечные файлы. Двоичные файлы, в отличие от текстовых, не
предназначены для чтения.
После переключения типа можно переходить к пересылке двоичных файлов.
ftp> get vr40a.exe windowsfile.exe
200 PORT command successful.
150 Binary data connection for vr40a.exe A.2.3.4,52265) B338635 bytes).
226 Binary Transfer complete.
local: windowsfile.exe remote:vr40a.exe
2338635 bytes received in 1,4 seconds A593.23 Kbytes/s)
ftp>
В выходных данных FTP указано, в каком режиме происходит пересылка
данных — в двоичном или в режиме ASCII. Чтобы вернуться к текстовому типу
файла, введите команду ascii.
ftp> ascii
200 Type set to A.
ПРИМЕЧАНИЕ
Текстовые файлы следует пересылать в режиме ASCII, поскольку при этом учитываются
обозначения конца строки, действующие в разных операционных системах, с автоматическим выполнением
соответствующих преобразований. Например, в системах семейства Unix конец строки
обозначается одним символом <LF> (перевод строки). С другой стороны, в системах Windows
используется последовательность символов <CR><LF>, где <CR> — символ возврата курсора, a <LF> —
символ перевода строки. При пересылке файла из системы Unix в Windows в текстовом режиме
в конец каждой строки автоматически добавляется символ возврата курсора. И наоборот, при
пересылке файла в текстовом режиме из Windows в Unix лишние символы перевода строки в конце
строк удаляются.
Большие компьютеры используют кодировку EBCDIC вместо ASCII, поэтому для них вместо команды
ascii следует использовать команду ebcdic.
Пересылка двоичного файла в текстовом режиме приводит к ошибкам, поскольку она
сопровождается дополнительными преобразованиями строк, что может привести к появлению или удалению
символов возврата курсора в переданном файле. В результате подобных модификаций двоичные
файлы становятся неработоспособными.
Если вы ограничиваетесь пересылкой одного файла, все нормально работает.
Но что, если потребуется загрузить несколько файлов? Например, для загрузки
всех файлов, имена которых начинаются с символа «s», интуитивно хочется
воспользоваться командой get s*. К сожалению, результат будет следующим:
ftp> get s*
550 s*: No such file or directory
Чтобы протокол FTP распознавал метасимволы (также называемые
универсальными и подстановочными символами) в именах файлов, следует
воспользоваться командой mget:
ftp> mget s*
mget s3-Solaris.tar?
По умолчанию при каждом запросе на загрузку или пересылку нескольких
файлов клиент FTP запрашивает подтверждение. Чтобы принять все найденные
файлы, необходимо ввести у при каждом запросе на загрузку файла:
mget s3-Solaris.tar? у
200 PORT command successful.
150 ASCII data connection for s3-5olaris.tar B338635 bytes)
A27.0.0.1,52452) @ bytes).
226 ASCII Transfer complete.
mget sendmai1.8.9.2.tar.gz? у
200 PORT command successful.
150 ASCII data connection for sendmai1.8.9.2.tar.gz
A27.0.0.1.52453) @ bytes).
226 ASCII Transfer complete.
mget solsniffer.с? у
200 PORT command successful.
150 ASCII data connection for solsniffer.c
A27.0.0.1,52454) @ bytes).
226 ASCII Transfer complete.
mget spadell0.exe? y
200 PORT command successful.
150 ASCII data connection for spadell0.exe
A27.0.0.1,52455) (8192 bytes).
226 ASCII Transfer complete.
mget sun-sniff.с? у
200 PORT command successful.
150 ASCII data connection for sun-sniff.с
A27.0.0.1,52456) (8192 bytes).
226 ASCII Transfer complete.
ftp>
Однако постоянно отвечать у на все запросы утомительно, особенно при
большом количестве файлов. Чтобы пересылка осуществлялась автоматически,
введите команду prompt:
ftp> prompt
Interactive mode off.
Если теперь ввести ту же команду, пересылка выполняется без
подтверждений — а значит, будет выполнена гораздо быстрее:
mget s3-Solaris.tar? у
200 PORT command successful.
150 ASCII data connection for s3-Solaris.tar B338635 bytes)
A27.0.0.1,52458) @ bytes) .
226 ASCII Transfer complete.
200 PORT command successful.
150 ASCII data connection for sendmai1.8.9.2.tar.gz
A27.0.0.1,52459) @ bytes).
226 ASCII Transfer complete.
200 PORT command successful.
150 ASCII data connection for solsniffer.c
A27.0.0.1,52460) @ bytes).
226 ASCII Transfer complete.
200 PORT command successful.
150 ASCII data connection for spadell0.exe
A27.0.0.1,52461) (8192 bytes).
226 ASCII Transfer complete.
200 PORT command successful.
150 ASCII data connection for sun-sniff.с
A27.0.0.1,52462) (8192 bytes).
226 ASCII Transfer complete.
ftp>
Такой режим гораздо быстрее и удобнее, чем режим с интерактивным
подтверждением.
ПРИМЕЧАНИЕ
Если загрузка приводит к перезаписи ранее существовавшего файла, FTP не предупреждает вас
заранее.
От загрузки файлов мы переходим к пересылке файлов на удаленный сервер
FTP. Задача решается командой put:
ftp> mput h2obg.jpg
200 PORT command successful.
150 Binary data connection for h2obg.jpg A.2.3.4,52270)
226 Transfer complete.
local: h2obg.jpg remote: h2obg.jpg
1194 bytes sent in 0.019 seconds F0.82 Kbytes/s)
ftp>
Команда put пересылает локальный файл в удаленную систему. Для отправки
нескольких файлов используется команда mput:
ftp> mput dd*
mput debug.ssh? у
200 PORT command successful.
150 ASCII data connection for debug.ssh A.2.3.4,52266).
226 Transfer complete.
mput deshadow.c? у
200 PORT command successful.
150 ASCII data connection for deshadow.c A.2.3.4,52267).
226 Transfer complete.
ftp>
Как и в случае команды mget, следует выполнить команду prompt, чтобы вам
не пришлось отдельно подтверждать пересылку каждого передаваемого файла:
ftp> prompt
Interactive mode off.
ftp> bin
200 Type set to I.
ftp> mput k*
200 PORT command successful.
150 Binary data connection for kayaking.jpg A.2.3.4,52268).
226 Transfer complete.
200 PORT command successful.
150 Binary data connection for kay.tar A.2.3.4,52269).
226 Transfer complete.
ftp>
ПРИМЕЧАНИЕ
Чтобы операция выполнялась с несколькими файлами, достаточно поставить префикс «т» в начало
соответствующей команды (get, put или delete).
ПРИМЕЧАНИЕ
Перед тем как передавать файлы через FTP на удаленный сервер, необходимо получить право
копирования файлов. При входе на удаленный сервер FTP использует систему аутентификации этого
сервера. Таким образом, если вы регистрируетесь в системе под именем linda, на удаленном
сервере FTP должна существовать учетная запись linda. Чтобы пересылать файлы на сервер, этот
пользователь должен обладать правом записи в соответствующий каталог.
На серверах TFTP также необходимо позаботиться о том, чтобы файл с указанным именем уже
существовал и был перезаписан соответствующим файлом. Пользователь должен иметь доступ
к удаленной системе с привилегиями, достаточными для создания пустого файла. В системах Unix
пустой файл создается командой touch:
touch файл
Некоторые средства разработчика (например, компилятор Borland С ++ для Windows) также
включают Windows-версию утилиты touch.
Если вы хотите удалить файл в удаленной системе (и обладаете для этого
достаточными привилегиями), воспользуйтесь командой delete (допускается
сокращение команды до del):
ftp:> del h2obj.jpg
250 DELE command successful.
ftp>
Удаление нескольких файлов выполняется командой mdel. Как и в случае с
mget и mput, команда prompt отменяет интерактивное подтверждение удаления
по каждому файлу:
ftp> mdel s*
250 DELE command successful.250 DELE command successful.
250 DELE command successful.
ftp>
ПРИМЕЧАНИЕ
Как и при перезаписи файлов, FTP не предупреждает пользователя о стирании файлов в
удаленной системе.
Помимо перемещения файлов между удаленной и локальной системами, вы
также можете создавать и удалять каталоги. Каталоги создаются командой mkdir:
ftp> mkdir morestuff
257 MKD command successful.
Если вы забыли, какой каталог удаленной системы является текущим,
введите команду pwd:
ftp> pwd
257 Vhome/ahc/morestuff" is current directory.
При пересылке очень больших файлов рекомендуется включить
вспомогательный вывод. Взглянув на экран, вы будете знать, что пересылка идет
нормально, даже если ее результатов приходится дожидаться несколько минут или
часов. Вспомогательный вывод включается командой hash:
ftp> hash
Hash mark printing on (8192 bytes/hash mark)
Теперь при пересылке файла командой put или get вы сможете следить за
ходом процесса:
ftp> put sendmail.8.9.2.tar.gz
200 PORT command successful.
150 Binary data connection for sendmai1.8.9.2.tar.gz A.2.3.4,52271).
#################################################################
226 Transfer complete.
local: sendmail.8.9.2.tar.gz remote: sendmail.8.9.2.tar.gz
106534 bytes sent in 0.56 seconds A870.03 Kbytes/s)
ftp> pwd
Если вы завершили работу с сайтом, но не хотите выходить из клиента FTP,
достаточно просто закрыть подключение. Команда close разрывает связь с
удаленной системой, но оставляет клиента FTP в режиме интерпретации команд:
ftp> close
221 Goodbye.
ftp>
Приглашение ftp> по-прежнему готово к работе, поэтому вы можете открыть
подключение к другому хосту командой open:
ftp> open another-example.org
Connected to another-example.org
220 another-example.org FTP Server (SunOS 5.6) ready.
Name (localhost:ahc):
331 Password required for ahc.
Password:
230 User ahc logged in.
ftp>
На этот раз подключение устанавливается с совершенно другой системой.
В вашем распоряжении остаются те же команды, но состав файлов не имеет
ничего общего с первой системой.
После окончательного завершения работы с FTP следует ввести команду quit
или bye:
ftp> quit
221 Goodbye.
Безопасность при использовании FTP
Хотя служба FTP предназначается для работы с файлами, никто не хочет, чтобы
злоумышленники учинили хаос в его системе. Протокол FTP обладает базовыми
средствами управления доступом, но это не решает фундаментальных проблем
безопасности, связанных с использованием FTP.
Протокол FTP всегда использует аутентификацию на базе открытого
текста, то есть пароли пересылаются в сети в незашифрованном виде. Это создает
очень большие проблемы с безопасностью. Проблемы безопасности FTP также
обусловлены неправильной настройкой среды FTP с анонимным доступом,
когда посетители могут проникать в неположенные места, а также наличие двух
открытых портов на сервере FTP вместо одного, как в большинстве сетевых
служб TCP/IP.
Другой важный аспект безопасности FTP — применение для
аутентификации имени пользователя и пароля в локальной операционной системе (кроме
анонимного доступа). Передача пароля в виде открытого текста может привести
к тому, что данные учетной записи попадут в чужие руки.
Файл /etc/ftpusers
Файл /etc/ftpusers позволяет контролировать доступ к серверу FTP. В нем хранится
список пользователей, которые не могут использовать FTP (хотя это не мешает
пользователям работать с другими приложениями, включая rsh, telnet и ssh).
Типичный файл /etc/ftpusers выглядит примерно так:
tigerlaiг:/home/stripes- cat /etc/ftpusers
root
uucp
bin
После настройки файла /etc/ftpusers административные учетные записи, а
также нежелательные пользователи не смогут использовать FTP.
Файл .netrс
Файл .netrc предназначен для автоматизации входа на удаленный хост в
подключениях FTP. Файл находится в домашнем каталоге пользователя и
используется для подключения к различным системам без ввода имени и пароля. Файлу
.netrc должны быть присвоены права доступа 700 (чтение и запись файла не
разрешаются никому, кроме владельца).
Записи файла .netrc имеют следующий формат:
machine <компьютер> login <пользователь> password <пароль>
Следовательно, запись для example.org будет выглядеть примерно так:
tigerlair:/home/stripes- cat .netrc
machine example.org login ahc password stuff
Поскольку файл .netrc часто используется для регистрации в удаленных
системах, он может использоваться и для анонимных FTP-сайтов, которые в качестве
пароля принимают адреса электронной почты. Впрочем, анонимные FTP-сайты
предоставляют только общедоступную информацию — ничего такого, к чему
следовало бы допускать без пароля.
ВНИМАНИЕ
В современных условиях использовать файл .netrc не рекомендуется. Содержащиеся в нем пароли
могут быть прочитаны, что приводит к нарушению конфиденциальности данных учетной записи.
Другие клиенты FTP
В предыдущем примере рассматривался стандартный клиент FTP, входящий
в поставку таких операционных систем, как Unix, Windows и VMS. В этих
системах клиенты работают более или менее одинаково, но все же существуют
некоторые различия, рассматриваемые ниже.
Unix
Для системы Unix написаны два клиента FTP, превосходящие по своим
возможностям «базового» клиента FTP: Ncftp и xftp.
Клиент Ncftp автоматизирует анонимный вход на серверы FTP, поэтому
пользователю не приходится вводить пароль (адрес электронной почты) или
беспокоиться о конфиденциальности файла .netrc. Клиент обеспечивает
псевдографическое оформление со строкой состояния пересылки файла, а также дополнительные
удобства, в том числе редактирование командной строки. Ncftp можно загрузить
с сайта http://www.ncftp.com.
Программа xftp обеспечивает графический интерфейс к клиенту FTP.
Пользователь работает с клиентом, обходясь без прямого ввода команд в
интерактивном режиме. Окно программы xftp изображено на рис. 27.3. Программа xftp
загружается со страницы http://www.llnl.gov/ia/xdir_xftp/xftp.html.
laura III iiiyi* phoenbcxcfJlnl.gov i
connect Wr Select Ops,:-': j ||nnr Connect DJr Select Ops I 1
Otn llntxftpg.O -j |:.;уд:^|||[у ; Pin smith,'„j [ j
~8и.^>-,.^;:.'.'."■■■"..:, ,wiu ^ -?:'xferops ' -.. -jvjzz
[шашшпвиввн 11ш:>>*т>> 1 ] • 1|й|^ШШ^ммш# I
^ШШ^'Ш'Х^^Ш^ 1:1 ' г XfeVMode №^^.):^^^ "И
|~!?:?rf:-::i- f:?i?: ''•■■&. '' '"Н:'*"■"'■'■?'*''$*'>% 11 $ '■•'W Л%Я*11 j j ''"•\"_i'\x ■' $:*Z'&'.-: У УУ'\у '■ "..'-. =Г.::..'*.-*-*Г : •'•■';'■:■.'.' .:': }*?? ф\
l-vxSx'l.v/'•• • !-.<. ..:•....-.•. ■•:!'-"'••. . ..Л" ":'••!••!••!<! \ I : : I•"MfJV i.'v"".'.!'! ,>':,!-Л; '" I '"' |:J
еГ~~ **.*>"" "" iJ^' Л-Д. ■ , .PI ■ '"~%1а^-Л53 ' _|
| > 1 «w**..•■^:'.",:: :";"'—:—-::"M. r:1:-.1"-'":"? :':"'"" " ■"• ■—rrrr.—:':n i","""",":."• /u -.' • <"**' Щ
Рис. 27.3. Программа xftp с окном активного сеанса
Клиенты FTP для Windows и Macintosh
На платформах Windows и Macintosh тоже существуют свои клиенты FTP.
Многие из них имеют графический интерфейс, сходный с интерфейсом xftp и
позволяющий перемещать файлы между локальным и удаленным компьютерами
простым перетаскиванием мышью.
В некоторые реализации Windows входят клиенты FTP, работающие в режиме
командной строки. В других системах для работы с FTP используется программа
Internet Explorer, обладающая урезанными возможностями.
В табл. 27.3 приведен выборочный список клиентов FTP для Windows и
Macintosh.
Таблица 27.3. Клиенты FTP для Windows и Macintosh
Клиент FTP Web-сайт
WS-FTP Pro http://www.ipswitch.com
fetch http://www.dartmouth.edu/pages/softdev/fetch.html
CuteFTP http://www.cuteftp.com
FTPPro2000 http://www.ftppro.com
Электронная почта
Как ни странно, доступ FTP может работать даже по электронной почте. FTPmail
позволяет работать с FTP даже пользователям, имеющим доступ к Интернету
только по электронной почте. Любой пользователь может получать файлы с сайта
FTP, даже если он не может использовать FTP напрямую.
Некоторые серверы Интернета предоставляют пользователям сервис FTPmail.
На таких серверах создается учетная запись FTPmail, а пользователи включают
запросы FTP в сообщения электронной почты, адресованные этой учетной
записи (в запросах используются команды, аналогичные командам интерактивного
режима FTP).
При получении почтового запроса инициируется сеанс FTP, результаты
которого передаются пользователю по электронной почте. Если службе FTPMail не
удалось подключиться к серверу FTP, отправляется сообщение с объяснением причин.
Сервис FTPmail поддерживается многими серверами и доступен для всех
пользователей, работающих с электронной почтой.
В табл. 27.4 приведен список некоторых серверов FTPmail с указанием их
географического местонахождения.
Таблица 27.4. Серверы FTPmail
Сервер FTPmail Страна
ftpmail@grasp.insalyon.fr Франция
ftpmail@doc.ic.ac.uk Великобритания
ftpmail@decwrl.dec.com США
Серверы и демоны FTP
От клиентских программ FTP мы переходим к рассмотрению серверов FTP
и принципов их работы. Поскольку весь сервис FTP должен контролироваться
сервером, необходимо учитывать ряд основных правил, относящихся к работе
сервера FTP.
Unix и Linux
В Unix и Linux демон FTP in.ftpd обычно запускается супердемоном Интернета
inetd. Вместо in.ftpd подключения прослушиваются демоном inetd, тем самым
повышается безопасность управления подключениями. Дополнительная
информация о inetd приведена к главе 39.
В файл /etc/inetd.conf включается строка следующего вида:
ftp stream tcp nowait root /usr/sbin/in.ftpd. in.ftpd
Эта строка запускает in.ftpd. При вызове in.ftpd могут передаваться различные
параметры, в том числе -d (отладочный режим), -I (ведение журнала с
использованием syslogd) и -t (изменение продолжительности тайм-аута).
Windows NT/2000
В системах Windows 95/98 и NT/2000 также существуют свои серверы FTP.
К их числу относится сервер Serv-U (http://www/ftpserv-u.com) и демон War FTP
(http://www.jgaa.com/tftpd.htm).
Анонимный доступ FTP
Несмотря на популярность Web в современном мире, анонимные FTP-сайты
остаются важной частью Интернета. В Интернете существует бесчисленное
множество анонимных сайтов, на которых хранится различная информация, файлы
и программное обеспечение. Одним из самых популярных анонимных FTP-сай-
тов является сайт wuarchlve.wustl.edu.
Многие анонимные сайты предоставляют свободный доступ к файлам,
потому что они пытаются организовать распространение информации без хлопот,
связанных с назначением имен и паролей постоянно увеличивающемуся
количеству пользователей в Интернете.
Анонимные серверы FTP
Анонимный сервер FTP представляет собой общедоступное хранилище файлов.
Перед тем как основной движущей силой Интернета стала служба World Wide
Web, поиск файлов и информации в Интернете осуществлялся при помощи
gopher (интернет-приложение на базе меню) и FTP.
В результате анонимный сервис FTP стал чрезвычайно популярным и
продолжает широко использоваться в наши дни. Анонимные серверы FTP должны
функционировать в отдельной среде и дисковом пространстве, полностью
отделенной от системных файлов.
Например, в системе Unix существуют каталоги /usr и /etc. Такие же каталоги
существуют и на анонимном сервере FTP в системе Unix, однако каталоги /etc
системы Unix и анонимного сервера содержат разные файлы. Дело в том, что
доступ клиентов FTP ограничивается домашним каталогом учетной записи
пользователя ftp; обычно это каталог /home/ftp. Файлы каталогов /etc и /public сервера
FTP расположены внутри каталога /home/ftp и называются /home/ftp/etc и /home/
ftp/public.
Из этого следует, что системные файлы не хранятся в каталоге анонимного
сервера FTP. Этот участок файловой системы специально выделяется для соз-
дания среды, полностью отделенной от жизненно важных компонентов
операционной системы.
Анонимные клиенты FTP
При входе на анонимный сервер FTP пользователь обычно регистрируется под
именем «anonymous» или «ftp», а в качестве пароля вводится адрес электронной
почты (например, stripes@tigerlair.com).
Для анонимного сервиса FTP также устанавливаются ограничения доступа.
Обычно по соображениям безопасности пользователям разрешается обращаться
только к общедоступным файлам, а доступ к системным и конфигурационным
файлам блокируется.
Ниже приведен пример анонимного сеанса FTP с выдачей заставки
анонимного FTP-сайта.
tigerlair:/home/stripes- ftp wuarchive.wustl.edu
Connected to wuarchive.wustl.edu
220 wuarchive.wustl.edu FTP server (Version wu-2.4.2-academ[BETA-16]
A) Wed Apr 1 08:28:10 CST 1998) ready.
Name (wuarchive.wustl.edu:stripes): anonymous
331 Guest login ok, send your complete e-mail address as password.
Password:
230- If your FTP client crashes or hangs shortly after login please try
230- using a dash (-) as the first character of your password. This
230- will turn off the informational messages that may be confusing your
230- FTP client.
230-
230- This system may be used 24 hours a day, 7 days a week. The local
230- time is Wed May 26 12:02:37 1999. You are user number 23 out of a
230- possible 500. All transfers to and from wuarchive are logged. If
230- you don't like this then please disconnect.
230-
230- Wuarchive is currently a Sun Ultra Enterprise 2 Server.
230-
230- Wuarchive is connected to the Internet over a T3 D5 Mb/s) line from
230- STARnet and MCI. Thanks to both of these groups for their support.
230-
230- Welcome to wuarchive.wustl.edu, a public service of Washington
230- University in St.Louis, Missouri USA.
230-
230-
230-
230 Guest login ok, access restirctions apply.
Remote system type is Unix.
Using binary mode to transfer files.
ftp>
Из-за широкого распространения Web для работы с анонимными сайтами
вместо клиента FTP часто используется браузер.
ХЭВЕТ
В качестве пароля не обязательно вводить весь адрес электронной почты, достаточно ввести
первую часть (имя@). Например, вместо stripes@tigerlair.com достаточно ввести stripes®.
TFTP
Протокол TFTP (Trivial FTP) может использоваться для пересылки файлов
в локальной сети. Он использует транспортный протокол UDP и передает
данные через порт UDP с номером 69.
Поскольку TFTP не поддерживает никакой проверки регистрационных данных
пользователя, он создает немалое количество проблем безопасности. В
современных сетях он чаще всего применяется для пересылки списков доступа с рабочих
станций на маршрутизаторы и для настройки маршрутизаторов. Кроме того, TFTP
применяется для загрузки бездисковых систем посредством загрузки образа
системы с сервера TFTP. По сравнению с FTP этот протокол устроен проще
(хотя и обладает меньшими возможностями) и легче встраивается в ПЗУ
сетевых плат на бездисковых рабочих станциях.
ВНИМАНИЕ
Не используйте TFTP, если это не объясняется абсолютной необходимостью. При малейшей
невнимательности со стороны администратора этот протокол создает большие проблемы
безопасности, включая доступ к файлам паролей. По умолчанию доступ TFTP ограничивается каталогом
/tftpboot, что считается рудиментарной формой безопасности. Если отменить это ограничение,
клиент TFTP получит доступ к остальным частям файловой системы без прохождения
аутентификации. Это крайне опасная ситуация!
В настоящее время существует версия 2 протокола TFTP, ее спецификация
приведена в RFC 1350. В отличие от протокола FTP, использующего
транспортный протокол TCP, TFTP использует протокол UDP, поэтому он отличается
простотой и компактностью. Как и FTP, TFTP запускается через inetd.
Каждый обмен пакетами между клиентом и сервером начинается с
клиентского запроса к серверу на чтение или запись файла. Другие операции в TFTP
не поддерживаются.
Пересылка файлов производится в текстовом или в двоичном режиме. В
текстовом режиме строки данных представляют собой последовательность ASCII-
символов, завершенную символами возврата курсора и перевода строки (CR/LF).
Отличия TFTP от FTP
TFTP не обладает многими возможностями, поддерживаемыми FTP. В
частности, TFTP не позволяет использовать метасимволы, создавать или удалять
каталоги и даже отдельные файлы. Кроме того, TFTP не запрашивает имя
пользователя и пароль; следовательно, ограничение доступа должно производиться
другими средствами.
Благодаря своей простоте протокол TFTP используется маршрутизаторами
для пересылки списков доступа и конфигурационных данных маршрутизации.
Поскольку регистрация пользовательских данных на маршрутизаторах не
применяется (при отсутствии контроля доступа с применением TACACS+ или
RADIUS).
Команды TFTP
Тот, кто хорошо понимает принципы работы FTP, без труда разберется в TFTP.
Количество команд TFTP невелико, все команды перечислены в табл. 27.5. У
многих команд существуют прямые аналоги в протоколе FTP.
Таблица 27.5. Команды EFTP
Команда Описание
ascii Выбор текстового режима пересылки
binary Выбор двоичного режима пересылки
connect Подключение к удаленному серверу TFTP
mode Выбор режима пересылки файлов
put Пересылка файла на удаленный сайт
get Загрузка файла с удаленного сайта
quit Завершение работы с TFTP
rexmt <значение> Установка интервала тайм-аута пакетного уровня
status Вывод информации о состоянии сервера
timeout <секунды> Установка тайм-аута пересылки (в секундах)
trace Включение трассировки пакетов
verbose Разрешение/запрет расширенного вывода
Итоги
Протоколы пересылки файлов играют важную роль в обмене информацией между
системами в сетях TCP/IP. Двумя основными протоколами, используемыми
для пересылки файлов в сетях TCP/IP, являются протоколы FTP и TFTP.
Протокол FTP использует в качестве транспортного протокола TCP и
открывает два порта: порт 20 (порт данных) и порт 21 (управляющий порт). Порт
данных используется только для пересылки файлов, а управляющий порт
используется для отправки команд и сообщений.
Протокол TFTP, использующий транспортный протокол UDP,
ограничивается открытием одного порта с номером 69. Протокол TFTP гораздо проще FTP
и не поддерживает многие из его возможностей. Тем не менее TFTP часто
применяется для передачи списков доступа и конфигурационных данных на
маршрутизаторы. Кроме того, он используется для загрузки бездисковых систем.
Следующая глава посвящена протоколу Telnet. В ней вы познакомитесь с
другой разновидностью интерактивных сетевых служб TCP/IP.
*ЪО Telnet
Нил С. Джеймисон (Neal S.Jamison)
Хотя эмуляция терминала в наши дни уже не пользуется такой популярностью,
как раньше, она остается необходимым средством для работы в
многопользовательских системах. Telnet также является базой для других протоколов —
например, для X-Window при установке сеанса с клиентом X. Telnet относится
к категории «тонких клиентов», поскольку все выполнение происходит на
сервере Telnet. Кроме того, Telnet часто используется в качестве диагностического
средства. В настоящей главе рассматриваются средства эмуляции терминала
в Интернете: протокол TCP/IP Telnet и сопутствующие программы.
Знакомство с протоколом Telnet
Telnet — один из самых ранних протоколов TCP/IP. Достаточно интересную
информацию по этой теме можно найти в RFC 15 (документ написан в 1969 году!).
Текущая спецификация Telnet приводится в RFC 854.
Протокол Telnet предназначался для упрощения подключений к удаленным
хостам. Например, для подключения к мэйнфрейму IBM требовались терминалы
IBM, а если мэйнфрейм был выпущен фирмой DEC — приходилось
использовать терминалы DEC. Рисунок 28.1 поясняет ситуацию.
Возникла необходимость в службе эмуляции терминала, которая бы заменила
все специализированные языки управления терминалами. В этом случае
пользователь мог бы находиться за одним терминалом и подключаться к разным
удаленным хостам. Так появился протокол Telnet.
Telnet — стандартный прикладной протокол Интернета, предназначенный
для входа на удаленные хосты. Он обеспечивает механизм шифрования и
другой сервис, необходимый для подключения пользовательской системы к
удаленному хосту.
Telnet использует надежный транспорт TCP, поскольку он должен
поддерживать надежную, стабильную связь. По умолчанию сервер TCP/IP прослушивает
хорошо известный порт TCP с номером 23. Клиент Telnet может быть настроен
на подключение к любому другому порту, на котором работает другая служба.
Это позволяет использовать клиента Telnet для передачи команд конкретным
службам приложений и для целей диагностики.
Терминал ^
IBM 1 J
Терминал И Мэйнфрейм IBM
IBM I J
Терминал И
IBM
Терминал П
HFC] I J
Терминал П Мэйнфрейм DEC
DFC| 1 J
Терминал П
DEC
Терминал П
XY7 I J
Терминал П Мэйнфрейм XYZ
XY7 I J
Терминал \
XYZ
Рис. 28.1. Жесткая структура распределения терминалов до создания Telnet
Telnet может работать в следующих режимах:
О полудуплексный;
О посимвольный;
О построчный;
О локальный.
Полудуплексный режим считается устаревшим.
В посимвольном режиме каждый вводимый символ немедленно передается
удаленному хосту для обработки, а затем возвращается клиенту. В медленных
сетях этот режим создает раздражающие задержки, но во многих реализациях
он используется по умолчанию.
В построчном режиме текст проходит локальный эхо-вывод, а законченные
строки передаются удаленному хосту для обработки.
В локальном режиме обработка символов производится в локальной системе
под контролем удаленной системы.
Дополнительная информация о Telnet приведена в следующих RFC:
О RFC 15, «Network subsystem for time sharing hosts», C.S. Carr, 1969 r.
О RFC 854, «Telnet Protocol Specification», J. Postel, J.K. Reynolds, 1983 r.
О RFC 855, «Telnet Option Specifications», J. Postel, J.K. Reynolds, 1983 r.
О RFC 856, «Telnet Binary Transmission», J. Postel, J.K. Reynolds, 1983 r.
О RFC 857, «Telnet Echo Option», J. Postel, J.K. Reynolds, 1983 r.
О RFC 858, «Telnet Suppress Go Ahead Option», J. Postel, J.K. Reynolds, 1983 r.
О RFC 859, «Telnet Status Option», J. Postel, J.K. Reynolds, 1983 r.
О RFC 860, «Telnet Timing Mark Option», J. Postel, J.K. Reynolds, 1983 r.
О RFC 861, «Telnet Extended Options: List Option», J. Postel, J.K. Reynolds, 1983 r.
О RFC 1123, «Requirements for Internet hosts — application and support»,
R.T. Braden, 1989 r.
О RFC 1184, «Telnet Linemode Option», D.A. Borman, 1990 r.
О RFC 1205, «Telnet Interface», P. Chmielewski, 1991 r.
О RFC 1372, «Telnet Remote Flow Control Option», С Hedrick, D. Borman, 1992 r.
О RFC 1408, «Telnet Environment Option», D. Borman, 1993 r.
О RFC 1411, «Telnet Authentication: Kerberos Version 4», D. Borman, 1993.
О RFC 1412, «Telnet Authentication: SPX», K. Alagappan, 1993 r.
О RFC 1416, «Telnet Authentication Option», D. Borman, 1993 r.
О RFC 1571, «Telnet Environment Option Interoperability Issues», D. Borman, 1994 r.
О RFC 1572, «Telnet Environment Option», S. Alexander, 1994 r.
О RFC 2066, «TELNET CHARSET Option», R. Gellens, 1997 r.
О RFC 2217, «Telnet Com Port Control Option», G. Clark, 1997 r.
Некоторые RFC, посвященные Telnet, содержат менее серьезную информацию:
О RFC 748, «Telnet randomly-lose option», M.R. Crispin, 1978 r.
О RFC 1097, «Telnet subliminal-message option», B. Miller, 1989 r.
Виртуальный терминал
В повседневной работе используется множество разнотипных компьютеров с
разными клавиатурами и другими устройствами ввода данных, поэтому Telnet
приходится решать нетривиальную задачу. Устройства ввода и компьютеры говорят
на разных «языках», от различных диалектов ASCII до EBCDIC, что существенно
затрудняет взаимодействие между ними. Для упрощения этой задачи была
разработана концепция виртуального термина (NVT, Network Virtual Terminal).
Структура логических связей между клиентами, серверами и соответствующими
виртуальными терминалами представлена на рис. 28.2.
Виртуальный терминал получает данные, вводимые в клиентской системе,
и переводит их на универсальный «язык». Получаемые данные переводятся с
универсального языка на специализированный язык, воспринимаемый хостом.
J Мэйнфрейм IBM
Хост с Telnet \>^
I NVT I N. """"""" 4 Мэйнфрейм DEC
N Мэйнфрейм XYZ
Рис. 28.2. Telnet и NVT упрощают подключение терминалов к различным хостам
Виртуальные терминалы позволяют любому специализированному клиенту
взаимодействовать с любым специализированным хостом.
Демон Telnet
Как и другие службы TCP/IP, работающие по схеме «клиент-сервер», для
обработки клиентских запросов в системе должен быть запущен демон Telnet.
В семействе Unix этим демоном является сервер Telnet, обрабатывающий запросы
клиента Telnet. По умолчанию демон Telnet работает на порте 23.
Ниже приведено описание синтаксиса и параметров in.telnetd,
позаимствованное из электронной документации операционной системы Linux. За
дополнительной информацией, относящейся к конкретной реализации, обращайтесь к
печатной или электронной документации вашей операционной системы.
/usr/sbin/in.telnetd [-hns] [-а режим_аутен] [-D режим_отладки]
[-L прог_журнал] [-S tos] [-X тип_аутен] [-е debug] [-debug порт]
Параметры:
О -а режим_аутен — режим, используемый при аутентификации. Параметр
используется только в том случае, если демон telnetd был откомпилирован с
поддержкой аутентификации. Параметр режим jxymen может принимать
следующие значения:
□ debug — отладка процедуры аутентификации;
□ user — подключение осуществляется только в том случае, если удаленный
пользователь предоставляет действительную информацию, необходимую
для идентификации, и обладает правом доступа к указанной учетной
записи без предоставления пароля;
□ valid — подключение осуществляется только в том случае, если удаленный
пользователь предоставляет действительную информацию, необходимую
для идентификации;
□ other — подключение осуществляется только в том случае, если
удаленный пользователь предоставляет некоторую информацию, необходимую
для идентификации;
□ попе — используется по умолчанию. Предоставление данных для
аутентификации не обязательно;
□ off — код аутентификации полностью блокируется.
О -D режим_отладки — используется в отладочных целях. Параметр позволяет
telnetd выводить отладочную информацию о подключении, по которой
пользователь может следить за работой telnetd. Параметр режим_отладки может
принимать следующие значения:
□ options — вывод информации о согласованных параметрах Telnet;
□ report — вывод сведений о параметрах, а также дополнительной
информации о том, что происходит в системе;
□ netdata — вывод потока данных, принимаемого telnetd;
□ ptydata — вывод информации, выводимой на псевдотерминал.
О -е debug — включение отладки шифрования.
О -h — подавление вывода информации о хосте перед завершением входа в
систему.
О -L прог__журнал — параметр может использоваться для смены программы
ведения журнала (по умолчанию используется /bin/login).
О -п — запрет поддержания соединений TCP. В обычной ситуации telnetd
позволяет механизму поддержания соединений TCP «зондировать»
подключения, у которых в течение некоторого времени отсутствовал обмен данными.
Такая проверка выполняется для того, чтобы из системы своевременно
удалялись бездействующие подключения от «зависших» или недоступных
компьютеров.
О -s — параметр доступен только в том случае, если демон telnetd был
откомпилирован с поддержкой карт SecurlD. Параметр -s передается login и реально
используется только в том случае, если login поддерживает флаг -s,
указывающий, что вход в систему допускается только при проверке SecurlD. Обычно
эта возможность используется для управления удаленными подключениями
из-за брандмауэра.
О -S tos — параметру типа службы IP (Type of Service) для подключения Telnet
присваивается заданное значение.
О -X munjxymen — параметр используется только в том случае, если демон
telnetd был откомпилирован с поддержкой аутентификации. Он запрещает
применение аутентификации заданного типа и может использоваться для
временного подавления без необходимости перекомпилировать telnetd.
Использование Telnet
Протокол Telnet очень прост в работе. Его применение состоит из трех очень
простых этапов:
О Запуск клиента Telnet (инициирование сеанса).
О Ввод имени пользователя и пароля.
О Завершение сеанса после выполнения всех необходимых действий.
Telnet работает в двух режимах: в режиме ввода и в командном режиме.
Впрочем, в большинстве случаев взаимодействие пользователя с Telnet
ограничивается запуском/завершением сеанса и работой с удаленной операционной
системой или программой в режиме ввода.
Команда telnet в системе Unix
Ниже рассматривается синтаксис и параметры реализации telnet в
операционной системе Linux. Многие реализации очень похожи на нее, однако за
подробной информацией о команде telnet для вашей системы следует обращаться к
печатной или электронной документации. Синтаксис команды telnet:
telnet [-8ELadr] [-S tos] [-e экран_символ] [-1 пользователь]
[-n файл_трас] [хост [порт]]
Параметры:
О -8 — запрос на использование 8-разрядного режима.
О -Е — запрет использования экранирующих символов.
О -L — 8-разрядные выходные данные.
О -а — попытка автоматического входа в систему при подключении. Имя
пользователя передается в переменной USER, если такая возможность
поддерживается удаленным хостом.
О -d — флаг отладки инициализируется значением TRUE.
О -г — эмуляция rlogin.
О -S tos — параметру типа службы IP (Type of Service) для подключения Telnet
присваивается заданное значение.
О -е экрап_символ — заданный символ используется в качестве
экранирующего.
О -I пользователь — имя пользователя, используемое при входе в удаленную
систему. Параметр сходен с параметром -а.
О -п файл_трас — заданный файл открывается для записи трассировочных
данных.
О хост — хост, с которым устанавливается связь по сети.
О порт — номер порта или имя службы для установки связи. Если значение не
задано, используется хорошо известный порт с номером 23.
Графические клиенты Telnet
Графические клиенты упрощают работу с Telnet на других платформах. В среде
Windows широко распространены программы Microsoft Telnet и CRT. Microsoft
Telnet входит в комплект поставки операционных систем Microsoft Windows
(Windows NT/2000, Windows 98 и т. д.). Программа CRT (VanDyke Technologies)
распространяется условно-бесплатно и присутствует на многих сайтах с
условно-бесплатным программным обеспечением Windows.
Два этих приложения в действии изображены на рис. 28.3 и 28.4.
У ' дШ - ^-МнаоЙ$©?:.• i: • • 1 j
р •■•^^^ов^ j J
| ^'■ ■ У^Щ^Щ^^^^^^ 1 I
I х;/^ ] j
:; 1,,^ т., liiHiiiiiriniЛимитна;! I :]
Рис. 28.3. Распространенное приложение Microsoft Telnet
ЙШ*1-1Д -■?-::.Г:-;7 ;•
1 * 11
| Ь&:Й: Ш:к:^ {:\;::^"Mww.y^c|vkeLCom' I 11
| ХШр@(ккА^Ъег^ей^о:цШ':'.-:<:.:/ I II
I •; ■; ш иш;..v-isй}}>Ш&Ш, . •. • . :.= I]
II ▼ ] 1
[Ready; У.';'-у .;::;/, , '•".•.••.• 6::.':^.?Щ^ЩЩ-$^^
Рис. 28.4. Другая популярная программа эмуляции терминала CRT
(разработчик — Van Dyke Technologies, Inc.)
Команды Telnet
Благодаря простому пользовательскому интерфейсу Telnet типичному
пользователю обычно не приходится вводить команды, приведенные ниже. Как
упоминалось выше, большая часть сеанса Telnet (а то и весь сеанс) проходит в режиме
ввода, то есть за непосредственным взаимодействием с удаленной операционной
системой или программой. Некоторые команды (такие, как TOGGLE) пригодятся
опытным пользователям и системным администраторам при диагностике проблем.
Чтобы получить список команд Telnet, введите команду HELP в режиме
командной строки. Пример:
$ telnet
telnet> help
Commands may be abbreviated. Commands are:
close close current connection
logout forcibly logout remote user and close the connection
display display operating parameters
mode try to enter line or character mode ('mode ?' for more)
open connect to a site
quit exit telnet
send transmit special characters ('send ?' for more)
set set operating parameters ('set ?' for more)
unset unset operating parameters ('unset ?' for more)
status print status information
toggle toggle operating parameters ('toggle ?' for more)
sic set treatment of special characters
z suspend telnet
environ change environment variables ('environ ?' for more)
telnet>
Чтобы получить справку по конкретной команде, введите имя команды и
вопросительный знак, как показано ниже:
telnet> mode ?
format is: 'mode Mode', where 'Mode' is one of:
character Disable LINEMODE option
(or disable obsolete line-by-line mode)
line Enable LINEMODE option
(or enable obsolete line-by-line mode)
These require the LINEMODE option to be enabled
isig Enable signal trapping
-isig Disable signal trapping
edit Enable character editing
-edit Disable character editing
softtabs Enable tab expansion
-softtabs Disable tab expansion
litecho Enable literal character echo
-litecho Disable literal character echo
? Print help information
telnet>
В табл. 28.1 приведен полный набор команд Telnet.
ПРИМЕЧАНИЕ
Описания команды и параметров Telnet, приведенные в табл. 28.1—28.3, взяты из электронной
документации telnet операционной системы Linux. За информацией, специфической для вашей
реализации, обращайтесь к печатной или электронной документации операционной системы.
Таблица 28.1. Команды Telnet
Команда Описание
CLOSE Закрытие подключения к удаленному хосту
DISPLAY Вывод заданных параметров работы
ENVIRON Изменение переменных окружения
HELP (или ?) Вывод справочной информации (для получения справки по отдельным
командам используется запись команда ?)
LOGOUT Принудительное отключение удаленного пользователя с закрытием
подключения. Аналог команды CLOSE
MODE Запрос на переход в построчный или посимвольный режим
OPEN Открытие подключения к удаленному хосту
QUIT Закрытие сеанса с выходом из Telnet
SEND Передача служебной последовательности символов (см. табл. 28.3)
SET Установка рабочих параметров. См. также UNSET
SLC Назначение определения и/или интерпретации специальных символов
STATUS Вывод текущей информации состояния — имени хоста, режима и т. д.
TOGGLE Переключение рабочих параметров. Список основных параметров приведен
в табл. 28.2
UNSET Сброс рабочих параметров. См. также SET
Z Приостановка Telnet (выполнение продолжается командой fg)
! [команда] Выполнение заданной команды в командном интерпретаторе. Если команда
не указана, запускается новый экземпляр интерпретатора
Некоторые команды Telnet — такие, как TOGGLE и SEND — требуют
дополнительных параметров. В табл. 28.2 перечислены некоторые распространенные параметры
команды TOGGLE, а в табл. 28.3 приводится список параметров команды Telnet SEND.
Команда TOGGLE переключает заданный параметр в противоположное
логическое состояние (из TRUE в FALSE, и наоборот).
Таблица 28.2. Некоторые распространенные параметры команды Telnet TOGGLE
Параметр Описание
debug Переключение режима отладки уровня сокетов. Начальное значение
параметра равно FALSE
skiprc Если параметр skiprc равен TRUE, Telnet не читает файл .telnetrc.
Начальное значение параметра равно FALSE
? Вывод списка допустимых параметров TOGGLE
Команда SEND используется для передачи команд и параметров удаленному
хосту. В табл. 28.3 перечислены параметры команды SEND.
Таблица 28.3. Параметры команды Telnet SEND
Параметр Описание
EOF Конец файла
SUSP Приостановка текущего процесса
ABORT Отмена процесса
EOR Конец записи
SE Конец подпараметра
NOP Нет операции
DM Метка данных
BRK Прерывание
IP Прерывание процесса
АО Отмена вывода
AYT Проверка связи
ЕС Экранирующий символ
EL Стирание строки
GA Вперед
SB Начало подпараметра
WILL Согласование параметра
WONT Согласование параметра
DO Согласование параметра
DONT Согласование параметра
IAC Байт данных 255
Примеры использования Telnet
Следующий пример демонстрирует процедуру согласования, которая обычно
проходит незаметно для пользователя. Расширенный вывод обеспечивается
командой TOGGLE OPTIONS:
% telnet
telnet> toggle options
Will show option processing.
telnet> open hostl.mydomain.com
Trying...
Connected to hostl.mydomain.com.
Escape character is ,Л]'.
SENT DO SUPPRESS GO AHEAD
SENT WILL TERMINAL TYPE
SENT DO SUPPRESS GO AHEAD
SENT WILL NAWS
SENT WILL TSPEED
SENT WILL LFLOW
SENT WILL LINEMODE
SENT WILL NEW-ENVIRON
SENT DO STATUS
RCVD DO TERMINAL TYPE
RCVD DO TSPEED
RCVD DO XDISPLOC
RCVD WONT XDISPLOC
RCVD DO NEW-ENVIRON
RCVD WILL SUPPRESS GO AHEAD
RCVD DO NAWS
SENT IAC SB (terminated by -1 -16, not IAC SE!) NAWS 0 95 (95) 0 29 B9)
RCVD DO LFLOW
RCVD DON'T LINEMODE
RCVD WILL STATUS
RCVD IAC SV (terminated by -1 -16. not IAC SE!) TERMINAL-SPEED SEND
RCVD IAC SV (terminated by -1 -16, not IAC SE!) ENVIRON SEND
RCVD IAC SV (terminated by -1 -16. not IAC SE!) ENVIRON IS
RCVD IAC SV (terminated by -1 -16, not IAC SE!) TERMINAL-TYPE SEND
RCVD DO ECHO
RCVD WONT ECHO
RCVD WILL ECHO
SENT DO ECHO
Access to this system is restricted to authorized users only,
login:
Дополнительные возможности Telnet
В этом разделе рассматриваются некоторые интересные аспекты Telnet —
безопасность, приложения на базе Telnet и использование Telnet для работы с
другими популярными службами TCP/IP.
Безопасность
Telnet, как и все программы и приложения TCP, создает определенные проблемы
в области безопасности. Тем не менее существует целый ряд инструментов,
которые помогают обезопасить использование Telnet или заменить его другими
средствами.
TCP Wrappers
Пакет TCP Wrappers (иногда называемый tcpd) представляет собой набор
инструментов, работающих на базе демонов TCP (таких, как in.telnetd) и
обеспечивающих сервис мониторинга и фильтрации в программах TCP. При помощи
TCP Wrappers систему можно настроить таким образом, чтобы она отвечала
только на запросы Telnet, поступающие от заданных компьютеров или доменов.
Автором TCP Wrappers является Витце Венема (Wietse Venema).
В некоторых операционных системах функциональность TCP Wrappers
реализуется на внутреннем уровне. В других системах вам придется загрузить и
установить TCP Wrappers самостоятельно. В следующем подразделе описан
процесс настройки файлов /etc/hosts.allow и /etc/hosts.deny для TCP Wrappers.
Настройка файлов /etc/hosts.allow и /etc/hosts.deny
Файлы /etc/hosts.allow и /etc/hosts.deny используются при организации доступа
к хосту, в том числе и программой TCP Wrappers, для определения того, кому
разрешено или запрещено выполнение некоторых команд на компьютере.
Например, файл hosts.deny может содержать запись
In.telnetd: AU
тогда как в файле hosts.allow будет находиться запись
in.telnetd: *.mydomain.com
В этом примере запись в файле hosts.deny запрещает доступ к Telnet всем
пользователям, а запись в файле hosts.allow разрешает доступ с хостов домена
mydomain.com.
За дополнительной информацией о TCP Wrappers обращайтесь по адресу
ftp://ftp.porcupine.org/pub/security/index.html.
Secure Shell
Secure Shell (SSH) является безопасной альтернативой для Telnet. Благодаря
использованию механизмов шифрования типа DES (Data Encryption Standard)
и механизма аутентификации хостов RSA SSH защищает хосты от некоторых
стандартных атак — таких, как фальсификация IP и перехват паролей. SSH
создает между клиентом и сервером виртуальную частную сеть (VPN).
Для некоммерческого использования SSH распространяется бесплатно. За
дополнительной информацией о SSH обращайтесь по адресам http://www.ssh.fi/
sshprotocols2/ и www.openssh.org.
Приложения Telnet
Telnet часто используется для работы с удаленными приложениями. В индексе
Hytelnet хранится информация о библиотеках и других ресурсах, доступных
через Telnet. Хотя по популярности и простоте использования на первое место
вышла служба World Wide Web, многие из этих сайтов по-прежнему доступны
для пользователей.
На рис. 28.5 и 28.6 показана программа Hytelnet 6.9 для Windows.
С Hytelnet также можно работать через Web по адресу http://www.ljghts.com/
hytelnet.
Среди других приложений Telnet можно упомянуть интерфейсы для Whois
и Finger. Дополнительная информация приведена в главе 26.
|8ВН5ЕСД!Е5!Ш
gte &fc Search $&*** Ф*,.;;! .,';• £ * Л,'^"','•••.,'■■■:--!"'■■■••' •;:•••-'' Vr^v^'iC ' ;-'У:
|ss.:- '• • • • ,. /:::. ,f •: • ••• •:!:.!. K)gE^^«^i»ft • ;6^^; ■ • ^i ;• 4 ■ • .а Щ1^.|ЙЙ A.|fij
г " • C* dfesiWi to. ***te£f'U8o^
indorsation «it©* 4ltp&*2A*t, specifically tbo*« ««»**» who? j
I •■ •■ «cces* Teloot ш^IМм or tbe «tMMwt-f«**••£%:.-IBH^r-'•• J I
Г compatible personajLso^pufcerv.. :/..'; ••. Jvf^.:;, \.{-'\ \
I : When loaded* НУТЕЬНШ i* «mrwrj^residettt. Once loaded hitj 1
' Control* JB*etep«wi^;^tl4***- tl».,|^«r*»* T«^S3««v^'il»S j
• • ЙЫЧТ- while in• t^;:|^^w*». . :::.::'::::у I j
[ . : ■ t>or indorsation on см*Ш№Щ( the pMhriM* •••^'ffjf^fr -^fofefov.:::: ] j
I . For «ccessible tih*mx#M'&Wb catalog* ... "• Y<MTBW>"---^£?-:;\^»l j
[ .'" .For other in£eJW*tlonj*^^J:^:f;; 7",<">',.^it«2>™^^s^:-%?1,^.j j
. - Fa* extra information on ifladiftjr the pro#rdiq and bow :Ы#£:Ь^:У| 1
.;• • oonta*^tb» authorf^^ j
! £revio«* item ^йщ Hytelnet for Windows $*>*9хИ
I <<Jg^ck«w*d1 '—*-"-—j FaqeiAj^iJj * p".w:.^... 1
Рис. 28.5. Справочная информация о Hytelnet для Windows
jfo £drt jeartth gptiom #ф •,.■■" ,; Ч:Щ;^ :; ' '■ .■' / ' ■'■ 2\ : I
j" — - -....,, T-^'[4ix^'iM'fi»^J^7"'''" y;:;:T''-'™ -"""M ~~|>j|
teelnet vtls*vt.ed« or %&:*Х&'ф±Ь*?-?:*Щ$$£г/<Г- :.:-;:" ;U-M
Hit: <KHTUHH> one* or -twi^ey. • . ^ 1Шж Щ 1
I It о exit, |||ИИ1РуР»1ТЦ|1 i и^^^^^^^^^^^^^^^^^^^^^^^^^^^^д l ^i | j|
L:h£- -= 1 ЗЙЙft~l>>1*15Г#SiielM'jj ;:T '. "" """T7":,'Hi
I • •;. .• ;• ]4.4 BSD UNIX (artewis.cc.vt.edu) <16) '"""Ц j
|:<::'':':^::'::й:;Ш:*%-;::||* * j
ЬЗ:'Щ^Я|« Welcome to VTLS « j
hbSSlSI* {Release 1999) * j
ШШМ$*£Ш* VTLS is e proprietary library software product * j
Ш:|Щ1Щ|* of VTLS, Inc., Blacksburg, Virginia 24060, USA. • j
||Щ||||||||* Copyright <c> 1984, VTLS Inc. fill rights reserved. « J
M :•' 1* * ,:i
I ft^Ilfll WELCOME to Addison Щ
v '<.< fi.a«i«w| Virginia Tech Libraries Online Catalog щ1
p .':'.:1i;:t|l Please enter '/QUIT' to exit... 'Щ
| LOCATION is NEWMAN ЦЛ
|] Enter уН||
||/HELP.......General help HELP...About this screen Any new command *~1 J
!l 3
Рис. 28.6. Обращение к электронной библиотеке при помощи
программ Hytelnet для Windows и CRT
Работа с другими службами TCP/IP через Telnet
Хотя для выполнения своих основных функций Telnet использует порт TCP
с номером 23, демон Telnet прослушивает и отвечает на запросы, поступающие
на другие хорошо известные порты TCP. Это позволяет использовать Telnet в
сочетании с другими службами TCP/IP. В табл. 28.4 приведены номера портов
для некоторых стандартных служб TCP/IP, доступных через Telnet.
Таблица 28.4. Порты основных служб, доступных через Telnet
Служба Порт
FTP 21
SMTP 25
Whois 43
Finger 79
HTTP 80
Для подключения к этим службам через Telnet используется команда вида
telnet хост порт
или
telnet хост служба
Во втором случае вместо номера порта указывается имя службы — например,
SMTP вместо номера 25. Сервер Telnet на хосте находит номер службы в
системном файле (в большинстве реализаций Unix это файл /etc/services) и открывает
подключение к порту, соответствующему заданной службе. В следующем разделе
процедура открытия порта по имени службы поясняется конкретным примером.
Отправка почты через Telnet
Telnet может использоваться для подключения к хорошо известному порту SMTP
с номером 25. Администраторы и лица, ответственные за работу почты, часто
поступают подобным образом для диагностики проблем с электронной почтой.
В следующем примере Telnet используется для подключения к порту SMTP
и выполнения команды VRFY. За дополнительной информацией о SMTP
обращайтесь к главе 35.
$ telnet host.mydomain.com SMTP
Trying...
Connected to host.mydomain.com.
Escape character is ,A]'.
220 host.mydomain.com ESMTP Sendmail 8.8.8+Sun/8.8.8; 8 Aug 1999 17:14
vrfy jamisonn
250 Neal Jamison <jamisonn@host.mydomain.com>
qui t
221 host.mydomain.com closing connection
Connection closed by foreign host.
Выполняя нужные команды SMTP, вы даже сможете отправлять сообщения.
Finger
Протокол Telnet также позволяет подключиться к порту Finger G9) удаленного
хоста, как это сделано в следующем примере:
$ telnet hostl.mydomain.com 79
Trying...
Connected to hostl.mydomain.com.
Escape character is ,Л]'.
jamisonn
Login: jamisonn Name: Neal Jamison
Directory: /users/home/jamisonn Shell: /bin/tcsh
On since Sun Aug 8 17:16 (EDT) on ttyp7 from роо118Э-68
No mail.
No Plan.
Connection closed by foreign host.
После создания подключения вводится однострочный запрос (jamisonn).
Сервер Finger отвечает на полученный запрос. Подключение через Telnet может
пригодиться в том случае, если вам придется работать в среде без клиента Finger.
За дополнительной информацией о Finger обращайтесь к главе 29.
Работа в Web через Telnet
Как показывает следующий пример, Telnet также может использоваться для
подключения к порту HTTP (80) web-сервера.
$ telnet mywebserver.com 80
Trying...
Connected to mywebserver.com.
Escape character is ,Л]'.
GET /
<HTML>
<HEAD>
<TITLE>Makoa Corporation</TITLE>
</HEAD>
<BODY>
<Hl>Welcome to the Makoa Corporation</Hl>
<p>
This is the homepage of Makoa Corporation.
<br><br>
</BODY>
</HTML>
Connection closed by foreign host.
После установления связи вводится команда HTTP GET /, запрашивающая
корневой документ web-сервера. Если вы не умеете интерпретировать код HTML
так же хорошо, как ваш браузер, вряд ли вам удастся применить полученный
результат на практике. В данном случае он приводится только для пояснения
материала, а также для проверки того, что сервер HTTP нормально работает на
порте TCP с номером 80. За дополнительной информацией о HTTP
обращайтесь к главе 26.
Итоги
В этой главе подробно описан протокол эмуляции терминала Telnet, входящий
в семейство протоколов TCP/IP. Протокол Telnet решил проблему
несовместимости терминалов, столь распространенную на стадии становления Интернета.
Благодаря Telnet и концепции виртуального терминала научные работники и
студенты обходились одним компьютерным терминалом, который при
необходимости подключался к разным хостам.
Далее был рассмотрен синтаксис и параметры запуска стандартного клиента
и сервера Telnet для системы Unix. Также были приведены описания команд
Telnet (которые, впрочем, редко применяются конечными пользователями).
Глава завершается кратким описанием проблем безопасности и приложений
Telnet. Читатель узнает, как использовать Telnet для подключения к другим
службам TCP/IP (таким, как почта SMTP, Finger и HTTP) и работы с ними.
Глава также содержит полный список документов RFC, относящихся к Telnet,
включая исходную спецификацию: RFC 15 от 1969 года.
^%С| Инструментарий
•■ *г удаленного доступа
Нил С. Джеймисои (Neal S.Jamison)
Как вы уже знаете, термин TCP/IP объединяет целое семейство протоколов,
обеспечивающих обмен информацией между компьютерами. Тем не менее для
построения объединенной сети одних коммуникационных протоколов
недостаточно. В дополнение к ним необходимы программы прикладного уровня, которые
используют протоколы и службы TCP/IP и обеспечивают обмен данными на
высоком уровне. В этой главе рассматривается конкретное семейство программ,
используемых при различных типах взаимодействия с удаленными компьютерами.
R-команды
Набор утилит с префиксом «г» (далее — «r-команды») был создан в сообществе
BSD Unix для того, чтобы программисты и пользователи могли работать на
удаленных компьютерах. В наши дни r-команды продолжают использоваться
в сообществе Unix и TCP/I и по-прежнему успешно справляются со своими
задачами. R-команды позволяют копировать файлы из одной системы в другую,
выполнять команды на удаленных компьютерах и даже создавать рабочие
сеансы с входом в удаленную систему. Однако в отличие от Telnet и FTP эти
команды могут настраиваться на работу без участия пользователя (то есть без
ввода имени и пароля).
Основные r-команды перечислены в табл. 29.1.
Таблица 29.1. R-команды в системах семейства Unix
Команда Описание
rsh Remote Shell: выполнение программы на удаленном компьютере. В некоторых
дистрибутивах Unix команда называется rshell, remsh или rcmd)
гср Remote Copy: копирование файла с одного компьютера на другой.
Функциональный аналог FTP
rlogin Remote Login: вход в систему на удаленном компьютере. Функциональный
аналог Telnet
Команда Описание
rup Remote Uptime: вывод информации о состоянии удаленного компьютера
ruptime Remote Uptime: вывод информации о состоянии удаленного компьютера (аналог rup)
rwho Remote Who: вывод текущего списка пользователей удаленного компьютера
rexec Remote Execution: Аналог rsh, но с обязательным вводом пароля
R-команды и безопасность
Работа r-команд основана на концепции «эквивалентности хостов». Компьютеры
настраиваются таким образом, чтобы некоторые «доверенные» хосты могли в
прозрачном режиме подключаться и запускать команды. Такой подход обладает
рядом недостатков. Во-первых, уровень защиты системы падает до уровня защиты
слабейшего доверенного хоста, а ошибка в настройке параметров может
предоставить несанкционированный доступ к системе. Во-вторых, если пользователь
не является доверенным и должен ввести пароль, этот пароль пересылается по
сети в виде простого, незашифрованного текста. Перехватив передаваемую
информацию, злоумышленник может получит доступ к сети.
Из-за проблем безопасности, создаваемых r-командам, многие эксперты
рекомендуют запретить их использование. Тем не менее, поскольку эти команды
продолжают широко использоваться на практике, в этой главе будут рассмотрены
основные принципы их настройки и использования. Кроме того, в ней будут
представлены альтернативные средства на тот случай, если вы последуете
рекомендациям и откажетесь от использования г-команд (см. «Альтернативы для
r-команд» ниже в этой главе).
Дополнительная информация о параметрах конфигурации приведена в
разделе «Справочник г-команд» настоящей главы.
ПРИМЕЧАНИЕ
Существует множество разнообразных диалектов операционной системы Unix; в этой главе
рассматривается реализация r-команд для системы Linux. Впрочем, основные концепции и принципы
использования этих команд остаются одинаковыми и практически не зависят от операционной
системы. За подробным описанием команд и их параметров обращайтесь к документации ОС.
Запрет использования г-команд
Чтобы запретить использование r-команд, следует закомментировать все
соответствующие строки в конфигурационном файле /etc/inetd.conf (то есть поставить
символ # в начало строки). Ниже приведен пример файла /etc/inetd.conf с
закомментированными строками (листинг слегка сокращен для экономии места).
#
# inetd.conf Файл содержит описания служб, предоставляемых
# через суперсервер TCP/IP INETD.
# Чтобы изменить конфигурацию рабтающего процесса INETD,
# отредактируйте файл и отправьте процессу INETD сигнал SIGHUP.
# Версия: @(#)/etc/inetd.conf 3.10 05/27/93
# Авторы: Оригинал позаимствован из BSD Unix 4.3/TAHOE.
# Фред Н. ван Кемпен, <waltje@uwalt.nl.mugnet.org>
# Модификация для Debian Linux: Ян А.Мердок <imurdock@shell.portal.com>
# Модификация для RHS Linux: Марк Эвинг <marc@redhat.com>
# <имя_службы> <тип_сокета> <протокол> <флаги> <польз> <путь_серв> <аргум>
# Службы echo, discard, daytime и chargen используются в основном
# для целей тестирования.
#
# Стандартные службы
#
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -1 -a
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
#
# Shell, login, exec, comsat и talk - протоколы BSD.
#
#shell stream tcp nowait root /usr/sbin/tcpd in.rshd
#login stream tcp nowait root /usr/sbin/tcpd in.rlogind
#exec stream tcp nowait root /usr/sbin/tcpd in.rexecd
#
В приведенном листинге строки, запускающие in.rshd, in.rlogind и in.rexecd,
начинаются с символа #.
ПРИМЕЧАНИЕ
Для редактирования файлов и выполнения команд, упоминаемых в этой главе, необходимо
обладать привилегиями суперпользователя.
После того как демоны г-команд будут закомментированы, необходимо
перезапустить демона inetd. Задача решается следующей командой:
killall -HUP inetd
ПРИМЕЧАНИЕ
В системе Unix «демоном» называется программа, которая работает в фоновом режиме и ожидает
наступления некоторых событий. Как известно, в мифологии демон является посредником между
человеком и сверхъестественным существом. В мире Unix демон является посредником между двумя
событиями или процессами. Например, демон in.rlogind ожидает поступления запросов rlogin.
Получив такой запрос, in.rlogind пытается выполнить аутентификацию пользователя. Если запрос
поступил от доверенного пользователя, ему предоставляется доступ в систему. В противном случае
in.rlogind отклоняет запрос.
Защита г-команд
Если вы решите, что r-команды абсолютно необходимы вам для работы, по
крайней мере постарайтесь обеспечить их максимальную защиту. Ниже
описаны некоторые средства:
О TCP Wrappers.
О Аутентификация Kerberos.
О DES (Data Encryption Standard).
TCP Wrappers
Механизм управления доступом TCP Wrappers (tcpd) представляет собой
интерфейсную «оболочку» для демона TCP, обеспечивающую отслеживание и
фильтрацию программ TCP. При помощи TCP Wrappers систему можно настроить
так, чтобы запросы r-команд принимались только от сетевых компьютеров или
доменов из заданного списка.
В большинстве дистрибутивов Linux поддержка TCP Wrappers обычно
устанавливается автоматически (за дополнительной информацией обращайтесь по
адресу htф://hovЛo.tucowsxom/LDP/LDP/LG/issue46/pollman/tфwгappel3.html или к тап-
странице host_accessE)). В некоторых операционных системах пакет TCP Wrappers
приходится загружать и устанавливать самостоятельно.
Содержимое файлов /etc/hots.allow и /etc/hosts.deny используется средствами
доступа хостового уровня и программой TCP Wrappers для определения того,
кому разрешено или запрещено выполнение некоторых команд на вашем
компьютере. Записи этих файлов имеют следующий синтаксис:
демон : клиент
Предположим, файл hosts.deny содержит запись
All: All
Файл hosts.allow содержит следующий фрагмент:
in.telnetd: All
in.ftpd: All
in.rshd: *.mydomain.com
in.rlogind: *.mydomain.com
in.rexecd: *.mydomain.com
В приведенном примере запись All: All в файле hosts.deny означает, что всем
пользователям закрыт доступ ко всем демонам. На первый взгляд это
ограничение выглядит чрезмерно жестким, но оно переопределяется в файле hosts.allow.
Последний указывает, что доступ к системе через интерактивные программы
Telnet и FTP разрешен для всех желающих, однако выполнение защищенных
r-команд разрешено только хостам доверенного домена mydomain.com.
За дополнительной информацией о возможностях TCP Wrappers
обращайтесь к документации операционной системы.
ПРИМЕЧАНИЕ
Фальсификация IP (IP spoofing) основана на «обмане» компьютерной системы, которая полагает,
что входящий запрос поступил от доверенного компьютера, хотя на самом деле это не так.
Объектом фальсификации обычно становятся доверенные системы — такие, как используемые г-коман-
дами и TCP Wrappers.
Подробное описание методики фальсификации выходит за рамки настоящей книги. В общих чертах
злоумышленник модифицирует заголовки сетевых пакетов и придает им такой вид, словно пакеты
поступили из доверенной сети.
Аутентификация Kerberos
Стремясь повысить надежность r-команд, многие поставки теперь используют
версии rsh, rep и rlogin с поддержкой аутентификации Kerberos.
Kerberos — система аутентификации, которая позволяет двум сторонам
обмениваться защищенной информацией по незащищенной сети. Каждый из двух
сторон выдается билет (ticket), который встраивается в сообщения и
используется вместо пароля для идентификации отправителя.
Дополнительная информация о Kerberos приведена на сайте http://web.mit.edu/
kerberos/www/.
DES
В некоторых поставках команда rsh может настраиваться для использования
мощного стандарта шифрования DES, разработанного в 1970-е годы и
обеспечивающего высокую надежность шифрования.
За дополнительной информацией о DES обращайтесь по адресу http://www.itl.
nist.gov/fipspubs/fip46-3.htm.
Альтернативы для г-команд
Учитывая, сколько проблем для безопасности создает применение г-команд,
возникает вопрос — не существует ли альтернативы? Да, существует: это Secure
Shell (SSH).
Secure Shell — защищенная программа, обеспечивающая вход на удаленный
компьютер, выполнение команд в удаленном режиме и копирование удаленных
файлов. SSH обладает теми же возможностями, что и менее защищенные
утилиты rlogin, rsh и rep.
Защита SSH основана на использовании таких средств шифрования, как
DES (Data Encryption Standard) и RSA. При помощи этих механизмов SSH
защищает систему от нескольких видов распространенных атак, в том числе:
О фальсификация IP;
О перехват паролей, пересылаемых в виде простого текста;
О манипуляции с данными.
ПРИМЕЧАНИЕ
Алгоритм RSA, получивший свое название по фамилиям разработчиков (Ривест, Шамир и Адель-
ман), обеспечивает шифрование с открытым и закрытым ключом. Основной принцип заключается
в том, что данные, зашифрованные с открытым ключом, могут быть расшифрованы только с
применением закрытого ключа. В случае аутентификации хостов отправитель шифрует случайную
строку данных с использованием открытого ключа получателя (удаленного хоста). Если
удаленному хосту удается успешно расшифровать сообщение, используя свой закрытый ключ, каждый
хост может быть уверен в подлинности другой стороны.
За дополнительной информацией о RSA обращайтесь на сайт http://www.rsa.com. Хорошее введение
в методы шифрования с открытыми и закрытыми ключами находится по адресу http://www.rsa.com/
rsalabs/pkcs.
SSH версий 1 и 2 распространяется бесплатно для некоммерческого
использования. За дополнительной информацией о SSH обращайтесь по адресу http://
www.ssh.fi/sshprotocols2/.
Справочник r-команд
В этом разделе рассматривается синтаксис r-команд и приводятся примеры их
использования. Как упоминалось выше, описание относится к операционной
системе Linux. За информацией о параметрах и особенностях использования
команд в вашей операционной системе обращайтесь к электронной или печатной
документации.
Демоны г-команд
В табл. 29.2 перечислены демоны, которые должны выполняться на сервере (или
запускаться по запросу inetd) для нормальной работы г-команд. За
дополнительной информацией обращайтесь к электронной или печатной документации.
Таблица 29.2. Демоны г-команд
Демон Описание
rshd Сервер удаленной работы с командным интерпретатором.
Обеспечивает возможность удаленного выполнения
без аутентификации
rlogind Сервер удаленного входа. Обеспечивает возможность
удаленного выполнения без аутентификации
rwhod Сервер состояния системы
rstatd (или rcp.rstatd) Сервер состояния удаленного хоста
rsh
Утилита rsh позволяет выполнять команды в удаленной системе. Синтаксис
использования rsh:
ПРИМЕЧАНИЕ
В некоторых поставках Unix утилита rsh может называться rshell, remsh или rcmd.
rsh [-Kdnx] [-к область] [-1 пользователь] хост [команда]
Параметры
О -К — запрет аутентификации Kerberos.
О -d — разрешение отладки на уровне сокетов.
О -п — перенаправление ввода.
О -к — билет Kerberos выдается для заданной области (вместо области
удаленного хоста).
О -I — определение имени пользователя для удаленного хоста (вместо
использования текущего имени).
О -х — включение шифрования DES (если оно доступно).
Если команда не указана, пользователю предоставляется сеанс rlogin. Пример
использования команды rsh:
%rsh hostnamel who
jamisonn pts/1 Jul 26 09:13 (hostname2)
evanm pts/13 Jul 25 12:30 (hostname3)
На удаленном хосте hostnamel выполняется команда who. Выходные данные
показывают, что в настоящий момент на hostnamel работают два пользователя.
гср
Утилита rep (Remote Copy) копирует файлы с одного компьютера на другой. Ее
можно рассматривать как не-интерактивную разновидность FTP. Синтаксис
использования гср:
гср [-рх] [-к область] файл1 файл2
гср [-рх] [-к область] файл ... каталог
Имена файлов и каталогов задаются в формате полъзователъ@хост:путъ.
Параметры:
О -г — рекурсивное копирование (приемником должен быть каталог).
О -р — попытка сохранения времени модификации и режимов исходных файлов.
О -к — билет Kerberos выдается для заданной области (вместо области
удаленного хоста)
О -х — включение шифрования DES (если оно доступно).
Пример использования команды гср:
%rcp /home/jamisonn/report jamison@hostname2:report
Файл report копируется из локального домашнего каталога в домашний
каталог на удаленном хосте hostname2.
rlogin
Запуск терминального сеанса на удаленном хосте. Синтаксис использования rlogin:
rlogin [-8EKLdx] [-e символ] [-к область] [-1 пользователь] хост
Параметры
О -8 — восьмиразрядный путь входных данных.
О -Е — запрет использования символа отключения.
О -К — запрет аутентификации Kerberos.
О -L — проведение сеанса rlogin в режиме «буквального вывода» (litout).
О -d — разрешение отладки на уровне сокетов.
О -е — определение символа отключения (по умолчанию — «-»).
О -к — билет Kerberos выдается для заданной области (вместо области
удаленного хоста).
О -х — включение шифрования DES (если оно доступно).
Пример использования команды rlogin:
%rlogin -I jamisonn hostnamel
Команда создает для пользователя jamisonn сеанс на удаленном хосте hostnamel.
На удаленном хосте должен работать демон rlogind.
rup
Вывод информации о состоянии удаленной системы. Если хост ие указан, rup
возвращает информацию о состоянии всех хостов в сети. Синтаксис использования rup:
rup [-dhlt] [хост ...]
Параметры
О -d — отображение локального времени для хоста.
О -h — алфавитная сортировка выходных данных по имени хоста.
О -I — сортировка выходных данных по средней нагрузке.
О -t — сортировка выходных данных по продолжительности работы.
Пример:
% rup hostnamel
hostnamel up 15 days. 11:13, load average: 0.21, 0.26, 0.19
%rup -d hostnamel
hostnamel 4.08pm up 15 days. 11:13, load average: 0.21, 0.26, 0.19
Для работы rup на удаленном хосте должен быть запущен демон rstatd (или
rpc.rstatd).
ruptime
Команда ruptime по выполняемым функциям близка к rup. Синтаксис
использования ruptime:
rup [-alrtu]
Параметры
О -а — вывод информации о хостах, бездействовавших в течение часа и более.
О -I — сортировка выходных данных по средней нагрузке.
О -г — обратный порядок сортировки.
О -t — сортировка выходных данных но продолжительности работы.
О -и — сортировка выходных данных по количеству пользователей.
Для работы ruptime на удаленном хосте должен быть запущен демон rwhod.
rwho
Вывод списка пользователей, зарегистрированных в удаленной системе.
Выходные данные rwho близки к выходным данным команды Unix who. По умолчанию
rwho отображает только тех пользователей, которые работали с системой за
последний час. Синтаксис использования rwho:
rwho [-a]
Параметры
О -а — вывод информации обо всех пользователей, включая тех, которые
простаивали в течение часа и более.
Для работы rwho на удаленном хосте должен быть запущен демон rwhod.
rexec
Команда rexec по выполняемым функциям близка к rsh, но требует ввода
пароля. Синтаксис использования гехес:
гехес [пользователь@хост] [-DNn] [-1 пользователь] [-р пароль] команда
rexec [-DNn] [-1 пользователь] [-р пароль] [пользователь@хост] команда
Параметры
О -D — разрешение отладки на уровне сокетов для сокетов TCP, используемых
для взаимодействия с удаленным хостом. При передаче этого параметра
также выводится имя пользователя, переданное службе (или демону) rexecd.
О -I пользователь — имя пользователя, с правами которого выполняется команда.
Также может задаваться включением секции пользователь@хост в
командную строку.
О -N — запрет создания отдельного выходного потока для ошибок. Все
выходные данные передаются в стандартный вывод. Параметр используется при
выполнении интерактивных команд. Пример:
гехес -N localhost cmd
rexec -N localhost sh -i
О -n — перенаправление ввода.
О -р пароль — пароль заданного пользователя на удаленном хосте.
О Если пароль не указан, комбинация хоста, имени пользователя и пароля
ищется в файле ~/.netrc. Если пароль не найден, пользователю предлагается
ввести его вручную.
Другие файлы
Для правильной работы r-команд необходимо настроить несколько файлов, в том
числе:
О /etc/hosts
О /etc/hosts.equiv
О .rhosts
О /etc/hosts.allow и /etc/hosts.deny
Перечисленные файлы кратко рассматриваются ниже.
/etc/hosts
Хосты, участвующие в обмене данными, должны знать о друг друге. Задача
решается внесением соответствующей информации в файл /etc/hosts. Если хост hosnamel
хочет разрешить хосту hostname2 выполнение r-команд, на хосте hostnamel файл
/etc/hosts должен содержать запись для хоста hostname2, и наоборот.
/etc/hosts.equiv
Файл hosts.equiv содержит информацию о хостах и пользователях, которым
разрешены (или запрещены) доверительные привилегии при выполнении г-команд.
Неправильная настройка файла hosts.equiv откроет вашу систему для всех желающих.
Основной формат записи файла /etc/hosts.equiv выглядит так:
[+ | -] [хост][пользователь]
Префикс «+» перед именем хоста или пользователя предоставляет
доверенный доступ этому хосту или пользователю. Префикс «-» отменяет доверенный
доступ для хоста или пользователя. В табл. 29.3 приведено несколько примеров
записей с краткими пояснениями.
Таблица 29.3. Примеры записей hosts.equiv
Запись Результат
Hostnamel Разрешает доверенный доступ всем пользователям Hostnamel
-Hostnamel Запрещает доверенный доступ всем пользователям Hostnamel
Hostname2 -root Запрещает доверенный доступ пользователю root с хоста Hostname2
Hostname2 +admin Разрешает доверенный доступ пользователю admin с хоста Hostname2
-root Запрещает доступ пользователя root из любой системы
+admin Разрешает доступ пользователя admin из любой системы
+ Разрешает доверенный доступ для всех пользователей (опасно!)
Запрещает доверенный доступ для всех пользователей
ПРИМЕЧАНИЕ
В некоторых поставках в файл hosts.equiv включается запись «+». Она сообщает вашей системе,
что любой другой хост является доверенным, и создает очень большую угрозу для безопасности.
Если в файле hosts.equiv присутствует запись «+», удалите ее.
.г hosts
Файл .rhosts по своей структуре идентичен файлу hosts.equiv. Тем не менее файлы
.rhosts используются для разрешения или запрета доступа на уровне конкретной
пользовательской записи, тогда как файл hosts.equiv относится к системе в целом.
Файл .rhosts часто используется для предоставления пользователю
доверенного доступа к нескольким системам, в которых у него имеются учетные записи.
Предположим, у пользователя есть учетная запись на хосте hostnamel с именем
Jamison. На другом хосте, hostname2, он может иметь учетную запись с именем
jamisonn. Создание файла .rhosts для каждой записи позволит вам получить
доверенный доступ к другой системе.
Файл .rhosts в домашнем каталоге Jamison на хосте hostnamel может
выглядеть так:
hostname2 +jamisonn
На хосте hostname2 в домашнем каталоге jamisonn файл содержит запись
hostnamel +jamison
Эти два файла .rhosts позволяют получить привилегии доверенного доступа
в обеих системах.
Один из недостатков системы доверенных хостов и пользователей в г-коман-
дах заключается в том, что систему можно «обмануть», чтобы она приняла
другую сторону за кого-то другого. Например, если в предыдущем примере
злоумышленник получит доступ к первой системе hostnamel как пользователь Jamison
или суперпользователь, он автоматически получает беспрепятственный доступ
к hostname2. Этот прием называется фальсификацией на уровне пользователей.
Фальсификация IP или фальсификация на уровне имен хостов (имитация
обращения с доверенного хоста) менее прямолинейна, но, к сожалению, она часто
встречается на практике при использовании доверенных систем.
Файлы /etc/hosts.allow и /etc/hosts.deny
Файлы /etc/hosts.allow и /etc/hosts.deny используются при контроле доступа на
хостовом уровне и программой TCP Wrappers для определения того, кому из
пользователей разрешено или запрещено выполнение тех или иных команд на
вашем компьютере. За более подробным описанием этих файлов и их
синтаксиса обращайтесь к разделу «TCP Wrappers» настоящей главы. Ниже
приведены примеры использования файлов hosts.allow и hosts.deny:
Файл /etc/hosts.deny запись
AU: All
Файл /etc/hosts.allow:
in.telnetd: All
in.ftpd: All
in.rshd: *.mydomain.com
in.rlogind: *.mydomain.com
Сначала файл hosts.deny запрещает доступ всем и для всего. Это полезная
привычка, повышающая уровень безопасности вашей системы. Затем файл hosts.allow
открывает доступ к Telnet и FTP для всех желающих и разрешает выполнение
r-команд хостам, входящим в доверенный домен mydomain.com.
Функциональность г-команд
на других платформах
R-команды создавались специально для платформы Unix. Тем не менее они
начинают появляться и в других продуктах TCP/IP — например, в компонентах
Microsoft TCP/IP систем Windows NT/2000. Существует ряд продуктов незави-
симых фирм, позволяющих использовать функциональные возможности г-команд
в других системах.
В табл. 29.4 приведены примеры фирм-разработчиков и URL, по которым
. следует обращаться за дополнительной информацией. Если вместо
фирмы-разработчика указано имя автора, программа является условно-бесплатной.
Таблица 29.4. Реализации r-команд, разработанные независимыми фирмами
Фирма-разработчик URL
Hummingbird Communications LTD http://www.hummingbird.com/products/nc/inetd/
Denicomp Systems http://www.denicomp.com/products.htm
Дидье Кассеро http://www.loa.espci.fr/winnt/rshd/rshd.htm
Маркус Фишер http://www.uni-paderborn.de/StaffWeb/getin
Итоги
В этой главе были представлены r-команды системы Unix, предназначенные для
входа на удаленный компьютер, удаленного копирования файлов и выполнения
других удаленных команд. Следует учитывать, что работа этих команд и служб
создает существенные проблемы для безопасности, поэтому в главе были
представлены альтернативные решения — такие, как SSH (Secure Shell). В конце
главы обсуждается использование r-команд на других платформах. В главе
встречаются многочисленные URL, по которым читатель сможет самостоятельно
обратиться за дополнительной информацией.
Приведенные описания команд относятся к системе Linux. За информацией
по другим версиям Unix обращайтесь к электронной и печатной документации
вашей операционной системы.
*Э>Л Протоколы
*Э w совместного доступа
к файловой системе:
NFS и SMB/CIFS
Нил С. Джеймисоп (Neal S.Jamison)
Протокол TCP/IP заложен в основу служб и протоколов, обеспечивающих
совместный доступ к данным, находящихся на других компьютерах. Именно эта
возможность когда-то стала первопричиной интернет-революции, плодами
которой мы пользуемся сегодня. Одним из самых полезных приложений TCP/IP
является сетевая файловая система, чаще обозначаемая сокращением NFS
(Network File System).
Что такое NFS?
NFS — распределенная файловая система, позволяющая организовать совместный
доступ к ресурсам в сетях TCP/IP. С точки зрения клиентского приложения
NFS операции чтения и записи файлов, находящихся на серверах NFS,
выполняются прозрачно. До появления NFS совместный доступ к данным
организовывался посредством дублирования, централизации данных или их распространения
в сети, состоящей из однородных компьютеров. Конечно, у всех перечисленных
вариантов имеются очевидные недостатки — дублирование данных приводит
к лишним расходам дискового пространства и может вызвать проблемы с
логической согласованностью копий; централизация подразумевает использование
дорогих больших компьютеров и неинтеллектуальных терминалов; да и кому
захочется ограничиваться однородными сетями?
Так появилась система NFS, которая позволяла организовать совместный
доступ к данным независимо от платформы. Все проблемы были решены.
ПРИМЕЧАНИЕ
В контексте этой главы под «файловой системой» понимается набор файлов данных,
сгруппированных в иерархии каталога. Например, в системе Unix /usr является файловой системой.
Серверы NFS предоставляют совместный доступ к ресурсам для клиентов
сети. Как будет показано ниже, NFS работает как в локальных, так и
глобальных сетях. Одной из целей проектирования системы NFS была независимость
от операционных систем и оборудования, чтобы совместный доступ к ресурсам
мог предоставляться по возможности более широкому кругу компьютеров.
Базовый сервис NFS включает два протокола: Mount и NFS.
Краткая история NFS
Система NFS была представлена Sun Microsystems в 1984 году. Сначала она была
реализована в системе Sun 4.2BSD (более известной как SunOS). Благодаря
широкому распространению и очевидной потребности в подобном сервисе система NFS
скоро была адаптирована для широкого круга рабочих платформ. В 1986 году
NFS обслуживала 16 аппаратных платформ с пятью разными операционными
системами. В наши дни система NFS работает на многих аппаратных платформах
и операционных системах и даже была усовершенствована для работы в Web.
Почему NFS?
Система NFS создавалась для организации совместного доступа к ресурсам.
В период разработки (начало 1980-х годов) компьютерная индустрия быстро
изменялась. Появление дешевых процессоров и технологий «клиент-сервер»
создало условия для децентрализации компьютерных сред. Тем не менее, хотя
процессоры дешевели, системы массового хранения большой емкости оставались
относительно дорогими. Возникла потребность в решении, которое бы позволяло
компьютерам использовать общие средства храпения данных, но при этом
сохранить максимальный уровень вычислительной мощности отдельных машин.
Так появилась система NFS.
Реализация — как работает NFS
NFS использует службы и протоколы семейства TCP/IP. Как показано в табл. 30.1,
NFS работает на прикладном уровне модели OSI.
Таблица 30.1. Место NFS в многоуровневой модели OSI
Номер Название Функция
1 Прикладной уровень NFS
2 Представительский уровень XDR
3 Сеансовый уровень RPC
4 Транспортный уровень UDP, TCP
5 Сетевой уровень IP
6 Канальный уровень Много
7 Физический уровень Много
Поскольку утилитарный транспортный протокол UDP обладает более
высоким быстродействием, система NFS первоначально ориентировалась на UDP,
а не на TCP. Тем не менее, хотя протокол UDP хорошо работает в локальных
сетях, в менее надежных глобальных сетях (таких, как Интернет) он обладает
рядом недостатков. Последние достижения в области TCP позволяют NFS
достаточно эффективно работать при использовании надежного транспортного
протокола. Начиная с Solaris 2.6, NFS работает на базе TCP/IP. Поддержка TCP
появилась еще в NFS версии 2, но не была оптимизирована. В NFS версии 3
поддержка TCP была оптимизирована, а также было снято искусственное
ограничение размера блока (8 Кбайт). Последняя версия NFS имеет номер 4.
ПРИМЕЧАНИЕ
За дополнительной информацией о UDP и TCP обращайтесь к главе 9.
RPC и XDR
Полная платформенная независимость NFS основана на использовании средств
нижних уровней OSI. Механизмы сеансового уровня RPC (Remote Procedure
Call) и представительского уровня XDR (external Data Representation)
обеспечивают сетевые подключения NFS и формат данных, передаваемых по этим
подключениям. Эти механизмы позволяют NFS работать на широком спектре
разных платформ.
RPC
Механизм процедур RPC работает на сеансовом уровне стека OSI. Он позволяет
вызывать удаленные процедуры так, как если бы они находились на
локальном компьютере. При помощи RPC локальные компьютеры или приложения
могут работать со службами на удаленных компьютерах. Благодаря библиотеке
процедур RPC приложения высокого уровня не обязаны знать все
низкоуровневые подробности реализации удаленных систем. Именно этот уровень
абстракции обеспечивает платформенную независимость NFS на прикладном уровне.
XDR
Библиотека XDR обеспечивает преобразование данных RPC между
разнородными компьютерными системами. XDR определяет стандартное представление
данных, «понятное» для всех компьютеров.
В сочетании RPC и XDR формируют отношения между клиентом и
сервером, необходимые для NFS.
Жесткое и мягкое монтирование
Поскольку NFS не обладает состоянием, клиенты и клиентские приложения
могут восстанавливаться после периодов недоступности сервера. Поведение
клиентов и клиентских приложений в случае недоступности сервера определяется
типом монтирования. Мы вернемся к рассмотрению типов монтирования в
разделе «Распространенные проблемы NFS и их решения» настоящей главы.
Жесткое монтирование
Жесткое монтирование ресурса приводит к тому, что в случае недоступности
сервера NFS или ресурса повторные вызовы RPC будут продолжаться до
бесконечности. Когда от сервера будет получен ответ, вызов RPC завершится успехом
и будет выполнена следующая процедура. При возникновении серьезных
проблем с сервером или сетью жестко смонтированный ресурс переходит в
хроническое состояние ожидания, а клиентское приложение NFS «зависает». Естественно,
повторные обращения увеличивают объем сетевого трафика. Существует
параметр, который запрещает прерывание ожидания при жестком монтировании.
Мягкое монтирование
При мягком монтировании ресурса многократные неудачи при вызовах RPC
приведут к сбою в клиентском приложении, что может привести к появлению
ненадежных данных. Такие данные не должны использоваться в файловых системах с
записью, а также при чтении критически важных данных и исполняемых программ.
ПРИМЕЧАНИЕ
Материал следующего раздела содержит примерно ту же информацию, которая приводится в
электронной документации Unix. За более подробными сведениями обращайтесь к руководствам по
конкретным файлам и программам.
Файлы и команды NFS
В этом разделе представлены демоны, программы и файлы, используемые NFS.
Поскольку система NFS тесно связана с Unix, ниже будет описана процедура
организации совместного доступа и использования ресурсов NFS в двух
популярных операционных системах семейства Unix: Sun Solaris 2.x и Linux.
Комментарии по поводу других реализаций, в том числе для клиентов на базе PC,
приведены ниже, в разделе «Другие протоколы и продукты».
ПРИМЕЧАНИЕ
В системе Unix «демоном» называется программа, которая работает в фоновом режиме и ожидает
наступления некоторых событий. Как известно, в мифологии демон является посредником между
человеком и сверхъестественным существом. В мире Unix демон является посредником между двумя
процессами. Например, демон печати ожидает поступления заданий в очередь, а демон NFS ждет
обращения к файловой системе со стороны клиента.
Демоны NFS
Функционирование NFS обеспечивается совместной работой нескольких
серверных демонов. Ниже приведены описания этих демонов для операционных
систем Solaris и Linux.
Solaris 2.x
Следующие демоны используются в системе Solaris для прослушивания и
обработки запросов NFS. Серверные демоны Solaris запускаются сценарием /etc/init.d/
nfs.server.
nfsd
Демон nfsd ожидает и принимает клиентские запросы NFS. Синтаксис запуска
демона nfsd:
/usr/Tib/nfs/nfsd [ -a ] [ -с подключ ] [ -1 очередь ] [ -р протокол ]
[ -t устройство ] [ число_запросов 3
Параметры:
О -а — демон NFS запускается для всех доступных транспортных протоколов,
ориентированных или не ориентированных на соединение, включая UDP и TCP.
О -с подключ — максимальное количество подключений, разрешенных сервером
NFS для транспортных протоколов, ориентированных на соединение. По
умолчанию количество подключений не ограничивается.
О -I — длина очереди NFS TCP. По умолчанию длина очереди равна 32.
О -р протокол — демон NFS запускается для заданного протокола.
О -t устройство — демон NFS запускается для транспорта, определяемого
заданным устройством.
О число ^запросов — максимальное количество одновременно обрабатываемых
запросов.
Другие файлы: /etc/init.d/nfs.server; сценарий, запускающий nfsd.
mountd
Демон mountd получает информацию о доступе NFS и монтировке файловых
систем. Доступность файловых систем определяется чтением /etc/dfs/sharetab.
Синтаксис запуска демона mountd:
/usr/lib/nfs/mountd [ -v ] [ -г ]
Параметры:
О -v — режим расширенного вывода.
О -г — отклонение клиентских запросов.
Другие файлы: /etc/dfs/sharetab/.
statd
Демон statd работает в сочетании с lockd и обеспечивает восстановление
блокировки файлов после сбоев. Statd работает на стороне клиента. Синтаксис запуска
демона statd:
/usr/lib/nfs/statd
Другие файлы: lockd.
lockd
Демон lockd является частью системы блокировки файлов NFS. Lockd работает
на стороне клиента. Синтаксис запуска демона lockd:
/usr/lib/nfs/lockd [ -g интервал ] [ -t тайм-аут ] [ число_потоков ]
Параметры:
О -g интервал — интервал, в течение которого клиент должен восстановить
блокировку после перезагрузки сервера (задается в секундах). Значение по
умолчанию — 45.
О -t тайм-аут — продолжительность ожидания перед повторной отправкой
запроса на блокировку (в секундах). Значение по умолчанию — 15.
О число_потоков — количество программных потоков, обрабатывающих запросы
на блокировку. Значение по умолчанию — 20.
Другие файлы: statd.
Linux
Следующие демоны используются в системе Linux для прослушивания и
обработки запросов NFS. По своему синтаксису и основным принципам
использования они близки к демонам Solaris.
rpc.nfsd
Демон rpc.nfsd обрабатывает запросы NFS. Синтаксис запуска демона rpc.nfsd:
/usr/sbin/rpc.nfsd [ -f файл ] [ -P порт ] [ -R каталог ]
[ -Fhlnprstv ] [ -- exports-fi1е=файл] [ --foreground j
[ --help ] [ --allow-nn-root ] [ --re-export ]
[ --public-root каталог ] [ --no-spoof-trace ] [ --port порт ]
[ --log-transfers ] [ --version ] [ число_серверов ]
Параметры:
О -f или -exports-file — файл экспорта. По умолчанию используется файл /etc/
exports.
О -h или -help — краткая справка.
О -I или -log-transfers — регистрация всех операций пересылки файлов.
О -п или -allow-non-root — разрешить обслуживание входящих запросов NFS
даже в том случае, если они не поступили с зарезервированных портов IP.
О -Р порт или -port порт — демон nfsd прослушивает порт с заданным номером
вместо используемого по умолчанию порта 2049 или порта, указанного в файле
/etc/services.
О -р или -promiscuous — серверу разрешается обслуживать любые хосты в сети.
О -v или -version — вывод номера версии программы.
О число_серверов — параллельный запуск нескольких экземпляров nfsd.
Другие файлы: exports, mountd.
rpc.mountd
Демон rpc.mountd получает запросы на монтирование и проверяет доступность
файловой системы NFS, указанной в /etc/exports. Если запрашиваемый ресурс
доступен, rpc.mountd создает идентификатор файла и включает запись в /etc/
rmtab. При получении запроса UMOUNT демон rpc.mountd удаляет информацию
из /etc/rmtab. Синтаксис запуска демона rpc.mountd:
/usr/sbin/rpc.mountd [ -f файл ] [ -P порт ] [ -Dhnprv ]
[ -- exports-fПе=файл] [ --help ] [ --allow-nn-root ]
[ --re-export ] [ --no-spoof-trace J [ --version ]
Параметры.
См. описание демона rpc.nfsd.
Другие файлы: /etc/exports, /etc/rmtab.
rpc.statd
См. описание демона statd для Solaris.
rpc.lockd
См. описание демона lockd для Solaris.
biod
Команда biod запускает указанное количество демонов асинхронного блочного
ввода/вывода на клиенте NFS. Эти демоны выполняют операции опережающего
чтения и обратной записи в файловой системе NFS, помогающие повысить
быстродействие NFS. Синтаксис запуска демона biod:
/usr/etc/biod [ количество_демонов ]
Служебные файлы NFS
Чтобы успешно организовать совместный доступ и монтирование файловых
систем NFS, необходимо отредактировать несколько файлов на сервере и клиенте.
Solaris 2.x
Ниже перечислены файлы, используемые в системе Solaris для определения
ресурсов NFS и отслеживания их состояния.
/etc/dfs/dfstab
В файле dfstab хранятся команды share, управляющие экспортом файловых
систем NFS. За дополнительной информацией о команде share обращайтесь к
разделу «Серверные команды NFS» настоящей главы.
Пример:
share -F nfs -о rw-engineering -d "home dirs" /export/home2
/etc/dfs/sharetab
Файл sharetab содержит информацию обо всех файловых системах, заявленных
для совместного доступа в командах share. Этот файл автоматически
генерируется системой. Записи файла sharetab содержат следующие поля:
О Путь — путь к общему ресурсу.
О Ресурс — имя, по которому удаленные системы обращаются к ресурсу.
О Тип — тип общего ресурса.
О Параметры — параметры, использовавшиеся при предоставлении совместного
доступа к ресурсу.
О Описание — описание общего ресурса.
Пример:
/export/home2 - nfs rw=engineering "Engineering home"
/etc/rmtab
Файл rmtab содержит список файловых систем NFS, смонтированных
клиентами в настоящее время. Этот файл также генерируется системой и содержит
строки в формате
хост:файловая_система
/etc/vfs/vfstab
Файл vfstab, хранящийся на стороне клиента, используется для описания
монтируемых локальных и удаленных систем. Запись файла vfstab состоит из
следующих полей:
О Монтируемое устройство.
О Устройство для fsck.
О Точка монтирования.
О Тип файловой системы.
О Проход fsck.
О Монтирование при загрузке.
О Параметры монтирования (описание параметров приводится ниже в разделе
«Клиентские команды NFS»).
Пример:
servername:/export/home2 - /export/home NFS у
Linux
Ниже перечислены файлы, используемые в системе Linux для определения
ресурсов NFS и отслеживания их состояния.
/etc/exports
Файл exports представляет собой список управления доступом для файлов,
экспортируемых клиентам NFS. В каждой строке файла exports указывается ресурс
NFS и хосты, которым разрешено его монтировать. Параметры доступа
перечисляются в круглых скобках (хотя их наличие не обязательно). Существует
обширный список ключей и параметров, управляющих доступом к ресурсам; за
подробностями обращайтесь к документации.
Пример:
/users/home host.mydomain.com(го)
Приведенная запись означает, что хосту host.mydomain.com разрешено
монтировать файловую систему /users/home в режиме только для чтения.
/etc/rmtab
Файл rmtab содержит перечень файловых систем NFS, в настоящее врем^
смонтированных клиентами. Содержимое файла генерируется системой. Фа#л имеет
следующий формат:
хост:ресурс
Пример
datahouse.anvi.com:/users/home
/etc/fstab
Файл /etc/fstab содержит информацию обо всех файловых системах, которые
могут использоваться системой. Он является аналогом vfstab для Linux. Запись
файла fstab состоит из следующих полей:
О Удаленная файловая система.
О Точка монтирования удаленного ресурса.
О Тип удаленного ресурса (например, nfs).
О Параметры монтирования.
О Признак создания резервной копии. По умолчанию равен 0 (резервная
копия не создается).
О Проход, на котором файловая система должна проверяться fsck. Значение
по умолчанию, равное 0, означает, что файловая система не проверяется
fsck.
За полным списком параметров и другой информацией о файле fstab
обращайтесь к электронной или печатной документации.
Пример
solaris:/www /mnt nfs rsize=1024,wsize=1024,hard,1ntr 0 0
Серверные команды NFS
После запуска всех необходимых демонов и редактирования
конфигурационных файлов операции создания общих ресурсов NFS и их монтирования
решаются просто.
Создание общих ресурсов
Чтобы ресурсы NFS могли использоваться клиентами вашей сети, они должны
быть экспортированы сервером NFS. В следующем разделе рассматриваются
команды Solaris и Linux, используемые при экспортировании ресурсов.
Solaris 2.x
Следующие команды Solaris обеспечивают совместный доступ и сбор
информации о состоянии ресурсов NFS.
share
Команда share предоставляет клиентам доступ к указанной файловой системе.
Синтаксис команды share:
share [ *F тип ] [ -о параметры ] [ -d описание ] [ путь ]
Параметры:
О -F тип — тип файловой системы.
О -о параметры — управление доступом к общему ресурсу. Поддерживаются
следующие значения:
□ rw- доступ для чтения/записи.
□ гн-клиеит\\клиепт\ — доступ для чтения/записи предоставляется только
указанным клиентам.
□ Ro — доступ только для чтения.
□ Ro=клиеит[:клиент] — доступ только для чтения предоставляется только
указанным клиентам.
О -d описание — описание общего ресурса.
Пример:
share -F nfs -о rw=Engineering -d "home dirs" /export/home2
shareall
Команда shareall предоставляет совместный доступ к ресурсам из заданного файла,
стандартного ввода или файла dfstab. Синтаксис команды shareall:
shareall [ -F тип [,тип...]] [ - | файл ]
Параметры:
О -F тип — тип файловой системы.
О [ - | файл ] — если указан параметр -, команда shareall получает входные
данные из стандартного ввода. Если указано имя файла, команда shareall
загружает входные данные из этого файла. Если параметр не указан, shareall по
умолчанию использует файл dfstab (/etc/dfs/dfstab).
showmount
Команда showmount выводит список всех клиентов, смонтировавших
файловые системы с сервера, на котором выполняется команда. Синтаксис команды
showmount:
/usr/sMn/showmount [ -ade ] [ хост ]
Параметры:
О -а — вывод информации обо всех файловых системах, смонтированных
удаленными клиентами.
О -d — вывод информации о каталогах, смонтированных удаленными
клиентами.
О -е — вывод списка общих файловых систем.
Linux
Следующие команды Linux обеспечивают совместный доступ и сбор
информации о состоянии ресурсов NFS.
exportfs
Команда exportfs заставляет систему заново загрузить файл /etc/exports. В
некоторых поставках Linux команда exportfs не поддерживается, но в этом случае
можно воспользоваться коротким сценарием, который выполняет ту же
операцию:
#!/bin/sh
ki Hall -HUP /usr/sbin/rpc.mountd
ki Hall -HUP /usr/sbin/rpc.nfsd
ПРИМЕЧАНИЕ
В RedHat версии 7 и выше также можно перезапустить службу nfs, выполнив следующий сценарий:
/etc/rc.d/init.d/nfs restart
Перезапуск службы автоматически приводит к повторной загрузке файла /etc/exports.
Кроме аргумента restart, сценарий также может вызываться с аргументами start и stop. Смысл этих
аргументов понятен без комментариев.
showmount
Команда showmount запрашивает у демона монтирования на сервере NFS
информацию о файловых системах, смонтированных в настоящий момент. Синтаксис
команды showmount:
/usr/sbin/showmount [ -adehv ] [ --all ] [ --directories ]
[ --exports ] [ --help ] [ --version ] [ хост ]
Параметры:
О -а или -all — вывод имен клиентских хостов и смонтированных каталогов
в формате хост'.каталог.
О -d или —directories — вывод списка каталогов, смонтированных клиентами.
О -е или -exports — вывод списка экспортируемых файловых систем.
О -h или -help — вывод справочной информации.
О -v или -version — вывод версии программы.
О -no-headers — исключение заголовков из выходных данных.
Отключение общих ресурсов
Рано или поздно наступит момент, когда вы захотите запретить
монтирование той или иной файловой системы. Для этого можно воспользоваться
ключом -г команды mount (см. выше) или просто отменить объявление общего
ресурса.
Solaris 2.x
Следующие команды Solaris отменяют объявление общих ресурсов NFS.
unshare
Команда unshare делает общую файловую систему недоступной для клиентов.
Синтаксис команды unshare:
unshare [ -F тип ] [ -о параметры 3 [ путь | ресурс ]
Если аргумент -F тип не задан, команда unshare по умолчанию использует
тип первой записи в файле /etc/dfs/dfstab. Аргумент -о параметры зависит от типа
файловой системы. За дополнительной информацией обращайтесь к
документации.
unshareall
Команда unshareall отменяет объявления всех общих ресурсов заданного типа.
Синтаксис команды unshareall:
unshareall [-F тип[,тип . . . ]]
Если команда вызывается без указания конкретного типа, отменяются
объявления всех общих ресурсов.
Проверка командой showmount
Чтобы убедиться в том, что файловая система не смонтирована ни одним
клиентом, воспользуйтесь командой showmount. Синтаксис команды описан в
предыдущем разделе.
Linux
В системе Linux не существует официальных команд, отменяющих объявления
общих ресурсов. Задача проще всего решается редактированием файла /etc/exports
и исключением из него файловых систем, совместный доступ к которым вы
хотите запретить. После этого следует выполнить команду exportfs, чтобы система
заново прочитала файл /etc/exports. Если команда exportfs не поддерживается
в вашей версии Linux, воспользуйтесь эквивалентным сценарием:
#!/bin/sh
killall -HUP /usr/sbin/rpc.mountd
killall -HUP /usr/sbin/rpc.nfsd
Клиентские команды NFS
В этом разделе описаны клиентские команды, используемые для монтирования
и демонтирования ресурсов NFS.
ПРИМЕЧАНИЕ
Следует помнить, что точка монтирования (пустой каталог), которая будет использоваться для
монтирования ресурсов, должна создаваться заранее.
Монтирование ресурсов NFS
Следующие команды предназначены для монтирования общих ресурсов.
mount (Solaris/Linux)
Монтирование удаленных файловых систем NFS осуществляется командой mount
Solaris
Синтаксис команды mount:
mount [ -р | -v ]
mount [ -F тип ) [ общие_параметры ] [ -о специальные_параметры ] [ -0 ]
точка_монтирования
mount [ -F тип ] [ -V ] [ общие_параметры j [ -о специальные_параметры ]
[точка_монтирования...]
Linux
mount [ -hV]
mount [ -fnrsvw ] [ -о параметры [....]] устройство | каталог
mount [ -fnrsvw ] [ -t тип ][ -о параметры ] устройство каталог
Версии команды mount для Solaris и Linux выполняют сходные функции, но
различаются по используемым параметрам. За дополнительной информацией
обращайтесь к печатной или электронной документации по операционной системе.
В простейшем варианте монтирования ресурса точка монтирования или
устройство указывается в файле vfstab или fstab.
Предположим, в файле vfstab системы Solaris присутствует запись
remotehost:/export/home2 - /export/myhome NFS у
В этом случае файловая система легко монтируется любой из следующих
команд:
# mount /export/myhome
# mount remotehost:/export/home2
mountall (Solaris)
Команда mountall монтирует все ресурсы, указанные в файле vfstab. Синтаксис
команды mountall:
mountall [ -F тип ] [ -11 - г ] [ список_файловых_систем ]
Параметры:
О -F тип — в данном случае NFS.
О -I — монтирование всех локальных файловых систем.
О -г — монтирование всех удаленных файловых систем.
О список_файловых_систем — по умолчанию /etc/vfstab.
ПРИМЕЧАНИЕ
Специальный демон NFS может отслеживать появление запросов к удаленной файловой системе.
Этот процесс называется автомонтированием. Когда приложение или пользователь обращается
с запросом к несмонтированной удаленной файловой системе, эта система автоматически
монтируется на сервере NFS. Если удаленная файловая система не используется, она автоматически
демонтируется. Технология автомонтирования обладает многими преимуществами; в частности,
она повышает эффективность использования сети и упрощает администрирование.
Поддержка автомонтирования присутствует в Solaris и Linux, а также на большинстве других
платформ семейства Unix. За дополнительной информацией обращайтесь к печатной или
электронной документации операционной системы.
Демонтирование ресурсов NFS
В этом разделе описаны команды демонтирования общих ресурсов.
umount (Solaris/Linux)
Команда umount демонтирует смонтированный ресурс.
Solaris
Синтаксис команды umount:
umount [ -V ] [ -о параметры ] спец | точка_монтирования
umount -а [ -V ] [ -о параметры ] [ точка_монтирования...]
Linux
Синтаксис команды umount:
umount [ -hV]
umount -a [ -nrv ] [ -t тип ]
umount [ -nrv ] устройство | каталог [ ... ]
Как и в случае с командой mount, команды umount для Linux и Solaris в целом
похожи, но обладают специфическими наборами параметров. За
дополнительной информацией обращайтесь к электронной или печатной документации.
По аналогии с mount, для выполнения команды umount достаточно указать
точку монтирования или устройство из файла vfstab или fstab.
Предположим, в файле fstab системы Linux присутствует запись
remotehost:/export/home2 /export/myhome nfs
rsize=1024,wsize=1024,hard.intr 0 0
В этом случае файловая система легко демонтируется любой из следующих
команд:
# umount /export/myhome
# umount remotehost:/export/home2
umountall (Solaris)
Команда umountall демонтирует все смонтированные файловые системы.
Параметры команды позволяют ограничиться демонтированием удаленных
файловых систем и даже систем, смонтированных с определенного хоста. Синтаксис
команды umountall:
umountall [ -k ] [ -s ] [ -F тип ] [ -1|-г ]
umountall [ -k ] [ -s ] [ -h хост ]
Параметры:
О -к — попытка принудительного закрытия всех процессов, использующих
файловую систему.
О -s — запрет параллельного демонтирования файловых систем.
О -F тип — демонтирование файловых систем заданного типа (в данном
случае NFS).
О -I — демонтирование только локальных файловых систем.
О -г — демонтирование только удаленных файловых систем.
О -h хост — демонтирование только удаленных файловых систем для
заданного хоста.
Пример: организация совместного доступа
и монтирование файловой системы NFS
В этом разделе мы применим на практике то, о чем говорилось выше: файловая
система из системы Solaris 2.6 будет смонтирована в системе Linux (RedHat 6.0).
Прежде всего необходимо отредактировать файл /etc/dfs/dfstab и включить
в него запись экспортируемой файловой системы. Запись выглядит примерно
так:
share -F nfs -d "WWW Directory" /www
Экспортируется файловая система /www.
После включения строки в файл dfstab и выполнения команды shareall
файловая система /www готова к удаленному монтированию.
#shareall
Команда share поможет убедиться в том, что файловая система была успешно
экспортирована.
#share
/www "WWW Directory"
Теперь нужно убедиться в том, что в системе работают необходимые демоны;
на сервере Solaris это демоны nfsd и mountd. Состояние демонов проверяется
командой Unix ps:
#ps -ef
Команда ps выводит список всех активных процессов, среди которых
присутствуют демоны NFS:
root 27282 1 0 08:10:59 ? 0:00 /usr/lib/nfs/nfsd -a 16
root 27280 1 0 08:10:59 ? 0:00 /usr/lib/nfs/mountd
Если в выходных данных ps демоны NFS отсутствуют (а значит, не работают
в системе), их можно запустить процедурой NFS init:
#/etc/init.d/nfs.server start
Теперь можно перейти к клиенту Linux и смонтировать общий ресурс.
На компьютере с Linux для этого выполняется команда mount:
mount -о rsize=1024,wsize=1024 solaris:/www /mnt
Команда демонтирования файловой системы выглядит так:
umount /mnt
Если монтирование должно выполняться достаточно часто, включите в файл
/etc/fstab следующую запись:
Solaris:/www /mnt nfs rsize=024,wsize=1024,hard,intr 0 0
Запись означает, что файловая система NFS /www должна монтироваться с
сервера Solaris в точке монтирования /mnt. Параметры hard, intr означают, что
файловая система монтируется жестко и с возможностью прерывания (более надежно
при возникновении серверных проблем).
Как видите, в теории все очень просто. К сожалению, на практике не
обходится без проблем, и NFS не является исключением. В следующем разделе
описаны некоторые проблемы, часто встречающиеся на практике, и представлены
возможные решения этих проблем.
Распространенные проблемы NFS
и их решения
В этом разделе представлены некоторые затруднения, возникающие при
использовании NFS в среде Unix. Мы рассмотрим несколько стандартных проблем
и способы их решения. Поскольку работа NFS зависит от нескольких демонов
и конфигурационных файлов, правильная настройка системы может оказаться
непростым делом. На первых порах основные проблемы связаны с
монтированием ресурсов.
Ошибки при монтировании ресурсов
Проблемы с монтированием чаще всего вызваны неправильной конфигурацией
или проблемами с функционированием сети.
Если вы не имеете ни малейшего представления о возможных причинах
(например, если вы попытались настроить файл vfstab, не ознакомившись с
инструкциями и т. д.), обычно стоит начинать с верхнего уровня.
Прежде всего убедитесь в том, что вы можете установить связь с сервером
NFS. Для этого можно воспользоваться командой ping, однако в этом случае вы
проверите лишь доступность хоста на уровне IP.
Если сервер доступен, убедитесь в том, что необходимые демоны
выполняются в системе. За подробностями обращайтесь к разделу «Демоны NFS» настоящей
главы. Проверьте правильность экспортирования ресурсов при помощи команды
share или ее аналога. Если ресурс не экспортируется, проверьте
конфигурационные файлы сервера (dfstab или exports). Дополнительная информация приведена
в разделе «Служебные файлы NFS» настоящей главы. Убедитесь в том, что
сервер знает о существовании клиента. Хостовое имя клиента должно находиться
в файле /etc/hosts в той же форме, в какой оно задается в конфигурационном
файле. Например, если сервер указывает, что системе loco разрешается
монтировать ресурс, убедитесь в присутствии данных loco в файле hosts. Система NFS
иногда бывает весьма требовательной — даже если в файле присутствуют
данные loco.mydomaJn.com, в нем также должны быть данные loco.
Если сервер недоступен, обратитесь за помощью к системному
администратору.
Если конфигурация сервера задана правильно, настало время проверить
конфигурацию клиента. Снова убедитесь в том, что в системе работают
необходимые демоны, а конфигурационные файлы (fstab или vfstab) были правильно
настроены. Проверьте, совпадают ли имена в файле hosts и в конфигурационных
файлах NFS.
Ошибки при демонтировании ресурсов
При возникновении проблем с демонтированием ресурсов прежде всего
необходимо убедиться в том, что ресурс не используется. Иногда труднее всего
заметить самые простые и очевидные случаи использования ресурсов. Итак, вы
получили невразумительное сообщение о том, что файловая система занята.
Проверьте все открытые сеансы командного интерпретатора и терминалы;
убедитесь в том, что файловая система не просматривается в открытых «диспетчерах
файлов». Также проверьте, чтобы файлы, находящиеся в файловой системе, не
были открыты в редакторах. Обнаружив подобные случаи, исправьте их и
повторите попытку. Не забудьте проверить командный интерпретатор, в котором
вы работаете!
Жесткое и мягкое монтирование
Файловые системы NFS монтируются в жестком или мягком режиме. Как
упоминалось выше, жесткое монтирование обеспечивает максимальную надежность
и поэтому обычно используется при монтировании ресурсов для записи,
чтении критически важных данных и исполняемых программ. С другой стороны,
если при жестком монтировании ресурса произойдет сбой на сервере или
сетевое подключение будет нарушено по другим причинам, все программы,
работающие с этим ресурсом, «зависнут», а это может оказаться нежелательно. По
умолчанию ресурсы NFS монтируются жестко.
При другом способе монтирования — мягком — прерывание обмена данными
между клиентом и сервером приводит к сбою в программах, использующих
ресурсы NFS. Следует помнить, что мягкое монтирование в ненадежных сетях
приводит к ненадежным результатам.
Проблема решается монтированием ресурсов NFS с параметрами hard и intr.
Эти параметры команды mount обеспечивают жесткое монтирование,
реагирующее на команды прерывания и завершения.
Другие протоколы и продукты
Вследствие популярности NFS и необходимости в использовании общих
ресурсов на разных компьютерных платформах было создано много программ,
работающих на базе NFS. В этой главе приведены некоторые примеры,
заслуживающие внимания.
WebNFS
Фирма Sun Microsystems недавно представила WebNFS — усовершенствованную
версию протокола NFS. WebNFS превосходит своего предшественника по
масштабируемости, надежности и эффективности работы по Интернету. WebNFS
также работает через брандмауэры — в системе NFS, базирующейся на RPC, это
было непросто. WebNFS требует установки NFS версии 3 и выше. WebNFS
поддерживается всеми основными разработчиками, включая Netscape, Novell, Apple,
IBM и т. д. WebNFS 1.2 включает компонент JavaBean, для работы которого
требуется Java 2 SDK.
За дополнительной информацией обращайтесь на сайт http://www.sun.com/
webnfs/.
PC-NFS и другие клиентские программы
Клиентская программа PC-NFS, разработанная в Sun Microsystems,
предназначена для компьютеров, не входящих в семейство Unix. Работа PC-NFS зависит
от демона pcnfsd, входящего в комплект поставки нескольких продуктов Sun.
ПРИМЕЧАНИЕ
Если демон pcnfsd отсутствует на вашем сервере NFS, вероятно, вам придется найти исходные
тексты в Интернете, откомпилировать и установить его самостоятельно. В системе Linux демон
pcnfsd называется rpc.pcnfsd.
Также существует много других клиентских программ NFS. В табл. 30.2
перечислены некоторые клиенты и приведены адреса, по которым следует
обращаться за дополнительной информацией.
Таблица 30.2. Клиентские программы NFS
Продукт Разработчик URL
Solstice NFS Client Sun Microsystems http://www.sun.com/netclient/nfs-client/
Reflection NFS Connection WRQ http://www.irq.com/
NFS Maestro Hummingbird http://www.hcl.com/products/nc/nfs/
Communications, Ltd.
Omni-NFS Xlink Technology http://www.xlink.com/
SMB и CIFS
SMB (Service Message Block) — стандарт, разработанный IBM, Microsoft и
рядом других компаний, предназначенный для организации совместного доступа
к файловым системам, принтерам и другим ресурсам. В настоящее время
поддержка SMB интегрирована в Windows NT, OS/2 и Linux, а во многих других
системах она обеспечивается продуктами независимых фирм.
За дополнительной информацией о SMB обращайтесь по адресу http://www.
samba.org/cifs/docs/what-is-smb.html.
Открытая версия протокола SMB CIFS (Common Internet File System)
создается группой разработчиков (Microsoft, SCO и др.). Предполагается, что
первоначальная реализация будет очень близка к NT LM (компонент LAN Manager
в Microsoft NT) с улучшенной поддержкой совместного доступа к ресурсам по
Интернету.
За дополнительной информацией о CIFS посетите сайт http://www.microsoft.com/
library и проведите поиск по строке CIFS.
Ниже перечислены некоторые продукты с поддержкой SMB:
О Samba.
О Windows NT, 95/98/ME/2000/XP.
О LAN Manager.
ПРИМЕЧАНИЕ
Samba — продукт класса «клиент-сервер», распространяемый с открытыми исходными текстами и
поддерживающий протоколы SMB и CIFS. Распространяется на условиях общедоступной лицензии
GNU (GNU Public License).
Samba позволяет легко организовать совместное использование сетевыми клиентами серверных
ресурсов — таких, как файловые системы и принтеры.
За дополнительной информацией обращайтесь на сайт http://www.samba.org.
Другие продукты
Кроме NFS и SMB существуют и другие продукты, предназначенные для
организации совместного доступа к ресурсам. Впрочем, большинство из них
специализируется на относительно узком круге платформ. В качестве примеров таких
протоколов можно упомянуть AppleTalk, Decnet, NetWare и т. д.
Итоги
В этой главе рассматривается протокол NFS, его история и принципы работы.
Мы познакомились с демонами и конфигурационными файлами, используемыми
NFS, а также разобрали практический пример экспортирования и монтирования
файловой системы NFS. Также были описаны другие программы и протоколы,
включая клиентские программы NFS и протокол SMB.
Из-за большого количества демонов, конфигурационных файлов и
параметров, задействованных в работе системы NFS и ее команд, в этой главе также
были кратко рассмотрены некоторые проблемы, возникающие при
использовании NFS, и приведены ссылки на источники дополнительной информации.
*J Интеграция TCP/IP
О JL с прикладными
службами
Бернард МакКарго (Bernard McCargo)
Семейство протоколов TCP/IP имеет многоуровневую структуру. Чтобы вы лучше
поняли, что это значит, рассмотрим конкретный пример — отправку электронной
почты. Непосредственные операции с почтой выполняются при помощи
специального протокола, который определяет набор команд, передаваемых с одного
компьютера на другой. Команды определяют отправителя сообщения, адресата,
текст сообщения и т. д. Однако этот протокол предполагает, что между двумя
компьютерами существует надежная связь. Протокол электронной почты, как
и другие протоколы прикладного уровня, просто определяет набор
передаваемых команд и сообщений. Он спроектирован так, что его работа основана на
использовании TCP и IP.
Протокол TCP отвечает за надежную доставку команд на другой конец
соединения. Он следит за отправленными данными и посылает заново все данные,
потерянные на пути к получателю. Если какой-либо блок данных оказывается
слишком большим для одной дейтаграммы (например, текст сообщения), он
разбивается протоколом IP на несколько дейтаграмм.
Протокол IP обеспечивает фрагментацию и восстановление дейтаграмм,
размер которых превышает значение MTU промежуточной сети. Тем не менее
правильная сборка дейтаграмм в точке приема относится к функциям TCP.
Поскольку сервис надежной доставки используется многими приложениями,
эти функции выделяются в отдельный протокол вместо того, чтобы быть
включенными в спецификацию отправки почты. Можно считать, что TCP
предоставляет библиотеку функций, используемых приложениями при необходимости
произвести надежный обмен данными с другим компьютером. В свою очередь,
TCP пользуется сервисом IP. Хотя услуги, предоставляемые TCP, используются
многими приложениями, в отдельных случаях сервис надежной передачи
оказывается излишним; в таких приложениях обычно используется протокол UDP.
Тем не менее некоторые функции необходимы каждому приложению, и эти
функции были объединены в протокол IP. С точки зрения TCP протокол IP может
рассматриваться как библиотека функций, вызываемых TCP, однако эти
функции доступны и для приложений, не использующих TCP. В результате образу-
ется многоуровневая структура протоколов. Прикладные программы типа
клиентов электронной почты, протоколы TCP и IP находятся на разных уровнях,
при этом каждый уровень пользуется услугами нижних уровней. В общем
случае приложения TCP/IP используют четыре уровня:
О прикладные протоколы (например, электронная почта);
О протоколы, функции которых используются многими приложениями (TCP);
О протокол IP, обеспечивающий базовые средства доставки дейтаграмм к месту
назначения;
О протоколы, необходимые для управления физическими средствами передачи
информации (например, Ethernet или канал «точка-точка»).
В следующих разделах каждый из этих уровней рассматривается более подробно.
Применение браузера
на представительском уровне
Представительский уровень выполняет некоторые функции, достаточно часто
используемые приложениями. Из-за частоты использования для этих функций
стоит поискать общее решение, чтобы пользователю не приходилось каждый
раз решать проблемы самостоятельно. В отличие от нижних уровней, основная
задача которых сводится к надежному перемещению битов с одного компьютера
на другой, представительский уровень учитывает синтаксис и семантику
передаваемой информации.
Типичным примером сервиса представительского уровня служил кодировка
данных в стандартном, согласованном виде. Многие пользовательские программы
передают не произвольные последовательности битов, а различные
информационные объекты — имена, даты, денежные суммы и т. д. Передаваемая информация
представляется символьными строками, целыми и вещественными числами, а
также структурами данных, состоящих из нескольких полей простых типов. В разных
системах используются разные форматы представления символьных строк, целых
чисел и т. д. Чтобы компьютеры с разным представлением данных могли
взаимодействовать друг с другом, должен существовать способ абстрактного определения
передаваемых структур данных и стандартный формат, используемый при
передаче данных в канале. Задачи управления этими абстрактными структурами
данных и преобразования представлений, используемых внутри компьютеров, в
стандартное сетевое представление, решаются на представительском уровне.
Представительский уровень также учитывает другие аспекты представления
информации. Например, для уменьшения объема передаваемой информации
может применяться сжатие данных, а для обеспечения конфиденциальности
и при аутентификации часто используется шифрование.
ПРИМЕЧАНИЕ
Хотя шифрование относят к представительскому уровню, оно не является исключительной
функцией этого уровня. Во многих стандартах (например, IPSec) шифрование реализуется в составе
сетевого уровня (IPv6) или на отдельном подуровне, находящимся между сетевым и транспортным
уровнями (IPv4).
Анализируя возможности использования браузера на представительском уровне,
следует учитывать некоторые особенности, относящиеся к специфике
представления данных в браузере — например, фреймы. В работе сервера (в том числе
и сервера HTTP) наличие фреймов не учитывается. Сервер всего лишь получает
информацию по заданному URL и помещает ее туда, куда потребует браузер.
Интеграция TCP/IP с унаследованными
приложениями
Интеграция TCP/IP с унаследованными приложениями превращается в обыденное
явление. Некоторые фирмы-производители интегрируют TCP/IP в стандартные
протоколы, как видно на примере таких продуктов, как NetWare 5 и NetWare 6.
Другие компании обеспечивают интеграцию TCP/IP с другими протоколами
при помощи специальных преобразователей (также называемых шлюзами).
Интегрированная поддержка TCP/IP в приложениях обладает рядом
преимуществ, в том числе:
О упрощение выбора TCP/IP за счет полной интеграции выбора протокола в
процесс установки приложения;
О упрощение управления IP-адресами через серверы DHCP/BootP за счет
предоставления постоянного пула IP-адресов, автоматически назначаемых
пользователям по мере необходимости;
О мобильные пользователи, подключающиеся к Интернету через SLIP или РРР,
могут работать с серверами приложений, находящимися в любой точке
земного шара;
О повышение эффективности работы глобальной сети за счет ликвидации
лишнего широковещательного трафика, разгрузка каналов и повышение реальной
пропускной способности;
О возможность использования сетевых устройств на базе IP (например,
принтеров, подключенных к хостам Unix);
О возможность предоставления полного доступа к сетевым ресурсам для
широкого круга настольных клиентов, включая DOS, Windows 3.1, Windows for
Workgroups, Windows 9x, Windows NT/2000 Server и Workstation.
Использование TCP/IP в других сетях
В некоторых сетях TCP/IP является лишь одним из используемых протоколов.
В таких случаях очень важно правильно организовать взаимодействие TCP/IP
(и других протоколов этого семейства) с другими протоколами. Уровни
протокола TCP/IP проектировались независимыми друг от друга, что обеспечивало
их смешанное использование. При пересылке сообщения по сети на удаленный
компьютер каждый уровень протокола получает информационный пакет от
верхнего уровня, добавляет к нему собственный заголовок и передает пакет еле-
дующему нижнему уровню. Получив пакет по сети (в формате, определяемом
требованиями сети), получатель передает его по уровням стека протоколов в
обратном порядке, последовательно удаляя из него служебные заголовки.
Во время передачи пакета по уровням информация протоколов нижних
уровней определяет, каким протоколом верхнего уровня должен обрабатываться пакет.
При замене любого уровня в стеке протоколов новый протокол должен
работать со всеми остальными уровнями, а также выполнять все обязательные
функции этого уровня (в частности, воспроизводить функциональность
замененного протокола). Процесс начинается с получения сообщения от протокола
верхнего уровня, который в свою очередь передает сообщение от приложения,
расположенного еще выше. Получив сообщение, TCP включает в него
собственный заголовок и передает протоколу IP, который делает то же самое. Когда
сообщение IP передается уровню Ethernet, последний добавляет собственную
информацию в начало и конец сообщения и передает сообщение по сети. При
работе с другими операционными системами или сетевыми архитектурами часто
требуется заменить один или несколько уровней структуры TCP/IP уровнями
другой системы.
Ниже приведены примеры служб, использующих разные уровни сети.
NetBIOS и TCP/IP
Служба NetBIOS расположена в иерархии уровней над протоколами TCP и UDP,
хотя обычно она прочно связана с ними (поэтому четко разделить эти два уровня
не удается). NetBIOS обеспечивает логическую связь приложений на верхних
уровнях, предоставляет сервис обмена сообщениями и распределения ресурсов.
Для работы NetBIOS выделяются три порта: для службы имен NetBIOS
(порт 137), для службы дейтаграмм (порт 138) и для сеансовой службы (порт
139). Также поддерживается механизм отображения имен DNS (Domain Name
Service) и сервером имен NetBIOS NBNS (NetBIOS Name Server). Сервер имен
NetBIOS предназначен для идентификации компьютеров, работающих в зоне
NetBIOS. В интерфейсе NetBIOS/TCP отображение имен используется для
формирования имен DNS.
На компьютерах с системой Windows протокол IP можно настроить так, чтобы
он работал на базе NetBIOS, с полным исключением TCP и UDP и работой
NetBIOS в режиме, не ориентированном на соединение. В этом случае NetBIOS
берет на себя функции уровня TCP/IP, а задачи обеспечения целостности данных,
соблюдения порядка пакетов и управления потоком данных должны решаться
протоколами верхнего уровня. В этой архитектуре NetBIOS инкапсулирует
дейтаграммы IP. Чтобы в пакетах NetBIOS отражались IP-адреса, необходимо
наличие жесткого соответствия между IP-адресами и именами NetBIOS (для чего
в NetBIOS кодируются имена вида lP.nnn.nnn.nnn.nnn).
В сетях такого типа вся необходимая функциональность протокола TCP
эмулируется протоколами верхнего уровня, однако у такой сетевой архитектуры
есть свои преимущества — простота и эффективность. В некоторых сетях такой
подход работает достаточно хорошо, хотя иногда возникают проблемы с
разработкой подходящих протоколов верхнего уровня.
ПРИМЕЧАНИЕ
С другой стороны, работа сети на базе NetBIOS создает свои трудности. На протокольном уровне
NetBIOS часто реализуется в контексте протокола NetBEUI. Протокол NetBEUI не
маршрутизируется, а это значит, что он плохо масштабируется при построении больших сетей. Другая
проблема — чрезмерное применение широковещательной рассылки. Широковещательная рассылка
снижает фактическую пропускную способность сети, а многие маршрутизаторы по умолчанию
блокируют широковещательные пакеты. В случае доменов Windows NT из-за блокировки
широковещательных пакетов на маршрутизаторах появилось правило, согласно которому каждая подсеть
должна иметь свой главный браузер (лишние сложности). Начиная с Windows 2000, фирма Microsoft
отказалась от использования NetBIOS. Протоколы SMB (Server Message Block) и MS-RPC (Microsoft
Remote Procedure Call) можно настроить на работу в «чистой» сети IP, не использующей NBT
(NetBIOS over TCP/IP). В сетях Windows 2000 протокол NetBIOS нужен только для поддержки
клиентов предыдущего поколения, включая Windows NT и Windows 9x.
IPX и UDP
В сетевом продукте Novell NetWare имеется сходный с IP протокол IPX (Internet
Packet Exchange), основанный на протоколе Xerox XNS. Для обмена данными,
не ориентированного на соединение, IPX обычно использует UDP, хотя в
сочетании с LLC типа 1 может использоваться протокол TCP.
Вертикальная иерархия уровней (работа IPX на базе UDP) означает, что
заголовки UDP и IP остаются без изменений, а информация IPX инкапсулируется
как часть стандартного процесса обработки сообщений. Как и в случае с
другими сетевыми протоколами, необходима схема отображения между адресами IP
и адресами IPX. В IPX идентификаторы сети и хоста занимают четыре и шесть
байт соответственно. При передаче UDP эти идентификаторы автоматически
преобразуются.
Сеть IPX можно перенастроить таким образом, чтобы вместо UDP в ней
использовался протокол TCP, с заменой протокола LLC типа 1, не
ориентированного на соединение. При использовании подобной архитектуры отображение
адресов IP выполняется средствами ARP.
Итоги
Многим приложениям приходится решать типовые задачи — открывать
подключение к заданному компьютеру, регистрироваться в системе, запрашивать
файлы и управлять их пересылкой. Эти задачи решаются при помощи
прикладных протоколов, которые работают на базе TCP/IP. Иначе говоря, когда
приложению требуется отправить некоторое сообщение, оно передает это сообщение
протоколу TCP, который обеспечивает его надежную доставку на другой конец
подключения. Поскольку TCP и IP берут на себя все технические детали
сетевого обмена данными, прикладные протоколы могут интерпретировать
межсетевое подключение как простой поток байтов (по аналогии с терминалом или
модемным подключением).
*Э *% Почтовые протоколы
*■} ёы Интернета
Нил С. Джеймисоп (Neal S.Jamison)
Несомненно, электронная почта остается самой популярной службой Интернета.
Без всякого преувеличения можно сказать, что электронная почта изменила
стандарты общения между людьми в современном мире.
Электронная почта
Все мы ежедневно общаемся с другими людьми — членами семьи, друзьями и
коллегами. Одной из важнейших технологий, появившихся в информационную
эпоху, стала электронная почта. Когда вы читаете эти строки, в Интернете
передаются бесчисленные сообщения, содержащие деловую и личную информацию
на компьютеры миллионов пользователей.
В этом разделе кратко описаны концепции электронной почты и пути ее
эволюции к современному состоянию. Читатель познакомится со стандартами, на
основе которых работает электронная почта, и группами, которые вырабатывают
эти стандарты.
История электронной почты
Интернет предназначался для повышения качества связи между
правительственными учеными и технологами, работавшими над проектом. И хотя появлению
электронной почты предшествовали другие механизмы обмена данными, сейчас
электронная почта считается наиболее часто используемой службой Интернета.
Впрочем, за это время Интернет давно вырос за рамки простой среды
транспортировки электронной почты.
Первые системы электронной почты представляли собой простые программы,
предназначенные для копирования сообщений в почтовые ящики пользователей.
В то время электронная почта обслуживала только локальных пользователей:
один пользователь многопользовательского компьютера отправлял сообщения
другим пользователям, работающим на том же компьютере. Этим все и
ограничивалось. С появлением таких продуктов, как cc:Mail, и других специализированных
решений для работы с электронной почтой обмен сообщениями вышел в
локальную сеть. Через некоторое время появились так называемые почтовые шлюзы,
при помощи которых пользователь одного сервера электронной почты мог
отправлять и принимать сообщения от других серверов. Шлюзы обеспечивали
взаимодействие разнотипных почтовых систем. Например, пользователи cc:Mail
использовали шлюзы для отправки сообщений пользователям Microsoft Mail из
других организаций. Впрочем, шлюзы продолжали отправлять и получать
сообщения в специализированных форматах. Появилась необходимость в стандарте.
Стандарты и их разработчики
На самом деле в области электронной почты существует два основных стандарта.
Стандарт Х.400 был разработан группой ITU-TSS (International
Telecommunications Union-Telecommunications Standards Sector) и Международной
организацией по стандартизации ISO. Протокол SMTP (Simple Mail Transfer Protocol)
был создан в ходе ранних исследований и разработок в области Интернета, а его
стандартизация производилась группой IETF. В следующих разделах оба
стандарта рассматриваются более подробно.
Х.400
Первая спецификация протокола Х.400 появилась в 1984 году и была обновлена
в 1988 году Х.400 — сложный, обладающий широкими возможностями протокол
обмена сообщениями. Тем не менее из-за своей сложности и недостаточной
поддержки со стороны фирм-производителей он не получил такого широкого
распространения, как SMTP. По этой причине в этой главе Х.400 лишь
представлен в общих чертах, а фактический стандарт электронной почты Интернета
SMTP рассматривается гораздо подробнее.
ПРИМЕЧАНИЕ
В мире электронной почты используются специальные термины, описывающие компоненты систем
электронной почты:
Пользовательский агент UA (User Agent) — клиентская программа, работающая на компьютере
пользователя и предназначенная для создания и чтения сообщений электронной почты.
Агент передачи сообщений МТА (Message Transfer Agent) — сервер электронной почты. МТА
хранит и пересылает сообщения.
Хранилище сообщений MS (Message Store) — хранит сообщения до того, как они будут прочитаны
или иным образом обработаны получателем.
Сообщения Х.400 могут содержать структурированную информацию и
вложения. Они обладают атрибутами, определяющими условия доставки и
дополнительные характеристики сообщения. Примерами таких атрибутов являются:
О важность;
О приоритет;
О срок жизни;
О подтверждение доставки;
0 предельный срок ответа.
Схема адресации Х.400, как и структура сообщений, относительно сложна.
В табл. 32.1 перечислены основные атрибуты, входящие в адреса Х.400.
Таблица 32.1. Основные атрибуты Х.400
Атрибут Описание
G Имя
1 Инициал
S Фамилия
Q Поколение (Jr., Sr.)
CN Общее имя
О Организация
OU Отдел
Р Частный домен
А Административный домен
С Страна
Для примера рассмотрим следующий адрес:
C=US;A=XXX;P=Acme;0=Acme;OU=IT'S=Jamison;G=Neal
В приведенном адресе указана страна США (C=US); административный
домен (или компания, предоставляющая сервис Х.400) XXX (А=ХХХ); частный
домен Acme (P=Acme); организация или работодатель Acme @=Acme) и отдел
информационных технологий (OU=IT). Имя в пояснениях не нуждается.
Сравните с адресом SMTP jamisonn@company.com.
ПРИМЕЧАНИЕ
Одной из сложностей стандарта Х.400 является его схема адресации. В отличие от адресов SMTP
(пользователь@домен.сот) адреса Х.400 бывают достаточно сложными. На помощь приходят
службы каталогов Х.500 и LDAP, протоколы которых определяют стандартный формат
структуры глобальных каталогов. Почтовые системы Х.400 могут использовать эти каталоги для поиска
адресатов.
За дополнительной информацией о Х.500 и LDAP обращайтесь к главе 18, RFC 2256 или на сайт
ITU (http://www.itu.int/).
Сложная структура адресов Х.400 обладает как очевидными достоинствами,
так и недостатками.
Достоинства:
О схема адресации прекрасно подходит для приложений, работающих со
сложными и/или защищенными данными (например, электронных магазинов);
О хорошая защищенность данных;
О надежный механизм оповещения о невозможности доставки;
О международная стандартизация.
Недостатки:
О высокая стоимость реализации;
О большие затраты на настройку и администрирование;
О недостаточная поддержка со стороны фирм-производителей;
О многие замечательные возможности Х.400 (например, защита данных) еще
не используются приложениями.
За дополнительной информацией о Х.400 обращайтесь на сайт ITU http://
www.itu.int/.
SMTP
Стандартом электронной почты в Интернете является протокол SMTP (Simple
Mail Transfer Protocol). Это протокол прикладного уровня, обеспечивающий
сервис доставки сообщений в сетях TCP/IP. Протокол SMTP был разработан
в 1982 году группой IETF; в настоящее время его спецификация содержится
в RFC 821 и 822.
SMTP использует порт TCP с номером 25.
ПРИМЕЧАНИЕ
Хотя SMTP является самым распространенным протоколом электронной почты, он не обладает
некоторыми нетривиальными возможностями X .400. Главным недостатком стандартного варианта
SMTP является то, что он поддерживает только текстовые сообщения.
MIME и SMTP
Стандарт MIME (Multipurpose Internet Mail Extensions) дополняет SMTP и
позволяет включать в стандартные сообщения SMTP мультимедийные (то есть не
текстовые) данные. Для преобразования двоичных файлов в ASCII используется
кодировка Base64.
MIME — относительно новый стандарт. Хотя в настоящее время он
поддерживается практически всеми клиентскими приложениями, нельзя полностью
исключать того, что он не будет поддерживаться вашей почтовой программой.
В таких случаях обычно используются другие способы кодировки двоичных
данных (BinHex или uuencode), описанные ниже.
Стандарт MIME описан в RFC 2045-2049.
S/MIME
Существует новая спецификация MIME, которая позволяет передавать
шифрованные сообщения. S/MIME использует технологию шифрования с открытым
ключом RSA и предотвращает перехват и фальсификацию сообщений.
Текущая спецификация S/MIME приведена в RFC 2311 и 2312.
ПРИМЕЧАНИЕ
Название RSA составлено из первых букв фамилий его разработчиков — Ривест (Rivest), Шамир
(Shamir) и Адельман (Adelman). Алгоритм RSA обеспечивает шифрование с открытым ключом.
Базовый принцип шифрования с открытым ключом основан на том, что данные, зашифрованные
с открытым ключом, могут быть расшифрованы только с использованием закрытого ключа. В
стандарте S/MIME пользовательский агент отправителя шифрует произвольную строку данных с
использованием открытого ключа получателя. Затем пользовательский агент получателя
расшифровывает сообщение, используя закрытый ключ.
За дополнительной информацией о RSA обращайтесь на сайт http://www.rsa.com/.
Другие стандарты кодировки двоичных данных
Наряду с MIME существуют и другие стандарты кодировки сообщений.
Наибольшей известностью пользуются BinHex и uuencode.
BinHex (сокращение от «Binary Hexadecimal») некоторые считают версией
MIME для Macintosh. Стандарт uuencode (сокращение от «Unix-to-Unix
Encoding») первоначально создавался для системы Unix, но в наше время он
поддерживается на множестве других платформ. Хотя между MIME, uuencode и BinHex
существует ряд принципиальных различий, все эти стандарты решают общую
задачу — пересылку произвольных двоичных данных в текстовых сообщениях.
Выбор механизма кодировки зависит от того, какие пользовательские агенты
используются на вашем компьютере и на компьютерах получателей. К счастью,
большинство современных агентов автоматически кодируют и декодируют
двоичные данные.
Команды SMTP
Простота SMTP отчасти обусловлена малым количеством используемых команд.
Команды SMTP перечислены в табл. 32.2.
Таблица 32.2. Команды SMTP (по спецификации RFC 821)
Команда Описание
НЕЮ Используется для идентификации отправителя на стороне получателя. Команда
сопровождается именем хоста-отправителя. В расширенной версии протокола
(ESMTP) используется команда EHLO. Дополнительная информация приведена
в разделе «Расширение SMTP»
MAIL Начинает операцию по пересылке почты. Аргументы команды включают поле
«From», то есть отправителя сообщения
RCPT Идентифицирует получателя сообщения
DATA Сообщает о начале пересылаемых данных (основного текста сообщения).
Данные содержат произвольные ASCII-коды и завершаются отдельной строкой,
состоящей из символа «точка» (.)
RSET Отменяет текущую операцию
VRFY Используется для проверки получателя
NOOP Команда не выполняет никаких действий
Команда Описание
QUIT Закрывает подключение
SEND Сообщает хосту-получателю о том, что сообщение должно быть отправлено
на другой терминал
Следующие команды определены в RFC 821, но не являются обязательными
SOML Send OR Mail. Сообщает хосту-получателю о том, что сообщение должно быть
отправлено на другие терминалы или почтовые ящики
SAML Send OR Mail. Сообщает хосту-получателю о том, что сообщение должно быть
отправлено на другие терминалы или почтовые ящики
EXPN Используется для расширения списка рассылки
HELP Запрашивает справочную информацию с хоста-получателя
TURN Требует, чтобы хост-получатель принял на себя роль отправителя
Как видно из следующего примера, команды SMTP имеют простой синтаксис:
220 receivingdomain.com
Server E5MTP Sendmail 8.8.8+Sun/8.8.8; Fri. 30 Jul 1999 09:23:01
HELO host.sendingdomain.com
250 receivingdomain.com Hello host, pleased to meet you
MAIL FROM:<username@sendi ngdomai n.com>
250 <username@sendingdomain.com> Sender ok.
RCPT TO:<username@receivi ngdomai n.com>
250 <username@receivingdomain.com> Recipient ok.
DATA
354 Enter mail, end with '.' in a line by itself
Here goes the message
250 Message acepted for delivery
QUIT
221 Goodbye host.snedingdomain.com
Полученное сообщение выглядит примерно так:
From username@sendingdomain.com Fri Jul 30 09:23:39 1999
Date: Fri. 30 Jul 1999 09:23:15 -0400 (EDT)
From: useгname@sendingdomain.com
Message-Id:<199907301326.JAA137 34@mai1.receivingdomain.com>
Content-Length: 23
Here goes the message.
Коды состояния SMTP
Когда МТА-отправитель передает команды SMTP МТА-получателю,
последний возвращает специальные коды состояния, по которым отправитель узнает
о результатах выполнения операций. В табл. 32.3 перечислены коды состояния
SMTP в соответствии со спецификацией RFC 821. Коды группируются по
признаку состояния, определяемому первой цифрой кода (lxx-Зхх — успех, 4хх —
временные затруднения, 5хх — неудача).
Таблица 32.3. Коды состояния SMTP
Код Описание
211 Справочный ответ, статус системы
214 Справочное сообщение
220 Служба готова к работе
221 Закрытие подключения
250 Запрашиваемая операция разрешена
251 Пользователь не является локальным, перенаправление по заданному пути
354 Начало ввода почты
421 Служба недоступна
450 Операция не выполнена, почтовый ящик занят
451 Операция отменена, локальная ошибка
452 Операция не выполнена из-за нехватки места
500 Неопознанная команда (или синтаксическая ошибка)
501 Синтаксическая ошибка в параметрах или аргументах
502 Команда не поддерживается
503 Нарушена последовательность команд
504 Параметр не поддерживается
550 Операция не выполнена, почтовый ящик недоступен
551 Пользователь не является локальным
552 Отмена: превышение объема выделенного блока
553 Операция не выполнена, недопустимое имя почтового ящика
554 Сбой при выполнении операции
Числовые коды определены в RFC. С другой стороны, хотя в RFC
рекомендуется примерный вид сопроводительного текста, окончательный выбор остается
за администратором МТА. Иногда администраторы дают волю фантазии.
Расширение SMTP
Протокол SMTP на практике доказал свою силу и полезность. Тем не менее
возникла потребность в расширениях стандартной версии SMTP. В RFC 1869
определены средства добавления новых расширений SMTP. Документ не
содержит списка конкретных расширений, а описывает механизм добавления
нужных команд. Примером может послужить команда SIZE, при помощи которой
хост-получатель ограничивает размер входящих сообщений. Без применения
ESMTP это было бы невозможно.
При подключении к МТА система может передать команду EHLO —
расширенную версию команды HELO. Если МТА поддерживает расширение SMTP
(ESMTP), он отвечает списком поддерживаемых команд. Если ESMTP не
поддерживается, МТА выдает код ошибки E00: неопознанная команда), а
хост-отправитель возвращается к SMTP. Ниже приведен пример транзакции SMTP.
220 esmtpdomain.com
Server ESMTP Sendmail 8.8.8+Sun/8.8.8; Thu, 22 Jul 1999 09:43:01
EHLO host.sendingdomain.com
250-mail.esmtpdomain.com Hello host, pleased to meet you
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-&SN
250-ONEX
250-ETRN
250-XUSR
250 HELP
QUIT
221 Goodbye host.sendingdomain.com
В табл. 32.4 приведены основные команды ESMTP.
Таблица 32.4. Основные команды ESMTP
Команда Описание
EHLO Расширенная версия НЕЮ
8ВГГМ1МЕ 8-разрядная кодировка MIME
SIZE Определение предельного размера сообщения
Заголовки SMTP
Внимательное изучение заголовков SMTP приносит достаточно обширную
информацию. Вы можете узнать не только имя отправителя, тему, дату отправки
и предполагаемого получателя, но и просмотреть все промежуточные точки на
пути сообщения к вашему почтовому ящику. В RFC 822 указано, что заголовок
сообщения должен содержать как минимум данные отправителя (поле From),
дату и адресата (поля ТО, СС или ВСС).
Достоинства и недостатки SMTP
Протокол SMTP, как и Х.400, обладает специфическими достоинствами и
недостатками.
Достоинства:
О Чрезвычайная популярность протокола SMTP.
О Поддержка со стороны многих производителей на многих платформах.
О Низкие затраты на реализацию и администрирование.
О Простая схема адресации.
ПРИМЕЧАНИЕ
С технической точки зрения поля ТО и СС идентичны. Термин СС (Carbon Copy, то есть «копирка»)
остался с тех времен, когда при печати на пишущих машинках для создания копий применялась
копировальная бумага.
В поле заголовка Received хранится список узлов, на которых побывало сообщение перед
доставкой в ваш почтовый ящик. Содержимое поля Received существенно упрощает диагностику
возникающих проблем. Рассмотрим следующий пример:
From someone@mydomain.COM Sat Jul 31 11:33:00 1999
Received: from hostl.mydomain.com by host2.mydomain.com (8.8.8+Sun/8.8.8)
with ESMTP id LAA21968 for <jamisonn@host2.mydomain.com>;
Sat, 31 Jul 1999 11:33:00 -0400 (EDT)
Received: by hostl.mydomain.com with Internet Mail Service E.0.1460.8)
id <KNJ6NT2Q>; Sat, 31 Jul 1999 11:34:39 -0400
Message-ID: <C547FF20D6E3DUlB4BF0020AFF588113101AF@hostl.mydomain.com>
From: "Your Friend" <someone@mydomain.COM>
To: ",jamisonn(a)host2.mydomain.com'" <jamisonn@host2.mydomain.com>
Subject: Hello There
Date: Sat, 31 Jul 1999 11:34:36 -0400
Анализ заголовка показывает, что сообщение было отправлено с адреса someone@mydomain.com.
Из домена mydomain.com оно было доставлено на хост hostl. После hostl сообщение было
получено хостом host2, на котором оно было доставлено адресату. На каждой промежуточной остановке
хост-получатель обязан включить в сообщение свой заголовок с пометкой даты/времени.
Интересно заметить, что в приведенном примере в этих пометках существуют расхождения. Хост host2
(получатель) сообщает, что сообщение было получено в 11:33:00. С другой стороны, хост hostl
указывает, что сообщение было принято в 11:34:36, то есть через минуту после его получения.
Расхождения объясняются десинхронизацией часов на двух хостах.
Недостатки:
О Отсутствие некоторых нетривиальных функций.
О Недостаточный уровень безопасности по сравнению с Х.400.
О Простота протокола ограничивает возможности его практического применения.
Получение почты с применением POP и IMAP
На ранних порах существования электронной почты Интернета пользователям
приходилось подключаться к серверу, чтобы прочитать свои сообщения.
Почтовые программы обычно работали в текстовом режиме и не обладали
элементарными удобствами, привычными для многих пользователей. Были разработаны
протоколы, которые позволяли доставлять сообщения электронной почты
прямо на рабочие станции пользователей. Эти протоколы также оказались очень
удобными для «блуждающих» пользователей, работающих за разными
компьютерами.
В настоящее время чаще всего применяются протоколы POP (Post Office
Protocol) и ШЛР (Internet Mail Access Protocol).
Протокол POP
Протокол POP позволяет локальным пользовательским агентам подключаться
к МТА и загружать сообщения на локальный компьютер для чтения и
составления ответов. Первая спецификация POP появилась в 1984 году, а в 1988 году
вышла обновленная версия РОР2. Текущим стандартом протокола является РОРЗ.
Пользовательские агенты РОРЗ подключаются к серверу через TCP/IP (обычно
с использованием порта 110). Пользовательский агент указывает имя и пароль,
которое хранится в служебных данных (более удобный вариант) или каждый
раз вводится пользователем заново (более безопасный вариант). После
прохождения авторизации пользовательский агент выдает команды РОРЗ,
предназначенные для чтения и удаления сообщений.
Протокол РОРЗ предназначен только для принятия сообщений. Для отправки
почты на сервер пользовательские агенты используют протокол SMTP.
Спецификация РОРЗ приведена в RFC 1939.
Список команд РОРЗ приведен в табл. 32.5.
Таблица 32.5. Команды РОРЗ
Команда Описание
USER Передача имени пользователя
PASS Передача пароля
STAT Запрос информации о состоянии почтового ящика (количество и размер сообщений)
LIST Вывод списка сообщений
RETR Прием заданных сообщений
DELE Удаление заданных сообщений
NOOP Нет операции
RSET Отмена удаления сообщений (откат)
QUIT Закрепление изменений и отключение от сервера
Протокол IMAP
Протокол РОРЗ чрезвычайно прост и удобен для приема сообщений
пользовательским агентом. Тем не менее его простота иногда оборачивается отсутствием
нужных возможностей. Например, РОРЗ работает только в автономном режиме,
то есть сообщения загружаются пользовательским агентом и удаляются с сервера.
ПРИМЕЧАНИЕ
В некоторых реализациях РОРЗ поддерживается режим «псевдоподключения», который позволяет
оставлять сообщения на сервере.
Протокол ШАР (Internet Mail Access Protocol) стремится заполнить пробелы,
присущие РОРЗ. Протокол ШАР был разработан в 1986 году в Стэнфордском
университете, а первая реализация IMAP2 появилась в 1987 году. Последняя
версия IMAP4 была принята в качестве стандарта Интернета в 1994 году (а ее спе-
цификация определена в RFC 2060). Протокол IMAP4 работает на порте TCP
с номером 143.
В табл. 32.6 приведен список команд IMAP4 в соответствии с RFC 2060.
Таблица 32.6. Команды IMAP4
Команда Описание
CAPABILITY Запрос списка поддерживаемых возможностей
AUTHENTICATE Определение механизма аутентификации
LOGIN Передача имени пользователя и пароля
SELECT Выбор почтового ящика
EXAMINE Просмотр содержимого почтового ящика в режиме «только для чтения»
CREATE Создание почтового ящика
DELETE Удаление почтового ящика
RENAME Переименование почтового ящика
SUBSCRIBE Включение почтового ящика в активный список
UNSUBSCRIBE Исключение почтового ящика из активного списка
LIST Вывод списка почтовых ящиков
LSUB Вывод списка почтовых ящиков в активном списке
STATUS Запрос информации о состоянии почтового ящика (количество
сообщений и т. д.)
APPEND Включение сообщения в почтовый ящик
CHECK Запрос контрольной точки для почтового ящика
CLOSE Подтверждение удалений и закрытие почтового ящика
EXPUNGE Подтверждение удалений
SEARCH Поиск в почтовом ящике сообщений, удовлетворяющих заданному критерию
FETCH Выборка частей заданного сообщения
STORE Модификация данных указанных сообщений
COPY Копирование сообщений в другой почтовый ящик
NOOP Нет операции
LOGOUT Закрытие подключения
Сравнение РОРЗ с IMAP4
Между протоколами POP 3 и IMAP4 существует ряд принципиальных
различий. В зависимости от пользовательского агента, МТА и ваших конкретных
потребностей можно использовать один из двух протоколов и даже оба сразу.
Главными протоколами протокола РОРЗ являются:
О чрезвычайная простота;
О широкая поддержка.
Однако из-за своей простоты протокол РОРЗ часто обладает ограниченными
возможностями. Например, он может работать только с одним почтовым
ящиком, а загруженные сообщения должны удаляться с сервера (хотя во многих
реализациях поддерживается режим «псевдоподключения», который позволяет
оставлять сообщения на сервере.
У IMAP4 есть свои премущества:
О усиленная аутентификация;
О поддержка нескольких почтовых ящиков;
О улучшенная поддержка автономного и подключенного режимов работы.
Поддержка подключенного режима в ШАР4 позволяет принять с сервера
часть сообщений, проводить поиск и загружать сообщения по определенным
критериям и т. д. IMAP4 также позволяет пользователям и пользовательским
агентам перемещать сообщения между папками на сервере и удалять некоторые
сообщения. IMAP4 лучше подходит для мобильных пользователей, работающих
за несколькими компьютерами, и для пользователей с несколькими почтовыми
ящиками.
Главный недостаток IMAP4 — то, что он не получил широкого
распространения среди поставщиков услуг Интернета, хотя в наши дни существует немало
клиентов и серверов IMAP4.
Нетривиальные возможности
электронной почты
С увеличением количества пользователей электронной почты расширяется и круг
вопросов, связанных с ее применением. В этом разделе освещены некоторые
темы, представляющие интерес для пользователей электронной почты —
безопасность, спам и новые виды почтового сервиса.
Безопасность
Безопасность играет важную роль при работе с электронной почтой — как,
впрочем, и в любой области, относящейся к компьютерным сетям. А в обеспечении
безопасности очень важную роль играют механизмы надежной и
конфиденциальной доставки сообщений.
Шифрование
Как упоминалось выше, стандарт S/MIME позволяет шифровать данные в
сообщениях электронной почты. Шифрование защищает данные и гарантирует, что
сообщения не будет искажены в процессе передачи.
На практике также часто используется механизм шифрования сообщений
PGP (Pretty Good Privacy). В PGP для шифрования и расшифровки сообщений
используются пары, состоящие из открытого и закрытого ключа. Отправитель
шифрует сообщение с открытым ключом получателя, а получатель расшифро-
вывает сообщение с закрытым ключом. За дополнительной информацией о PGP
обращайтесь на сайт http://www.pgp.com.
Цифровые подписи позволяют убедиться в том, что сообщение действительно
исходит от указанного отправителя. Механизм цифровых подписей также
основан на шифровании с парными ключами. Дополнительная информация о
цифровых подписях приводится по адресу http://www.verisign.com/client/index.html.
Вопросы конфиденциальности электронной почты и шифрования
рассматриваются в RFC 1421-1424.
Фильтры
Фильтры электронной почты работают по тому же принципу, что и
брандмауэры. Входящие и исходящие сообщения сканируются на соответствие критериям,
установленным администраторами и лицами, ответственными за работу почтовой
системы. Подобные средства часто применяются в организациях, занимающихся
передовыми научными исследованиями и следящими за тем, чтобы данные не
попали в руки конкурентов. Организация устанавливает фильтр электронной
почты и блокирует отправку некоторых типов вложений (например, чертежей,
схем или проектной документации). Фильтрация также применяется для
блокировки оскорбительных сообщений (определяемых по ключевым словам) и спа-
ма, а также блокировки вложений, зараженных вирусами или недопустимых по
другим причинам.
Вирусы
С появлением многочисленных компьютерных и почтовых вирусов эта тема
стала весьма актуальной. Хотя переслать вирус в обычном ASCII-тексте
сообщения электронной почты невозможно, вирусы могут внедряться во вложения.
Многие почтовые вирусы используют поддержку макросов в почтовых
клиентах — например, клиентах от Microsoft (Outlook и Outlook Express).
ПРИМЕЧАНИЕ
Вирус Melissa наглядно убедил многих пользователей электронной почты в необходимости
сканировать сообщения в поисках вирусов.
За дополнительной информацией о вирусах обращайтесь на сайт ISOC по
адресу http://www.isoc.org/internet/issues/viruses.
Фальсификация
Из-за слабой защищенности протокола SMTP злоумышленник может подделать
сообщение электронной почты или придать ему такой вид, словно оно было
отправлено кем-то другим. Например, для подключения к порту SMTP можно
воспользоваться командой SMTP. После подключения фальсификатор вводит те же
команды, которые обычно вводит МТА. Рассмотрим следующий сеанс SMTP:
% telnet mail.mydomain.com 25
Trying...
Connected to mail.mydomain.com.
Escape character is ,л] ' .
220 host.mydomain.com ESMTP Sendmail 8.8.8+Sun/8.8.8;
Fri, 30 Jul 1999 09:23:01
help
214-This is Sendmail version 8.8.8+Sun
214-Topics
214- HELO EHLO MAIL RCPT DATA
214- RSET NOOP QUIT HELP VRFY
214- EXPN VERB ETRN DSN
214-For more info use "HELP <topic>".
help mail
214-MAIL FROM: <sender> [ <parameters> ]
214- Specifies the sender. Parameters are ESMTP extensions.
214- See "HELP DSN" for details.
214 End of HELP info
helo fakedomain.com
250 mail.mydomain.com Hello realhost.mydomain.com, pleased to meet you
mail from:<charlatan@fakedomain.com>
250 <charlatan@fakedomain.com>... Sender ok
rcpt to:jamisonn
250 jamisonn... Recipient ok
data
354 Enter mail, end with "." on a line by itself
This is not really from charlatan@fakedomain.com.
250 MAA07012 Messsage accepter for delivery
quit
221 mail.mydomain.com closing connection
Connection closed by foreign host.
$
Обратите внимание: настоящее имя хоста известно и указано в ответе 250 на
команду HELO. В итоге пользователю jamisonn будет отправлено следующее
сообщение:
From charlatan@fakedomain.com Sun Aug 1 12:18:08 1999
Date: Sun, 1 Aug 1999 12:17:43 -0400 (EDT)
From: charlatan@fakedomain.com
Message-Id: <199908011617.MAA07012@realhost.mydomain.com>
Content-Length: 50
This is not really from charlatan@fakedomain.com.
Хотя на первый взгляд кажется, что сообщение было отправлено с адреса
charlatan@fakedomain.com, внимательное изучение заголовка обнаруживает
настоящее имя хоста в строке Message-Id.
Предупреждение для тех, кому захочется опробовать эту возможность на
практике: квалифицированные администраторы используют хитроумные
системы инкапсуляции данных и ведения журналов, которые обнаружат личность
настоящего отправителя или даже сделают фальсификацию невозможной.
Фальсификация электронной почты — нехорошее дело, и приведенный выше пример
всего лишь демонстрирует теоретическую возможность.
Спам и другие нежелательные сообщения
В последнее время между электронными и «железными» почтовыми ящиками
возникло одно раздражающее сходство: и те и другие быстро заполняются
рекламным мусором.
Рекламные сообщения электронной почты (на сетевом жаргоне называемые
спамом) в последнее время стали серьезной проблемой. На наши почтовые ящики
обрушивается шквал объявлений о распродажах, схемах быстрого обогащения
и других ненужных и раздражающих объявлений. Наши адреса электронной
почты становятся объектом купли-продажи или обмена наряду с обычными
адресами. Результат — заполнение почтовых ящиков электронной макулатурой.
Интересный способ блокировки этих раздражающих сообщений основан на
использовании «фильтрации от идиотов» и «убойных файлов». Эти инструменты
с устрашающими названиями интегрируются в некоторые почтовые агенты и
обеспечивают блокировку сообщений, удовлетворяющих некоторым условиям. Самая
распространенная реализация просматривает заголовок SMTP входящего
сообщения и ищет адрес отправителя или ключевые слова темы в «файле идиотов».
Если фильтр не находит никаких нарушений, сообщение пропускается дальше.
Но если сообщение было отправлено «идиотом» или содержит «идиотскую»
тему, оно либо удаляется, либо перемещается в специальный «мусорный»
почтовый ящик на случай, если вы хотите что-нибудь с ним сделать в будущем.
Меры борьбы со спамом не ограничиваются фильтрацией, однако эта тема
выходит за рамки настоящей главы. За дополнительной информацией
обращайтесь на сайт http://spam.abuse.net или на страницу ISOC, посвященную борьбе со
спамом, по адресу http://www.isoc.org/internet/issues/spamming/.
Анонимный сервис электронной почты
и пересылка
Анонимность в Интернете создает некоторые вопросы этического плана. Одни
пользователи настаивают на том, что анонимность должна поддерживаться,
другие полагают, что любые действия пользователей должны отслеживаться.
Разумеется, когда речь заходит о личном общении (таком, как электронная почта),
споры становятся еще более ожесточенными.
В Интернете существуют программы и службы анонимной отправки
электронной почты. Простейшие из таких служб используют программы, которые
удаляют из сообщения заголовки SMTP и отправляют оставшуюся информацию
указанному получателю. Проследить путь полученного таким образом
сообщения невозможно, а получатель не сможет ответить отправителю; это может быть
как хорошо, так и плохо (все зависит от того, к чему вы стремитесь).
Более совершенные службы ведут базу данных своих анонимных
пользователей. Каждому пользователю назначается идентификатор, позволяющий
отправлять анонимную почту (разумеется, при условии конфиденциальности базы
данных). Информация о связи идентификатора с фактическим адресом
электронной почты пользователя позволяет получателю ответить на анонимное
сообщение.
Другая разновидность анонимного почтового сервиса предоставляется
специализированными поставщиками онлайнового сервиса и электронной почты.
Недавно появившиеся «бесплатные» почтовые службы (Hotmail, Yahoo!, Usanet
и т. д.) предлагают пользователю выбрать идентификатор, то есть имя, под
которым будет отправляться почта. Не стоит и говорить, что идентификатор не
обязан совпадать с настоящим именем (полностью или частично). Используя
идентификатор, отличный от настоящего имени, можно отправлять электронную
почту практически анонимно.
Итоги
В этой главе подробно рассматривается основной протокол электронной почты
в Интернете: SMTP. Краткий курс истории электронной почты позволяет лучше
понять, какой значительный путь развития прошла эта служба. Внимание также
уделяется Х.400 — мощному, но не получившему достаточно широкого
распространения протоколу для работы с электронной почтой. Знакомясь с
протоколом SMTP, мы рассмотрели его набор команд, коды ответов и способы
кодировки двоичных данных. Также были упомянуты два протокола приема сообщений
от агента передачи сообщений (МТА) или хранилища сообщений (MS):
упрощенный РОРЗ и более мощный IMAP4.
Также был рассмотрен ряд вопросов, относящихся к работе с электронной
почтой. При обсуждении вопросов безопасности особое внимание уделялось
шифрованию, фильтрации сообщений и вирусам. Мы обсудили проблемы спама
и привели некоторые рекомендации по поводу того, как с ним бороться.
Наконец, в главе неоднократно приводятся ссылки на документы RFC, содержащие
спецификации электронной почты в Интернете, и упоминаются сайты и группы,
ответственные за разработку современных почтовых протоколов.
*J ** Служба HTTP
Нил С, Джеймисои (Neal S.Jamison)
World Wide Web часто называют технологическим прорывом 1990-х годов. Ни
одна другая технология или программа не открыла столько новых
возможностей. Благодаря Web огромные объемы информации оказались буквально на
расстоянии вытянутой руки. Феноменальный рост Web лишний раз доказывает
важность и огромный потенциал интернет-технологий.
World Wide Web
Всемирная паутина. Информационная супермагистраль. Сеть. Как ни называй,
бесспорно, Web стала величайшим достижением с первых дней революции,
произведенной широким внедрением персональных компьютеров. За свою
короткую жизнь Web прошла долгий путь — от небольшой физической лаборатории
в начале 1990-х годов до 200 с лишним миллионов пользователей в наши дни.
В 1995 году мы слепо блуждали среди нескольких тысяч web-сайтов и полагали,
что это большое достижение. В наши дни умные поисковые системы помогают
ориентироваться в Сети, находить нужную информацию, заказывать товары
и даже платить за них. И это — лишь начало!
В этом разделе рассматривается краткая, но бурная история World Wide Web.
Краткая история Web
Концепция World Wide Web разрабатывалась в Европейской лаборатории по
ядерным исследованиям (CERN) для упрощения совместного доступа к файлам
и обмена информацией между учеными-физиками. В 1993 году в Национальном
центре по использованию суперкомпьютеров (NCSA) был разработан первый
графический браузер Mosaic. С разработки этого web-клиента началась World
Wide Web в том виде, в котором она существует сегодня.
Создатели и попечители Web
Честь изобретения Web принадлежит Тиму Бернерсу-Ли (Tim Berners-Lee),
работнику CERN. Именно он написал первый web-сервер и тем самым определил языки
и протоколы Web. Кроме того, он разработал первого простейшего клиента WWW.
Автором первого популярного web-сервера (NCSA HTTPd) является Роб
Мак-Кул (Rob McCool) из NCSA. Co временем этот сервер был заложен в
основу web-сервера Apache, самого распространенного сервера в современной Web.
Первый графический браузер был также создан в NCSA Марком Андриссеном
(Mark Andreessen), который позднее основал корпорацию Netscape
Communications, создавшую Netscape Navigator.
Тим Бернерс-Ли сейчас возглавляет консорциум World Wide Web (W3C) —
организацию, которая несет основную ответственность за дальнейшее
совершенствование Web, ее протоколов и стандартов. За дополнительной информацией
о консорциуме W3C и его важной работе обращайтесь на сайт http://www.w3c.org.
В истории WWW важную роль также сыграла Проблемная группа
проектирования Интернета IETF (Internet Engineering Task Force). Как сказано в
уставе, «IETF — неформальная самоорганизующаяся группа людей, вносящих
технический и иной вклад в проектирование и развитие Интернета и его технологий»
(источник: http://www.ietf.org/tao.html). IETF играет важную роль в эволюции Web
вообще и протокола HTTP в частности. За дополнительной информацией о роли
IETF обращайтесь на сайт http://www.ics.uci.edu/pub/ietf/http/.
В текущей работе и в стандартизации Интернета и Web также принимает
участие ряд других организаций. Среди них следует особо упомянуть
Координационный совет Интернета IAB (Internet Activities Board), Общество Интернета
ISOC (Internet Society) и Проблемную группу Интернета IRTF (Internet Research
Task Force).
Стремительное развитие Web
В середине 1994 года в Web работало около трех миллионов человек, а сама
структура Web содержала около 3000 сайтов. В июле 2001 года по оценкам
Nielsen/NetRatings (http://www.njelsen-netratings.com/) население Интернета
превысило 257 миллионов.
ПРИМЕЧАНИЕ
В приведенных выше цифрах речь идет не о людях, а о хостах. Подсчитать количество людей,
работающих в Web, очень трудно; задача подсчета хостов решается проще, а на каждый хост
приходится как минимум один пользователь.
Из незрелой, хотя и перспективной среды, используемой немногочисленными
учеными и инженерами, Web превратилась в надежную, защищенную среду,
пригодную для электронной коммерции и решения других важных задач. По мере
улучшения сетевых и компьютерных технологий можно ожидать, что круг
пользователей расширится, а для Web найдется много новых практических применений.
Унифицированные указатели ресурсов
Чтобы найти нужную информацию в Web, необходимо знать, как в серверах
и браузерах определяются ссылки на серверы и файлы. Идентификация
страниц и других ресурсов в Web осуществляется при помощи унифицированных
указателей информационных ресурсов, или URL (Uniform Resource Locators).
Пример адреса URL:
http://www.w3c.org/Protocols/index.html
Этот адрес, ведущий на web-сайт Консорциума World Wide Web, делится на
следующие компоненты:
протокол:// сервер.домен / каталог/ файл
В приведенном выше примере URL определяет:
О протокол http.
О полное доменное имя www.w3c.org.
О каталог Protocols.
О файл index.html.
ПРИМЕЧАНИЕ
Большинство web-серверов настраивается таким образом, чтобы обращения на сайт
автоматически перенаправлялись на страницу по умолчанию. Как правило, страница по умолчанию называется
index.html, однако встречаются и другие варианты — home.html, default.html и index.htm. Таким
образом, URL http://www.w3c.org/Protocols/ вернет файл index.html, находящийся в каталоге Protocols.
Примеры других распространенных разновидностей URL:
ftp://сервер/каталог/файл
ftp://пользователь@сервер/каталог/файл
telnet://сервер
news://сервер/группа
Первые два примера запрашивают документ через FTP, соответственно через
анонимный вход и с указанием имени пользователя. Третий URL запрашивает
доступ к серверу Telnet, а в четвертом примере запрашивается доступ к
конференции Usenet.
URL может содержать данные, используемые сервером. Наиболее
характерным примером является передача параметров функции, работающей на стороне
сервера, например:
http://сервер/каталог/file.html?username=Jamison&uid=300
Приведенный URL передает странице file.html две пары «ключ-значение»:
имя пользователя (username) Jamison и идентификатор (uid) 300.
Иногда в URL требуется включить специальный символ — например, пробел
или косую черту (/). В этом случае специальные символы «кодируются», чтобы
предотвратить возникновение проблем на стороне сервера. В результате
кодирования (иногда называемого шестнадцатеричным кодированием) специальные
символы заменяются их шестнадцатеричными эквивалентами. Предположим,
в URL должно передаваться полное имя пользователя:
http://сервер/каталог/file.html?name=Neal%20Jami son
В приведенном примере пробел между словами «Neal» и «Jamison»
заменяется своим шестнадцатеричным эквивалентом 20. Передача данных в URL часто
используется в программах CGI (Common Gateway Interface). Дополнительная
информация о CGI приводится ниже, в разделе «Языки Web» настоящей главы.
Web-серверы и браузеры
Web-сервсры служат поставщиками информационного содержимого Web.
Получив запрос от клиента, web-сервер предоставляет запрошенные данные в той или
иной форме. В большинстве случаев данные представляются в форме страницы
HTML (Hypertext Markup Language), однако серверы могут предоставлять
информацию в других форматах — графические изображения, звуки, файлы
приложений и даже видеоданные. Клиентские функции в Web выполняются браузерами.
Браузеры содержат программные средства, необходимые для взаимодействия
с web-серверами, а также преобразования и отображения информации,
возвращаемой сервером. В табл. 33.1 приведены примеры хорошо известных серверов
Web, а в табл. 33.2 перечислены основные браузеры.
Таблица 33.1. Популярные web-серверы
Сервер URL
Apache http://www.apache.org
Microsoft IIS (Internet http://www.mJcrosoft.com/ntserver/techresources/webserv/default.asp
Information Server)
Netscape Enterprise Server http://home.netscape.com/enterprise/
Таблица 33.2. Популярные браузеры
Браузер URL
Netscape Navigator http://home.netscape.com/browsers/
Microsoft Internet Explorer http://www.microsoft.com/windows/ie/
Opera http://opera.nta.no/
Обмен данными между web-сервером и браузерами осуществляется па базе
протокола HTTP (Hypertext Transfer Protocol).
ПРИМЕЧАНИЕ
Основной web-сервер в Интернете распространяется бесплатно, и удивляться этому не
приходится. Интернет появился в результате усилий хакеров и ученых, выступавших за свободу мысли
и свободное распространение программного обеспечения. Как показали исследования,
проведенные в октябре 2001 года, свыше 57 процентов серверов в Web работают на базе Apache. Второе
место принадлежит web-серверу Microsoft IIS C0 процентов).
Успех Apache и других бесплатных программных продуктов (таких, как язык программирования Perl
и операционная система Unix) вдохнул новую жизнь в движение Open Source в пользу свободного
распространения программ. К числу продуктов, распространяемых на условиях Open Source,
относятся Netscape Navigator (http://www.mozilla.org/) и AOL Web server (http://www.aolserver.com).
К этой инициативе присоединились такие компании, как Sun Microsystems и IBM.
За дополнительной информацией о философии свободного распространения программ
обращайтесь на сайт http://www.gnu.org/philosophy/.
Дополнительная информация о Apache приведена на сайте http://www.apache.org/, а информация
о системе Linux — на сайте http://www.linux.org/.
Протокол HTTP
Протокол HTTP обеспечивает обмен данными между web-серверами и
браузерами. Он строится на схеме «запрос/ответ»; иначе говоря, сервер ожидает
запросы со стороны и отвечает на них. HTTP не поддерживает собственных
соединений с клиентом и использует надежные соединения TCP, чаще всего на
порте TCP с номером 80. Операция обмена данными между клиентом и
сервером делится на четыре основных этапа:
1. Браузер подключается к серверу.
2. Браузер запрашивает документ с сервера.
3. Сервер передает браузеру запрошенные данные.
4. Связь разрывается.
Протокол HTTP не обладает состоянием, то есть не хранит информацию
о состоянии текущего подключения.
В этом разделе рассматривается версия HTTP, которая в настоящее время
считается стандартной.
НТТР/1.1
Чтобы сделать возможным обмен данными между сервером и клиентом, в
спецификации HTTP определяется язык Web, основанный на запросах и ответах.
ПРИМЕЧАНИЕ
Спецификация НТТР/1.1 определяется в документе RFC 2616, который можно найти по адресам
http://www.w3c.org/Protocols и http://www.rfc-editor.org.
Клиентский запрос
Клиентский запрос содержит следующую информацию:
О Метод запроса.
О Заголовок запроса.
О Данные запроса.
Метод запроса определяет операцию, выполняемую с заданным URL или web-
страницей. Допустимые методы перечислены в табл. 33.3.
Таблица 33.3. Методы запросов HTTP
Метод Описание
GET Запрашивает указанный документ
HEAD Запрашивает только заголовок документа
POST Сервер должен интерпретировать указанный документ как исполняемую программу
и передать ему некоторые данные
PUT Заменяет содержимое указанного документа данными, полученными от клиента
DELETE Запрашивает удаление указанной страницы
Метод Описание
OPTIONS Используется клиентом для получения информации о возможностях
и требованиях сервера
TRACE Используется при тестировании для передачи клиенту информации о том,
как было получено сообщение
Необязательный заголовок передает серверу дополнительную информацию
о клиенте. Типы заголовков перечислены в табл. 33.4.
Таблица 33.4. Заголовки запросов HTTP
Заголовок Описание
Accept Тип данных, принимаемых клиентом
Authorization Аутентификационные данные (например, имя пользователя и пароль)
User-Agent Тип клиентской программы
Referer Web-страница, с которой пришел клиент
Если для выполнения метода необходимы дополнительные данные (как,
например, для метода POST), они передаются после заголовка. В остальных
случаях клиент переходит к ожиданию ответа от сервера.
Ответы сервера
Ответ сервера также содержит важную информацию:
О Код состояния.
О Заголовок ответа.
О Данные ответа.
В HTTP определено несколько групп кодов состояния, возвращаемых
браузеру. Эти коды перечислены в табл. 33.5.
Таблица 33.5. Коды состояния HTTP
Информационные коды Aхх)
100 Continue
101 Switching Protocols
Успешные коды Bхх)
200 ОК
201 Created
202 Accepted
203 Non-Authoritative Information
204 No Content
продолжение ё>
Таблица 33.5 (продолжение)
Информационные коды Aхх)
205 Reset Content
206 Partial Content
Коды перенаправления (Зхх)
300 Multiple Choices
301 Moved Permanently
302 Moved Temporarily
303 See Other
304 Not Modified
305 Use Proxy
Ошибки клиента Dхх)
400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Timeout
409 Conflict
410 Gone
411 Length Required
412 Precondition Failed
413 Request Entity Too Large
414 Request URI Too Long
415 Unsupported Media Type
Ошибки сервера Eхх)
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Timeout
505 HTTP Version Not Supported
В заголовках ответов сервер передает клиенту информацию о себе и/или
запрашиваемом документе. Заголовки, перечисленные в табл. 33.6, завершаются
пустой строкой.
Таблица 33.6. Заголовки ответов HTTP
Метод Описание
Server Информация о web-сервере
Date Текущая дата/время
Last Modified Дата/время последней модификации запрашиваемого документа
Expires Дата/время, когда запрашиваемый документ становится недействительным
Content-type Тип MIME данных
Content-length Размер данных (в байтах)
WWW-authenticate Передача клиенту информации, необходимой для выполнения
аутентификации (например, имени или пароля)
Если клиент запросил данные, то сервер переходит к передаче данных. В
противном случае связь с сервером завершается.
MIME и Web
Стандарт MIME (Multipurpose Internet Mail Extensions) используется в Web для
классификации блоков данных (например, файлов или web-страниц). MIME
позволяет передавать данные в форматах, отличных от простого текста.
Благодаря Mime можно передавать и принимать web-страницы, содержащие двоичную
информацию — звуки, видео, изображения, приложения и т. д.
В процессе обмена данными браузер и сервер согласовывают типы MIME.
Браузер передает информацию о типах MIME, которые он готов принять, в
заголовке запроса. Сервер сообщает клиенту тип MIME данных, которые он
собирается передать.
В табл. 33.7 перечислены некоторые типы MIME, часто встречающиеся в Web.
Таблица 33.7. Распространенные типы MIME в Web
Тип MIME Описание
text/plain Простой ASCII-текст
text/html Текст HTML
image/gif Графическое изображение GIFF
image/jpeg Графическое изображение JPEG
application/msword Microsoft Word
video/mpeg Видео в формате MPEG
audio/wave Аудио
application/x-tar Сжатые данные в формате TAR
Пример сеанса HTTP
Теперь, когда вы знаете, какая информация и какие типы данных передаются
между клиентом и сервером, мы рассмотрим пример использования HTTP в
действии.
Запрос
В этом примере браузер запрашивает документ с URL http://www.hostname.com/
jndex.html. Все запросы завершаются одной пустой строкой:
GET /index.html НТТР/1.1
Accept: text/plain
Accept: text/html
User-Agent: Mozilla/4.5(WInNT)
(пустая строка)
Браузер запрашивает документ /index.html методом GET. Он указывает, что
ответ может содержать только простой текст и данные HTML и что браузер
использует платформу Mozilla/4.5(Netscape).
Ответ
В ответе сервер передает код состояния, заголовки (за которыми следует пустая
строка) и, если потребуется — запрошенные данные. В первом примере
предполагается, что данные были успешно найдены:
НТТР/1.1 200 ОК
Date Sunday, 15-Jul-99 12:18:03 GMT
Server: Apache/1.3.6
MIME-version: 1.0
Content-type: text/html
Last-modified: Thursday, 02-Jun-99 20:43:56 GMT
Content-length: 1423
(пустая строка)
<HTML>
<HEAD>
<title>Example Server-Browser Communication</title>
</HEAD>
<BODY>
Во втором примере запрошенный документ не обнаружен:
НТТР/1.1 404 NOT FOUND
Date Sunday, 15-Jul-99 12:18:03 GMT
Server: Apache/1.3.6
Нетривиальные возможности Web
В этом разделе кратко упоминаются некоторые нетривиальные темы,
относящиеся к Web: средства, работающие на стороне сервера, и механизмы защиты
информации.
Средства, работающие на стороне сервера
Web-серверы передают браузерам разнообразные данные, включая страницы
HTML, видео, аудио и графику. Эти данные берутся из статических страниц
и файлов или генерируются динамически на момент запроса. Динамически!!
контент позволяет строить страницы, ориентированные на конкретный запрос.
Например, при запросе к гипотетическому телефонному справочнику
генерируется конкретная страница с найденной информацией. При подготовке
динамических данных часто используются следующие технологии:
О CGI (Common Gateway Interface).
О API (Application Programming Interface).
О Сервлеты Java.
О Код JavaScript на стороне сервера.
О Включения па стороне сервера.
Дополнительная информация об этих технологиях приводится ниже, в
разделе «Языки Web» настоящей главы.
SSL и S-HTTP
Протоколы SSL (Secure Sockets Layer) и S-HTTP (Secure HTTP) используются
для передачи конфиденциальной информации в Web.
Протокол SSL, разработанный корпорацией Netscape Communications,
использует шифрование с закрытым ключом для безопасной пересылки данных по
защищенному соединению. Серверы SSL отличаются по префиксу протокола —
вместо http в URL используется префикс https.
За дополнительной информацией о SSL обращайтесь по адресу http://home.
netscape.com/secunty/techbriefs/ssl.html.
Протокол S-HTTP является усовершенствованной версией HTTP и
обеспечивает пересылку защищенных сообщений. Не все браузеры и серверы
поддерживают S-HTTP.
Языки Web
Спецификация HTTP определяет конкретный набор правил, по которым
организуется обмен данными между web-сервером и браузером. Тем не менее именно
языки Web наполняют эти коммуникации реальным содержанием и предоставляют
нам, пользователям Web, искомую информацию. Самым распространенным
языком Web является язык HTML, однако существуют и другие языки, используемые
самостоятельно или в сочетании с HTML для расширения возможностей
информационного наполнения. Некоторые из этих языков кратко описаны ниже.
HTML
Стандартный язык HTML (Hypertext Markup Language) поддерживается всеми
браузерами. Он состоит из тегов, определяющих внешний вид web-страницы.
HTML является платформенно-независимым языком и поэтому чрезвычайно
легко переносится из одной среды в другую. Данная особенность позволила
HTML с полным правом называться главным языком Web.
ПРИМЕЧАНИЕ
HTML является специализированным вариантом языка SGML (Standard Generalized Markup
Language) — международного стандарта разметки электронного текста. На SGML можно создавать
определения типов документов (DTD, Document Type Definition) — такие, как HTML.
Представление информации в HTML описывается при помощи тегов. Теги
имеют следующий синтаксис:
<те г информация </те г >
<Тег> начинает определение, a </tag> является признаком его конца.
Допускается использование вложенных тегов.
Пример страницы HTML:
<html>
<head>
<title>Sample page</title>
</head>
<body>
<hl>Hello World</hl>
<bl>Bold text</bl>
<i>Italics</i>
<u>Underlined text</u>
<li>List Item l</li>
<Ii>List Item 2</li>
</body>
</html>
Приведенный пример показывает, насколько прост HTML. Информация
заключается в теги, определяющие начертание текста, тип шрифта, цвет и т. д. За
дополнительной информацией о HTML обращайтесь на сайт http://www.builder.com/.
XML
Язык XML (Extensible Markup Language) является подмножеством SGML,
позволяющим предоставлять в Web информацию в формате SGML. XML можно
представить себе как SGML без некоторых сложных и относительно редко
используемых спецификаций. Простой документ XML выглядит так:
<?xml version=,,1.0n standalone="yes"?>
<conversation>
<greeting>Hello, world!</greeting>
<response>Hello to you too!</response>
</conversation>
Хотя язык XML появился относительно недавно, он обретает популярность.
В частности, XML поддерживается Internet Explorer 5 и Mozilla (браузер Netscape,
распространяемый на условиях Open Source).
DocZilla, браузер на базе Mozilla (http://www.doczilla.com), поддерживает HTML,
XML и SGML. DocZilla содержит дополнительные компоненты, обеспечивающие
оперативный разбор и отображение документов SGML/XML без этапа
предварительной компиляции.
За дополнительной информацией о XML обращайтесь по адресам http://www.
w3.org/XML/, www.xml.org и к списку FAQ Питера Флинна (Peter Flynn) по адресу
http://www.ucc.ie/xml/.
CGI
Стандарт CGI (Common Gateway Interface) обеспечивает передачу данных от web-
сервера CGI-программам. CGI-программы могут быть написаны практически на
любом языке, хотя чаще всего для этой цели используются С и Perl. Как правило,
сценарии CGI получают данные от web-страницы, обрабатывают полученную
информацию и возвращают некий результат пользователю.
За дополнительной информацией о CGI обращайтесь по адресу http://www.
w3.org/CGI/.
Perl
Язык программирования Perl распространяется с открытыми текстами и очень
часто используется в Web. Perl предназначен для обработки текстов. В
исходном варианте он предназначался для системных администраторов Unix и
должен был упростить выполнение некоторых повседневных задач. Его средства
работы с текстами хорошо подходят для написания CGI-программ для Web.
Пример сценария Perl, генерирующего информацию для пользователя:
#!/usr/local/bin/perl
#
# helloworld.pl: CGI output sample program.
#
# Вывод заголовка ответа CGI, необходимого для всего выходного кода HTML
# Заголовок завершается дополнительным символом \п
# для передачи пустой строки,
print "Content-type: text/html\n\n";
# Вывод простого кода HTML в STDOUT
print <<EOF;
<html>
<head><title>CGI Results</title></head>
<body>
<hl>Hello, world.</hl>
</body>
</html>
EOF
exi t;
За дополнительной информацией обращайтесь на сайт Perl Institute no адресу
http://www.perl.org/perl.html.
Java
Объектно-ориентированный язык Java, созданный в Sun Microsystems,
напоминает язык C++. Проектировщики стремились к тому, чтобы Java был проще
и надежнее C++, и благодаря своей архитектуре Java идеально подходит для
web-разработок. За дополнительной информацией о Java обращайтесь на сайт
http://java.sun.com/.
Существует два основных варианта применения Java в Web: на стороне клиента
или на стороне сервера. Клиентские программы Java (так называемые апплеты)
загружаются с сервера на компьютер клиента и выполняются в специальной
защищенной среде. Поскольку размеры апплетов иногда довольно велики,
процесс загрузки тоже бывает относительно долгим. По соображениям безопасности
апплеты также ограничиваются по составу операций, выполняемых в клиентской
системе. В частности, апплету никогда не разрешается записывать какие-либо
данные на клиентский компьютер и запускать локальные программы.
Другой вариант — выполнение кода Java на сервере в виде приложений,
называемых сервлетами. Хотя сервлеты повышают вычислительную нагрузку на
web-сервер, они радикально уменьшают время, необходимое для получения
данных клиентом, и обходят некоторые ограничения безопасности, установленные
для апплетов. Благодаря более высокому быстродействию сервлетам часто
отдается предпочтение перед программами CGI. После выполнения сервлеты
остаются в памяти, что ускоряет их последующее выполнение. Программы CGI
в памяти не остаются.
JavaScript
Язык JavaScript был разработан корпорацией Netscape Communications для того,
чтобы web-программисты могли включать в свои страницы интерактивный
контент. Самые распространенные примеры применения JavaScript в
web-страницах — счетчики посещений, кнопки с изменяемыми изображениями и другие
формы интерактивного контента. JavaScript также может выполнять некоторые
функции, обычно выполняемые программами CGI. К числу таких функций
относится проверка заполнения web-форм: вместо того чтобы отправлять данные
серверу для проверки их полноты и/или правильности, более эффективно
выполнить те же самые операции на клиентском компьютере при помощи JavaScript.
Следующий пример показывает, как это делается:
<html>
<head>
<script language=HJavaScript">
<!--Hide
function testsomething(form) {
if (form.something.value == ,,M)
alert("I said something!")
else
alert("Thank you!");
}
// -->
</script>
</head>
<body>
<form name="example">
Enter something:<br>
<input type=,,text" name="somethingH><br>
<input type="button" name="button" value="Test input"
onCLick=Mtestsomething(this.form)">
<P>
</body>
</html>
У JavaScript существует разновидность, называемая серверным кодом
JavaScript. Серверный JavaScript работает на web-сервере и выполняет примерно те
же функции, что и CGI. Netscape Enterprise Server обладает мощной встроенной
поддержкой серверного JavaScript. За дополнительной информацией о
JavaScript (и о многих других web-технологиях) обращайтесь по адресу http://developer.
netscape.com/tech/.
ASP
Технология Microsoft Active Server Pages (ASP) представляет собой несколько
упрощенный способ включения CGI-подобной функциональности в
web-страницы. В отличие от технологии CGI, требующей определенных навыков
программирования, при программировании страниц ASP используются более
простые сценарные языки типа JScript, VBScript и Visual Basic.
За дополнительной информацией о технологии ASP и языках, которые в ней
используются, обращайтесь по адресу http://msdn.microsoft.com/workshop/server/asp/
ASPover.asp.
Будущее Web
Несмотря на относительно короткую историю, World Wide Web
продемонстрировала невероятные темпы роста. Однако за этим ростом скрывается еще более
невероятный потенциал для дальнейшего развития и расширения. Наряду со
статистическими показателями увеличиваются и возможности Web.
Дальнейший прогресс Web будет обеспечиваться такими инициативами, как HTTP-ng,
IPv6 и НОР. На сегодняшний день возможности развития Web безграничны.
НТТР-пд
Следующая версия протокола HTTP, названная HTTP-ng (от слов «Next
Generation», то есть «следующее поколение»), станет более защищенной и быстрой
заменой для HTTP. HTTP-ng обладает более широкими возможностями и
поэтому лучше подходит для коммерческих приложений. Ниже перечислены лишь
некоторые усовершенствования:
О улучшенная модульность;
О улучшенная эффективность сетевых взаимодействий;
О улучшенная безопасность и аутентификация;
О простая структура.
За дополнительной информацией о HTTP-ng обращайтесь по адресу http://
www.w3.org/Protocols/HTTP-NG/.
ПОР
Протокол HOP (Internet Inter-ORB Protocol) обещает предоставить
пользователям гораздо более эффективные средства для работы с данными через Web.
В отличие от протокола HTTP, позволяющего передавать только текстовые
данные, ПОР поддерживает передачу более сложных данных — таких, как массивы
и другие объекты. Протокол ПОР реализует архитектуру CORBA (Common
Object Request Broker Architecture) на базе Web. Архитектура CORBA позволяет
программистам создавать платформенно-независимые приложения, подходящие
для многократного использования.
За дополнительной информацией о ПОР и CORBA обращайтесь на сайт
Object Management Group по адресу http://www.omg/org/.
IPv6
Интернет постепенно готовится перейти на качественно новую ступень.
Протокол IP версии 6 (IPv6), также известный под названием IPng, вносит в текущую
версию IPv4 (появившуюся более 20 лет назад) множество усовершенствований,
в том числе:
О расширенное адресное пространство;
О улучшенная безопасность/конфиденциальность данных;
О улучшенная поддержка параметров качества и класса предоставляемых услуг
передачи данных QoS (Quality of Service).
За дополнительной информацией о IPv6 обращайтесь на сайт http://www.
ipv6.org/.
ipp
Протокол IPP (Internet Printing Protocol) был предложен на концептуальном
уровне фирмами Novell и Xerox, а его разработкой занималась группа IETF.
Интересно заметить, что протокол IPP базируется на HTTP/1.1. IPP предоставляет
в распоряжение пользователей средства для выполнения ряда стандартных
функций печати:
О получение информации о доступных принтерах;
О отправка и отмена заданий печати;
О получение информации о состоянии заданий печати.
За дополнительной информацией о IPP обращайтесь на сайт IETF по адресу
http://www.ietf.org/html.charters/ipp-charter.html.
XML
Язык XML (extensible Markup Language) стал одним из самых интересных
направлений развития программных средств Web. XML обеспечивает
представление структурированных данных: электронных таблиц, адресных книг, параметров
конфигурации, данных финансовых транзакций, технических проектов и т. д.
XML позволяет определить набор правил для проектирования текстовых
форматов, обеспечивающих структурирование данных. XML не является языком
программирования, это язык представления данных. Он поддерживает стандарт
Юникод, помогает решать задачи построения/чтения данных и обеспечивает
однозначную интерпретацию структуры данных.
Язык XML, как и HTML, основан на использовании тегов — ключевых слов,
заключенных между символами «<» и «>», и атрибутов в формате имя="зиаче-
ние". В HTML теги определяют параметры отображения текста в браузере. В XML
теги используются только для разграничения данных, а интерпретация этих
данных полностью определяется тем приложением, которое читает эти данные.
Например, тег <р> в файле XML вовсе не обязательно является признаком абзаца.
В зависимости от контекста он может обозначать параметр, цену, человека и т. д.
XML — слишком обширная тема, чтобы ее можно было рассмотреть в этой
главе. За дополнительной информацией о XML обращайтесь на сайт www.xml.org.
Итоги
В этой главе вы познакомились с «Всемирной паутиной» World Wide Web и
технологиями, на основе которых она работает. Мы рассмотрели структуру
унифицированных указателей ресурсов (URL) и возможности их применения для
получения информации из Web. Также были упомянуты основные web-серверы,
браузеры и коммуникационные протоколы, позволяющие им обмениваться
информацией. Протокол НТТР/1.1 был рассмотрен достаточно подробно. Глава
завершается краткими сведениями о некоторых языках Web (таких, как HTML,
Perl и Java), а также HTTP-ng, ПОР и других революционных технологиях,
которые обещают изменить Web к лучшему. В этой главе часто встречаются
ссылки на web-ресурсы; при желании читатель может посетить эти сайты и
больше узнать о замечательных технологиях, благодаря которым произошла
информационная революция.
^1Л Служба сетевых
^■Этг новостей
и протокол NNTP
Дэниел Бейкер (Daniel Baker)
В настоящей главе рассматриваются различные вопросы, связанные с
функционированием системы сетевых новостей Usenet. Usenet — одна из самых старых
форм распространения информации в Интернете, которая продолжает работать
в наши дни. Кроме того, в этой главе показано, как напрямую работать с
сервером NNTP (Network News Transfer Protocol).
Хотя протокол NNTP был не первым протоколом, предназначенным для
передачи материалов Usenet, после его появления все предшествующие средства
(такие, как UUCP — Unix-to-Unix Copy Protocol) практически вышли из
употребления.
Usenet
Система распространения новостей Usenet, созданная в 1979 году двумя
аспирантами университета Дьюк, в наши дни стала одной из самых старых и
популярных служб Интернета. Usenet позволяет вести дискуссии, доступные для
всех желающих; информация распространяется в текстовом формате. В каком-то
смысле Usenet напоминает электронную почту, адресуемую всем
заинтересованным лицам.
Информация Usenet распространяется не в реальном времени; иногда
пересылка материалов между сайтами сопровождается задержками. Тем не менее
эти задержки обычно невелики и не отражаются на возможности пользователей
Интернета участвовать в обсуждении.
За последние годы растущая популярность и расширение Интернета
привели к тому, что рост Usenet стал испытывать определенные проблемы. Много лет
назад для обеспечения работы сервера новостей требовалось только
непостоянное подключение к Интернету, один компьютер и от 20 до 100 мегабайт
свободного места на диске. Сейчас многие поставщики услуг Интернета поддерживают
несколько серверов Usenet; как правило, пара магистральных накопителей
обеспечивает обмен данными с другими новостными сайтами Интернета, а также
несколько клиентских серверов, поставляющих материалы Usenet конечным
пользователям. Для предоставления качественного сервиса Usenet клиентский
сервер Usenet теперь должен иметь постоянное подключение к Интернету на
мегабитной скорости, по крайней мере полгигабайта памяти, 50 гигабайт
дискового пространства и несколько мощных процессоров.
Однако проблемы Usenet не исчерпываются чисто техническими
ограничениями. Отсутствие централизованного управления, назойливая коммерческая
информация, а также нехватка культуры и образования у многих пользователей
затрудняют масштабирование Usenet до нужных размеров.
ПРИМЕЧАНИЕ
Новое воплощение Usenet — Usenetll — пытается решить многие из перечисленных проблем за
счет установки ограничений и контрольных мер для наведения порядка. Web-сайт Usenetll
находится по адресу www,usenet2.org.
Хотя ничего лучшего еще не предложено, в целом все согласны с тем, что
в Usenet используется неэффективный метод хранения и пересылки статей.
Сейчас каждый сервер Usenet получает копии всех статей, опубликованных в
поддерживаемой им иерархии.
Передача статей между серверами осуществляется при помощи механизма,
называемого равноправным обменом (peering). Администраторы новостей
согласовывают параметры равноправного обмена между сайтами и решают,
какие иерархии Usenet должны участвовать в обмене. Как правило, сервер
новостей имеет от 1 до 200 партнеров. Для каждой полученной статьи сервер
подключается к одному из своих партнеров (за исключением того, с которого
статья была отправлена) и предлагает ему новую статью при помощи команды
NNTP ihave.
ПРИМЕЧАНИЕ
Подобный способ хранения информации приводит к тому, что даже небольшая статья Usenet
занимает невероятный объем. Например, если предположить, что в Интернете работает 1500
серверов Usenet, то средняя статья объемом 2500 байт в масштабах Интернета займет 3,75 мегабайта
B500 байт х 1500 серверов), причем эта цифра относится только к затратам дискового
пространства на серверах и не учитывает клиентов, читающих статью. Одна песня в формате МРЗ (около
3,5 мегабайта), отправленная в Usenet, займет 5,25 гигабайта, а суммарные затраты на хранение
фильма (около 1,2 гигабайта) составят 1,95 терабайта.
Конференции и иерархии
Дискуссионные группы Usenet делятся на десятки тысяч конференций,
которые традиционно объединяются в иерархическую структуру по категориям.
Существует несколько «корневых» иерархий верхнего уровня, обычно
называемых «большой семеркой».
В табл. 34.1 перечислены иерархии «большой семерки» с краткими
характеристиками их тематики. Другие иерархии, активно используемые в Usenet,
указаны в табл. 34.2.
Таблица 34.1. Иерархии Usenet верхнего уровня
Название Описание
сотр Вычислительная техника
misc Разное
news Администрирование Usenet
гее Развлечения
sci Наука
soc Общество
talk Разговоры на общие темы
Таблица 34.2. Другие популярные иерархии
Название Описание
alt Неконтролируемая иерархия с «альтернативными» конференциями
bionet Биология
clari Последние новости от Reuters, Associated Press и т. д.
Для уменьшения путаницы разные языки обычно принято относить к
разным иерархиям. По этой причине многие страны имеют собственные иерархии;
несколько примеров приведено в табл. 34.3.
Таблица 34.3. Иерархии языков и стран
Название Описание
ch Швейцария
fr Франция
de Германия
Для большинства иерархий верхнего уровня установлены ограничения,
гарантирующие, что операции создания и удаления конференций могут выполняться
только уполномоченными администраторами. Впрочем, в самой крупной
иерархии alt какие-либо официальные средства контроля отсутствуют. Тем не менее
администратор сервера новостей должен решить, собирается ли он обеспечить
выполнение ограничений для соответствующих иерархий, и настроить свой сервер
соответствующим образом. Тем не менее конфликты между решениями
администраторов серверов новостей часто вызывают логические нестыковки в
иерархиях. Например, одни серверы могут распространять материалы конференции,
а другие — не подозревать о ее существовании из-за разного отношения админи-
страторов к соблюдению правил иерархий. Такие противоречия озадачивают
пользователей и затрудняют администрирование Usenet.
ПРИМЕЧАНИЕ
Прежде чем отправлять управляющие сообщения, следует хорошо разобраться в политике
управления конференциями в данной иерархии. «Управляющими сообщениями» называются сообщения
Usenet, обрабатываемые сценариями управления конференциями сервера Usenet. Управляющее
сообщение может приказать серверу создать новую конференцию (newgroup), удалить существующую
конференцию (rmgroup), отменить отправку (cancel) и выполнить другие управляющие операции.
Разнообразие тем, входящих в иерархию Usenet, позволит найти
конференции для обсуждения любых, даже самых специализированных вопросов.
Например, в названиях более чем 350 конференций присутствует слово «unix».
Наибольшей популярностью пользуются comp.unix.solaris и comp.unlx.aix.
Подобная структура имен четко определяет основную тему конференции. Компонент
сотр указывает на то, что конференция входит в иерархию вычислительной
техники, а компонент unix — что данная иерархия второго уровня посвящена
операционной системе Unix. Наконец, уточнение Solaris относится к системе Solaris
фирмы Sun Microsystems. Следовательно, можно с первого взгляда определить,
что конференция comp.unix.solaris посвящена компьютерной тематике и
обсуждению системы Solaris из семейства Unix.
По иерархическим именам также можно судить о том, какого рода информация
публикуется в конференции. Например, все конференции иерархии alt.binaries
предназначены для публикации двоичных данных — компьютерных программ,
звуковых файлов, графики и т. д. Если в названии конференции прямо не
указано обратное, можно смело предполагать, что конференция предназначена для
публикации английского текста в кодировке ASCII.
ПРИМЕЧАНИЕ
Публикация двоичных данных в текстовых конференциях считается крайне нежелательной.
Например, отправка аудиоклипа в конференцию alt.tv.seinfeld создает существенные неудобства для
администраторов и нарушит те цели, для которых создавалась многоуровневая иерархия. С другой
стороны, отправка того же файла в alt.binaries.sounds.tv не вызовет нареканий и будет наиболее
эффективным способом распространения файла в Usenet.
После рассмотрения принципов устройства Usenet и ее организации мы
займемся механизмом пересылки данных в Usenet.
Протокол NNTP
Протокол NNTP (Network News Transfer Protocol) является наиболее
распространенным механизмом пересылки данных статей Usenet между серверами
и клиентами. NNTP пересылает информацию в кодировке ASCII и обычно
работает на порте TCP с номером 119. Хотя пользователь может напрямую
работать с сервером новостей (пример приводится ниже в этом разделе), обычно все
операции NNTP — отправка, чтение и т. д. — выполняются пользовательским
агентом. Примерами клиентов NNTP для Unix являются tin и trn, а пользователи
Windows обычно работают в Netscape, Forte Free Agent и Microsoft Outlook Express.
В этом разделе рассматривается выполнение различных операций, связанных
с NNTP, в том числе:
О получение списка конференций;
О получение конкретных статей Usenet;
О отправка сообщений в Usenet.
Этот материал обеспечит прочное понимание базовой структуры
функциональных средств NNTP.
Получение списка конференций
Чтобы получить от сервера NNTP список конференций, необходимо подключиться
к серверу NNTP, активизировать режим чтения и запросить «активный» список.
Подключение создается следующей командой:
unixbox% telnet news.utb.edu 119
Результат выглядит так:
200 news.utb.edu DNEWS Version 5.5c6, S0, posting OK
Далее введите команду
MODE reader
Команда выводит строку
200 DNews is in reader mode - posting ok.
После появления этой строки введите команду получения списка
конференций Usenet:
LIST active
Сервер NNTP перечисляет все конференции Usenet, материалы которых на
нем хранятся.
215 list of newsgroup follows
alt. test 0000000967 0000000947 у
comp.unix 0000000343 0000000343 у
сотр.unix.admin 000094331 0000094080 у
сотр.unix.advocacy 0000068422 0000068413 у
сотр.unix.aix 0000162768 0000162368 у
сотр.unix.amiga 000019141 000019132 у
comp.unix.aux 0000023507 0000023502 у
сотр.unix.bsd.bsdi.announce 0000000090 00000091 m
сотр.unix.bsd.bsdi.misc 0000009195 0000009192 у
comp.unix.bsd.freebsd 000000201 000000197 у
сотр.unix.bsd.freebsd.announce 0000000955 0000000955 m
После получения списка введите команду
QUIT
Сервер NNTP завершает сеанс:
205 closing connection - goodbye!
ПРИМЕЧАНИЕ
Большинство серверов новостей передает материалы огромного количества конференций. На
практике нередко встречается ситуация, когда активный файл сервера содержит от 30 000 до 60 000
конференций. Получив команду List active, сервер может выдать большой файл объемом в
несколько мегабайт. Постарайтесь свести прием списка конференций к минимуму, чтобы избежать
порождения лишнего трафика на обоих концах подключения.
Сервер выводит информацию о конференциях в формате «название стар-
ший_номер младший_номер флаги». Старший и младший номера определяют
локальный диапазон статей, которые сервер NNTP готов предложить клиентам
NNTP. Флаги содержат информацию о состоянии конференции; флаг «т»
означает, что конференция модерируется, а флаг «у» является признаком немодери-
руемых конференций.
ПРИМЕЧАНИЕ
В этой главе упоминается лишь часть доступных команд NNTP. Чтобы получить информацию о
других командах, введите команду HELP после подключения к серверу NNTP. Большинство клиентских
серверов выдает список доступных команд и сведения об их аргументах.
Прием сообщений
Чтобы принять сообщение Usenet с сервера NNTP, следует подключиться к
серверу, выбрать конференцию и запросить статью по идентификатору. После
приема статьи пользователь продолжает принимать следующие статьи по
идентификатору или командой next.
Подключение создается следующей командой:
unixbox% telnet news.utb.edu 119
Результат выглядит так:
200 news.utb.edu DNEWS Version 5.5c6. S0, posting OK
Далее введите команду
MODE reader
Команда выводит строку
200 DNews is in reader mode - posting ok.
После появления этой строки введите команду, которая сообщает серверу
новостей, к какой конференции вы хотите подключиться:
GROUP alt.test
Сервер выдает информацию об указанной конференции:
211 386 603537 603922 alt.test selected
Второе число обозначает количество статей указанной конференции,
хранящихся на сервере в настоящее время. Третье и четвертое числа определяют на-
чальный и конечный номера статей в диапазоне. Количество хранимых статей
будет отличаться от длины интервала, поскольку некоторые сообщениям могут
отменяться после их получения сервером. Таким статьям выделяются номера,
но на сервере они не хранятся.
Далее следует выбрать номер статьи, входящий в полученный диапазон, и
запросить статью с сервера:
ARTICLE 603922
Результат выглядит примерно так:
220 603922 <3c0d06c5@newsreader.utb.edu> article retrieved - head and body f
ws
From: "Gary Kercheck" <gary.kercheck@aei.com>
Newsgroups: alt.test
Subject: test
Date: Tue, 4 Dec 2001 09:31:36 -0800
Lines: 3
Organization: Sekidenko
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 5.50.4807.1700
X-MimeOLE: Produced by Microsoft MileOLE V5.50.4807.1700
NNTP-Posting-Host: 65.162.27.214
X-Original-NNTP-Posting-Host: 65.162.27.214
Message-ID: <3c0d06c5@newsreader.utb.edu>
X-Trace: newsreader.utb.edu 1007486661 65.162.27.214 D Dec 2001 11:24:21 -0
Path: newsreader.utb.edu
Xref: newsreader.utb.edu alt.test:603922
Далее пользователь продолжает сеанс NNTP или завершает его командой QUIT.
Как показано выше, для приема статьи достаточно указать номер
конференции и номер статьи.
Заголовок Path показывает, по какому маршруту сообщение перемещалось
к клиенту NNTP. Узлы, входящие в маршрут, перечисляются справа налево;
имена имен хостов или псевдонимы разделяются восклицательными знаками.
Заголовок NNTP-Posting показывает, какой клиент подключался к
клиентскому серверу NNTP при отправке статьи. В приведенном выше примере хост
65.162.27.214 отправил статью 4 декабря 2001 года в 11:24:21.
Команда next приказывает серверу перейти к следующему номеру статьи
и вывести заголовок и тело нового сообщения.
Отправка сообщений
Чтобы отправить сообщение в Usenet, следует подключиться к серверу NNTP,
включить режим чтения и ввести команду POST. После этого текст статьи
вводится как обычно. Только заголовки From, Newsgroups и Subject являются строго
обязательными. Впрочем, существуют и другие заголовки, которые считаются
стандартными и используются клиентами, работающими с новостями.
unixbox% telnet news.utb.edu 119
200 news.utb.edu DNEWS Version 5.5c6, S0, posting OK
MODE reader
200 Dnews is in reader mode - posting ok.
Далее необходимо перевести сервер NNTP в режим отправки сообщений:
POST
Сервер подтверждает полученный запрос следующим сообщением:
340 OK, recommended ID 3c0d21df@newsreader.utb.edu
Приступайте к вводу сообщения Usenet. Перед данными статьи необходимо
ввести заголовок, который в минимальном варианте должен включать поля From,
Newsgroups и Subject.
From: Karanjit
Newsgroups: alt.test
Subject: Updated test!
This is a generic test!
.Karanjit
240 article posted ok
Сообщение завершается вводом точки в отдельной строке:
Если сервер NNTP не обнаруживает никаких проблем с введенной статьей,
он подтверждает успешную отправку:
240 article posted ok
Далее сеанс можно завершить:
QUIT
Как видите, для отправки сообщения Usenet достаточно минимального набора
сведений.
Обратите внимание: завершающая точка является признаком конца
сообщения. Чтобы сервер NNTP понял, что точка не входит в сообщение, а завершает
его, она должна находиться в отдельной строке.
В следующем разделе описаны некоторые проблемы современного Usenet.
Само устройство Usenet подразумевает отсутствие официальных
администраторов, распоряжающихся всей инфраструктурой в целом; администрированием
занимаются администраторы отдельных иерархий, что подразумевает отсутствие
единого подхода к возникающим проблемам.
Спам и блокировка
Одной из самых серьезных проблем Usenet стали массовые рассылки
рекламных материалов («спам»). Неразборчивые в средствах фирмы используют
бесплатную информационную среду и рассылают рекламу, не обращая внимания
на тематику групп. Это приводит к серьезным затратам ресурсов на серверах
новостей и раздражает конечных пользователей, которым приходится
фильтровать огромное количество рекламы, чтобы добраться до полезной информации.
Некоторые администраторы новостей пытаются решить эту проблему путем
блокировки (игнорирования) сайтов, которые допускают спам в Usenet, создают
его или участвуют в пересылке спама. Любой сайт, соблюдающий правила
блокировки, игнорирует все заблокированные сайты. Из-за этого сайты вынуждены
бороться со спамом; если сервер новостей, принадлежащий некоторому
поставщику услуг Интернета, не примет мер к нарушителю, он может попасть в
«черный список».
Другой способ борьбы со спамом основан на отмене неподходящих статей.
Специальная программа ищет коммерческие сообщения, а обнаружив их —
рассылает управляющее сообщение, которое требует у серверов Usenet удалить
соответствующую статью.
Описанные правила и методы получают все более широкое распространение.
Можно надеяться, что со временем они практически полностью искоренят
попытки спам еров рассылать рекламу в Usenet.
ПРИМЕЧАНИЕ
Одной из самых крупных организаций, обеспечивающих блокировку спама, является MAPS RBL
(http://mail-abuse.org/rbl/).
Итоги
За прошедшие годы ведения публичных дискуссий в Usenet был накоплен
огромный объем полезной информации, доступной для любого пользователя
Интернета. Сайт Deja (приобретен Google — http://groups.google.com/googlegroups/
deja_announcement.html/) архивирует все материалы Usenet и позволяют
производить поиск в данных, которые накапливались буквально годами. С учетом
широты спектра тем, рассматриваемых в Usenet, вы найдете в архивах Deja
информацию буквально по любой возможной теме. Относительно новые проекты —
такие, как Deja — укрепляют уверенность в том, что Usenet по-прежнему
приносит реальную пользу.
Usenet — замечательная служба, обладающая огромным потенциалом. Тем не
менее для обеспечения масштабируемости и управляемости Usenet необходимо
решить целый ряд важных вопросов. Бесспорно, эти вопросы могут быть решены
таким образом, чтобы служба Usenet процветала и в полной мере проявила свой
потенциал.
В следующей главе рассматриваются административные вопросы, связанные
с поддержанием работы web-сайта. В частности, в ней будут представлены web-
серверы Apache, Netscape Enterprise Server и Microsoft IIS.
*Э Щ" Установка и настройка
*ЭЭ web-сервера
Нил С. Джеймисоп (Neal S.Jamison)
World Wide Web занимает первое место по популярности среди служб
Интернета, значительно опережая своих конкурентов. Множество людей отправляется
в Web для того, чтобы получить нужную информацию, в поисках работы, за
покупками и даже данными биржевых котировок. Коммерция идет в Web, чтобы
удовлетворить растущие потребности клиентов. В этой главе рассматривается
установка, настройка и сопровождение самого популярного web-сервера в
Интернете — Apache.
Принципы работы web-серверов
Функционирование World Wide Web в значительной степени зависит от
протокола HTTP, работающего на базе TCP/IP. Протокол HTTP работает по схеме
«запрос/ответ» и обеспечивает обмен информацией между клиентами
(браузерами) и web-серверами. Web-сервер представляет собой программу, которая
прослушивает запросы от браузера и передает данные в формате HTML с
использованием HTTP. Типичный сеанс HTTP состоит из следующих действий:
О Браузер подключается к серверу.
О Браузер запрашивает файл или другие данные.
О Сервер выдает ответ и закрывает подключение.
Предположим, браузер отправляет запрос HTTP GET на получение файла
с именем index.html:
GET /index.html HTTP/1.1
Accept: text/plain
Accept: text/html
User-agent: MoziUa/4.5 (WinNT)
(пустая строка)
Сервер выдает ответ HTTP, включающий запрошенный файл:
HTTP/1.1 200 OK
Date Sunday, 15-Jul-99 12:18:03 GMT
Server: Apache/1.3.6
MIME-version: 1.0
Content-type: text/html
Last-modified: Thursday, 02-Jun-99 20:43:56 GMT
Content-length: 1423
(пустая строка)
<HTML>
<HEAD>
<title>Example Server-Browser Communication</title>
</HEAD>
<B0DY>
После передачи файла подключение закрывается. Протокол HTTP не имеет
состояния; это означает, что сервер не сохраняет никакой информации о
браузере или сеансе (не считая данных, записываемых в журнальный файл).
По умолчанию HTTP работает на хорошо известном порте TCP с номером 80.
Терминология web-серверов
В этом разделе объясняются некоторые термины, связанные с работой
web-серверов и встречающиеся как в этой главе, так и в другой документации по
web-серверам.
Web-сервер
Web-сервером называется компьютер, который предоставляет документы (web-
страницы) по Интернету с использованием протокола HTTP. Термин
«web-сервер» может использоваться как для обозначения компьютера (совокупности
оборудования и программ), так и самого программного пакета (например, «web-
сервер Apache»).
Браузер
Браузер — клиентская программа для работы в Web. Наибольшее распространение
получили браузеры Lynx, Netscape Communicator, Opera и Microsoft Internet
Explorer.
URL
URL — универсальная схема адресации, используемая для ссылок на
web-страницы (например, http://www.apache.org/). Дополнительная информация приведена
во врезке на с. 715.
Корневой каталог сервера
Корневым каталогом сервера называется каталог на том компьютере, на котором
работает web-сервер. По умолчанию в корневом каталоге сервера хранятся все
журнальные и конфигурационные файлы, все демоны и вспомогательные документы.
Примеры корневых каталогов — /usr/local/apache и c:\netscape\suitespot\ https-myserver.
Корневой каталог документов
Корневым каталогом документов называется каталог на web-сервере, в котором
находятся web-страницы, предоставляемые клиентам. Именно этот каталог
просматривается при указании URL вида http://www.yourserver.com/.
Порт
Службы TCP/IP используют порты для создания подключений и передачи
информации. По умолчанию протокол HTTP использует порт с номером 80, хотя
он может быть настроен на любой не используемый номер порта от 1 до 65535.
Многие службы тоже работают на стандартных портах: Telnet B3), электронная
почта SMTP B5), FTP B1).
Виртуальный хост (или виртуальный сервер)
Многие web-серверы способны представлять сразу несколько доменов. Для этой
цели используется концепция виртуальных хостов, при которой один
web-сервер обслуживает несколько сайтов. Виртуальные хосты обычно используются
поставщиками услуг Интернета как дешевая альтернатива предоставления
отдельного web-сервера каждому клиенту.
SSL (Secure Sockets Layer)
Протокол SSL был разработан фирмой Netscape для безопасной пересылки
данных в Web. SLL использует технологию шифрования с открытым ключом для
защиты данных, передаваемых по соединению.
MIME (Multipurpose Internet Mail Extensions)
Стандарт MIME позволяет web-серверам и браузерам передавать файлы, не
ограниченные форматами HTML и ASCII — например, графику или документы
Microsoft Word.
За дополнительной информацией о HTTP и web-серверах обращайтесь к
главе 36.
ПРИМЕЧАНИЕ
Для идентификации web-страниц и других ресурсов в Web используется схема адресации,
построенная на использовании унифицированных указателей ресурсов (URL).
Пример URL:
http://www.apache.org/docs/index.html
Данный адрес URL, относящийся к странице документации Apache Group, делится на несколько
сегментов:
протокол:// сервер.домен/ каталог/ файл
Таким образом, приведенный пример делится на следующие компоненты:
- протокол: http
- полное доменное имя: www.apache.org
- каталог: docs
- файл: lndex.html
Популярные web-серверы
В прессе часто пишут о борьбе за контроль над Интернетом. Тем не менее в
номинации web-серверов первое место по популярности принадлежит вовсе не
продуктам от Microsoft и Netscape. Более того, самый популярный web-сервер вообще
не является коммерческим продуктом. Большая часть World Wide Web
обслуживается бесплатным сервером Apache, распространяемым с открытыми текстами.
ПРИМЕЧАНИЕ
На первых порах своего существования Интернет базировался на философии свободы и
бескорыстия. Идеи были бесплатными. Помощь оказывалась бесплатно. Даже программы были
бесплатными! Такой подход обусловил начальный рост и прогресс. Инженеры и программисты
пользовались плодами совместного труда великих умов, объединившихся для решения общей проблемы.
Но по мере развития Сети расширялись возможности ее использования в коммерческих целях.
Однако коммерческий инструментарий призван обеспечивать конкурентное преимущество, а его
бесплатное распространение обычно не входит в планы фирм. Корпоративная культура быстро
поглотила философию свободы. Тем не менее ряд проектов по-прежнему существует и
создается совместными усилиями энтузиастов. Один из главных принципов распространения программ
с открытыми текстами заключается в том, что тысячи программистов Сети лучше справятся с
развитием и совершенствованием программы, чем маленькая группа корпоративных программистов.
Ниже перечислены некоторые популярные программные проекты, распространяемые с открытыми
текстами:
- Web-сервер Apache: самый популярный web-сервер Интернета.
- Linux: операционная система, популярность которой непрерывно растет.
- Perl: язык программирования Web (также используемый многими системными администраторами
Unix и некоторыми системными администраторами Windows в качестве мощного сценарного языка).
За дополнительной информацией о распространении программ с открытыми исходными текстами
обращайтесь на сайт http://www.opensource.org/.
Фирма Netcraft. Ltd, (http://www.netcraft.com), занимающаяся сетевой
аналитикой, регулярно анализирует состав программного обеспечения web-серверов,
работающего в Web. В табл. 35.1 приведены результаты одного из последних
исследований Netcraft.
В категорию iPlanet входят сайты, на которых работают iPlanet-Enterprise,
Netscape-Enterprise, Netscape-FastTrack, Netscape-Commerce,
Netscape-Communications, Netsite-Commerce и Netsite-Communications. В категорию Microsoft
входят сайты с программными продуктами Microsoft Internet Information Server,
Microsoft HS-W, Microsoft-PWS-95 и Microsoft PWS.
Таблица 35.1. Рыночная доля различных web-серверов по состоянию на август 2001 г.
(по результатам анализа 30 775 624 сайтов)
Сервер Процент использования
Apache 60,33%
Microsoft 28,29%
iPlanet 4,29%
Zeus 1,53%
Установка и запуск web-сервера Apache
Web-сервер Apache, занимающий первое место по популярности в Web,
распространяется с открытыми текстами и базируется на некогда популярном сервере
NCSA httpd. Apache надежен, обладает богатыми возможностями и при этом
распространяется бесплатно! Не приходится удивляться тому, что Apache в
настоящее время обеспечивает работу более половины web-серверов в Интернете.
Загрузка, установка и настройка Apache
В этом разделе кратко рассматривается процесс загрузки, установки и настройки
web-сервера Apache в среде Linux.
ПРИМЕЧАНИЕ
Поскольку сервер Apache первоначально разрабатывался для Unix и сейчас используется в
основном в системах семейства Unix, материал этого раздела ориентируется на установку и настройку
Apache в среде Unix (конкретно — в системе Linux). На момент написания книги существовала
реализация Apache 1.3.22 для Win32, но по стабильности работы она уступала Unix-версии. В конце
главы приведен очень краткий обзор установки Apache для Windows. Тем не менее, если ваш web-
сервер должен работать в среде Windows, подумайте об использовании более надежного
продукта — например, Microsoft Internet Information Server, O'Reilly Website или Netscape Enterprise Server.
Если вы работаете в операционной системе Linux, вполне вероятно, что web-
сервер Apache был установлен по умолчанию. Если это так — замечательно,
можно двигаться дальше. Тем не менее было бы лучше удалить Apache и
установить его заново по двум причинам:
1. Версия, включенная в установку, может оказаться устаревшей или
неправильно настроенной.
2. Загрузка, компиляция и установка Apache поможет лучше разобраться в том,
как работает сервер.
Итак, приступим к делу. Для начала следует убедиться в выполнении
следующих требований:
О Свободное место на диске — для установки Apache понадобится по крайней
мере 12 Мбайт временного дискового пространства. После установки Apache
будет занимать примерно три мегабайта плюс все пространство, занимаемое
web-страницами.
О Компилятор ANSI С — на компьютере должен быть установлен и правильно
настроен компилятор ANSI С. Рекомендуется использовать компилятор GNU
(http://www.gnu.org/).
Загрузка Apache
Apache можно загрузить с основного сайта (http://www.apache.org) или с любого
зеркального сайта.
ПРИМЕЧАНИЕ
Для ускорения загрузки рекомендуется выбрать зеркальный сайт, расположенный как можно
ближе. Список зеркальных сайтов публикуется по адресу http://www.apache.org/mirrors/.
Далее следует решить, хотите ли вы загрузить полный набор исходных
текстов и откомпилировать сервер самостоятельно или пропустите этап
компиляции и загрузите двоичные файлы.
ПРИМЕЧАНИЕ
Если вы решите загрузить предварительно откомпилированные двоичные файлы, убедитесь в том,
что они находятся на официальном сайте Apache или одном из его зеркальных сайтов. Файлы,
находящиеся на других сайтах, могут быть неправильно откомпилированы или даже могут содержать
дефекты в системе безопасности.
Следующий пример наглядно поясняет процесс загрузки исходных текстов.
Зайдите на сайт http://www.apache.org/dist/httd/. В окне браузера отображается
список доступных файлов. Выберите нужную версию и щелкните на ней, чтобы
приступить к загрузке. Ниже приведен примерный список предлагаемых файлов.
Announcement.html 03-Oct-2002 13:37 8.0К Apache 1.3 Release Note
Announcement.txt 03-Oct-2002 13:37 7.2K Apache 1.3 Release Note
Announcement2.html 02-Apr-2003 11:11 6.6K Apache 2.0 Release Note
Announcement2.txt 02-Apr-2003 11:11 5.8K Apache 2.0 Release Note
CHANGESJL.3 03-Oct-2002 11:51 404K List of changes in 1.3
CHANGES_2.0 01-Apr-2003 20:03 560K List of changes in 2.0
CURRENT-IS-2.0.45 20-Jan-2003 02:32 0 HTTP Server project
HEADER.html 20-Jan-2003 07:23 702 HTTP Server project
KEYS 01-Apr-2003 15:36 130K Developer PGP/GPG keys
README.html 01-Apr-2003 15:36 2.6K HTTP Server project
apache-docs-1.3.23.pdf.zip 24-Jan-2002 08:25 1.6M Documentation
in PDF - pkzipped
apache_L3.27-win32-src.zip 03-Oct-2002 19:13 2.9M Current Release
1.3.27
apache_1.3.27-win32-src.zip.asc 03-Oct-2002 19:13 477 PGP signature
apache_1.3.27-win32-src.zip.md5 03-Oct-2002 19:13 69 MD5 hash
apache_l.3.27.tar.Z 03-Oct-2002 11:51 3.5M Current Release
1.3.27
apache_l.3.27.tar.Z.asc 03-Oct-2002 11:51 175 PGP signature
apache_l.3.27.tar.Z.mdS 03-Oct-2002 11:53 61 MD5 hash
apache_l.3.27.tar.gz 03-Oct-2002 11:51 2.2M Current Release
1.3.27
ПРИМЕЧАНИЕ
Контрольная сумма MD5 поможет убедиться в том, что содержимое пакета не изменялось
после его создания. Это особенно важно при загрузке предварительно откомпилированных
двоичных файлов. Конкретная процедура проверки зависит от особенностей рабочей среды. В системе
Linux можно выполнить следующую команду:
# md5sum apache_1.3.6.gz
b4114ed78f296bfe424c4ba05dccc643apache_1.3.6.tar.gz
Сравните результат с содержимым файла md5 на сайте Apache (в данном примере это файл
apache_1.3.6.gz.md5). Если данные совпадают, значит, все нормально. Если между ними
существуют какие-либо различия, попробуйте загрузить файл снова.
После того как пакет Apache будет загружен во временный каталог, распакуйте
его утилитами gzip или uncompress (в зависимости от формата загрузки) и tar.
ПРИМЕЧАНИЕ
Программа gzip (GNU zip) — бесплатная утилита сжатия данных, распространяемая на условиях
общедоступной лицензии GNU. Благодаря своим хорошим показателям сжатия она очень популярна
в Интернете и в сообществе Unix.
За дополнительной информацией об этой популярной программе обращайтесь на сайт http://
www.gzip.org/.
Компиляция и установка Apache
Простейший способ компиляции и установки Apache основан на использовании
интерфейса APACI (Apache AutoConf-style Interface), появившегося в Apache
версий 1.3 и выше. Интерфейс APACI позволяет выполнить установку в
автоматизированном режиме.
ПРИМЕЧАНИЕ
Вы также можете откомпилировать и установить Apache старым способом. Соответствующие
инструкции приведены в файле INSTALL, находящемся в каталоге src.
Чтобы установить Apache при помощи APACI, перейдите во временный
каталог с файлами Apache. Обычно вам не придется редактировать файл Configuration,
если только вы не собираетесь устанавливать специальные модули кроме тех,
которые устанавливаются по умолчанию. Тем не менее, если в процессе
установки возникнут ошибки, прочитайте документацию в файле Configiration.
Обратите особое внимание на флаги EXTRAJZFLAGS, LIBS, LDFLAGS, INCLUDES и СС.
Дополнительная информация приведена в файле INSTALL
Процесс установки запускается следующей командой:
# ./configure -pref1х=каталог
где каталог — корневой каталог web-сервера (например, /usr/iocal/apache).
Затем постройте пакет Apache командой make:
# make
ПРИМЕЧАНИЕ
Если при вводе команды make отображается сообщение «command not found», необходимо
добавить ссылку на соответствующий каталог (вероятно, /usr/bin или /usr/ccs/bin) в переменную PATH.
Конкретная процедура зависит от того, какой командный интерпретатор используется в вашей
системе. Например, для интерпретатора bash необходимо выполнить следующие команды:
# PATH=$PATH:/usr/ccs/bin/
# export PATH
Выполнение make займет несколько минут (в зависимости от скорости вашей
системы). После того как команда будет успешно выполнена, можно переходить
к установке Apache. Введите команду
# make install
Команда устанавливает web-сервер Apache и соответствующие файлы в
каталог, указанный на первом этапе. После завершения установки переходите к
настройке Apache для вашей конкретной рабочей среды.
Настройка Apache
Настройка Apache определяется тремя основными конфигурационными файлами:
О access.conf — управление доступом к ресурсам web-сервера.
О httpd.conf — основной конфигурационный файл с параметрами работы Apache.
О srm.conf — информация о ресурсах, предоставляемых сайтом.
На первых порах вам практически не придется вносить изменения в эти файлы.
Некоторые параметры или директивы, которые могут потребовать редактирования,
описаны в следующих разделах. Конфигурационные файлы хорошо
документированы, и редактируемые параметры легко определяются простым просмотром
файла. За дополнительной информацией о настройке Apache обращайтесь по
адресу http://httpd.apache.org/docs/misc/perf-tuning.html.
ПРИМЕЧАНИЕ
В последней версии Apache три конфигурационных файла объединены в файл httpd.conf,
рассмотренный в следующем подразделе.
Файл httpd.conf
Файл httpd.conf содержит основные рабочие параметры Apache. Ниже
перечислены основные параметры, на которые следует обратить особое внимание.
О ServerName — имя web-сервера.
ServerName www.mydomain.com
О ServerType — тип сервера. Допустимые значения — standalone и inetd.
Автономный сервер (standalone) работает постоянно. Сервер с типом inetd начинает
работать только после получения запроса на запуск. По соображениям
быстродействия рекомендуется использовать значение standalone.
ServerType standalone
О Port — по умолчанию серверы HTTP работают на порте с номером 80.
Впрочем, в некоторых ситуациях сервер переводится на нестандартный порт —
например, для того, чтобы «скрыть» его от посторонних. Если сервер работает
на нестандартном порте, то для обращения к web-страницам пользователь
должен знать номер порта и включить его в URL. Допустимыми считаются
номера портов в интервале 1-65535, хотя обычно первые 1024 номера
резервируются.
Port 80
О User — пользователь, с правами которого работает сервер Apache. При
выборе значения этого параметра следует учитывать возможные проблемы
безопасности, поскольку Apache обладает привилегиями управляющего
пользователя. Во многих системах Unix для подобных целей создается
пользователь с именем «nobody». Если в вашей системе отсутствует учетная запись
непривилегированного пользователя, создайте ее.
User nobody
О ServerAdmin — имя администратора. Если в процессе работы возникнут
проблемы, Apache сообщает о них указанному пользователю.
ServerAdmin root
О ServerRoot — корневой каталог установки Apache. Все конфигурационные
и журнальные файлы хранятся в корневом каталоге, если обратное не будет
указано в настройках Apache.
ServerRoot /usr/local/apache
О ErrorLog — местонахождение и имя файла, используемого для регистрации
ошибок.
ErrorLog logs/error.log
О TransferLog — местонахождение и имя файла, используемого для регистрации
обращений.
TransferLog logs/access.log
О Timeout — продолжительность интервала (в секундах), после истечения которого
при отсутствии ответа от браузера web-сервер принимает решение о закрытии
подключения. По умолчанию интервал тайм-аута равен 300 секундам.
Timeout 300
Следующие параметры управляют ресурсами Apache. Традиционно они
хранились в файле srm.conf, хотя в новых версиях Apache они переместились в файл
httpd.conf. Ниже перечислены самые важные из этих параметров.
О DocumentRoot — корневой каталог дерева документов, предоставляемых web-
сервером.
DocumentRoot /usr/local/apache/htdocs/
О Directorylndex — если пользователь запрашивает с сервера URL,
завершающийся именем каталога, web-сервер пытается предоставить документ с
указанным именем. Например, при обращении по адресу http://www.apache.org/
браузеру будет предоставлен файл index.html.
Directorylndex index.html
О Indexlgnore — если пользователь запрашивает с сервера URL, завершающийся
именем каталога, но файл index.html при этом недоступен, web-сервер
предоставляет пользователю список файлов в указанном каталоге. Некоторые
файлы (например, .htaccess или README) отображать в таких списках
нежелательно. Сервер исключает из отображаемого списка файлы, указанные в
параметре Indexlgnore.
Indexlgnore .>>* *- *# HEADER* README* RCS CVS *,v *,t
Правила, регулирующие доступ к web-серверу в целом или к его отдельным
компонентам, настраиваются в файле access.conf. В последних версиях Apache
эти параметры перемещены в файл httpd.conf.
Рассмотрим следующий блок:
<Directory /><Directory />
Options FollowSymLinks
AllowOverride None
</Directory></Di rectory>
Похожий блок присутствует в любом типичном файле access.conf. Тег
<Directory /> открывает контейнер. Все содержимое файла перед тегом </Directory>
относится к каталогу /. Параметры в приведенном примере означают, что Apache
должен следовать символическим ссылкам на этот каталог и запрещать
переопределение параметров в других управляющих файлах.
За дополнительной информацией об управлении доступом к сайту с
использованием файла access.conf обращайтесь к документации Apache, прилагаемой
к web-серверу.
Запуск и остановка Apache
После того как сервер Apache будет откомпилирован, установлен и настроен,
все готово к работе. Apache запускается следующей командой:
# каталог/bin/apachectl start
где каталог — корневой каталог сервера.
Просмотр списка процессов показывает, что Apache успешно запущен:
# ps -ax | grep http
3514 ? S 0:00 /usr/local/apache/bin/httpd
16201 ? S 0:00 /usr/local/apache/bin/httpd
16635 ? S 0:00 /usr/local/apache/bin/httpd
16661 ? S 0:00 /usr/local/apache/bin/httpd
16662 ? S 0:00 /usr/local/apache/bin/httpd
Введите в браузер URL, указанный в параметре ServerName (http://www.
yourdomain.com/ или http://localhost/). Если настройка Apache выполнена
правильно, вы увидите тестовую страницу, изображенную на рис. 35.1.
Работа Apache останавливается командой
# каталог/bin/apachectl stop
/etc/ red
Система red позволяет организовать автоматический запуск Apache. В некоторых
разновидностях Unix и Linux файл httpd.init создается автоматически (например,
/etc/rc.d/init.d/httpd.init в Red Hat Linux). В таких случаях необходимо
отредактировать этот файл и включить в него информацию о местонахождении
исполняемого файла httpd.
В большинстве систем достаточно включить в файл /etc/rc.drc.local простую
запись вида
/usг/local/apache/bin/apachectl start
IE*» £<* ¥*** ЁР £«f*nuiicator Йф\ !.'.":_.: :-'.:л :•:":::!
Щ • ^|Г8ооктдк$' ^ GotejhKpV/focabost/ j»j {j^T What's Rdat«xi jgj
It Worked! The Apache Web Server is Installed on this Web
Site!
II you can see this page, then the peopte who own this domain have just installed the Apache Web server software successfully.
They now have to add content to this directory and replace this placeholder page, or else point the server at their real content.
I If you are seeing this page instead of the site you expected, please contact the administrator of the site 1
involved. (Try sending mail to <Mebmb3tez%do2aa±a>.) Although this site is running the Apache software it
I almost certainly has no other connection to the Apache Group, so please do not send mail about this site or its
contents to the Apache authors. If you do, your message will be ignored.
The Apache documentation has been included with this distribution.
The Webmaster of this site is free to use the image befow on an Apache-powered Web server. Thanks for using Apache!
^juiniirir*^'^'* *у
^M щ APAC *~i Ш
Рис. 35.1. Тестовая страница Apache
Загрузка двоичных файлов Apache
Если вы предпочитаете загрузить предварительно откомпилированные двоичные
файлы, введите адрес http://www.apache.org/dist/httpd/binaries/. В браузере
отображается список доступных платформ. Ниже приведена примерная структура
каталога с двоичными файлами Apache для различных операционных систем.
aix/ 12-Jul-2002 06:25 - Binary distributions
aux/ 06-May-2000 12:56 - Binary distributions
beos/ 02-Nov-2000 02:17 - Binary distributions
bs2000-osd/ 21-Jun-2002 03:31 - Binary distributions
bsdi/ 18-Oct-2000 00:22 - Binary distributions
cygwin/ 19-Nov-2002 09:07 - Binary distributions
darwin/ 28-Nov-2002 12:14 - Binary distributions
dgux/ 12-Jun-2000 03:47 - Binary distributions
digitalunix/ 12-Jun-2000 03:47 - Binary distributions
freebsd/ 12-Aug-2002 12:28 - Binary distributions
hpux/ 12-Aug-2002 12:27 - Binary distributions
irix/ 13-Oct-2000 04:57 - Binary distributions
linux/ 13-Oct-2002 23:58 - Binary distributions
macosx/ 28-Nov-2002 12:14 - Binary distributions
macosxserver/ 30-Oct-2000 17:42 - Binary distributions
netbsd/ 12-Jun-2000 03:47 - Binary distributions
netware/ 01-Apr-2003 16:23 - Binary distributions
openbsd/ 13-Oct-2000 04:59 - Binary distributions
os2/ 04-Apr-2O03 22:42 - Binary distributions
os390/ 14-Aug-2002 12:50 - Binary distributions
osfl/ 12-Jun-2000 03:47 - Binary distributions
qnx/ 31-May-2001 01:22 - Binary distributions
reliantunix/ 03-Oct-2002 23:59 - Binary distributions
rhapsody/ 30-Oct-2000 17:42 - Binary distributions
sinix/ 03-Oct-2O02 23:59 - Binary distributions
Solaris/ 17-Oct-2002 03:56 - Binary distributions
sunos/ 24-Feb-2000 18:27 - Binary distributions
unixware/ 13-Oct-2000 04:58 - Binary distributions
Win32/ 02-Apr-2003 04:13 - Binary distributions
Откройте каталог, соответствующий вашей платформе. В браузере появляется
список форматов и версий следующего вида:
apache_1.3.1-sparc-whatever-linux.README 06-Apr-2000 14:05 522
apache_1.3.1-sparc-whatever-linux.tar.gz 06-Apr-2000 14:05 1.3M
apache_1.3.12-i686-whatever-linux2.README 06-Apr-2000 14:05 1.8K
apache_1.3.12-i686-whatever-linux2.tar.gz 06-Apr-2000 14:05 2.6M
apache_1.3.14-i686-whatever-linux2.README 13-Oct-2000 04:57 1.8K
apache_1.3.14-i686-whatever-linux2.tar.gz 13-Oct-2000 03:21 2.8M
apache_1.3.14-i686-whatever-linux2.tar.gz.asc 13-Oct-2000 03:10 292
PGP signature
apache_1.3.20-i686-whatever-linux22.README 20-Jun-2001 11:36 1.9K
apache_1.3.20-i686-whatever-linux22.tar.gz 20-Jun-2001 11:36 3.1M
apache_l.3.20-i686-whatever-linux22.tar.gz.asc 20-Jun-2001 11:36 477
PGP signature
apache_1.3.20-ia64-whatever-linux22.README 21-Aug-2001 08:15 2.IK
apache_1.3.20-ia64-whatever-linux22.README.asc 21-Aug-2001 08:18 293
PGP signature
apache_1.3.20-ia64-whatever-linux22.tar.gz 21-Aug-2001 08:16 3.4M
apache_l.3.20-ia64-whatever-linux22.tar.gz.asc 21-Aug-2001 08:17 293
PGP signature
apache_l.3.20-ia64-whatever-linux22. tar.gz.md5 21-Aug-2001 08:16 84
MD5 hash
apache_1.3.22-i686-whatever-linux22.README 15-Oct-2001 10:37 1.9K
apache_1.3.22-i686-whatever-linux22.tar.gz 15-Oct-2001 10:25 3.4M
apache_l.3.22-i686-whatever-linux22.tar.gz.asc 15-Oct-2001 10:26 477
PGP signature
apache_1.3.24-i686-whatever-linux22.README 16-May-2002 13:00 1.9K
apache_l.3.24-i686-whatever-linux22.tar.gz 16-May-2002 13:00 3.5M
apache_l.3.24-i686-whatever-linux22.tar.gz. asc 16-May-2002 13:00 232
PGP signature
apache_1.3.24-s390-whatever-linux22.README 14-May-20O2 13:57 1.9K
apache_l.3.24-s390-whatever-linux22.tar.gz 14-May-2002 13:57 3.6M
apache_1.3.24-s390-whatever-linux22.tar.gz.asc 14-May-2002 13:57 232
PGP signature
apache_1.3.26-ppc-whatever-linux22.README 19-Jun-2002 14:41 1.9K
apache_1.3.26-ppc-whatever-linux22.tar.gz 19-Jun-2002 14:50 3.6M
apache_l.3.26-ppc-whatever-linux22.tar.gz.asc 19-Jun-2002 14:50 232
PGP signature
apache_1.3.26-ppc-whatever-linux22.tar.gz.md5 19-Jun-2002 14:50 76
MD5 hash
apache_1.3.6-armv41-whatever-linux2.README 06-Apr-2000 14:05 1.9K
apache_1.3.6-armv41-whatever-linux2.tar.gz 06-Apr-2000 14:05 2.2M
apache_1.3.6-i586-whatever-linux2.README 06-Apr-2000 14:05 1.9K
apache_1.3.6-i586-whatever-linux2.tar.gz 06-Apr-2000 14:05 2.1M
apache_1.3.6-i686-whatever-linux2.README 06-Apr-2000 14:05 1.9K
apache_1.3.6-i686-whatever-linux2.tar.gz 06-Apr-2000 14:05 2.1M
apache_1.3.6-mips-whatever-linux2.README 06-Apr-2000 14:05 1.9K
apache_1.3.6-mips-whatever-linux2.tar.gz 06-Apr-2000 14:05 2.2M
apache_1.3.6-sparc-whatever-linux2.README 06-Apr-2000 14:05 1.9K
apache_1.3.6-sparc-whatever-linux2.tar.gz 06-Apr-2000 14:05 2.1M
apache_1.3.9-alpha-whatever-linux2.README 06-Apr-2000 14:05 1.8K
apache_1.3.9-alpha-whatever-linux2.tar.gz 06-Apr-2000 14:05 3.5M
apache_1.3.9-alpha-whatever-linux2.tar_gz.asc 06-Apr-2000 14:05 286
PGP signature
apache_1.3.9-i586-whatever-linux2.README 06-Apr-2000 14:05 1.8K
apache_1.3.9-i586-whatever-linux2.tar.gz 06-Apr-2000 14:05 2.3M
apache_l.3.9-i586-whatever-1 inux2.tar_gz.asc 06-Apr-2000 14:05 286
PGP signature
apache_1.3.9-i686-whatever-linux2.README 06-Apr-2000 14:05 1.8K
apache_1.3.9-i686-whatever-linux2.tar.gz 06-Apr-2000 14:05 2.3M
apache_l.3.9-i686-whatever-linux2.tar_gz.asc 06-Apr-2000 14:05 286
PGP signature
apache_1.3.9-mips-whatever-linux2.README 06-Apr-2000 14:05 1.8K
apache_1.3.9-mips-whatever-linux2.tar.gz 06-Apr-2000 14:05 2.5M
apache_1.3.9-sparc-whatever-linux2.README 06-Apr-2000 14:05 1.8K
apache_1.3.9-sparc-whatever-linux2.tar.gz 06-Apr-2000 14:05 2.7M
apache_l.3.9-sparc-whatever-linux2.tar_gz.asc 06-Apr-2000 14:05 286
PGP signature
Выберите нужную версию и загрузите ее во временный каталог своей системы.
Установка и настройка Apache
в двоичном формате
После загрузки пакета можно переходить к установке и настройке Apache. Прежде
всего распакуйте принятый пакет во временный каталог (утилитами uncompress
или gzip и tar).
Чтобы установить Apache, запустите сценарий install-bindist.sh. Если Apache
устанавливается в каталог, отличный от каталога по умолчанию (/usr/local/apache/),
укажите имя каталога (ServerRoot) в командной строке. Дополнительная
информация приведена в файле INSTALL
# ./install-bindist.sh [каталог]
После установки web-сервера Apache операции настройки, запуска и остановки
производятся так же, как описано в предыдущих разделах.
Использование Apache для Windows
В этом разделе рассказано, как загрузить, установить и настроить Apache для
работы на платформе Microsoft Windows.
ПРИМЕЧАНИЕ
Версия Apache для Windows менее надежна, чем Unix-версия. Она не оптимизирована по
производительности и может содержать ошибки, создающие дефекты в безопасности вашей системы.
Если ваш web-сервер должен работать на платформе Microsoft, лучше воспользоваться Microsoft
IIS или другим сервером, предназначенным для Windows.
Полный список web-серверов приведен в разделе «Другие web-серверы» в конце главы.
Загрузка Apache для Windows
Предварительно откомпилированная версия Apache для Win32 доступна по
адресу http://www.apache.org/dist/httpd/binaries/win32/.
Загрузите файл во временный каталог или разместите его на рабочем столе.
Установка Apache для Windows
Чтобы начать установку, запустите только что принятый исполняемый файл. Вам
будет предложено ввести каталог, в который будет устанавливаться Apache. Либо
подтвердите предложенный вариант, либо укажите другой каталог по своему
усмотрению. Если каталог еще не существует, программа установки создаст его за вас.
Далее программа установки запрашивает имя, под которым Apache будет
отображаться в меню Пуск (Start). Как и на предыдущем шаге, подтвердите
значение по умолчанию или введите другое имя по своему усмотрению.
Выберите тип установки. При типичной установке (Typical) устанавливается
все, кроме исходных текстов программы. При минимальной установке (Minimal)
не устанавливаются руководства и исходные тексты. При выборочной (Custom)
установке вы сможете выбрать состав устанавливаемых компонентов
(руководства, исходные тексты и т. д.).
Настройка Apache для Windows
После установки Apache для Windows обычно вносятся изменения в
конфигурационные файлы. В версии Apache для Windows, как и в Unix-версии,
используются три конфигурационных файла:
О access.conf;
О httpd.conf;
О srm.conf.
Файлы снабжены подробными комментариями. Внимательно прочитайте их,
и вы поймете, какие параметры необходимо настроить. За дополнительной
информацией обращайтесь к разделу «Настройка Apache» настоящей главы.
Запуск Apache для Windows
Существует несколько вариантов запуска Apache для Windows:
О из меню Пуск (Start) системы Windows;
О из окна DOS (в режиме командной строки);
О в виде службы NT.
Запуск Apache из меню и окна DOS
При запуске Apache из меню Пуск (Start) открывается окно DOS, которое остается
открытым в течение всего времени, пока работает Apache. Чтобы остановить или
перезапустить Apache, откройте другое консольное окно и введите команду
apache -k shutdown
или
apache -к restart
Apache также можно запустить из консоли DOS командой
apache -k start
Консольное окно остается активным в течение всей работы Apache.
Запуск Apache в виде службы NT
Прежде чем запускать Apache как службу NT, необходимо установить его в этом
формате. Введите в окне DOS команду
apache -I -n "Apache Webserver"
Чтобы удалить поддержку запуска Apache в виде службы, выполните команду
apache -u -n "Apache Webserver"
После того как Apache будет установлен в виде службы NT, для настройки,
запуска и остановки сервера можно использовать приложение Службы (Services)
панели управления Windows.
Другие web-серверы
Хотя основная доля рынка web-серверов принадлежит Apache, существует
немало альтернативных программных продуктов. Ниже приведен краткий список
самых распространенных web-серверов.
О Netscape Enterprise Server — мощный сервер Netscape (также см. FastTrack).
Платформа: HP-UX, Solans, NT (http://www.iplanet.com/products).
О Netscape FastTrack — сервер Netscape начального уровня (также см. Enterprise).
Платформа: Unix, Windows 95/98, NT (http://www.iplanet.com/products).
О Microsoft Internet Information Server (IIS) — популярный сервер для
Windows NT. Платформа: NT Server (http://www.microsoft.com/).
О Microsoft Personal Web Server (PWS) — web-сервер начального уровня; не
рекомендуется для сайтов с высоким трафиком. Платформа: Windows (входит
в NT 4.0 Option Pack) (http://www.microsoft.com).
О AOLserver — компактный, бесплатный сервер с поддержкой средств
разработки web-приложений. Платформа: Unix, Linux (http://www.aolserver.com).
О Zeus — полнофункциональный web-сервер с поддержкой защищенных
виртуальных серверов. Платформа: Unix (http://www.zeus.co.uk/products/zws/).
О O'Reilly WebSitePro — полнофункциональный сервер, прекрасно
подходящий для разработки web-приложений. Платформа: Windows 95/98, NT (http://
website.ora.com/).
О Stronghold — коммерческая версия Apache с улучшенной защитой.
Платформа: Unix (https://www.c2.net/products/sh3/).
О WebSTAR — полнофункциональный web-сервер для платформы Macintosh
(http://www.webstar.com/).
За дополнительной информацией об этих и многих других web-серверах
обращайтесь по адресам, включенным в приведенные выше описания, или
посетите следующие сайты:
О Webserver Compare — данные спецификаций серверов HTTP:
http://webcompare.internet.com/
О Server Watch — авторитетный ресурс, посвященный серверам Интернета:
http://serverwatch.internet.com/
Итоги
World Wide Web ежегодно удваивается в размерах, и конца этому росту не
предвидится. Однако эксперты сходятся в том, что мы не используем и малой
доли тех возможностей, которые открываются благодаря Интернету и Web.
За короткое время World Wide Web прошла путь от небольшого количества
«сугубо информационных» сайтов до миллионов сайтов, предлагающих
разнообразную информацию и услуги. Люди используют Web для выполнения таких
повседневных дел, как получение информации, оформление покупок,
проведение банковских операций и т. д.
Функционирование Web обеспечивают web-серверы. Более половины сайтов
в Web работает на базе Apache — web-сервера, наиболее подробно
представленного в этой главе. Приведенный материал поможет читателю загрузить,
установить, настроить и запустить самый популярный web-сервер Интернета. Глава
завершается кратким обзором web-серверов, распространенных на момент
написания книги. Хочется верить, что материал, приведенный в книге (и особенно
в этой главе), будет применен на практике и поможет читателю включиться
в самое динамичное технологическое направление, наиболее заметно
изменяющее нашу жизнь — World Wide Web.
*%£Z Настройка
*ЭО и оптимизация
протоколов
в системах
семейства Unix
Энн Карасик (Anne Carasik)
При работе с любой системой необходимо знать, как проходит процесс
инициализации и где находятся конфигурационные файлы. Эта информация помогает
оптимизировать конфигурацию сети и упрощает диагностику. В процессе
настройки и оптимизации параметров сети также приходится учитывать
некоторые аспекты, не связанные напрямую с сетевой поддержкой, но обусловленные
спецификой самой системы.
Инициализация системы
При загрузке системы Unix или Linux необходимо учитывать ряд факторов,
многие из которых относятся к сетевым демонам — когда и кем запускается тот
или иной демон и какие демоны работают в системе.
В любой разновидности Unix существует процесс-«предок» init. Он запускает
все остальные процессы в системе Unix, включая командные интерпретаторы,
в которых работают пользователи, и сетевые процессы.
Процесс init и /etc/inittab
Говорят, что система Unix состоит из двух основных компонентов: файлов и
процессов. В Unix все процессы порождаются от init — в конечном счете любой
процесс связывается с init через своих родителей. На рис. 36.1 изображена связь init
с другими процессами.
init
ftpd tty mountd
tesh
xterm
Рис. 36.1. Процесс init и его потомки
Процесс init выполняется на последнем этапе загрузки, после проверки
файловых систем и монтировки дисков, поэтому он может определить, в каком режиме
(однопользовательском или многопользовательском) должна работать система.
В некоторых системах семейства Unix init использует конфигурационный
сценарий /etc/inittab. Пример такого сценария приводится ниже.
# inittab Файл определяет параметры настройки системы
# процессом INIT для определенных уровней исполнения
# Автор: Михель ван Сморенбург, <miquels@drinkel.nl.mugnet.org>
# Файл изменен для RHS Linux Марком Эвингом и Донни Барнсом
# Уровень выполнения по умолчанию. В RHS используются следующие уровни:
# 0 - остановка (НЕ ПРИСВАИВАЙТЕ initdefault!)
# 1 - однопользовательский режим
# 2 - многопользовательский режим без NFS (то же, что и 3,
# но без сетевой поддержки)
# 3 - полный многопользовательский режим
# 4 - не используется
# 5 - XII
# 6 - перезагрузка (НЕ ПРИСВАИВАЙТЕ initdefault!)
id: 3:initdefault;
# Инициализация системы
si::sysinit:/etc/rc.d/rc.sysinit
10:0:wait:/etc/rc.d/rc 0
U:l:wait:/etc/rc.d/rc 1
12:2:wait:/etc/rc.d/rc 2
13:3:wait:/etc/rc.d/rc 3
14:4:wait:/etc/rc.d/rc 4
15:5:wait:/etc/rc.d/rc 5
16:6:wait:/etc/rc.d/rc 6
# Операции, выполняемые на всех уровнях
ud::once:/sbin/update
# Перехват CTRL-ALT-DELETE
са: :ctrlaltde"l:/sbin/shutdown -t3 -г now
# При получении от UPS сообщения о сбое питания предполагается, что
# запаса аккумуляторов хватит еще на несколько минут работы.
# Запланировать отключение системы через 2 минуты.
# Разумеется, для этого в системе должен быть установлен^ демон
# powerd с подключенным и правильно работающим UP5.
pf::powerfail:/sbin/shutdown -f -h +2
"Power failure; System Shutting Down"
# Если питание восстанавливается до отключения, отменить отключение,
рг:12345:powerokwait:/sbin/shutdown -с
"Power Restored; Shutdown Cancelled"
# Запуск getty на стандартных уровнях
1:2345:respawn:/sbin/mingetty ttyl
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
# Запуск xdm на уровне 5
# Xdm теперь представляет собой отдельную службу,
х:5:respawn:/etc/Xll/prefdm -nodaemon
В приведенном файле /etc/inittab для Red Hat Linux сетевая поддержка
начинается с уровня 3. В большинстве диалектов Unix на уровне 3 запускаются
сетевые процессы, включая демона Интернета (inetd), NFS, DNS и Sendmail.
Сценарии re
Чтобы инициировать выполнение процессов-потомков, init запускает
стартовые сценарии, называемые сценариями гс. Эти сценарии запускают сетевые
процессы, в результате чего система Unix готовится к взаимодействию с другими
системами.
В Red Hat Linux и других системах на базе System V (таких, как HP-UX) init
запускает все сетевые стартовые сценарии, находящиеся в каталоге /etc/rc.d/rc3.d.
В других системах также могут вызываться сетевые сценарии из rc.M («M»
означает «Multiuser», то есть многопользовательский) или rc.inet Конкретная
процедура полностью зависит от операционной системы.
Для сохранения логической последовательности мы будем ориентироваться
на Red Hat Linux. Поскольку эта книга посвящена сетям, просмотрим
содержимое каталога /etc/rc.d/rc3.d/:
[root@tigerlair stripes]# Is /etc/rc.d/rc3.d/
K05innd K20rwalld K45arpwatch
K80random S40atd S85sound
K08autofs K20rwhod K45named K85netfs
S40crond S90xfsK10xntpd K25squid
K50snmpd K88ypserv S50inet
S99linuxconf K15postgresql K30mcserv K55routed
K89portmap 555sshd S99local
K20bootparamd K30sendmail K6011pd
K96pcmcia S72amdK20nfs K34yppasswdd K60mars-new S05apmd
S75keytableK20rstatd K35dhcpd K75gated S10network
585gpm
K20rusersd K35smb K80nscd
S30syslog S85httpd
Каждый из этих файлов запускает определенную службу. На уровне 3,
помимо сетевой поддержки, запускается много других процессов. Что касается сети,
запускаемых демонов можно идентифицировать по символам, следующим за
S## и К## (К = Kill, S = Start). Числовые номера определяют
последовательность запуска и остановки демонов.
Сценарии гс также определяют параметры, используемые сетевыми демонами
при первом запуске.
Обратите внимание: в сценарии запуска или остановки не обязательно
существует парный сценарий. Например, у сценария S50inet нет парного сценария K50inet.
Файл SSOinet выглядит так:
#!/bin/sh
#
# inet Запуск сетевых служб TCP/IP. Сценарий определяет имя хоста,
# создает маршруты, запускает сетевого демона Интернета
# и RPC postmapper.
# Автор: Михель ван Сморенбург, <miquels@drinkel.nl.mugnet.org>
# Другие участники проекта Red Hat
#
# chkconfig: 345 50 50
# Описание: Суперсерверный демон Интернета (обычно называемый inetd) \
# запускает другие службы Интернета по мере необходимости. \
# Он отвечает за запуск многих служб, включая telnet, ftp, \
# rsh и rlogin. Отключение inetd приводит к отключению \
# всех служб, за которые он отвечает.
# processname: inetd
# pidfile: /var/run/inetd.pid
# config: /etc/sysconfig/network
# config: /etc/inetd.conf
# Библиотека функций
. /etc/rc.d/init.d/functions
# Конфигурация
. /etc/sysconfig/network
# Проверить сетевую поддержку
if [ ${NETWORKING} = "no" ]
then
exit 0
fi
[ -f /usr/sbin/inetd ] || exit 0
# Проверить параметр вызова
case "$1" in
start)
echo -n "Starting INET services: "
daemon inetd
echo
touch /var/lock/subsys/inet
stop)
echo -n "Stopping INET services: "
killproc inetd
echo
rm -f /var/lock/subsys/inet
status)
status inetd
restart|reload)
killall -HUP inetd
*)
echo "Usage: inet {start|stop|status|restart|reload}"
exit 1
esac
exi t 0
Сценарий остановки K45named выглядит так:
#!/bin/sh
#
# named
# Сценарий обеспечивает запуск и остановку named (сервер DNS BIND)
#
# chkconfig: 345 55 45
# Описание: named (BIND) - сервер DNS (Domain Name System),
# обеспечивающий преобразование хостовых имен в IP-адреса.
# probe: true
# Библиотека функций
. /etc/rc.d/init.d/functions
# Сетевая конфигурация
. /etc/sysconfig/network
# Проверить сетевую поддержку
if [ ${NETWORKING} = "no" J && exit 0
[ -f /usr/sbin/named ] || exit 0
[ -f /etc/named.conf ] || exit 0
# Проверить параметр вызова
case "$1" in
start)
# Запуск демонов
echo -n "Starting named: "
daemon named
echo
touch /var/lock/subsys/inet
stop)
# Остановка демонов
echo -n "Shutting down named: "
killproc named
rm -f /var/lock/subsys/named
echo
status)
/usr/sbin/ndc status
exit $?
restart)
/usr/sbin/ndc restart
exit $?
reload)
/usr/sbin/ndc reload
exit $?
probe)
/usr/sbin/ndc reload >/dev/null 2>&1 || echo start
exit 0
*)
echo "Usage: named {start|stop|status|restart}"
exi t 1
esac
exit 0
ПРИМЕЧАНИЕ
Следует помнить, что не все реализации Unix хранят стартовые сценарии в одном месте. В
некоторых системах они могут храниться в каталогах /etc, /etc/rc и т. д.
Большинство сценариев, относящихся к различным уровням выполнения
и находящихся в каталогах с именами типа /etc/rc.d/rc3.d, представляют собой
символические ссылки на сценарии из каталога /etc/rc.d/init.d. Например,
сценарий /etc/rc.d/rc3.d/S50inet содержит символическую ссылку на файл
. . /init.d/inet
При запуске S50inet вызывается файл сценария ../in.it.d/inet с аргументом start.
Файл /etc/rc.d/rc3.d/S53named содержит символическую ссылку на сценарий
../init.d/named. При запуске S53named вызывается сценарий ../init.d/named с
аргументом start. При отключении системы выполняется сценарий K45named, который
также содержит символическую ссылку на сценарий ../init.d/named, но на этот
раз ../init.d/named передается аргумент stop. Теперь понятно, почему в каждом из
этих сценариев присутствует логика обработки условий start, stop и всех
остальных аргументов, которые могут передаваться сценарию. С учетом этого факта
сценарии /etc/rc.d/initd могут использоваться для запуска и остановки различных
служб. Например, следующая команда останавливает службу BIND:
/etc/rc.d/init.d/named stop
Если служба BIND в данный момент не работает, ее можно запустить командой
/etc/rc.d/init.d/named start
После внесения изменений в файлы базы данных BIND (named) служба
перезапускается командой
/etc/rc.d/init.d/named restart
Конфигурационные файлы
Для нормальной работы сети необходимо обратить особое внимание на
содержимое конфигурационных файлов. В некоторых реализациях Unix особенно
важны следующие конфигурационные файлы:
О /etc/inetd.conf;
О /etc/services;
О /etc/protocols;
О /etc/hosts.equiv;
О /etc/resolv.conf;
О /etc/exports.
В других системах семейства Unix используются другие конфигурационные
файлы.
Определение сетевых протоколов в /etc/protocols
Сетевые протоколы, работающие в системе Unix, определяются в файле /etc/
protocols. Вводить информацию вручную вам не придется — настройка
протоколов должна осуществляться автоматически на стадии установки.
Обратите внимание: все перечисленные протоколы являются протоколами IP.
Другие протоколы (такие, как AppleTalk, NetWare или SNA) в списке отсутствуют.
Ниже приведен пример файла /etc/protocols.
# /etc/protocols:
# Межсетевые протоколы (IP)
#
# Источник: @(#)protocols 5.1 (Berkeley) 4/17/89
#
# Обновлено для NetBSD на основании RFC 1340,
# "Assigned Numbers"(июль 1992 г.)
Ip 0 IP # Internet Protocol (фиктивный номер)
icmp 1 ICMP # Internet Control Message Protocol
igmp 2 IGMP # Internet Group Management Protocol
ggp 3 GGP # Gateway-Gateway Protocol
ipencap 4 IP-ENCAP # Инкапсуляция IP в IP (официально - ''IP'1)
st 5 ST # Режим дейтаграмм ST
tcp 6 TCP # Transmission Control Protocol
egp 8 EGP # Exterior Gateway Protocol
pup 12 PUP # PARC Universal Packet Protocol
udp 17 UDP # User Datagram Protocol
hmp 20 HMP # Host Monitoring Protocol
xns-idp 22 XNS-IDP # Xerox NS IDP
rdp 27 RDP # Reliable Datagram Protocol
iso-tp4 29 IS0-TP4 # ISO Transport Protocol class 4
xtp 36 XTP # Xpress Transport Protocol
ddp 37 DDP # Datagram Delivery Protocol
idpr-cmtp 39 IDPR-CMTP # IDPR Control Message Transport
rspf 73 RSPF # Radio Shortest Path First
vmtp 81 VMTP # Versatile Message Transport
ospf 89 OSPFIGP # Open Shortest Path First IGP
ipip 94 IPIP # Yet Another IP encapsulation
encap 98 ENCAP # Yet Another IP encapsulation
Имена хостов в /etc/hosts
В некоторых локальных системах имена части хостов должны разрешаться без
использования DNS. Информация о таких хостах хранится в файле /etc/hosts.
Минимальный файл /etc/hosts выглядит так:
127.0.0.1 localhost loopback
Приведенная запись определяет адрес локального хоста (или адрес обратной
связи), который используется для обозначения IP-адреса текущего хоста. По
умолчанию имя localhost ассоциируется с адресом 127.0.0.1.
При добавлении в файл новых записей используется следующий синтаксис:
IP-адрес хост псевдоним
Каждая запись содержит IP-адрес хоста, ассоциированное с этим хостом
имя и назначаемые все псевдонимы. Файл /etc/hosts выглядит примерно так:
# Пример файла /etc/hosts
127.0.0.1 localhost loopback
1.2.3.4 wednesday.addams.com mymachine
1.2.3.5 pugsley.addams.com yourmachine
1.2.3.6 gomez.addams.com hismachine
1.2.3.7 cousinit.addams.com istmachine
1.2.3.8 morticia.addams.com hermachine
Таким образом, при подключении через Telnet к компьютеру yourmachine связь
будет установлена с компьютером pugsley.addams.com. Наличие псевдонима
позволяет обойтись без ввода полного имени домена.
ПРИМЕЧАНИЕ
Если система, указанная в файле /etc/hosts, находится в локальной сети, вводить полное имя
домена не обязательно.
Файл /etc/nsswitch.conf управляет порядком разрешения имен. Например, вы
можете указать, что поиск по файлу /etc/hosts должен выполняться до поиска
DNS, или наоборот — что поиск DNS должен предшествовать обращению к /etc/
hosts. Для настройки разрешения имен в Linux проще всего воспользоваться
конфигурационной утилитой linuxconf.
TCP/IP и файл /etc/services
Сервис TCP/IP, поддерживаемый системой Unix, определяется составом служб,
работающих в системе. Запускаемые службы настраиваются в двух местах: в файле
/etc/services и конфигурационном файле inetd.conf демона inetd, рассматриваемом
ниже в этой главе.
Файл /etc/services распределяет номера портов между сетевыми службами
(FTP, Telnet, сервер времени, сервер имен, SSH, Finger и т. д.).
Многие службы обычно всегда ассоциируются с одним стандартным портом;
такие порты называются хорошо известными. К их числу относятся все службы,
работающие на портах с номерами, не превышающими 1024.
В файл /etc/services также включается информация о других службах, гораздо
менее распространенных. Синтаксис записи файла /etc/services выглядит
следующим образом:
служба порт/1:ср_или_ис1р
В первом поле определяется имя сетевой службы (Telnet, echo, SMTP и т. д.),
а во втором — номер порта. После номера порта указывается, какой
транспортный протокол используется службой, TCP или UDP.
Ниже приведен пример файла /etc/services.
# /etc/services:
#
# Сетевые службы Интернета
#
# В настоящее время IANA присваивает один хорошо известный номер
# порта как для TCP, так и для UDP; по этой причине большинство
# служб представлено двумя записями, даже если протокол не поддерживает
# работы через UDP.
# Обновлено на основании RFC 1700, "Assigned Numbers"(октябрь 1994 г.).
# В список включены не все порты, а лишь наиболее распространенные.
pcpmux 1/tcp # Мультиплексор портов TCP
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users
daytime 13/tcp
daytime 13/udp
netstat 15/tcp
qotd 17/tcp quote
msp 18/tcp # Message Send Protocol
msp 18/udp # Message Send Protocol
chargen 19/tcp ttystat source
chargen 19/udp ttystat source
ftp-data 20/tcp
fsp 21/udp fspd
ssh 22/tcp # SSH Remote Login Protocol
ssh 22/udp # SSH Remote Login Protocol
telnet 23/tcp
# 24 - зарезервирован
smtp 25/tcp mail
# 26 - не используется
time 37/tcp timserver
nameserver 42/tcp name # IEN 116
whois 43/tcp nicname
domain 53/tcp nameserver # сервер имен
domain 53/udp nameserver
bootps 67/tcp # Сервер В00ТР
bootpc 68/tcp # Клиент В00ТР
ttfp 69/udp
gopher 70/tcp # Gopher
finger 79/tcp
www 80/tcp http # WorldWideWeb HTTP
www 80/udp # HyperText Transfer Protocol
link 87/tcp ttylink
kerberos 88/tcp kerberos krb5 # Kerberos v5
kerberos 88/udp kerberos krb5 # Kerberos v5
supdup 95/tcp
# 100 - зарезервирован
pop-3 110/tcp # POP version 3
sunrpc 111/tcp portmapper # RCP 4.0 portmapper TCP
sunrpc 111/udp portmapper # RCP 4.0 portmapper UDP
auth 113/tcp authentication tap ident
sftp 115/tcp
nntp 119/tcp readnews untp # USENET News Transfer Protocol
ntp 123/tcp
netbios-ns 137/tcp # NetBIOS Name Service
netbios-dgm 138/tcp # NetBIOS Datagram Service
netbios-ssn 139/tcp # NetBIOS session service
imap2 143/tcp imap # Interim Mail Access Proto v2
imap2 143/udp imap
snmp 161/udp # Simple Net Mgmt Proto
snmp-trap 162/udp snmptrap # Traps for SNMP
cmip-man 163/tcp # ISO Mgmt over IP (CMOT)
bgp 179/tco # Border Gateway Proto.
ire 194/tcp # Internet Relay Chat
qmtp 209/tcp # Quick Mail Transfer Protocol
#
# Специфические службы Unix
#
exec 512/tcp
biff 512/udp comsat
login 513/tcp
who 513/udp whod
shell 514/tcp cmd # Пароли не используются
syslog 514/udp
printer 515/tcp spooler # Спулер построчной печати
talk 517/udp
ntalk 518/udp
route 520/udp router routed # RIP
#
# Сервис Kerberos (Project Athena/MIT)
#
kerberos4 750/udp kerberos-iv kdc # Kerberos (server) udp
kerberos4 750/tcp kerberos-iv kdc # Kerberos (server) tcp
kerberos_master 751/udp # Аутентификация Kerberos
kerberos_master 751/tcp # Аутентификация Kerberos
passwd__server 752/udp # Сервер паролей Kerberos
krb_prop 754/tcp
krbupdate 760/tcp kreg # Регистрация Kerberos
kpasswd 761/tcp kpwd # Kerberos "passwd"
#
# Службы, добавленные для поставки Debian GNU/Linux
poppassd 106/tcp # Eudora
poppassd 106/udp # Eudora
ssmtp 465/tcp # SMTP через SSL
rsync 873/tcp # rsync
rsync 873/udp # rsync
simap 993/tcp # IMAP через SSL
spop3 995/tcp # POP-3 через SSL
socks 1080/tcp # Прокси-сервер socks
socks 1080/udp # Прокси-сервер socks
icp 3130/tcp # Internet Cache Protocol (Squid)
icp 3130/udp # Internet Cache Protocol (Squid)
ircd 6667/tcp # Internet Relay Chat
ircd 6667/udp # Internet Relay Chat
inetd и /etc/inetd.conf
В системе Unix многие сетевые службы запускаются супердемоном Интернета
inetd. Информация о запускаемых службах берется из файла inetd.conf, обычно
расположенного в каталоге /etc
ПРИМЕЧАНИЕ
Из-за возможности запуска других сетевых демонов из inetd возникает искушение постоянно
использовать inetd. Тем не менее в некоторых ситуациях это может оказаться нежелательным из-за
снижения быстродействия. Например, необходимость генерировать криптографические ключи в Secure
Shell серьезно сказывается на быстродействии.
В некоторых версиях Linux вместо демона inetd используется его усовершенствованный вариант
xinetd. Конфигурация этого демона хранится в файле /etc/xinetd.conf.
Большинству сетевых демонов взаимодействовать с другими демонами через
inetd достаточно удобно. Демоны прибегают к услугам inetd, поскольку inetd
может вести прослушивание на всех сокетах; в противном случае демонам
придется организовывать такое прослушивание самостоятельно.
Работа через inetd предотвращает ожидание привязки к сокету со стороны
многих демонов, а также случайное распределение доступа к сокетам между
демонами. В каком-то смысле inetd выполняет функции охранника на входе: он
пропускает только тех, у кого на это есть право, и направляет посетителей по
нужному пути. Тем самым упрощается обеспечение безопасности и управление
трафиком.
На рис. 36.2 показано, какие функции inetd выполняет во взаимодействии
между сетевыми процессами.
Сервер Клиент
inetd
Прослушивает подключения
по Интернету от клиента . .
< ftP
I '. . . I . I Г I Клиент запрашивает
I inetd Г 1 Пр 1 подключение ftp
inetd получает запрос на
подключение ftp от клиента
и передает его демону ftp
I ! I Возвращается к прослушиванию
| ' I других сокетов
inetd М W ftp
I I Между демоном ftp и клиентом I . 1
устанавливается связь
inetd
I inetd U -/ / W ftp
Даже после закрытия подключения
ftp inetd продолжает прослушивание
Рис. 36.2. Управление процессом inetd
Поскольку inetd не знает, каких сетевых демонов следует запустить,
информацию о запускаемых демонах необходимо определить в файле /etc/inetd.conf.
Записи /etc/inetd.conf имеют следующий формат:
служба тип_сокета протокол флаги пользователь путь аргументы
Таким образом, для демона ftp используется запись вида
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -I -a
После расшифровки становится ясно, что речь идет о демоне FTP с типом
сокетов stream, работающем с привилегиями root. Сервер находится в каталоге
/usr/sbin/tcpd, при вызове ему передаются аргументы in.ftpd -I -а. Обратите внимание:
флаги в этой записи отсутствуют (в этом случае поле флагов полностью
пропускается). Интерфейсный демон TCP /usr/sbin/tcpd управляет доступом к
службе, передаваемой в аргументе при вызове tcpd. Контроль за доступом к службе
осуществляется при помощи файлов /etc/hosts.deny и /etc/hosts.allow.
Использование интерфейсного демона позволяет задать политику безопасности,
управляющую доступом к заданной службе.
Ниже приведен фрагмент типичного файла inetd.conf.
# Авторы: Оригинал позаимствован из BSD Unix 4.3/TAHOE.
# Фред Н.ван Кемпен, <waltje@uwalt.nl.mugnet.org>
#
echo stream tcp nowait root internal
echo dgram udp wait root internal
discard stream tcp nowait root internal
discard dgram udp wait root internal
daytime stream tcp nowait root internal
daytime dgram udp wait root internal
chargen stream tcp nowait root internal
chargen dgram udp wait root internal
time stream tcp nowait root internal
time dgram udp wait root internal
# Стандартные службы
#
ftp stream tcp nowait root /usr/bin/tcpd in.ftpd -I -a
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
#
# Shell, login, exec, comsat и talk -- протоколы BSD.
#
shell stream tcp nowait root /usr/bin/tcpd in.rshd
login stream tcp nowait root /usr/bin/tcpd in.rlogind
#exec stream tcp nowait root /usr/bin/tcpd in.rexecd
#comsat dgram udp wait root /usr/bin/tcpd in.comsat
talk dgram udp wait root /usr/bin/tcpd in.talkd
ntalk dgram udp wait root /usr/bin/tcpd in.ntalkd
#dtalk stream tcp wait nobody /usr/bin/tcpd in.dtalkd
#
# Pop.imap и другие почтовые службы
#
#рор2 stream tcp nowait root /usr/bin/tcpd ipop2d
pop2 stream tcp nowait root /usr/bin/tcpd ipop3d
imap stream tcp nowait root /usr/bin/tcpd imapd
#
# Служба UUCP
#
#uucp stream tcp nowait uucp /usr/bin/tcpd
/usr/lib/uucp/uucico -1
#
# Служба Tftp предназначена в основном для загрузки. На большинстве
# сайтов эта служба запускается только на компьютерах, выполняющих
# функции "серверов загрузки". Не снимайте комментарии, если
# запуск этих служб не является *абсолютно* необходимым.
#
#tftp dgram udp wait root /usr/bin/tcpd in.tftpd
#bootps dgram udp wait root /usr/bin/tcpd bootpd
#
# Службы finger, systat и netstat выдают информацию о пользователях,
# которая может пригодиться потенциальным взломщикам систем. Многие
# сайты для улучшения безопасности отключают эти службы
# (полностью или частично).
#
finger stream tcp nowait root /usr/bin/tcpd in.fingerd
#cfinger stream tcp nowait root /usr/bin/tcpd in.cfingerd
#systat stream tcp nowait guest /usr/bin/tcpd /bin/ps -auwwx
#netstat stream tcp nowait guest /usr/bin/tcpd
/bin/netstat -f inet
#
# Аутентификация
#
auth stream tcp nowait nobody
/usr/sbin/in.identd in.identd -1 -e -o
#
# Конец файла inetd.conf
Обратите внимание: по умолчанию команды запуска многих сетевых
демонов закомментированы знаком #. Это означает, что эти команды должны
выполняться только в том случае, если вы абсолютно твердо уверены в их
необходимости. Считается, что эти команды создают угрозу для безопасности системы,
так как злоумышленник может использовать их для получения доступа или
выведения системы из строя.
ПРИМЕЧАНИЕ
Демоны обычно запускаются с правами пользователя nobody или user. Пользователь nobody
использует гостевой вход с ограниченными привилегиями. Будьте особенно внимательны при запуске
демонов с правами root, поскольку пользователь root обладает полным доступом ко всей системе.
При внесении изменений в файл /etc/inetd.conf (например, при отключении
существующих или запуске новых сетевых демонов) следует перезапустить inetd,
отправив ему сигнал HUP:
# killall -HUP inetd
Информация о сетях в файле /etc/networks
Хотя на практике данная возможность используется довольно редко, вы можете
создавать собственные определения сетей в файле /etc/networks. Это помогает
упорядочить информацию о сетях, к которым подключена ваша сеть.
Клиент DNS и файл /etc/resolv.conf
Для нормальной работы механизма разрешения имен DNS необходимо правильно
настроить клиента DNS. Задача решается при помощи файла /etc/resolv.conf.
В файле /etc/resolv.conf указываются имена доменов, серверы имен (только
основные или основные с дополнительными) и дополнительные директивы,
используемые в процессе поиска.
Содержимое файла /etc/resolv.conf используется в процессе разрешения имен,
то есть преобразования имен вида www.example.com в IP-адреса. Например,
фрагмент файла может выглядеть так:
search exampTe.com sub.example.com
nameserver 200.1.1.1
nameserver 200.1.1.2
nameserver 200.1.1.3
Директива search указывает, какие доменные суффиксы должны
использоваться при попытке разрешения неполных имен. Например, при попытке
обратиться к серверу по имени slOO DNS сначала попытается разрешить имя вида
slOO.example.com, а затем — имя вида slOO.sub.example.com. Директива nameserver
используется для определения до трех серверов DNS. Серверы опрашиваются
в порядке их перечисления в директиве nameserver.
ПРИМЕЧАНИЕ
Хотя содержимое файла относится к специфике DNS, вы должны проследить за правильностью
настройки. Проверьте работу DNS при помощи nslookup, dig, dnsquery или любых других
подручных средств.
Если этого не сделать, в работе сети часто возникают необъяснимые проблемы, внешне не
связанные с DNS.
Итоги
К числу важнейших аспектов сетевого администрирования относятся
инициализация сети, сопровождение конфигурационных файлов и внесение
правильных изменений при их редактировании.
Администратор должен знать, с какой отправной точки начинает работать
сетевая поддержка в системе. Системы семейства Unix могут работать на
нескольких уровнях выполнения; состав служб, работающих в системе, зависит от
текущего уровня. Следовательно, вы должны знать, на каком уровне запускаются
средства сетевой поддержки в вашей системе. В некоторых системах это
происходит на уровне 3, хотя в других случаях сетевая поддержка может запускаться
на других уровнях, в том числе и на многопользовательских. Конфигурация
уровней выполнения обычно определяется в файле /etc/inittab.
Правильная настройка конфигурационных файлов также играет важную роль
в обеспечении пропускной способности сети и безопасности системы. В системе
Unix конфигурация супердемона Интернета inetd хранится в файле /etc/inetd.conf,
конфигурация клиента DNS — в файле /etc/resolv.conf, информация о доступных
сетях — в файле /etc/networks, информация о хостах — в файле /etc/hosts, а
информация о сетевых службах — в файле /etc/services.
От настройки сетевых служб TCP/IP мы переходим к следующей теме —
управлению разрешением имен с использованием DNS, управлению сетью и
протоколу SNMP, а также вопросам безопасности и отладки в сетях TCP/IP.
*2Т1 Реализация DNS
Тим Паркер (Tim Parker)
Было бы крайне неудобно запоминать и вводить IP-адреса всех хостов сети,
предоставляющих тот или иной сервис. Вместо этого мы работаем с именами
хостов в системе DNS (Domain Name System). При осмысленном назначении
имена хостов легко запоминаются и удобны в использовании.
Система DNS делит пространство имен Интернета на домены, которые, в свою
очередь, могут делиться на субдомены. Домены первой группы называются
доменами верхнего уровня; они хорошо знакомы всем, кто когда-либо просматривал
web-страницы или работал в Интернете. На практике чаще всего используются
семь доменов верхнего уровня:
О агра — организации, деятельность которых связана с Интернетом;
О com — коммерческие организации;
О edu — образовательные учреждения;
О gov — правительственные учреждения;
О mil — военные организации;
О net — поставщики сетевых услуг;
О org — некоммерческие организации.
Кроме перечисленных доменов верхнего уровня также существуют домены
верхнего уровня для отдельных стран. Обычно такие домены обозначаются
сокращенным названием страны — например, .са (Канада) или .uk
(Великобритания). Внутри домена верхнего уровня создаются субдомены отдельных
организаций (Jbm.com, Nnux.org и т. д.). Имена доменов регистрируются в центре NIC
и являются уникальными для каждой сети.
Серверы имен DNS
Каждый сервер имен DS обслуживает отдельный участок сети (или весь домен,
если размеры сети невелики). Домены, в которых серверу имен предоставлены
такие полномочия, образуют зону. Один сервер может обслуживать несколько
зон, каждая из которых состоит из одного или нескольких доменов. Внутри
каждой зоны почти всегда существует вторичный (резервный) сервер имен. Два
сервера имен (первичный и вторичный) содержат одинаковые данные. Серверы
имен внутри зоны взаимодействуют при помощи протокола зонной передачи
данных.
Работа DNS основана на концепции вложенности зон. Сервер имен
взаимодействует с другими серверами и знает адрес по крайней мере одного сервера
имен. В каждой зоне имеется по крайней мере один сервер имен, ответственный
за получение адресной информации для каждого компьютера в этой зоне.
Когда пользовательскому приложению требуется преобразовать
символическое имя в сетевой адрес, оно обращается с запросом к резольверу, который
переадресует запрос серверу имен. Сервер имен просматривает свои таблицы
и возвращает сетевой адрес, соответствующий символическому имени. Если
сервер имен не располагает необходимой информацией, он передает запрос
другому серверу. Серверы имен и резольверы поддерживают таблицы и кэши с
информацией о компьютерах локальной зоны и наиболее часто запрашиваемых
данных внешних зон.
При получении от резольвера запроса на разрешение имени сервер имен
выполняет одну из нескольких операций. Операции по разрешению имен делятся
на две категории: рекурсивные и итеративные (не рекурсивные).
Рекурсивными называются операции, при которых на запрос на разрешение
имени выдается ответ с затребованной информацией или сообщением об ошибке.
Сервер, получивший запрос от резольвера, может обратиться за информацией
к другим серверам DNS. Последние находят (или не находят) затребованные
данные и возвращают запрос стороне, от которой он поступил. Итеративные
операции выдают полный ответ на запрос резольвера, ссылку на другой сервер
имен (к которому должен обратиться резольвер) или сообщение об ошибке.
При необходимости выполнить рекурсивную операцию сервер имен
связывается с другим сервером по запросу резольвера. Удаленный сервер имен
возвращает сетевой адрес или сообщение с кодом ошибки. При рекурсивных операциях
правила DNS запрещают удаленному серверу возвращать ссылки на другие
серверы имен.
Ресурсные записи
Информация, необходимая для разрешения символических имен, хранится на
сервере DNS в виде базы данных с ресурсными записями.
ПРИМЕЧАНИЕ
Ресурсные записи вводятся из текстовых файлов, называемых «зонными файлами данных».
Информация DNS, загруженная из текстовых файлов, хранится в памяти сервера DNS в виде таблиц,
обеспечивающих ускоренную выборку данных. Обычно используется некоторая разновидность
хэш-таблиц с индексной выборкой элементов.
Структура ресурсных записей уже рассматривалась выше, поэтому здесь эта
информация повторяться не будет
В адресных данных DNS (например, в адресных ресурсных записях)
используется специальный формат, называемый IN-ADDR-ARPA. Он обеспечивает
как преобразование имен хостов в адреса, так и обратное преобразование
адресов в имена хостов. Чтобы лучше понять IN-ADDR.ARPA, полезно рассмотреть
типичную ресурсную запись. Одной из простейших разновидностей ресурсных
записей являются адресные записи (тип А). Ниже приведен небольшой
фрагмент из адресного файла:
TPCI_HPWS1 IN A 143.12.2.50
TPCI_HPWS2 IN A 143.12.2.51
TPCI_HPWS3 IN A 143.12.2.100
IN A 144.23.56.2
MERLIN IN A 145.23.24.1
SMALLWOOD IN A 134.2.12.75
Каждая строка файла представляет одну ресурсную запись. В приведенном
примере используются простые записи, содержащие символическое имя хоста,
класс (IN = Интернет), признак адресной ресурсной записи (А) и адрес хоста
в Интернете, компьютеру TPCI_GATEWAY назначены два адреса, поскольку он
выполняет функции шлюза между двумя сетями. В разных сетях шлюзу
назначаются разные адреса, этим и объясняется присутствие двух ресурсных записей
в одном файле.
Подобные файлы упрощают процедуру преобразования между именами
хостов и адресами. Сервер имен просто ищет строку с символическим именем,
переданным в запросе приложения, и возвращает интернет-адрес, указанный
в конце строки. Базы данных индексируются по именам, поэтому поиск
выполняется очень быстро.
С преобразованием адреса в имя дело обстоит сложнее. Если бы файлы
ресурсных записей были невелики, небольшая задержка с поиском была бы
приемлема, однако большие зоны могут содержать тысячи и десятки тысяч записей.
Файлы индексируются по именам, поэтому поиск по адресу выполняется
медленно. Для разрешения проблемы обратного разрешения имен был разработан
механизм IN-ADDR.ARPA, индексирующий данные ресурсных записей по адресу
хоста. Из найденной ресурсной записи извлекается символическое имя.
В IN-ADDR.ARPA адреса ассоциируются с именами при помощи ресурсных
записей типа PTR. Ниже приведен пример файла, связывающий числовые адреса
с именами:
23.1.45.143.IN-ADDR.ARPA. PTR TPCI_HPWS_4.TPCI.COM
1.23.64.147.IN-ADDR.ARPA. PTR TPCI_SERVER.MERLIN.COM
3.12.6.123.IN-ADDR.ARPA. PTR BEAST.BEAST.COM
143.23.IN-ADDR.ARPA PTR MERLINGATEWAY.MERLIN.COM
Интернет-адреса в файле IN-ADDR.ARPA записываются в обратном порядке.
Как видно из примера, указывать полный адрес шлюза не обязательно, поскольку
имя домена предоставляет достаточно информации для маршрутизации.
Резольвер
Клиент DNS называется резольвером. С точки зрения пользовательского
приложения разрешение символических имен, то есть их преобразование в сетевые
адреса, выполняется достаточно просто. Приложение посылает запрос процессу,
называемому резольвером (который иногда находится на другом компьютере).
Иногда резольверу удается разрешить имя напрямую; в этом случае он
возвращает приложению ответное сообщение. Если резольвер не может определить
сетевой адрес для указанного имени, он связывается с сервером имен (который,
в свою очередь, может связаться с другим сервером).
Резольвер должен заменить существующие механизмы разрешения имен
(такие, как файл /etc/hosts). Эта замена полностью прозрачна для пользователя,
хотя администратор должен знать, какой механизм разрешения имен будет
использоваться на каждом компьютере («родная» система разрешения или DNS).
Когда резольвер получает информацию с сервера имен, он сохраняет ее в своем
кэше, чтобы избежать порождения лишнего сетевого трафика при повторном
запросе на разрешение того же символического имени (как часто бывает в
сетевых приложениях). Продолжительность хранения записей в кэше резольвера
определяется значением поля срока жизни (TTL) в ресурсных записях или
значением по умолчанию, установленным в системе.
Если серверу не удается разрешить имя, он может отправить резольверу
сообщение с адресом другого сервера имен (в случае итеративного запроса).
Резольвер адресует сообщение другому серверу в надежде разрешить имя.
Резольвер может потребовать, чтобы сервер имен самостоятельно переслал запрос, для
чего в сообщение устанавливается бит рекурсивности. Сервер имен может
принять или отклонить это требование.
При обработке запроса резольвер использует протокол UDP. Тем не менее
при пересылке больших объемов данных (например, внутризонные пересылки)
может возникнуть необходимость в более надежном протоколе TCP.
В операционных системах семейства Unix, где берет свое начало система
DNS, используются несколько разных реализаций резольвера. Особенно
ограниченными возможностями обладал резольвер, входивший в исходные
поставки BSD, — в нем не поддерживался кэш и отсутствовали возможности
итеративного поиска. Для решения этих проблем в BSD Unix 4.2 был включен сервер
BIND (Berkeley Internet Name Domain). BIND поддерживает кэширование и
итеративные запросы в трех режимах: первичного сервера, вторичного сервера и кэ-
ширующего сервера (который не обладает собственной базой данных и
ограничивается ведением кэша). Применение BIND в системах BSD позволяет возложить
задачи разрешения имен на другой процесс, который может находиться на
другом компьютере.
ПРИМЕЧАНИЕ
Текущая разработка и развитие BIND находятся под управлением консорциума ISC (www.isc.org).
Реализации BIND существуют в Unix и в операционных системах семейства MS Windows.
Настройка сервера DNS в Unix и Linux
Настройка сервера DNS требует модификации и создания ряда файлов и баз
данных. Процесс занимает довольно много времени, но к счастью, он
выполняется всего один раз для каждого сервера. В большинстве конфигураций DNS
используются следующие файлы:
О named.hosts — официальная информация о домене и преобразование имен
хостов в IP-адреса.
О named.rev — преобразование IP-адресов в имена хостов через IN-ADDR.ARPA.
О named.local — разрешение для драйвера обратной связи.
О named.са — список корневых серверов домена.
О named.boot (BIND 4) и named.conf (BIND 8 и выше) — информация о
местонахождении файлов и баз данных.
Имена этих файлов (кроме named.boot или named.conf) не являются
обязательными; вы можете выбрать их по своему вкусу. Самая важная информация
хранится в файле named.boot (BIND 4) или named.conf (BIND 8 и выше); этот
файл читается при загрузке системы и содержит информацию об остальных
файлах, в том числе о новых именах переименованных файлов. Каждый файл
в приведенном списке представляет собой базу данных с ресурсными записями.
Ввод ресурсных записей
В типичной конфигурации сервера используются стандартные имена и структуры
сетей. DNS позволяет определять очень сложные конфигурации, но для
знакомства с файлами и типами ресурсных записей лучше воспользоваться простым
примером.
Ресурсная запись SOA находится в файле named.hosts. Символы,
следующие после точки с запятой, используются для оформления комментариев. Для
большей наглядности каждое поле ресурсной записи выводится в отдельной
строке, хотя это и не обязательно. Следующая ресурсная запись означает, что
в домене tpci.com хост server.tpci.com выполняет функции первичного сервера
имен, а с администратором, отвечающим за работу домена, можно связаться по
адресу root@merlin.tpci.com. Смысл остальных полей понятен из комментариев.
tpci.com. IN SOA server.tpci.com
root.merlin.tpci.com. (
2 ; Порядковый номер
7200 ; Период обновления B часа)
3600 ; Период повтора A час)
151200 ; Период актуальности A неделя)
86400 ); Срок жизни
Обратите внимание: все поля, начиная с порядкового номера и завершая
сроком жизни, заключены в круглые скобки. Скобки являются частью синтаксиса
команды и определяет порядок параметров.
Кроме ресурсной записи SOA файл named.hosts содержит адресные записи
(тип А) с информацией об отображении имен хостов в IP-адреса. Следующий
фрагмент поясняет формат этих записей:
artemis IN A 143.23.25.7
merlin IN A 143.23.25.9
pepper IN A 143.23.25.72
Имена хостов обычно не задаются в формате FQDN, поскольку сервер может
вычислить полное имя. Если в файле указывается полностью определенное
доменное имя, за ним должен следовать символ «.». Если заменить имена хостов
в приведенном выше фрагменте полностью определенными доменными именами,
фрагмент принимает следующий вид:
artemis.tpci.com. IN A 143.23.25.7
merlin.tpci.com. IN A 143.23.25.9
pepper.tpci.com. IN A 143.23.25.72
Ресурсная запись типа PTR связывает IP-адреса с именами с использованием
механизма IN-ADDR.ARPA. Простой пример ресурсной записи PTR объясняет,
как работает механизм обратного разрешения. Следующая запись указывает на
то, что компьютеру merlin присвоен IP-адрес 147.120.0.7:
7.0.120.147.in-addr.arpa IN PTR merlin.tpci.com
Ресурсная запись типа NS определяет сервер имен, обслуживающий
заданную зону. Записи типа NS используются в больших сетях, состоящих из
нескольких подсетей, каждая из которых обладает собственным сервером имен. Запись
типа NS выглядит следующим образом:
tpci.com. IN A merlin.tpci.com
Она означает, что домен tpci.com обслуживается сервером DNS merlin.tpci.com.
Остальные файлы DNS
Как вы знаете, в DNS ресурсные записи, содержащие информацию о зонах,
хранятся в нескольких файлах. Первый из этих файлов, named.hosts, содержит
ресурсные записи типов SO A, NS и А. Все записи файла named.hosts должны начинаться
с первой позиции каждой строки. Ниже приведен примерный файл named.hosts
с комментариями:
; Файл named.hosts
; Ресурсная запись SOA (Start of Authority)
tpci.com. IN SOA merlin.tpci.com.
root.merlin.tpci.com. (
2 ; Порядковый номер
7200 ; Период обновления B часа)
3600 ; Период повтора A час)
151200 ; Период актуальности A неделя)
86400 ); Срок жизни
; Ресурсные записи NS (Name Server)
tpci.com. IN NS merlin.tpci.com.
subnetl.tpci.com IN NS goofy.subnetl.tpci.com.
; Адресные ресурсные записи
artemis IN A 143.23.25.7
merlin IN A 143.23.25.9
Windsor IN A 143.23.25.12
reverie IN A 143.23.25.23
bigcat IN A 143.23.25.43
pepper IN A 143.23.25.72
В первой части определяется запись типа SOA с параметрами срока жизни,
периода актуальности, периодичности обновления и т. д. В ней также указано, что
домен tpci.com обслуживается сервером имен merlin.tpci.com. Во второй части файла
записи типа NS определяют для домена tpci.com сервер имен merlin.tpci.com
(как и в записи SOA), а субдомену tpci с именем subnetl назначается сервер
goofy.subnetl.tpci.com. Третья часть состоит из адресных записей, определяющих
соответствие между именами и IP-адресами. Каждый компьютер в сети
представлен одной из записей этого раздела.
Файл named.rev обеспечивает обратное преобразование IP-адресов в имена
хостов и состоит из записей типа PTR. По формату записей он близок к файлу
named.hosts, если не считать перестановки имен и IP-адресов, а также
преобразования IP-адресов в стиле IN-ADDR.ARPA. Файл named.rev, соответствующий
приведенному выше файлу named.hosts, выглядит так:
; Файл named.rev
; Ресурсная запись SOA (Start of Authority)
23.143.in-addr.arpa. IN SOA merlin.tpci.com.
root.merlin.tpci.com. (
2 ; Порядковый номер
7200 ; Период обновления B часа)
3600 ; Период повтора A час)
151200 ; Период актуальности A неделя)
86400 ); Срок жизни
; Ресурсные записи NS (Name Server)
23.143.in-addr.arpa. IN NS merlin.tpci.com.
100.23.143.ih-addr.arpa. IN NS goofy.subnetl.tpci.com.
; Адресные ресурсные записи
9.25.23.143.in-addr.arpa. IN PTR merlin.tpci.com.
12.25.23.143.in-addr.arpa. IN PTRwindsor.tpci.com.
23.25.23.143.in-addr.arpa. IN PTR reverie.tpci.com.
43.25.23.143.in-addr.arpa. IN PTR bigcat.tpci.com.
72.25.23.143.in-addr.arpa. IN PTR pepper.tpci.com.
Для каждой зоны или субдомена сети создается отдельный файл named.rev.
Файлы должны различаться по именам или находиться в разных каталогах.
Если вы используете только одну зону, достаточно одного файла named.rev.
Файл named.local содержит сведения об интерфейсе обратной связи (которому
обычно присваивается IP-адрес 127.0.0.1, хотя подойдет любой адрес в форме
127.х.х.х). Файл должен содержать данные обратного разрешения в формате
IN-ADDR.ARPA для драйвера обратной связи, а также информацию о сервере
имен (поскольку файл named.rev не распространяется на сеть 127). Файл named,
local выглядит примерно так:
; Файл named.local
; Ресурсная запись SOA (Start of Authority)
0.0.127.in-addr.arpa. IN
SOA merlin.tpci.com.
root.merlin.tpci.com. (
2 ; Порядковый номер
7200 ; Период обновления B часа)
3600 ; Период повтора A час)
151200 ; Период актуальности A неделя)
86400 ); Срок жизни
; Ресурсная запись NS (Name Server)
0.0.127.in-addr.arpa. IN NS merlin.tpci.com.
; Адресная ресурсная запись
1.0.0.127.in-addr.arpa. IN localhost.
IP-адрес 127.0.0.1 ассоциируется с именем localhost.
Файл named.ca определяет имена корневых серверов домена. Хосты,
указанные в файле named.ca, должны быть стабильными и не подверженными частым
изменениям. Типичный файл named.ca выглядит примерно так:
; named.ca
; Корневые серверы домена
99999999 IN NS ns.nic.ddn.mil.
99999999 IN NS ns.nasa.gov.
99999999 IN NS ns.internic.net
; Адреса серверов
ns.nic.ddn.mil. 99999999 IN A 192.112.36.3
ns.nasa.gov. 99999999 IN A 192.52.195.10
ns.internic.net. 99999999 IN A 198.41.0.4
В этом файле определены всего три сервера DNS. В некоторых файлах named.ca
определяется по десять и более серверов, в зависимости от их близости к вашей
системе.
Требования к работе корневых серверов описаны в RFC 2870. Ниже приведен
полный список тринадцати корневых серверов домена ROOT-SERVERS.NET
с обозначениями от A.ROOT-SERVERS.NET до M.ROOT-SERVERS.NET. В
таблице также приводятся данные об их физическом местонахождении.
Восточное побережье США
A.ROOT-SERVERS.NET NSF-NSI. Херндон, штат Вирджиния
С. ROOT-SERVERS.NET PSI. Херндон, штат Вирджиния
D.ROOT-SERVERS.NET UMD, Колледж-Парк, штат Мэриленд
G.ROOT-SERVERS.NET DISA, Боинг, штат Вирджиния
Н.ROOT-SERVERS.NET Министерство обороны США. Абердин, штат Мэриленд
J.ROOT-SERVERS.NET NSF-NSI, Херндон, штат Вирджиния
Западное побережье США
E.ROOT-SERVERS.NET NASA, Моффет-Филд, штат Калифорния
F-ROOT-SERVERS.NET ISC, Вудсайд, штат Калифорния
B.ROOT-SERVERS.NET DISA-USC, Марина дель Рей, штат Калифорния
LROOT-SERVERS.NET DISA-USC, Марина дель Рей, штат Калифорния
Европа
K.ROOT-SERVERS.NET LINX/RIPE, Лондон, Великобритания
I.ROOT-SERVERS.NET NORDU, Стокгольм, Швеция
Азия
M.ROOT-SERVERS.NET WIDE, Кейо, Япония
Текущая версия списка корневых серверов доступна по адресу ftp://ftp.rs.internic.
net.domain/named.root. Ниже приводится файл зонных данных для корневых
серверов.
; Ранее NS.INTERNIC.NET
3600000 IN NS A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. 3600000 А 198.41.0.4
; Ранее NS1.ISI.EDU
! 3600000 NS B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107
; Ранее CPSI.NET
3600000 NS С.ROOT-SERVERS.NET.
CROOT-SERVERS.NET. 3600000 A 192.33.4.12
; Ранее TERP.UMD.EDU
3600000 NS D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90
; Ранее NS.NASA.GOV
! 3600000 NS E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10
; Ранее NS.ISC.ORG
3600000 NS F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241
; Ранее NS.NICDDN.MIL
3600000 NS G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4
; Ранее AOS.ARL.ARMY.MIL
3600000 NS H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53
; Ранее NIC.NORDU.NET
3600000 NS I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17
; Управляется VeriSign, Inc.
3600000 NS J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET. 3600000 A 192.58.128.30
; Находится в LINX, управляется RIPE NCC
3600000 NS K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129
; Управляется IANA
3600000 NS L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12
; Находится в Японии, управляется WIDE
3600000 NS M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33
Содержимое этого файла можно вставить в named.ca. Каждый сервер
представлен в файле named.ca двумя записями: первая задает корневой домен
(точка) и имя сервера имен, а вторая — IP-адрес сервера имен. Срок жизни задан
очень большим, поскольку эти серверы всегда должны быть доступны.
Файл named.boot (или named.conf) инициирует загрузку демонов DNS, а также
содержит информацию о первичном и вторичном серверах имен в сети. Ниже
приведен примерный файл named.boot.
; named.boot
directory /usr/lib/named
primary tpci.com named.hosts
primary 25.143.in-addr.arpa named.rev
primary 0.0.127.in-addr.arpa named.local
cache named.ca
Первая строка файла named.boot содержит ключевое слово directory, за
которым указывается имя каталога с конфигурационными файлами DNS.
Последующие строки с ключевым словом primary передают DNS информацию о файлах,
содержащих конфигурационные данные. Например, первая строка указывает, что
информация о первичном сервере имен для tcpi.com хранится в файле named.hosts.
Информация IN-ADDR.ARPA для подсети 13.25 хранится в файле named.rev.
Данные локального хоста хранятся в файле named.local, а данные серверов и кэша
имен — в файле named.ca.
Конфигурация вторичного сервера задается практически так же. Отличается
только файл named.boot, в который включается ссылка на первичный сервер.
Запуск демонов DNS
В завершение настройки DNS необходимо проследить за тем, чтобы демон DNS
named загружался в процессе загрузки системы. Обычно эта задача решается при
помощи стартовых сценариев гс. В большинстве версий Unix и Linux процедуры
запуска DNS автоматически включаются в стартовые сценарии; обычно при
этом проверяется существование файла named.boot. Если файл существует,
запускается демон DNS named. Код проверки выглядит примерно так:
# Если файл named.boot существует, запустить сервер DNS
if [ -f /etc/inet/named.boot -a -x /usr/sbin/in.named ]
then
/usr/sbin/in.named
fi
В вашем сценарии гс могут использоваться другие пути и параметры, но
принцип остается тем же: команда проверяет, существует ли файл named.boot,
и если существует — запускает named.
Настройка клиента
Настройка данных первичного сервера DNS на компьютере с системой Unix
или Linux происходит быстро. Сначала адрес первичного сервера включается
в файл /etc/resolv.conf. Например, файл resolv.conf может выглядеть так:
domain tcpi.com
nameserver 143.25.0.1
nameserver 143.25.0.2
Первая строка задает имя домена, за которым следуют IP-адреса серверов
имен. Директиву domain можно заменить более гибкой директивой search,
которая, как было показано выше, позволяет задать несколько доменных суффиксов.
В приведенном примере файл определяет два сервера имен в подсети 143.25.
Windows и DNS
Чтобы системы Windows NT, Windows 95 и Windows 98 использовали
серверы DNS, достаточно ввести IP-адреса этих серверов на вкладке DNS окна Сеть
(Network). В окне можно ввести данные нескольких серверов DNS, поиск на
которых производится в порядке их перечисления. Серверы DNS находятся
внутри вашей сети или предоставляются поставщиком услуг Интернета
(разумеется, в этом случае сервер DNS не будет обладать информацией о внутренней
сети вашей организации).
Также предусмотрена возможность настройки Windows на выполнение
функций сервера DNS при помощи дополнительных приложений, но в сетях Windows
DNS настраивается сложнее, чем WINS и DHCP. В разнородных сетях,
содержащих компьютеры с системами Windows и Unix, гораздо проще установить
сервер DNS на компьютере Unix — как по соображениям производительности,
так и из-за более подходящей архитектуры этой операционной системы.
ПРИМЕЧАНИЕ
В Windows 2000 DNS работает в сочетании с Active Directory. В Windows 2000 используется
динамическая система DNS, но нестандартный способ обновления записей вызывает многочисленные
проблемы при попытке интегрировать Windows 2000 с серверами Unix.
Итоги
Настройка DNS на сервере требует немалой квалификации, но с клиентами дело
обстоит гораздо проще. С учетом преимуществ DNS затраты времени и усилий
на установки и настройку системы быстро окупаются. Компьютеры с системами
Unix и Linux идеально подходят на роль серверов DNS, а компьютеры на базе
Windows неплохо справляются с функциями клиентов.
^ О Управление сетью
О О tcp/ip
Бернард МакКарго (Bernard McCargo)
В те времена, когда весь сетевой комплекс поставлялся одним производителем,
этот производитель отвечал за его поддержку. AT&T и местная телефонная
компания отвечали за работу телекоммуникационных линий; фирма IBM
обеспечивала работу большого компьютера, используемого при финансовых
расчетах, а фирма DEC занималась мини-компьютерами в конструкторском отделе.
Администратору сети оставалось лишь определить, где именно произошел сбой,
и обратиться к фирме-производителю за ее решением.
Управление современными объединенными сетями сильно затрудняется двумя
обстоятел ьствам и:
О На смену централизованной обработке данных пришли распределенные
системы.
О Экономический бум в области коммуникационных технологий радикально
увеличил количество фирм, работающих в этом секторе рынка.
В результате фирмы-производители стали все чаще перекладывать
ответственность друг на друга.
Организации, занимающиеся выработкой стандартов, и фирмы-производители
предложили свои решения этих проблем. В широко распространенном
стандарте ISO 7498-4 определены пять функциональных областей управления:
О Управление сбоями — обнаружение, диагностика и исправление сетевых сбоев.
О Управление расходами — распределение расходов среди ответственных сторон.
О Управление конфигурацией — поддержание текущего состояния всех
элементов сети.
О Управление производительностью — сбор и хранение статистической
информации, описывающей производительность системы.
О Управление безопасностью — защита сетевых ресурсов и контроль доступа
к сети.
Некоторые разработчики стандартов создали протоколы для поддержки этих
стандартов. Тем не менее самым популярным протоколом управления сетью
остается протокол SNMP (Simple Network Management Protocol), разработанный
сообществом Интернета. Его популярность во многом объясняется простотой:
в исходной версии SNMP было определено всего пять команд/ответов. Таким
образом, протокол по возможности упрощал управление сетью за счет
минимизации объема данных, передаваемых между элементами сети и консолью
управления. В последующих версиях появились дополнительные команды, которые
упрощали сбор информации управляющими станциями SNMP от других
управляющих станций.
Наконец, фирмы, работающие в области телекоммуникаций, разработали
системы управления сетью, в которых стандартные протоколы типа SNMP
внедрялись в закрытые архитектуры. Среди основных представителей этого направления
можно назвать AT&T (Unified Network Management Architecture — UNMA); DEC,
часть фирмы Compaq, которая собирается объединиться с Hewlett-Packard
(Management Control Center — DECmcc); Hewlett-Packard (OpenView Network
Management); Bay Networks (Optivity); Cisco Systems (Cisco Works) и IBM
(NetView). С ростом сложности объединенных сетей следует ожидать
дальнейшего развития в этой области.
В этой главе рассматривается процесс разработки плана управления сетью
и описаны инструменты, используемые при управлении; при этом SNMP
подробно не рассматривается. Формальное описание SNMP и его протоколов
приводится в главе 39.
Разработка плана сетевого мониторинга
В результате воздействия многочисленных факторов — перехода от
централизованных вычислительных архитектур к распределенным, появления
широкополосных средств передачи данных, использования специализированных рабочих
станций, различных протоколов, новых механизмов взаимодействия локальных
и глобальных сетей и разнородных систем управления сетью — создаются весьма
интересные смеси. В объединенной сети могут быть задействованы различные
типы кабелей, включая витые пары, коаксиальные и оптоволоконные каналы.
Оборудование, используемое в локальной сети, может включать несовместимые
механизмы доступа — например, CSMA/CD (IEEE 802.3) и передачу маркера
(IEEE 802.5). Промежуточные устройства (такие, как мосты) могут
использовать разные алгоритмы — например, алгоритм связующего дерева (IEEE 802.3)
и маршрутизацию от источника (IEEE 802.5). Пакет для работы с электронной
почтой от одной сетевой операционной системы может отказаться
взаимодействовать с пакетом, выпущенным конкурентом. И как же проанализировать эту
межсетевую мешанину и убедиться в том, что сеть нормально работает?
Для начала следует определить, что же понимается под «нормальной
работой» сети. На этот вопрос можно дать разные ответы. Вероятно, с точки зрения
конечного пользователя это означает время отклика меньше секунды. Для
администратора это почти наверняка означает сеть, работа которой не требует
постоянного вмешательства. С точки зрения сетевого инженера критерий оценки
определяется пропускной способностью, скоростью пересылки, задержкой и т. д.
Начальной точкой при проектировании системы сбора данных о сети должны
стать ожидания пользователей и организационные ограничения. Задача проек-
тировщика заключается в том, чтобы выработать набор компромиссов и
построить систему, удовлетворяющую разумным ожиданиям. Несомненно, выражение
«прочность цепи определяется прочностью ее слабейшего звена» в полной мере
применимо к сетям. Оптимальная производительность обеспечивается
балансировкой всех компонентов.
К числу факторов, непосредственно влияющих на производительность сети
и заслуживающих первоочередного внимания проектировщика, относятся
пропускная способность сети, возможности оборудования и приложений. Эти
факторы играют ключевую роль в реализации «точки отсчета» — зафиксированного
состояния нормально работающей сети, которое может использоваться для
сравнительного анализа при возникновении проблем.
Анализ и диагностика сетевых проблем
С ростом степени распределенности, повышения пропускной способности и
количества поддерживаемых протоколов в объединенных сетях, сетевые
администраторы должны быть готовы к изменениям в работе отделов поддержки сети и
приобретению новых аналитических средств
Специфика распределенных сетей заставляет вносить изменения в структуру
централизованного управления информационными системами. Отдельным
филиалам нужны свои специалисты по управлению сетью, которые занимаются
проблемами на уровне пользователей, тогда как центральная организация может
специализироваться на анализе межсетевых проблем.
Появление средств связи с высокой пропускной способностью сократило
экономический срок жизни существующих средств сетевого анализа и управления.
Например, прежде в глобальных сетях использовались преимущественно
аналоговые каналы; если сетевой администратор считал, что в сети происходит что-то
неладное, он проверял канал на соответствие параметрам аналоговой передачи —
уровню импульсных помех, искажению огибающей и дрожанию фазы. Но
современные цифровые каналы с высокой скоростью передачи требуют совершенно
иной методики анализа совершенно иных параметров передачи. Например,
каналы Т1/ТЗ должны проверяться на правильность формирования кадра и
генерирования сигналов. А если в качестве передающей среды вместо витой пары или
коаксиального кабеля используется оптоволоконный канал, анализатор должен
иметь оптический интерфейс вместо электрического.
Ниже приведены некоторые общие рекомендации, которые помогут вам найти
правильный подход к проблеме.
О Сформулируйте суть проблемы. Чтобы исправить проблему, сначала ее нужно
четко описать.
О Разработайте решение. Тщательно и методично разработайте решение
проблемы.
О Документируйте свою работу. Возможно, описания прошлых ошибок
пригодятся вам в будущем.
О Сообщите о результатах. Ваш опыт может пригодиться другим.
Средства управления сетью
Средства управления сетью весьма сложны, а возрастание количества
отслеживаемых протоколов приводит к их дальнейшему усложнению. Для
многопротокольных объединенных сетей нужны более совершенные анализаторы. Анализаторы,
которые раньше обрабатывали одно семейство протоколов (например, SNA),
теперь должны обрабатывать несколько протоколов — например, SNA, DECnet
и TCP/IP. Чтобы лучше разобраться в происходящем, необходимо немного
разбираться в принципах работы анализаторов и направлениях их развития.
Анализаторы протоколов
Анализатор подключается к объединенной сети в пассивном режиме и
перехватывает информацию, передаваемую между разными устройствами. Собираемая
информация делится на две категории:
О данные пользовательских процессов (например, сообщения электронной почты);
О управляющие данные, обеспечивающие пересылку данных по стандартам
протоколов.
По этой причине управляющие данные часто называются управляющей
информацией протокола (PCI, Protocol Control Information); они уникальны для
каждого протокола. Таким образом, если некоторая функция объединенной сети
ассоциируется с семью протоколами, для них потребуются семь уникальных
элементов PCI. Эти элементы, называемые заголовками, передаются вместе с
данными в кадрах канального уровня. Передаваемые данные создаются на
прикладном уровне и поэтому называются прикладными данными (AD, Application Data).
К данным присоединяется прикладной заголовок (АН, Application Header), и
полученная комбинация (AH+AD) передается следующему (представительскому)
уровню. Прикладной уровень интерпретирует эту информацию (AH+AD) как
данные и присоединяет к ним собственный представительский заголовок (РН,
Presentation Header). Результат описывается формулой PH+AH+AD. Процесс
продолжается до тех пор, пока не будет сконструирован весь кадр, включающий
управляющие заголовки с каждого уровня.
Задача анализатора заключается в том, чтобы извлечь из пакета
управляющие данные и отобразить их в формате, удобном для администратора. Тем не
менее, как объясняется выше, процесс извлечения управляющей информации
может быть весьма сложным.
Возможности анализаторов протоколов не стоят на месте. Анализаторы
первого поколения просто декодировали поток данных и выводили шестнадцате-
ричный дамп на экране монитора; они не обладали сколько-нибудь удобным
пользовательским интерфейсом. В анализаторах второго поколения были
добавлены средства анализа вплоть до третьего уровня OSI. Они декодировали
бит-ориентированные протоколы и могли программироваться пользователями
на выполнение различных тестов в зависимости от специфических требований.
Например, анализ можно ограничить трафиком от одной конкретной рабочей
станции или конкретным протоколом (скажем, IP). Анализаторы третьего
поколения позволяют декодировать и обрабатывать протоколы до 7 уровня OSI
включительно и обладают удобным пользовательским интерфейсом,
упрощающим программирование и построение отчетов.
Анализаторы четвертого поколения лучше подходят для работы с
объединенными сетями, имеющими сложную топологию и состоящими из локальных,
региональных и глобальных сетей. Некоторые анализаторы четвертого уровня обладают
искусственным интеллектом, выявляющим проблемы и предлагающим их
возможные решения. В региональных и глобальных сетях задействуются уровни OSI 1-3,
хотя также может присутствовать информация более высокого уровня
(например, передача сигналов или информации, используемой при управлении сетью).
В локальных сетях используются уровни OSI 1-7 (рис. 38.1). Анализатор для
локальных и глобальных сетей должен обеспечивать декодирование управляющей
информации на физическом, канальном и сетевом уровнях. Он проверяет, как
пакеты проходят в коммуникационной подсети (уровни 1-3), но не
расшифровывает содержащуюся в них информацию, поскольку эта информация представляет
интерес лишь для пользователей рабочих станций локальной сети. Сетевые
операционные системы, установленные на рабочих станциях (например, Novell NetWare
или Windows NT/2000), поддерживают протоколы до 7 уровня включительно.
Сеть А Сглобальная S Сеть В
У_^ сеть р
НИ Й НИ ™ / t \ КШЫЙ\ Ш\
х / / I \ ^йЯвЁяКк 111 ННИ Шт\
/ Р^ЙЙг BSS IH3B I -ЗцйЕ' I j
I -ыщр\\ Ч^цдаг* j|gggt a
• raj
Анализ протоколов Анализ протоколов Анализ протоколов
в локальной сети, в глобальной сети, в локальной сети,
уровни OSI 17 уровни OSI 13, плюс уровни OS! 17
данные локальной сети
Рис. 38.1. Анализ локальных и глобальных сетей
Чтобы правильно выявить проблему между рабочей станцией в сети А и
сервером в сети В, соединенных по глобальной сети, анализатор локальной сети
должен декодировать данные высоких уровней модели OSI.
Требования к тестированию в локальных и глобальных сетях также
различаются из-за различий в типах характерных сбоев. Сбои в локальных сетях
обычно повторяются многократно, тогда как сбои в глобальных сетях могут
быть однократными. Последнее различие заключается в способе физического
подключения анализатора к локальной, региональной или глобальной сети.
Анализаторы региональных и глобальных сетей обычно используются в
специальных лабораториях или центральных представительствах в условиях
ограниченного пространства (вследствие чего они часто проектируются с возможностью
как вертикального, так и горизонтального размещения). Анализаторы локальных
сетей обычно работают на обычных настольных компьютерах.
Экспертные системы
Чтобы сетевые анализаторы могли поддерживать хорошую производительность
в сложных объединенных сетях, они должны становиться все более разумными.
Все анализаторы содержат достаточно обширную информацию о
характеристиках интерфейсов, протоколах и взаимодействии между ними и т. д. На основе
этих сведений отображаются экраны со справочной информацией, запускаются
серии тестов или служебная информация одного протокола анализируется в
сочетании с информацией, полученной от другого протокола. Но самые
интеллектуальные анализаторы (в частности, анализаторы четвертого поколения)
используют в своей работе экспертные системы.
Экспертная система использует набор правил в сочетании со своими знаниями
о сети и принципах ее работы для диагностики и решения сетевых проблем.
Знания экспертных систем берутся из различных источников, в том числе из
общетеоретической базы данных (например, стандартов IEEE, на основе
которых должна работать сеть), из базы данных по конкретной сети (топологическая
информация о сетевых узлах), а также из прошлых результатов и опыта
пользователя. На основании этой информации строится гипотеза о причинах
возникшей проблемы и план ее решения. Например, аномально высокий процент
коллизий в сети Ethernet приведет к тестированию магистрального кабеля и
терминаторов, и на основе проведенных тестов будет принято решение.
LAN Analyzers фирмы Hewlett-Packard удовлетворяет критериям экспертной
системы. У Network General имеется экспертная система Expert Sniffer, которая
автоматически выявляет проблемы в реальном времени и вырабатывает
рекомендации на основе применения нескольких экспертных технологий.
Разработки в области экспертных систем проводят и другие производители локальных
сетей — например, Bytex и Wandel & Goltermann.
Фирма Hewlett-Packard разработала экспертную систему Fault Finder.
Пользователь анализатора сообщает Fault Finder симптом сбоя, а анализатор
разрабатывает гипотезу на основании оценки текущей ситуации в сети и/или
результатов тестов, проведенных анализатором. Процесс продолжается до тех пор,
пока анализатор не придет к определенному заключению. Если достичь оконча-
тельного решения не удается, анализатор выдает пользователю список
потенциальных проблем и симптомов для продолжения диагностики. Автоматизация
цикла формирования гипотез/тестирования в экспертных системах позволяет
свести к минимуму время простоя сети.
Из-за сложной природы протоколов глобальных сетей (например, ISDN и
Signaling System 7-SS7) анализаторы глобальных сетей третьего поколения
обладают чрезвычайно мощными аналитическими средствами. Например, анализаторы
третьего поколения проводят статистический анализ входного потока данных.
Сводка накопленной статистики на уровне кадров (уровень 2 модели OSI) или
пакетов (уровень 3 модели OSI) дает некоторое представление о состоянии
канала; низкий процент кадров с ошибками контрольной суммы или отвергнутых
пакетов означает, что канал работает хорошо. При возникновении ошибок
анализаторы протоколов глобальных сетей помогут найти причину посредством
избирательного анализа информации, передаваемой в скоростном канале; этот
процесс называется фильтрацией. Например, если проблема возникает только
на одной рабочей станции, аналитик устанавливает фильтр для отслеживания
данных, относящихся к этой станции.
Анализаторы на базе PC
Микропроцессоры Intel Pentium наделили обычные персональные компьютеры
мощью мини-компьютеров 1980-х годов. Эти устройства, обладающие высокой
вычислительной мощностью при относительной компактности, стали идеальной
платформой для построения тестового оборудования. Портативные компьютеры
позволяют легко доставить анализатор на удаленную площадку. Благодаря
стандартизированным шинам (ISA,EISA, Micro Channel или PCI) вы можете легко
добавить другие устройства (например, модем). В результате многие
производители анализаторов выбрали PC в качестве своей основной аппаратной платформы.
Производители анализаторов локальных сетей традиционно поддерживали
системы на базе PC из-за их сходства с сетевыми рабочими станциями.
Анализаторы глобальных сетей сейчас тоже базируются на PC.
При рассмотрении анализаторов, построенных на платформе PC, необходимо
задать себе два вопроса: как производитель определяет понятие «на базе PC»
и как реализуются эти возможности? Существуют принципиальные различия
между использованием PC в качестве платформы для анализатора и включением
возможностей PC в сам анализатор. Целый ряд производителей, включая CXR/
Digilog и ProTools, базируют свои изделия на портативных, переносных и
настольных персональных компьютерах. У Cabletron Systems имеется анализатор на базе
Apple Macintosh. Такие устройства могут использоваться для других целей
(например, подготовки документов или работы с электронными таблицами), когда
они не используются для анализа сетевого трафика. Другие производители
(например, Wandel & Goltermann) используют многопроцессорные системы: один
процессор для приложений PC, а другой — для анализа сети. Третий вариант —
программное обеспечение GN Navtel — позволяет любому PC проанализировать
данные, сохраненные анализатором. Другие продукты позволяют хранить
данные на стандартных дисковых устройствах DOS и выводить их на монитор или
принтер. Таким образом, вы должны узнать, что имеет в виду производитель,
снабжая свое изделие пометкой «на базе PC».
Второй вопрос связан с реализацией: как превратить PC в анализатор? В
данном случае у вас также имеются три варианта. Например, LAN Analyzer от FTP
Software — автономный программный продукт, который можно установить на
любом компьютере, оснащенном сетевой платой. FTP Software предлагает версии
своей программы для разных интерфейсных плат — таких, как 3Com Etherlink,
Proteon ProNET и т. д. Второй вариант — приобретение аппаратно-программного
комплекса и установка его в PC. Такой подход используется в анализаторах
глобальных сетей от Frederick Engineering и Progressive Computing. Третья
альтернатива — полностью укомплектованная система — выпускается многими
фирмами, включая CXR/Digilog, Inc., Hewlett-Packard, Network General Corporation
и TTC/LP COM. Такие решения обычно обеспечиваются более качественной
поддержкой, поскольку за всю систему отвечает только один производитель.
Кроме того, в Интернете можно найти бесплатные анализаторы
протоколов и их исходные тексты. Среди качественных анализаторов,
адаптированных для платформ Unix и Windows, стоит упомянуть Ethereal. За
дополнительной информацией о бесплатных анализаторах протоколов обращайтесь на сайт
www.ethereal.com.
Поддержка протоколов управления сетью
О необходимости стандартов управления сетью, облегчающих централизованное
управление сложными объединенными сетями, были написаны целые тома. Для
выполнения этих функций рассматривались два основных кандидата, SNMP
и CMIP. Протокол SNMP широко используется в сообществе TCP/IP, а
протокол CMIP (Common Management Information Protocol) является протоколом
управления сетью OSI. Протокол SNMP занимает доминирующее положение.
Хотя CMIP все еще поддерживается (Tekelec поддерживает CMIP для
глобальных сетей, a AR/Telenex поддерживает IBM NetView), в наши дни реализации
СМР встречаются крайне редко.
Возможность декодирования протоколов управления сетью, которой обладает
SNMP, служит нескольким целям. Разработчики агентов или диспетчеров SNMP
могут тестировать свой код, сохраняя обмен данными между агентом и
диспетчером. Анализатор также может определять задержки с откликом между
сообщением агента и соответствующим ответом диспетчера. Поскольку управляющие
данные занимают ресурсы сети, анализатор также может сравнивать процент
загрузки сети управляющей информацией с пользовательским трафиком.
Протокол SNMP декодируется продуктами Micro Technology, Novell для
локальных сетей, Kamputech, Wandel & Goltermann и Network General для
локальных и глобальных сетей.
Фирма Novell первоначально внедрила поддержку SNMP в сетевой зонд
LANtern. Программа LANtern подключалась к сети Ethernet/IEEE 802.3 и
использовала SNMP для обмена данными с SNMP-совместимой консолью сетевого
управления. Прохождение данных между зондом и консолью обеспечивалось
самой сетью, а зонд выполнял функции агента SNMP. Поскольку программа
LANtern была сетевым монитором Ethernet, а не анализатором протоколов, она
собирала всевозможную сетевую статистику — данные о коллизиях, ошибки
контрольных сумм и кадров, но не декодировала кадры. Опыт работы над LANtern
пригодился Novell в разработках в области удаленного мониторинга (RMON).
Другой разработчик анализаторов локальных сетей, FTP Software, предлагает
интересный продукт SNMP Tools, созданный на базе популярного продукта FTP
PC/TCP. SNMP Tools работает на любом компьютере с системой DOS и
поддерживается многими сетевыми платами. Кроме того, в него включен
инструментарий для построения нестандартных приложений SNMP.
Интеграция со средствами сетевого
моделирования
Когда сети обслуживались единым хостом и ограничивались одним
географическим местонахождением, было гораздо проще вычислить время задержки и
отклика. Распределение сетевых ресурсов заметно усложнило прогнозирование
сетевых метрик. Анализ топологии объединенной сети может помочь в
прогнозировании такого рода.
Анализаторы всегда замечательно справлялись со сбором данных. Но что
делать с накопленной информацией? Первые анализаторы выдавали на печать
листинг сохраненных данных в формате ASCII. Более совершенные
анализаторы могли преобразовать данные в электронную таблицу или базу данных для
последующего анализа. Например, электронная таблица могла отсортировать
данные о трафике в локальной сети по адресу отправителя и выставить счет
соответствующей организации за использование сети.
В большинстве современных продуктов на рынке локальных сетей
анализатор локальной сети интегрируется со средствами моделирования типа BONeS
(ComDisco Systems, Inc., Фостер-Сити, Калифорния) или LANSIM (InternetiX,
Inc., Верхнее Мальборо, Мэриленд). Фирма Quintessential Solutions, Inc. (Сан-
Диего, Калифорния), разработчик средств имитации и моделирования
глобальных сетей, предлагает продукты, способные получать данные от анализаторов
глобальных сетей. Типичным применением таких продуктов является
моделирование времени отклика в протестированном сегменте. На основании
экспериментальных данных, полученных от анализатора, программы QSI прогнозируют
изменения в этих переменных в результате возрастания трафика, установки
новых приложений и т. д.
Программы моделирования применяются во многих ситуациях, в том числе
при первоначальном проектировании сети, изменении конфигурации и
нагрузочных испытаний. Для модели задаются значения многочисленных переменных
(количество которых может превышать 100, в зависимости от типа
анализируемой сети): количество и тип рабочих станций, серверов, протоколов, уровней
нагрузки и т. д. Результат моделирования существенно зависит от значений
этих переменных. Например, время отклика в сети зависит как от количества
серверов, так и от количества пользователей, логически подключенных к каждому
серверу. При уменьшении времени отклика администратору стоит подумать
о перераспределении пользователей или установке новых серверов. Вместо
выдвижения гипотез о параметрах сетевого трафика, использование фактических
данных, полученных от анализатора, позволяет получить гораздо более точное
представление характеристик сети. Такой подход упрощает интерактивное
проектирование сети, ее расширение и изменение архитектуры.
Возможность экспорта данных в упомянутые средства сетевого
моделирования поддерживается такими разработчиками, как Bytex, Network General и Spider
Systems. В будущем средства имитации/моделирования будут встроены
напрямую в анализаторы локальных сетей.
Настройка SNMP
SNMP позволяет сетевым администраторам производить удаленную отладку
и наблюдение за концентраторами, маршрутизаторами и другими устройствами.
При помощи SNMP можно получить информацию об удаленных устройствах,
не находясь поблизости от этих устройств.
Правильное понимание и использование протокола SNMP делает его весьма
полезным инструментом. Вы можете собирать различные объемы информации
по широкому спектру устройств; состав получаемой информации зависит от
типа устройства. Ниже приведены примеры сведений, которые могут быть
получены при помощи SNMP:
О IP-адрес маршрутизатора;
О количество открытых файлов;
О объем свободного места на жестком диске;
О версия программы, работающей на хосте.
В SNMP используется распределенная архитектура. Это означает, что
компоненты SNMP распределены в сети для выполнения функций по сбору
информации и обработке данных, заложенных в основу удаленного управления.
Поскольку SNMP является распределенной системой, управление может
выполняться из разных точек. Тем самым предотвращается чрезмерная нагрузка
на одну систему, а также обеспечиваются резервные возможности управления.
Реализация SNMP от Microsoft позволяет компьютеру с системой Windows
NT/2000 передать информацию о своем состоянии компьютеру, на котором
работает система управления SNMP. Впрочем, в данном случае речь идет всего лишь
о выполнении агентских функций, а не о средствах управления.
Для управления используются специальные программы, не входящие в
Windows NT/2000, в том числе:
О IBM NetView;
О Sun Net Manager;
О Hewlett-Packard OpenView.
Настройка SNMP в системе Windows
Служба SNMP обычно устанавливается для того, чтобы вы могли:
О следить за работой TCP/IP в Системном мониторе;
О следить за работой системы на базе Windows NT/2000 из внешней программы.
Следующее описание процедуры установки SNMP предполагает, что в системе
уже установлена и настроена поддержка TCP/IP, а вы обладаете
административными привилегиями для установки и использования SNMP.
Установка службы SNMP
Чтобы установить службу SNMP, выполните следующие действия:
1. Откройте диалоговое окно Сеть (Network), перейдите на вкладку Службы (Services)
и щелкните на кнопке Добавить (Add). На экране появляется диалоговое окно
Выбор сетевой службы (Select Network Service).
2. Выберите службу SNMP и щелкните на кнопке ОК.
3. Задайте местонахождение установочных файлов Microsoft Windows NT.
4. После того как файлы будут скопированы, на экране появится диалоговое окно
свойств Microsoft SNMP. Заполните поля Имя сообщества (Community Name)
и Trap Destination.
5. Закройте диалоговое окно свойств кнопкой ОК. Закройте диалоговое окно Сеть
(Network) кнопкой Закрыть (Close) и подтвердите перезагрузку компьютера.
Установка протокола
Работа с SNMP начинается с установки протокола. Протокол устанавливается
следующим образом:
1. Откройте диалоговое окно Сеть (Network) и перейдите на вкладку Службы
(Services).
2. Щелкните на кнопке Добавить (Add), выберите строку Агент SNMP (SNMP Agent)
и введите путь к установочным файлам.
3. Закройте диалоговое окно кнопкой Закрыть (Close) и подтвердите перезагрузку
компьютера.
Проверка работы SNMP утилитой SNMPUTIL
Для проведения следующей проверки понадобится утилита SNMPUTIL из пакета
Windows NT Resource Kit. Если у вас нет пакета Resource Kit, найдите SNMPUTIL
в Интернете (тем не менее рекомендуется использовать SNMPUTIL из комплекта
Windows NT/2000 Resource Kit).
Перед проведением проверки желательно увеличить количество строк в окне
командной строки. Щелкните на значке системного меню в левом верхнем углу
окна и выберите команду Свойства (Properties). На вкладке Расположение (Layout)
введите большее значение (например, 300).
Выполните следующие действия:
1. Откройте окно режима командной строки.
2. Введите следующие команды:
SNMPUTIL get 127.0.0.1 public
.1.3.6.1.4.1.77.1.2.2.0
SNMPUTIL get 127.0.0.1 public
.1.3.6.1.4.1.77.1.2.24.0
3. Проверьте введенные числа. Чтобы проверить первое число, щелкните на
значке Службы (Services) панели управления и подсчитайте количество запу-
щенных служб (или введите команду NET START в приглашении командной
строки и подсчитайте количество запущенных служб).
4. Чтобы проверить второе число, откройте Диспетчер пользователей и
подсчитайте количество пользователей.
5. Создайте нового пользователя в Диспетчере пользователей. Переключитесь
в режим командной строки и повторите вторую команду SMPUTIL
(воспользуйтесь клавишей Т).
6. Убедитесь в том, что количество пользователей увеличилось, и введите
следующую команду:
SNMPUTIL walk 127.0.0.1 public
.1.3.6.1.4.1.77.1.2.25
7. Команда выводит список имен всех пользователей.
8. Снова щелкните на значке Службы (Services) на панели управления.
Остановите службу Server. Система выдает предупреждение, что это приведет к
остановке службы Computer Browser; так и должно быть.
9. Снова введите команду
SNMPUTIL get 127.0.0.1 public
.1.3.6.1.4.1.77.1.2.2
10. Убедитесь в том, что завершенные службы не работают, и введите команду:
SNMPUTIL walk 127.0.0.1 public
.1.3.6.1.4.1.77.1.2.3.1.1
11. Команда выводит список работающих служб. Завершенные службы
отсутствуют в этом списке.
ПРИМЕЧАНИЕ
Даже после остановки службы сервера информация остается доступной через интерфейс сокетов.
Поскольку взаимодействие производится непосредственно через сокеты, вы можете использовать
агента SNMP, напрямую работающего с портом UDP 161.
12. Перезапустите службы Server и Computer Browser.
13. Чтобы отобразить всю информацию из управляющей базы LAN Manager,
введите следующую команду:
SNMPUTIL walk 127.0.0.1 public
.1.3.6.1.4.1.77
Настройка SNMP в системе Unix
В системе Unix включение/отключение протоколов и задание их параметров
осуществляется протокольными командами. Протокольные команды определены для
SNMP, RIP, Hello, ICMP Redirect, EGP и BGP. Существуют две разновидности
структуры команд: для внутренних и для внешних протоколов. Протокол SNMP
является единственным исключением. Команда snmp имеет следующий формат:
snmp yes | no | on | off
Команда управляет регистрацией демоном SNMP информации gated. SNMP
не является протоколом маршрутизации и не запускается этой командой — он
должен быть запущен отдельно. Команда всего лишь управляет тем, будет ли
gated оповещать управляющую программу об изменениях своего состояния.
Выдача информации включается аргументами yes или on (любым из двух) и
отключается аргументами по или off.
Параметры безопасности SNMP
В процессе настройки также задаются значения параметров, влияющих на
безопасность агента SNMP. По умолчанию агент отвечает любому диспетчеру,
используя имя сообщества «public». Поскольку запрос может поступить как из вашей
организации, так и извне, вы должны по крайней мере сменить имя сообщества.
Ниже кратко описаны основные параметры безопасности SNMP.
Посылка ловушки проверки подлинности
Флажок Посылать ловушку проверки подлинности (Send Authentication Trap) посылает
ловушку станции управления при попытке использования SNMP от диспетчера,
не принадлежащего к числу допустимых сообществ или не входящему в список
Принимать пакеты SNMP только от этих узлов (Only Accept SNMP Packets From These
Hosts).
Допустимые имена сообществ
Список Допустимые имена сообществ (Accepted Community Names) содержит список
имен сообществ, которым будет отвечать агент. Когда диспетчер отправляет
запрос, он включает в него имя сообщества.
Прием пакетов SNMP от любого узла
Переключатель Принимать пакеты SNMP от любого узла (Accept SNMP Packets from
Any Host) отвечает на любые запросы, передаваемые любой системой управления
из любого сообщества.
Прием пакетов SNMP от определенных узлов
Если установить переключатель Принимать пакеты SNMP только от этих узлов (Only
Accept SNMP Packets From These Hosts), агент будет отвечать только хостам из
списка, что позволит следить за указанными хостами и игнорировать данные от
других хостов.
Управление сетью и агенты SNMP
Двумя основными сторонами в протоколе SNMP являются станция управления
и агент.
О Станция управления — централизованный узел, с которого осуществляется
управление SNMP.
О Агент работает на оборудовании, с которого собираются данные.
Каждая из этих частей рассматривается в следующих разделах.
Станция управления SNMP
Станция управления является ключевым компонентом для получения
информации от клиента; служба SNMP может использоваться только при наличии хотя
бы одной станции управления. Основная функция станции управления — запрос
информации у устройств. Как упоминалось выше, у разных устройств в
зависимости от их типов может запрашиваться разная информация. Станция
управления представляет собой компьютер, на котором работает один из упоминавшихся
выше программных пакетов (рис. 38.2).
PS БЩ
г." "'.as'i K'."i'.".iП
pg^fe] r^^. v^| ^ Запрос get, get-next, set «—;——■'■■i |'.№""|
^^^^jgj^ Ответ или ловушка iv ^Г|„ РтРл
Агент SNMP Диспетчер SNMP
Рис. 38.2. Обмен данными между агентом и станцией управления
обычно инициируется станцией управления
Станция управления также поддерживает несколько общих команд:
О get — запрос указанного значения. Например, станция управления может
запросить количество активных сеансов.
О get-next — запрос значения следующего объекта. Например, после первого
запроса к клиентскому кэшу ARP можно запросить данные следующей записи.
О set — изменение значения объекта с возможностью чтения/записи. Команда
используется относительно редко, что объясняется соображениями
безопасности и тем фактом, что большинство объектов допускает только чтение.
Обычно группа хостов обслуживается одной станцией управления, на которой
работает служба SNMP. Такая группа называется сообществом (community).
Тем не менее в некоторых ситуациях одной станции оказывается недостаточно:
О Разные станции управления отслеживают разные подсистемы одних и тех же
агентов.
О В сообществе существует несколько точек управления.
О По мере расширения и усложнения сети возникает необходимость в
раздельном анализе разных аспектов работы сообщества.
Агенты SNMP для Windows
Итак, мы знаем, за что отвечает управляющая сторона протокола SNMP и как
именно она выполняет свои функции. Как правило, управляющая сторона
активно запрашивает и принимает информацию.
С другой стороны, агент SNMP отвечает за предоставление затребованной
информации и ее передачу диспетчеру SNMP. Обычно агентом является
маршрутизатор, сервер или концентратор. Агент работает в пассивном режиме и
отвечает только на прямые запросы.
Впрочем, в одном конкретном случае агент инициирует передачу данных и
действует по собственной инициативе без прямого запроса. Речь идет о так
называемых ловушках (traps). Ловушка устанавливается диспетчером на стороне агента,
но чтобы узнать, поступила ли в ловушку нужная информация, диспетчер не
обращается с запросом к агенту. Агент сам посылает сигнал управляющей
стороне и передает ей информацию о наступлении события.
Иногда настраиваются другие параметры агента SNMP, которые определяют
типы устройств, передающих информацию, и лиц, ответственных за работу системы.
О Контактное лицо (Contact) — имя лица, которое должно оповещаться о
различных ситуациях на данной станции (обычно это пользователь компьютера).
О Размещение (Location) — краткое описание компьютера. Упрощает
идентификацию системы, отправившей сигнал.
О Службы (Service) — типы подключений и устройств, отслеживаемые агентом:
□ Физическая (Physical) — используются при управлении физическими
устройствами (такими, как репитеры и концентраторы).
□ Приложения (Applications) — приложения TCP/IP. Флажок всегда должен
находиться в установленном состоянии.
□ Канал данных и подсети (Datalink/Subnetwork) — установка флажка означает,
что система управляет мостовым соединением.
□ Интернет (Internet) — флажок устанавливается, если компьютер с системой
Windows NT выполняет функции маршрутизатора IP.
□ Узел-узел (End-to-End) — флажок устанавливается, если компьютер с
системой Windows NT/2000 использует TCP/IP. Естественно, флажок всегда
должен находиться в установленном состоянии.
Ошибки SNMP сохраняются в системном журнале, в котором
регистрируются все операции SNMP. Программа Event Viewer позволяет просмотреть список
ошибок, выявить проблемы и найти возможные решения.
Инструментарий и команды SNMP
После краткого знакомства с системой управления и агентами мы познакомимся
с различными базами данных, к которым можно обращаться при помощи команд
SNMP.
Данные, запрашиваемые диспетчером у агента, хранятся в базе управляющей
информации (Management Information Base). База представляет собой набор
значений, выдаваемых по запросу диспетчера (конкретный состав списка зависит
от того, к какому устройству адресован запрос).
База MIB, поддерживаемая клиентом SNMP, как и реестр Windows, имеет
иерархическую структуру. Базы MIB являются источником информации,
доступ к которому предоставляется как агенту, так и управляющей стороне.
Служба SNMP является дополнительным компонентом программной
поддержки TCP/IP в Windows NT/2000. Она включает четыре разновидности баз
Ml В, реализованных в виде библиотеки динамической компоновки (DLL) и
загружаемых/выгружаемых по мере необходимости. Служба SNMP предоставляет
сервис агента SNMP любому хосту TCP/IP, на котором работают управляющие
программы SNMP. Кроме того, она выполняет следующие функции:
О уведомление хостов об особых ситуациях (например, о ловушках);
О обработка запросов на получение информации от хостов;
О создание в Системном мониторе счетчиков, используемых для анализа
производительности подсистемы TCP/IP;
О идентификация хостов, получающих и запрашивающих информацию, по
именам и IP-адресам.
Управляющая программа SNMP не входит в комплект поставки Windows NT/
2000, но присутствует в системе Unix и включается в пакет Windows NT/2000
Resource Kit. Она реализована в виде системной утилиты, работающей в режиме
командной строки. Программа SNMPUTIL проверяет настройку и правильность
работы службы SNMP; она также может использоваться для выполнения некоторых
команд. Программа SNMPUTIL не поддерживает некоторые возможности
управления SNMP, но как вы вскоре убедитесь, ее синтаксис и без этого достаточно сложен.
Обобщенный синтаксис команды SNMPUTIL выглядит так:
snmputil команда агент сообщество идентификатор_объекта_(ОЮ)
Поддерживаются следующие команды:
О walk — перемещение по ветви MIB, определяемой идентификатором объекта.
О get — выборка значения элемента, определяемого идентификатором объекта.
О getnext — выборка значения элемента, следующего за элементом,
определяемым командой get.
Например, чтобы узнать время запуска сервера WINS, обратитесь к WINS
MIB следующей командой (естественно, для этого необходима установленная
служба WINS и работающий агент SNMP):
C:\snmputil getnext localhost public
.1.3.6.1.4.1.311.1.1.1.1
В этом примере первая часть идентификатора определяет ветвь Microsoft
.1.3.6.1.4.1.311 (или iso.org.dod.internet.private.enterprise.microsoft). Вторая часть
определяет конкретную базу Ml В и объект, к которому адресован запрос: .1.1.1.1 (или
.software.Wins.Par.ParWinsStartTime). Полученное значение выглядит примерно так:
Value = OCTER STRING ' 01:17:22 on 11: 23:1997.<0xa>
RMON и другие модули MIB
Все объекты и события RMON содержатся в пяти модулях MIB (табл. 38.1).
В общей сложности модули RMON определяют свыше 900 объектов. Это
довольно много. В дополнение к модулям RMON MIB, в документе «Remote
Network Monitoring MIB Protocol Identifiers» (RFC 2074) содержится
определение языка спецификаций для идентификаторов протоколов и первая версия
списка протоколов. Следует помнить, что для применения RMON в сети не
обязательно знать все эти объекты.
Таблица 38.1. RFC, относящиеся к RMON
Модуль MIN Описание
RMON-MIB RFC 1757: Remote Network Monitoring Management Information Base (RMON1;
определяет 203 объекта и 2 события)
TOKEN-RING- RFC 1513: Token Ring Extensions to the Remote Network Monitoring MIN (Token
RMON-MIB Ring Extensions for RMON1; определяет 181 объект)
RMON2-MIB RFC 2021: Remote Network Monitoring Management Information Base Version 2
(RMON2, включает расширения для RMON1; определяет 268 объектов)
HC-RMON-MIB Интернет-проект: Remote Network Monitoring Management Information Base
for High Capacity Networks (HC-RMON, содержит расширения для RMON1
и RMON2, определяет 184 объекта)
SMON-MIB Интернет-проект: Remote Network Monitoring MIB Extensions for Switched Networks
(SMON или SWITCH-RMON; определяет 52 объекта)
Выработка требований
В этом разделе представлена конкретная последовательность действий по
выработке требований к управлению сетевыми компонентами и функциями.
Построение подробного списка информации
Сначала необходимо построить список информационных свойств, которые
будут запрашиваться у каждого управляемого объекта. Подробно распишите все
информационные объекты — назначение каждого элемента данных и тип
реализации (счетчик, целое число, текстовое сообщение).
Передача списка в службу поддержки
Передайте список в службу поддержки, отвечающую за работу устройства. Пусть
специалисты этой службы решат, какие данные понадобятся для выполнения их
служебных функций. Основное внимание следует сосредоточить на информации,
которая позволит лучше и проще выполнять эти функции.
Формулировка стратегии построения отчетов
Сформулируйте стратегию составления отчетов о работе устройства.
Определение показателей, используемых
для оповещения об экстренных ситуациях
(в реальном времени)
Система оповещения об экстренных ситуациях включает следующие элементы:
О Выбор пороговых значений (например, три срабатывания за один час).
О Выбор приоритетов и пороговых значений, определяющих нарастание
серьезности ситуации.
О Выбор диагностических процессов, запускаемых автоматически или службой
поддержки для упрощения ее работы.
О Выбор частоты сбора информации (каждые пять минут, каждые десять
минут, ежечасно и т. д.).
Выбор информации для составления
ежемесячных отчетов
В ежемесячный отчет включаются следующие факторы:
О Доступность устройств и служб.
О Средняя загруженность.
Выбор информации для оптимизации
Какие показатели действительно важны для оптимизации производительности
сетевых компонентов и функций?
Рассмотрите различные варианты комбинирования показателей или их
обработки, чтобы с полученной информацией было удобнее работать службе
поддержки.
Обратная связь
Наличие обратной связи гарантирует, что предлагаемое вами решение
удовлетворяет реально существующие потребности вашей организации.
Общаясь с руководством организации, вы должны объяснить функции и цели
системы управления сетью. В частности, особо подчеркните следующие
факторы:
О повышение эффективности работы службы поддержки;
О сокращение средней наработки до ремонта при исправлении проблем;
О профилактический подход к выявлению и локализации проблем;
О возможность сотрудничества и обмена информацией среди служб поддержки.
Следующий список поможет вам выработать требования, которые будут
поняты вашим руководством:
О соберите требования, предъявляемые ко всем функциям, существенным для
коммерческой стороны дела;
О не ограничивайтесь функциями, присущими только устройствам,
управляемым через SNMP;
О если устройство, связанное с некоторой функцией, не обладает даже базовым
«интеллектом», позднее обратитесь к руководству с предложением о его
обновлении.
Реализация требований
Реализуйте все собранные требования. Каждая реализация должна
ориентироваться на конкретное требование, однако реализации должны складываться не
в разрозненный набор, а в интегрированную систему. О том, как решить эту
задачу, будет рассказано ниже.
Оповещение служб поддержки
После того как все требования будут реализованы, оповестите службы поддержки,
связанные с управляемыми объектами или системами, о запуске системы
управления сетью.
Повторный анализ требований
Чтобы убедиться в том, что исходные требования не потеряли своей
актуальности на протяжении жизненного цикла сети, следует периодически возвращаться
к ним. Ниже приводятся некоторые рекомендации по повторному анализу
требований.
О При наступлении первого отчетного периода вернитесь к исходным
требованиям и проанализируйте их вместе со всеми службами поддержки и
руководством.
О Если потребуется — внесите изменения в формулировку требований.
О Помните, что содержимое отчетов и типы представленных данных будут
изменяться по мере того, как службы поддержки будут осваиваться с новой
системой.
Информирование технической службы
На стадии реализации направляйте сообщения о любых неожиданных ситуациях
в техническую службу. Хорошая информированность персонала технической
службы имеет первостепенное значение для успешного запуска системы
управления сетью.
Пробные проверки
Проводите пробные оповещения о неожиданных ситуациях и диагностику,
направленную на быстрое и эффективное решение проблемы. Задействуйте
соответствующие службы поддержки, чтобы можно было идентифицировать и включить
все диагностические действия. Не забывайте об оповещении руководства, если
в этом возникнет необходимость.
Обучение технической службы
Обучите специалистов из технической службы и позаботьтесь о том, чтобы они
вводили информацию о всех неполадках и проблемах в таблицу диагностики.
К этой категории может относиться все, что угодно — от простого обращения
пользователя, у которого возникли проблемы с приложением (например, MS
Word), до заполнения заявок на предоставление особого сервиса.
Документирование диагностических процедур
Сбор информации о диагностических процедурах позволяет собрать полезную
информацию и использовать ее в масштабах предприятия. Диагностические
процедуры составляют базу знаний о различных проблемах и средствах,
применяемых для их решения. Наличие готовой информации такого рода расширяет
возможности персонала технической службы, помогая быстро реагировать на
возникающие проблемы. Система управления сетью является полностью
интегрированной системой, поэтому она должна иметь модульную структуру и легко
наращиваться или сокращаться по мере возникновения новых требований.
Упрощение систем управления элементами
Системы управления элементами (EMS, Element Management Systems) — как
реализованные в виде продуктов независимых фирм типа SunNet Manager, HP
OpenView, NetView 6000, NetView, NetMaster, 3M TOPAZ, Larsecom Integra-T
или средства собственной разработки — должны легко интегрироваться в систему.
Следует понимать, что в архитектуре ни одна система EMS не знает о
существовании других подобных систем. Согласование потребностей EMS должно
выполняться на более высоком уровне, чтобы отдельная система могла заниматься
только той областью, которой она управляет.
Использование искусственного интеллекта
Такие функции, как корреляция оповещений, диагностика между системами EMS
и т. д., могут быть реализованы с применением принципов искусственного
интеллекта к реляционной базе данных. Почти во всех диспетчерских продуктах
используется оценка риска возможного сбоя компонентов, которая часто выполняется
компонентами экспертных систем. Наличие компонентов экспертных систем
повышает стоимость программного обеспечения из-за возрастания его
сложности. Подобные решения должны приниматься при участии служб поддержки,
поскольку им местная рабочая среда известна лучше, чем кому-либо другому.
Не будет ли приложение лучше выполнять свои функции, если оно будет более
тесно интегрировано с бизнес-логикой?
Отличным примером использования технологии экспертных систем
является Network General DSS (Distributed Sniffer Servers). Анализируя связи между
протоколами, трафиком, подключениями и механизмами управления локальной
сетью, DSS использует экспертные системы для выявления проблем на очень
низком уровне, еще до того, как они отразятся на работе пользователей и
вызовут снижение производительности или простои.
Кроме того, искусственный интеллект может использоваться для выявления
эвристических закономерностей поведения сети и упрощения диагностики. В сие-
тему должна быть включена информация о проблемах подобного рода,
возникавших в прошлом, и о мерах по их идентификации и исправлению.
Итоги
В этой главе рассматривается протокол SNMP и его место в управлении сетью.
Как было показано, SNMP — очень простой протокол, предназначенный для
получения информации из баз MIB. Это позволяет управляющим программам
(таким, как HP Open View) читать информацию из систем Windows NT /2000 и Unix.
Чтобы использовать SNMP в своей сети, вам придется приобрести
управляющую программу SNMP. Агентская поддержка SNMP может устанавливаться
независимо от того, используется она или нет; в частности, она устанавливается
для правильного функционирования счетчиков Системного монитора при
использовании Windows NT/2000.
Ниже приведена краткая сводка основных положений настоящей главы.
О Агент SNMP в Windows NT/2000 — только агент, и ничего более. Система
поддерживает только API диспетчера SNMP, но не содержит программной
реализации диспетчера.
О Диспетчер может передавать агенту три команды: set, get и get-next.
О Вы должны знать, что такое ловушка (оповещение о событии) и что такие
оповещения отправляются агентом.
О Вы должны знать пять областей, отслеживаемых агентом, и области их
применения: физические устройства, приложения, каналы данных и подсети,
Интернет и взаимодействия «узел-узел».
О Вы должны знать, как установить агента.
О Вы должны знать, как настроить ловушку проверки подлинности.
О Вы должны уметь задавать имена сообществ и адреса станций, которые будут
выполнять функции диспетчеров.
О Вы должны понимать структуру баз MIB и знать четыре базы MIB,
входящие в Windows NT/2000: LAN Manager MIB II, Internet MIB II, DHCP MIB
и WINS MIB.
О Агент SNMP должен быть установлен для работы счетчиков в Системном
мониторе.
В настоящее время существует много замечательных продуктов,
позволяющих управлять не только оборудованием, но и службами и приложениями. При
выборе системы следует обращать особое внимание на ее реализацию, поскольку
в таких системах каждая управляющая возможность должна соответствовать
некоторой практической потребности. Кроме того, для достижения
максимальной эффективности эти разнородные системы должны хорошо интегрироваться
друг с другом и с рабочей средой служб поддержки.
^Q Протокол управления
*3Z7 сетьюSNMP
Тим Паркер (Tim Parker)
В предыдущей главе обсуждались основные принципы и инструментарий
управления сетью. Настоящая глава содержит более подробный обзор протокола
SNMP (Simple Network Management Protocol), предназначенного для
администрирования сетевых устройств и получения информации о периферийном
оборудовании. Протокол SNMP используется во многих сетях TCP/IP — особенно
в больших, поскольку он существенно упрощает администрирование.
Интеллектуальные периферийные устройства передают специальной программе (серверу
SNMP) информацию о своем состоянии, а также обо всех ошибках и проблемах,
возникающих в процессе работы. Используя SNMP, сетевой администратор
изменяет конфигурацию и собирает статистику по разным узлам из одной
централизованной точки.
Что такое SNMP?
Протокол SNMP первоначально разрабатывался для управления
маршрутизаторами в сетях. Хотя протокол SNMP принадлежит к семейству протоколов
TCP/IP, он не зависит от уровня IP. SNMP проектировался в расчете на
независимость от базовых протоколов, поэтому он с таким же успехом может
работать на базе протокола IPX из семейства Novell IPX/SPX (хотя большинство
установок SNMP работает на базе IP).
Протокол SNMP состоит из трех компонентов:
О база управляющей информации (MIB, Message Information Base) — база
данных с информацией о текущем состоянии;
О структура и описание управляющей информации (SMI, Structure and
Identification of Management Information) — спецификация, определяющая
формат данных MIB;
О собственно SNMP (Simple Network Management Protocol) — механизм обмена
данными между управляемыми устройствами и серверами.
На периферийных устройствах со встроенной поддержкой SNMP работает
агентская программа, загружаемая на стадии загрузки или внедренная в устрой-
ство на уровне микрокода. Фирмы-производители выбирают разные названия для
устройств с агентами SNMP, но в общем случае используется термин «SNMP-
управляемое устройство».
SNMP-управляемые устройства взаимодействуют с сервером SNMP,
работающим в сети. Существует два основных механизма взаимодействия с сервером:
опрос и прерывание. В первом случае сервер связывается с устройством и
запрашивает у него информацию о текущем состоянии или статистику. Опросы часто
проводятся с определенной периодичностью, при этом сервер связывается со всеми
управляемыми устройствами в сети. Основные недостатки опроса заключается
в том, что полученная информация может оказаться устаревшей, а возрастание
количества управляемых устройств и частоты опроса увеличивает сетевой трафик.
В системе SNMP, основанной на прерываниях, управляемое устройство
посылает сообщение серверу при выполнении некоторого условия. Таким образом,
сервер немедленно узнает обо всех проблемах — за исключением сбоя устройства
(в этом случае оповещение должно поступить от другого устройства, которое
попыталось связаться с неработающим устройством). Впрочем, у схемы с
прерываниями тоже имеются свои недостатки. Главный недостаток заключается в том,
что на подготовку сообщения для сервера нужно процессорное время, которое
отнимается от нормальной работы устройства. Это может привести к нехватке
ресурсов и другим проблемам в работе устройства. Отправка больших
сообщений (например, содержащих большой объем статистической информации)
снижает эффективность работы сети в процессе сбора и пересылки данных.
Если в сети происходит серьезный сбой (например, потеря напряжения с
автоматическим подключением источников бесперебойного питания), все SNMP-
управляемые устройства могут попытаться одновременно отправить серверу
сообщения о возникших проблемах. В результате может произойти переполнение
пропускной способности сети, и сервер получит неверную информацию.
Для решения этих проблем часто применяется комбинированное решение,
в котором задействуются оба механизма (опрос и прерывания). В этой схеме,
называемой опросом с применением ловушек, сервер собирает статистику с
заданными интервалами, по запросу системного администратора или при получении
сообщения от ловушки SNMP. Кроме того, каждое SNMP-управляемое устройство
может сгенерировать сообщение прерывания при выполнении определенных
условий, но такие условия обычно определяются более жестко, чем в традиционных
системах с прерываниями. Например, при использовании схемы SNMP,
основанной на прерывания, маршрутизатор может сообщать об увеличении загрузки
на каждые 10 процентов. Но если использовать опрос с применением ловушек,
уровень загрузки будет известен в процессе регулярного опроса; в этом случае
маршрутизатор обычно настраивается так, чтобы прерывание отправлялось только
при существенном возрастании загрузки. Получив сообщение прерывания при
опросе с применением ловушек, сервер при необходимости может запросить
у устройства дополнительную информацию.
Программное обеспечение сервера SNMP взаимодействует с агентами SNMP
и передает или запрашивает различную информацию. Обычно сервер запрашивает
у агента всевозможную статистику, включая количество обработанных пакетов,
текущее состояние устройства, специальные условия для устройства данного
типа (например, отсутствие бумаги в принтере или разрыв связи в модеме) и
уровень загрузки процессора.
Сервер также может приказать, чтобы агент изменил записи своей базы
данных (MIB), или послать пороговые значения и условия, при достижении
которых агент SNMP должен сгенерировать сообщение прерывания (например,
когда загрузка процессора достигнет 90 процентов).
Взаимодействие между сервером и агентом организуется достаточно
прямолинейно, хотя содержимое сообщений должно подчиняться стандарту ASN.1
(Abstract Syntax Notation Rev 1). Например, сервер отправляет сообщение
«Сообщи свой текущий уровень загрузки» и получает ответ «75 %». Агент посылает
данные серверу только при возникновении прерывания или при проведении
опроса. Следовательно, сервер SNMP может не знать о проблемах, существующих
в сети, просто потому, что он не проводил опросов и не получал прерывания.
MIB
Каждое SNMP-управляемое устройство поддерживает базу данных со
статистикой и другими сведениями. Такая база данных называется базой управляющей
информации, или MIB (Management Information Base). Записи MIB содержат
четыре поля: тип объекта, синтаксис, уровень доступа и состояние. Обычно
элементы MIN стандартизируются протоколом и следуют жестким правилам
форматирования, определяемым стандартом ASN.1 (Abstract Syntax Notation 1).
Тип объекта определяет имя записи (обычно в качестве имени используется
простая строка). Синтаксис определяет тип значения (например, строковое или
целочисленное значение). Значение присутствует не во всех записях МШ.Поле
доступа определяет уровень доступа к записи и обычно принимает значения
«только чтение», «чтение/запись», «только запись» и «недоступно». Поле
состояния указывает, является ли запись MIB обязательной (то есть должна
всегда реализовываться управляемым устройством), необязательной (управляемое
устройство может реализовать запись по своему усмотрению), нежелательной
(находящейся на пути к устареванию) или устаревшей (не используемой).
На практике используются два типа MIB: MIB-1 и MIB-2. Они имеют
разную структуру. Структура MIB-1 используется с 1988 года; таблица содержит
114 записей, разделенных на группы. Чтобы управляемое устройство могло
претендовать на совместимость с MIB-1, оно должно обязательно поддерживать все
группы, относящиеся к его типу. Например, управляемый принтер не обязан
реализовывать все записи, относящиеся к протоколу EGP (Exterior Gateway
Protocol), которые обычно реализуются только маршрутизаторами и другими
аналогичными устройствами. Чтобы быть MIB-1-совместимым, он должен
поддерживать только записи, которые должны поддерживаться всеми принтерами.
Спецификация MIB-2, появившаяся в 1990 году, представляет собой
усовершенствованный вариант MIB-1; она состоит из 171 записи и 10 групп. MIB-2
расширяет некоторые базовые группы MIB-1 и добавляет к ним три новые
группы. Как и в случае с MIB-1, устройство SNMP, претендующее на совместимость
с М1В-2, должно реализовывать все группы, относящиеся к данному типу
устройства. Существует много устройств, совместимых с MIB-1, но не совместимых
с MIB-2.
Кроме MIB-1 и MIB-2 существует несколько экспериментальных версий
MIB, добавляющих различные группы и записи в базу данных. Ни одна из этих
версий не получила широкого распространения, хотя некоторые из них
выглядят перспективно. Некоторые версии MIB были разработаны отдельными
корпорациями для собственного использования; ряд фирм-производителей
предлагает совместимость с этими версиями MIB. Например, фирма Hewlett-Packard
разработала собственную версию MIB, которая поддерживается некоторыми
SNMP-управляемыми устройствами и серверными пакетами.
Использование SNMP
Протокол SNMP прошел несколько стадий развития. Обычно он работает в
режиме асинхронного приложения «клиент-сервер», то есть как управляемое
устройство, так и программа-сервер SNMP могут передать другой стороне
сообщение и ждать ответа (если он предполагается). Сообщения упаковываются
и обрабатываются сетевым программным обеспечением (например, уровнем IP),
как и любые другие пакеты. Для транспортировки сообщений SNMP использует
протокол UDP. Все сообщения, кроме ловушек, передаются через порт UDP 161
(сообщения ловушек передаются через порт UDP 162). Агенты получают
сообщения от диспетчера через порт UDP 161 в агентской системе.
Первая крупная версия SNMP — SNMP vl — проектировалась для
выполнения относительно простых операций, была рассчитана на относительно простые
реализации и хорошо адаптировалась к разным операционным системам. SNMP vl
поддерживает только пять типов операций между сервером и агентом:
О get — выборка одной записи MIB;
О get-next — перебор записей MIB;
О get-response — ответ на get;
О set — модификация записей MIB;
О trap — передача информации о прерываниях.
При отправке запроса некоторые поля записи SNMP остаются пустыми.
Клиент заполняет их и возвращает запись. Такой способ позволяет эффективно
передать запрос и ответ в одном блоке и обойтись без сложных алгоритмов
поиска, определяющих, к какому запросу относится полученный ответ.
Например, при отправке команды get поля типа и значения равны NULL
Клиент возвращает аналогичное сообщение, в котором эти два поля заполнены
(конечно, если содержимое полей относится к клиенту — иначе возвращается
сообщение об ошибке).
Во второй версии SNMP (SNMP v2) протокол SNMP был наделен новыми
возможностями. Одна из таких возможностей предназначена для серверов —
новая операция get-bulk позволяет переслать в одном сообщении несколько
записей MIB (в SNMP vl для этого приходилось многократно выполнять запросы
get-next). Кроме того, более совершенная защита SNMP v2 предотвращает
получение информации о состоянии управляемых устройств посторонними. SNMP v2
поддерживает шифрование и аутентификацию. Разумеется, SNMP v2 гораздо
сложнее и используется не так широко, как SNMP vl. Из-за политических
проблем с разработкой SNMP v2 эта версия так и не получила широкого
распространения. Текущая версия SNMP имеет номер 3 и включает поддержку IP
версии 6, а также улучшенные возможности безопасности и администрирования.
SNMP поддерживает опосредованное управление; иначе говоря, устройство
с агентом SNMP и MIB может взаимодействовать с другими устройствами, не
имеющими полноценных агентских программ SNMP. Механизм опосредованного
управления позволяет управлять другими устройствами через подключенный
компьютер, при этом MIB устройства размещается в памяти агента. Например,
принтер может управляться с агентской рабочей станции, на которой также
имеется агент опосредованного управления и MIB принтера. Опосредованное
управление помогает освободить устройства, находящиеся под интенсивной
загрузкой.
Несмотря на широкое распространение, протокол SNMP обладает некоторыми
недостатками, главным из которых является зависимость от UDP. Протокол
UDP не ориентирован на соединение, поэтому обмен сообщениями между
сервером и агентом принципиально не может быть надежным. Другая проблема
заключается в том, что SNMP обеспечивает только простой механизм обмена
сообщениями и не позволяет фильтровать сообщения; тем самым повышается
нагрузка на программы-получатели. Наконец, SNMP почти всегда использует те
или иные разновидности опроса, порождающего существенный объем трафика.
Диспетчер SNMP управляет обменом данными между устройствами при
помощи коммуникационного протокола SNMP. Вспомогательные программы
обеспечивают пользовательский интерфейс, через который администратор сети
может получить информацию о состоянии всей системы и ее отдельных
компонентов, а также проследить за любым конкретным сетевым устройством.
Unix и SNMP
При работе в очень большой сети SNMP часто оказывается единственным
средством, при помощи которого администратор узнает, что происходит в сети, а также
получает предупреждения о возникающих проблемах. Поддержка SNMP
включается во все версии Unix, легко настраивается, а после основательных усилий
по ее изучению — эффективно используется для управления сетями,
содержащими тысячи устройств. Естественно, все сказанное в равной степени относится
к системе Linux.
Данный раздел посвящен настройке SNMP в типичной системе семейства
Unix. Как нетрудно догадаться, управляющие пакеты SNMP с графическим ин-
терфейсом гораздо удобнее текстовых, поэтому во многие поставки Unix входят
дополнительные приложения для администрирования SNMP.
Настройка SNMP в Unix и Linux
Во многих версиях Unix программное обеспечение клиента и сервера является
частью операционной системы. Клиентская часть выполняется демоном snmpd,
который обычно работает в течение всего времени использования SNMP в сети.
Обычно демон snmpd запускается автоматически при загрузке системы; команда
запуска включается в стартовый сценарий гс. При запуске SNMP демон snmpd
читает ряд конфигурационных файлов. В большинстве агентов SNMP читаются
следующие файлы:
/еtc/inet/snmpd.conf
/etc/inet/snmpd.comm
/etc/inet/snmpd.trap
В некоторых версиях Unix эти файлы могут находиться в других каталогах;
проверьте файловую систему и определите их правильное расположение.
Файл snmpd.conf содержит описания четырех системных объектов MIB. Обычно
эти объекты настраиваются во время установки SNMP, но иногда бывает
полезно проверить их содержимое. Ниже приведено примерное содержимое файла
snmpd.conf:
descr=SC0 TCP/IP Runtime Release 2.0.0
objid=SC0.1.2.0.0
contact=Tim Parker tparker@tpci.com
location=TPCI Infl HQ, Richmond
Во многих файлах snmpd.conf вам придется вводить значения полей contact и
location самостоятельно, но поля descr и objid следует оставить без изменений.
Переменные, определяемые в файле snmpd.conf, соответствуют переменным MIB.
descr sysDescr
objid sysObjectID
contact sysContact
location sysLocation
Файл snmpd.comm содержит данные аутентификации и список хостов,
которым предоставляется доступ к локальной базе данных. Чтобы предоставить
удаленному компьютеру доступ к локальным данным SNMP, включите его имя
в файл snmpd.conf. Пример файла snmpd.conf:
accnting 0.0.0.0 READ
r_n_d 147.120.0.1 WRITE
public 0.0.0.0 read
interop 0.0.0.0 read
Каждая строка файла snmpd.conf состоит из трех полей: имени сообщества,
IP-адреса удаленного компьютера и привилегий, предоставляемых сообще-
ству. Если IP-адрес равен 0.0.0.0, разрешен доступ для любого члена
указанного сообщества. Допустимые значения привилегий: READ (доступ только для
чтения), WRITE (доступ для чтения и записи) и NONE (запрет доступа).
Доступ для чтения и записи позволяет изменять данные MIB, но не файловые
системы.
Файл snmpd.trap определяет имена хостов, которым направляются сообщения
ловушек при обнаружении критического события. Пример файла snmpd.conf:
superduck 147.120.0.23 162
Каждая строка файла snmpd.trap состоит из трех полей: имени сообщества,
IP-адреса и порта UDP, используемого для отправки ловушек.
Команды SNMP
В системе Unix существуют команды на базе SNMP, при помощи которых
сетевые администраторы получают информацию из MIB или от SNMP-совмес-
тимых устройств. Конкретный список команд зависит от реализации, однако
в большинстве разновидностей SNMP поддерживаются команды,
перечисленные в табл. 39.1.
Таблица 39.1. Команды SNMP
Команда Описание
getone Получение значения переменной с использованием команды SNMP get
getnext Получение значения следующей переменной с использованием команды SNMP
getnext
getid Получение значений sysDescr, sysObjectID и sysUpTime
getmany Получение значений группы переменных MIB
snmpstat Получение содержимого структуры данных SNMP
getroute Получение данных маршрутизации
setany Присваивание значения переменной с использованием команды SNMP set
Большинство команд SNMP вызывается с аргументами, определяющими
присваиваемое или получаемое значение. Ниже приведены результаты выполнения
некоторых команд из табл. 39.1 для компьютера SNMP в небольшой локальной
сети.
$ getone merlin udpInDatagrams.0
Name: udpInDatagrams.0
Value: 6
$ getid merlin public
Name: sysDescr.0
Value: UNIX System V Release 4.3
Name: sysObjectID.0
Value: Lachman.1.4.1
Name: sysUpTime.0
Value: 62521
Команды SNMP нельзя назвать удобными для пользователей — их выходные
данные слишком кратки, что затрудняет их анализ. Из-за этого обрели
популярность системы управления сетью SNMP с графическим интерфейсом,
упрощающим выполнение функций SNMP и представление собранной информации.
Графические программы SNMP строят цветные диаграммы, отображающие
сетевую статистику в реальном времени. Эти программы часто сложны, а их
реализация обходится довольно дорого, но они оказывают неоценимую помощь
в управлении сетью и устройствами.
Одна из самых полезных возможностей SNMP связана с сообщениями об
ошибках и проблемах в работе устройств. Управляющие станции с графическим
интерфейсом позволяют графически отображать эту информацию на
топологических схемах сети.
Windows и SNMP
Все основные системы Microsoft — Windows NT/2000/XP, Windows 9x/ME — в той
или иной степени поддерживают SNMP. Во всех операционных системах имеются
драйверы для выполнения агентских функций по сбору информации в сетях SNMP,
а в некоторых операционных системах (Windows NT/ 2000/XP и Windows 9x/ME)
поддерживаются административные агенты. Ниже мы вкратце познакомимся с
уровнем поддержки SNMP во всех операционных системах семейства Windows.
Windows NT/2000
Windows NT/2000 содержит средства сбора информации SNMP, которые
устанавливаются в виде стандартной службы. Запустите приложение Сеть (Network)
на панели управления и перейдите на вкладку Службы (Services). Если службы
SNMP отсутствуют в списке, щелкните на кнопке Добавить (Add), найдите в
списке соответствующую строку и установите поддержку SNMP в системе. После
загрузки драйверов из установочных файлов на экране появляется страница
с тремя вкладками, на которых вводятся конфигурационные данные.
На первой вкладке свойств SNMP (рис. 39.1) вводятся контактные данные
администратора SNMP. Два текстовых поля содержат данные об имени и
местонахождении администратора. Заполнять эти поля необязательно, но наличие
контактных данных поможет быстрее узнать, кто является администратором
SNMP. В нижней части вкладки перечислены типы подключений и устройств,
находящихся под управлением SNMP. Для большинства сетей лучше всего
подходят значения по умолчанию.
На вкладке Ловушки (Traps), изображенной на рис. 39.2, вводятся имена
сообществ SNMP. Во всех перечисленных сообществах отслеживается
срабатывание ловушек. Обычно все компьютеры сети являются членами сообщества public.
Если заполнить эту вкладку, вы сможете задать IP-адреса устройств
наблюдения SNMP для всех сообществ. Например, ловушки SNMP для сообщества
research могут передаваться в аналитическую службу SNMP.
Ар** |Ti*pi | $яф{ ... . , г* \
MIB'* $y^ero group 0#iorwi€&*act and Uc*J^fieJ& «hogW [j
beprovWtatt&eoinprtei; $«уюе Horatio» *hputif*e«* j J
Ihenetv^;temper^ovkiftdfcythitcompu^, •:' ||
£<a*aefc |Tim Parker < "A, J I
.' .'... .Ml r , ,, . . . %. >^*\\. '11
УхШжих. (National HQ '^VMI
t'vV''$I 1
I Г Ehyscel I? Apj&ajiQra Г" £*tatok/SufenM*& ll?>|>]
■ & internet F £fl*k-£nd ' ^ Л: \^;Дт]
jr....... ••-'-. , ч ч //vA?i^1 j
' """" ' Ътъ I
OK I Cancel ( ' £pp*TiH
Рис. 39.1. Свойства агента SNMP
A*** Tit» )$ec^J3 • ";> ^ :^;-Й^;йЩ|
The SNMP $efvk*.#ovid«.*#¥^ ey* ТЙЖСг Ш
art IFWPX #©&**& If йар*«ше^*4 one 0*100» \ Г'л^лЗ-П
community name» murtbe specified ?raj> destination*яздЬе ЪШ£ j
r«ime«JPa^es«e5rurJI^«tteMe$; • .. <:>: ^»%fM
f Community Name; • ■•.■•■*■-:*■"* •;••:•:'• т^-г-.-'^^^^Й^И
jld ^fejf|
) ' .-• ;':•• > ••■••. •••'•.^Ч;^-^«mJ
I IiepDertndtora: ••■■■■•: • .■--• »• *.**ея$ж|-1
| __^ ^-^.ад^!-
I ;Ш|
:'••'•'.:." ' . ;■&&•,&$&$*!■*',,■ I j
• OK'" 1л,;'С^гюе1::1л?!1^^Лг''|
Рис. 39.2. Свойства ловушек SNMP
Последняя вкладка свойств SNMP — Безопасность (Security) — изображена на
рис. 39.3. Она предназначена для ограничения доступа к сервису SNMP на уровне
сообществ и консолей. Переключатели в нижней части вкладки позволяют
ограничить доступ к SNMP и принимать запросы только от перечисленных хостов.
ГШ&!1*й£ ': "^W;|I3IS•••: • • ■
j: И:г|й^е^ _,.. г^™ j
IJBS9HBBBBHHHBHHBBHBBI
• j :• -: k\\
■ : ." | \ j j
"•:.b:.v- :^^^Ш^:::.:1 ■ ^--" 1 j
'• • ;-::'|;:;g;j€i|ig;:-:■■ j';> • С№* j &ppb> |
Рис. 39.3. Свойства безопасности 5NMP
После завершения настройки происходит перезагрузка Windows NT с
активизацией служб SNMP.
Windows 9x/ME
В настоящее время существует целый рад агентов SNMP для Windows 9x/ME.
Большей частью это бесплатные или условно-бесплатные программы, которые легко
находятся при помощи поисковых систем WWW. Агенты SNMP для Windows
позволяют следить за работой сетей, получать информацию о возникающих
проблемах, а в некоторых случаях даже управлять сетью из системы Windows.
Одна из самых популярных программ SNMP для Windows 9х/МЕ — Net-
Guardian — была разработана в Лиссабонском университете. Для работы Net-
Guardian необходим стек TCP/IP или Trumpet Winsock. Программа обычно
распространяется в виде ZIP-файла, который распаковывается в отдельный
каталог и не требует компоновки с ядром Windows или загрузки специальных
драйверов. Благодаря такому решению с программой очень удобно работать
(и игнорировать ее, когда она не нужна). Среди сильных сторон NetGuardian
стоит упомянуть ее интерфейс — настолько простой и удобный, насколько это
возможно в такой сложной области, как SNMP.
Главное окно NetGuardian изображено на рис. 39.4. В нем представлена
схема сети со всеми компьютерами, известными NetGuardian. Если значок
компьютера перечеркнут, это означает, что NetGuardian не может с ним связаться (что
вполне понятно — на рисунке изображена конфигурация, включенная в пакет
NetGuardian по умолчанию). Чтобы программа NetGuardian провела поиск в
вашей сети, откройте меню Net и выберите команду Discover. На экране появляется
окно, в котором вводится диапазон IP-адресов для поиска (рис. 39.5).
Stoclcholm-EBS.Ebone.NET
19#Т21.156.34
Paris-EBS.Ebjy*£NET VIENNA-EBS1.Ebone.NET
192.121.15&$£ 192.121.156.18
Cern^BSI. Ebone.NET Dante.NET
щ Щ
194.41.0.50 194.41.0.49 А
Рис. 39.4. Окно NetGuardian со схемой сети
ftom;;}^ [If
. -То: J205.150.89.25 |||
.ICommuRl^j***^ "|||
. ^ ,, ,,, ^^У:^.-р.,, ...^ . щ|:|
[. ■■ /.'Г- ' J :^;Ш.|,/5 ^^^|.4':'v^'vSt::: S
Г;;:"" "W^^
Рис. 39.5. При поиске в сети NetGuardian запрашивает диапазон IP-адресов
После проверки всех компьютеров в заданном диапазоне NetGuardian
отображает результаты поиска на новой схеме. На рис. 39.6 изображена простая сеть,
в которой только три компьютера сообщили о себе. NetGuardian обнаруживает
компьютеры сети последовательным опросом (pinging) всех адресов в заданном
диапазоне.
i ^. - - j——^т j
§—л—* Ч
j 205.150.89.1 205.150.89.3 205.150.89.10 |
V 1
V I
I
ЬЦ-' л, ... ■ '■ -. ■ ::,^Ш:.:.:,:::,. ■ ■ ;,■ ,„• ; ; ^ лД
Рис. 39.6. Схема сети в NetGuardian с тремя компьютерами, заявившими о своей активности
Рис. 39.7. График сетевой активности в NetGuardian
Используя простой интерфейс NetGuardian, администратор (или
любознательный пользователь) может проверить активные компьютеры в сети, добавить
или исключить элементы из схемы сети или изменить ее внешний вид. Пакет
NetGuardian очень легко осваивается, он прост в работе и обладает многими
специальными возможностями, не поддерживаемыми в других пакетах
(например, вывод графика сетевой активности — рис. 39.7).
ПРИМЕЧАНИЕ
Копию NetGuardian можно найти на различных web-сайтах или на анонимном FTP-сайте ftp.fc.ul.pt
в файле /pub/networking/snmp/netgXXX.zip, где XXX — номер версии.
Итоги
Протокол SNMP — простой и эффективный механизм управления сетевыми
устройствами. С момента своего появления в 1988 году он был дополнен новыми
возможностями, получил широкое распространение и в настоящее время
занимает основное место в области управления сетями. Одним из главных
преимуществ SNMP является его простота, поскольку производители периферийного
оборудования легко внедряют поддержку SNMP в свои устройства. С другой
стороны, для администратора сети SNMP — по меньшей мере замечательный
инструмент.
Л(\ Безопасность
Нг w передачи
данных TCP/IP
Энн Карасий (Anne Carasik)
Конечно, главная задача сетей — предоставление доступа, но в современном мире
безопасность играет ничуть не менее важную роль. Администратор разрешает
приложениям доступ к сетевым службам по номерам используемых портов
TCP. Кроме того, TCP/IP можно защитить при помощи виртуальных
частных сетей (VPN) и создать защищенный туннельный канал без защиты самого
приложения.
\
Планирование сетевой безопасности
В процессе планирования политики сетевой безопасности администратор
определяет, каким сетевым службам и приложениям следует разрешить вход и
выход из сети. Не разрешайте прием входящих сетевых пакетов, если это не
объясняется стопроцентной необходимостью (а если такая необходимость есть, она
должна быть достаточно четко определена). Слишком много развелось
«вундеркиндов», которые загружают программы с хакерских сайтов и получают доступ
к вашей сети, если вы не приняли защитных мер.
Разрешая входной трафик, необходимо внимательно следить за работой
программ на входном порте и устанавливать исправления сразу же после их
публикации.
Существует и другой вариант — криптографические приложения Secure Shell,
SSL (Secure Sockets Layer) и продукты VPN, обладающие улучшенной поддержкой
аутентификации и шифрования с открытым ключом. Данное решение также
хорошо подходит и для исходящего трафика — вряд ли вы хотите, чтобы
конфиденциальная информация (например, пароли) пересылались на внешние сайты
в незащищенном виде.
Что такое сетевая безопасность?
В простейшем понимании под сетевой безопасностью понимается определение
того, какой сетевой трафик может входить в сеть и выходить из нее. При этом
сеть может представлять собой сегмент локальной сети (LAN) или
распространяться на целый регион (глобальные сети, WAN).
Один из способов реализации сетевой безопасности основан на
сегментировании сети и включении контрольных точек (таких, как брандмауэры и
маршрутизаторы). Настройка брандмауэра или маршрутизатора определяет, каким
типам сетевого трафика и сетевым приложениям разрешено прохождение через
контрольную точку.
Таким образом, контрольная точка фильтрует сетевой трафик и пропускает
только некоторые типы пакетов (входящих, исходящих или и тех и других).
Например, электронная почта очень важна для любой коммерческой
деятельности. В очень простой политике сетевой безопасности разрешается входящий
и исходящий трафик электронной почты на порте 25 для протокола SMTP (Simple
Mail Transfer Protocol). Остальной трафик блокируется и не пропускается через
контрольную точку.
На рис. 40.1 показаны примеры контрольных точек.
г Интернет 5 г Интернет 5
I Маршрутизатор I I FW I с Web-серверы 5
С^ Сеть S у Сеть S
^организации организации р
(Экстрасеть (сеть, <v
\ используемая j
( совместно Л
7^ с партнерами) J
^__^-^_^ ^\ FW [ ^-^--У^-^
у Сеть ^
^организации Д^
| FW [^
г Интернет -2
Рис. 40.1. Разделение сетей контрольными точками
Почему важна сетевая безопасность?
С увеличением количества пользователей Интернета растет необходимость в
безопасности. Все больше пользователей и организаций становятся жертвами атак.
Атаки происходят по разным причинам, в том числе:
О злоумышленник желает получить конфиденциальную информацию о вас
или вашей организации;
О злоумышленник проверяет свои навыки по проникновению в системы и
использует вашу систему для экспериментов;
О просто потому, что это интересно.
Уровни безопасности
Сетевая безопасность также зависит от прав доступа — от того, кто из
пользователей обладает или не обладает такими правами. В плане сетевой безопасности
некоторым пользователям предоставляются административные привилегии, а
рядовые пользователи обладают стандартным уровнем привилегий, единым для всех.
Между администраторами и рядовыми пользователями существует много
промежуточных уровней безопасности. Одни администраторы могут пользоваться
ограниченным доступом к одной системе, тогда как другие получают доступ
к нескольким системам. Например, один администратор обслуживает системы
разработки, другой занимается брандмауэрами и т. д.
Во многих операционных системах — таких, как Unix и Windows NT/2000 —
поддерживаются учетные записи администраторов (root в Unix) и учетные записи
пользователей. Эти два уровня представляют два крайних состояния сетевой
безопасности. Существуют и другие уровни безопасности — скажем, пользователи,
обладающие частью административных привилегий, и гостевые учетные записи.
ПРИМЕЧАНИЕ
Будьте крайне осторожны с «гостевыми» учетными записями, по умолчанию создаваемыми в
некоторых системах Unix и Windows NT/2000. Перед подключением системы к сети гостевые учетные
записи рекомендуется заблокировать.
В некоторых операционных системах — например, HP-UX CMW (Compart-
mented Mode Workstation), используемой в HP-UX Virtual Vault — применяется
разделенная схема безопасности. В этой схеме определены четыре уровня доступа
без единой административной учетной записи; привилегии администратора
делятся между несколькими учетными записями. Четыре уровня, о которых идет
речь — высокий, низкий, внешний и внутренний, — показаны на рис. 40.2.
ПРИМЕЧАНИЕ
В некоторых операционных системах (например, Windows NT/2000) группе, объединяющей всех
пользователей системы, присваиваются полные права чтения, записи, удаления и исполнения
файлов. Администратору следует отменить неограниченный доступ к важнейшим системным и
сетевым файлам.
Высокий
^организации 1 Внутренний Внешний S Интернет 2
Низкий
Рис. 40.2. Разделенный доступ в HP-UX CMW
Пользователь не может производить запись на более высоком уровне, но
может читать на более низком уровне. Чтение и запись на одном уровне разрешены.
Например, администратор, использующий свою учетную запись на низком
уровне, не может записывать на высоком уровне.
ПРИМЕЧАНИЕ
За дополнительной информацией о Virtual Vault обращайтесь по адресу http://www.hp.com/securlty/
products/virtualvault.
Пароли и файлы паролей
Проверка пользовательского доступа к учетной записи обычно осуществляется
при помощи паролей. Существуют и другие средства, в том числе
биометрические (основанные на проверке физических атрибутов пользователя) и
использующие шифрование с открытым ключом, однако большинство сетевых
протоколов аутентификации продолжает использовать пароли.
Главный недостаток паролей заключается в том, что они не гарантируют
полной защиты. В одних схемах с использованием паролей применяются
недостаточно надежные средства шифрования, в других проверку пароля вообще
удается обойти. Тем не менее даже при качественной реализации механизма
проверки пароля возникают другие проблемы.
Пароли часто легко подбираются, потому что пользователи хотят, чтобы их
пароль легко запоминался. Многие выбирают пароли из словаря или
используют дату своего рождения, номер телефона, кличку собаки или другие личные
данные, которые относительно легко узнать.
По этой причине многие администраторы требуют, чтобы пользователи
выбирали «сильные» пароли. Существуют специальные программы, которые
выбирают сильные пароли или заставляют пользователей применять их.
Сильный пароль содержит:
О алфавитно-цифровые символы (цифры и буквы);
О символы смешанного регистра (прописные и строчные буквы);
О специальные символы (!@#$%А&*_-=+\1?/><-/":~).
Выполнение этих условий не позволит подобрать пароль за достаточно
короткое время.
Пример сильного пароля:
%Ji92a*jpeijAjdkkjw
Однако у такого пароля появляется другой недостаток — он очень плохо
запоминается. Его придется записывать, а это создает угрозу для безопасности.
Вместо этого можно выбрать фразу и записать ее с чередованием регистра символов:
i Luv2c0mputePrimez!
Такой пароль не подбирается обычным перебором словаря.
СОВЕТ
Пробелы в паролях также повышают их защищенность.
Через определенный промежуток времени пароли обязательно должны
меняться. На большинстве защищенных сайтов смена пароля обычно происходит
каждые 90 дней. Повторное использование паролей запрещено, поскольку оно
также создает риск для системы безопасности.
Чтобы проверить устойчивость сильных паролей, выделите тестовый
компьютер (не содержащий ценной информации и отключенный от сети) и создайте
на нем фиктивные учетные записи с разной защитой паролей — одни пароли
должны легко подбираться, другие должны обладать разными уровнями защиты.
Существуют специальные программы, проверяющие продолжительность подбора
пароля. В табл. 40.1 приведены некоторые бесплатные программы-взломщики,
предназначенные для проверки качества паролей.
Таблица 40.1. Взломщики паролей
Программа Адрес
Crack http://www.cs.purdue.edu/COAST
LOphtchrack http://www.IOpht.com
John the Ripper http://www.openwall.com/john/
Ограничение доступа к паролям
Пароли должны храниться в зашифрованном файле или базе данных, чтобы
пользователи не могли читать пароли других пользователей и входить в систему
под их именами.
Пароли хранятся в различных местах в зависимости от операционной системы.
Примеры приведены в табл. 40.2.
Таблица 40.2. Способы хранения паролей в разных операционных системах
Операционная система Место хранения паролей
Windows NT Системный реестр
Unix /etc/passwd или/etc/shadow
Файл паролей необходимо защитить соответствующей настройкой
разрешений и принадлежности. Например, в Unix файл паролей должен быть доступен
только для суперпользователя root, а если пароли хранятся в теневом файле —
чтение этого файла должно быть разрешено только root и запрещено всем
остальным пользователям.
В более защищенных версиях Unix — таких, как HP-UX CMW и Bl Solaris —
пароли хранятся в базах данных или в разных файлах. Это сделано для того,
чтобы злоумышленник, получивший доступ к одному файлу, не смог получить
все пароли одновременно.
Сетевая безопасность
Повседневная работа по обеспечению сетевой безопасности всегда вызывает
наибольшие трудности, поскольку пользователи должны усвоить правила
безопасности и соблюдать их. К сожалению, многие пользователи нарушают эти правила,
хотя сами только выигрывают от них. Впрочем, существуют приемы,
позволяющие обеспечить необходимый уровень безопасности и даже повысить его.
Типы атак
Классификация, принятая в области сетевой безопасности, включает несколько
типов атак, которые рассматриваются в следующих разделах.
Троянские программы
Троянские программы имитируют полезные функции, но в действительности
они собирают информацию для хакера. Например, злоумышленник может
установить троянскую программу входа в сеть; программа запрашивает имя
пользователя и пароль и выдает сообщение об ошибке. Полученная информация
отправляется по электронной почте злоумышленнику.
Троянские программы не ограничиваются сбором информации — они
причиняют реальный вред, хотя и маскируются под «добропорядочные» программы.
Троянские программы не размножаются, поэтому с технической точки зрения
они не относятся к вирусам.
Черные входы
«Черные входы» скрываются в программах и операционных системах. Обычно
их существование остается неизвестным для широкой публики.
Злоумышленник получает доступ к системе через «черный вход», обходя действующие меры
безопасности.
Отказ от обслуживания
Атаки отказа от обслуживания (DoS, Denial of Service) либо полностью выводят
из строя сетевую службу (например, web-сервер), либо значительно замедляют
ее работу, вызывая крайнее раздражение у пользователей.
Сетевые атаки
К числу сетевых атак относится сканирование открытых портов. Например,
порт 5641 в Windows NT/2000 и Windows 9x используется PCAnywhere для по-
лучения имени пользователя и пароля. Злоумышленник может методом
«грубой силы» подобрать имя пользователя и пароль или воспользоваться «черным
входом» PCAnywhere.
Фальсификация
Используя прием фальсификации (spoofing), злоумышленник пытается выдать
себя за пользователя или хост, которым он в действительности не является.
Одним из самых серьезных недостатков берклиевских r-команд была их
«легковерность». R-команды полностью доверяли имени хоста и не пытались убедиться
в том, что обращение исходит именно от того компьютера.
Однако имя хоста и пользователя было нетрудно сфальсифицировать.
Например, имя внешнего хоста заменялось именем доверенной внутренней системы.
К сожалению, не существовало средств, которые бы позволяли убедиться в том,
что подключение действительно исходит от доверенной системы.
Злоумышленники фальсифицировали имена хостов и обманывали г-команды.
ПРИМЕЧАНИЕ
Современные маршрутизаторы обладают средствами проверки IP-адресов, предотвращающими
подобные атаки, но на имена хостов проверка не распространяется. В системе безопасности
можно определить правила, запрещающие входящие подключения к г-командам.
Взлом паролей
Если нападающему удастся заполучить файл паролей или копию реестра NT/2000,
он может найти в Интернете бесплатные программы для взлома паролей.
Располагая достаточным запасом времени, рано или поздно он вскроет хотя бы один
пароль и получит доступ к компьютеру.
Дефекты программ и переполнение буфера
Один из распространенных методов атаки основан на использовании дефектов
программ, позволяющих получить права суперпользователя или администратора.
Для этого программе передается слишком большой объема данных, в результате
чего программа «давится» и выдает дамп памяти. Такой прием называется
переполнением буфера.
Многие сетевые программы (таких, как sendmail и NFS) содержат
многочисленные дефекты и относятся к категории небезопасных сетевых приложений.
ПРИМЕЧАНИЕ
Кроме sendmail существуют и другие программы для работы с SMTP — например, защищенный
почтовый сервер qmail. За дополнительной информацией обращайтесь на сайт http://www.qmail.org/.
Система NFS также недостаточно хорошо защищена, но у нее имеется альтернатива — AFS (Andrew
File System). За дополнительной информацией о AFS обращайтесь по адресу http://www.faqs.org/
faqs/afs-faq/.
Ошибки при назначении разрешений
При неправильно назначенных разрешениях файлов в Unix и Windows NT/2000
злоумышленник может запустить программу с правами root (или администратора),
устроить сбой системы или использовать дефект программы. Запуск
приложения с неправильными разрешениями также позволяет использовать систему или
получить особые привилегии.
Если суперпользователю или администратору принадлежит файл, запись в
который может осуществляться другими пользователями, злоумышленник может
изменить содержимое файла и предоставить локальному или удаленному
пользователю особые привилегии без ведома администратора.
Вирусы
Вирусом называется программа, которая тайно внедряется в другие программы.
Единственной целью вируса обычно является причинение вреда компьютеру —
перепрограммирование раскладки клавиатуры, уничтожение содержимого
жесткого диска или стирание файлов определенного типа.
Многие компании выпускают антивирусные программы. Эффективная
работа антивирусных программ требует регулярного (по крайней мере ежемесячного)
обновления баз данных с информацией о вирусах.
Впрочем, в последнее время вирусы вызвали настоящее массовое
помешательство в интернет-сообществе. Практически любая проблема немедленно
приписывается воздействию вируса. Многие программы (например, Netbus и Back
Orifice), относящиеся к классу троянских программ и «черных входов», также
считаются вирусами. Хотя с технической точки зрения эти программы не
являются вирусами, производители антивирусных программ своевременно
обнаруживают их и предотвращают многочисленные проблемы, способные парализовать
работу системы. Некоторые организации используют сразу несколько программ-
детекторов в надежде, что если вирус не будет обнаружен одной программой, то
с ним справятся другие программы.
Социотехника
Из всех видов сетевых атак сложнее всего бороться с приемами социотехники,
использующими самое слабое звено сетевой безопасности — человека.
Например, злоумышленник может позвонить в службу поддержки, притвориться
пользователем и уговорить администратора сообщить пароль по телефону.
К социотехнике также относится подкуп или обман работников, в результате
которого они предоставляют злоумышленнику свои данные доступа или
оставляют его наедине со своим компьютером. Иногда для получения доступа к
компьютерам злоумышленник может прикинуться курьером, уборщиком и т. д. Хорошие
примеры использования социотехники для получения доступа к сети
встречаются в фильмах «Тихушники», «Миссия невыполнима» и др.
Меры, обеспечивающие сетевую безопасность
В этом разделе даны некоторые рекомендации по обеспечению сетевой
безопасности. Помните, что уровень безопасности зависит от многих факторов, но в
первую очередь от времени, людей и вашего желания обеспечить себе спокойную
жизнь в роли администратора.
Обучение и переподготовка пользователей
Хотите — верьте, хотите — нет, но обучение персонала вносит самый заметный
вклад в обеспечение сетевой безопасности. Вы должны позаботиться о том, чтобы
все работники (и новые, и старые) знали правила сетевой безопасности и
соблюдали их. Если соблюдение этих правил станет одним из принципов
корпоративной культуры, вы сможете заняться и такими вещами, как защита паролей,
хранение смарт-карт и личных ключей в надежных местах и предотвращение
обмена конфиденциальными данными среди пользователей.
Сторожевые системы
Сторожевые системы обнаруживают подозрительный сетевой трафик, помогают
выявить атаки отказа в обслуживании и нестандартные пакеты типа Windows
ООВ (Out of Bounds), приводящие к сбою системы. Сторожевые пакеты
помогают выявить атаки на вашу систему. В табл. 40.3 приведены примеры
сторожевых пакетов.
Таблица 40.3. Сторожевые системы
Система Адрес
Network Flight Recorder http://www.nfr.com
RealSecure http://www.iss.net
NetProwler http://www.symantec.com
Проверка на проникновение
Проверкой на проникновение называется попытка проникнуть в систему через
известные дефекты в системе безопасности. Это самый эффективный способ
убедиться в безопасности сети; консультирующие фирмы, занимающиеся
проверкой систем на проникновение, обычно прибегают к услугам тех же хакеров.
Даже если вы не пользуетесь услугами таких фирм, обязательно проведите хотя
бы минимальную проверку на проникновение и убедитесь в отсутствии
очевидных дефектов в системе безопасности.
В Интернете можно найти многочисленные программы, выполняющие
проверку на проникновение. На многих web-сайтах представлен хакерский код,
который вы можете загрузить и откомпилировать в своей системе.
Эксперты в области безопасности также предлагают коммерческие и
бесплатные программы. Примеры приведены в табл. 40.4.
Таблица 40.4. Программы для проверки на проникновение
Программа Адрес
Internet Security Scanner http://www.iss.net
SATAN http://www.fish.com/satan/
Nessus http://www.nessus.org
Cybercop http://www.nai.com
Проверка целостности файлов
Один из базовых способов выявления постороннего проникновения в систему
основан на проверке изменений файлов. Существуют многочисленные
программы, выявляющие изменения в файловой системе или отдельных файлах. Такие
программы помогут узнать, что именно было изменено и кто внес изменения —
системный администратор или злоумышленник, проводящий атаку на систему.
В табл. 40.5 приведены примеры программ для проверки целостности файлов.
Таблица 40.5. Программы для проверки целостности файлов
Программа Адрес
Tripwire http://www.tripwiresecurity.com
COPS http://www.cerias.purdue.edu/coast/
Tiger http://www.cerias. purdue.edu/coast/
System Scanner http://www.iss.net
Отслеживание журналов
Самый простой и дешевый способ выявления атак — отслеживание журналов
и поиск сведений о подозрительных операциях. К сожалению, это исключительно
долгое и утомительное занятие. Другая проблема с проверкой журналов
заключается в том, что вы не сможете доказать, что журналы не были изменены. Если
злоумышленник получил привилегированный доступ к компьютеру, он сможет
внести изменения в журналы и замести следы.
Настройка приложений
Правильная настройка сетевых приложений играет важную роль в обеспечении
общей безопасности сети. В частности, следует твердо запомнить ряд важных
советов:
О Используйте только те приложения, которые вам абсолютно необходимы.
О Отключите все, без чего можно обойтись.
О Как можно лучше защитите выполняемые приложения.
О Главная функция сетей — предоставление доступа. Любое обращение к
вашей сети приподнимает «железный занавес» и создает опасность
постороннего проникновения в сеть.
Демон Интернета и файл /etc/inetd.conf
Многие сетевые приложения Unix могут быть отключены в файле /etc/inetd.conf.
Файл /etc/inetd.conf определяет, какие демоны сетевых приложений запускаются
супердемоном Интернета inetd.
ПРИМЕЧАНИЕ
Демон inetd и файл /etc/inetd.conf также рассматриваются в главе 39.
В только что установленной системе файл /etc/inetd.conf выглядит примерно так:
#
# Авторы: Оригинал позаимствован из BSD Unix 4.3/TAHOE.
# Фред Н.ван Кемпен, <waltje@uwalt.nl.mugnet.org>
#
echo stream tcp nowait root internal
echo dgram udp wait root internal
discard stream tcp nowait root internal
discard dgram udp wait root internal
daytime stream tcp nowait root internal
daytime dgram udp wait root internal
chargen stream tcp nowait root internal
chargen dgram udp wait root internal
time stream tcp nowait root internal
time dgram udp wait root internal
# Стандартные службы
#
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -1 -a
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
#
# Shell, login, exec, comsat и talk -- протоколы BSD.
#
shell stream tcp nowait root /usr/sbin/tcpd in.rshd
login stream tcp nowait root /usr/sbin/tcpd in.rlogind
#exec stream tcp nowait root /usr/sbin/tcpd in.rexecd
#comsat dgram udp wait root /usr/sbin/tcpd in.comsat
talk dgram udp wait root /usr/sbin/tcpd in.talkd
ntalk dgram udp wait root /usr/sbin/tcpd in.ntalkd
#dtalk stream tcp wait nobody /usr/sbin/tcpd in.dtalkd
#
# Pop,imap и другие почтовые службы
#
#рор2 stream tcp nowait root /usr/sbin/tcpd ipop2d
pop2 stream tcp nowait root /usr/sbin/tcpd ipop3d
imap stream tcp nowait root /usr/sbin/tcpd imapd
#
В этом фрагменте любая строка, не начинающаяся с символа комментария #,
определяет активное сетевое приложение, запускаемое демоном inetd. Если вы
хотите, чтобы из всех демонов сетевых приложений в системе запускались только
демоны FTP и Telnet, файл /etc/inetd.conf принимает следующий вид:
#
# Авторы: Оригинал позаимствован из BSD Unix 4.3/TAHOE.
# Фред Н.ван Кемпен, <waltje@uwalt.nl.mugnet.org>
#
#echo stream tcp nowait root internal
#echo dgram udp wait root internal
#discard stream tcp nowait root internal
#discard dgram udp wait root internal
#daytime stream tcp nowait root internal
#daytime dgram udp wait root internal
#chargen stream tcp nowait root internal
#chargen dgram udp wait root internal
#time stream tcp nowait root internal
#time dgram udp wait root internal
# Стандартные службы
#
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -1 -a
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
#
# Shell, login, exec, comsat и talk -- протоколы BSD.
#
#shell stream tcp nowait root /usr/sbin/tcpd in.rshd
#login stream tcp nowait root /usr/sbin/tcpd in.rlogind
#exec stream tcp nowait root /usr/sbin/tcpd in.rexecd
#comsat dgram udp wait root /usr/sbin/tcpd in.comsat
#talk dgram udp wait root /usr/sbin/tcpd in.talkd
#ntalk dgram udp wait root /usr/sbin/tcpd in.ntalkd
#dtalk stream tcp wait nobody /usr/sbin/tcpd in.dtalkd
#
# Pop.imap и другие почтовые службы
#
#рор2 stream tcp nowait root /usr/sbin/tcpd ipop2d
#pop2 stream tcp nowait root /usr/sbin/tcpd ipop3d
#imap stream tcp nowait root /usr/sbin/tcpd imapd
#
После того как все лишние строки будут закомментированы, из всех сетевых
приложений остаются работать только FTP и Telnet. Все заведомо
небезопасные службы (echo, login, shell, finger и т. д.) отключаются, и никто не сможет
проникнуть через них на ваш компьютер.
ПРИМЕЧАНИЕ
Учтите, что Telnet и FTP не являются защищенными протоколами. Они пересылают пароли в
текстовом виде, и эта информация может быть легко перехвачена программой-шпионом.
Программы шифрования
Один из способов защиты передачи данных TCP/IP основан на применении
программ шифрования. К этой категории относится программное обеспечение SSL
(Secure Sockets Layer) для шифрования трафика HTTP; SSH (Secure Shell) для
шифрования терминального трафика и трафика X; VPN (Virtual Private Network)
для создания туннельных каналов между двумя удаленными сайтами в Интернете
или клиентом, подключающимся к основному сайту организации через Интернет.
Технологии SSL и SSH используются для создания защищенных туннелей,
по которым передается трафик других приложений, в том числе РОРЗ, ШАР
и FTP. Аутентификация в SSL и SSH обычно основана на применении
шифрования с открытым ключом (например, RSA или DSA), а шифрование
осуществляется при помощи симметричных шифров (DES, Triple DES и IDEA).
Виртуальные частные сети (VPN) обычно обеспечивают безопасную пересылку
незащищенного трафика между двумя точками. Например, процедура
совместного доступа к файлам, крайне ненадежная по своей природе, защищается при
помощи VPN, при этом вам не приходится заново переписывать сетевое
приложение в защищенном варианте.
ПРИМЕЧАНИЕ
Дополнительную информацию о SSH можно найти по адресу http://www/employees.org/~satch/
ssh/faq. За информацией о SSL обращайтесь по адресу http://psych.psy.uq.oz.au/~ftp/Crypto/, а за
информацией о виртуальных частных сетях (VPN) — по адресу http://www.vpnc.org/.
TCP Wrappers
Для защиты сетевых приложений также применяется технология TCP Wrappers,
предназначенная для отслеживания и ограничения доступа к сетевым
приложениям, запущенным inetd.
Прежде чем использовать демонов сетевых приложений с TCP Wrappers,
необходимо сначала убедиться в том, что пакет установлен в системе и правильно
настроен.
Чтобы установить TCP Wrappers, распакуйте архив tar и выполните команду
make:
# gzip -de tcp_wrappers-7.6.tar.gz | tar -xvf -
#cd tcp_wrappers-7.6
#make
Далее следуйте инструкциям по установке TCP Wrappers в вашей системе.
После завершения установки следует настроить файлы /etc/inetd.conf, /etc/
hosts.deny и /etc/hosts.allow. Два последних файла используются TCP Wrappers
для контроля доступа. Чтобы использовать TCP Wrappers, следует запустить
демонов сетевых приложений программой tepd.
Типичная запись сетевого приложения в файле /etc/inetd.conf выглядит так:
netappd stream tcp nowait root /usr/sbin/tcpd netappd
При каждом запросе SSH (Secure Shell) для netappd порождается новый процесс.
Допустим, в соответствии с условиями предыдущего примера вы хотите
ограничиться запуском FTP и Telnet. В исходном варианте демон FTP запускался
следующей командой:
ftp stream tcp nowait root /usr/sbin/in.ftpd in.ftpd -1 -a
Чтобы демон FTP запускался под управлением TCP Wrappers, команда должна
выглядеть так:
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -1 -a
Файл /etc/hosts.deny настраивается таким образом, чтобы никто не мог
получить доступ к системе через приложения TCP Wrappers (тем самым
предотвращается доступ со всех хостов, не перечисленных в файле /etc/hosts.allow).
Соответствующая запись /etc/hosts.deny выглядит так:
ALL : ALL
После создания /etc/hosts.deny необходимо добавить новые записи в /etc/hosts,
allow. Простой файл /etc/hosts.allow для запуска демонов FTP и Telnet под
контролем TCP Wrappers выглядит примерно так:
in.ftpd: example.com: allow
in.telnetd: example.com: allow
Доступ предоставляется только клиентам из домена example.com.
Базовый формат записи /etc/hosts.allow и /etc/hosts.deny выглядит так:
демоны: клиенты: allow/deny
В следующем примере мы не доверяем клиентам из домена evil.org. В файл
/etc/hosts.deny включается следующая запись:
in.fingerd: evil.org: deny
ПРИМЕЧАНИЕ
За дополнительной информацией о TCP Wrappers обращайтесь на сайт ftp://ftp.porcupine.org/
pub/security.
Порты
Порты используются службами Unix и Windows NT/2000 для приема запросов.
Если злоумышленник ищет в системе открытые порты, он обычно проверяет,
какой тип приложения работает на соответствующем порте. Через
незащищенный порт можно получить несанкционированный доступ к системе или
«затопить» ее пакетами и устроить атаку отказа в обслуживании.
Брандмауэры
Брандмауэром называется контрольная точка сети, фильтрующая сетевой
трафик по типам сетевых приложений. Большинство брандмауэров работает только
в сетях TCP/IP, хотя некоторые продукты могут работать и в других сетях
(например, в сетях IPX).
Информация о фильтруемом трафике регистрируется в журнале.
Администратор всегда может узнать, какие приложения работают в настоящий момент
и какие пакеты были отвергнуты или не выпущены брандмауэром из сети. Во
многих брандмауэрах имеются встроенные определения типов трафика,
пропускаемых брандмауэром.
ПРИМЕЧАНИЕ
Брандмауэр может пропускать трафик незащищенных служб (таких, как NFS и берклиевские г-ко-
манды), однако при настройке конфигурации эти службы рекомендуется отключить.
Брандмауэр обеспечивает лишь тот уровень безопасности, который вы сами
определите. Проследите за тем, чтобы незащищенные приложения были
заблокированы — прохождение незащищенного трафика противоречит основным
целям установки брандмауэра.
Пакетные фильтры
Пакетный фильтр проверяет пакет и убеждается в том, что он передается
допустимому порту. Содержимое пакета при этом не проверяется. Например,
маршрутизатор может фильтровать пакеты и разрешать входной и выходной трафик
для заданного набора портов. Хотя пакетные фильтры игнорируют содержимое
пакетов, они обладают превосходным быстродействием.
Шлюзы приложений
Шлюз приложения не ограничивается проверкой порта и проверяет все
содержимое пакета, в том числе и тип приложения, для которого предназначается
пакет. Увеличение объема проверяемой информации приводит к тому, что шлюзы
приложений работают значительно медленнее пакетных фильтров и хуже
масштабируются.
Многие шлюзы приложений обладают дополнительными возможностями —
поддержкой VPN, интеграцией со сторожевыми системами и управлением
маршрутизаторами.
Шлюзы приложений не могут выяснить, какому приложению передаются
зашифрованные пакеты SSH (Secure Shell) и SSL (Secure Sockets Layer). В этом
случае функции шлюза приложения фактически сводятся к простой
фильтрации пакетов.
Приложения-фильтры
В продуктах Checkpoint, Novell Board Manager и Cisco PIX используется
механизм проверки с состоянием (stateful inspection), которая представляет собой
гибрид шлюза приложения и пакетного фильтра. Этот механизм анализирует
содержимое пакета, но не так подробно, как шлюзы приложений.
ПРИМЕЧАНИЕ
Брандмауэры рассматриваются в главе 20.
Итоги
Защита пересылки данных TCP/IP в значительной мере зависит от четкого
определения того, какой трафик должен считаться допустимым. Ключевым
фактором защиты является контрольная точка, ограничивающая входной и выходной
трафик по определенному критерию.
В процессе настройки системы защиты администратор выбирает сетевые
службы, которые должны работать в системе.
Хотя многие сетевые приложения считаются незащищенными, существуют
специальные технологии, обеспечивающие безопасность пересылки данных —
SSH, SSL и VPN. Применение этих технологий защищает от программ-шпионов
и перехвата сеансов.
Л 4 Инструментарий
Тг JL и методы диагностики
Бернард Мак-Карго (Bernard McCargo)
Большинство проблем возникает из-за простых причин, поэтому четкое
понимание проблемы часто приводит к ее решению. К сожалению, это не всегда так,
поэтому в этой главе будут описаны некоторые средства, помогающие в
решении особо трудных проблем. Существует множество диагностических программ,
от коммерческих систем со специализированным оборудованием и программами
стоимостью в несколько тысяч долларов до бесплатных утилит,
распространяемых через Интернет. В этой главе в основном рассматриваются бесплатные или
«встроенные» средства диагностики.
Наш выбор объясняется несколькими причинами. Во-первых, дорогие
коммерческие системы должны содержать полную документацию. Во-вторых, для
многих администраторов коммерческие решения слишком дороги, а бесплатные
программы доступны для всех. Наконец, бесплатные диагностические программы
решают многие сетевые проблемы. Вероятно, для больших сетей понадобятся
коммерческие программы TDR (Time Domain Reflectometer), но в малой сети
вполне достаточно общедоступных диагностических программ.
Инструменты, упоминаемые в этой главе (а также многие другие), описаны
в RFC 1147.
Наблюдение за состоянием сети
Чтобы правильно подойти к решению проблемы, необходимо в общих чертах
представлять себе, как отслеживается состояние сети. Без системы сетевого
мониторинга (встроенной или внешней) диагностика сетевых проблем будет
занимать очень много времени.
Наблюдение за состоянием сети иногда позволяет выполнять упреждающие
операции сопровождения еще до появления проблемы. А если проблема все же
возникнет, у администратора будет подробная и точная информация о
происходящем. Получив сообщение о проблеме, просмотрите журналы системы сетевого
мониторинга. Выясните, какое приложение вызвало сбой. Узнайте имя и IP-адрес
удаленного хоста и данные пользователя. Как выглядело сообщение об ошибке?
Пусть пользователь попытается снова запустить проблемное приложение на своем
компьютере. Если возможно, воспроизведите проблему в тестовой системе.
Стандартные утилиты
В этой главе (а также на страницах книги) рассматриваются следующие
стандартные утилиты:
О ifconfig. Информация о базовой конфигурации интерфейса. Используется для
обнаружения неправильных IP-адресов, масок подсетей и адресов
широковещательной рассылки. Утилита входит в комплект поставки операционной
системы Unix. В Windows NT/2000 аналогичная утилита называется ipconfig,
а в Windows 9х — winipcfg.
О агр. Информация о преобразования адресов Ethernet/IP. Используется для
обнаружения в локальном сегменте сети систем с неправильными
IP-адресами. Утилита существует в системах Windows и Unix.
О netstat. Разнообразная информация о сети. Обычно используется для вывода
подробной статистики о сетевых интерфейсах, сокетах и таблицах
маршрутизации. Утилита существует в системах Windows и Unix.
О ping. Проверка связи с удаленным хостом. Кроме того, утилита выводит
статистику о потере пакетов и времени доставки.
О nslookup. Вывод информации о службе имен DNS.
О dig. Вывод информации о службе имен, аналог nslookup. Утилита dig доступна
на анонимном сайте FTP venera.isi.edu в файле pub/dig.2.0.tar.Z.
О ripquery. Вывод информации о содержимом пакетов обновления RIP,
получаемых или передаваемых системой. Входит в пакет gated, но не требует запуска
демона gated. Работает в любой системе, использующей RIP.
О traceroute. Трассировка маршрута к удаленной системе с выводом информации
о каждом переходе. Утилита доступна на анонимном сайте FTP ftp.ee.lbl.gov
в файле traceroute.tar.Z. Версия для Windows NT/2000 называется tracer!
О etherfind. Анализатор протокола TCP/IP с возможностью просмотра
содержимого пакетов и заголовков. Чрезвычайно полезен для диагностики проблем,
связанных с работой протоколов. Версия для SunOS называется tcpdump и
распространяется с анонимного сайта FTP ftp.ee.lbl.gov.
О ethereal. Высококачественный анализатор протокола TCP/IP с возможностью
просмотра содержимого пакетов и заголовков. Программа была
адаптирована для Windows и большинства операционных систем семейства Unix. За
дополнительной информацией обращайтесь на сайт www.ethereal.com.
В этой главе будут рассмотрены примеры использования всех перечисленных
программ, включая те, которые встречались ранее на страницах книги. Начнем
с утилиты ping, которая используется чаще любой другой диагностической
программы.
Проверка базового соединения
Команда ping проверяет, может ли ваш компьютер связаться с удаленным хостом.
Эта простая функция чрезвычайно полезна для проверки сетевых соединений
независимо от того, в каком сетевом приложении возникла исходная проблема.
Ping помогает выяснить, где следует искать проблему — на уровне сетевого
соединения (нижний уровень) или на уровне приложений (верхний уровень).
Если утилита ping показывает, что пакеты успешно передаются в удаленную
систему и обратно, вероятно, проблема обусловлена работой верхних уровней.
Если пакету не удается пройти туда и обратно, скорее всего, в этом виноваты
нижние уровни.
Пользователи довольно часто сообщают о сетевых проблемах, утверждая, что
им не удается связаться через telnet (ftp, по электронной почте и т. д.) с
удаленным хостом. Естественно, при этом «раньше все работало нормально». В
ситуациях, когда возникает сомнение в самой возможности связи с удаленным хостом,
утилита ping приносит несомненную пользу.
Выполните команду ping с указанием имени хоста, сообщенного
пользователем. Если команда ping работает нормально, предложите выполнить ее
пользователю. Если попытка окажется успешной, дальнейшие усилия следует
направить на анализ конкретного приложения, с которым работает пользователь.
Может быть, пользователь пытается связаться через telnet с хостом,
поддерживающим только анонимный доступ ftp, или хост был недоступен в тот момент.
Пусть пользователь попробует еще раз, пока вы внимательно следите за всем,
что он делает. Если все делается правильно, но приложение все равно не
работает, проанализируйте трафик приложения при помощи etherfind. Возможно,
к работе придется привлечь администратора удаленной системы.
Если на вашем компьютере ping работает нормально, а на компьютере
пользователя происходит сбой, проверьте конфигурацию пользовательской системы
и другие различия на пути от пользовательской системы к удаленному хосту
(по сравнению с путем от вашей системы).
Если на вашем компьютере команда ping тоже не работает, обратите особое
внимание на сообщения об ошибках. Сообщения об ошибках, выводимые ping,
содержат полезную информацию для планирования дальнейших тестов.
Подробности изменяются в зависимости от реализации, но базовых типов ошибок немного.
О unknown host. Имя удаленного хоста не удается преобразовать в IP-адрес.
Возможные причины — сбой на сервере имен (локальном или на сервере
удаленной системы), ошибка в имени или сбои в сети между вашей системой
и удаленным хостом. Если IP-адрес удаленного хоста известен, попробуйте
связаться с ним утилитой ping. Если связь с хостом по IP-адресу
устанавливается, значит, проблема связана со службой имен. Проверьте локальный
и удаленный серверы имен утилитами nslookup и dig и убедитесь в
правильности хостового имени, предоставленного пользователем.
О network unreachable. Локальной системе неизвестен маршрут к удаленной
системе. Если в командной строке ping вводился числовой IP-адрес, повторите
команду ping с хостовым именем. Тем самым исключается вероятность ошибок
при вводе IP-адресов (а также того, что IP-адрес был сообщен вам неверно).
Если в системе используется протокол маршрутизации, убедитесь в том, что
он работает, и проверьте таблицу маршрутизации командой netstat. Если
используется протокол RIP, проверьте содержимое обновлений RIP командой
ripquery. Если используется статический маршрут по умолчанию, попробуйте
перезагрузить его. Если на хосте все выглядит нормально, переходите к
поиску проблем с маршрутизацией на основном шлюзе.
О по answer. Удаленная система не отвечает. Сообщение в том или ином
варианте присутствует в большинстве сетевых утилит. Некоторые реализации ping
выводят сообщение 100% packet loss; telnet выводит сообщение Connection timed
out, a sendmail — сообщение error cannot connect. Все эти ошибки означают одно
и то же: локальная система знает маршрут к удаленной системе, но не
получает ответа от удаленной системы ни на один отправленный пакет.
О Проблема возникает по разным причинам — из-за недоступности удаленного
хоста, неправильной настройки локального или удаленного хоста,
недоступности шлюза или сбоя канала между удаленным и локальным хостом,
проблем с маршрутизацией на удаленном хосте и т. д. Только дополнительное
тестирование может выявить причины проблемы. Тщательно
проанализируйте локальную конфигурацию при помощи netstat и ifconfig. Проверьте
маршрут к удаленной системе командой traceroute. Свяжитесь с
администратором удаленной системы и сообщите ему о возникшей проблеме.
Утилиты, упомянутые в этом разделе, будут рассмотрены ниже. Но прежде
чем переходить к другим утилитам, давайте поближе познакомимся с командой
ping и той статистикой, которую она выводит.
Команда ping
Общий синтаксис командной строки ping выглядит так:
ping хост [размер_пакета] [счетчик]
Аргумент хост содержит хостовое имя или IP-адрес проверяемого удаленного
хоста. Обычно указывается имя или адрес, занесенные пользователем в отчет
о неисправностях.
Аргумент размерjnaxema определяет размер тестовых пакетов в байтах и
является обязательным только при использовании поля счетчик. По умолчанию
размер пакета равен 56 байтам.
Аргумент счетчик определяет количество пакетов, передаваемых в процессе
тестирования. Если значение поля счетчик окажется слишком большим, команда
ping будет пересылать тестовые пакеты до тех пор, пока ее работа не будет
прервана (обычно комбинацией клавиш Ctrl+C). Излишек тестовых пакетов
приводит к неэффективному использованию пропускной способности канала и
системных ресурсов. Обычно для проверки достаточно пяти пакетов.
Чтобы убедиться в том, что хост uunet.uu.net доступен с рабочей станции
bernard, мы передаем пять 56-байтовых пакетов следующей командой:
% ping -s uunet.uu.net 56 5
PING uunet.uu.net: 56 data bytes
64 bytes from uunet.UU.NET A37.39.1.2): icmp_seq=0. Time=14. ms
64 bytes from uunet.UU.NET A37.39.1.2): icmp_seq=0. Time=14. ms
64 bytes from uunet.UU.NET A37.39.1.2): icmp_seq=0. Time=14. ms
64 bytes from uunet.UU.NET A37.39.1.2): icmp_seq=0. Time=14. ms
64 bytes from uunet.UU.NET A37.39.1.2): icmp_seq=0. Time=14. ms
uunet.UU.NET PING Statistics
5 packets transmitted. 5 packets received, 0% packet loss
round-trip (ms) min/avg/max=12/13/15
Хост bernard является рабочей станцией Sun, и мы хотим получить
статистику на уровне отдельных пакетов, поэтому в командную строку включен
параметр -s. Без него команда ping в Sun-версии выведет только сводную строку
uunet.uu.net is alive. Другие реализации ping по умолчанию выводят полную
статистику и не требуют ключа -s.
Проверка показывает наличие быстрой связи с хостом uunet.uu.net по
глобальной сети, без потери пакетов и с быстрым откликом. Цикл «запрос/ответ» между
хостами bernard и uunet.uu.net в среднем занимает всего 13 миллисекунд. Для
глобальной сети обычно более характерен небольшой процент потери пакетов
с примерно на порядок большим временем отклика. Статистика, выводимая
командой ping, помогает выявить низкоуровневые сетевые проблемы. В нее
включаются следующие основные показатели:
О Последовательность получения пакетов, определяемая порядковым номером
ICMP (icmp_seq) для каждого пакета.
О Время отклика (указывается в миллисекундах после строки time=).
О Процент потери пакетов (выводится в строке сводной информации в конце
выходных данных ping).
Если процент потери пакетов велик, время отклика очень велико, а пакеты
прибывают с нарушением исходного порядка, это может свидетельствовать о
физических сбоях сети. Если такие условия наблюдаются при попытке установить
связь на огромных расстояниях в глобальной сети, беспокоиться не о чем.
Протокол TCP/IP проектировался для работы в условиях ненадежных сетей, а для
некоторых глобальных сетей характерен высокий процент потери пакетов. Но
если подобные симптомы возникают в локальной сети, значит, происходит что-то
неладное.
В пределах кабельного сегмента локальной сети время отклика должно быть
близко к нулю, процент потери пакетов должен быть минимальным или
нулевым, а пакеты должны прибывать с сохранением исходного порядка.
Нарушение этих условий свидетельствует о проблемах в работе сетевого оборудования.
В сети Ethernet это может быть неправильное завершение кабеля, дефектный
сегмент кабеля или сбой в работе «активного» оборудования (например, репитера
или трансивера). Начните с проверки завершения кабеля, это просто —
завершающий резистор (терминатор) либо есть, либо его нет. Отсутствие терминатора
встречается весьма часто, особенно если кабель завершается в рабочей области,
доступной для пользователей.
Полезным средством выявления аппаратных проблем является рефлектометр
(TDR, Time Domain Reflectometer). Рефлектометр посылает сигнал по кабелю
и прослушивает вызванные им эхо-отклики. Информация выводится на
небольшом экране перед специалистом, выполняющим тестирование. На нормальном
графике небольшие пики отображаются только в местах подключения трансиве-
ров к сети. Рефлектометр заметно упрощает поиск дефектов в кабелях.
Результаты простого тестирования ping, даже если связь будет установлена
успешно, помогут локализовать наиболее вероятную причину возникших
проблем. Но для более подробного анализа и выяснения непосредственных причин
понадобятся более совершенные средства диагностики.
ПРИМЕЧАНИЕ
В некоторых системах (например, в Linux) команда ping выполняет обратное разрешение целевого
IP-адреса. Если DNS не работает, выполнение DNS займет много времени из-за ожидания тайм-
аута. В этом случае результаты выполнения ping лишь дезинформируют пользователя из-за долгой
задержки при тайм-ауте DNS. Чтобы этого не происходило, запускайте ping с ключом -п,
подавляющим разрешение имен.
Диагностика проблем на сетевом уровне
Сообщения no answer и cannot connect свидетельствуют об ошибках на нижнем
уровне сетевых протоколов. Если предварительная проверка указывает на
существование проблем, поиски следует сосредоточить на маршрутизации и на
сетевом уровне. В процессе диагностики на сетевом уровне используются команды
ifconfig, netstat и агр.
При вызове с одним аргументом, определяющим имя интерфейса, команда
ifconfig выводит текущие значения, назначенные этому интерфейсу. Например,
проверка интерфейса 1е0 для компьютера bernard дает следующий результат:
%ifconfig 1е0
1е0: flags-63<UP,BROADCAST,NOTRAILERS,RUNNING>
inet 128.66.12.2 netmask ffff0000 broadcast 128.66 0.0
Команда ifconfig выводит две строки. В первой строке отображается имя
интерфейса и его характеристики. Обратите особое внимание на следующие поля:
О UP — интерфейс активен и готов к использованию. Если интерфейс не активен,
активизируйте его командой ifconfig с правами суперпользователя (ifconfig leO
up). Если интерфейс не активизируется, замените сетевой кабель и повторите
попытку. Если новая попытка тоже завершается неудачей, проверьте
интерфейсное оборудование.
О RUNNING — интерфейс работает. Если интерфейс не работает, возможно, это
связано с неправильной установкой драйвера интерфейса. Системный
администратор должен проанализировать всю последовательность действий
по установке интерфейса и найти в ней ошибки или пропущенные операции.
Во второй строке выходных данных ifconfig отображается IP-адрес, маска
подсети (в шестнадцатеричном формате) и адрес широковещательной рассылки.
Проверьте содержимое этих полей и убедитесь в правильности конфигурации
сетевого интерфейса.
Команда агр
Команда агр предназначена для анализа проблем, связанных с преобразованием
IP-адресов в адреса Ethernet. В процессе диагностики особенно часто
применяются три ключа ipconfig:
О -а — вывод всех записей ARP в таблице.
О -d хост — удаление записи из таблицы ARP.
О -s хост адрес_ethernet — включение новой записи в таблицу ARP.
Ключи позволяют просмотреть текущее содержимое таблицы ARP, удалить
ошибочные записи и заменить их правильными. Возможность оперативного
исправления экономит время при поиске долгосрочных решений.
Если вы подозреваете, что таблица разрешения адресов содержит
неправильные данные, воспользуйтесь командой агр. Одним из верных признаков ошибок
в таблице ARP является сообщение о том, что на некоторую команду (ftp, telnet
и т. д.) ответил другой хост. Нерегулярно возникающие и исчезающие проблемы,
присущие только определенным хостам, также могут свидетельствовать о порче
содержимого таблицы ARP. Самая распространенная ошибка — назначение
одного IP-адреса двум системам. Хаотичный характер ошибок объясняется тем,
что запись в таблице ARP относится к хосту, быстрее ответившему на
последний запрос ARP. В некоторых случаях правильный хост отвечает быстрее.
Если вы предполагаете, что две системы используют один и тот же IP-адрес,
выведите содержимое таблицы ARP командой агр -а. Пример:
% агр -а
bernard A28.66.12.2) at 8:0:20:b:4a:71
annette A28.66.12.1) at 8:0:20:e:aa:40
bernadette A28.66.12.3) at 0:0:93:e0:80:bl
Проверка соответствия между IP-адресами и адресами Ethernet упрощается,
если у вас имеется информация о правильных адресах Ethernet всех хостов. По
этой причине администратору рекомендуется сохранять адреса Ethernet и IP
всех новых хостов, добавляемых в сеть. При наличии таких записей вы сможете
быстро найти любые ошибки в таблице.
Если таких записей нет, в диагностике проблемы вам помогут первые три байта
адреса Ethernet, определяющие производителя оборудования. Список префиксов
приведен в RFC 1340 «Assigned Numbers», раздел «Ethernet Vendor Address
Components».
В табл. 41.1 перечислены некоторые производители оборудования и
назначенные им префиксы. Например, из этой таблицы можно узнать, что первые две
записи ARP в нашем примере относятся к системам Sun (8:0:20). Если хост
bernadette тоже должен быть станцией Sun, префикс Proteon 0:0:93 укажет на то,
что маршрутизатор Proteon был ошибочно настроен с IP-адресом bernadette.
Таблица 41.1. Префиксы производителей оборудования Ethernet
Префикс Производитель Префикс Производитель
00:00:0С Cisco 08:00:0В Unisys
00:00:0F NeXT 08:00:10 AT&T
00:00:10 Sytek 08:00:11 Tektronix
00:00: ID Cabletron 08:00:14 Excelan
00:00:65 Network General 08:00:1A Data General
00:00:6B MIPS 08:00:1B Data General
00:00:77 MIPS 08:00: IE Apollo
00:00:89 Cayman Systems 08:00:20 Sun
00:00:93 Proteon 08:00:25 CDC
00:00:A2 Wellfleet 08:00:2B DEC
продолжение &
Таблица 41.1 (продолжение)
Префикс Производитель Префикс Производитель
00:00:А7 NCD 08:00:38 Bull
00:00:А9 Network Systems 08:00:39 Spider Systems
00:00:C0 Western Digital 08:00:46 Sony
00:00:C9 Emulex 08:04:47 Sequent
00:80:2D Xylogics Annex 08:00:5A IBM
00:AA:00 Intel 08:00:69 Silicon Graphics
00:DD:00 Ungermann-Bass 08:00:6E Excelan
00:DD:01 Ungermann-Bass 08:00:86 Imagen/QMS
02:07:01 MICOM/Interlan 08:00:87 Xyplex terminal servers
02:60:8C 3Com 08:00:89 Kinetics
08:00:02 3Com(Bridge) 08:00:8B Pyramid
08:00:03 ACC 08:00:90 Retix
08:00:05 Symbolics AA:00:03 DEC
08:00:08 BBN AA:00:04 DEC
08:00:09 Hewlett-Packard
Если ни проверка правильности записей, ни префиксы производителей так
и не помогут выявить источник ошибок ARP, попробуйте подключиться к
IP-адресу, указанному в записи ARP, через telnet. Если устройство поддерживает
telnet, возможно, вам удастся определить неправильно настроенный хост по
заставке, выводимой при подключении.
Проверка интерфейса командой netstat
Если тестирование наводит на мысль, что подключение к локальной сети
работает ненадежно, команда netstat -i может предоставить ценную информацию.
В следующем примере приведены выходные данные команды netstat -i:
% netstat -i
Name Mtu Net/Dest Address Ipkts Ierrs Opkts Oerrs Collis Queue
leO 1500 family.com annette 442697 2 633524 2 '50679 0
lo0 1536 loopback localhost 53040 0 53040 0 0 0
На строку интерфейса обратной связи 1о0 можно не обращать внимания.
Важна только строка «полноценного» сетевого интерфейса, причем
информация, полезная для диагностики, содержится только в пяти последних полях.
Начнем с последнего поля. Очередь (Queue) не должна содержать
неотправленных пакетов. Если интерфейс нормально работает, а система не
может доставить пакеты в сеть, можно заподозрить дефект в ответвительном кабеле
или сетевом интерфейсе. Замените кабель и проверьте, не исчезнет ли
проблема. Если проблема осталась, свяжитесь с поставщиком оборудования насчет
ремонта интерфейса.
Количество входных (Ierrs) и выходных (Oerrs) ошибок должно быть близко
к нулю. Независимо от объема трафика, проходящего через интерфейс, 100
ошибок в любом из этих полей — это слишком много. Высокое количество
выходных ошибок является признаком переполнения локального сегмента сети или
дефекта физического соединения между хостом и сетью. Высокое количество
входных ошибок указывает на переполнение сети, перегруженность локального
хоста или физический дефект сети. Физические дефекты выявляются при помощи
статистики ping или рефлектометра. Переполнение локальной сети Ethernet можно
оценить по частоте коллизий.
Высокое значение в поле количества коллизий (Collis) является обычным
явлением, но слишком большой процент выходных пакетов, приводящих к
коллизиям, указывает на переполнение сети. Если частота коллизий превышает 5
процентов, на ситуацию следует обратить пристальное внимание. Если во многих
системах, входящих в сеть, хронически наблюдаются высокие частоты коллизий,
возможно, сеть следует разделить для сокращения потоковой нагрузки.
Частота коллизий вычисляется в процентах от количества выходных
пакетов. При подсчете используется не общее количество принятых и отправленных
пакетов, а значения Opkts и Collis. Например, в выходных данных netstat из
предыдущего примера показаны 50 679 коллизий из 633 424 выходных пакетов. Таким
образом, частота коллизий составляет 8 процентов. Возможно, сеть в этом примере
подвергается чрезмерной нагрузке; проверьте статистику по другим хостам. Если
в других системах также наблюдается высокий процент коллизий, подумайте
о дальнейшем делении сети.
Проверка маршрутов
Сообщение network unreachable недвусмысленно указывает на проблемы с
маршрутизацией. Ошибки в таблице маршрутизации локального хоста легко
обнаруживаются и исправляются. Сначала команды netstat -nr и grep проверяют наличие
конечной точки в таблице маршрутизации. Следующий пример проверяет наличие
маршрута к сети 128.0.0.0:
% netstat -nr | grep '1284.84.04.0'
128.8.0.0 26.20.0.16 UG 0 37 std0
Если маршрут отсутствует в таблице маршрутизации, результат выполнения
команды будет пустым. Предположим, пользователь не может связаться через
Telnet с хостом nic.ddn.mil, а команда ping возвращает следующий результат:
% ping -s nic.ddn.m1l 56 2
PING n1c.ddn.mil: 56 data bytes
sendto: Network is unreachable
ping: wrote nic.ddn.mil 64 chars, ret=-l
sendto: Network is unreachable
ping: wrote nic.ddn.mil 64 chars, ret=-l
n1c.ddn.mil PING Statistics
2 packets transmitted, 0 packets reeived, 100% packet loss
Сообщение network unreachable означает, что мы должны проверить
таблицу маршрутизации пользователя. В данном примере ищется маршрут к хосту
nic.ddn.mil. Хосту nic.ddn.mil назначен IP-адрес 192.112.36.5, относящийся к
классу С. Помните, что маршруты состоят из адресов сетей, поэтому мы проверяем
маршрут к сети 192.112.36.0:
% netstat -nr | grep '192\.112\.36\.0'
%
Проверка показывает, что маршрут к сети 192.112.36.0 отсутствует в таблице.
Если бы маршрут был найден, утилита дгер отобразила бы его. При отсутствии
явно заданного маршрута следует произвести поиск маршрута по умолчанию.
В следующем примере этот маршрут найден успешно:
% netstat -nr | grep def
default 128.66.12.1 UG 0 101277 le0
Если netstat правильно отображает явно заданный маршрут или маршрут по
умолчанию, значит, проблема кроется не в таблице маршрутизации. В этом
случае следует проанализировать маршрут к конечной точке при помощи утилиты
traceroute, описанной ниже в этой главе.
Если netstat вопреки ожиданиям не возвращает предполагаемый маршрут,
значит, проблемы объясняются локальной ошибкой маршрутизации. Существует
два подхода к диагностике локальных ошибок маршрутизации в зависимости
от того, какой тип маршрутизации используется в системе (статическая или
динамическая маршрутизация). При использовании статической маршрутизации
отсутствующий маршрут создается командой route add. Помните, что многие
системы со статической маршрутизацией используют маршруты по умолчанию,
поэтому отсутствующий маршрут может быть маршрутом по умолчанию.
Проследите за тем, чтобы нужный маршрут включался в таблицу из стартовых
файлов при перезагрузке системы.
При использовании динамической маршрутизации проверьте, работает ли
программная поддержка маршрутизации. Например, следующая команда
проверяет работу демона gated:
% ps 'cat /etc/gated.pid'
PID TT STAT TIME COMMAND
27711 ? S 304:59 gated tep /etc/log/gated.log
Если демон маршрутизации не работает, перезапустите его и включите
режим трассировки. Трассировка позволяет выявить проблемы, приводящие к
аварийному завершению работы демона. В следующих двух разделах
рассматриваются обновления RIP и трассировка маршрутов.
Проверка обновлений RIP
Если демон маршрутизации работает нормально и локальная система
получает обновления маршрутных данных через протокол RIP (Routing Information
Protocol), проверьте обновления, получаемые от поставщиков RIP, утилитой
ripquery. Например, чтобы проверить обновления RIP, получаемые от annette
и bernadette, администратор bernard вводит следующую команду:
% ripquery -n -r annette bernadette
44 bytes from annette.family.comA28.66.12.1):
0.0.0.0, metric 3
26.0.0.0, metric 0
264 bytes from bernadette.family.comA28.66.12.3):
128.66.5.0, metric 2
128.66.3.0, metric 2
128.66.12.0, metric 2
128.66.13.0, metric 2
После первой строки с данными шлюза ripquery выводит содержимое
входящих пакетов RIP, по одной строке на каждый маршрут. Первая строка отчета
указывает, что утилита ripquery получила ответ от annette. За этой строкой следуют
еще две строки с маршрутами, полученными от annette. Хост annette
распространяет маршрут по умолчанию @.0.0.0) с метрикой 3 и свой прямой маршрут
к Milnet B6.0.0.0) с метрикой 0. Далее выводятся маршруты к другим подсетям,
полученные от хоста bernadette.
В приведенном примере утилита ripquery вызывается с двумя параметрами:
О -n — ripquery выводит все результаты в числовом виде. При вызове без
ключа -п утилита пытается преобразовать все IP-адреса в имена. Как правило,
утилиту стоит вызывать с ключом -п — выходные данные выглядят более
четко, и экономится время на разрешение имен.
О -г — для запроса данных у поставщика RIP утилита ripquery использует
команду RIP REQUEST вместо команды RIP POLL. Команда RIP POLL
поддерживается не всеми поставщиками. Вызов ripquery с ключом -г повышает
вероятность успешного ответа.
Маршруты, содержащиеся в этих обновлениях, должны соответствовать
имеющейся информации о структуре сети. В противном случае (или если утилита вообще
не возвращает информации) проверьте конфигурацию поставщиков данных RIP.
В результате ошибок в настройке маршрутизации поставщики данных RIP
начинают передавать неверную информацию. Проблемы такого рода выявляются
только посредством анализа доступной информации о конфигурации сети. Чтобы
найти ошибку, необходимо знать, как выглядят правильные данные. Не
надейтесь получить очевидные признаки типа сообщения об ошибках или явно
искаженных маршрутов.
Трассировка маршрутов
Если локальная таблица маршрутизации и поставщики данных RIP содержат
правильную информацию, вероятно, проблема возникает на некотором расстоянии
от локального хоста. Удаленные проблемы маршрутизации обычно
сопровождаются сообщениями no answer или network unreachable, однако сообщение network
unreachable не всегда свидетельствует о проблемах маршрутизации. Возможно,
удаленная сеть недоступна из-за сбоя где-то на участке между локальным и
удаленным хостом. Программа traceroute помогает находить ошибки такого рода.
Утилита traceroute трассирует маршруты пакетов UDP от локального к
удаленному хосту. Она выводит имена (если их удается определить) и IP-адреса
всех маршрутизаторов на пути к удаленному хосту.
Для отслеживания маршрута пакета к месту назначения traceroute использует
два приема: малые значения срока жизни (TTL, Time-To-Live) и
недействительный номер порта. Для обнаружения промежуточных маршрутизаторов traceroute
передает пакеты UDP с малым сроком жизни. Значение счетчика начинается с 1
и увеличивается с единичным приращением для каждой группы из трех пакетов
UDP. Получая пакет, маршрутизатор уменьшает поле TTL. Если значение падает
до нуля, пакет не пересылается дальше и отправителю возвращается сообщение
ICMP Time Exceeded. Утилита traceroute выводит одну строку выходных данных
для каждого маршрутизатора, от которого было получено сообщение Time Exceeded.
Когда приемный хост получает пакет от traceroute, он возвращает сообщение
ICMP Unreachable Port. Это происходит из-за того, что traceroute намеренно
использует недопустимый номер порта C3434) для принудительного вызова ошибки.
Когда утилита traceroute получает сообщение о недопустимом номере порта, она
знает, что пакет добрался до конечного хоста, и завершает трассировку. Таким
образом, traceroute строит список промежуточных маршрутизаторов, начиная с
расстояния в один переход и заканчивая хостом-получателем.
Следующий пример показывает результат трассировки к хосту nic.ddn.mil.
Утилита traceroute посылает три пакета с каждым значением TTL. Если пакет
остается без ответа, traceroute выводит символ *. При получении ответа traceroute
выводит имя и адрес ответившего маршрутизатора вместе с временем отклика
в миллисекундах.
% traceroute n1c.ddn.m1l
traceroute to n1c.ddn.m1l A92.112.36.5). 30 hops max, 40 byte packets
1 * pgw A29.6.80.254) 4 ms 3 ms
2 129.6.1.242 A29.6.1.242) 4 ms 4 ms 3 ms
3 129.6.2.252 A29.6.2.252) 5 ms 5 ms 4 ms
4 128.167.122.1 A28.167.122.1) 50 ms 6 ms 6 ms
5 * 192.80.214.247 A92.80.214.247) 96 ms 18 ms
6 129.140.9.10 A29.140.9.10) 18 ms 25 ms 15 ms
7 nsn.sura.net A92.80.214.253) 21 ms 18 ms 23 ms
8 GSI.NSN.NASA.GOV A28.161.252.2) 22 ms 34 ms 27 ms
9 NIC.DDN.MIL A92.112.36.5) 37 ms 29 ms 34 ms
Трассировка показывает, что маршрут включает восемь промежуточных
шлюзов, что пакеты успешно передаются до конечной цели, а время прохождения
пакетов от текущего хоста до nic.dd.mil и обратно составляет примерно 33 миллисекунды.
Из-за различий и ошибок в реализации ICMP на разных типах
маршрутизаторов, а также непредсказуемой природы перемещения дейтаграммы в сети
traceroute иногда выдает весьма странные результаты. По этой причине не стоит
слишком подробно анализировать данные traceroute. Основное внимание стоит
обратить на следующее:
О Добрался ли пакет до места назначения?
0 А если не добрался, то где он остановился?
Ниже приведена другая трассировка пути до хоста nic.ddn.mil. На этот раз
пакет не дошел до NIC.
% traceroute nic.ddn.mil
traceroute to nic.ddn.mil A92.112.36.5), 30 hops max, 40 byte packets
1 * pgw A29.6.80.254) 4 ms 3 ms
2 129.6.1.242 A29.6.1.242) 4 ms 4 ms 3 ms
3 129.6.2.252 A29.6.2.252) 5 ms 5ms 4ms
4 128.167.122.1 A28.167.122.1) 6 ms 6 ms 10 ms
5 enss.sura.net A92.80.214.247) 9 ms 6 ms 8 ms
6 t3-l.cnss58.t3.nsf.net A40.222.58.2) 10 ms 15 ms 13 ms
7 t3-0.nssl42.t3.nsf.net D02.222.142.1) 13 ms 12 ms 12 ms
8 GSI.N5N.NASA.GOV A28.161.252.2) 22 ms 26 ms 21 ms
g * * *
10* * *
29* * *
30* * *
Если программе traceroute не удается доставить пакеты в конечную систему,
трассировка обрывается и в каждой строке выводятся три звездочки до тех пор,
пока счетчик не достигнет 30. Если это произойдет, свяжитесь с
администратором удаленного хоста, с которым вы хотите связаться, и администратором
последнего шлюза, включенного в маршрут. Изложите суть проблемы; возможно,
им удастся вам помочь. В приведенном примере последний отклик на пакет был
получен от GSI.NSN.NASA.GOV. Вероятно, стоит связаться с системным
администратором этой системы и администратором nic.ddn.mjl.
Проверка службы имен
Сообщение unknown host error, возвращаемое пользователем приложения,
свидетельствует о проблемах на сервере. Проблемы серверов имен обычно выявляются
при помощи утилит nslookup и dig. По своим функциональным возможностям
утилита dig сходна с nslookup. Но прежде чем знакомиться с dig, давайте вернемся
к nslookup и посмотрим, как эта программа применяется при отладке службы имен.
При диагностике проблем с удаленными серверами имен особенно важны
следующие три основные возможности nslookup:
О поиск авторитетных серверов для удаленного домена с использованием
запроса NS;
О получение всей информации об удаленном хосте с применением запроса ANY;
О просмотр всех записей удаленной зоны командами nslookup Is и view.
Во время поиска проблем с удаленным сервером обратитесь с прямым
запросом к авторитетным серверам, возвращенным запросом NS. Не полагайтесь на
информацию, возвращаемую не-авторитетными серверами. Если проблемы имеют
нерегулярный характер, последовательно опросите все авторитетные серверы
и сравните их ответы. Возвращение удаленными серверами разных ответов на
один запрос иногда порождает хаотические проблемы разрешения имен. .
Запрос ANY возвращает все записи, относящиеся к хосту, и поэтому
предоставляет самый широкий интервал диагностической информации. Даже если вы
просто знаете, какая информация доступна (или недоступна), это поможет в
решении многих проблем. Например, если запрос возвращает запись MX, но не
возвращает запись А, нетрудно понять, почему пользователь не может связаться
с хостом через Telnet! Многие хосты доступны для электронной почты, но
недоступны для других сетевых служб. В этом случае пользователь просто
пытается связаться с удаленным хостом неподходящим способом.
Если вам не удается найти никакой информации о хосте, имя которого было
сообщено пользователем, возможно, в имени допущена ошибка. В этом случае
найти правильное имя не проще, чем найти иголку в стоге сена. К счастью, на
помощь приходит утилита nslookup. Команда nslookup Is выводит сведения об
удаленной зоне и перенаправляет листинг в файл. Затем команда nslookup view ищет
в файле имена, похожие на имя, указанное пользователем. На практике многие
проблемы возникают из-за ошибок в написании имени хоста.
Вместо nslookup для выполнения запросов к службе имен также можно
воспользоваться утилитой dig. Запросы dig обычно вводятся в виде однострочных команд,
тогда как nslookup обычно работает в интерактивном режиме. Но в целом команда
dig выполняет практически те же функции, что и nslookup, и выбор зависит в
основном от личных предпочтений. Обе программы справляются со своими задачами.
Допустим, вы хотите запросить у корневого сервера aggie.nca&t.edu записи NS
для домена jhu.edu. Введите следующую команду:
% dig @aggie.nca&t.edu jhu.edu ns
В этом примере @aggie.nca&t.edu — сервер, которому адресуется запрос.
Сервер задается по имени или IP-адресу. Если вы занимаетесь поиском проблем в
удаленном домене, укажите авторитетный сервер для этого домена. В
приведенном примере запрашиваются имена серверов домена верхнего уровня (jhu.edu),
поэтому мы обращаемся к корневому серверу.
Диагностика сетевого интерфейса
Хотя на этом уровне происходит не так уж много содержательных операций,
проблемы обычно встречаются в нижней части стека. Проблемы, возникающие
на этом уровне, делятся на четыре типа:
О Физические соединения. Сети TCP/IP, как и любые другие сети, лучше
работают при подключенных кабелях. Всегда начинайте с проверки кабеля.
О Клиенту DHCP не назначен IP-адрес. Этот факт должен быть очевиден для
пользователя, поскольку на экране выводится большое сообщение. IP-адрес
может быть получен двумя способами: либо он назначается статически, либо
динамически получается с сервера DHCP (Dynamic Host Configuration
Protocol). Полученные адреса проверяются утилитой ifconfig в Unix, winipcfg в
Windows 9х или ipconfig в Windows NT/2000.
О Проблемы ARP. При ошибках в работе протокола ARP IP-адрес не удастся
преобразовать в физический адрес MAC. Утилита агр, упоминавшаяся выше
в этой главе, проверяет правильность разрешения адресов.
О Дублирование IP-адресов в сети. Другая проблема, с которой вы также
можете столкнуться, — назначение одинаковых IP-адресов двум системам в сети.
Такого быть не должно, но если все же произойдет, при разных попытках
разрешения могут быть получены разные адреса MAC.
Проблемы ARP обычно возникают только в одном случае — при добавлении
статических записей в кэш ARP по соображениям быстродействия. При измене-
нии сетевого адаптера в системе, IP-адрес которой был введен в таблицу,
статическая загрузка данных ARP вызовет проблемы. Чтобы выявить эти проблемы,
воспользуйтесь утилитой агр.
Диагностика на сетевом уровне (IP)
Как говорилось выше, сетевой уровень отвечает за маршрутизацию пакетов. На
нем вам придется тщательно проверить IP-адрес, маску подсети и данные
основного шлюза. Помимо конфигурации также возможны проблемы с таблицами
маршрутизации и маршрутизаторами где-то между вашей системой и той
системой, с которой вы пытаетесь связаться.
Параметры конфигурации TCP/IP
Конфигурация TCP/IP определяется тремя основными параметрами: IP-адресом,
маской подсети и основным шлюзом, который обычно соответствует интерфейсу
маршрутизатора к сегменту вашей сети. В среде Windows эти параметры
настраиваются на вкладке Протоколы (Protocols) в диалоговом окне Сеть (Network),
а в системе Unix они вводятся в командной строке ifconfig. Хотя IP-адрес может
быть получен от сервера DHCP, на данный момент описание ориентируется на
значения, вводимые вручную.
Если хотя бы один из трех основных параметров TCP/IP будет введен
неправильно, связь через TCP/IP станет невозможной. Ошибки конфигурации
часто происходят из-за обычных опечаток; неверно указанный IP-адрес, маска
подсети или основной шлюз приведет к тому, что связь будет работать с
ошибками или не будет работать вообще.
Ошибки в разных конфигурационных параметрах приводят к возникновению
разных проблем. Процедуры идентификации и исправления ошибок будут
рассмотрены в нескольких следующих разделах.
Ошибки конфигурации
Иногда неверно заданный адрес TCP/IP не вызывает особых проблем. Если
адрес принадлежит к правильной подсети и не дублируется, но использует
неверно заданный идентификатор хоста, вполне вероятно, что обмен данными
с клиентом будет происходить нормально. Но если правильный IP-адрес был
введен в статический файл или базу данных, по которым имена хостов
преобразуются в IP-адреса (например, файл LMHOSTS или файл базы данных DNS),
возникнут неизбежные проблемы. Таким образом, в общем случае
неправильный IP-адрес мешает работе TCP/IP.
Неправильная конфигурация параметров TCP/IP характеризуется различными
симптомами в зависимости от конкретного параметра. Ниже кратко описаны
последствия от ошибок, допущенных в разных параметрах TCP/IP.
1Р-адрес
Адрес TCP/IP содержит два или три компонента, однозначно определяющих
сетевое подключение, которому назначен этот адрес. IP-адрес определяет как
минимум адрес сети и адрес хоста в этой сети. Кроме того, при использовании
подсетей, третья часть адреса определяет адрес подсети.
На рис. 41.1 показано, к каким последствиям приводит ошибка в сетевом адресе.
В этом примере клиенту был назначен адрес 143.168.2.9, тогда как правильный
адрес должен иметь вид 133.168.2.9. Неправильный адрес содержит
идентификатор сети 143.168.x.х, тогда как идентификатор сети правильного адреса
должен выглядеть как 133.168.х.х.
Неправильный адрес 143.168.3.9 не позволит клиенту общаться с другими
хостами TCP/IP. Поскольку идентификатор сети задан ошибочно, все пакеты,
отправляемые этим клиентом, будут передаваться по неверному маршруту.
Если хост с неправильным адресом 143.168.3.9 отправит сообщение
локальному клиенту A33.168.3.20), из конфигурации TCP/IP хоста-отправителя будет
следовать, что этот адрес является удаленным, поскольку идентификатор сети
получателя отличается от идентификатора сети отправителя. Пакет даже не
доберется до локального клиента, поскольку адрес 133.168.3.20 интерпретируется
как удаленный адрес.
Если локальный клиент A33.168.3.6) отправляет сообщение хосту с
неправильным адресом A43.168.3.9), это сообщение также не дойдет до получателя.
Оно либо маршрутизируется (если локальный клиент отправляет сообщение по
неправильному IP-адресу), либо остается в локальной подсети (если локальный
клиент отправляет сообщение по правильному адресу 133.168.3.9). В случае
маршрутизации клиент с неправильным адресом не получит сообщение,
поскольку он находится в одном сегменте сети с локальным клиентом. Если
сообщение не маршрутизируется, оно все равно не доберется до клиента, потому что
IP-адрес получателя A33.168.3.9) не совпадает с адресом, указанным в
конфигурации клиента A43.168.3.9).
yS yS 133.168.3.10 >v
/ /С^язь невозможна \ Удаленный
/ yS из-за несовпадения \ ^
Н'""""\/г идентификаторов сетей Маршрутизатор [Sjffffi^l
. ими Л Связь невозможна, ЩЩ^щшЩЩшШт t ™y*75Sffi J
1^ПТ*ШГ= поскольку локальный 133168 31 |^ГЯДЩд
L^Mlm..;.; --^^ маршрутизатор ' 'BHihiHumllw
133.168.3.9v не найдет клиента У
133.168.3.8
Рис. 41.1. Последствия неправильного назначения IP-адреса
На рис. 41.2 приведен другой пример ошибочного IP-адреса. На этот раз
используется адрес класса А (ЗЗ.х.х.х). Маска подсети B55.255.0.0) указывает на
то, что второй октет используется для определения подсети. Хотя
идентификатор сети клиента совпадает с идентификаторами сетей других клиентов,
идентификаторы подсети различаются из-за ошибки при вводе адреса.
На этот раз неправильный адрес определяет неправильный номер подсети.
Клиент 33.5.8.4 принадлежит подсети 5, тогда как остальные клиенты подсети
имеют адреса 33.4.х.х. Если клиент 33.5.8.4 пытается связаться с другими
клиентами той же подсети, сообщение будет маршрутизироваться, потому что
идентификатор подсети не совпадает с идентификатором подсети хоста-отправителя.
Если клиент 33.5.8.4 пытается отправить сообщение удаленному хосту,
сообщение маршрутизируется, однако ответа клиент не получит — маршрутизатор
обслуживает только подсеть 4, но не подсеть 5.
/г yS 33.4.8.5 ^Ч
/ у/ Связь невозможна, поскольку \ Удаленный
/ у^ трафик маршрутизируется \ х^>ст
^^лт1у Связь невозможна, поскольку ^^ffrWF^
IpM | j-_4==j] маршрутизатор не вернет 33.4.8.1 \ШШ\\ , .' \
33.5.8.4 v ответ клиенту в ЗЗ.б.х.х. У
33.4.8.3
Рис. 41.2. Последствия ошибки в идентификаторе подсети
Если локальный клиент попытается отправить сообщение по адресу 33.5.8.4,
сообщение не достигнет получателя. Если адрес используется в том виде, в
котором он задан в конфигурации, сообщение маршрутизируется, а это нежелательно,
поскольку предполагаемый хост-получатель является локальным. Если
локальный клиент посылает сообщение по правильному IP-адресу, хост 33.5.8.4 также
не получит это сообщение, поскольку его IP-адрес отличается от указанного.
Последний компонент IP-адреса, который может стать причиной проблем со
связью, — идентификатор хоста. Впрочем, ошибка в идентификаторе хоста не
всегда мешает нормальной связи. На рис. 41.3 локальному клиенту назначен
неправильный IP-адрес, в котором ошибка допущена только в идентификаторе
хоста. Идентификаторы сети и подсети соответствуют идентификаторам других
клиентов подсети.
Подсеть ЗЗ.х.х.х
с неправильной
маской подсети
255.255.0.0
/ Г 33.4.8.5 \
/ / _ \ Удаленный
/ / Связь невозможна, поскольку \ Vrt„
/ grzzzzfi / . * \ ХОСТ I^SSI
I •13111/ трафик маршрутизируется I (———, |||И
Ml lIFji из-за ошибки Маршрутизатор МШ |pf|
■^^В 'В11 В 0ПРеДелении ПОДСеТИ ДШ;,ДйА | Я^В I ЯЙ!
/™jjjf^[fiC СВЯЗЬ НеВОЗМОЖНа, ПОПКПЛЫсуШШШжШШшк JsaSSSSmC '
шШШЩЛь маршрутизатор не вернет 33.4.8.1 ЖШМгШШк
33 5 8 4\ ответ клиенту в ЗЗ.б.х.х. /
33.4.8.3
Рис. 41.3. Последствия ошибки в идентификаторе хоста
В этом случае сообщение, отправленное клиенту по неправильному адресу,
будет доставлено успешно. С другой стороны, попытка связаться с клиентом по
правильному адресу завершится неудачей. Более того, она может привести к
установлению связи с другим хостом, адрес которого должен был назначаться
исходному хосту.
Если в результате ошибки настройки исходному хосту будет присвоен
IP-адрес, совпадающий с IP-адресом другого хоста, первый клиент начнет работать,
но второй клиент при запуске может обнаружить конфликт адресов и отказаться
от загрузки стека TCP/IP. В этом случае второй клиент не сможет участвовать
в коммуникациях TCP/IP.
Другая проблема возникает в том случае, если правильный адрес
зарегистрирован в статических файлах (например, LMHOSTS или в базе данных DNS). В
подобных ситуациях никто не сможет связаться с клиентом по имени, поскольку
в результате разрешения имени для хоста всегда будет возвращаться
правильный адрес, по которому связаться с хостом не удастся из-за ошибки,
допущенной при вводе адреса.
Проблемы, возникающие при неверном вводе адресов хостов, обычно носят
нерегулярный характер. Но если хост был настроен как клиент WINS (в опера-
ционных системах семейства Windows), то имя хоста будет зарегистрировано
с неправильным адресом. Другой клиент WINS, пытающийся связаться с ;гшм
хостом, получит IP-адрес, зарегистрированный для заданного имени
(неправильный, но работающий!).
Маска подсети
Маска подсети указывает, каким образом октеты IP-адреса разделяются на
идентификаторы сети и хоста. Кроме того, маска подсети может использоваться для
разрешения идентификатора хоста на подсети. Если при настройке маски
подсети допущена ошибка, клиенты либо вообще не смогут взаимодействовать,
либо связь будет сопровождаться хроническими проблемами.
На рис. 41.4 изображена подсеть сети TCP/IP, использующей адрес класса В
138.13.X.X. Третий октет в данном случае используется для формирования
подсетей, поэтому все клиенты на рисунке должны принадлежать подсети 4, на что
указывает общая часть адреса 138.13.4.x.
1Р-адрес 138.13.4.6
Маска подсети 255.255.255.0
/ yS Маска подсети указывает \ даленныи
/ yS на принадлежность к одной \
■ \s подсети, что в данном Маршрутизатор [,:У^РИ||
;; случае соответствует истине ^жж;жжж»а жВ$Ш\
у г ■■; '^BmrrJ Маска подсети указывает И™Д^М1«^8 i, Мтшии, I
r^B'IT^fe^l на принадлежность к одной 138.13.4.1 l^^Tf^^f^gg]
'■'■■"'■■■■'■'■"'и"^ подсети, поэтому трафик у '■' '■ ■
IP-адрес 138.13.4.5 не маршрутизируется. Сообщение У 138.13.3.26
Маска подсети 255.255.0.0 не доходит до получателя ^У
IP-адрес 138.13.4.4
Маска подсети 255.255.255.0
Рис. 41.4. Даже если IP-адрес задан правильно, ошибка в маске подсети приводит
к использованию неправильного идентификатора подсети
Но по ошибке одному из клиентов была назначена маска подсети 255.255.0.0.
Когда клиент пытается связаться с другими хостами той же подсети, он
связывается с ними нормально — маска указывает, что они принадлежат к одной
подсети, что соответствует действительности. Но попытка связаться с хостом
другой подсети — например, 138.13.3.x — завершается неудачей.
В этом случае маска подсети по-прежнему указывает на то, что
хост-получатель находится в одной подсети с отправителем, поэтому сообщение не
маршрутизируется. Но так как на самом деле получатель находится в другой подсети,
сообщение не попадает к предполагаемому получателю. Маска подсети
используется при маршрутизации исходящего трафика, поэтому клиент с
неправильной маской может получать входящие сообщения. Но когда он попытается на
них ответить и при этом находится в разных подсетях с получателем,
сообщение не маршрутизируется.
Таким образом, клиент с неправильной маской подсети может участвовать
только в одностороннем обмене данными. Связь с хостами за пределами
локального сегмента сети продолжает работать нормально, поскольку они требуют
маршрутизации.
На рис. 41.5 изображена маска подсети, содержащая лишние биты. В данном
случае маска подсети равна 255.255.255.0, однако проектировщики сети
предполагали использование маски 255.255.240.0; первые четыре бита третьего октета
определяют подсеть, а оставшиеся четыре бита являются частью идентификатора хоста.
Подсеть 138.13.16-31.х
IP-адрес 138.13.19.1
Маска подсети 255.255.240.0
/ /"Трафик маршрутизируется. \ удаленный
/ / Согласно маске подсети \ хост
( , / . л у/ адрес интерпретируется, \ f .,_,_••• _. 1
\ШЛш\ как принадлежащий Маршрутизатор ЯКЁёН
[Я^^^Н маршрутизируется 138.13.16.1 [мщЬ^1^
IP-адрес 138.13.18.1 / 138.13.32.1
Маска подсети 255.255.255.0 ./
g—|П LSS3|
IP-адрес 138.13.17.1
Маска подсети 255.255.240.0
Рис. 41.5. Проблемы со связью будут возникать и в том случае,
если маска подсети содержит лишние биты
Если правильно настроенный клиент попытается отправить сообщение
локальному хосту с одинаковым значением третьего октета, сообщение не маршрута-
зируется и достигает клиента. Но если адрес локального клиента отличается
в последних четырех битах третьего октета, то сообщение передается на
маршрутизацию и не попадает в точку назначения. Если неправильно настроенный
клиент пытается отправить сообщение другому клиенту в другой подсети, это
сообщение будет маршрутизировано из-за различий в третьем октете.
Проблемы с маской подсети также приводят к нерегулярным сбоям
соединений: связь то работает, то не работает. Проблемы возникают в тех случаях, когда
IP-адрес получателя приводит к маршрутизации пакета там, где она не нужна,
или к локальной передаче пакета там, где он должен маршрутизироваться.
Основной шлюз
Адрес основного шлюза определяет адрес маршрутизатора — окна во внешний
мир, лежащий за пределами локальной подсети. Если адрес основного шлюза
клиента задан неверно, клиент сможет связываться с локальными хостами, но
сеть за пределами локального сегмента станет для него полностью недоступной.
Возможно, неправильно настроенный клиент сможет принимать сообщения,
поскольку основной шлюз используется только для передачи пакетов другим
хостам. Но как только такой клиент попытается ответить на полученное
сообщение, адрес основного шлюза не сработает, и ответ не достигнет хоста,
отправившего исходное сообщение.
Диагностика проблем TCP и UDP
На транспортном уровне проблемы возникают крайне редко. Если вам удается
установить связь через ping, значит, транспортный уровень работает нормально.
Единственная проблема, встречающаяся на этом уровне, связана с размером окна
TCPWindowSize (см. главу 9).
Обычно эта проблема приводит к низкой скорости обмена данными (как на
110-бодовых терминалах 1970-х и 80-х годов). Но если вы проверили все
остальное, чтобы быстро проверить TCPWindowSize (например, в Windows NT/2000),
откройте реестр и поищите в нем параметр Window Size. Если параметр существует,
запомните его и удалите значение. Размер окна вернется к прежнему значению.
Проблемы с сокетами
Даже если на хосте задан правильный IP-адрес и настроена программная
поддержка протокола, даже если он успешно находит маршрут к удаленному
компьютеру, на последнем должны работать необходимые службы на правильных
сокетах. Если вы предоставляете сетевые службы для внешнего доступа или
наоборот, пытаетесь подключиться к ним, вы в любом случае должны знать номера
используемых портов.
Стандартные номера портов (сокетов) присваиваются агентством IANA (Internet
Assigned Numbers Authority); тем не менее в некоторых случаях службы могут
использовать другие порты. Правильность выбора используемого порта можно
проверить по специальному служебному файлу (см. ниже). После проверки
выполните команду netstat и убедитесь в том, что порт готов к приему данных.
Файл SERVICES
Файл SERVICES в системе Windows NT/2000 находится в каталоге system32\
drivers\etc и используется большинством системных служб, инициализирующих
сокеты на стадии собственной инициализации. Ниже приведен небольшой
фрагмент файла SERVICES.
# Этот файл содержит номера портов для стандартных служб,
# определенные IANA
#
# Формат:
#
# <служба> <номер порта>/<протокол> [псевдонимы...] [#<комментарий>]
#
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users #Active users
systat 11/tcp users #Active users
daytime 13/tcp
daytime 13/udp
qotd 17/tcp quote #Quote of the day
qotd 17/udp quote #Quote of the day
chargen 19/tcp ttytst source #Character generator
chargen 19/udp ttytst source #Character generator
ftp-data 20/tcp #FTP, data
ftp 21/tcp #FTP. control
telnet 23/tcp
smtp 25/tcp mail #Simple Mail Transfer
Protocol
time 37/tcp timserver
time 37/udp timserver
rip 39/udp resource #Resource Location
Protocol
nameserver 42/tcp name #Host Name Server
nameserver 42/udp name #Host Name Server
nicname 43/tcp whois
Если у вас возникают проблемы с конкретными службами, проверьте,
присутствуют ли имена этих служб в файле, и убедитесь в правильности номеров
назначенных портов. Если служба отсутствует в файле, возможно, ее придется
добавить вручную, чтобы система знала, на каком порте должна
инициализироваться служба (файл SERVICES имеет обычный текстовый формат и
редактируется в таких программах, как Edit или Блокнот).
Диагностика на прикладном уровне
Наконец мы добрались до прикладного уровня. Проблемы, возникающие на этом
уровне, делятся на две основные категории: проблемы NetBIOS и проблемы
разрешения имен. На практике чаще всего встречаются проблемы разрешения
имен, влияющие на работу как сокетных приложений, так и приложений NetBIOS.
В этом разделе кратко рассматриваются основные проблемы разрешения имен.
Проблемы разрешения имен
Если поддержка TCP/IP была правильно настроена, если протокол установлен
и работает в системе, то проблемы связи, вероятно, обусловлены ошибками
разрешения хостовых имен. При проверке связи на уровне адресов TCP/IP
одновременно проверяется более низкий уровень, на котором обычно работают
пользователи.
Когда пользователь желает связаться с сетевым ресурсом (например,
подключить диск с сервера или загрузить web-сайт), он обычно указывает имя сервера
или web-сайта вместо его IP-адреса. Более того, IP-адреса отдельных серверов
обычно остаются неизвестными для пользователей. Однако для этого имена,
используемые для установления связи, должны быть преобразованы в IP-адреса,
используемые сетевыми программами для установления связи.
После проверки связи на уровне IP следующим логичным шагом станет
проверка разрешения имен в IP-адреса. Если имя не преобразуется в IP-адрес или
преобразуется неправильно, пользователи не смогут обращаться к сетевым
ресурсам по этому имени, даже если ресурс доступен через IP-адрес.
Как известно, при обмене данными в сети используются два типа имен. Имя
NetBIOS присваивается компьютеру с поддержкой NetBIOS (например, серверу
Windows NT/2000 или системе Windows 9x); хостовое имя присваивается всем
компьютерам, включая серверы Unix. В общем случае при организации
совместного доступа к файлам, принтерам и приложениям в сетях Microsoft обычно
используются имена NetBIOS. Однако при выполнении специфических команд
TCP/IP (например, через FTP или браузер) указываются хостовые имена
компьютеров.
Итоги
Проблемы гораздо чаще возникают из-за ошибок конфигурации TCP/IP, нежели
из-за ошибок реализации протокола TCP/IP. Большинство таких проблем
выявляется анализом с применением простых утилит, о которых говорилось выше.
Но в отдельных случаях не обойтись без анализа протокольного трафика между
двумя системами, а в худшем случае приходится анализировать пакеты потока
данных на уровне отдельных битов.
A RFC и стандарты
Тим Паркер (Tim Parker)
Большая часть информации о семействе протоколов TCP/IP публикуется в виде
запросов на комментарии, или RFC (Request for Comments). RFC определяют
различные аспекты протоколов, их области применения и управления
протоколом в неформально связанных документов.
RFC содержат много бесполезной информации (в основном специфической
для конкретных систем или заметно устаревшей), но также в них можно найти
массу полезных деталей. Как ни удивительно, в RFC встречаются
занимательные и юмористические статьи, включая такие классические работы, как «Twas
the Night Before Start-up» (RFC 968), «ARPAWOCKY» (RFC 527) и «TELNET
Randomly-Lose Option» (RFC 748).
В настоящем приложении перечислены наиболее важные или интересные RFC,
заслуживающие внимания читателей. Также приводится информация о том, где
найти RFC. Список не полон; из него исключены старые и неактуальные RFC.
Информационные ресурсы
RFC можно получить несколькими способами, проще всего — в электронном виде.
Также распространяются бумажные копии, но для этого требуется специальный
запрос. Электронные версии обычно распространяются в формате ASCII, хотя
некоторые из них хранятся в формате PostScript и для их вывода требуется
интерпретатор PostScript. Большинство электронных RFC не содержат диаграмм,
рисунков и чертежей.
World Wide Web
Подборки RFC имеются на многих сайтах World Wide Web. Чтобы найти их,
проще всего воспользоваться поисковой системой и ввести строку «RFC». На
большинстве сайтов RFC перечисляются в виде простого списка, упорядоченного
по номерам, но в отдельных случаях производится группировка документов по
самым интересным темами (хотя списки обычно получаются неполными).
Официальный перечень RFC представлен на сайте http://www.rfc-editor.org.
FTP
RFC можно загрузить через FTP с сайта NIC (Network Information Center) или
других сайтов FTP. Через клиента FTP обратитесь к архиву NIC NIC.DDN.MIL,
введите имя guest и пароль anonymous. Далее RFC загружаются командой FTP
get следующего формата:
<RFC>RFC527.txt
Вместо 527 подставляется номер нужного RPC. Загрузка материалов из архива
NIC через FTP возможна только с компьютера, подключенного к Интернету.
Электронная почта
Тексты RFC также рассылаются по электронной почте. NIC и информационный
центр NFSNET поддерживают службы автоматизированной рассылки текстов.
Обе службы ищут во входящем сообщении ключевые слова, определяющие
запрашиваемый документ, и адрес электронной почты отправителя, после чего
отправляют запрашиваемый RFC.
Чтобы получить RFC от NIC, отправьте по адресу service@nic.ddn.mil
сообщение, у которого в поле темы указан нужный документ. Если потребуется
дополнительная информация о работе службы электронной рассылки NIC, отправьте
сообщение с темой help.
Чтобы получить RFC от информационного центра NFSNET, отправьте
сообщение, у которого первые две строки текста выглядят так:
REQUEST: RFC
TOPIC: 527
Первая строка определяет тип запрашиваемого документа (RFC), а во второй
строке указывается номер RFC. Сообщение отправляется по адресу info-server@
sh.cs.net. Чтобы получить дополнительную информацию, укажите в строке TOPIC
слово help.
Бумажные копии
При отсутствии доступа к электронной связи можно запросить бумажную
копию RFC. Для этого обратитесь в NIC по телефону 1 —800—235—3155.
Нехорошо заставлять персонал NIC ожидать, пока вы найдете нужный
документ. Подготовьте список заранее, чтобы разговор был кратким и деловым.
Операторы ежедневно отвечают на множество звонков и обычно сильно загружены.
Тематический список полезных RFC
В следующем списке перечислены многие RFC, содержащие подробную
информацию о протоколах и их использовании или более общую информацию по
конкретным темам, относящимся к TCP/IP. Многие RFC не вошли в список
либо потому, что они были заменены и потеряли актуальность, либо потому, что
их содержимое не имеет отношения к TCP/IP. RFC отбирались автором книги
на основании его личных предпочтений, поэтому если вы не найдете
интересующей вас информации, обратитесь к полному списку RFC.
Общие сведения
RFC1340 «Assigned Numbers», Reynolds, J.К; Postel, J.В.; 1992
RFC1360 «IAB Official Protocol Standards», Postel, J.B.; 1992
RFC1208 «Glossary of Networking Terms», Jacobsen, O.J.; Lynch, D.C.; 1991
RFC1180 «TCP/IP Tutorial», Socolofsky, T.J.; Kale, CJ.; 1991
RFC1178 «Choosing a Name For Your Computer», Libes, D.; 1990
RFC1175 «FYI on Where to Start: A Bibliography of Internetworking Information», Bowers, K.L.;
LaQuey, T.L; Reynolds, J.K.; Roubicek, K.; Stahl, M.K.; Yuan, A.; 1990
RFC1173 «Responsibilities of Host and Network Managers: A Summary of the 'oral tradition' of the
Internet», VanBokkelen, J.; 1990
RFC1166 «Internet Numbers», Kirkpatrick, S.; Stahl, M.K.; Recker, M.; 1990
RFC1127 «Perspective on the Host Requirements RFCs», Braden, R.T.; 1989
RFC1123 «Requirements for Internet Hosts — Application and Support», Braden, R.T.; ed.; 1989
RFC1122 «Requirements for Internet Hosts — Communication Layers», Braden R.T.; ed.; 1989
RFC1118 «Hitchhiker's Guide to the Internet», Krol, E.; 1989
RFC1011 «Official Internet Protocols», Reynolds, J.R.; Postel, J.B; 1987
RFC1009 «Requirements for Internet Gateways», Braden, R.T.; Postel, J.В.; 1987
RFC980 «Protocol document order information», Jacobsen, O.X; Postel, J.В.; 1986
TCP и UDP
RFC1072 «TCP Extensions for Long-Delay Paths», Jacobson, V.; Braden, R.T.; 1988
RFC896 «Congestion Control in 1РДСР Internetworks», Nagle, J.; 1984
RFC879 «TCP Maximum Segment Size and Related Topics», Postel, J.B; 1983
RFC813 «Window and Acknowledgement Strategy in TCP», Clark, D.D.; 1982
RFC793 «Transmission Control Protocol», Postel J.B; 1981
RFC768 «User Datagram Protocol», Postel J.В.; 1980
IP и ICMP
RFC1219 «On the Assignment of Subnet Numbers», Tsuchiya, P.F.; 1991
RFC1112 «Host Extensions for IP multicasting», Deering, S.E.; 1989
RFC1088 «Standard for the Transmission of IP Datagrams over NetBIOS Networks»,
McLaughlin, L.J.; 1989
RFC950 «Internet Standard Subnetting Procedure», Mogul, J.C.; Postel, J.В.; 1985
RFC932 «Subnetwork Addressing Scheme», Clark, D.D.; 1985
RFC922 «Broadcasting Internet Datagrams in the Presence of Subnets», Mogul, J.C.; 1984
RFC919 «Broadcasting Internet Datagrams», Mogul, J.C.; 1984
RFC886 «Proposed Standard for Message Header Munging», Rose, M.T.; 1983
RFC815 «IP Datagram Reassembly Algorithms», Clark, D.D.; 1982
RFC814 «Name, Addresses, Ports, and Routes», Clark, D.D.; 1982
RFC792 «Internet Control Message Protocol», Postel, J.B; 1981
RFC791 «Internet Protocol», Postel, J.B; 1981
RFC781 «Specification of the Internet Protocol (IP) Timestamp Option», Su, Z.; 1981
Нижние уровни
RFC1236 «IP to X.121 Address Mapping for DDN», Morales, L; Hasse, P.; 1991
RFC1220 «Point-to-Point Protocol Extensions for Bridging», Baker, F.; 1991
RFC1209 «Transmission of IP Datagrams over the SMDS Service», Piscitello, D.M.; Lawrence, J.; 1991
RFC1201 «Transmitting IP Traffic over ARCNET Networks», Provan, D.; 1991
RFC1188 «Proposed Standard for the Transmission of IP Datagrams over FDDI Networks», Katz, D.;
1990
RFC1172 «Point-to-Point Protocol (PPP) Initial Configuration Options», Perkins, D.; Hobby, R.; 1990
RFC1171 «Point-to-Point Protocol for the Transmission of Multi-Protocol Datagrams over
Point-to-Point Links», Perkins, D.; 1990
RFC1149 «Standard for the Transmission of IP datagrams on Avian Carriers», Waitzman, D.; 1990
(первоапрельская шутка!)
RFC1055 «Nonstandard for Transmission of IP Datagrams over Serial Lines: SUP», Romkey, J.L; 1988
RFC1044 «Internet Protocol on Network System's HYPERchannel: Protocol Specification»,
Hardwick, K.; Lekashman, J.; 1988
RFC1042 «Standard for the Transmission of IP Datagrams over IEEE 802 Networks», Postel, J.;
Reynolds, J.K.; 1988
RFC1027 «Using ARP to Implement Transparent Subnet Gateways», Carl-Mitchell, S.;
Quarterman, J.S.; 1987
RFC903 «Reverse Address Resolution Protocol», Finlayson, R.; Mann, Т.; Mogul, J.C.; Theimer, M.;
1984
RFC895 «Standard for the Transmission of IP Datagrams over Experimental Ethernet Networks»,
Postel, J.B; 1984
RFC894 «Standard for the Transmission of IP Datagrams over Ethernet Networks», Hornig, C; 1984
RFC893 «Trailer encapsulations», Leffler, S.; Karels, M.J.; 1984
RFC877 «Standard for the Transmission of IP Datagrams over Public Data Networks», Korb, IT.; 1983
Загрузка
RFC1084 «BOOTP Vendor Information Extensions», Reynolds, J.K.; 1988
RFC951 «Bootstrap Protocol», Croft, W.J.; Gilmore, J.; 1985
RFC906 «Bootstrap Loading Using TFTP», Finlayson, R.; 1984
DNS
RFC1035 «Domain Names — Implementation and Specification», Mockapetris, P.V.; 1987
RFC1034 «Domain Names — Concepts and Facilities», Mockapetris, P.V.; 1987
RFC1033 «Domain Administrators Operations Guide», Lottor, M.; 1987
RFC1032 «Domain Administrators Guide», Stahl, M.K.; 1987
RFC1101 «DNS Encoding of Network Names and Other Types», Mockapetris, P.V.; 1989
RFC974 «Mail Routing and the Domain System», Partridge, C; 1986
RFC920 «Domain Requirements», Postel, J.B.; Reynolds, J.K.; 1984
RFC799 «Internet Name Domains», Mills, D.L.; 1981
Пересылка и доступ к файлам
RFC1094 «NFS: Network File System Protocol Specification», Sun; 1989
RFC1068 «Background File Transfer Program (BFTP)», DeSchon, A.L.; Braden, R.T.; 1988
RFC959 «File Transfer Protocol», Postel, J.B.; Reynolds, J.K.; 1985
RFC949 «FTP Unique-Named Store Command», Padlipsky, M.A.; 1985
RFC783 «TFTP Protocol (Revision 2)», Sollins, K.R.; 1981
RFC775 «Directory Oriented FTP Commands», Mankins, D.; Franklin, D.; Owen, A.D; 1980
Электронная почта
RFC1341 «MIME (Multipurpose Internet Mail Extensions): Mechanisms for Specifying and Describing
the Format of Internet Message Bodies», Borenstein, N.; Freed, N.; 1992
RFC1143 «The Q Method of Implementing TELNET Option Negotiation», Bernstein, DJ.; 1990
RFC1090 «SMTP on X.25», Ullmann, R.; 1989
RFC1056 «PCMAIL: A Distributed Mail System for Personal Computers», Lambert, M.L.; 1988
RFC974 «Mail Routing and the Domain System», Partridge, C; 1986
RFC822 «Standard for the Format of ARPA Internet Text Messages», Crocker, D.; 1982
RFC821 «Simple Mail Transfer Protocol», Postel, J.В.; 1982
Протоколы маршрутизации
RFC1267 «Border Gateway Protocol 3 (BGP-3)», Lougheed, K.; Rekhter, Y.; 1991
RFC1247 «OSPF Version 2», Moy, X; 1991
RFC1222 «Advancing the NSFNET Routing Architecture», Braun, H.W.; Rekhter, Y.; 1991
RFC1195 «Use of OSIIS-IS for Routing in TCP/IP and Dual Environments», Callon, R.W.; 1990
RFC1164 «Application of the Border Gateway Protocol in the Internet», Honig, J.C.; Katz, D.;
Mathis, M.; Rekhter, Y.; Yu, J.Y.; 1990
RFC1163 «Border Gateway Protocol (BGP)», Lougheed, K.; Rekhter, Y.; 1990
RFC1074 «NSFNET Backbone SPF Based Interior Gateway Protocol», Rekhter, J.; 1988
RFC1058 «Routing Information Protocol», Hedrick, C.L; 1988
RFC904 «Exterior Gateway Protocol Formal Specification», Mills, D.L.; 1984
RFC827 «Exterior Gateway Protocol (EGP)», Rosen, E.C.; 1982
RFC823 «DARPA Internet Gateway», Hinden, R.M.; Sheltzer, A.; 1982
RFC1136 «Administrative Domains and Routing Domains: A Model for Routing in the Internet»,
Hares, S.; Katz, D.; 1989
RFC9U «EGP Gateway under Berkeley UNIX 4.2», Kirton, P.; 1984
RFC888 «STUB Exterior Gateway Protocol», Seamonson, L; Rosen, E.C.; 1984
Политика и производительность маршрутизации
RFC1254 «Gateway Congestion Control Survey», Mankin, A.; Ramakrishnan, K.; 1991
RFC1246 «Experience with the OSPF Protocol», Moy, J.; 1991
RFC1245 «OSPF Protocol Analysis», Moy, 3.; 1991
RFC1125 «Policy requirements for Inter-Administrative Domain Routing», Estrin, D.; 1989
RFC1124 «Policy Issues in Interconnecting Networks», Leiner, B.M.; 1989
RFC1104 «Models of Policy Based Routing», Braun, H.W.; 1989
RFC1102 «Policy Routing in Internet Protocols», Clark, D.D.; 1989
Терминальный доступ
RFC1205 «5250 Telnet Interface», Chmielewski, P.; 1991
RFC1198 «FYI on the X Window System», Scheifler, R.W.; 1991
RFC1184 «Telnet Linemode Option», Borman, DA; 1990
RFC1091 «Telnet Terminal-Type Option», VanBokkelen, X; 1989
RFC1080 «Telnet Remote Flow Control Option», Hedrick, C.L.; 1988
RFC1079 «Telnet Terminal Speed Option», Hedrick, C.L.; 1988
RFC1073 «Telnet Window Size Option», Waitzman, D.; 1988
RFC1053 «Telnet X.3 PAD Option», Levy, S.; Jacobson, Т.; 1988
RFC1043 «Telnet Data Entry Terminal Option: DODIIS Implementation», Yasuda, A.;
Thompson, Т.; 1988
RFC1041 «Telnet 3270 Regime Option», Rekhter, Y.; 1988
RFC1013 «X Window System Protocol, version 11: Alpha Update», Scheifler, R.W.; 1987
RFC946 «Telnet Terminal Location Number Option», Nedved, R.; 1985
RFC933 «Output Marking Telnet Option», Silverman, S.; 1985
RFC885 «Telnet End Of Record Option», Postel, IB; 1983
RFC861 «Telnet Extended Options: List Option», Postel, IB.; Reynolds, IK; 1983
RFC860 «Telnet Timing Mark Option», Postel, IB.; Reynolds, J.K.; 1983
RFC859 «Telnet Status Option», Postel, J.B.; Reynolds, J.K.; 1983
RFC858 «Telnet Suppress Go Ahead Option», Postel, J.В.; Reynolds, J.K.; 1983
RFC857 «Telnet Echo Option», Postel, J.В.; Reynolds, J.K.; 1983
RFC856 «Telnet Binary Transmission», Postel, J.В.; Reynolds, J.K.; 1983
RFC855 «Telnet Option Specifications», Postel, J.B.; Reynolds, J.K.; 1983
RFC854 «Telnet Protocol Specification», Postel, J.B.; Reynolds, J.K.; 1983
RFC779 «Telnet Send-Location Option», Killian, E.; 1981
RFC749 «Telnet SUPDUP-Output Option», Greenberg, В.; 1978
RFC736 «Telnet SUPDUP Option», Crispin, M.R.; 1977
RFC732 «Telnet Data Entry Terminal Option», Day, J.D.; 1977
RFC727 «Telnet Logout Option», Crispin, M.R.; 1977
RFC726 «Remote Controlled Transmission and Echoing Telnet Option», Postel, J.B; Crocker, D.; 1977
RFC698 «Telnet Extended ASCII Option», Mock, Т.; 1975
Другие приложения
RFC1196 «Finger User Information Protocol», Zimmerman, D.P.; 1990
RFC1179 «Line Printer Daemon Protocol», McLaughlin, L; 1990
RFCU29 «Internet Time Synchronization: The Network Time Protocol», Mills, D.L.; 1989
RFC1119 «Network Time Protocol (Version 2) Specification and Implementation», Mills, D.L.; 1989
RFC1057 «RPC: Remote Procedure Call Protocol Specification: Version 2», Sun Microsystems, 1988
RFC1014 «XDR: External Data Representation standard», Sun Microsystems, 1987
RFC954 «NICNAME/WHOIS», Harrenstien, K.; Stahl, M.K.; Feinler, E.J.; 1985
RFC868 «Time Protocol», Postel, J.B.; Harrenstien, K.; 1983
RFC867 «Daytime Protocol», Postel, J.B.; 1983
RFC866 «Active Users», Postel, J.B.; 1983
RFC865 «Quote of the Day Protocol», Postel, IB.; 1983
RFC864 «Character Generator Protocol», Postel, J.B.; 1983
RFC863 «Discard Protocol», Postel, J.В.; 1983
RFC862 «Echo Protocol», Postel, J.B.; 1983
Управление сетью
RFC1271 «Remote Network Monitoring Management Information Base», Waldbusser, S.; 1991
RFC1253 «OSPF Version 2 Management Information Base», Baker, F.; Coitun, R.; 1991
RFC1243 «AppleTalk Management Information Base», Waldbusser, S.; 1991
RFC1239 «Reassignment of Experimental MIBs to Standard MIBs», Reynolds, J.K.; 1991
RFC1238 «CLNS MIB for Use with Connectionless Network Protocol (ISO 8473) and End System to
Intermediate System (ISO 9542)», Satz, G.; 1991
RFC1233 «Definitions of Managed Objects for the DS3 Interface Type», Сох, Т.А.; Tesink, K.; 1991
RFC1232 «Definitions of Managed Objects for the DS1 Interface Type», Baker, F.; Kolb, СР.; 1991
RFC1231 «IEEE 802.5 Token Ring MIB», McCloghrie, K.; Fox, R.; Decker, E.; 1991
RFC1230 «IEEE 802.4 Token Bus MIB», McCloghrie, K.; Fox, R.; 1991
RFC1229 «Extensions to the Generic-Interface MIB», McCloghrie, K.; 1991
RFC1228 «SNMP-DPI: Simple Network Management Protocol Distributed Program Interface»,
Carpenter, G.; Wijnen, В.; 1991
RFC1227 «SNMP MUX protocol and MIB», Rose, M.T.; 1991
RFC1224 «Techniques For Managing Asynchronously Generated Alerts», Steinberg, L; 1991
RFC1215 «Convention for Defining Traps for Use with the SNMP», Rose, M.T.; 1991
RFC1214 «OSI Internet Management: Management Information Base», LaBarre, L; 1991
RFC1213 «Management Information Base for Network Management of
TCP/IP-based Internets: MIB-II», McCloghrie, K.; Rose, M.T.; 1991
RFC1212 «Concise MIB Definitions», Rose, M.T.; McCloghrie, K.; 1991
RFC1187 «Bulk Table Retrieval with the SNMP», Rose, M.T.; McCloghrie, K.; Davin, J.R.; 1990
RFC1157 «Simple Network Management Protocol (SNMP)», Case, J.D.; Fedor, M.;
Schoffstall, M.L.; Davin, C; 1990
RFC1156 «Management Information Base for Network Management of TCP/IP-based Internets»,
McCloghrie, K.; Rose, M.T.; 1990
RFC1155 «Structure and Identification of Management Information for TCP/IP-based Internets»,
Rose, M.T.; McCloghrie, K.; 1990
RFC1147 «FYI on a Network Management Tool Catalog: Tools for Monitoring and Debugging
TCP/IP Internets and Interconnected Devices», Stine, R.H.; 1990
RFC1089 «SNMP over Ethernet», Schoffstall, M.L; Davin, C; Fedor, M.; Case, J.D.; 1989
Туннелирование
RFC1241 «Scheme for an Internet Encapsulation Protocol: Version 1»; 1991
RFC1234 «Tunneling IPX Traffic Through IP Networks», Provan, D.; 1991
RFC1088 «Standard for the Transmission of IP Datagrams over NetBIOS Networks»,
McLaughlin, L.J.; 1989
RFC1002 «Protocol Standard for a NetBIOS Service on a TCP/UDP Transport: Detailed
Specifications», NetBIOS Working Group; 1987
RFC1001 «Protocol Standard for a NetBIOS Service on a TCP/UDP Transport: Concepts
and Methods», NetBIOS Working Group; 1987
OSI
RFC1240 «OSI Connectionless Transport Services on Top of UDP: Version 1», Shue, C; Haggerty, W.;
Dobbins, K.; 1991
RFC1237 «Guidelines for OSI NSAP Allocation in the Internet», Colella, R.; Gardner, E.; Callon, R.; 1991
RFC1169 «Explaining the Role of GOSIP», Cerf, V.G.; Mills, K.L.; 1990
Безопасность
RFC1244 «Site Security Handbook»
RFC1115 «Privacy Enhancement for Internet Electronic Mail: Part in — Algorithms, Modes,
and Identifiers [Draft]», Linn, J.; 1989
RFC1114 «Privacy Enhancement for Internet Electronic Mail: Part II — Certificate-Based Key
Management», Kent, ST.; Linn, J.; 1989
RFC1113 «Privacy Enhancement for Internet Electronic Mail: Part I — Message Encipherment and
Authentication Procedures», Linn, J.; 1989
RFC1108 «Security Options for the Internet Protocol», 1991
Разное
RFC1251 «Who's Who in the Internet: Biographies of IAB, IESG and IRSG Members», Malkin, G.; 1991
RFC1207 «FYI on Questions and Answers: Answers to Commonly Asked 4experienced Internet
user* questions», Malkin, G.S.; Marine, A.N.; Reynolds, J.K.; 1991
RFC1206 «FYI on Questions and Answers: Answers to Commonly Asked 4New Internet User*
Questions», Malkin, G.S.; Marine, A.N.; 1991
Список RFC по номерам
Последняя обновленная версия списка всех RFC, упорядоченных по номерам,
находится на сайте http://www.rfc-editor.org.
Б Сокращения
и акронимы1
Тим Паркер (Tim Parker)
ABI Application Binary Interface
ACB Access Control Block
ACIA Asynchronous Communications
Interface Adapter
ACK Acknowledgement Подтверждение
AD Active Directory
AF Address Family
AFP AppleTalk Filing Protocol
AFS Andrew File System
AIX Advanced Interactive Executive
(IBM Unix)
ANSI American National Standards Institute Национальный институт стандартизации США
АОСЕ Apple Open Collaborative
Environment
API Application Programming Interface Программный интерфейс приложения
APPC Advanced Program-to-Program Усовершенствованный интерфейс связи
Communications между программами
APPN Advanced Peer-to-Peer Networking Улучшенный протокол одноранговых сетей
ARA AppleTalk Remote Access
ARPA Advanced Research Projects Agency Управление перспективного планирования
научно-исследовательских работ
AS Anonymous System
ASA American Standards Association Американская ассоциация стандартов
ASCII American National Standard Code Американский стандартный код обмена
For Information Interchange информацией
1 В последней графе приведены только устоявшиеся русские переводы. — Примеч. ред.
ASN. 1 Abstract Syntax Notation One
ASPI Advanced SCSI Programming Усовершенствованный интерфейс
Interface программирования SCSI
ATM Adobe Type Manager
ATM Asynchronous Transfer Mode Асинхронный режим передачи
AUI Attached Unit Interface
A/UX Apple Unix
BBLT Bus Block Transfer
BBN Bolt, Beranek, and Newman,
Incorporated
BER Basic Encoding Rules Базовые правила кодировки
BER Bit Error Rate Частота ошибок по битам
BGP Border Gateway Protocol Пограничный межсетевой протокол
BIOS Basic Input/Output System Базовая система ввода/вывода
BISDN Broadband ISDN (Integrated Широкополосная цифровая сеть
Services Digital Network) комплексных услуг
BITBLT Bit Block Transfer Пересылка битового блока
BITNET Because It's Time Network
BSD Berkeley Software Distribution
CAMMU Cache/Memory Management Unit
CBLT Character Block Transfer Пересылка символьного блока
ССГТТ Consultative Committee Совещательный комитет по международной
for International Telephone телефонии и телеграфии
and Telegraphy
CDE Common Desktop Environment Коллективная среда настольных
вычислительных средств
CDMA Code Division Multiple Access Множественный доступ с кодовым
разделением каналов
CLI Call-Level Interface Интерфейс уровня вызовов
CLI Command-Line Interpreter Интерпретатор командной строки
CMC Common Messaging Calls Набор стандартных вызовов
CMIP Common Management Information Протокол общей управляющей информации
Protocol
CMIS Common Management Information Служба общей управляющей информации
Services
СМОТ Common Management Information Служба и протокол общей управляющей
Services and Protocol over TCP/IP информации по TCP/IP
CORBA Common Object Request Broker
Architecture
COSE Cbmmon Open Software Environment Общая открытая среда программных средств
CPU Central Processing Unit Центральный процессор
CRC Cyclic Redundancy Check Контроль с помощью циклического
избыточного кода
CREN Consortium for Research and Консорциум по организации
Educational Networking научно-исследовательских
и образовательных сетей
CSMA/CD Carrier Sense Multiple Access with Множественный доступ с контролем несущей
Collision Detection и обнаружением конфликтов
CSNET Computer Science Network
CUA Common User Access Общий пользовательский доступ
DARPA Defense Advanced Research Управление перспективных
Projects Agency исследовательских программ
DARPANET Defense Advanced Research Сеть управления перспективных
Projects Agency Network исследовательских программ
DAT Digital Audio Tape Цифровая аудиокассета
DBMS Database Management System Система управления базами данных
DCA Defense Communications Agency Управление связи Министерства обороны США
DCE Data Circuit-Terminating Equipment Оконечное оборудование передачи данных
(Data Communications Equipment) (аппаратура передачи данных)
DCE Distributed Computing Environment Среда распределенных вычислений
DDBMS Distributed DBMS Распределенная СУБД (система управления
базами данных)
DDE Dynamic Data Exchange Динамический обмен данными
DDN Defense Data Network Оборонная сеть передачи данных
DES Data Encryption Standard Стандарт шифрования данных
DFS Distributed File Service Распределенная файловая служба
DHCP Dynamic Host Configuration Protocol Протокол динамической конфигурации хоста
DIF Data Interchange Format Формат информационного обмена
DIME Dual Independent Map Encoding
DISA Defense Information System Agency Агентство по оборонным информационным
системам
DIX Digital, Intel, and Xerox Ethernet
Protocol
DLL Dynamic Link Library Динамически подсоединяемая библиотека
DLP Data Link Protocol Протокол передачи данных
DME Distributed Management Распределенная среда управления
Environment
DNS Domain Name System Система имен доменов
DOE Distributed Objects Everywhere
DSA Directory System Agent Агент системы каталогов
DSAP Destination Service Access Point
DTE Data Terminal Equipment Терминальное оборудование
DTMF Dual-Tone Multi-Frequency Двухтональный многочастотный набор
DUA Directory User Agent
DVI Digital Video Interactive Интерактивное цифровое видео
EBCDIC Extended Binary Coded Decimal Расширенный двоично-десятичный код
Interchange Code обмена информацией
ECC Error Correction Code Код исправления ошибок
ECM Error Correction Mode Режим исправления ошибок
EGP Exterior Gateway Protocol Внешний шлюзовой протокол
ENS Enterprise Network Services Сетевое обеспечение предприятия
EOF End of File Конец файла
EOR End of Record Конец записи
ERLL Enhanced Run Length Limited Расширенный код с ограничением
по длине серий
ESDI Enhanced Small Device Interface Улучшенный интерфейс малых устройств
FAT File Allocation Table Таблица размещения файлов
FCS Frame Check Sequence Контрольная последовательность кадра
FDDI Fiber Distributed Data Interface Распределенный интерфейс передачи
данных по оптоволоконным каналам
FIN Final Segment Завершающий сегмент
FTAM File Transfer, Access, and Передача, доступ и управление файлами
Management
FTAM Rle Transfer Access Method Метод пересылки и обеспечения
доступа к файлам
FTP Rle Transfer Protocol Протокол передачи файлов
GGP Gateway-Gateway Protocol Межшлюзовой протокол
GIF Graphics Interchange Format Формат графического обмена
GOSIP Government OSI Profile Спецификации протоколов OSI,
поддерживаемые государством
GPF General Protection Fault Общее нарушение защиты
GPI Graphics Programming Interface Графический программный интерфейс
GTF Generalized Trace Facility
GUI Graphical User Interface Графический интерфейс пользователя
HAL Hardware Abstraction Layer Уровень аппаратных абстракций
HDLC High-level Data Link Control Высокоуровневый протокол управления
каналом
HDX Half-Duplex Полудуплексный
HFS Hierarchical File System Иерархическая файловая система
HIPPI High-Performance Parallel Interface Высокоскоростной параллельный интерфейс
(также HPPI)
НОВ High Order Byte Старший байт
HPFS High Performance File System Высокопроизводительная файловая система
HPPI High-Performance Parallel Interface Высокоскоростной параллельный интерфейс
(также HIPPI)
HTTP Hypertext Transfer Protocol Протокол передачи гипертекста
IAB Internet Activities Board Координационный совет Интернета
IAB Internet Architecture Board Координационный совет по архитектуре
Интернета
IAC Interapplication Communication Связь между приложениями
IAC Interpret as Command Интерпретируется как команда
IAIMA Internet Assigned Numbers Authority Агентство по выделению имен и параметров
протоколов Интернета
ICMP Internet Control Message Protocol Межсетевой протокол управляющих сообщений
ID Identifier Идентификатор
IDE Integrated Drive Electronics Интегрированный интерфейс накопителей
IEEE Institute of Electrical and Electronics Институт инженеров по электротехнике
Engineers и электронике
IEN Internet Experiment Note Экспериментальный рабочий документ
Интернета
IESG Internet Engineering Steering Group Исполнительный комитет IETF
IETF Internet Engineering Task Force Проблемная группа проектирования
Интернета
IFF Interchange File Format
IGMP Internet Group Management Protocol Межсетевой протокол управления группами
IGP Interior Gateway Protocol Протокол внутреннего шлюза
IMAP Interactive Mail Access Protocol Протокол интерактивного доступа
к электронной почте
INT Interrupt Прерывание
IP Internet Protocol Межсетевой протокол
IPC Interprocess Communication Межпроцессное взаимодействие
IPX/SPX Internet Packet Exchange/
Sequenced Packet Exchange
IRC Interrupt Request Controller Контроллер прерываний
IRQ Interrupt Request Запрос на прерывание
IRTF Internet Research Task Force Проблемная группа Интернета
ISDN Integrated Services Digital Network
IS-IS Intermediate System to Intermediate Связь между промежуточными системами
System
ISN Initial Sequence Number
ISO International Organization for Международная организация
Standardization по стандартизации
ISODE ISO Development Environment Среда разработки, отвечающая
требованиям ISO
JPEG Joint Photography Experts Group
LAN Local Area Network Локальная сеть
LAPB Link Access Procedures Balanced
LAPD Link Access Procedures on the D
channel
LLC Logical Link Control Управление логическим соединением
LOB Low Order Byte Младший байт
LSB Least Significant Bit/Byte Младший бит/байт
LSD Least Significant Digit Младший разряд
MAC Media Access Control Протокол управления доступом
к (передающей) среде
MAN Metropolitan Area Network Региональная сеть
MAPI Messaging API Интерфейс прикладного программирования
для обмена сообщениями
MAU Medium Access Unit
MFC Microsoft Foundation Classes
MFS Macintosh File System
MHS Message Handling Service Служба управления сообщениями
MIB Management Information Base База управляющей информации
MILNET Military Network
MIME Multipurpose Internet Mail Многоцелевые расширения электронной
Extensions почты Интернета
MNP Microcom Networking Protocol
MSB Most Significant Bit/Byte Старший бит/байт
MSS Maximum Segment Size Максимальный размер сегмента
MTA Message Transfer Agent Агент передачи сообщений
MTU Maximum Transfer Unit Максимальная единица передачи
MX Mail Exchanger
NAU Network Access Unit
NDIS Network Driver Interface Спецификация стандартного интерфейса
Specification сетевых адаптеров
NDS NetWare (Novell) Directory Service Служба каталогов NetWare (Novell)
NETBIOS Network Basic Input/Output System Сетевая базовая система ввода/вывода
NETBEUI NetBIOS Extended User Interface
NFS Network File System Сетевая файловая система
NIC Network Information Center Сетевой информационный центр
NIS Network Information Service Сетевая информационная служба
NIST National Institute of Standards Национальный институт стандартов
and Technology и технологий
NIU Network Interface Unit
NLM NetWare Loadable Module Загружаемый модуль NetWare
NMI Nonmaskable Interrupt Немаскируемое прерывание
NNTP Network News Transfer Protocol Сетевой протокол передачи новостей
NOS Network Operating System Сетевая операционная система
NREN National Research and Education Национальная научно-исследовательская
Network и образовательная сеть
NSAP Network Service Access Point Точка доступа к сетевому сервису
NSF National Science Foundation Network Сеть Национального научного фонда
NVT Network Virtual Terminal Виртуальный терминал сети
ODAPI Open Database API
ODI Open Data-link Interface Открытый канальный интерфейс
ONC Open Network Computing Открытая сетевая обработка
OSF Open Software Foundation Фонд открытого программного обеспечения
OSI Open System Interconnection Взаимодействие открытых систем
OSPF Open Shortest Path First Первоочередное открытие кратчайших
маршрутов
PAD Packet Assembler / Disassembler Сборщик/разборщик пакетов
PCMCIA Personal Computer Memory Card Международная ассоциация производителей
International Association плат памяти для персональных компьютеров
PDU Protocol Data Unit Протокольная единица обмена
PI Protocol Interpreter Интерпретатор протокола
PING Packet Internet Groper Отправитель пакетов Интернета
POP Post Office Protocol Почтовый протокол
POTS Plain Old Telephone Service Обычная телефонная сеть
PPP Point-to-Point Protocol Протокол передачи от точки к точке
QIC Quarter-Inch Cartridge Четвертьдюймовый картридж
RARP Reverse Address Resolution Protocol Протокол определения (сетевого) адреса
по местоположению (узла)
RFC Request for Comments Запрос на комментарии
RFS Remote File System Удаленная файловая система
RIP Routing Information Protocol Протокол маршрутной информации
RMON Remote Network Monitor
RPC Remote Procedure Call Удаленный вызов процедуры
RST Reset Сброс
RTT Round-Trip Time Период кругового обращения
SAP Service Access Point Точка доступа к службе
SDLC Synchronous Data Link Control Синхронное управление передачей данных
SLIP Serial Line Internet Protocol Межсетевой протокол для последовательного
канала
SMDS Switched Multimegabit Data Service
SMTP Simple Mail Transfer Protocol Простой протокол электронной почты
SNA Systems Network Architecture Системная сетевая архитектура
SNMP Simple Network Management Простой протокол сетевого управления
Protocol
SONET Synchronous Optical Network Синхронная оптическая сеть
SPF Shortest Path First Предпочтительный выбор кратчайшего пути
SSAP Source Service Access Point
SSCP System Services Control Point
SYN Synchronizing Segment Синхронизирующий сегмент
TCB Transmission Control Block Блок управления передачей
TCP Transmission Control Protocol Протокол управления передачей
TCP/IP Transmission Control Протокол управления передачей/
Protocol/Internet Protocol Межсетевой протокол
TCU Trunk Coupling Unit
TELNET Terminal Network
TFTP Trivial File Transfer Protocol Тривиальный протокол передачи файлов
TLI Transport Layer Interface Интерфейс транспортного уровня
TP4 OSI Transport Class 4
TSAP Transport Service Access Point Точка доступа к услугам транспортного уровня
TTL Time-to-Live Срок жизни
UA User Agent Пользовательский агент
UART Universal Asynchronous Универсальный асинхронный
Receive^ransmitter приемопередатчик
UDP User Datagram Protocol Протокол пользовательских дейтаграмм
ULP Upper Layer Protocol Протокол верхнего уровня
URL Uniform Resource Locator Унифицированный указатель
информационного ресурса
UUCP Unix to Unix Copy
WAN Wide Area Network Глобальная сеть
WWW World Wide Web Всемирная паутина
XDR External Data Representation
XNS Xerox Network Systems
Алфавитный указатель
А
А, записи, 132
А, тип записей, 128
АССМ, 425
АСК, управляющий бит, 60
ADSL, 416
AFI, поле RIP, 354
allwhois.com, 588
AOLserver, 727
Apache, 689
APACI, 719
API, 138,475
APNIC, 587
AppleShare, 68
AppleTalk, 68
ARP, протокол, 104, 478, 510
arp, команда, 122
RARP, 118
кэш, 104
тайм-аут, 111
ARPA, 43
AS, автономные системы, 391
ASCII, 37
ASN.l, 779
ASP, 701
В
BBN, 44
BCC, поле, 679
BGP, 351
BGP, протокол, 327
BIND, 571,747
biod, демон, 654
BITNET, 45
ВООТР, протокол, 162
формат сообщений, 166
В-узлы, 142
С
Caldera, 68
CAST, шифрование, 462
CATNIP, 306
СВС, 317
СС, поле, 679
CERN, 45, 688
CERT, 453
CGI, 690,699
CHAP, 419
ciaddr, поле, 168
CIDR, 88,368
CIFS, 666
Clipper, чип, 462
CMIP, 763
CMW, 792
CNAME, 132
Coded Drag, схема шифрования, 459
CORE, 585
CSLIP, 69,421
CSNET, 45
Cyberguard, брандмауэр, 453
D
Debian, 68
DECnet, 101
DefaultRcvWindow, параметр, 502
DefaultTTL, параметр, 501
DES, шифрование, 461, 631
DF, флаг, 62,216
DHCP, 170
ВООТР, сообщения, 166
NetWare, 558
TCP/IP, конфигурация, 171
серверы, 157
dig, 806
DNS
Linux, 748
NetWare, 559
DNS (продолжение)
WINS, 156
демоны, 753
иерархии, 124
клиенты, 742
разрешение имен, 124
резольвер, 745
ресурсные записи, 745
серверы имен, 479, 526, 742, 744
файлы, 748
DOS, 538
DSL, 69
DSS, 463
DTD, 698
E
EBCDIC, 37
EGP, протокол, 327,779
EMS, 775
ESP, 318
Ethereal, 763
Ethernet
кадры, 102
префиксы, 811
exec, команда, 582
Expert Sniffer, 761
exportfs, команда, 658
F
file, поле, 168
FIN, управляющий бит, 60
Finger, 48,545,592
FTP, 64,545,599
fwhois, команда, 589
G
GGP, 350
giaddr, поле, 168
GMT, 236
GRE, протокол, 430
GSA, 587
gzip, 725
H
HDLC, 581
HELLO, протокол, 350
HINFO, записи, 133
hlen, поле, 168
hops, поле, 168
HTML, 691,696
HTTP, 54,689,693
S-HTTP, 697
Telnet, 634
httpd.conf, файл, 720
HTTP-ng, 701
htype, поле, 168
Н-узлы, 142
I
12 (Internet2), 53
IANA, 54,91
ICANN, 54,93
IDEA, 461,462
IEEE 802.3, 207
IESG, 46
IETF, 53,689
ifconfig, 806
ihave, команда, 705
HOP, протокол, 702
IMAP, 479,681
IN-ADDR-ARPA, формат, 746
InterNIC, 55,73,480
IP, 190, 198, 204
CIDR, 88
IPv4, заголовки, 192
NetWare, 548
TUBA, 212
UDP, 299
адрес отправителя, 62
адрес получателя, 63
адресация, 70, 103
дейтаграммы, 209
заголовки расширения, 312
контрольная сумма, 62
конфигурация, 476
параметры, 507
срок жизни, 62
туннелирование, 548
флаги, 62
IPP, 54,408,702
IPSec, 312,434
ESP, 439
SPI, 442
аутентификация, 439
туннелирование, 442
IPv6, 307
адресация, 96, 311
альтернативные адреса, 311
IPv6 {продолжение)
групповые адреса, 311
заголовки расширения, 312
направленные адреса, 311
переход с IPv4, 323
IRTF, 689
ISDN, 414
ISDN, записи, 134
ISOC, 53,689
3
Java, 699
JavaScript, 700
К
KDC, 464
Kerberos, 464,639
kill, команда, 581
L
LANtern, 763
LDAP, 674
LDPA, 408
Linux, 68
Apache, 689
DNS, 748
FTP, 616
PPP, 578
TCP/IP, 563
демоны, 653
загрузка, 729
клиенты, 754
поддержка туннелирования, 483
linuxconf, 575
LMHOSTS
настройка, 522
разрешение имен NetBIOS, 158
lockd, демон, 652
LPR, протокол, 409
LSA, 334
OSPF, 386
LSAP, 101
м
М, флаг (заголовки расширения IPv6), 317
MAC, 101
Macintosh, клиенты FTP, 614
Mandrake, 68
MB, записи, 134
MBZ, поле, 214
MD, алгоритмы, 463
MF, флаг, 62,216
MG, записи, 135
MIB, 67,770
RMON, 771
SNMP, 779
Microsoft Outlook, 450
Microsoft TCP/IP, конфигурация, 485
Migration Agent, 560
MIME, 675,695
MINFO, записи, 135
Mosaic, 45
mount, команда, 660
mountall, команда, 660
mountd, демон, 652
MR, записи, 135
MRU, 425
MSS, 264
MSTCP, ключ, 501
MTA, 673
MTU, 194,206
MX, записи, 135
М-узлы, 142
N
NAT, 92
NBNS, 522
NCP, 44
NCSA, 688
NDIS, 476
NDS, 548
NetBIOS, 138
TCP/IP, 670
WINS, 144
имена, 139
конфигурация, 503
кэш, 522
разрешение, 159
netcfg, программа, 575
NetGuardian, 786
Netscape, 689
web-сайт, 464
web-серверы, 714
netstat, 806,812
NetWare
DDNS, 559
DHCP, 559
DNS, 559
NetWare (продолжение)
IP, 550
IPX, 671
SLP, 559
режим совместимости", 560
установка, 555
NETWORKS, файл, 533
NFS, 36,66,648
клиентские команды, 659
монтирование, 654
приложения, 660
протоколы, 664
серверные команды, 656
nfsd, демон, 652
NGI, 52
NNTP, 49,707
команды, 708
конференции, 705
сообщения, 708
Novell, 34,548
NS, записи, 132
nslookup, 806
NTIA, 55,585
NVT, 622
О
ODI, 476
OSI, эталонная модель, 32
OSPF, 385
заголовки, 394
зоны, 387
обновления маршрутов, 391
построение маршрутов, 401
структуры данных, 394
OUI, 100
Р
РАР, протокол, 418
PCAnywhere, порты, 795
PCI, 759
PCMCIA, 471
Perl, 699
PGP, 460,683
PID, 581
POP, протокол, 479, 681
PPP, протокол, 45, 69
Linux, 578
дейтаграммы, 423
РРТР, протокол, 428
PROTOCOL, файл, 534
PSH, управляющий бит, 60
PSH, флаг, 264,291
PTR, записи, 133
PWG, 408
PWS, 716
Р-узлы, 142
Q
qi, 593
QoS
PPP, 426
параметры, 213
QUIT, команда, 710
R
RADIUS, 417
аутентификация, 418
модель клиент-сервер, 417
RARP, протокол, 118
гс, сценарии, 731
RC2/RC4, шифрование, 462
гср, команда, 642
RedHat Linux, 68
гехес, команда, 644
RFC, 46,805
RIP, протокол, 334, 350
адреса, 358
недостатки, 382
обновление, 814
топология, 362
RIPE, 587
ripquery, 806,814
rlogin, команда, 642
RMON, 771
RP, записи, 136
RPC, 650
rpc.lockd, демон, 654
rpc.mountd, демон, 653
rpc.nfsd, демон, 653
rpc.statd, демон, 654
RSA
web-сайт, 640
общие сведения, 640
rsh, команда, 545, 641
RST, бит, 264
RST, управляющий бит, 60
RT, записи, 136
rup, команда, 643
ruptime, команда, 643
rwho, команда, 643
RWhois, 588
r-команды, 636
альтернативы, 640
безопасность, 637
демоны, 641
список, 641
файлы, 644
функциональность, 646
S
S/MIME, 675
Samba, 666
SAP, протокол, 553
SERVICES, файл, 498,535
SGML, 698
SHA, алгоритм, 463
SHS, стандарт, 463
S-HTTP, 697
SIPP, 306
Skipjack, система шифрования, 462
SLIP, 69
Linux, 578
транспорт, 420
SMB, 485
SMDS, 207
SMTP, 49,449
sname, поле, 168
SNMP, 37,67,756
MIB, 779
Unix, 781
установка, 766
snmpd.conf, файл, 782
snmpd.trap, файл, 783
SOA, записи, 127
SOCKS, 448
Solaris
демоны, 651
команды, 658
файлы, 654
ssh, команда, 451, 631
SSL, 697
stty, команда, 582
SYN, управляющий бит, 60
т
ТСВ, 260
TCP, 58,59,223,248
АСК, 60
TCP (продолжение)
UDP, 200
адаптивный тайм-аут, 275
контрольная сумма, 60
заголовки, 195
мультиплексирование, 255
надежность, 252
реализация, 281
сегменты, 250
смещение данных, 264
управляющие биты, 60
флаги, 264
TCP/IP
NetBIOS, 670
Telnet, 633
архитектура, 58
клиенты, 114
командная строка, 544
модели, 190
настройка, 162
параметры, 819
применение, 68
протоколы, 58
серверы, 114
уровни, 58
установка, 505
эталонные модели, 40
Telnet, 43,49,620
TCP Wrappers, 630
команды, 627
трассировка, 284
TFTP, 65, 168, 545
Tiny IDEA, 461
Token Ring, 36, 207
TOS, 211
коды, 213
пакеты IP, 213
TUBA, 212
TXT, записи, 136
и
UDP, 58,200,299,671
TCP, 200
заголовок, 300
инкапсуляция, 301
трассировка, 302
функции, 200
umount, команда, 661
unshare, команда, 659
unshareall, команда, 659
URG, управляющий бит, 60
URL, 714
Usenet, 49,704
спам, 711
UUCP, 468
V
vBNS, 52
VLSM, 77,87
VPN, 801
PPTP, 439
w
W3C, 690
WebNFS, 665
WebSTAR, 728
web-серверы
AOLserver, 727
Apache, 722
Netscape, 727
Stronghold, 728
WebSTAR, 728
Whois, протокол, 48, 631
WHOIS++, 592
Windows, 68
Apache, 725
Ethereal, 763
SNMP, 784
TCP, 58, 198
winipcfg, программа, 500
WINS
DHCP, 157
NetBIOS, 144
адреса, 514
конфигурация, 493
WKS, записи, 137
World Wide Web, 49,688
X
X.25
MTU, 207
X.400, 673
X25, записи, 137
XDR, 36,650
XML, 698,702
Y
yiaddr, поле, 168
A
адаптивный алгоритм повторной
передачи, 276
адаптивный тайм-аут, 275
администрирование
IP-адреса, 171
WINS, 149
Интернет, 53
адреса
ARP, дублирование, 114
CIDR, 88
IP, 70, 103
IP, специальные, 77
IPv6, 96,311
MAC, 101
URL, 689
Whois, протокол, 584
WINS, 514
двоичная запись, 70
класс А, 73
класс В, 74
класс D, IPv4, 75
класс С, IPv4, 74
основной шлюз, 479
отправителя, 207
физические, 100
активные иерархии Usenet, 706
алгоритмы
TCP, 275
Нейгла, 282
анонимная электронная почта, 686
анонимный доступ FTP, 616
апплеты, 700
архитектура
TCP/IP, 58
адресация IP, 70
атаки, 795
DoS, 795
вирусы, 797
подбор паролей, 794
троянские программы, 795
черный вход, 795
атрибуты, Х.400, 673
аутентификация
РРТР, 431
RADIUS, 417
цифровые подписи, 463
Б
базы данных
Whois, 584
распределенные, 127
безопасность, 444, 456
CERT, сайт, 453
FTP, 612
IP, 516
IPSec, 312,434
Kerberos, 464
r-команды, 637
SNMP, 768
Telnet, 630
атаки, 795
аутентификация, 425
брандмауэры, 444, 803
доверительные отношения, 467
модемы, 469
порты, 795
приложения, 799
файлы, 802
цифровые подписи, 463
шифрование, 459, 793
электронная почта, 683
Бернерс-Ли, Тим, 45
Бернерс-Ли, тип, 688
билеты Kerberos, 640
брандмауэры, 444
браузер, 668, 691
в
версии
IP, 62,71
вирусы, 684, 797
г
глобальные сети, 56, 275, 482, 760, 791
граничные шлюзы (OSPF), 387
Д
Дейкстры, алгоритм, 385, 398
дейтаграммы
IP, 209
IPv6, 307
заголовки, 210
транспортировка, 420
фрагментация, 209
демоны, 112
DNS, 753
демоны (продолжение)
finger, 595
FTP, 616
NFS, 651
Solaris, 651
Telnet, 623
Unix, 638
WHOD, 302
динамическое разрешение имен
NetBIOS, 143
директивы, LMHOSTS, 159
дистанционно-векторная
маршрутизация, 331, 358
Диффи—Хеллмана, алгоритм, 463
доверительные отношения, 468
домены
BIND, 747
CIDR, 368
верхнего уровня, 586
имена, 585
ж
жесткое монтирование, 651, 664
з
заголовки, 759
HTTP, 693
IP, 61
IPv4, 192
IPv6, 307
LSA, 398
OSPF, 394
TCP, 57, 59, 195
загрузка, в Linux/Unix, 729
записи
A, 132
CNAME, 132
HINFO, 133
ISDN, 134
MB, 134
MG, 135
MINFO, 135
MR, 135
MX, 135
NS, 132
PTR, 133
RP, 136
RT, 136
TXT, 136
записи (продолжение)
WKS, 137
Х25, 137
ресурсные (RR), 745
запросы
имена, 145
итеративные, 124
обратное разрешение имен, 129
рекурсивные, 124
зарегистрированные порты TCP, 263
зоны, 387
и
иерархии
DNS, 124
подсети, 81
имена
BIND, 747
DNS, 123
NetBIOS, 139
Usenet, 707
возобновление, 145
домены, 585
запросы, 145
резольвер, 747
серверы, 100, 479
сообществ, 768
широковещательная рассылка, 522
инициализация
Unix/Linux, 729
инкапсуляция, 301
интеграция
DNS/WINS, 156
сетевое моделирование, 764
унаследованные приложения, 669
Интернет
администрирование, 53
будущее, 52
демон, 799
история, 43
регистрация, 584
службы, 48
интерфейсы
APACI, 719
API, 138
Ethernet, 569
интрасети, 47, 68
искусственный интеллект, 775
итеративные запросы, 129
итеративные операции, 747
к
кабельные модемы, 69, 414
кадры
Ethernet, 102
размер, 208
сети, 102
канал, 385
канальный уровень, 34, 59, 64
каталоговые службы, 674
класс А, адреса, 73
класс В, адреса, 74
класс С, адреса, 74
класс D, адреса, 75
класс Е, адреса, 76
клиенты
ВООТР, 162
DHCP, 171
FTP, 65,599
Linux, 754
NFS, 648
NNTP, 707
RARP, 119
TCP/IP, 114
Unix, 754
ключи, 640
команды
arp, 122,806
CLOSE, 628
exec, 582
finger, 593
ftp, 603
fwhois, 589
GET, 67
GETNEXT, 67
HELP, 628,709
ifconfig, 566,806
kill, 581
make, 719
mount, 660
mountall, 660
netstat, 812
next, 709
ping, 568,806
rep, 642
rexec, 644
rlogin, 642
route, 566
rsh, 641
rup, 643
команды (продолжение)
ruptime, 643
rwho, 643
r-команды, 636
SEND, 628
SET, 67
share, 657
shareall, 657
showmount, 657
SMTP, 676
SNMP, 67,771
Telnet, 625
TRAP, 67
umount, 661
umountall, 661
VRFY, 633
компиляция, Apache, 722
контактные лица (Whois), 584
контрольная сумма, 399
IP, заголовок, 62
OSPF, заголовок, 395
TCP, 60,271
UDP, 300
конференции, 705
конфигурация
/etc/hosts.allow, 631
/etc/hosts.deny, 631
Apache, 720
BOOTP, 162
DHCP, 171
FTP, 539
HOSTS, 532
IP-адреса, 95
LMHOSTS, 522
SLIP, 578
TCP/IP, 171
Windows, 112
WINS, 514
безопасность, 803
интерфейс обратной связи, 567
интерфейсы Ethernet, 569
сети, 476
физические адреса, 100
корректное завершение, 267
кэш
ARP, 112
DNS, 128
NetBIOS, 522
Л
логическая смежность, 31
локальные сети, 791
TCP, 275
VLAN, 483
анализ, 760
м
маршрут по умолчанию, 360
маршрутизаторы, 323, 326, 348
ARP, 109,479
SNMP, 67
адаптивный тайм-аут, 275
отмеченные, 398
сетевой уровень, 34
маршрутизация, 309, 326
CIDR, 88,368
от источника, жесткая, 233
от источника, свободная, 233
маски подсетей
CIDR, 480
VLSM, 368
диагностика, 823
настройка, 477
методы
запросы HTTP, 692
разрешение имен, 520
миграция NetWare, 558, 560
сценарии, 561
тестирование, 561
многоадресные хосты, 117
модели
OSI, эталонная, 32
TCP/IP, 40, 190
модемы, 413
безопасность, 469
кабельные, 414
монтирование
NFS, 654
жесткое/мягкое, 650
ресурсы, 659
мосты, 348
ARP, ИЗ
IPX-TCP/IP, 560
мультиплексирование
TCP, 255
потоки данных, 197
мягкое монтирование, 651
н
Нейгла, алгоритм, 282
о
однородные сети, 402
октеты, 70
адреса IPv4 класса А, 73
адреса IPv4 класса В, 74
адреса IPv4 класса С, 74
адреса IPv4 класса D, 75
адреса IPv4 класса Е, 76
операционные системы, 68
оптимизация
NetBIOS, 144
производительность, 773
основной сервер RARP, 121
основной шлюз, 825
открытые сети, 29
многоуровневая структура, 30
эталонная модель OSI, 32
открытые стандарты, 30
п
пакеты
АСК, 293
DHCP, 176
TCP, 261
UDP, 302
транспортный уровень, 35
фильтрация, 448
форматы, 354
параметры
IP, 507
SNMP, 768
TCP/IP, 819
пароли, 466
безопасность, 792
надежность, 468
переполнение буфера, 796
переходы, 377
планирование сети, 757
порт данных FTP, 601
порты, 715
FTP, 613
PCAnywhere, 795
TCP, 195
трехфазное согласование, 288
порядковый номер, 59, 263, 273
почтовые службы, SMTP, 66
представительский уровень, 37, 668
прерывание, 778
префиксы Ethernet, 811
привилегии, 792
прикладной уровень, 37, 58, 826
приложения
FTP, 599
Linux, 563
NFS, 648
RFC, 805
TCP, 195
безопасность, 799
фильтры, 804
шифрование, 793
прокси-серверы, 444, 455
протоколы
ARP, 104,524
CHAP, 419
CSLIP, 69,421
EGP, 779
FTP, 64,633
GRE, 430
HELLO, 396
HTTP, 689
HOP, 702
ШАР, 479, 681
IP, 61, 190
IPP, 408,702
IPSec, 434
L2TP, 433
LDAP, 674
NetWare, 555
NFS, 664
NNTP, 707
OSPF, 386
PAP, 418
POP, 479,681
PPP, 69
PPTP, 428
SLIP, 69
SMTP, 66,673
SNMP, 67,756
SPF, 334,386
TCP, 223,248
TCP/IP, 58, 190
Telnet, 620
TFTP, 65, 168, 599
TUBA, 212
протоколы (продолжение)
UDP, 200,299,671
Whois, 584
Х.400, 673
анализаторы, 759
верхнего уровня, 670
дистанционно-векторные, 351
маршрутизации, 327
процессы
ink, 729
взаимодействие, 31
управление, 740
р
разрешение
DNS, 124
NetBIOS, 143
физические адреса, 104
регистрация
имен, 144
протокол Whois, 584
редиректор, 474
реестр, 498
WINS, 142
режим совместимости, 560
режимы
двоичный, 618
дуплексный, 36
полудуплексный, 36
совместимости, 560
текстовый, 618
установка NetWare, 555
резольвер, 745
рекурсивные запросы, 128
рекурсивные операции, 745
репликация
WINS, 155
ресурсы
NFS, 648
демонтирование, 661
монтирование, 659
ретрансляция
IP, 551
С
сеансовый уровень, 35
сеансы, 592, 636
серверы
AOLserver, 727
Apache, 689
серверы (продолжение)
ВООТР, 162
DHCP, 171
DNS, 124,754
Finger, 593
FTP, 65,600,616
HTTP, 693
Kerberos, 464
NBNS, 522
NetWare, 548
NFS, 663
NNTP, 706
PWS, 727
RARP, 118
Stronghold, 728
Telnet, 64
WebSTAR, 728
Whois, 586
WINS, 491
имен, 100
типы, 720
сетевой уровень, 34, 59, 64
сетевые платы
модемы, 472
настройка, 470
службы, 475
установка, 470
сети
ARP, 121
IP, 70
OSPF, 386
ping, 806
атаки, 795
автономные системы, 349
глобальные, 482
доступ, 807
интрасети, 68
кадры, 102
маршрутизация, 813
мосты, 348
протоколы, 735
разнородные, 44
хосты, 736
эволюция открытых сетей, 30
сжатие
баз данных WINS, 150
синдром мелкого окна, 279
синтаксис, LMHOSTS, 526
системы
Linux/Unix, 729
экспертные, 761
скользящее окно, 254
службы, 475
Finger/Whois, 48
FTP, 539
NetBIOS, 519
NNTP, 704
SNMP, 766
Telnet, 49
Usenet, 49
WWW, 49
анонимная почта, 686
безопасность, 449
электронная почта, 49
смещение фрагмента, поле, 218
согласование, 336
сокеты
TCP, 198
WinSocks, 139
сообщения
ARP, запросы, 106
ВООТР, 166
TCP, форматы, 261
управляющие, 707
спам, 686, 711
средства моделирования, 764
стандарты
шифрование, 683
электронная почта, 667, 672
статическая маршрутизация, 327
статические записи (WINS), 149
сценарии
гс, 731
т
тайм-аут
ARP, 111
TCP, 275
интервалы, 276
типы
MIME, 695
топология
RIP, 362
изменение, 336
транспортный уровень, 35, 59, 63
трехфазное согласование, 266
троянские программы, 795
туннели, 427
IPSec, 434
L2TP, 433
РРТР, 428
У
удаленный доступ, 413
RADIUS, 417
передача IPX в IP, 427
транспорт, 420
туннелирование, 427
узлы
В, 142
Н, 142
М, 142
Р, 142
уровни
TCP/IP, 58
UDP, 301
канальный, 34
межсетевой, 41
межхостовой, 41
представительский, 37, 668
прикладной, 37, 40, 826
сеансовый, 35
сетевого доступа, 41
сетевой, 34
транспортный, 35
физический, 33
установка
Apache, 717
FTP, 539
NetWare, 555
TCP/IP, 505
Ф
файловые системы
Linux, 565
NFS, 661
файлы
/etc/ftpusers, 613
/etc/hosts, 645
/etc/hosts.allow, 646
/etc/hosts.deny, 646
/etc/hosts.equiv, 645
/etc/inetd.conf, 739, 799
/etc/inittab, 730
/etc/networks, 742
/etc/protocols, 735
файлы (продолжение)
/etc/red, 722
/etc/resolv.conf, 742
/etc/services, 737
HOSTS, 142
LMHOSTS, 142,526
NETWORKS, 533
SERVICES, 535
snmpd.conf, 782
snmpd.trap, 783
фальсификация, 646, 796
физические адреса, 100
arp, команда, 122
RARP, 118
дублирование, 100
кэш, 104
тайм-аут, 111
физический уровень, 33
фиксированные метрики, 382
фильтрация
IP, 516
пакетов, 804
Флетчера алгоритм, 399
форматы
IN-ADDR-ARPA, 746
IPv4, адреса, 70
TCP, сообщения, 261
UDP, заголовки, 300
фрагментация, 194
х
хосты
/etc/hosts, файл, 736
/etc/services, файл, 737
TCP, 249
Telnet, 620
Whois, протокол, 586
конфигурация, 532
хэш-таблицы, 745
ц
централизация (NFS), 648
демоны, 651
команды, 651
монтирование, 654
реализация, 648
серверные команды, 656
центры распределения ключей, 464
ш
широковещательная рассылка
IP-адреса, 78
имена, 522
шифрование, 459
3DES, 461
CAST, 462
СВС, 317
CodeDrag, 459
DES, 461
IDEA, 461
Skipjack, 462
электронная почта, 683
шлюзы, 348
IPX-IP, 550
диагностика, 825
и маршрутизаторы, 348
протоколы, 348
удаление, 509
э
эволюция открытых сетей, 30
экстрасети, 56
электромагнитные помехи, 194
электронная почта, 49, 667, 672
ШАР, 681
POP, 681,682
SMTP, 66,673
безопасность, 683
Т. Паркер, К. Сиян
TCP/IP. Для профессионалов
3-е издание
Перевел с английского Е. Матвеев
Главный редактор Е. Строганова
Заведующий редакцией И. Корнеев
Руководитель проекта Ю. Суркис
Научные редакторы Е. Матвеев
Литературный редактор А. Пасечник
Художник Н. Биржаков
Корректор В. Листова
Верстка Р. Гришанов
Лицензия ИД № 05784 от 07.09.01.
Подписано в печать 23.10.03. Формат 70X100/16. Усл. п. л. 69,66.
Тираж 4000 экз. Заказ № 897.
ООО «Питер Принт». 196105, Санкт-Петербург, ул. Благодатная, д. 67в.
Налоговая льгота - общероссийский классификатор продукции
ОК 005-93, том 2; 953005 - литература учебная.
Отпечатано с готовых диапозитивов в ФГУП «Печатный двор» им. А. М. Горького
Министерства РФ по делам печати, телерадиовещания и средств массовых коммуникаций.
197110, Санкт-Петербург, Чкаловский пр., 15.