NetBIOS (Network Basic Input Output System) to standard definiujący programowy interfejs pomiędzy aplikacjami, a lokalną siecią komputerową (LAN). Jest zestawem funkcji API, zaprojektowanym przez IBM we wczesnych latach '80. API (Application Programming Interface) jest to zbiór setek a nawet tysięcy funkcji języka C, który stanowy podwaliny systemu operacyjnego. NetBIOS jest prostym systemem i zawiera kilka poleceń dla funkcji połączeniowych. IBM przekształcił później NetBIOS w protokół NetBIOS Extended User Interface (NetBEUI). Najważniejsza różnica pomiędzy NetBIOS a NetBEUI jest to, iż NetBIOS stanowi zestaw funkcji API do budowy aplikacji klient-serwer, a NetBEUI jest protokolem transportowym, ktory reguluje sposob przesylania informacji przez system w obrebie sieci. Poniewaz protokol transportowy jest odrebny od zestawu funkcji API, NetBIOS moze być obslugiwany nie tylko przez NetBEUI. Na przyklad protokoly TCP/IP i IPX/SPX obsluguja NetBIOS. Protokoly TCP/IP i IPX sa trasowalne, a NetBEUI nie. Ze wzgledu na to, ze warstwa NetBIOS jest powyzej protokolu TCP/IP i IPX, mozna usunać NetBEUI i nadal mieć wszystkie funkcje NetBIOS w sieci, a takze mozliwosć uruchamiania aplikacji w sieci trasowanej.
Opiera się on na następujących założeniach:
- · wszystkie stacje w sieci są traktowane równożędnie, nie ma wyróżnionych serwerów (peer Network)
- · oferowane usługi są wysokiego rzędu (High-Level Software Interface) - dzięki czemu aplikacje nie muszą zawierać oprogramowania niskopoziomowych protokołów sieciowych. Upraszcza to pisanie programów.
- · oferowane usługi nie zależą od sprzętowej realizacji sieci. W rezultacie program napisany w oparciu o NetBIOS może pracować na różnego rodzaju sprzęcie.
- · nazwy poszczególnm stacjom w sieci przydziela użytkownik. Nie trzeba więc pamiętać niewygodnych, sprzętowych adresów w postaci ciągu liczb. Jedna stacja może posiadać kilka nazw. Można także przydzielić nazwę całej grupie stacji.
- · dwie stacje, którym przydzielono nazwy mogą komunikować się poprzez nawiązanie sesji. Sesje umożliwiają niezawodną wymianę informacji pomiędzy stacjami. NetBIOS dba o to, aby przekazana informacja dotarła do adresata w nienaruszonej postaci.
- · datagramy to krótkie wiadomości, przeważnie wykorzystywane do ich rozgłaszania w sieci (wysyłania do wielu stacji równocześnie). NetBIOS nie gwarantuje, że datagramy zostaną odebrane przez adresatów.
Nazewnictwo stacji (Name Support). NetBIOS umożliwia identyfikację stacji (a właściwie procesów) przy pomocy przydzielanych im przez użykownika nazw. Jest to ciąg znaków alfanumerycznych w formacie ASCIIZ (ostatni znak musi mieć kod zero). Długość tego ciągu wynosi maksymalnie 16 znaków. Każda nazwa może być jednego z dwóch typów: Unikatowa - w całej sieci tylko jedna stacja może posiadać daną unikatową nazwę. Jeżli któraś ze stacji próbuje przydzielić sobie unikatową nazwę, to najpierw sprawdzane jest, czy nazwa taka nie jest aktualnie używana przez inną stację. Grupowa - taka nazwa może być przydzielona dowolnie dużej liczbie stacji naraz. Przed utworzeniem nowej nazwy grupowej sprawdzane jest, czy nazwa ta nie jest używana przez którąś ze stacji jako nazwa unikatowa. Każdy program (lub proces) może utworzyć jedną lub więcej nazw, z którymi będzie identyfikowany. NetBIOS tworzy tabelę nazw używanych przez daną maszynę. Może ona pomieścić do 16-tu nazw (obecnie kilka implementacji dopuszcza większą liczbę). Dodatkowo przechowywana jest tzw. stała nazwa (permanent name), zwana też numerem węzła (node number). Przeważnie jest ona przechowywana w pamięci ROM karty sieciowej. Składa się ona z 10-ciu binarnych zer oraz 6 następnych znaków, które muszą być unikatowe w danej sieci. Przeważnie numer węzła jest adresem Ethernet'owym danej karty sieciowej. Przydzielane przez użytkownika nazwy nie mogą zawierać znaku '*' .
Komunikacja Bezpołączeniowa (Datagram Support Services) Komunikacja bezpołączeniowa w formie datagramów realizuje funkcję "zawodnego" przesyłania krótkich wiadomości. "Zawodność" oznacza tutaj brak gwarancji, że adresat odbierze daną wiadomość. Strona wysyłająca nie jest w żaden sposób informowana o tym co stało się z wysłaną wiadomością. Datagramy umożliwiają wykonywanie operacji nie możliwych do zrealizowania przy pomocy komunikacji połączeniowej (Session Support Services), takich jak rozgłaszanie w sieci (broadcast). Datagramy mogą być adresowane na dwa sposoby:
- · za pomocą konkretnej nazwy (unikatowej lub grupowej) adresata - jeżli program czeka na wiadomość wysłaną na tą konkretną nazwę, to zostanie ona odebrana,
- · za pomocą trybu rozgłaszania w sieci (broadcast) - wiadomość wysyłana jest do wszystkich stacji (procesów) w sieci; jeżeli program czeka na datagram będący broadcast'em, to zostanie on odebrany.
Należy podkreślić, że wiadomość zostanie odebrana tylko wtedy, gdy adresat oczekuje na odbiór datagramu. W przeciwnym wypadku wiadomość jest ignorowana. Limit przesyłanej informacji w pojedynczym datagramie wynosi 512 bajtów.
Komunikacja Połączeniowa (Session Support Services). Komunikacja połączeniowa polega na nawiązaniu sesji (logicznego połaczenia) pomiędzy dwiema utworzonymi wcześniej nazwami. Przy czym nie muszą one znajdować się na dwóch różnych stacjach. Można także dokonywać połączeń w ramach jednej maszyny, a nawet w ramach jednego procesu. Po nawiązaniu sesji, przydzielany jest jej unikatowy numer. W ramach sesji wiadomości przesyłane są niezawodnie. Oznacza to, że ich zawartość oraz kolejność odbierania nie zostają naruszone. Jeśli adresat nie odbierze wiadomości, strona wysyłająca jest informowana o zaistniałym błędzie. Pojedyncza wiadomość może mieć do 64kB długości. Jeśli wystąpi błąd podczas przesyłania wiadomości, to następuje zamknięcie sesji. NetBIOS sam dba o podział długich wiadomości na małe pakiety, w zależności od fizycznych wymagań sieci.
Metody wykonywania poleceń. Dostępne są dwie metody korzystania z funkcji NetBIOS'a:
- · Synchroniczna - kontrola zwracana jest aplikacji dopiero po zakończeniu wykonywania rozkazu (lub przekroczeniu limitu czasowego). Rezultat wykonania polecenia (kod błędu) umieszczany jest w odpowiednim polu NCB oraz w rejestrze AL. Przykładem rozkazu synchronicznego może być utworzenie nowej nazwy identyfikującej proces. Program nie może kontynuować działania nie znając rezultatu tej operacji.
- · Asynchroniczna - po wydaniu polecenia (wywołaniu przerwania 5Ch) kontrola jest natychmiast zwracana aplikacji. Rezultat inicjacji polecenia (kod błędu) umieszczany jest w odpowiednim polu NCB oraz w rejestrze AL. Aplikacja może stwierdzić zakończenie wykonania polecenia na dwa sposoby:
- · poprzez cykliczne sprawdzanie wartości (polling) odpowiedniego pola NCB zawierającego status wykonywanej operacji,
- · poprzez podanie w odpowiednim polu NCB (przed wydaniem polecenia) adresu procedury (POST routine), która zostanie wywołana z chwilą zakończenia wykonywania polecenia. Procedura taka musi być napisana w taki sam sposób jak procedura obsługi przerwania. W czasie jej działania przerwania są wyłączone i nie należy ich włączać.
Wywoływanie funkcji NetBIOS podczas programowania jest podobne do wywoływania funkcji DOS. Wszystkie rozkazy dla NetBIOS'u przekazywane są w formie NCB (Network Control Block). Jest to 64-bajtowa struktura wykorzystywana do komunikacji pomiędzy NetBIOS'em a aplikacją. Przed wywołaniem funkcji NetBIOS'u aplikacja wypełnia NCB wszystkimi informacjami koniecznymi do wykonania danego polecenia. NetBIOS z kolei, po wykonaniu rozkazu, umieszcza w przekazanym mu NCB rezultat wykonanej operacji, tak aby aplikacja miała do niego dostęp.
Aby zlecić wykonanie pojedynczego rozkazu należy kolejno wykonać następujące czynności: Wypełnić wszystkie, wymagane przez dane polecenie, pola NCB. Ponadto zalecane jest, aby pola nieużywane wypełnić zerami. Przydzielić pamięć wszystkim buforom wymaganym przez dane polecenie. Pozostawić conajmniej 32 wolnych bajtów na stosie. Umieścić adres przekazywanego NCB w rejestrach ES:BX. Wywołać przerwanie 5Ch.
Podczas wykonywania polecenia przez NetBIOS aplikacja nie może modyfikować przekazanego NCB. Po wykonaniu rozkazu, rezultat jego wykonania (kod błędu) jest dostępny dla aplikacji w rejestrze AL i odpowiednim polu (NCB_RETCODE) przekazanego NCB. Niektóre inne pola NCB mogą także zawierać informacje zwrócone przez NetBIOS.
|