Обзор компонентов Windows 2000
Протокол SMB
Протокол SMB (Server Message Block) – это протокол, обеспечивающий совместное использование ресурсов в сетях MS-Net, LAN Manager и Windows. Также имеются соответствующие решения для OS/2, Netware, VMS и Unix-систем, разработанные такими производителями, как AT&T, HP, SCO, а при использовании Samba – свыше 33 других. Протокол SMB используется в среде клиент-сервер для обеспечения доступа к файлам, принтерам, почтовым ячейкам (mail slots), именованным каналам (named pipes) и интерфейсам прикладного программирования (Application programming interface, API). Он был совместно разработан компаниями Microsoft, IBM и Intel в середине 80-х годов. Как показано ниже на рисунке, SMB может использоваться поверх нескольких сетевых протоколов:
При установлении SMB-соединения с сервером клиент сначала согласовывает диалект (разновидность протокола SMB, которую они будут использовать). После того, как клиент установил соединение, он может отсылать серверу SMB-команды, позволяющие ему получить доступ к ресурсам.
В основном все SMB-команды можно отнести к четырем категориям:
- Команды для управления сессией.
- Команды для работы с файлами.
- Команды управления печатью.
- Команды для работы с сообщениями.
Безопасность протокола SMB развивалась параллельно с развитием тех платформ, которые использовали данный протокол. В базовой модели протокола SMB определены два уровня безопасности:
- Уровень общих ресурсов. В данном случае защита осуществляется на уровне общих ресурсов сервера. Для получения доступа к каждому общему ресурсу необходим пароль. При этом только тот клиент, которому он известен, сможет получить доступ ко всем файлам, доступным на этом общем ресурсе. Эта модель безопасности была первой, которая применялась в протоколе SMB, и она же являлась единственной моделью безопасности доступной в протоколах Core и CorePlus. В Windows для рабочих групп (Windows for Workgroups) vserver.exe по умолчанию применяла этот уровень безопасности, точно так же его использовала ОС Windows 95.
- Пользовательский уровень. В данном случае защита применяется отдельно для каждого файла каждого общего ресурса и основана на правах доступа пользователей. Каждый пользователь (клиент) должен войти на сервер под своей учетной записью и пройти аутентификацию. После завершения проверки подлинности клиент получает соответствующий идентификатор пользователя (user ID), который он должен предъявлять для получения доступа к ресурсам сервера. Такая модель безопасности была впервые реализована в протоколе LAN Manager 1.0.
Протокол SMB неоднократно изменялся. Самой последней версией протокола SMB является протокол CIFS (Common Internet File System) ОС Windows 2000, который является незначительно измененным вариантом протокола NT LM 0.12, использовавшимся ранее. В следующем разделе детально описывается последняя реализация протокола SMB.
Поддержка протокола SMB через протокол CIFS в Windows 2000
Протокол CIFS является стандартным решением, с помощью которого пользователи сети Windows могут совместно использовать файлы в корпоративных интрасетях и сети Интернет. CIFS является расширенной версией протокола SMB. Протокол CIFS является открытой, кроссплатформенной реализацией протокола SMB, который в настоящее время является черновым вариантом интернет-стандарта. Впервые протокол CIFS был представлен в пакете обновлений SP3 для ОС Windows NT 4.0 и является "родным” протоколом совместного использования файлов для ОС Windows 2000. CIFS является одним из вариантов протокола NTLM 0.12.
Реализация протокола SMB/CIFS в Windows 2000
В протоколе CIFS определен ряд команд, используемых для обеспечения передачи данных между компьютерами, работающими в сети. Система переадресации формирует запросы к удаленным компьютерам в соответствии со стандартами протокола CIFS. CIFS-команды можно пересылать по сети к удаленным устройствам. Система переадресации также использует CIFS для обращения к стеку протокола локального компьютера. CIFS-сообщения можно классифицировать следующим образом:
- Сообщения установления соединения (Connection establishment messages) состоят из команд, которыми начинается и заканчивается соединение системы перенаправление с общим ресурсом на сервере.
- Сообщения пространства имен (Namespace messages) и сообщения манипулирования файлами (File Manipulation messages) используются системой переадресации для получения доступа к файлам на сервере, а также открытия их для чтения и записи.
- Сообщения принтера (Printer messages) используется системой переадресации для отправки данных в очередь печати на сервере, а также для получения информации о состоянии очереди печати.
- Различные сообщения (Miscellaneous messages) используются системой переадресации для записи в почтовые ячейки (mail slots) и именованные каналы (named pipes).
В ОС Windows 2000 протокол CIFS поддерживает распределенные реплицируемые виртуальные тома (например, распределенную файловую систему (Distributed File System, DFS)), блокировку файлов и записей, уведомление об изменении фалов, операции чтения с опережением и записи после выполнения операции. CIFS-соединения устанавливаются поверх стандартной SMB-сессии и механизма разрешения адресов.
Работа по протоколам SMB/CIFS в Windows 2000
Когда приходит запрос на открытие общего файла, система ввода/вывода запрашивает систему переадресации, которая, в свою очередь, запрашивает систему переадресации о выборе подходящего транспортного протокола. Для запросов NetBIOS эти пакеты инкапсулируются в пакеты IP-протокола и доставляются через сеть соответствующему серверу. Сервер получает запрос и отсылает в ответ на него данные.
В ОС Windows NT 4.0 при разрешении имен с помощью службы WINS (Windows Internet Name Service) и службы DNS (Domain Name System) использовался порт 134 протокола TCP. Благодаря расширениям, внесенным в CIFS и NetBT, теперь имеется возможность устанавливать прямые соединения поверх протокола TCP/IP, используя порт 445 протокола TCP. При этом все еще можно использовать оба механизма разрешения адресов в ОС Windows 2000. Имеется также возможность отключить одну из этих служб или обе, путем внесения соответствующих изменений в реестр.