Сценарий обмена пакетами по протоколу Microsoft SMB


Пример обмена пакетами протокола Microsoft SMB между клиентом и сервером описаны ниже. Нижеследующие шаги - обзор процесса:

  1. Клиент и сервер устанавливают сеанс NetBIOS.
  2. Клиент и сервер договариваются о диалекте протокола Microsoft SMB.
  3. Клиент начинает работу (сеанс) на сервере.
  4. Клиент соединяется с совместно используемым ресурсом на сервере.
  5. Клиент открывает файл совместно используемого ресурса.
  6. Клиент читает данные из файла.

В шаге 1, клиентом сначала устанавливается дуплексное подключение TCP с сервером. Затем клиент создает и отправляет пакет запроса на сеанс NetBIOS в подключении TCP. Если пакет был форматирован правильно, то сервер тогда возвращает пакет, содержащий в себе сообщение, в котором подтверждает, что сессия была установлена. После этого клиент отправляет первые пакеты протокола Microsoft SMB серверу.

Пакет 1: SMB_COM_NEGOTIATE
Направление передачи: Клиент серверу
Описание: Клиентские запросы, которыми сервер договаривается о диалекте протокола Microsoft SMB. Список строк, идентифицирующих диалекты, с которыми может работать клиент, включается в пакет.
Пакет 2: SMB_COM_NEGOTIATE
Направление передачи: Сервер клиенту
Описание: Сервер отвечает на запрос клиента о идентификации диалекта протокола Microsoft SMB, который будет использоваться в сеансе. Возвращаемый пакет также включает в себя 8-байтовую случайную строку, которую клиент должен использовать в следующем шаге, чтобы подтвердить свою подлинность в ходе процесса начала сеанса.
Пакет 3: SMB_COM_SESSION_SETUP_ANDX
Направление передачи: Клиент серверу
Описание: Клиент отправляет имя пользователя и пароль в этом пакете с целью получения пользовательского идентификатора (логина) (UID) на сервере. Этот пакет также включает в себя дополнительную информацию относительно клиентских характеристик, таким образом этот пакет должен отправиться даже тогда, когда, сервер осуществил только обеспечение безопасности уровня коллективного использования.
Пакет 3: SMB_COM_SESSION_SETUP_ANDX
Направление передачи: Сервер клиенту
Описание: Если имя пользователя и пароль заверены сервером, правильный UID включается в пакет, возвращенный клиенту. В противном случае сервер должен  возвратить в пакете код ошибки и лишить доступа к серверу.
Пакет 4: SMB_COM_TREE_CONNECT_ANDX
Направление передачи: Клиент серверу
Описание: Клиентские запросы обращаются к совместно используемому ресурсу. Пакет содержит в себе полный заданный путь совместно используемого ресурса в формате соглашения об универсальном назначении имен (UNC).
Пакет 5: SMB_COM_TREE_CONNECT_ANDX
Направление передачи: Сервер клиенту
Описание: Если доступ к совместно используемому ресурсу предоставляется, то сервер возвращает 16-разрядное дерево идентификаторов (TID) соответствующее совместно используемому ресурсу в этом пакете. Если совместно используемый ресурс не будет существовать, или у пользователя нет достаточных прав, чтобы получить доступ к совместно используемому ресурсу, то сервер возвратит код ошибки в этом пакете и лишит доступа к совместно используемому ресурсу.
Пакет 6: SMB_COM_OPEN_ANDX
Направление передачи: Клиент серверу
Описание: Клиент запрашивает сервер, чтобы открыть файл на совместно используемом ресурсе, к которому обращаются от имени клиента (пользователя). Этот пакет содержит в себе имя файла, который будет открыт.
Пакет 7: SMB_COM_OPEN_ANDX
Направление передачи: Сервер клиенту
Описание: Если доступ к файлу предоставляется, то сервер возвращает идентификатор (ID) затребованного файла. Если файл не будет существовать, или у пользователя нет достаточных прав, чтобы получить доступ к файлу, то сервер возвратит код ошибки в этом пакете и отклонит доступ к файлу.
Пакет 8: SMB_COM_READ_ANDX
Направление передачи: Клиент серверу
Описание: Клиент запрашивает сервер, чтобы прочитать данные из открытого файла от имени клиента и возвратить эти данные клиенту. Идентификатор (ID) файла, полученный клиентом, когда файл был открыт, включается в этом пакете, чтобы идентифицировать какой открытый файл, должен быть прочитан.
Пакет 9: SMB_COM_READ_ANDX
Направление передачи: Сервер клиенту
Описание: Сервер возвращает запрошенные данные файла в этом пакете. Ошибка здесь вряд будет, потому что доступ на сервер, совместно используемый ресурс и в файл был предоставлен. Однако это возможно, например, если доступ к совместно используемому ресурсу изменяется между временем, когда файл открыт и временем, когда он прочитан.

Назад в оглавление
На главную страницу
Переведено 16.08.2010 14:10 ©Copyright V. Sokovikov
Hosted by uCoz