NetBIOS

**NetBIOS** (singkatan dari istilah dalam bahasa Inggris: ***Network Basic Input/Output System***) adalah sebuah spesifikasi yang dibuat oleh International Business Machine (sebenarnya dibuat oleh Sytek Inc. untuk IBM) dan Microsoft yang mengizinkan aplikasi-aplikasi terdistribusi agar dapat saling mengakses layanan jaringan, tanpa memperhatikan protokol transport yang digunakan. Versi NetBIOS paling baru adalah NetBIOS versi 3. Implementasi versi awal dari NetBIOS hanya mengizinkan jumlah node yang terhubung hingga 72 *node* saja. Versi-versi selanjutnya memperluas jumlah node yang didukung hingga ratusan *node* dalam sebuah jaringan. NetBIOS yang berjalan di atas protokol TCP/IP (*NetBIOS over TCP/IP*) didefinisikan dalam RFC 1001, RFC 1002, dan RFC 1088.

## Selayang pandang
NetBIOS menyediakan layanan *[[input/output]]* untuk mendukung aplikasi klien/server dalam sebuah jaringan. Dari pandangan arsitektural, NetBIOS mendefinisikan dua hal berikut ini:
* Mekanisme Interprocess Communication (IPC) atau Application Programming Interface (API) yang mengizinkan aplikasi-aplikasi yang mendukung NetBIOS agar dapat berkomunikasi secara jarak jauh melalui jaringan dan melakukan permintaan terhadap layanan dari tingkat yang lebih bawah pada tumpukan protokol (*[[protocol stack]]*).
* Sebuah protokol yang beroperasi pada lapisan transport dan lapisan sesi dalam model referensi tujuh lapis OSI yang mengizinkan fungsi-fungsi seperti pembuatan sesi dan penghancurannya, dan juga registrasi nama NetBIOS, pembaruan nama NetBIOS, dan resolusi nama NetBIOS.

NetBIOS memiliki *overhead* yang lebih besar dibandingkan mekanisme IPC lainnya, karena NetBIOS dapat berubah bentuk tergantung dari protokol jaringan di mana ia berjalan. Tabel berikut ini menyebutkan beberapa protokol yang umum dan bentuk protokol saat dikombinasikan dengan NetBIOS.

NetBIOS merupakan bagian dari platform jaringan berbasis Windows NT. Setiap mesin Windows NT membutuhkan sebuah nama NetBIOS yang unik agar dapat berkomunikasi dengan mesin lainnya yang terhubung ke jaringan.

NetBIOS telah mulai ditinggalkan dalam Windows 2000 dan seterusnya karena sistem-sistem operasi tersebut menggunakan standar industri DNS, yang digunakan untuk menamai host dan melakukan resolusi nama. Windows NT memang mendukung DNS, tetapi bukan merupakan sebuah kewajiban. Meskipun demikian, dukungan terhadap NetBIOS masih diteruskan agar dapat mendukung host-host yang masih menggunakan sistem operasi lama, semacam Windows 95/98/Me.

Meski dukungan terhadap NetBIOS diteruskan dalam sistem operasi Windows NT 5.x, ada beberapa hal yang dapat menjadikan sistem-sistem lama tidak dapat menggunakan NetBIOS sebagai protokol untuk menghubungi sistem-sistem tersebut, yakni:
* Windows NT 5.x mendukung penggunaan nama host hingga 64 karakter, sementara NetBIOS hanya mendukung penggunaan nama NetBIOS hingga 15 karakter saja. Sistem operasi lama akan memotong 64 karakter nama ''host'' tersebut ke dalam 15 karakter, yang kemungkinan akan menyebabkan tabrakan/kolisi.
* Penamaan DNS dapat menggunakan karakter *dash* (-) sebagai nama host/domain, tetapi tidak boleh menggunakan karakter *underscore* (_) untuk merepresentasikan spasi sementara Nama NetBIOS menggunakan karakter *underscore* untuk merepresentasikan spasi. DNS dalam Windows NT 5.x mendukung penggunaan karakter Unicode, sehingga sistem-sistem lama yang belum mendukungnya agak susah untuk mengakses host Windows NT 5.x.

## Layanan NetBIOS (''NetBIOS Services'')
NetBIOS menawarkan tiga buah layanan NetBIOS, yakni sebagai berikut:
* ***NetBIOS Name service***: merupakan layanan yang digunakan untuk melakukan registrasi dan resolusi nama NetBIOS.
* ***NetBIOS Session service***: merupakan layanan yang digunakan untuk membuat sesi koneksi yang berbasis *connection-oriented*.
* ***NetBIOS Datagram distribution service***: merupakan layanan yang digunakan untuk menyampaikan *datagram* secara *connectionless*.
### NetBIOS Name Service

Agar dapat memulai sesi koneksi NetBIOS atau menyampaikan *datagram* NetBIOS, sebuah aplikasi harus melakukan registrasi nama NetBIOS miliknya dengan menggunakan layanan *NetBIOS Name Service*. Panjang sebuah nama NetBIOS hanyalah 16 *byte*. Umumnya, *byte* ke-16 digunakan untuk mendeskripsikan "jenis", dengan teknik yang serupa dengan nomor ''port'' dalam TCP/IP. Dalam NetBIOS over TCP/IP, layanan *NetBIOS Name Service* beroperasi dalam *port* UDP 137. *Port* TCP 137 juga dapat digunakan, tetapi jarang.

Perintah-perintah yang dimiliki oleh layanan ini antara lain:
* **Add Name**: malakukan registrasi terhadap sebuah nama NetBIOS.
* **Add Group Name**: melakukan registrasi terhadap sebuah nama group NetBIOS.
* **Delete Name**: melakukan penggagalan registrasi nama terhadap sebuah nama NetBIOS atau nama group NetBIOS yang telah teregistrasi terlebih dahulu.
* **Find Name**: mencari sebuah nama NetBIOS di dalam jaringan.

### NetBIOS Session Service
Layanan ini dapat digunakan oleh dua buah node untuk membuat sebuah koneksi dan dapat melakukan "percakapan", sehingga mengizinkan pesan-pesan yang besar untuk ditangani dan menyediakan fungsi pendeteksian kesalahan dan pemulihannya. Dalam protokol NetBIOS over TCP/IP, layanan ini berjalan di dalam *port* TCP 139.

Perintah-perintah yang terdapat di dalam layanan ini antara lain:
* **Call**: membuka sebuah sesi koneksi ke sebuah nama NetBIOS yang terdapat di dalam komputer di dalam jaringan.
* **Listen**: mendengarkan jaringan untuk mencari apakah terdapat percobaan untuk membuka sebuah sesi koneksi terhadap sebuah nama NetBIOS.
* **Hang Up**: menutup sebuah sesi koneksi.
* **Send**: mengirimkan sebuah paket ke komputer yang diajak "bercakap-cakap" dalam sesi koneksi yang bersangkutan.
* **Send No Ack**: mengirimkan sebuah paket ke komputer yang diajak bercakap-cakap, seperti halnya perintah **Send** dengan satu perbedaan yakni perintah ini tidak membutuhkan *[[acknowledgment]]*.
* **Receive**: menunggu kedatangan sebuah paket yang dikirimkan oleh komputer yang mengirimkan paket dengan menggunakan perintah **Send** atau **Send No Ack**.

### NetBIOS Datagram Distribution Service
Layanan *NetBIOS Datagram Distribution Service* merupakan sebuah mekanisme penyampaian data secara *connectionless*. Mengingat setiap pesan akan dikirimkan secara independen, maka pesan-pesan tersebut haruslah berukuran lebih kecil. Layanan ini juga tidak menawarkan layanan pendeteksian kesalahan dan pemulihannya, sehingga merupakan tanggung jawab aplikasi untuk melakukannya. Dalam NetBIOS over TCP/IP, layanan ini berjalan di atas port UDP 138.

Layanan ini memiliki beberapa perintah, yakni sebagai berikut:
* **Send Datagram**: mengirimkan sebuah datagram ke sebuah nama NetBIOS yang terdapat pada komputer jarak jauh.
* **Send Broadcast Datagram**: mengirimkan datagram ke semua nama NetBIOS yang terdapat di dalam jaringan yang sama.
* **Receive Datagram**: menunggu kedatangan sebuah paket yang dikirimkan dengan menggunakan perintah **Send Datagram** dari komputer lain.
* **Receive Broadcast Datagram**: menunggu kedatangan sebuah paket yang dikirimkan dengan menggunakan perintah **Send Broadcast Datagram** dari komputer lain.