# NetBIOS

NetBIOS, abreviació de Network Basic Input/Output System, és, en sentit estricte una especificació d'interfície per l'accés a serveis de xarxa, és a dir, una capa de programari desenvolupada per a enllaçar un Sistema operatiu de xarxa amb maquinari específic.
NetBIOS fou originalment desenvolupat per IBM i Sytek com a API's per al software client de recursos d'una xarxa d'àrea local (LAN). Des de la seva creació, ha sigut el fonament de moltes altres aplicacions de xarxa.

## Història

L'any 1984, IBM va dissenyar una simple interfície de programació d'aplicacions (API) per tal de connectar en xarxa els ordinadors que va anomenar Network Basic Input/Output System (NetBIOS). L'API NetBIOS proporcionava un disseny rudimentari perquè una aplicació es connectés i compartís dades amb altres màquines.
És útil pensar en l'API NetBIOS com a extensions de xarxa per a crides de l'API BIOS estàndard. Amb BIOS, cada crida de baix nivell està confinada al maquinari de la màquina local i no requereix res més per a viatjar a la seva destinació. NetBIOS, de tota manera, originalment havia d'intercanviar instruccions amb ordenadors de xarxes IBM PC o Token Ring. Això va exigir doncs un protocol de transport de baix nivell per a transmetre les peticions d'una computadora a la següent.
El 1985, IBM va llançar aquest protocol, que va unir amb l'API NetBIOS per a convertir-se en NetBIOS Extended User Interface (NetBEUI). NetBEUI fou dissenyat per a xarxes d'àrea local (LAN), i permetia a cada màquina usar un nom (de fins a quinze caràcters) que no estigués essent utilitzat a la xarxa. Entenem per LAN petita, una xarxa de menys de 255 nodes.
El protocol NetBEUI es va fer molt popular a les aplicacions de xarxa, incloent aquelles que funcionaven amb Windows per a grups. Més endavant, van emergir també implementacions de NetBIOS sobre protocols IPX de Novell, que competien amb NetBEUI. Tanmateix, els protocols de xarxa escollits per la comunitat d'Internet eren TCP/IP i UDP/IP, i les implementacions de les interfícies de programació d'aplicacions (API) NetBIOS sobre aquests protocols de manera que en poc temps va créixer en gran manera la seva utilització.
Un detall a tenir en compte és que, TCP/IP fa servir nombres per a representar adreces de computadores, com per exemple 192.168.220.100, mentre que NetBIOS treballa només amb noms. Aquest fou el problema més important a solucionar a l'hora de fer relacionar-se els dos protocols. El 1987, l'Internet Engineering Task Force (IETF) va publicar una sèrie de documents d'estandardització, titulats RFC 1001 i 1002, que perfilaven com podria NetBIOS treballar sobre una xarxa TCP/UDP. Aquest joc de documents encara governa cadascuna de les implementacions que existeixen avui en dia, entre les quals les que proporciona Microsoft per als seus sistemes operatius, així com la suite Samba.

## Utilitat

De forma senzilla, NetBIOS, permet que les aplicacions 'parlin' amb la xarxa. La seva intenció és aconseguir aïllar els programes de qualsevol tipus de dependència de maquinari. També evita que els desenvolupadors de software hagin de desenvolupar rutines de recuperació en cas d'errors, d'encaminament o d'adreçament de missatges a baix nivell.
En una xarxa local amb soport NetBIOS, les màquines són conegudes i identificades amb un nom. Cada computador de la xarxa té un nom únic. Cada PC d'una xarxa local NetBIOS es comunica amb la resta, ja sigui establint una connexió (sessió), fent servir datagrames NetBIOS o mitjançant broadcast. Les sessione permeten -com amb el protocolo TCP- enviar missatges més llargs i gestionar el control i recuperació d'errors. La comunicació serà punt a punt. Per altra banda els mètodes de datagrames i broadcast permeten a un ordinador de comunicar-se amb diversos altres al mateix temps, però estant limitats a la mida del missatge. A més, no hi ha control ni recuperació d'errors (igual que amb UDP). A canvi, s'aconsegueix una major eficiència amb missatges curts, al no haver d'establir una connexió.

## Funcionament i serveis

NetBIOS ofereix els serveis de sessió descrits a la capa 5 del model OSI. S'encarrega d'establir la sessió i de mantenir les connexions. Però aquest protocol ha de transportar-se entre màquines a través d'altres protocols; donat que per si mateix no és suficient per a transportar les dades en xarxes tant LAN com WAN, per la qual cosa ha d'utilitzar un altre mecanisme de transport (Exemple: en xarxes LAN, protocol NetBEUI, en redes WAN protocol TCP/IP). Els protocols que poden donar el servei de transport per a NetBIOS són:
IPC/IPX NetBEUI TCP/IP
El fet d'haver de ser transportat per altres protocols es deu al fet que en operar a la capa 5 del model OSI, no ofereix un format de dades per a la transmissió, el qual sí que és ofert pels altres protocols que acabem de mencionar.
NetBIOS permet comunicació orientada a connexió (TCP) o no orientada a connexió (UDP). Suporta tant broadcast com multicast, a més de 4 tipus de serveis diferents: Serveis Generals, Servei de Noms, Servei de Sessió i Servei de Datagrames.
Quan un programa d'aplicació requereix els serveis NetBIOS, aquest executa una interrupció software especifica. Aquesta, direcciona el control del microprocesador per al software de l'adaptador de xarxa que processa la petició
Quan un programa d'aplicació emet una interrupció NetBIOS, aquest requereix un servei de xarxa. La interfície NetBIOS defineix exactament com els programes d'aplicació poden usar la interrupció NetBIOS i els seus serveis.
En NetBIOS s'identifiquen aquests serveis a través del camp NCB_COMMAND de Network Control Block, d'una comanda NetBIOS. Aquests serveis es poden dividir en 4 grups bàsics: General Services, Naming Services, Session Services i Datagram Services.

## Referències

* Especificació NetBIOS Arxivat 2017-07-23 a Wayback Machine.
* Manual de xarxes SMB/CIFS. Arxivat 2007-02-07 a Wayback Machine.

## Vegeu també

* Protocol de xarxa
* Família de protocols d'Internet
* Sistema operatiu de xarxa

## Enllaços externs

* Familiaritzar-se amb una xarxa SMB/CIFS. Arxivat 2008-04-20 a Wayback Machine.
* Breu ressenya NetBIOS.
* NetBios, NetBEUI, NBF, SMB, CIFS Networking