Пример обмена пакетами протокола Microsoft SMB между клиентом и сервером описаны ниже. Нижеследующие шаги - обзор процесса:
В шаге 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 Направление передачи: Сервер клиенту Описание: Сервер возвращает запрошенные данные файла в этом пакете. Ошибка здесь вряд будет, потому что доступ на сервер, совместно используемый ресурс и в файл был предоставлен. Однако это возможно, например, если доступ к совместно используемому ресурсу изменяется между временем, когда файл открыт и временем, когда он прочитан. |