Программирование в сетях Windows. Э. Джонс, Д. Оланд
Скачать 2.88 Mb.
|
A n t h o n y J o n e s J i m O h i u n d N e t w o r k P r o g r a m m l n f o r M i c r o s o f t ® W i n d o w s M i c r o s o f t P r e s s Э. Джонс, Д. Оланд Программирование в сетях Microsoft® W i n d o w s i ! " э : МАСТЕР-КЛАСС « . Р У С С К А Я РЕДАКЦИЯ о Москва • Санкт-Петербург • ХарЩсов • Минск 2002 |,К 004.43 Ж 32.973.26-018 иконе Э., Оланд Д ж . i 0 Программирование в сетях Microsoft Windows. Мастер-класс. / Пер. с англ. — Спб.: Питер, М: Издательско-торговый дом «Русская Редакция», 2002. — 608 стр.: ил. ISBN 5 - 3 1 8 - 0 0 7 2 5 - 2 ISBN 5 - 7 5 0 2 - 0 1 4 8 - 1 Книга знакомит читателя с многообразием сетевых функций ОС семей- ства Windows. Обсуждается разработка сетевых приложений на платформе Win32 с использованием интерфейсов программирования NetBIOS и Winsock, а также распространенных протоколов. На конкретных примерах рассмот- рены клиент-серверная модель; установка соединения и передача данных; регистрация и разрешение имен, в том числе применительно к Windows 2000 и Active Directory; широковещание в сети; ATM; QoS и удаленный доступ. В приложениях содержится справочник команд NetBIOS (с указанием вход- ных и выходных параметров), сведения о новых функциях IP Helper, а так- же справочник кодов ошибок Winsock. Адресована как профессиональным программистам, так и новичкам, для которых станет удобным справочником и исчерпывающим пособием по использованию сетевых функций Windows Состоит из 15 глав, трех приложений и предметного указателя; прилагаемый компакт-диск содержит примеры программ. УДК 004.43 ББК 32.973.26-018 Подготовлено к изданию по лицензионному договору с Microsoft Corporation, Редмонд, Ва- шингтон, США Intel — охраняемый товарный знак компании Intel Corporation Active Directory, ActiveX, Authenticode, BackOffice, BizTalk, JScnpt, Microsoft, Microsoft Press, MSDN, MSN, NetMeeting, Outlook, Visual Basic, Win32, Windows и Windows NT являются товарными знаками или охра- няемыми товарными знаками корпорации Microsoft в США и/или других странах Все дру- гие товарные знаки являются собственностью соответствующих фирм Все названия компаний, организаций и продуктов, а также имена лиц и события, ис- пользуемые в примерах, вымышлены и не имеют никакого отношения к реальным компани- ям, организациям, продуктам, событиям и лицам, если особо не указано иное г © Оригинальное издание на английском 1BN 0 - 7 3 5 6 - 0 5 6 0 - 2 (англ.) языке, Microsoft Corporation, 2000 IBN 5 - 3 1 8 - 0 0 7 2 5 - 2 © Перевод на русский язык, Microsoft ' 5 - 7 5 0 2 - 0 1 4 8 - 1 Corporation, 2001 Оглавление Введение XII Ч А С Т Ь I. УСТАРЕВШИЕ СЕТЕВЫЕ API 1 ГЛАВА 1. Интерфейс NetBIOS 2 Интерфейс Microsoft NetBIOS 3 Номера LANA 4 Имена NetBIOS 5 Особенности NetBIOS 8 Основы программирования NetBIOS 9 Синхронный и асинхронный вызов 11 Типичные процедуры NetBIOS 11 Сервер сеансов: модель асинхронного обратного вызова 19 Сервер сеансов: модель асинхронных событий 24 Клиент сеанса NetBIOS 30 Дейтаграммные операции 34 Дополнительные команды NetBIOS 48 Проверка состояния адаптера (команда NCBASTAT) 49 Команда поиска имени (NCBFINDNAME) 51 Сопоставление протоколов номерам LANA 51 Рекомендации по выбору платформ 52 Платформа Windows СЕ 52 Платформа Windows 9x 52 Для любых платформ 53 Резюме 53 ГЛАВА 2. Перенаправитель 54 Универсальные правила именования 55 Поставщик нескольких UNC 55 Компоненты сетевого доступа 56 Перенаправитель 57 Протокол SMB 57 Безопасность 59 Дескрипторы безопасности 59 Маркеры доступа 61 Сетевая безопасность 61 Реквизиты сеанса 61 Пример 62 Резюме 63 ГЛАВА 3. Почтовые ящики 64 Подробности внедрения почтовых ящиков 64 Имена почтовых ящиков 65 )Л * Размеры сообщений 65 0С| Компиляция приложения 67 Коды ошибок 67 Оглавление )бщие сведения об архитектуре клиент-сервер 67 Сервер почтовых ящиков 67 Клиент почтовых ящиков 70 1,ополнительные API-функции почтовых ящиков 72 Тлатформа и производит ельность 7 3 Правила именования < 8 3 > 7 3 Неспособность отменить блокирующие запросы ввода-вывода 74 Утечки памяти 76 'езюме 77 "ЛАВА 4. Именованные каналы 78 [етали реализации именованных каналов 79 Правила именования каналов 79 Режимы побайтовый и сообщений 79 Компиляция приложений 79 Коды ошибок 80 1ростой сервер и клиент 80 Детали реализации сервера 80 Усовершенствованный сервер каналов 87 Детали реализации клиента 95 1,ругие API-вызовы 98 1латформа и производительность 101 'езюме 101 Ч А С Т Ь I I . ИНТЕРФЕЙС ПРИКЛАДНОГО 1РОГРАММИРОВАНИЯ WINSOCK 103 "ЛАВА 5. Сетевые протоколы 104 Характеристики протоколов 104 Протокол, ориентированный на передачу сообщений 104 Обмен данными, с соединением и без него 106 Надежность и порядок доставки сообщений 1 Об Сорректное завершение работы 107 Широковещание данных 108 Многоадресное вещание 108 Качество обслуживания 108 Фрагментарные сообщения 109 Маршрутизация 109 Другие характеристики 109 Тоддерживаемые протоколы 110 Сетевые протоколы, поддерживаемые Win32 110 Сетевые протоколы в Windows СЕ 112 Информация о протоколе 112 Зокеты Windows 116 Простые сокеты 118 Информация о платформах 118 Winsock и модель OSI 119 Зыбор соответствующего протокола 119 5 езюме 120 Оглавление VII ГЛАВА 6. Семейства адресов и разрешение имен 121 Протокол IP 121 Протокол TCP 121 Протокол UDP 122 Адресация 122 Порядок байт 124 Создание сокета 125 Разрешениеимен 125 Инфракрасные сокеты 128 Адресация 128 Разрешение имен 128 Нумерация IrDA-устройств 129 Опрос IAS 131 Создание сокета 133 Параметры сокета 133 Протоколы IPX/SPX 13 3 Адресация 133 Создание сокета 134 Разрешение имен 137 Протоколы NetBIOS 137 Адресация 137 Создание сокета 139 Протокол AppleTalk 140 Адресация 140 Создание сокета 148 Протокол ATM 148 Адресация 149 Создание сокета 153 Привязка сокета к SAP 154 Разрешениеимен 155 Дополнительные функции Winsock 2 155 Резюме 156 ГЛАВА 7. Основы Winsock 157 Инициализация Winsock 157 Проверка и обработка ошибок 159 Протоколы с установлением соединения 160 Серверные API-функции 1б0 API-функции клиента 164 Передача данных 168 Потоковые протоколы 173 Завершение сеанса 175 Пример 176 Протоколы, не требующие соединения 185 Приемник 185 Отправитель 187 Протоколы, ориентированные на передачу сообщений 188 Освобождение ресурсов сокета 189 Пример 189 ЛИ Оглавление 1,ополнительные функции API Функция getpeername Функция getsockname Функция WSADuphcateSocket Функция TransmitFile \пя платформы Windows СЕ 1ругие семейства адресов Протокол AppleTalk Инфракрасные сокеты Интерфейс с NetBIOS Протокол IPX/SPX Протокол ATM 'езюме "ЛАВА 8. Ввод-вывод в Winsock 'ежимы работы сокетов Блокирующий режим Неблокирующий режим Додели ввода-вывода сокетов Модель select Модель WSAAsyncSelect Модель WSAEventSelect Модель перекрытого ввода-вывода Модель портов завершения 'равнение моделей ввода-вывода Клиент Сервер 5 езюме "ЛАВА 9. Параметры сокета и команды управления SBOflOM-ВЫВОДОМ Тараметры сокета Уровень SOLJOCKET Уровень параметров SOLAPPLETALK Уровень параметров SOL IRLMP Уровень параметров IPPROTOJP Уровень параметров IPPROTOTCP Уровень параметров NSPROTO IPX Функции Ioctlsocket и WSAloctl Стандартные ioctl-команды Другие ioctl-команды Ioctl-команды Secure Socket Layer Ioctl-команды для ATM Резюме "ЛАВА 10. Регистрация и разрешение имен введение Модели пространства имен Перечень пространств имен Регистрация службы 197 197 198 198 199 200 201 201 202 202 203 204 204 2 0 5 206 206 208 209 209 213 217 223 234 243 243 243 243 2 4 5 245 246 255 258 262 267 268 272 273 274 282 283 285 2 8 6 286 287 287 289 F Определение класса службы Регистрация службы Запрос к службе Создание запроса Запрос к DNS Резюме ГЛАВА 11. Многоадресная рассылка Семантика многоадресной рассылки Свойства многоадресной рассылки Многоадресная рассылка в сетях IP Протокол IGMP Листовые узлы IP Реализация 1Р-рассылки Многоадресная рассылка в сетях ATM Листовые узлы ATM Корневые узлы ATM Оглавление Многоадресная рассылка с использованием Winsock Рассылка средствами Winsock 1 Рассылка средствами Winsock 2 Общие параметры Winsock Ограничение многоадресной рассылки Резюме ГЛАВА 12. Качество обслуживания Введение Протокол RSVP Сетевые компоненты Компоненты приложения Компоненты политики безопасности QoS и Winsock Структуры QoS Функции, вызывающие QoS Завершение QoS Объекты, относящиеся к поставщику Программирование QoS RSVP и типы сокетов Уведомления QoS Шаблоны QoS Примеры Одноадресный TCP Одноадресный UDP Многоадресный UDP ATM и QoS Резюме ГЛАВА 13. Простые сокеты Создание простого сокета Протокол ICMP Пример Ping при удаленном доступе IX 289 293 299 301 304 307 308 308 311 зп 312 313 314 314 315 315 316 316 323 340 342 342 343 343 344 344 346 347 348 349 352 356 356 365 366 368 371 373 373 394 395 396 397 398 398 399 401 Оглавление Программа Traceroute 411 Протокол IGMP 412 Использование IPJiDRINCL 414 Резюме 424 "ЛАВА 14. Интерфейс Winsock 2 SPI 425 Основы SPI 426 Соглашения SPI об именах 426 Соответствие функций Winsock 2 API и SPI 426 Поставщики транспортной службы 427 Функция WSPStartup 428 Описатели сокетов 433 Поддержка модели ввода-вывода Winsock 435 Модель select 437 Расширенные функции 446 Установка поставщиков транспортной службы 447 Тоставщики службы пространства имен 453 Установка поставщика пространства имен 453 Реализация пространства имен 455 Пример 461 Отладочные функции отслеживания Winsock 2 SPI 466 Резюме 467 "ЛАВА 15. Элемент управления Winsock 468 Свойства 468 Методы 470 События 471 Пример (UDP-приложение) 472 Пересылка UDP-сообщений 476 Прием UDP-сообщений 477 Получение информации от элемента Winsock 478 Запуск UDP-приложения 478 Состояние UDP-сокетов 479 11ример (TCP-приложение) 480 СР-сервер 487 TCP-клиент 489 Получение информации о состоянии элемента управления Winsock 490 Запуск TCP-приложения 490 Состояние ТСР-сокетов 491 Ограничения 491 Гипичные ошибки 493 Ошибка Local address in use 493 Ошибка Invalid Operation at Current State 493 Элемент управления Windows СЕ Winsock 494 Пример 494 Проблема с элементом управления VBCE Winsock 499 Резюме 499 Оглавление XI Ч А С Т Ь I I I . СЛУЖБА УДАЛЕННОГО ДОСТУПА (RAS) 500 ГЛАВА 16. Клиент службы RAS 501 Компиляция и компоновка 502 Структуры данных и вопросы совместимости платформ 503 Обновление DUN 1.3 и Windows 95 503 Функция RasDial 503 Синхронный режим 506 Асинхронный режим 507 Уведомление о состоянии 512 Завершение соединения 513 Телефонный справочник 514 Добавление записей в телефонный справочник 522 Переименование записи телефонного справочника 525 Удаление записей из телефонного справочника 525 Перечисление записей телефонного справочника 526 Управление реквизитами пользователя 527 Многоканальные подзаписи телефонного справочника 529 Управление соединением 530 Резюме 534 Приложение А. Перечень команд NetBIOS 535 Приложение В. Вспомогательные функции IP 549 Возможности утилиты Ipconfig 549 Освобождение и обновление IP-адресов 553 Изменение IP-адреса 554 Возможности утилиты Netstat 554 Получение таблицы TCP-соединений 555 Получение таблицы прослушиваемых портов UDP 556 Получение статистики о протоколе IP 557 Возможности утилиты Route 561 Получение таблицы маршрутов 562 Добавление маршрута 564 Удаление маршрута 565 Утилита ARP 565 Добавление записи ARP 567 Удаление записи ARP 567 Приложение С. Коды ошибок Winsock 568 От авторов 575 Предметный указатель 576 if -Г -д Введение Перед вами книга, посвященная сетевым функциям Windows 9х, NT 4, 2000 и СЕ Она предназначена в первую очередь опытным программистам и спе- циалистам по сетям Впрочем, для начинающих она может послужить полез- ным справочным пособием и даже вводным курсом по сетевым функциям О чем эта книга В книге три части, посвященные работе в сети с применением NetBIOS и пе- ренаправителя Windows, Winsock и RAS соответственно В главе 1 рассматривается NetBIOS По нашему опыту работы в команде поддержки разработчиков Microsoft мы знаем, что многие компании все еще используют эту технологию Между тем, до сих пор нет адекватного руковод- ства по написанию приложений NetBIOS для платформ Win32 В главе 1 так- же приводятся методы написания надежных и переносимых приложений (с учетом, что многие разработчики используют NetBIOS именно для связи с устаревшими системами) Главы 2-4 посвящены перенаправителю Windows, почтовым ящикам и именованным каналам Как вы знаете, почтовые ящики и именованные ка- налы основаны на перенаправителе Мы решили посвятить перенаправите- лю целую главу, чтобы предоставить читателю базовую информацию о том, как три эти технологии соотносятся друг с другом Почтовые ящики — это ненадежный однонаправленный ориентированный на сообщения интер- фейс прикладного программирования, не зависимый от доступных в систе- ме протоколов Именованные каналы обладают более широкими возможно- стями, обеспечивая надежную двустороннюю дейтаграммную или поточную передачу данных Эти каналы используют средства безопасности Windows NT за счет перенаправителя, на что не способен ни один другой сетевой API- интерфейс Вторая часть книги посвящена API-интерфейсу Winsock Глава 5 — это введение в Winsock, где рассказывается о наиболее распространенных про- токолах Winsock Все приложения Winsock должны создавать сокет для осу- ществления связи В этой главе мы приводим основную информацию о воз- можностях каждого протокола, а в главе б — подробное описание, как со- здать сокет и разрешить имя для каждого типа протокола В главе 7 — самое интересное Здесь мы представляем базовую модель про- граммирования клиент-сервер и описываем большинство функций Winsock, которые относятся к установлению и приему связи, передаче данных и г п Далее, в главе 8 рассказывается о методах ввода-вывода в Winsock Так как глава 7 задумывалась как введение в указанную тему, в ней обсуждаются только про- стейшие методы ввода-вывода В главе 8, напротив, эти методы описаны под- Введение робно Если вы новичок в работе с Winsock, то главы 5-7 помогут вам овла- деть основами использования этого API-интерфейса Остальные главы этой части книги посвящены особым аспектам и воз- можностям Winsock Параметры сокетов и команды управления вводом-вы- водом рассмотрены в главе 9 Именно здесь вы найдете описание большинства команд, влияющих на работу сокета или даже протокола На- деемся, эта глава будет полезна, как в учебных, так и в справочных целях В главе 10 рассмотрена регистрация и разрешение имен служб в адреса базового протокола в Winsock 2 Это независимый от протокола метод Рас- пространение Windows 2000 и Active Directory придает данной главе особую значимость Глава 11 посвящена связи «точка — много точек>>, включая многоадресное IP- вещание и ATM В главе 12 описана захватывающая технология — Quality of Service (QoS), позволяющая гарантировать выделение пропускной способ- ности сети для приложений В главе 13 рассказывается о простых 1Р-соке- тах мы рассматриваем, как приложения Winsock могут использовать их для работы с протоколами ICMP и IGMP, а также другие аспекты программиро- вания при помощи простых сокетов В главе 14 описан интерфейс поставщика службы для Winsock — средства, при помощи которого программист может задать уровень между Winsock и поставщиками служб более низких уровней (например, TCP/IP) для управ- ления работой сокета и протокола, регистрацией и разрешением имен Этот сложный инструмент позволяет расширить функциональность Winsock И наконец, в главе 15 обсуждается элемент управления Microsoft Visual Basic для Winsock Мы решили включить эту главу в книгу, так как убедились, что многие разработчики до сих пор полагаются на Visual Basic и этот эле- мент Функциональность элемента Winsock ограничена и не позволяет ис- пользовать дополнительные новые свойства Winsock, но он незаменим для тех, кому требуется простая и легкая в использовании сетевая связь в Visual Basic Часть III посвящена клиентскому серверу удаленного доступа (Remote Access Server, RAS) Мы решили включить в книгу главу о RAS из-за популяр- ности Интернета и широкого распространения коммутируемого доступа к нему Возможность коммутируемого доступа в сетевом приложении очень полезна, так как упрощает работу пользователя с программой То есть конеч- ному пользователю не придется думать, как установить соединение, чтобы работать с сетевым приложением В конце книги — три приложения Приложение А — справочник по ко- мандам NetBIOS, который, по нашему мнению, для программистов бесценен В нем перечислены параметры ввода и вывода для каждой команды В при- ложении В описаны новые вспомогательные функции IP, выдающие полез- ную информацию о сетевой конфигурации текущего компьютера Приложе- ние С — справочник по кодам ошибок Winsock с подробным описанием от- дельных ошибок и возможных причин их возникновения XIV Введение Мы надеемся, что наша работа станет для вас ценным учебным и справоч- ным пособием. Думаем, что это наиболее полная книга о сетевом програм- мировании для Windows. Как пользоваться прилагаемым компакт-диском В тексте книги мы часто приводим примеры программ, иллюстрирующие ра- боту с обсуждаемыми сетевыми API-интерфейсами. Эти примеры записаны на прилагаемый компакт-диск. Для их установки вставьте компакт-диск в диско- вод, и программа Autorun запустит программу установки. Программу установ- ки можно также инициировать вручную, запустив файл PressCD.exe из корне- вого каталога компакт-диска. Вы вправе установить образцы кода на компь- ютер или работать с ними прямо с компакт-диска (из папки Examples\Chap- ters\Chapter XX). ПРИМЕЧАНИЕ Для работы с компакт-диском необходима 32-битная ОС Windows. Наряду с примерами программ в состав компакт-диска ыключена послед- няя версия Microsoft Platform SDK. Мы сделали это, потому что многие из наших примеров рассчитаны на современные заголовочные файлы и биб- лиотеки, которые появились только после Windows 2000 Beta 3. Поддержка Авторы приложили все усилия, чтобы обеспечить точность содержания кни- ги и прилагаемого к ней компакт-диска. Издательство Microsoft Press публи- кует постоянно обновляемый список исправлений и дополнений к своим книгам по адресу http://mspress.microsoft.com/support/. Многие определения функций и таблицы в книге адаптированы или пе- реизданы с разрешения и при активном участии группы документирования Microsoft Platform SDK. Часть материала основана на предварительно разра- ботанной документации и может претерпеть изменения. Информацию, об- новления и исправления ошибок по последней версии SDK см. на Web- узле MSDN по адресу: http://msdn.microsoft.com/developer/sdk/platform.asp. Если все же у вас возникнут вопросы или вы захотите поделиться свои- ми предложениями или комментариями, обращайтесь в издательство Mic- rosoft Press по одному из этих адресов: mspinput@microsoft.com Microsoft Press Attn: Network Programming for Microsoft Windows Editor One Microsoft Way Redmond, WA 98052-6399 Ч А С Т Ь I УСТАРЕВШИЕ СЕТЕВЫЕ API о Первая часть издания посвящена сетевому интерфейсу NetBIOS, перенапра- вителю и типам использующих его сетевых соединений. Хотя в книге в ос- новном обсуждается программирование средствами Winsock, мы включили в нее часть I, так как устаревшие сетевые API имеют некоторые преимуще- ства перед Winsock. В главе 1 рассматривается интерфейс NetBIOS, который, как и Winsock, является независимым от протокола сетевым API. NetBIOS обеспечивает асинхронные вызовы, а также совместимость со старыми операционными системами типа OS/2, DOS и др. В главе 2 обсуждается перенаправитель, с которым связаны две следующие темы: почтовые ящики (глава 3) и имено- ванные каналы (глава 4). Перенаправитель обеспечивает независимый от транспорта ввод-вывод файлов. Почтовые ящики — это простой интерфейс, который помимо прочего поддерживает широковещание и однонаправлен- ное взаимодействие между компьютерами под управлением Windows. Нако- нец, именованные каналы дают возможность использовать двусторонний ка- нал связи, который поддерживает функции безопасности Windows. Г Л А В А Интерфейс NetBIOS Network Basic Input/Output System (NetBIOS) — стандартный интерфейс прикладного программирования (application programming interface, API), разработанный Sytek Corporation для IBM в 1983 г. NetBIOS определяет про- граммный интерфейс для сетевой связи, но не обусловливает физический способ передачи данных по сети. В 1985 г. IBM предприняла попытку сфор- мировать цельный протокол — создала NetBIOS Extended User Interface (Net- BEUI), интегрированный с интерфейсом NetBIOS. Программный интерфейс NetBIOS вскоре приобрел такую популярность, что поставщики ПО начали реализовать его для других протоколов, таких как TCP/IP и IPX/SPX. В на- стоящее время NetBIOS используют платформы и приложения во всем мире, включая многие компоненты Windows NT, Windows 2000, Windows 95 и Windows 98. ПРИМЕЧАНИЕ Windows СЕ не дает возможности использовать Net- BIOS API, хотя поддерживает транспортный протокол TCP/IP, имена NetBIOS и механизм их разрешения. В Win32 интерфейс NetBIOS обеспечивает обратную совместимость со старыми приложениями. В этой главе обсуждаются главные принципы про- граммирования с помощью NetBIOS, начиная с имен NetBIOS и номеров LANA. Мы рассмотрим основные услуги, предлагаемые NetBIOS, включая те, что обеспечивают связь с установлением соединения или без такового (дей- таграммные). В каждом разделе будет приведен простой клиент-серверный пример. Завершит главу обзор типичных ошибок. В приложении А вы най- дете список команд NetBIOS с обязательными параметрами и кратким опи- санием. Сетевая модель 0SI Модель Open Systems Interconnect (OSI) обеспечивает высокоуровне- вое представление сетевых систем. Ее семь уровней полностью опи- сывают фундаментальные сетевые концепции: от приложения до спо- соба физической передачи данных. Вот эти уровни: Я прикладной — предоставляет пользовательский интерфейс для передачи данных между программами; • представительский — форматирует данные; Ш сеансовый — управляет связью между двумя узлами; I J • l-\ •_# r-i Ш транспортный — обеспечивает передачу данных (надежную или ненадежную); И сетевой — поддерживает механизм адресации между узлами и маршрутизацию пакетов данных; • канальный — управляет взаимодействием между узлами на физи- ческом уровне; отвечает за группировку данных, передаваемых по физическому носителю; II физический — физический носитель, ответственный за переда- чу данных в виде электрических сигналов. В этой модели NetBIOS относится к сеансовому и транспортному уровням. Интерфейс Microsoft NetBIOS Как уже упоминалось, существуют реализации NetBIOS API для разных сете- вых протоколов, что делает интерфейс независимым от протокола. Иначе говоря, если вы разработали приложение согласно спецификации NetBIOS, оно может использовать протоколы TCP/IP, NetBEUI или даже IPX/SPX. Эта полезная особенность позволяет корректно написанному приложению Net- BIOS выполняться почти на любом компьютере, независимо от физической сети. Однако есть несколько нюансов. Чтобы два приложения NetBIOS мог- ли связаться друг с другом по сети, они должны выполняться на рабочих станциях, имеющих по крайней мере один общий транспортный протокол. Например, если на компьютере Джона установлен только TCP/IP, а на ком- пьютере Мэри — только NetBEUI, приложения NetBIOS на компьютере Джо- на не смогут связаться с приложениями на компьютере Мэри. Кроме того, только определенные протоколы реализуют интерфейс Net- BIOS. Например, Microsoft TCP/IP и NetBEUI делают это по умолчанию, a IPX/ SPX — нет. Поэтому Microsoft предлагает реализующую этот интерфейс вер- сию IPX/SPX, что следует учесть при проектировании сети. При установке протоколов обычно видно, поддерживает ли версия протокола IPX/SPX воз- можности NetBIOS. Например, вместе с Windows 2000 поставляется NWLink IPX/SPX/NetBIOS Compatible Transport Protocol — то, что этот протокол под- держивает NetBIOS, прямо вытекает из его названия. В Windows 95 и Win- dows 98 в окне свойств протокола IPX/SPX есть флажок, с помощью которо- го включается поддержка NetBIOS для IPX/SPX. Важно, что NetBEUI — немаршрутизируемый протокол. Если между кли- ентом и сервером есть маршрутизатор, приложения на этих компьютерах не смогут связаться. Маршрутизатор будет отбрасывать пакеты по мере их при- ема. TCP/IP и IPX/SPX — маршрутизируемые протоколы и не имеют такого ограничения. Так что если вы твердо запланировали использовать NetBIOS, задействуйте в сети по крайней мере один из маршрутизируемых транспор- тных протоколов. Характеристики протоколов и рекомендации по их выбо- ру мы приводим в главе 6. ЧАСТЬ I Устаревшие сетевые API Номера LANA Какое отношение имеют транспортные протоколы к NetBIOS с точки зре- ния программирования' Ключ к пониманию NetBIOS — номера сетевых адаптеров (LAN Adapter, LANA). В первоначальных реализациях NetBIOS каждому физическому сетевому адаптеру присваивалось уникальное значе- ние — номер LANA. В Win32 это стало проблематичным, так как рабочая станция может иметь и множество сетевых протоколов, и множество плат сетевого интерфейса. Номер LANA соответствует уникальным сочетаниям сетевого адаптера с транспортным протоколом. Так, если рабочая станция имеет две сетевых платы и два поддерживающих NetBIOS транспорта (например, TCP/IP и NetBEUI), будет присвоено четыре номера LANA. Номера могут соответство- вать сочетаниям адаптера с протоколом примерно следующим образом: 0 — «TCP/IP — сетевой адаптер 1»; 1 — «NetBEUI — сетевой адаптер 1»; 2 — «TCP/IP — сетевой адаптер 2»; 3 — «NetBEUI — сетевой адаптер 2». Номера LANA лежат в диапазоне от 0 до 9, и операционная система на- значает их без какого-либо определенного порядка Кроме LANA 0, который имеет особый смысл — это номер «по умолчанию» Когда появился интер- фейс NetBIOS, большинство операционных систем поддерживало един- ственный номер LANA и многие приложения были жестко запрограммиро- ваны на работу только с LANA 0. Для обратной совместимости вы можете вручную назначить LANA 0 конкретному протоколу В Windows 95 и Windows 98 можно открыть диалоговое окно свойств се- тевого протокола с помощью значка Network в Control Panel. Выберите вклад- ку Configuration в диалоговом окне Network, затем из списка компонентов — сетевой протокол и щелкните кнопку Properties Вкладка Advanced диалогово- го окна свойств для каждого протокола, поддерживающего NetBIOS, содержит флажок Set This Protocol To Be The Default Protocol Пометка флажка пере- страивает привязки протоколов так, чтобы протоколу по умолчанию был назначен LANA 0 Этот флажок можно пометить только для одного прото- кола Поскольку Windows 95 и Windows 98 поддерживают Plug-and-Play, не требуется явно задавать приоритет протоколов. Windows NT 4 допускает большую гибкость в установке NetBIOS На вклад- ке Services диалогового окна Network выберите NetBIOS Interface из списка Network Services и щелкните кнопку Properties. В диалоговом окне NetBIOS Configuration вы можете явно назначить номера LANA всем сочетаниям се- тевого интерфейса с транспортным протоколом В этом диалоговом окне сетевой интерфейс определяется именем его драйвера. Впрочем, имена про- токолов не всегда говорят сами за себя. На рис 1 -1 показано диалоговое окно NetBIOS Configuration. Оно свидетельствует: на компьютере установлено два сетевых адаптера и три транспортных протокола — TCP/IP (NetBT), NetBEUI (Nbf) и IPX/SPX (NwlnkNb). Щелкнув кнопку Edit, вы можете вручную назна- чить номера LANA для отдельных протоколов. |