NetBIOS proporciona tres servicios distintos:
- Servicio de nombre para el registro y resolución de nombres (puertos: 137/udp y 137/tcp)
- Servicio de distribución de datagramas para la comunicación sin conexión (puerto: 138/udp)
- Servicio de sesión para la comunicación orientada a la conexión (puerto: 139/tcp)
NBT implementa todos esos servicios.
Servicio de nombreEditar
En NetBIOS, cada participante debe registrarse en la red utilizando un nombre único de 15 caracteres como máximo. En las redes heredadas, cuando una nueva aplicación quería registrar un nombre, tenía que emitir un mensaje diciendo «¿Hay alguien que esté usando ese nombre?» y esperar una respuesta. Si no había respuesta, se podía asumir que el nombre no estaba en uso. Sin embargo, el tiempo de espera era de unos pocos segundos, lo que convertía el registro de nombres en un proceso muy largo, ya que la única forma de saber que un nombre no estaba registrado era no recibir ninguna respuesta.
El NBT puede implementar un repositorio central, o Servicio de Nombres, que registre todos los registros de nombres. Así, una aplicación que quiera registrar un nombre se pondría en contacto con el servidor de nombres (que tiene una dirección de red conocida) y preguntaría si el nombre ya está registrado, utilizando un paquete de «Consulta de nombres». Esto es mucho más rápido, ya que el servidor de nombres devuelve inmediatamente una respuesta negativa si el nombre no está ya en la base de datos, lo que significa que está disponible. El Servicio de Nombres, según los RFCs 1001 y 1002, se llama Servicio de Nombres NetBIOS o NBNS. Microsoft WINS es una implementación de NBNS. Cabe decir que debido al constante desarrollo de la forma en que el Servicio de Nombres maneja los conflictos o las fusiones, los «nombres de grupo» varían de un proveedor a otro e incluso pueden ser diferentes por versión, por ejemplo, con la introducción de un paquete de servicios.
Los formatos de los paquetes del Servicio de Nombres son idénticos a los del DNS. Las diferencias clave son la adición de paquetes de consulta de «Estado de Nodo» NetBIOS, registro dinámico y marcado de conflictos. Están encapsulados en UDP. La implementación posterior incluye una parte opcional de Alcance del nombre, haciendo que el nombre NetBIOS sea jerárquico como el DNS, pero esto se utiliza raramente.
Además, para iniciar una sesión o enviar un datagrama a un host particular en lugar de difundir el datagrama, NBT tendrá que determinar la dirección IP del host con un nombre NetBIOS dado; esto se hace difundiendo un paquete de «Consulta de nombre», y/o enviándolo al servidor de nombres NetBIOS. La respuesta tendrá la dirección IP del host con ese nombre.
NBNS es uno de los primeros servicios de registro de nombres distribuidos dinámicos entre pares. El protocolo NBNS fue desprestigiado por Microsoft: se ganó una mala reputación por ser «parlanchín», inundando las redes con tráfico de registro dinámico en múltiples protocolos (IPX/SPX, NBF y TCP/IP) ya que la gente configuró mal sus máquinas y sus redes. Los principios implementados en NBNS han sido reimplementados muchas veces, incluso en sistemas como ZeroConf y MobileIP.
Servicio de distribución de datagramasEditar
El modo de datagrama es «sin conexión»; los datagramas NetBIOS se envían sobre UDP. Un datagrama se envía con un paquete «Direct Unique» o «Direct Group» si se envía a un nombre NetBIOS concreto, o con un paquete «Broadcast» si se envía a todos los nombres NetBIOS de la red.
Servicio de sesiónEditar
El modo de sesión permite a dos ordenadores establecer una conexión para una «conversación», permite manejar mensajes más grandes y proporciona detección y recuperación de errores.
Las sesiones se establecen mediante el intercambio de paquetes. El ordenador que establece la sesión intenta realizar una conexión TCP al puerto 139 del ordenador con el que se va a establecer la sesión. Si la conexión se realiza, el ordenador que establece la sesión envía a través de la conexión un paquete de «Solicitud de Sesión» con los nombres NetBIOS de la aplicación que establece la sesión y el nombre NetBIOS con el que se va a establecer la sesión. El ordenador con el que se va a establecer la sesión responderá con una «Respuesta de Sesión Positiva» indicando que se puede establecer una sesión o una «Respuesta de Sesión Negativa» indicando que no se puede establecer ninguna sesión (bien porque ese ordenador no está escuchando sesiones que se establezcan con ese nombre o porque no hay recursos disponibles para establecer una sesión con ese nombre).
Los datos se transmiten durante una sesión establecida mediante paquetes de mensajes de sesión.
El TCP se encarga del control de flujo y de la retransmisión de todos los paquetes de servicio de sesión, así como de la división del flujo de datos sobre el que se transmiten los paquetes en datagramas IP lo suficientemente pequeños como para caber en paquetes de la capa de enlace.
Las sesiones se cierran cerrando la conexión TCP.