Partilhar via


Cenário do Microsoft SMB Protocol Packet Exchange

Este tópico fornece um exemplo de uma troca de pacotes do Microsoft SMB Protocol 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 do 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ê a partir 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 através da conexão TCP. Se o pacote foi formatado corretamente, o servidor retorna um pacote que contém uma mensagem confirmando que a sessão foi estabelecida. Depois disso, o cliente envia os primeiros pacotes do Microsoft SMB Protocol para o servidor.

Pacote 1: SMB_COM_NEGOTIATE
Direção: cliente para servidor
Descrição: 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: servidor para cliente
Descrição: O servidor responde à solicitação do cliente para identificar o dialeto do Microsoft SMB Protocol 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: cliente para servidor
Descrição: Este pacote inclui informações sobre os recursos do cliente, portanto, esse pacote deve ser enviado mesmo que o servidor tenha implementado apenas segurança em nível de compartilhamento.
Pacote 3: SMB_COM_SESSION_SETUP_ANDX
Direção: servidor para cliente
Descrição: Se o desafio/resposta for aceito pelo servidor, um UID válido será incluído no pacote que é retornado ao cliente. Se não for aceite, o servidor irá devolver um código de erro neste pacote e negar o acesso.
Pacote 4: SMB_COM_TREE_CONNECT_ANDX
Direção: cliente para servidor
Descrição: 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: servidor para cliente
Descrição: Se o acesso ao compartilhamento for concedido, o servidor retornará o ID de árvore de 16 bits (TID) que corresponde ao compartilhamento neste pacote. Se o compartilhamento não existir ou se o usuário tiver credenciais insuficientes para acessar o compartilhamento, o servidor retornará um código de erro nesse pacote e negará o acesso ao compartilhamento.
Pacote 6: SMB_COM_OPEN_ANDX
Direção: cliente para servidor
Descrição: O cliente solicita que o servidor abra um arquivo no compartilhamento acessado em nome do cliente. Este pacote contém o nome do arquivo a ser aberto.
Pacote 7: SMB_COM_OPEN_ANDX
Direção: 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 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: cliente para servidor
Descrição: O cliente solicita ao servidor para ler dados do arquivo aberto em nome do cliente e retornar esses dados para o cliente. O ID do arquivo que é obtido pelo cliente quando o arquivo foi aberto é incluído neste pacote, a fim de identificar qual arquivo aberto o servidor deve ler dados.
Pacote 9: SMB_COM_READ_ANDX
Direção: servidor para cliente
Descrição: O servidor retorna os dados de arquivo solicitados neste pacote. Um erro aqui é improvável, dado que o acesso ao servidor, compartilhamento e arquivo foi concedido. No entanto, isso pode acontecer em algumas situações: por exemplo, se o acesso a um compartilhamento for alterado entre o momento em que o arquivo é aberto e o momento em que é lido.

Observação

Se implementar um CIFS que não suporte notificações de alteração, o Windows não pode manter um identificador pendente para o sistema de ficheiros e a ligação SMB pode desaparecer sem aviso prévio.