Поле Длина, байт Описание |
Protocol 4 OxFF 'SMB' — константа, идентифицирующая протокол. Command 1 Код операции, запрашиваемой сообщением, или код операции, на которую отвечает данное сообщение. В Действительности по сети передается числовой код команды, однако в описании протокола используются текстовые идентификаторы. Например, идентификатор SMB_COM_READ означает число 10. DosError/ 4 Код результата. NTStatus Flags + Flags23 Биты, которые в зависимости от диалекта указывают на возможности клиента. Старший бит первого байта означает, что данное сообщение — ответ сервера на команду клиента. Connectionless12Структура данных, используемая при передаче 8MB по протоколу без соединения, например, по IPX TID 2 Идентификатор «дерева», к которому относится операция. PID 2 Идентификатор издавшего запрос процесса на клиентской машине. UID 2 Непроверенный идентификатор пользователя. MID 2 Зарезервирован. WordCount 1 Число дополнительных параметров. ParameterWords 2*WordCount Дополнительные параметры команды. ByteCount 2 Длина буфера. Buffer ByteCount Буфер данных. Например, в этот буфер помещается информация, считываемая из файла или подлежащая записи в файл. |
Открытие сеанса
После того, как клиент установил с сервером транспортное соединение, начинается обмен сообщениями, который приводит к образованию сеанса SMB. Команды доступа к данным могут выполняться только в контексте открытого сеанса. Последовательность сообщений, передаваемых для открытия сеанса SMB, такова (рис. 4-2):
Рис. 4-2. Последовательность сообщений SMB при открытии сеанса.
Первой должна быть обязательно команда согласования диалекта.
SMB_COM_NEGOTIATE
Этой командой клиент инициирует согласование диалекта SMB. В качестве параметров команды передается массив текстовых строк, представляющий собой список поддерживаемых клиентом диалектов SMB. Например, клиент операционной системы Windows 95 передает массив:
PC NETWORK PROGRAM 1.0
MICROSOFT NETWORKS 3.0
DOS LM1.2X002
DOS LANMAN2.1
Windows for Workgroups 3.1a
NT LM 0.12
Клиент Windows NT 4.0 формирует этот список иначе:
PC NETWORK PROGRAM 1.0
XENIX CORE
MICROSOFT NETWORKS 1.03
LANMAN1.0
Windows for Workgroups 3.1a
LM1.2X002
LANMAN2.1
NT LM 0.12
Сервер выбирает самый старший диалект из поддерживаемых как клиентом, так и сервером, и возвращает сообщение, содержащее параметры дальнейшей работы. Из них самыми важными, с точки зрения системы безопасности, являются:
индекс выбранного диалекта в первом слове буфера ParameterWords (например, Windows NT Server укажет индекс 5 для Windows 95 и 7 для Windows NT, что будет означать диалект NT LM 0.12 и в том и в другом случаях);
флаг, указывающий режим системы безопасности сервера: защита на уровне ресурсов или на уровне пользователей (бит 0 второго слова буфера ParameterWords);
флаг, указывающий клиенту, что пароль пользователя следует передавать в зашифрованном виде (бит 1 второго слова буфера ParameterWords);
«вызов» (challenge) — сформированная сервером последовательность из 8 случайных байтов, используемая для проверки пароля; передается в первых 8 байтах буфера Buffer.
Этой информации достаточно, чтобы клиент узнал, когда и, как передавать учетные данные пользователя и открыть сеанс. В частности, если сервер указал, что защита осуществляется на уровне пользователя, клиент должен открыть сеанс.
SMB_COM_SESSION_SETUP_ANDX
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.