Jumat, 20 Januari 2012

Pengertian MAC Address di Jaringan Komputer


MAC Address (Media Access Control Address) adalah sebuah alamat jaringan yang diimplementasikan pada lapisan data-link dalam tujuh lapisan model OSI, yang merepresentasikan sebuah node tertentu dalam jaringan. Dalam sebuah jaringan berbasis Ethernet, MAC address merupakan alamat yang unik yang memiliki panjang 48-bit (6 byte) yang mengidentifikasikan sebuah komputer, interface dalam sebuah router, atau node lainnya dalam jaringan. MAC Address juga sering disebut sebagai Ethernet address, physical address, atau hardware address.
MAC Address mengizinkan perangkat-perangkat dalam jaringan agar dapat berkomunikasi antara satu dengan yang lainnya. Sebagai contoh, dalam sebuah jaringan berbasis teknologi Ethernet, setiap header dalam frame Ethernet mengandung informasi mengenai MAC address dari komputer sumber (source) dan MAC address dari komputer tujuan (destination). Beberapa perangkat, seperti halnya bridge dan switch Layer-2 akan melihat pada informasi MAC address dari komputer sumber dari setiap frame yang ia terima dan menggunakan informasi MAC address ini untuk membuat “tabel routing” internal secara dinamis. Perangkat-perangkat tersebut pun kemudian menggunakan tabel yang baru dibuat itu untuk meneruskan frame yang ia terima ke sebuah port atau segmen jaringan tertentu di mana komputer atau node yang memiliki MAC address tujuan berada.
Dalam sebuah komputer, MAC address ditetapkan ke sebuah kartu jaringan (network interface card/NIC) yang digunakan untuk menghubungkan komputer yang bersangkutan ke jaringan. MAC Address umumnya tidak dapat diubah karena telah dimasukkan ke dalam ROM. Beberapa kartu jaringan menyediakan utilitas yang mengizinkan pengguna untuk mengubah MAC address, meski hal ini kurang disarankan. Jika dalam sebuah jaringan terdapat dua kartu jaringan yang memiliki MAC address yang sama, maka akan terjadi konflik alamat dan komputer pun tidak dapat saling berkomunikasi antara satu dengan lainnya. Beberapa kartu jaringan, seperti halnya kartu Token Ring mengharuskan pengguna untuk mengatur MAC address (tidak dimasukkan ke dalam ROM), sebelum dapat digunakan.
MAC address memang harus unik, dan untuk itulah, Institute of Electrical and Electronics Engineers (IEEE) mengalokasikan blok-blok dalam MAC address. 24 bit pertama dari MAC address merepresentasikan siapa pembuat kartu tersebut, dan 24 bit sisanya merepresentasikan nomor kartu tersebut. Setiap kelompok 24 bit tersebut dapat direpresentasikan dengan menggunakan enam digit bilangan heksadesimal, sehingga menjadikan total 12 digit bilangan heksadesimal yang merepresentasikan keseluruhan MAC address. Berikut merupakan tabel beberapa pembuat kartu jaringan populer dan nomor identifikasi dalam MAC Address.
Nama vendor Alamat MAC
Cisco Systems 00 00 0C
Cabletron Systems 00 00 1D
International Business Machine Corporation 00 04 AC
3Com Corporation 00 20 AF
GVC Corporation 00 C0 A8
Apple Computer 08 00 07
Hewlett-Packard Company 08 00 09
Agar antara komputer dapat saling berkomunikasi satu dengan lainnya, frame-frame jaringan harus diberi alamat dengan menggunakan alamat Layer-2 atau MAC address. Tetapi, untuk menyederhanakan komunikasi jaringan, digunakanlah alamat Layer-3 yang merupakan alamat IP yang digunakan oleh jaringan TCP/IP. Protokol dalam TCP/IP yang disebut sebagai Address Resolution Protocol (ARP) dapat menerjemahkan alamat Layer-3 menjadi alamat Layer-2, sehingga komputer pun dapat saling berkomunikasi.
Beberapa utilitas jaringan dapat menampilkan MAC Address, yakni sebagai berikut:
* IPCONFIG (dalam Windows NT, Windows 2000, Windows XP dan Windows Server 2003).
* WINIPCFG (dalam Windows 95, Windows 98, dan Windows Millennium Edition).
* /sbin/ifconfig (dalam keluarga sistem operasi
UNIX )
Berikut ini adalah contoh output dari perintah ipconfig dalam Windows XP Professional:
C:>ipconfig /all
Windows IP Configuration
Host Name . . . . . . . . . . . . : karma
Primary Dns Suffix . . . . . . . :
Node Type . . . . . . . . . . . . : Unknown
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
Ethernet adapter loopback:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : Microsoft Loopback Adapter
Physical Address. . . . . . . . . : 02-00-4C-4F-4F-50
DHCP Enabled. . . . . . . . . . . : No
IP Address. . . . . . . . . . . . : 192.168.0.1
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.0.7
Fungsi MAC address
Cara memblock ip dan mac address yang berada di sebuah network merupakan hal mudah di Linux. Yang jelas, kita sudah mengetahui alamat ip dan mac adress yang dipakai oleh si target.
Scan
Untuk mengetahui alamat ip dan MAC Address target, lakukan scanning pada jaringan terlebih dahulu. Langkah pertama yang bisa dilakukan adalah melakukan scan dengan bantuan ping dan arp.
root@ahmad:~# ping -b -c 2 -W 1 10.0.2.255
root@ahmad:~# for i in $(seq 1 254) ; do ping -c 2 -W 1 10.0.2.$i >& /dev/null & done
root@ahmad:~# arp | grep eth
Hasil terakhir dari table arp akan menunjukkan alamat ip mana saya yang aktif beserta MAC Address-nya di net ip 10.0.2.x, Cara yang lain untuk scanning ip adalah dengan menggunakan tools nmap.
root@ahmad:~# nmap -sP -PI -PT 10.0.2.1/24
dengan melakukan nmap ke salah satu ip address pada sebuah jaringan, maka alamat ip lainnya (yang aktif) bisa ditemukan.
Block Ip
Untuk melakukan bloc ip, silahkan gunakan perintah iptables seperti berikut :
root@ahmad:~# iptables -I INPUT -s 10.0.2.212 -j DROP
Contoh diatas adalah perintah untuk mem-block ip 10.0.2.212 ke server. Untuk menghapus perintahnya,
root@ahmad:~# iptables -D INPUT -s 10.0.2.22 -j DROP
Block MAC Address
Untuk memblock MAC Address, sebenarnya hampir sama.
root@ahmad:~# iptables -A INPUT -m mac -mac-source 00:00:b4:aa:c1:34 -j DROP
dan untuk menghapusnya, tinggal menjalankan perintah yang sama dengan mengganti opsi -A (add) menjadi -D (delete)
root@ahmad:~# iptables -D INPUT -m mac -mac-source 00:00:b4:aa:c1:34 -j DROP
ACAK-ACAK MAC address
dapat mengacak-acak counter wireless di sekitar kota anda. Sehingga anda dapat berinternetan sepuasnya hanya dengan membeli sekali account di server. Sebenarnya trick acak-acak ini hanya menggati MAC Address Laptop anda yang digunakan, sehingga setiap MAC Address yang baru perhitungan waktu kembali ke 00.00 / semula.
Sebelumnya cara ini harus membutuhkan “Live CD Distro Linux BackTrack2″,
Jalankan Live CD Distro Linux BackTrack2, masukkan username “root”, lalu masukkan password “toor”.
Setelah muncul prompt, ketikkan “startx”.
Setelah muncul desktop environment KDE, klik tombol “K” (di pojok kiri bawah). Pilih BackTrack Radio Network Analysis -> 80211 Analyser Kismet.
Lalu muncul window “Select Network Device”, pilih “wifi0”. Klik “OK”.
Muncul tampilan Kismet, secara otomatis Kismet akan mencari wireless client yang sedang aktif. Bila ditemukan wireless client yang aktif tetapi tidak terhubung dengan jaringan, maka akan muncul pesan “ALERT: Suspicious client 00:02:6F:37:08:20 – probing networks but never participating.”
Bila Kismet berhasil menemukan Access Point yang aktif, maka akan muncul pesan “Found IP 192.168.2.1 for slamet::00:0E:2E:C2:2C:0E via ARP”.
Keterangan:
slamet -> nama SSID
Tutup Kismet, lalu buka console untuk menjalankan tools scanning yang lain, yakni airodump.
Keterangan:
Bila kita menggunakan program scanning yang lain, biasanya program pertama akan membuat driver wireless kita “rusak”. Untuk dapat digunakan pada program yang kedua, kita perlu memperbaiki driver tersebut (dimatikan lalu dihidupkan kembali).
Cara memperbaiki driver, ketik:
#airmon-ng -> untuk mengecek interface yang tersedia.
Matikan driver “ath0” dan “ath1” dengan mengetik:
#airmon-ng stop ath0
#airmon-ng stop ath1 -> bila interface ath1 ada.
Mengaktifkan driver yang baru, ketik:
#airmon-ng start wifi0
Bila diketikkan perintah #iwconfig , maka muncul informasi “ath0” sudah aktif dengan Mode=Monitor.
Berikutnya, ketik #airodump-ng ath0
Dengan demikian maka kesimpulan bahwa dengan airodump mendapatkan hasil scanning MAC Address Client yang lebih cepat dibandingkan dengan menggunakan Kismet. Tetapi Client IP Address tidak bisa didapatkan, kecuali menggunakan Kismet.
Kita juga dapat menggunakan program K-MAC(atau anda bisa merubah MAC Address melalui regedit) yang di-install pada windows untuk merubah MAC-Address Wireless kita menjadi MAC-Address salah satu client yang terdaftar pada MAC Address Filtering.
Yang perlu dilakukan adalah mencari informasi MAC-Address client dengan mengunakan Kismet atau airodump, catat MAC-Address tersebut, lalu jalankan K-MAC di windows dan ubah MAC-Addressnya.
kemdian restart komputer anda

Selasa, 17 Januari 2012

Teknik Kompilasi



Menelaah sedikit isi materi tentang Teknik Kompilasi yang bisa dibilang tidak sederhana, timbul rasa penasaran apa sih tujuan kita mempelajarinya? Nah mari kita telaah bersama dan sedikit lebih mengenal..

Tujuan Pembelajarannya adalah :
1.Mahasiswa memahami cara kerja serta proses yang terjadi pada sebuah Compiler
2.Mahasiswa memahami konsep pembuatan sebuah Compiler
3.Mahasiswa mengetahui bagaimana sebuah bahasa pemrograman dapat diterjemahkan oleh mesin.

Materinya meliputi :
1.Bentuk-bentuk karakter dan kelas Grammar.
2.Ekspresi Regular dan Automata
3.Analisa Leksikal sebagai tahap awal kompilasi
4.Analisa Sintaks, bentuk-bentuk derivasi serta implementasi parsing.
5.Analisa Semantik dan tahapan Sintesa.
6.Penanganan kesalahan kompilasi dan fungsi tabel informasi.


Pengertian Teknik Kompilasi :
Merupakan Teknik dalam melakukan pembacaan suatu program yang ditulis dalam bahasa sumber, kemudian diterjemahkan ke dalam suatu bahasa lain yang disebut bahasa sasaran. Dalam melakukan proses penerjemahan tersebut, sudah barang tentu kompilator akan melaporkan adanya keanehan-keanehan atau kesalahan yang mungkin ditemukannya. Proses penerjemahan yang dilakukan oleh kompilator ini disebut proses kompilasi (compiling).
Bila dipandang sepintas lalu, maka akan timbul beranekaragam kompilator yang dapat dibuat antara lain sebagai berikut :
ü  Bahasa Sumber seperti bahasa FORTRAN, PASCAL, C dan juga bahasa-bahasa lainnya yang sifat dan pemakaiannya agak spesifik atau khusus, seperti bahasa untuk program DBASE, SPSS dan lain sebagainya.
ü  Bahasa Sasaran dapat berupa bahasa sumber lain seperti C, FORTRAN dan lain sebagainya atau Bahasa Mesin (Machine Language) yang digunakan oleh suatu prosessor mikro atau sumber komputer besar maupun komputer super.

Sejarah perkembangan suatu kompilator sudah dimulai sejak lama, yaitu pada saat mulai ditemukannya komputer pada awal 1950-an. Sejak waktu tersebut teknik dan cara pembentukan suatu kompilator telah berkembang dengan sangat pesat dan pembentukkan suatu kompilator dapat dilakukan makin mudah. Demikian pula program bantu (tools) untuk membuat suatu kompilator sudah dapat diperoleh sehingga pembentukan suatu kompilator dapat dilakukan dengan cepat.
Kompilator pertama yang dibuat adalah kompilator untuk bahasa FORTRAN yang pada saat itu dikembangkan dengan memakan sejumlah tenaga ahli yang setara dengan pekerjaan yang dilakukan oleh 18 orang. Dengan adanya program bantu dan tata cara pembentukan yang sistematis dan tertata dengan baik serta pendefinisian struktur bahasa yang cermat, maka suatu kompilator untuk bahasa yang terstruktur seperti PASCAL atau C dapat dikembangkan.

Proses kompilasi dari suatu kompilator pada dasarnya dapat dibagi ke dalam 2 bagian utama yaitu bagian analisis dan bagian sintesis.
ü  Tahap analisis program yang ditulis dalam bahasa sumber dibagi dan dipecah ke dalam beberapa bagian yang kemudian akan dipresentasikan ke dalam suatu bentuk antara dari program sumber.

Operasi-operasi yang dilakukan oleh program sumber ditentukan dan dicatat dalam suatu struktur pohon (tree) yang disebut dengan nama pohon sintaks (sintax tree) Dalam hal ini setiap nodal pada tree tersebut menyatakan suatu operasi, sedangkan anak dari nodal (titik) tersebut memberikan argumen yang diperlukan

Secara umum proses dalam tahap analis terdiri dari 3 bagian utama, yaitu :
1.      Proses analisis leksikal
2.       Proses analisis sintaktik
3.       Proses analisis semantik
ü  Tahap sintesis yang berikutnya program sasaran dibentuk berdasarkan representasi antara yang dihasilkan pada tahap analisis.
Untuk tahap sintetis terdiri dari 2 bagian utama, yaitu
4.      Proses yang menghasilkan kode (code generator)
5.      Proses optimasi kode (code optimizer)

Sebelum Bahasa sasaran dapat dihasilkan, dalam melakukan ini tiap bagian utama akan berhubungan dan berkomunikasi dengan suatu berkas tabel yang disebut tabel simbol (symbol table) yaitu suatu tabel yang berisi semua simbol yang digunakan dalam bahasa sumber. Selain kompilator masih diperlukan beberapa program lainnya sebelum dapat dibentuk bahasa sasaran yang dapat dijalankan. Seperti suatu bahasa sumber dapat dituliskan dalam beberapa modul yang terpisah dan disimpan dalam beberapa file yang terpisah.
Untuk menanggulangi hal ini, maka suatu program khusus yang disebut dengan suatu praprosesor digunakan untuk mengumpulkan modul-modul yang saling lepas ini ke dalam suatu program baru. Praposesor dapat pula melengkapi singkatan-singkatan atau ungkapan-ungkapan maupun kependekan-kependekan yang digunakan dalam bahasa sumber seperti pendef

Nah..demikian sekilas tentang Teknik Kompilasi, bagi teman-teman yang berminat mempelajarinya silakan teruskan pembelajaran  (^_^)  Tetap Semangat ya!

Jumat, 13 Januari 2012

Makna Ujian bagi Seorang Muslim

Bagi seorang muslim, sungguh tidaklah Allah SWT menurunkan bencana/ujian melainkan ada hikmah dibalik itu semua. Allah telah menjelaskan dalam ayat2 Al Qur'an. Diantara hikmah/tujuan adanya ujian bagi muslimin adalah :

1. Prasayarat menjadi mu'min
Apakah manusia itu mengira bahwa mereka dibiarkan (saja) mengatakan: "Kami telah beriman", sedang mereka tidak diuji lagi?. Dan sesungguhnya Kami telah menguji orang-orang sebelum mereka, maka sesungguhnya Allah mengetahui orang-orang yang benar dan sesungguhnya Dia mengetahui orang-orang yang dusta.(QS. Al Ankabut 29:2-3)

2. Menguji kesungguhan dan keshabaran
Dan sesungguhnya Kami benar-benar akan menguji kamu agar Kami mengetahui orang-orang yang berjihad dan bersabar diantara kamu; dan agar Kami menyatakan (baik buruknya) hal ihwalmu.(QS. Muhammad 47:31)

Dan sungguh akan Kami berikan cobaan kepadamu, dengan sedikit ketakutan, kelaparan, kekurangan harta, jiwa dan buah-buahan. Dan berikanlah berita gembira kepada orang-orang yang sabar,(yaitu) orang-orang yang apabila ditimpa musibah, mereka mengucapkan: "Innaa lillahi wa innaa ilaihi raaji'uun ".(QS. Al Baqarah 2:155-156)

3. Syarat menjadi ahlul jannah
Apakah kamu mengira bahwa kamu akan masuk surga, padahal belum datang kepadamu (cobaan) sebagaimana halnya orang-orang terdahulu sebelum kamu? Mereka ditimpa oleh malapetaka dan kesengsaraan, serta digoncangkan (dengan bermacam-macam cobaan) sehingga berkatalah Rasul dan orang-orang yang beriman bersamanya: "Bilakah datangnya pertolongan Allah". Ingatlah, sesungguhnya pertolongan Allah itu amat dekat.(QS. Al Baqarah 2:214)

4. Membersihkan dosa
Dan agar Allah membersihkan orang-orang yang beriman (dari dosa mereka) dan membinasakan orang-orang yang kafir.(QS. Ali Imran 3:141)

Mudah2an rangkaian bencana yang kita alamai dalam beberapa tahun belakangan ini adalah ujian dari Allah SWT. Untuk menguji keimanan dan keshabaran kita. Untuk melebur dosa2 kita yang sadar atau tanpa sadar telah kita lakukan, sendirian maupun berjama'ah.


Sebagai seorang mukmin kalau musibah atau ujian itu menimpa diri kita, apa yang harus kita lakukan untuk bisa menghadapinya?


Paling tidak ada tujuh trik untuk bisa menyelesaikan berbagai ujian kehidupan. Yaitu:
Pertama, yakini bahwa cobaan itu merupakan ekspresi cinta Allah pada hamba-Nya. Allah Swt memberikan cobaan agar kita menjadi lebih dewasa dan matang dalam mengarungi kehidupan. “Abu Hurairah r.a. berkata, bahwa Rasulullah saw. bersabda, “Barang siapa yang dikehendaki Allah menjadi orang yang baik maka ia diberi-Nya cobaan.” (H.R.Bukhari)


Kedua, yakini bahwa makin besar dan banyak cobaan yang Allah turunkan kepada kita, makin besar pula pahala dan sayang Allah yang akan dilimpahkan kepada kita. Dengan catatan, kita bisa menyelesaikan setiap ujian itu secara baik.
“Anas r.a. berkata: Nabi saw. bersabda, “Sesungguhnya besarnya pahala itu tergantung pada besarnya cobaan. Sesungguhnya apabila Allah Ta’ala itu mencintai suatu kaum maka Ia mencobanya. Barang siapa yang rela menerimanya, ia mendapat keridhoan Allah, dan barang siapa yang murka, maka ia pun mendapat murka Allah.” (H.R.Tirmidzi)


Ketiga, yakini bahwa ujian itu akan menghapuskan dosa-dosa yang pernah kita kerjakan. Abu Sa’id dan Abu Hurairah r.a. meriwayatkan bahwa Nabi saw. bersabda: “Seorang muslim yang tertimpa penderitaan, kegundahan, kesedihan, kesakitan, gangguan, dan kerisauan, bahkan hanya terkena duri sekalipun, semuanya itu merupakan kafarat (penebus) dari dosa-dosanya.” (H.R. Bukhari dan Muslim)


Keempat, selalu berpikir positif bahwa apapun yang menimpa diri kita akan menjadi kebaikan. Abu Yahya Shuhaib bin Sinan r.a. berkata, bahwa Rasulullah saw. bersabda: “Sungguh menakjubkan sikap seorang mukmin itu, segala keadaan dianggapnya baik dan hal ini tidak akan terjadi kecuali bagi seorang mukmin. Apabila mendapatkan kesenangan, ia bersyukur, maka itu lebih baik baginya, dan apabila ditimpa penderitaan, ia bersabar, maka itu lebih baik baginya.”(H.R.Muslim)


Kelima, yakini bahwa setelah dalam kesulitan ada kemudahan. Fakta menunjukkan, sering kali ide-ide brilian justru lahir atau muncul ketika kita berada dalam puncak kesulitan. Contoh sederhana, banyak mahasiswa bisa mengarang pada saat menghadapi soal-soal ujian bukan ? “Karena sesungguhnya sesudah kesulitan itu ada kemudahan. Sesungguhnya sesudah kesulitan itu ada kemudahan.” (Q.S. Alam Nasyrah 94: 5 – 6)


Keenam, selalu optimis bahwa kita bisa menyelesaikan setiap ujian yang Allah swt. berikan, karena Allah swt. tidak akan memberikan ujian di luar kemampuan hamba-Nya. Optimisme bisa melahirkan energi yang tersembunyi dalam diri kita, karena itu optimisme bisa menjadi bahan bakar untuk menyelesaikan segala persoalan. “Allah tidak membebani seseorang melainkan sesuai dengan kesanggupannya. Ia mendapat pahala (dari kebajikan) yang diusahakannya dan ia mendapat siksa (dari kejahatan) yang dikerjakannya.” (Q.S. Al-Baqarah 2:286)


Ketujuh, hadapi ujian dengan usaha dan do’a. Kerahkan segala ihtiar untuk menyelesaikan ujian dan bingkai usaha itu dengan do’a. “Maka apabila kamu telah selesai (dari suatu urusan), maka kerjakanlah dengan sungguh-sungguh (urusan) yang lain. Dan hanya kepada Tuhanmulah hendaknya kamu berharap.” (Q.S. Alam Nasyarh 94 : 7 – 8). “Berdo’alah kepada-Ku, niscaya akan Aku kabulkan do’amu.” (Q.S. Al-Mu’min 40: 60)


Itulah tujuh trik untuk menghadapi berbagai ujian. Apapun yang menimpa diri kita, Insya Allah akan menjadi kebaikan kalau dihadapi dengan sikap positif, optimisme, ihtiar yang maksial dan dibingkai dengan do’a. Sesungguhnya pertolongan Allah akan turun kalau kita berada di klimaks ujian. Untuk itu, jadikanlah ujian sebagai tangga untuk meraih pertolongan Allah SWT.

Rabu, 11 Januari 2012

Kernel LINUX vs UNIX

Berbagai macam sistem operasi Unix-like tersedia di pasaran, beberapa di antaranya memiliki sejarah yang sangat panjang dengan fitur-fitur yang saat ini sudah lama tidak digunakan, dan berbeda dalam beberapa hal. Semua varian Unix komersial berasal dari sistem SVR4 atau 4.4BSD; seluruhnya mengikuti standard yang ada, seperti POSIX (Portable Operating Systems based on Unix) IEEE dan CAE (Common Application Environment) X/Open.

Berbagai standard yang ada saat ini memberikan spesifikasi antarmuka pemrograman aplikasi (Application Programming Interface, API)—lingkungan yang sudah didefinisikan dengan baik di mana program-program user berjalan (run). Oleh karena itu, standard-standard tersebut tidak dibenarkan memberikan batasan apapun terhadap perancangan internal kernel yang dipilih.

Untuk mendefinisikan suatu antarmuka pengguna (user interface), ide-ide dan fitur-fitur dari rancangan fundamental kernel-kernel Unix-like sering dipertukarkan (untuk keperluan pengembangan). Oleh karena itu, Linux sebanding dengan sistem operasi Unix-like lainnya. Apa yang kita baca di buku ini dan kita lihat pada kernel Linux, akhirnya akan membantu kita untuk memahami varian Unix yang lain.

Kernel versi 2.2 dirancang untuk mengikuti standard POSIX IEEE. Hal ini, tentu saja menunjukan bahwa sebagian besar dari program-program Unix dapat di-compile dan di-execute pada sistem Linux dengan usaha yang minimal atau bahkan tanpa penambahan patch pada source code-nya. Lebih lanjut, Linux mempunyai semua fitur-fitur sebuah sistem operasi Unix yang modern, seperti virtual memory, virtual filesystem, lightweight processes, reliable signals, SVR4 interprocess communications, mendukung sistem Symmetric Multiprocessor (SMP), dan lain lain.

Awalnya, kernel Linux terlihat tidak inovatif. Ketika Linus Torvalds menulis kernel ini pada kali pertama, beliau mengambil rujukan dari beberapa buku “Unix Internals” lama, sepertiThe Design of the Unix Operating System karya Maurice Bach (Prentice Hall, 1986). Sebenarnya, Linux memiliki beberapa perbedaan dalam masalah hal-hal yang mendasar pada Unix (Unix baseline) yang dijelaskan pada buku tersebut (seperti tentang SVR4). Akan tetapi, Linux tidak terpaku pada satu varian Unix manapun. Oleh karena itu, Linux mencoba untuk mengadaptasi fitur-fitur dan rancangan baru yang dinilai baik dari beberapa kernel Unix yang berbeda.

Berikut adalah sejumlah perbedaan antara kernel Linux dengan beberapa kernel Unix yang terkenal (komersial):

Kernel Linux tergolong jenis kernel monolithic. Sebuah program yang berukuran besar, dan kompleks, dirancang secara logis dari komponen-komponen yang berbeda. Hal ini sangat umum; karena sebagain besar varian Unix menganut sistem kernel monolithic, kecuali March 3.0 Carnegie-Mellon.
Kernel Unix versi lama di-compile dan di-link secara statik. Sebagian besar kernel modern bisa me-load dan unload sebagian kode kernelnya (yang biasa disebut dengan module) secara dinamik, contoh kasus load/unload module ini terjadi pada device driver/driver perangkat keras). Fasilitas module ini digunakan dengan sangat baik oleh Linux, dengan me-load dan unload module kernel tersebut di semua sesi aktivitas komputasi sedang berjalan. Diantara semua varian Unix yang bersifat komersial, hanya kernel SVR4.2 yang mempunyai fitur ini.
Kernel threading. Beberapa kernel Unix modern, seperti Solaris 2.x dan SVR4.2/MP, tersusun sebagai suatu kumpulan kernel thread. Suatu kernel thread merupakan suatu execution context yang bisa dengan mandiri (independently) dijadwalkan; berlaku baik pada suatu user program, atau menjalankan beberapa fungsi kernel. Context switch di antara sejumlah kernel thread menggunakan sumber daya yang lebih sedikit dibandingkan antar sejumlah proses, karena biasanya beroperasi pada address space yang sama. Linux menggunakan fungsionalitas kernel thread ini sangat terbatas hanya pada beberapa fungsi kernel secara periodik; kernel thread Linux tidak dirancang untuk mengeksekusi user program, karena tidak memberikan abstraksi dasar execution context. (Hal ini akan dibahas pada bagian selanjutnya.)
Mendukung multithreaded application. Sebagian besar sistem operasi modern mempunyai dukungan terhadap aplikasi-aplikasi yang mempunyai fitur multithreading (multithreaded aplication), inilah, program-program (user programs) yang dirancang dengan baik untuk memiliki alur-alur eksekusi yang relatif mandiri (independently) dengan membagi sejumlah besar bagian struktur data aplikasi. Sebuah multithreaded aplication dapat tersusun dari sejumlah lightweight processes (LWP), atau proses-proses yang dapat beroperasi pada address space, RAM, file-file digunakan (opened files) yang sama, dan beberapa sumber daya lain. Linux merancang versi sendiri fitur lightweight processes ini, dan pasti akan berbeda dengan jenis yang digunakan oleh sistem lain seperti SVR4 dan Solaris. Apabila semua varian Unix komersial menggunakan LWP berbasiskan pada kernel thread, Linux memanfaatkannya dengan metoed basic execution context dan mengaturnya lewat system call non-standard clone ( ).
Linux termasuk jenis kernel nonpreemptive. Hal ini berarti Linux tidak bisa secara langsung melakukan interleave alur eksekusi yang sedang berada pada privileged mode. Beberapa bagian kode program pada kernel memberikan gambaran bagaimana Linux dapat menjalankan dan memodifikasi struktur-struktur data tanpa diganggu (interrupted) dan lahirnya thread-thread baru yang dapat mengubah struktur-struktur data tersebut. Biasanya, kernel yang bersifat preemptive secara penuh akan berhubungan dengan sebuah sistem operasi real-time. Pada saat ini, diantara sistem Unix general-purpose yang ada, hanya Solaris 2.x dan March 3.0 yang termasuk kernel preemptive secara penuh. Pada lain pihak, SVR4.2/MP memperkenalkan beberapa hal solusi preemptive yang membatasi kapabilitas fitur preemptive.
Mendukung sistem multiprocessor. Beberapa kernel varian Unix memanfaatkan keunggulan sistem multiprocessor. Linux 2.2 telah menyediakan hasil pengembangan dari symmetric multiprocessing (SMP), artinya bahwa tidak hanya sistem bisa menggunakan sejumlah prosesor, tapi juga prosesor dapat mengeksekusi task manapun; tidak ada diskriminasi di antara prosesor-prosesor yang ada. Walaupun begitu, Linux 2.2 tidak bisa mengotimalkan fasilitas SMP ini. Beberapa fungsi-fungsi kernel yang bisa dieksekusi secara konkuren—seperti filesystem handling dan networking—sekarang hanya bisa dieksekusi secara sekuensial.
Filesystem. Filesystem standard Linux memiliki kekurangan (saat tulisan ini dibuat) pada fitur journaling. Akan tetapi, filesystem lain yang dinilai lebih baik tersedia untuk Linux, dan walaupun tidak source code tidak tersedia pada kernel Linux; diantaranya adalah: Journaling Filesystem (JFS) AIX IBM, dan XFS filesystem Silicon Graphic. Hal yang luar biasa terhadap teknologi object-oriented virtual filesystem (terinspirasi oleh Solaris dan SVR4), filesystem di luar Linux dapat dengan di-porting dengan mudah ke sistem Linux.
STREAMS. Linux tidak memanfaatkan fitur STREAMS I/O (diadaptasi oleh SVR4) ini ke dalam sistemnya, walaupun saat ini sebagian besar kernel varian Unix mengikutkan ke dalam kernelnya dan menjadikannya sebagai interface yang paling sering digunakan untuk menulis (membuat) driver perangkat keras, dan protokol-protokol jaringan komputer.
Biasanya timbul pernyataan yang membuat hal-hal tersebut di atas tidak menggambarkan secara keseluruhan sesuatu yang selalu benar, tetapi, kenyataannya begitulah adanya. Beberapa fitur Linux membuatnya terlihat sebagai sistem operasi yang sangat unik. Sejumlah kernel varian Unix yang komersial sering memperkenalkan fitur-fitur baru untuk memperoleh keuntungan pasar yang lebih besar, tetapi fitur-fitur tersebut (biasanya) tidak bermanfaat secara signifikan, stabil, dan produktif. Akhirnya, kernel-kernel Unix modern cendrung terlihat sebagai sistem operasi yang sangat berukuran besar tapi menjadi tidak efisien. Sebaliknya, Linux tidak terkekang oleh tekanan dan pengaruh dari kondisi pasar, karena Linux berkembang sejalan dengan gagasan dari para pengembangnya (terutama Linus Torvalds). Secara khusus, Linux memiliki beberapa keunggulan dibanding pesaing varian Unix komersial sebagai berikut:

Linux bersifat bebas.
Kita bisa dengan bebas meng-install suatu sistem Unix yang lengkap dengan harga yang lebih terjangkau dibandingkan dengan harga (tentu saja) perangkat keras.

Linux mempunyai komponen-komponen yang keseluruhannya sangat mudah untuk dimodifikasi.
Penghargaan setinggi-tingginya untuk GNU General Public License (GPL), kita diberi kebebasan untuk melihat dan memodifikasi kode sumber (source code) kernel dan semua program sistem.

Linux dapat berjalan pada komputer low-end (spesifikasi hardware yang murah).
Kita bisa membangun sebuah server menggunakan komputer kelas rendah seperti sistem Intel 80386 dengan RAM 4 MB.

Linux memiliki kualitas standard kode sumber yang baik.
Sistem Linux biasanya sangat stabil; memiliki laju kegagalan dan waktu pemeliharaan sistem yang sangat rendah.

Linux sangat cocok (compatible) dengan banyak sekali sistem operasi.
Linux dapat melakukan proses mount otomatis semua filesystem MS-DOS dan MS Windows, SVR4, OS/2, Mac OS, Solaris, SunOS, NeXTSTEP, sejumlah besar varian BSD, dan lain-lain. Linux juga dapat melakukan operasi dengan layer-layer network, seperti Ethernet, Fiber Distributed Data Interface (FDDI), High Performance Parallel Interface (HIPPI), Token Ring IBM, WaveLAN AT&T, RoamAbout DS DEC, dan lain sebagainya. Dengan menggunakan pustaka-pustaka (libraries) yang tepat, sistem Linux bahkan dapat dengan langsung menjalankan program yang ditulis (codding) untuk sistem operasi lain. Sebagai contoh, Linux dapat mengeksekusi aplikasi-aplikasi yang ditulis untuk MS-DOS, MS Windows, SVR3 dan 4, Unix SCO, XENIX, dan sistem operasi lain yang berjalan di atas sistem Intel 80x86.

Linux didukung dengan sangat baik.
Percaya atau tidak, path atau update untuk Linux akan jauh mudah didapatkan daripada sistem operasi proprietary! Jawaban untuk masalah yang dihadapi sering keluar hanya dalam beberapa jam saja setelah masalah tersebut muncul di newsgroup atau mailing list. Lagipula, driver-driver perangkat keras untuk Linux biasanya tersedia dalam beberapa minggu setelah produk perangkat keras tersebut diperkenalkan oleh perusahaannya ke pasar. Pada sisi lain, beberapa vendor hardware hanya menyediakan driver perangkat keras tersebut hanya untuk beberapa sistem operasi komersial, dan biasanya hanya untuk Microsoft saja. Akibatnya, akan ada beberapa fitur dari hardware tersebut yang tidak bisa dipakai di semua varian Unix komersial.

Dengan perkiraan pengguna yang telah meng-install Linux lebih dari 12 juta dan terus bertambah, masyarakat yang sudah biasa menggunakan suatu sistem operasi akan mengalami cara penggunaan komputer yang relatif sama apabila melakukannya di atas Linux. Pada sisi lain, tuntutan terhadap para pengembang Linux terus bertambah, dan untungnya, Linux telah berkembang dalam arah development yang ketat oleh Linux, untuk memenuhi kebutuhan masyarakat.

Kenapa harus LINUX? dan perbandingan dengan UNIX


Meski rata-rata pemakai komputer hanya menggunakan Windows di PC desktop atau laptop mereka, praktis semua webhosting lokal menyediakan layanan berbasis Linux. Rata-rata malah hanya memiliki server Linux. Segelintir saja webhosting yang pengguna FreeBSD atau menawarkan hosting berbasis Windows NT/2000. Sebetulnya apa alasan mereka hingga pilihan jatuh pada Si Penguin?

Administrasi jarak jauh dan stabilitas. Alasan paling utama, menurut saya, adalah kemudahan administrasi jarak jauh dan stabilitas. Seperti kita ketahui, mesin webhosting umumnya tidak terletak di rumah atau kantor pemilik webhosting itu sendiri, melainkan ditaruh bersama server-server lainnya di ISP atau data center yang terhubung dengan jalur koneksi berkecepatan tinggi. Ini artinya, mesin tersebut harus dapat diatur dari jarak jauh melalui jaringan Internet. Masa ingin bolak-balik ke ISP—yang mungkin saja beda kota, pulau, negara? Sebuah mesin Unix/Linux amatlah natural dalam hal ini, sebab sejak zaman dahulu telah tersedia fasilitas telnet. Lewat telnet, seorang admin akan diberikan interface shell yang sama dengan jika ia berada di depan komputer secara fisik. Karena telnet ini berbasis teks, maka ia amat irit bandwidth. Lewat telnet/SSH, seorang admin dapat mengatur misalnya hingga belasan server langsung dari rumahnya sendiri. Semua perintah yang umum diperlukan, mulai dari menjalankan program, melihat status, manajemen pemakai, file, jaringan, mendownload/upload file dapat dilakukan melalui telnet. Hanya hal-hal tertentu saja yang butuh kehadiran fisik, seperti menekan tombol Power/Reset di casing CPU atau menukar harddisk/CD.
Windows NT memang memiliki RAS. Windows 2000/XP memiliki Terminal Services. Kita bahkan dapat menambahkan kemampuan telnet/SSH di Windows lewat program terpisah. Tapi apa yang bisa kita lakukan terhadap Windows melalui shell COMMAND.COM/CMD.EXE secara relatif jauh lebih terbatas ketimbang apa yang bisa kita lakukan terhadap sistem Unix lewat interface telnetnya. Windows pada dasarnya berpijak di atas konsep GUI (Graphical User Interface), yang lebih tidak alamiah atau boros bandwidth untuk diatur lewat jarak jauh. Program administrasi remote grafis seperti PC Anywhere atau Back Orifice saat ini terlalu lambat untuk bisa dipakai di Internet dan hanya cocok di lingkungan LAN berkecepatan tinggi. Telnet berbasis teks sendiri sudah cukup nyaman dipakai di atas koneksi modem dialup biasa.
Linux juga, bila dikontraskan dengan Windows 98 atau Me, lebih stabil dan jarang crash atau harus direstart jika terjadi perubahan atau penambahan program. Sistem operasi seperti Win Me jelas-jelas tidak layak menjadi sebuah server. Selain fasilitas multiuser yang praktis tidak ada, sistem operasi ini juga tidak stabil. Padahal sebuah server produksi harus berjalan terus-menerus dan mungkin diakses banyak orang sekaligus. Seringnya crash atau downtime pasti akan sangat menyusahkan.

Keterbukaan dan fleksibilitas. Linux dan Windows dapat dianalogikan dengan bahan makanan mentah dan hidangan jadi. Di Linux, banyak program tersedia dalam bentuk source code (kode asli atau sumber yang dipakai untuk menghasilkan program jadi) dan dapat diubah-ubah lalu dikompilasi ulang. Sementara Windows muncul di hadapan Anda sudah dalam bentuk tinggal pakai. Memakan “kue” Windows memang cepat dan praktis, tapi dalam kasus tertentu seseorang mungkin butuh meramu sendiri tepung terigu, telur, gula, dan bahan-bahan lainnya dalam komposisi berbeda, atau dengan tambahan/pengurangan komponen tertentu. Tentu saja sistem operasi Windows juga terdiri dari komponen-komponen, tapi dengan tersedianya source code, Anda dapat mempreteli habis Linux atau program-programnya sampai bentuk dan kelakuan mereka berbeda sesuai kebutuhan khusus tertentu.

Keamanan. Ini juga termasuk faktor penting dan penentu. Memang keamanan menjadi tanggung jawab admin dan pemakai juga, namun faktanya adalah kebanyakan admin Unix/Linux yang baik mengenal sistem operasinya dengan lebih dalam ketimbang seorang admin Windows. Tentunya ini dipengaruhi juga sifat keterbukaan dan fleksibilitas Linux, yang mengizinkan seseorang untuk mengoprek sepuas-puasnya untuk mengenal Linux luar dan dalam. Semakin dikenal baik, tentunya akan semakin diketahui kelemahan dan bolongnya, sehingga diketahui cara-cara mengamankan dan menutupi lubangnya.
Saya juga berpendapat bahwa Windows didesain dengan tujuan kemudahan di atas keamanan, jadi bisa ditebak dari sini bahwa jika tidak diurus dengan benar, sistem Windows akan cenderung lebih permisif dan terbuka bagi orang lain untuk ditembus lalu disalahgunakan.

Harga. UUD, Ujung-Ujungnya Duit. Perlu Anda ingat bahwa sebuah server resmi untuk bisnis tidak bisa menggunakan software dari CD bajakan Mangga Dua atau dari hasil crack sebuah download trial. Windows NT/2000, SQL Server, Exchange, dsb. jika ditotal harganya dapat mencapai jutaan rupiah—apalagi jika jumlah koneksi simultan atau jumlah pemakai yang ingin didukung banyak, sebab lisensi semakin mahal untuk banyak pemakai. Tidak semua orang atau perusahaan kecil kuat membeli produk dengan harga tersebut, maka banyak dari mereka yang melirik Linux. Linux tidak menguras kantong karena harganya gratis. Namun perlu dicatat bahwa, bergantung pada kondisi tertentu, biaya total kepemilikan dengan Linux bisa saja lebih rendah atau lebih tinggi. Selain biaya software, masih ada biaya hardware, maintenance, dan manusia. Seperti kita ketahui, harga pasaran gaji admin Unix lebih tinggi daripada admin Windows, karena skill yang dituntut untuk mengurus sistem Unix lebih tinggi.

Apa beda Unix dan Linux?

Bagian ini juga mungkin membosankan, boleh Anda lewat.
Dari tadi saya berkali-kali menulis Unix/Linux. Memangnya Unix dan Linux itu berbeda ya? Ya. Keduanya berbeda, tapi punya hubungan yang erat. Kita lihat sejenak sejarah kedua sistem operasi ini.
Unix sebetulnya telah ada sejak lebih dari 3 dasawarsa lalu—baru-baru ini Unix saja merayakan ulang tahunnya yang ke-30. Ini berarti jauh sebelum Apple atau Macintosh atau Windows lahir, yang berarti jauh sebelum Bill Gates kaya raya seperti saat ini.
Sejarah Unix panjang dan berliku-liku, mungkin jika dijabarkan akan memakan tempat satu buku tebal tersendiri. Cukuplah disebutkan di sini bahwa Unix pertama kali dibuat di Bell Labs, sebuah unit riset dan pengembangan di bawah AT&T (dan sekarang di bawah Lucent) untuk komputer mini PDP dan VAX. Versi terakhir yang ditulis Bell Labs sendiri adalah versi ketujuh (V7), 1979. Sejak 1974 Universitas of California, Berkeley, menggunakan Unix, dan sejak 1977 juga mulai mengembangkan Unix-nya sendiri (BSD). Sepanjang sejarahnya, Unix telah dikembangkan oleh berbagai vendor dan telah hadir dalam berbagai rupa dan rasa. Tidak semuanya gratis, tidak semuanya saling kompatibel. Unix popular karena portabel—ditulis dalam bahasa tingkat tinggi C sejak 1973 dan bukan assembly, sehingga mudah dipindahkan antararsitektur komputer—serta memiliki konsep sederhana dan elegan.
Linux sendiri baru muncul tahun 1991 dari tangan seorang mahasiswa Finlandia bernama Linus Torvalds. Ini berarti setelah Apple dan Macintosh dan NT, dan sudah pasti setelah Bill Gates kaya raya. Saat itu Linus bermain-main dengan Minix, sebuah sistem Unix untuk PC berbasis Intel. Karena berbagai keterbatasan Minix, maka Linus memutuskan untuk menulis sistem operasi sendiri! Maka lahirlah Linux. Sejak awal Linux telah dikembangkan oleh para peminatnya di seluruh dunia, karena sejak versi 0.02 telah dirilis di newsgroup Internet. Saat ini kernel (inti sistem operasinya itu sendiri) Linux telah mencapai versi 2.4, dan puluhan distro (kemasan Linux beserta program-porgram aplikasi) serta bisnis seputar Linux telah berkembang pesat. Linux popular karena alasan-alasan yang telah kita bahas sebelumnya tadi: gratis, berlisensi GPL, dan memiliki fitur-fitur seperti halnya Unix lain.
Jadi bisa dibilang Unix adalah keluarga sistem operasi, sementara Linux adalah sebuah tiruan Unix (Unix clone). Linux bisa digolongkan sebagai sebuah sistem Unix.
Unix dan Linux barangkali bukan sistem operasi yang paling superior dari segi teknik. Dulu Unix adalah upaya ulang yang lebih sederhana dari sebuah proyek ambisius bernama Multics. Unix juga pertama kali dibuat untuk dijalankan di komputer mini, bukan mainframe yang tercanggih pada waktu itu. Linux sendiri masih menggunakan arsitektur kernel monolitik ketimbang memakai sistem mikrokernel seperti Mach dan NT, yang secara teoritik lebih modular dan fleksibel. Namun Unix dan Linux tetap popular dan berkembang karena simplisitas. Karena jalan.

Perbedaan Unix, Linux, MacOS, FreeBSD dan Solaris





Unix pertama kali dibuat di Bell Labs, sebuah unit riset dan pengembangan di bawah AT&T (dan sekarang di bawah Lucent) untuk komputer mini PDP dan VAX. Versi terakhir yang ditulis Bell Labs sendiri adalah versi ketujuh (V7), 1979. Sejak 1974 Universitas of California, Berkeley, menggunakan Unix, dan sejak 1977 juga mulai mengembangkan Unix-nya sendiri (BSD). Sepanjang sejarahnya, Unix telah dikembangkan oleh berbagai vendor dan telah hadir dalam berbagai rupa dan rasa. Tidak semuanya gratis, tidak semuanya saling kompatibel. Unix popular karena portabel—ditulis dalam bahasa tingkat tinggi C sejak 1973 dan bukan assembly, sehingga mudah dipindahkan antararsitektur komputer—serta memiliki konsep sederhana dan elegan.


Linux sendiri baru muncul tahun 1991 dari tangan seorang mahasiswa Finlandia bernama Linus Torvalds. Ini berarti setelah Apple dan Macintosh dan NT, dan sudah pasti setelah Bill Gates kaya raya. Saat itu Linus bermain-main dengan Minix, sebuah sistem Unix untuk PC berbasis Intel. Karena berbagai keterbatasan Minix, maka Linus memutuskan untuk menulis sistem operasi sendiri! Maka lahirlah Linux. Sejak awal Linux telah dikembangkan oleh para peminatnya di seluruh dunia, karena sejak versi 0.02 telah dirilis di newsgroup Internet. Saat ini kernel (inti sistem operasinya itu sendiri) Linux telah mencapai versi 2.4, dan puluhan distro (kemasan Linux beserta program-porgram aplikasi) serta bisnis seputar Linux telah berkembang pesat. Linux popular karena alasan-alasan yang telah kita bahas sebelumnya tadi: gratis, berlisensi GPL, dan memiliki fitur-fitur seperti halnya Unix lain.
Jadi bisa dibilang Unix adalah keluarga sistem operasi, sementara Linux adalah sebuah tiruan Unix. Linux bisa digolongkan sebagai sebuah sistem dari Unix.

Sun Solaris adalah sebuah operating system Unix berbasis sistem operasi yang diperkenalkan oleh Sun Microsystem pada tahun 1992 sebagai pengganti SunOS. Solaris dikenal dengan skalabilitasnya, terutama pada SPARC sistem, dan mempunyai banyak fitur-fitur inovatif seperti DTrace dan ZFS. Solaris berbasis SPARC dan x86 dan berbasis workstation dan server dari Sun dan vendor lainnya, dengan upaya yang dilakukan untuk port ke platform tambahan. Walaupun secara historis dikembangkan sebagai perangkat lunak berpemilik, didukung oleh sistem yang dibuat oleh semua vendor server utama, dan mayoritas dari basis kode sekarang perangkat lunak open source melalui open solaris proyek.

Sun Solaris sendiri masih tabuh didengar dikalangan umum karena jarang yang memakainya untuk sistem operasi pada PC. Karena itu Sun Solaris kurang populer namanya di kalangan masyarakat.


Macintosh atau lebih dikenal MacOs merupakan salah satu jenis komputer personal berbasis PowerPc yang diproduksi oleh Apple. Ternyata asal-usul operating system MacOs adalah sebuah computer personal yang dinamakan Macintosh oleh Jef Raskin karena macintosh adalah salahsatu jenis buah apel yang sangat disukai oleh beliau. Macintosh diperkenalkan pada bulan Januari tahun 1984 lewat iklan Super Bowl yang fenomenal. Secara tampilan grafis memang macintosh lebih unggul dari Linux, namun macintosh sangat jarang digunakan oleh umum karena hanya dipakai oleh orang-orang tertentu. Dan tidak sebebas Linux dalam proses pengembangannya.


FreeBSD merupakan sebuah operating system bebas serupa operating system Unix. FreeBSD sendiri diturunkan melalui AT&T Unix melalui Berkeley Software Distribution (BSD). FreeBSD terkenal dengan sebutan “raksasa tak dikenal” diantara software operating system bebas. FreeBSD bukan merupakan tiruan Unix, tetapi berjalan seperti operating system Unix. FreeBSD bekerja dengan Unix-compliant internals dan sistem API. FreeBSD umumnya sebagai operating system yang dapat diandalkan dan kuat. Proyek pembangunan operating system FreeBSD dimulai pada tahun 1993 yang tumbuh dengan cepat. Banyak keunggulan yang bisa didapat dari operating system FreeBSD tersebut.
Dari keempat software operating system diatas. Hampir seluruhnya merupakan pengembangan dari operating system Unix. Namun dari setiap operating system diatas memiliki kelebihan dan kekurangan masing-masing. Contohnya operating system Linux dan FreeBSD merupakan operating system yang kebal terhadap virus dan stabil dalam menjalankan system operasi, namun kekurangan dari Linux dan FreeBSD sendiri adalah masih jarang yang menggunakannya. Dan kelebihan lainnya merupakan sebuah operating system yang open sourch yaitu operating system yang mempunyai kode (kernel) terbuka, yang dapat dikembangkan oleh siapapun secara bebas tanpa khawatir terkena pidana seperti menggunakan software operating system Microsoft.

diambil dari : http://linux.blog.gunadarma.ac.id

Senin, 09 Januari 2012

Belajar Ajax – XML Http Request (XHR)



XmlHttpRequest adalah sebuah object javascript yang digunakan untuk mengakses web server secara asingkron, jadi user dapat terus melakukan aktifitasnya di sebuah halaman web tanpa me-refresh halaman tersebut, karena proses requestnya dilakukan di background. Mengakses web server artinya adalah melakukan sebuah request biasa ke sebuah halaman di webserver yang berisi script (server side script). Teknisnya XMLHttpRequest (XHR) adalah sebuah DOM API yang dapat digunakan pada web browser scripting language seperti JavaScript.

Pada proses request ini, tentunya ada data yang akan kita lewatkan untuk diproses di sisi server. Metode request yang dapat dan biasa kita gunakan adalah GET atau POST. Tentunya akan sangat mudah bagi server untuk membaca data yang di kirimkan oleh client dengan menggunakan metode tersebut.


Setelah data tersebut terkirim, otomatis server akan mengirimkan respon balik atas request yang telah dilakukan. Berbeda dengan respon web server biasa, biasanya hasil respon tersebut dalam sebuah format yang mudah di parsing oleh javascript di sisi client. Walaupun berlabel XML kita juga dapat menggunakan data format lain seperti # HTML, JSON, CSV. Text Format yang banyak digunakan adalah XML dan Json. Xml banyak digunakan karena format ini sudah di dukung banyak system dan ada banyak library yang dapat digunakan untuk memanipulasi dokumen XML tersebut. Sedangkan JavaScript Object Notation (JSON) karena simple dalam mendecode dan ukurannya yang sangat kecil dan data oriented.
Sejarah XMLHttpRequest

Konsep utama XMLHttpRequest ini berasal dari Microsoft pada project Outlook Web Access. Sebuah interface bernama IXMLHTTPRequest telah diimplementasikan di MSXML. Dan pada versi kedua MSXML, IXMLHTTPRequest sudah dapat digunakan pada Internet Explorer 5.0(March 1999) menggunakan ActiveX wrapper.

Hal tersebut diikuti oleh Mozilla Foundation dengan membangun sebuah interface yang disebut nsIXMLHttpRequest pada browser engine mereka – gecko. Interface ini dibangun mirip dengan Microsoft’s IXMLHTTPRequest interface. Perbedaanya Mozzila menjadikannya sebagai salah satu object dalam javascript.

Karena konsepnya yang bagus, XMLHttpRequest menjadi standard diantara browser-browser besar. Safari mengimplementasikan pada February 2004 (safari 1.2), Konqueror, Opera 8.0 pada April 2005. Pada tahun 2006 World Wide Web Consortium (W3C) mempublish sebuah draft tentang XMLHttpRequest ini untuk menjadi standar yang lebih baku.
Implementasi XHR

Pada implementasinya, untuk membuat sebuah object XMLHttp cukup dengan meninstance class XMLHttpRequest(), tetapi pada browser IE, microsoft mengimplentasikannya pada sebuah ActiveX Control, jadi kita harus menggunakan ActiveX tersebut untuk mengimplmentasikan ajax pada IE. Contoh :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
var xmlHttp = createXmlHttpRequestObject();
function createXmlHttpRequestObject(){
  var xmlHttp;
  try
  {
    xmlHttp = new XMLHttpRequest();
  }
  catch(e)
  {
    var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
                                    "MSXML2.XMLHTTP.5.0",
                                    "MSXML2.XMLHTTP.4.0",
                                    "MSXML2.XMLHTTP.3.0",
                                    "MSXML2.XMLHTTP",
                                    "Microsoft.XMLHTTP");
 
    for (var i=0; i<xmlhttpversions .length && !xmlHttp; i++){
      try{
        xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
      }
      catch (e) {}
    }
  }
 if (!xmlHttp)
    alert("Error creating the XMLHttpRequest object.");
  else
    return xmlHttp;
}

Setelah object XMLHttp dibuat, kita dapat membuat HTTP request mengunakan javascript dengan memanggil fungsi open() yang merupakan member dari class XMLhttp. Fungsi ini mempunyai 3 parameter diantaranya:
Type Request: Sebuah string yang menunjukkan dengan tipe request apa koneksiyang akan dilakukan.
URL kemana kita akan mengirim request tersebut.
Async: Sebuah value bertipe boolean yang menunjukkan apakah request akan diminta secara asingkron

Parameter terakhir Async sangat penting karena ia mengontrol javascript bagaimana cara menangani request. Ketika ia di set True maka request akan dilakukan secara asingkon, artinya javascript akan tetap menjalankan kode salanjutnya tanpa menunggu response dari server, Tetapi jika di set false maka browser akan menunggu sampai aja respon sebelum melanjutkan eksekusi code. Ini berarti jika respon membutuhkan waktu yang banyak, maka user tidak dapat berinteraksi dengan browser sampai request selesai.

Selanjutnya setelah object XMLhttp terbentuk, kita perlu mendefinisikan sebuah event handler onreadystatechange. Objek XMLHttp mempunyai sebuah properti dengan nama readyState yang berisi informasi tentang status response dari server. Ada 5 jenis status respondari server diantaranya:
0 (Uninitialized) : Objek XML Http sudah dibuat tetapi fungsi open belum dipanggil.
1 (Loading) : Fungsi open telah dipanggil tetapi request belum dikirim
2 (Loaded) : Request telah dikirim
3 (Interactive) : Sebagian response telah di terima
4 (Complete) : Semua data telah diterima

Setiap ada perubahan value pada property readystate maka eventhandler onreadystatechange akan di panggil. Adapun method/properties pada XMLHTTP Object adalah
Method/Propertyketerangan
Abort ()Membatalkan request yang telah dikirim
getAllResponseHeaders ()Mendapatkan header respon sebagai string
Open ( “method”, ”URL”[,asyncflag [, “username” [, “pasword”]]])Inisialiasi parameter request
Send (content)Melakukan HTTP Request
setRequestHeader(“Label”, “value”)Set pasangan label dan valuenya pada header request
OnreadystatechangeDigunakan untuk mengeset fungsi callback yang menghandle perubahan request state
readyStateMemberikan informasi status request
responseTextMengembalikan respon server dalam format string
responseXMLMengembalikan respon server dalam format XML
StatusMengembalikan kode status request
statusTextMengembalikan pesan status request