# NetBIOS

NetBIOS è l'acronimo di Network Basic Input/Output System, ovvero Sistema base di Input/Output di rete. Solitamente è riferito ad un'API per comunicazioni sulla rete locale.

## Storia

NetBIOS è un protocollo di livello sessione, sviluppato da IBM e Sytec per la cosiddetta PC-Network all'inizio degli anni ottanta. Nonostante sia stato pubblicato solo in un manuale della IBM, le API del protocollo divennero di fatto standard.
Da quando la PC-Network non è più usata, essendo stata sostituita dalle reti TokenRing ed Ethernet, il protocollo NetBIOS potrebbe non essere più necessario. Ma dato che molti programmi sono stati scritti per le API di NetBIOS, sono state adattate per lavorare su altri protocolli come IPX/SPX e TCP/IP.
NetBIOS su TokenRing o Ethernet è ora chiamato NetBEUI (NetBIOS Extended User Interface). Era ancora molto usato finché fu messo in commercio il sistema operativo Microsoft Windows 98.
NetBIOS su TCP/IP è chiamato NBT ed è stato standardizzato dalle RFC 1001 e 1002. NBT offre un'emulazione di PC-Network LAN basata su NetBIOS su una rete basata su IP. Questo protocollo è stato introdotto con Microsoft Windows 2000 ed è il trasporto preferito su NetBIOS.

## Caratteristiche

NetBIOS offre sempre tre servizi:
* Name service: registrazione e risoluzione del nome (la ricerca del nome è parte dell'SMB, un livello superiore)
* Session service: comunicazione affidabile orientata alla connessione
* Datagram distribution service: comunicazione non fidata senza connessione
Le porte utilizzate per questi servizi sono:
* netbios-ns 137/udp # NETBIOS Name Service
* netbios-dgm 138/udp # NETBIOS Datagram Service
* netbios-ssn 139/tcp # NETBIOS Session Service
Quando NetBIOS era un protocollo funzionante al livello datalink (livello di collegamento dati) del modello OSI, le sue funzioni erano accessibili nella famiglia IBM PC compatibili attraverso l'interrupt 5Ch. I messaggi passati a queste funzioni erano formattati a seconda del formato del Network Block Control.
NetBIOS e NetBEUI sono destinati solo all'uso sulle reti locali. Per questo motivo, non hanno il supporto per il routing e possono gestire un massimo di 72 nodi. L'uso delle trasmissioni è intenso, specialmente per le operazioni collegate al name service.
NBT (NetBIOS su TCP/IP) usa uno o più NBNS (NetBIOS Name Server) per coprire il servizio dei nomi su subnet multiple (mentre la trasmissione - broadcast - è limitata ad un unico subnet). Un NBNS è una specie di DNS dinamico. L'implementazione Microsoft di NBNS è chiamata WINS. Inoltre, per estendere le reti virtuali NetBIOS attraverso sotto-reti a IP multipli, lo standard ha introdotto l'uso di uno o più server NBDD (NetBIOS Datagram Distribution).

## Sicurezza

Nei sistemi operativi Windows viene consigliato di disattivare tempestivamente se attivo questo servizio di condivisione di informazioni e risorse per reti locali. Il motivo sta nel semplice fatto che è stato progettato per condividere le informazioni e le risorse in rete locale, ma i bug e i numerosi errori di programmazione che lo affliggono permettono a chiunque al di fuori della rete locale di associarsi al TCP/IP e con un buon port scanner e l'indirizzo IP della macchina in questione di sfruttare questa vulnerabilità per violare la sicurezza del sistema operativo stesso penetrandovi, riuscendo così ad avere totale accesso alla periferica o al computer. L'attaccante, dopo aver sfruttato questa vulnerabilità, potrebbe connettere questa periferica come unità di rete virtuale che sia l'hard disk, una stampante o qualsiasi altra componente per sfruttarla qualora necessario senza dover ripetere l'attacco.