Server Message Block

***Server Message Block*** disingkat **SMB** adalah istilah bahasa Inggris dalam teknologi informasi yang mengacu kepada protokol *[[client/server]]* yang ditujukan sebagai layanan untuk berbagi berkas di dalam sebuah jaringan. Protokol ini seringnya digunakan di dalam sistem operasi Microsoft Windows dan IBM OS/2. Sistem operasi berbasis UNIX juga dapat menggunakannya dengan tambahan perangkat lunak yang disebut dengan SAMBA.

Protokol SMB ditemukan oleh Barry Feignbaum dari Laboratorium Boca Raton milik IBM pada saat sistem operasi MS-DOS masih berjaya. Protokol itu selanjutnya dikembangkan lebih lanjut oleh 3Com Corporation, IBM, Intel, dan Microsoft pada pertengahan dekade 1980 hingga akhir dekade tersebut. SMB awalnya menggunakan protokol NetBIOS sebagai protokol di mana ia berjalan, sebelum menggunakan protokol NetBIOS over TCP/IP (NBT) sebagai protokol lapisan *transport*-nya. Dengan begitu, SMB juga dapat digunakan dalam sebuah jaringan TCP/IP yang lebih luas dukungannya.

SMB mendukung fungsi-fungsi seperti:
* Membuka dan menutup koneksi antara klien-klien SMB (yang disebut sebagai Redirector) dan server SMB (komputer yang menjalankan *file and print services*) untuk mengizinkan klien agar dapat mengakses sumberdaya di dalam jaringan.
* Menemukan, membaca, dan menulisi berkas dalam sebuah *file server*.
* Menemukan dan menggunakan alat pencetak yang digunakan bersama-sama untuk mencetak secara jarak jauh.

SMB juga dapat digunakan sebagai sebuah protokol message-passing untuk melakukan beberapa transaksi dalam lingkungan aplikasi terdistribusi. Protokol Remote Procedure Call (RPC) dapat digunakan melalui SMB dan SMB juga mendukung beberapa mekanisme Interprocess communication (IPC), seperti halnya ''named pipe'' (pipa bernama) dan *[[mailslot]]*.

SMB memiliki empat jenis pesan (message):
* ***Session Control Message***: digunakan untuk membuka atau menutup sebuah koneksi antara *redirector* dengan *server*.
* ***File Message***: digunakan oleh *redirector* untuk memperoleh akses terhadap berkas yang berada di dalam *server*.
* ***Printer Message***: digunakan oleh *redirector* untuk mengirimkan data ke sebuah antrean alat pencetak (print queue) yang terdapat dalam server.
* ***Message***: mengizinkan aplikasi untuk saling bertukar pesan dengan komputer lainnya.

Untuk masalah keamanan, SMB mengimplementasikannya pada dua level, yakni *user-level* dan *share-level*.

SMB tidak diajukan menjadi standar Internet, sebelum tahun 1996, saat Microsoft memodifikasi SMB menjadi protokol CIFS (Common Internet File System).
## Layanan
Pada Microsoft Windows, implementasi SMB terdiri dari dua layanan Windows service: "Server" (ID: `LanmanServer`) dan "Workstation" (ID: `LanmanWorkstation`).
### Layanan server
***Layanan server***, dalam Windows (sering juga disebut sebagai LanmanServer), adalah sebuah komponen di dalam sistem operasi Microsoft Windows NT, Windows 2000, Windows XP, Windows Server 2003, Windows Vista, dan Windows Server 2008 yang mengizinkan sebuah komputer untuk menyediakan layanan berbagi berkas (*file sharing*) dan alat pencetak (*print service*) melalui sebuah jaringan. Ketika komponen klien (disebut sebagai *[[Redirector]]*) membuat sebuah permintaan terhadap sebuah sumber daya yang diizinkan untuk diakses di dalam sebuah komputer, maka layanan ini akan merespons dan meneruskan sumber daya tersebut kepada klien.

Layanan ini diimplementasikan sebagai *[[device driver|driver]]* sistem berkas dalam Windows NT dan diletakkan di atas lapisan *[[Transport Driver Interface]]* (TDI), yang mengizinkannya untuk berinteraksi secara independen dengan semua protokol lapisan transport yang tersedia di dalam sistem operasi. Layanan ini akan merespons terhadap semua permintaan seperti halnya yang dilakukan oleh *driver* sistem berkas, sehingga mengizinkan pengguna untuk membaca dan menulisi data ke dalam sebuah *share* dalam jaringan.

Layanan ini terdiri atas dua komponen dasar, yakni:
* `Server` (atau `SRV`), yakni sebuah layanan Windows yang berjalan di dalam proses Service Control Manager (`services.exe`).
* `Srv.sys`: yakni sebuah driver sistem berkas yang beroperasi di dalam modus ''kernel'' dan menangani semua fungsi-fungsi tingkat rendah dari layanan *server*, seperti halnya membaca berkas dan menulisnya.

Jika sebuah klien jaringan jarak jauh membuat sebuah permintaan terhadap layanan Server di dalam komputer lokal, yang dilakukan dengan cara meminta sebauh berkas dari sistem berkas lokal, maka permintaan tersebut akan diterima oleh driver kartu jaringan/Network Interface Card dan diberikan ke atas kepada `srv.sys`, yang kemudian meneruskan permintaan tersebut kepada driver sistem berkas yang cocok (seperti halnya `ntfs.sys` atau `fastfat.sys`). Driver sistem berkas pun akan memanggil driver subsistem media penyimpanan Windows (`disk.sys`) untuk membaca berkas yang diminta dan kemudian mengembalikan isi dari berkas yang diminta kepada *driver* sistem berkas yang kemudian memberikannya kembali kepada `srv.sys`.`Srv.sys` pun memberikan informasi tersebut melalui stack protokol ke *driver* *Network Interface Card*, yang kemudian meneruskannya kepada klien yang memintanya di jaringan.
### Layanan Workstation
**Layanan Workstation**, yang juga dikenal sebagai `LanManWorkstation`, adalah sebuah komponen yang terdapat di dalam sistem operasi keluarga Windows NT (Windows NT 3.1, Windows NT 3.50, Windows NT 3.51, Windows NT 4.0, Windows 2000, Windows XP, Windows Server 2003, Windows Vista, dan Windows Server 2008) yang mengizinkan sebuah klien untuk melakukan *request* sebuah sumber daya tertentu (berkas ataupun *[[printer]]*) dari server yang menjalankan layanan server melalui jaringan.

Layanan Workstation adalah merupakan sebuah layanan yang bergerak dalam modus pengguna yang bekerja bersama-sama dengan sebuah *[[device driver|driver]]* sistem berkas Windows NT yang berjalan dalam modus ''kernel'' yang disebut dengan *[[redirector]]*. *Redirector* diwujudkan oleh berkas `rdr.sys`. *Redirector* diimplementasikan sebagai sebuah *driver* sistem berkas standar (sama seperti halnya FAT, CDFS atau NTFS) dan terletak di atas lapisan Transport Driver Interface (TDI), yang memungkinkannya untuk berinteraksi secara independen dengan protokol lapisan transpor apapun yang terinstalasi di dalam sistem.

Layanan Workstation dalam sebuah komputer klien akan menerima sebuah request I/O untuk mengakses berkas, *[[named pipe]]*, atau *[[mailslot]]*, dan menentukan layanan mana yang terbaik yang dapat menyediakan apa yang diminta dan kemudian melakukan pengalihan (*redirection*) terhadap *request* tersebut kepada layanan server di dalam komputer server di mana sumber daya yang diminta berada. *[[layanan server|Layanan Server]]* kemudian menyediakan sumber daya yang diminta dan kemudian memetakannya kembali kepada komputer klien yang melakukan *request* tadi. Layanan server juga terdiri atas dua komponen, yakni sebuah komponen yang berjalan di dalam modus pengguna yang disebut dengan `LanManServer` dan sebuah komponen yang berjalan di dalam modus kernel yang diimplementasikan sebagai sebuah driver sistem berkas yang disebut dengan `Srv.sys`.

Selain **redirector** bawaan Windows, Administrator juga dapat menginstalasikan beberapa redirector lainnnya dari pihak ketiga yang tentuya dapat berjalan bersebelahan dengan layanan Workstation Windows. Sebuah contoh, adalah **Gateway Service for NetWare**, yang mengizinkan klien-klien berbasis Microsoft Windows untuk mengakses berkas dan *[[printer]]* dari sebuah *server* yang menjalankan Novell NetWare.

## Referensi