# NetBIOS

NetBIOS (Abkürzung für englisch Network Basic Input Output System) ist eine Programmierschnittstelle (API) zur Kommunikation zwischen zwei Programmen über ein lokales Netzwerk.

## Entwicklung

NetBIOS wurde 1983 im Auftrag von IBM von der Firma Sytek für IBMs PC-Netzwerk als eine proprietäre Hardware-Lösung zur Vernetzung kleiner Arbeitsgruppen entwickelt.
Die von NetBIOS zur Verfügung gestellten Funktionen gingen allerdings über die reine Hardware-Abstraktion, wie sie zum Beispiel das System-BIOS leistet, hinaus. Im Gegensatz zu heutigen Netzwerktreibern, deren Funktion die Zustellung von Datenpaketen durch die jeweilige Hardware ist (Schicht 2), implementiert NetBIOS Funktionen zur Namensauflösung, paket- und verbindungsorientierten Kommunikation. Ein direkter Zugang auf Paketebene war beim PC-Netzwerk nicht vorgesehen.
Die ersten Netzwerkfunktionen in PC-DOS und MS-DOS setzten auf NetBIOS auf.
Mit dem Übergang zu standardisierten Netzwerken wie Token-Ring und Ethernet ab ca. 1985 entstand die Notwendigkeit, bestehende Software über die neuen Netze verwenden zu können. Dazu wurden die NetBIOS-Funktionen in einem Emulationsprogramm realisiert, das seinerseits auf die neuen, paketorientierten Netzwerktreiber zugriff. Das verwendete Protokoll wurde gemeinhin auch als NetBIOS bezeichnet, wodurch die bis heute anzutreffende Verwirrung darüber entstand, ob NetBIOS ein Protokoll ist oder nicht. Das Protokoll, also die direkt auf Schicht 2 aufgesetzte Implementierung von NetBIOS, wurde später als NetBEUI bezeichnet. Mangels entsprechender Vorkehrungen im Protokoll kann es nicht geroutet werden, und aufgrund des Konzeptes der NetBIOS-Funktionen verwendet es relativ viele Broadcasts und gilt daher gemeinhin als „geschwätziges“ Protokoll.
Die Firma Novell implementierte 1986 eine NetBIOS-Emulation, die auf dem IPX/SPX-Protokoll aufbaute. 1987 folgte IBM mit der in RFC 1001 (Protocol Standard for a NetBIOS Service on a TCP/UDP Transport) festgelegten Implementierung von NetBIOS auf dem TCP/IP-Protokoll, heute bekannt unter dem Namen NetBIOS over TCP/IP (NBT). Sowohl IPX als auch IP sind routbare Protokolle, wodurch NetBIOS-basierte Anwendungen über die Grenzen kleiner lokaler Netze hinaus nutzbar wurden.
Durch die Verwendung alternativer Namensauflösungs-Mechanismen (WINS, DNS) ist auch das Problem des hohen Broadcast-Aufkommens gelöst.

## Funktionen von NetBIOS
### Namensauflösung

    NetBIOS erlaubt einer Applikation, einen 16 Zeichen langen Namen netzwerkweit zu registrieren. Ursprünglich wurden die Zuordnungen von Namen zu Netzwerkadressen per Broadcast an alle Teilnehmer bekanntgegeben. Jeder NetBIOS-Name ist entweder als eindeutiger Name (exklusiv) oder als Gruppenname (nicht exklusiv) konfiguriert.
    In Microsoft-Netzen werden von den 16 möglichen Zeichen 15 für Namen verwendet; das 16. Zeichen wird als Suffix benutzt, um verschiedene Dienste wie Server, RAS, Messenger usw. anzusprechen:
| Rechnername + 00h | exklusiv | Arbeitsstationsdienst |
| Rechnername + 03h | exklusiv | Nachrichtendienst |
| Rechnername + 20h | exklusiv | Serverdienst |
| Benutzername + 03h | exklusiv | Name des angemeldeten Benutzers |
| Domänenname + 1Bh | nicht exklusiv | Name der Domäne, deren Mitglied der Rechner ist |
(Wenn der Name aus weniger als 15 Zeichen besteht, wird er mit Leerzeichen aufgefüllt.)

### Verbindungsloser Datenaustausch (datagram service)

    Die entsprechenden Funktionen realisieren die ungesicherte, paketweise Kommunikation zwischen zwei Endpunkten, ähnlich UDP im Internet. Der verbindungslos arbeitende Datagramm-Modus unterstützt einige Broadcast-Funktionen und bietet die Möglichkeit des Aufbaus virtueller Transportverbindungen sowie die Verwaltung symbolischer Namen für Endadressen. Dabei ist die Anwendung verantwortlich für die Aufrechterhaltung der Session.

### Verbindungsorientierter Datenaustausch (session service)

    Analog zu TCP bietet NetBIOS gesicherte, serialisierte Punkt-zu-Punkt Verbindungen an, d. h., es können Nachrichten übermittelt werden, die größer sind als die maximale Länge eines einzelnen Datenpaketes, und eventuell fehlerhaft angekommene oder verlorene Pakete werden erneut angefordert. Somit wird in diesem Modus eine Fehlererkennung und Fehlerkorrektur durchgeführt.