Compartilhar via


Cenário de Troca de Pacotes de Protocolo SMB da Microsoft

Este tópico fornece um exemplo de uma troca de pacotes do Protocolo SMB da Microsoft entre um cliente e um servidor. As etapas a seguir são uma visão geral do processo:

  1. O cliente e o servidor estabelecem uma sessão NetBIOS.
  2. O cliente e o servidor negociam o dialeto protocolo SMB da Microsoft.
  3. O cliente faz logon no servidor.
  4. O cliente se conecta a um compartilhamento no servidor.
  5. O cliente abre um arquivo no compartilhamento.
  6. O cliente lê do arquivo.

Primeiro, uma conexão TCP full-duplex é estabelecida pelo cliente com o servidor. Em seguida, o cliente cria e envia um pacote de solicitação de sessão NetBIOS pela conexão TCP. Se o pacote tiver sido formatado corretamente, o servidor retornará um pacote que contém uma mensagem reconhecendo que a sessão foi estabelecida. Depois disso, o cliente envia os primeiros pacotes do Protocolo SMB da Microsoft para o servidor.

pacote 1: SMB_COM_NEGOTIATE
Direção do : cliente para servidor
descrição do : o cliente solicita que o servidor negocie o dialeto do Protocolo SMB da Microsoft. Uma lista de cadeias de caracteres que identificam os dialetos com os quais o cliente pode trabalhar está incluída no pacote.
Pacote 2: SMB_COM_NEGOTIATE
Direção do : Servidor para cliente
descrição do : o servidor responde à solicitação do cliente para identificar o dialeto do Protocolo SMB da Microsoft que será usado na sessão. O pacote retornado também inclui uma cadeia de caracteres aleatória de 8 bytes que será usada na próxima etapa para autenticar o cliente durante o processo de logon.
Pacote 3: SMB_COM_SESSION_SETUP_ANDX
Direção do : cliente para servidor
Descrição: Este pacote inclui informações sobre os recursos do cliente, portanto, esse pacote deve ser enviado mesmo se o servidor tiver implementado apenas a segurança no nível do compartilhamento.
Pacote 3: SMB_COM_SESSION_SETUP_ANDX
Direção do : Servidor para cliente
descrição do : Se o desafio/resposta for aceito pelo servidor, uma UID válida será incluída no pacote retornado ao cliente. Se não for aceito, o servidor retornará um código de erro neste pacote e negará o acesso.
Pacote 4: SMB_COM_TREE_CONNECT_ANDX
Direção do : cliente para servidor
descrição do : o cliente solicita acesso ao compartilhamento. O pacote contém o caminho totalmente especificado do compartilhamento no formato UNC.
Pacote 5: SMB_COM_TREE_CONNECT_ANDX
Direção do : Servidor para cliente
Descrição: Se o acesso ao compartilhamento for concedido, o servidor retornará a TID (ID da árvore) de 16 bits que corresponde ao compartilhamento neste pacote. Se o compartilhamento não existir ou se o usuário não tiver credenciais suficientes para acessar o compartilhamento, o servidor retornará um código de erro neste pacote e negará o acesso ao compartilhamento.
pacote 6: SMB_COM_OPEN_ANDX
Direção do : cliente para servidor
descrição do : o cliente solicita que o servidor abra um arquivo no compartilhamento acessado em nome do cliente. Esse pacote contém o nome do arquivo a ser aberto.
Pacote 7: SMB_COM_OPEN_ANDX
Direção do : Servidor para cliente
Descrição: Se o acesso ao arquivo for concedido, o servidor retornará a ID do arquivo solicitado. Se o arquivo não existir ou se o usuário não tiver credenciais suficientes para acessar o arquivo, o servidor retornará um código de erro neste pacote e negará o acesso ao arquivo.
Pacote 8: SMB_COM_READ_ANDX
Direção do : cliente para servidor
descrição do : o cliente solicita que o servidor leia dados do arquivo aberto em nome do cliente e retorne esses dados ao cliente. A ID do arquivo obtida pelo cliente quando o arquivo foi aberto é incluída nesse pacote para identificar de qual arquivo aberto o servidor deve ler dados.
Pacote 9: SMB_COM_READ_ANDX
Direção do : Servidor para cliente
descrição do : o servidor retorna os dados de arquivo solicitados neste pacote. Um erro aqui é improvável, dado que o acesso ao servidor, ao compartilhamento e ao arquivo foi concedido. Isso pode acontecer em algumas situações, no entanto: por exemplo, se o acesso a um compartilhamento for alterado entre o momento em que o arquivo é aberto e a hora em que ele é lido.

Nota

Se você implementar um CIFS que não dá suporte a notificações de alteração, o Windows não poderá manter um identificador pendente no sistema de arquivos e a conexão SMB poderá desaparecer sem aviso prévio.