NetBIOS ( / ˈnɛtbaɪɒs / ) es un acrónimo de Network Basic Input/Output System (Sistema básico de entrada/salida de red ) . Proporciona servicios relacionados con la capa de sesión del modelo OSI , lo que permite que las aplicaciones en computadoras separadas se comuniquen a través de una red de área local . Como estrictamente una API , NetBIOS no es un protocolo de red . Los sistemas operativos de la década de 1980 (DOS y Novell Netware principalmente) ejecutaban NetBIOS sobre IEEE 802.2 e IPX/SPX utilizando los protocolos NetBIOS Frames (NBF) y NetBIOS over IPX/SPX (NBX), respectivamente. En las redes modernas, NetBIOS normalmente se ejecuta sobre TCP/IP a través del protocolo NetBIOS over TCP/IP (NBT). NetBIOS también se utiliza para identificar nombres de sistema en TCP/IP (Windows).
NetBIOS es una API a nivel de sistema operativo que permite que las aplicaciones de las computadoras se comuniquen entre sí a través de una red de área local (LAN). La API fue creada en 1983 por Sytek Inc. para la comunicación de software a través de la tecnología LAN de IBM PC Network . [1] En IBM PC Network , como API únicamente, NetBIOS dependía de protocolos de red propietarios de Sytek para la comunicación a través del cable. [2]
En 1985, IBM siguió adelante con el esquema de red Token Ring y produjo un emulador de la API NetBIOS de Sytek para permitir que las aplicaciones compatibles con NetBIOS de la era de las redes de PC funcionaran sobre el nuevo hardware Token Ring de IBM. Este emulador de IBM, llamado NetBIOS Extended User Interface (NetBEUI), amplió la API NetBIOS básica creada por Sytek con, entre otras cosas, la capacidad de manejar la mayor capacidad de nodos de Token Ring. Al mismo tiempo, IBM produjo un nuevo protocolo de red, NBF , para permitir que su API NetBEUI (su API NetBIOS mejorada) proporcionara sus servicios sobre Token Ring, específicamente, en la capa de control de enlace lógico IEEE 802.2 .
En 1985, Microsoft creó su propia implementación de la API NetBIOS para su tecnología de redes MS-Net . Como en el caso de Token Ring de IBM, los servicios de la implementación NetBIOS de Microsoft se proporcionaban sobre la capa de control de enlace lógico IEEE 802.2 mediante el protocolo NBF. [3] Sin embargo, MS-Net solo se entregó a los OEM y, en realidad, no era un producto completo ni estaba listo para comunicarse en la red en la forma en que se distribuyó. Carecía de cualquier implementación de las capas OSI 1 a 4 ( capas física , de enlace de datos , de red y de transporte ) y se esperaba que un OEM proporcionara estas implementaciones (en forma de una parte NetBIOS) para hacer de su versión de MS-Net un producto completo y listo para usar. MS-Net accedía a la red a través de la variante de NetBIOS de Microsoft, que se dividía en dos partes: la parte de nivel inferior que los OEM tenían que proporcionar implementaba las llamadas NetBIOS que dependían de las capas 1 a 4, mientras que la parte de nivel superior, proporcionada por Microsoft, era independiente del hardware y del protocolo. Esta implementación de NetBIOS admitía la API NetBIOS completa, pero se invocaba invocando la interrupción x86 0x2A, en lugar de la interrupción estándar de IBM 0x5C. La dependencia de los OEM para implementar partes de NetBIOS tuvo el desafortunado efecto secundario de que las diferentes versiones OEM de MS-Net y NetBIOS generalmente no podían comunicarse entre sí. [4]
En 1986, Novell lanzó Advanced Novell NetWare 2.0, que incluía la emulación propia de la API NetBIOS. Sus servicios estaban encapsulados dentro del protocolo IPX/SPX de NetWare utilizando el protocolo NetBIOS sobre IPX/SPX (NBX).
En 1987 se publicó un método para encapsular NetBIOS en paquetes TCP y UDP , NetBIOS sobre TCP/IP (NBT). Se describió en RFC 1001 ("Estándar de protocolo para un servicio NetBIOS en un transporte TCP/UDP: conceptos y métodos") y RFC 1002 ("Estándar de protocolo para un servicio NetBIOS en un transporte TCP/UDP: especificaciones detalladas"). El protocolo NBT se desarrolló para "permitir que se construya una implementación [de aplicaciones NetBIOS] en prácticamente cualquier tipo de sistema donde esté disponible el conjunto de protocolos TCP/IP" y para "permitir la interoperación de NetBIOS en Internet".
Después de que la computadora PS/2 llegó al mercado en 1987, IBM lanzó el Programa de soporte LAN para PC, que incluía un controlador que ofrecía la API NetBIOS.
Existe cierta confusión entre los nombres NetBIOS y NetBEUI. NetBEUI se originó estrictamente como el apodo del emulador NetBIOS mejorado de IBM de 1985 para Token Ring. El nombre NetBEUI debería haber muerto allí, considerando que en ese momento, las implementaciones NetBIOS de otras compañías se conocían simplemente como NetBIOS independientemente de si incorporaban las extensiones API que se encuentran en el emulador de Token Ring. Sin embargo, para MS-Net, Microsoft eligió nombrar su implementación del protocolo NBF "NetBEUI", nombrando su implementación del protocolo de transporte en honor a la versión mejorada de la API de IBM. [ cita requerida ] En consecuencia, el uso compartido de archivos e impresoras de Microsoft a través de Ethernet a menudo continúa llamándose NetBEUI, y el nombre NetBIOS se usa comúnmente solo en referencia al uso compartido de archivos e impresoras a través de TCP/IP . Más exactamente, el primero es NetBIOS Frames (NBF) y el segundo es NetBIOS over TCP/IP (NBT).
Desde su publicación original en un libro de referencia técnica de IBM, la especificación NetBIOS API se ha convertido en un estándar de facto en la industria a pesar de que originalmente admitía un máximo de solo 80 PC en una LAN. Esta limitación se superó en general en toda la industria mediante la transición de NBF a NBT, bajo la cual, por ejemplo, Microsoft pudo cambiar al Sistema de nombres de dominio (DNS) para la resolución de nombres de host NetBIOS , habiendo utilizado anteriormente el propio protocolo NBF compartimentado en segmentos de LAN para resolver dichos nombres en redes cliente-servidor de Windows . [1]
NetBIOS proporciona tres servicios distintos:
(Nota: SMB , una capa superior, es un servicio que se ejecuta sobre el Servicio de sesión y el Servicio de datagramas, y no debe confundirse como una parte necesaria e integral de NetBIOS en sí. Ahora puede ejecutarse sobre TCP con una pequeña capa de adaptación que agrega un campo de longitud a cada mensaje SMB; esto es necesario porque TCP solo proporciona un servicio de flujo de bytes sin noción de límites de mensajes).
Para iniciar sesiones o distribuir datagramas, una aplicación debe registrar su nombre NetBIOS mediante el servicio de nombres. Los nombres NetBIOS tienen una longitud de 16 octetos y varían según la implementación particular. Con frecuencia, el octeto 16, llamado sufijo NetBIOS, designa el tipo de recurso y se puede utilizar para indicar a otras aplicaciones qué tipo de servicios ofrece el sistema. [ cita requerida ] En NBT , el servicio de nombres opera en el puerto UDP 137 (también se puede utilizar el puerto TCP 137, pero rara vez se hace).
Los primitivos del servicio de nombres que ofrece NetBIOS son:
El protocolo de resolución de nombres NetBIOS no admite el protocolo de Internet versión 6 (IPv6) . [5]
El modo datagrama no tiene conexión ; la aplicación es responsable de la detección y recuperación de errores. En NBT , el servicio de datagramas se ejecuta en el puerto UDP 138.
Las primitivas del servicio de datagramas que ofrece NetBIOS son:
El modo de sesión permite que dos computadoras establezcan una conexión, permite que los mensajes se extiendan a varios paquetes y proporciona detección y recuperación de errores. En NBT , el servicio de sesión se ejecuta en el puerto TCP 139.
Las primitivas del servicio de sesión que ofrece NetBIOS son:
En el protocolo original utilizado para implementar los servicios NetBIOS en la red de PC, para establecer una sesión, la computadora que inicia la sesión envía una solicitud de apertura que es respondida por un acuse de recibo de apertura. La computadora que inició la sesión enviará entonces un paquete de solicitud de sesión que generará un paquete de aceptación de sesión o de rechazo de sesión.
Durante una sesión establecida, cada paquete transmitido recibe una respuesta de reconocimiento positivo (ACK) o de reconocimiento negativo (NAK). Un NAK provocará la retransmisión de los datos. La computadora que no inició la sesión cierra las sesiones enviando una solicitud de cierre. La computadora que inició la sesión responderá con una respuesta de cierre que provocará el cierre del último paquete de sesión.
Cuando NetBIOS se ejecuta junto con protocolos de Internet (por ejemplo, NBT), cada computadora puede tener varios nombres: uno o más nombres de servicio de nombres NetBIOS y uno o más nombres de host de Internet.
El nombre NetBIOS tiene 16 caracteres ASCII, sin embargo, Microsoft limita el nombre de host a 15 caracteres y reserva el decimosexto carácter como sufijo NetBIOS. [6] Este sufijo describe el tipo de registro de nombre o servicio, como registro de host, registro de navegador maestro o registro de controlador de dominio u otros servicios. El nombre de host (o nombre de host corto) se especifica cuando se instala/configura la red de Windows, los sufijos registrados están determinados por los servicios individuales suministrados por el host. Para conectarse a una computadora que ejecuta TCP/IP a través de su nombre NetBIOS, el nombre debe resolverse a una dirección de red . Hoy en día, esto suele ser una dirección IP (la resolución del nombre NetBIOS a la dirección IP a menudo se realiza mediante transmisiones o un servidor WINS : servidor de nombres NetBIOS). El nombre NetBIOS de una computadora a menudo es el mismo que el nombre de host de esa computadora (ver más abajo), aunque truncado a 15 caracteres, pero también puede ser completamente diferente.
Los nombres NetBIOS son una secuencia de caracteres alfanuméricos. Los siguientes caracteres no están permitidos explícitamente:\/:*?"<>|Desde Windows 2000, los nombres NetBIOS también tuvieron que cumplir con las restricciones de los nombres DNS: no pueden constar completamente de dígitos y los caracteres de guión ("-") o punto (".") no pueden aparecer como el primer o el último carácter. Desde Windows 2000, Microsoft ha desaconsejado incluir caracteres de punto (".") en los nombres NetBIOS, de modo que las aplicaciones puedan usar la presencia de un punto para distinguir los nombres de dominio de los nombres NetBIOS. [6]
El archivo LMHOSTS de Windows proporciona un método de resolución de nombres NetBIOS que puede utilizarse para redes pequeñas que no utilizan un servidor WINS.
El nombre NetBIOS de una máquina Windows no debe confundirse con el nombre de host de Internet de la computadora (suponiendo que la computadora también sea un host de Internet además de ser un nodo NetBIOS, lo que no necesariamente tiene que ser el caso). Generalmente, una computadora que ejecuta protocolos de Internet (ya sea una máquina Windows o no) suele tener un nombre de host (también llamado a veces nombre de máquina). Originalmente, estos nombres se almacenaban y proporcionaban en un archivo hosts , pero hoy la mayoría de estos nombres son parte del Sistema de nombres de dominio (DNS) jerárquico.
Generalmente, el nombre de host de un equipo con Windows se basa en el nombre NetBIOS más el sufijo DNS primario, que se configuran en el cuadro de diálogo Propiedades del sistema. También puede haber sufijos específicos de la conexión que se pueden ver o cambiar en la pestaña DNS en Panel de control → Red → TCP/IP → Propiedades avanzadas. Los nombres de host son utilizados por aplicaciones como telnet , ftp , navegadores web , etc. Para conectarse a un equipo que ejecuta el protocolo TCP/IP utilizando su nombre, el nombre de host debe resolverse en una dirección IP , generalmente por un servidor DNS. (También es posible operar muchas aplicaciones basadas en TCP/IP, incluidas las tres mencionadas anteriormente, utilizando solo direcciones IP, pero esta no es la norma).
En Windows, el tipo de nodo de una computadora en red se relaciona con la forma en que resuelve los nombres NetBIOS en direcciones IP . Esto supone que existen direcciones IP para los nodos NetBIOS, lo que se garantiza solo cuando NetBIOS opera sobre NBT; por lo tanto, los tipos de nodo no son una propiedad de NetBIOS en sí, sino de la interacción entre NetBIOS y TCP/IP en el entorno del sistema operativo Windows. Hay cuatro tipos de nodo.
El tipo de nodo en uso se muestra abriendo una línea de comandos y escribiendo ipconfig /all . También se puede configurar un registro de computadora con Windows de manera que muestre "desconocido" para el tipo de nodo.
El sufijo NetBIOS, también llamado carácter final NetBIOS (endchar), es el decimosexto carácter de un nombre NetBIOS e indica el tipo de servicio del nombre registrado. La cantidad de tipos de registro está limitada a 255; algunos valores que se usan comúnmente son:
Para nombres únicos:
Para los nombres de los grupos:
La siguiente tabla muestra una breve historia de NetBIOS y sus protocolos relacionados. SMB fue el protocolo principal que utilizó NetBIOS. SMB permite compartir archivos e impresoras en Windows.
Debido a que el protocolo NetBIOS, definido en [RFC1002], no admite la asignación entre nombres NetBIOS y direcciones IPv6, el protocolo Interfaz administrativa remota: WINS se aplica solo a direcciones IPv4. No se aplica a direcciones IPv6.