Compartir a través de


Escenario de intercambio de paquetes del protocolo SMB de Microsoft

En este tema se proporciona un ejemplo de intercambio de paquetes del protocolo SMB de Microsoft entre un cliente y un servidor. Los pasos siguientes son una introducción al proceso:

  1. El cliente y el servidor establecen una sesión netBIOS.
  2. El cliente y el servidor negocian el dialecto del protocolo SMB de Microsoft.
  3. El cliente inicia sesión en el servidor.
  4. El cliente se conecta a un recurso compartido en el servidor.
  5. El cliente abre un archivo en el recurso compartido.
  6. El cliente lee del archivo.

En primer lugar, el cliente establece una conexión TCP dúplex completa con el servidor. A continuación, el cliente compila y envía un paquete de solicitud de sesión netBIOS a través de la conexión TCP. Si el paquete tiene el formato correcto, el servidor devuelve un paquete que contiene un mensaje que confirma que se ha establecido la sesión. Después de esto, el cliente envía los primeros paquetes del protocolo SMB de Microsoft al servidor.

Paquete 1: SMB_COM_NEGOTIATE
Dirección: Cliente al servidor
Descripción: El cliente solicita que el servidor negocie el dialecto del protocolo SMB de Microsoft. En el paquete se incluye una lista de cadenas que identifican los dialectos con los que el cliente puede trabajar.
Paquete 2: SMB_COM_NEGOTIATE
Dirección: Servidor a cliente
Descripción: El servidor responde a la solicitud del cliente para identificar el dialecto del protocolo SMB de Microsoft que se va a usar en la sesión. El paquete devuelto también incluye una cadena aleatoria de 8 bytes que se usará en el paso siguiente para autenticar al cliente durante el proceso de inicio de sesión.
Paquete 3: SMB_COM_SESSION_SETUP_ANDX
Dirección: Cliente al servidor
Descripción: Este paquete incluye información sobre las funcionalidades del cliente, por lo que este paquete debe enviarse incluso si el servidor ha implementado solo la seguridad de nivel de recurso compartido.
Paquete 3: SMB_COM_SESSION_SETUP_ANDX
Dirección: Servidor a cliente
Descripción: Si el servidor acepta el desafío o la respuesta, se incluye un UID válido en el paquete que se devuelve al cliente. Si no se acepta, el servidor devolverá un código de error en este paquete y denegará el acceso.
Paquete 4: SMB_COM_TREE_CONNECT_ANDX
Dirección: Cliente al servidor
Descripción: El cliente solicita acceso al recurso compartido. El paquete contiene la ruta de acceso totalmente especificada del recurso compartido en formato UNC.
Paquete 5: SMB_COM_TREE_CONNECT_ANDX
Dirección: Servidor a cliente
Descripción: Si se concede acceso al recurso compartido, el servidor devuelve el identificador de árbol de 16 bits (TID) que corresponde al recurso compartido de este paquete. Si el recurso compartido no existe o el usuario no tiene credenciales suficientes para acceder al recurso compartido, el servidor devolverá un código de error en este paquete y denegará el acceso al recurso compartido.
Paquete 6: SMB_COM_OPEN_ANDX
Dirección: Cliente al servidor
Descripción: El cliente solicita al servidor que abra un archivo en el recurso compartido al que se tiene acceso en nombre del cliente. Este paquete contiene el nombre del archivo que se va a abrir.
Paquete 7: SMB_COM_OPEN_ANDX
Dirección: Servidor a cliente
Descripción: Si se concede acceso al archivo, el servidor devuelve el identificador de archivo del archivo solicitado. Si el archivo no existe o el usuario no tiene credenciales suficientes para acceder al archivo, el servidor devolverá un código de error en este paquete y denegará el acceso al archivo.
Paquete 8: SMB_COM_READ_ANDX
Dirección: Cliente al servidor
Descripción: El cliente solicita al servidor que lea los datos del archivo abierto en nombre del cliente y devuelva estos datos al cliente. El identificador de archivo obtenido por el cliente cuando se abrió el archivo se incluye en este paquete para identificar el archivo abierto del que el servidor debe leer los datos.
Paquete 9: SMB_COM_READ_ANDX
Dirección: Servidor a cliente
Descripción: El servidor devuelve los datos de archivo solicitados en este paquete. Aquí es poco probable que se haya concedido acceso al servidor, al recurso compartido y al archivo. Sin embargo, puede ocurrir en algunas situaciones: por ejemplo, si se cambia el acceso a un recurso compartido entre el momento en que se abre el archivo y el momento en que se lee.

Nota

Si implementa un CIFS que no admite notificaciones de cambio, Windows no puede mantener un identificador pendiente en el sistema de archivos y la conexión SMB puede desaparecer sin previo aviso.