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