3.3.4 Negociando la Variante de Protocolo.

En este punto, existe ya un canal abierto entre el cliente y el servidor. A continuación, el cliente envía un mensaje al servidor para negociar un protocolo SMB. Como ya mencionamos antes, el cliente establece su campo identificador de árbol o "tree identifier" (TID) a cero, ya que no sabe todavía qué TID usar. Un identificador de árbol o TID es un número que representa una conexión a un recurso compartido en un servidor.

El comando en el mensaje es SMBnegprot, una petición para negociar una variante de protocolo que será usada durante toda la sesión. Advierte que el cliente envía al servidor una lista con todas las variantes que este puede hablar, y no vicecersa.

El servidor responde a la petición SMBnegprot con la lista de variantes que el cliente ofrece ordenada, comenzando por el índice 0, o el valor 0xFF si ninguno de los protocolos es aceptable. Continuando con nuestro ejemplo, el servidor responde con el valor 5, lo cual indica que el dialecto NT LM 0.12 es el que será usado para el resto de la sesión:

>>> NBT Packet
  NBT Session 
  Packet Flags=0x0
  Length=154

  SMB PACKET: SMBnegprot (REQUEST) 
  SMB Command = 0x72
  Error class = 0x0
  Error code = 0
  Flags1 = 0x0
  Flags2 = 0x0
  Tree ID = 0
  Proc ID = 5371 
  UID = 0
  MID = 385
  Word Count = 0
  Dialect=PC 
  NETWORK PROGRAM 1.0
  Dialect=MICROSOFT NETWORKS 3.0
  Dialect=DOS LM1.2X002 
  Dialect=DOS LANMAN2.1 
  Dialect=Windows for Workgroups 3.1a
  Dialect=NT LM 0.12

>>> NBT Packet
  NBT Session 
  Packet Flags=0x0 
  Length=69

  SMB PACKET: SMBnegprot (REPLY) 
  SMB Command = 0x72
  Error class = 0x0
  Error code = 0
  Flags1 = 0x0
  Flags2 = 0x1
  Tree ID = 0
  Proc ID = 5371
  UID = 0 
  MID = 385
  Word Count = 02 [000] 05 00

TLDP-ES 03/11/2002