Bab 4: Teknologi Yang Dipakai Teknologi yang penulis pakai dalam mengembangkan sistem ujian online ini dapat digolongkan menjadi dua bagian: 1. Teknologi yang berkaitan dengan pemrograman berbasis web. Contohnya PHP dan MySQL. 2. Teknologi yang berkaitan dengan jaringan internet. Dalam Tugas Akhir hanya NAT Network Address Translation yang akan penulis jelaskan. PHP: Hypertext Preprocessor PHP adalah singkatan dari ” PHP : Hypertext Preprocessor”, yang merupakan sebuah bahasa scripting yang terpasang pada HTML. Sebagian besar sintaks nya mirip dengan bahasa C, Java, dan Perl, ditambah dengan beberapa Fungsi PHP yang spesifik. Halaman web biasanya disusun dari skrip HTML yang disimpan dalam sebuah file berekstensi .html. File HTML ini dikirimkan oleh server ke browser, lalu browser menerjemahkan skrip tersebut sehingga tertampil di layar sebagai bentuk yang mudah dibaca oleh manusia. Lain halnya dengan skrip PHP. Skrip PHP harus diproses oleh webserver yang kemudian mengirim keluarannya ke browser untuk ditampilkan. Skrip PHP dapat berdiri sendiri ataupun disisipkan di antara skrip HTML. Untuk dapat dikenali webserver, skrip PHP harus diapit program tersebut di antara tanda <?\index{PHP} PHP dan ?>. Selain itu, secara standar, webserver hanya akan memroses berkas yang berekstensi .\index{PHP} PHP. 31 Sejarah PHP PHP adalah teknologi yang diperkenalkan tahun 1994 oleh Rasmus Lerdorf. Beberapa versi awal yang tidak dipublikasikan digunakan pada situs pribadinya untuk mencatat siapa saja yang mengakses daftar riwayat hidup onlinennya. Versi pertama digunakan oleh pihak lain pada awal tahun 1995 dan dikenal sebagai Personal Home Page Tools. Dalam Personal Home Page Tools terdapat sebuah parser engine (mesin pengurai) yang sangat disederhanakan, yang hanya mampu mengolah makro khusus dan beberapa utilitas yang sering digunakan pada pembuatan home page,seperti buku tamu, pencacah, dan hal semacamnya. Pengurai tersebut ditulis ulang pada pertengahan 1995 dan dinamakan PHP/FI Version 2. FI(Form Interprenter) sendiri berasal dari kode lain yang ditulis juga oleh Rasmus, yang menterjemahkan HTML dari data. Ia menggabungkan script Personal Home Page Tools dengan Form Interprenter dan menambahkan dukungan terhadap server database yang menggunakan format mSQL sehingga lahirlah PHP/FI. PHP/FI tumbuh dengan pesat, dan orang-orang mulai menyiapkan kode-kode programnya supaya bisa didukung oleh PHP. Sulit memberikan data statistik yang akurat, namun diperkirakan pada akhir 1996 PHP/FI sudah digunakan sedikitnya pada 15.000 situs web di seluruh dunia. Pada pertengahan 1997, angka tersebut berubah menjadi 50.000. Pada saat itu juga terdapat perubahan di dalam pengembangan PHP. PHP berubah dari proyek pribadi Rasmus menjadi sebuah tim yang lebih terorganisasi. Parsernya ditulis ulang dari bentuk rancangan awal oleh Zeev Suraski dan Andi Gutmans, dan parser baru ini adalah sebagai dasar PHP Version 3. Banyak kode utilitas yang berasal dari PHP/FI diport ke PHP3, dan banyak diantaranya sudah selesai ditulis ulang secara lengkap. Pada pertengahan 1998, baik PHP/FI maupun PHP3 dikemas bersama dengan produk-produk komersial seperti webserver StrongHold buatan C2 dan Linux RedHat, dan menurut survei yang dilakukan oleh NetCraft, kemungkinan PHP digunakan pada lebih dari 150.000 situs web di seluruh dunia. Sebagai pembanding, angka tersebut lebih banyak daripada pengguna server web Enterprise server buatan Netscape di Internet. Keunggulan PHP Seluruh aplikasi berbasis web dapat dibuat dengan PHP, namun kekuatan yang paling utama dari PHP terletak pada konektivitasnya dengan sistem database. PHP 32 dapat berjalan di berbagai sistem operasi berbasis Win98/NT, *NIX, maupun BSD. Sistem database yang dapat didukung oleh PHP: Oracle, MySQL, Sybase, PostgreSQL, dan lainnya. Selain itu, PHP merupakan software yang open source, yang dapat kita download secara gratis dari situs resminya yaitu http://www.\index{PHP} PHP.net. Software ini juga dapat berjalan pada web server seperti PWS (Personal Web server ), Apache, IIS, AOLServer, fhttpd, phttpd dan sebagainya. PHP dapat diinstal sebagai bagian atau modul dari apache web server atau sebagai CGI script yang mandiri. Beberapa keunggulan PHP dibandingkan bahasa pemrograman lain, yaitu: 1. Bahasa pemrograman PHP adalah sebuah bahasa script yang tidak membutuhkan proses kompilasi dalam penggunaanya. 2. Dalam sisi pemahamanan, PHP adalah bahasa scripting mudah dipelajari karena terdapat banyak referensi. 3. PHP adalah bahasa open source yang dapat digunakan di berbagai sistem operasi (windows, *NIX, BSD) dan dapat dijalankan langsung melalui CLI (Command Line Interface) serta juga dapat menjalankan berbagai perintah sistem. 4. Web server yang mendukung PHP dapat ditemukan dimana - mana dari mulai IIS sampai dengan Apache, dengan konfigurasi yang relatif mudah. 5. Dalam sisi pengembangan lebih mudah, karena banyaknya jaringan email dan pengembang yang siap membantu. MySQL Diatas telah disebutkan bahwa kekuatan yang paling utama dari PHP terletak pada konektivitasnya dengan sistem database. MySQL adalah salah satu sistem database yang paling banyak digunakan. Penyebab utama MySQL begitu popular di kalangan Web adalah karena ia memang cocok bekerja di lingkungan tersebut. MySQL tersedia di berbagai platform Linux dan berbagai varian Unix. Selain itu MySQL memiliki fitur yang banyak dibutuhkan dalam aplikasi web. Misalnya, klausa LIMIT SQL-nya, praktis untuk melakukan paging. Atau jenis indeks field FULLTEXT, untuk full text searching. Atau sebutlah kekayaaan FungsiFungsi builtinnya, mulai dari memformat dan memanipulasi tanggal, mengolah string, regex, Enkripsi dan hashing. 33 Sejarah MySQL MySQL dikembangkan oleh sebuah perusahaan Swedia bernama MySQL AB, yang kala itu bernama TcX DataKonsult AB, sejak sekitar 19941995, meski cikal bakal kodenya bisa disebut sudah ada sejak 1979. Tujuan mula-mula TcX membuat MySQL pada waktu itu juga memang untuk mengembangkan aplikasi Web untuk klien mereka. Kala itu Michael Widenius, atau ”Monty”, pengembang satu-satunya di TcX, memiliki aplikasi UNIREG dan rutin ISAM yang dibuat sendiri dan sedang mencari antarmuka SQL untuk memudahkan aksesnya. Mula-mula TcX memakai mSQL, atau ”mini SQL”. Barangkali mSQL adalah satu-satunya kode database open source yang tersedia dan cukup sederhana saat itu. Namun ternyata, menurut Monty, mSQL tidaklah cukup cepat maupun fleksibel. Versi pertama mSQL bahkan tidak memiliki indeks. Setelah mencoba menghubungi pembuat mSQL, Monty mengambil keputusan untuk membuat sendiri mesin SQL yang antarmukanya mirip dengan mSQL tapi memiliki kemampuan yang lebih sesuai kebutuhan. Lahirlah MySQL. MySQL versi 1.0 dirilis Mei 1996 secara terbatas untuk empat orang. Baru di bulan Oktober versi 3.11.0 dilepas ke publik. Pada saat itu kode MySQL tidak diberikan di bawah lisensi General Public License, melainkan lisensi khusus yang intinya kurang lebih: ”Source code MySQL dapat dilihat dan gratis, serta server MySQL dapat dipakai tanpa biaya tapi hanya untuk kebutuhan nonkomersial. Untuk kebutuhan komersial (mis: mengemas dan menjual MySQL, atau menyertakan MySQL dalam program komersial lain) Anda harus bayar lisensi.” Sementara untuk distribusi Windows, MySQL dirilis secara shareware. Barulah pada Juni 2000 MySQL AB mengumumkan bahwa sejak versi 3.23.19, MySQL adalah software bebas berlisensi GPL. Artinya, Source code MySQL dapat dilihat dan gratis, serta server MySQL dapat dipakai tanpa biaya untuk kebutuhan apa pun. Tapi jika Anda memodifikasi source code, Anda juga harus melepasnya di bawah lisensi yang sama, yaitu GPL. Kini perusahaan MySQL AB, yang beranggotakan sekitar 10 programer dan 10 karyawan lain itu, memperoleh pemasukan terutama dari jasa konsultasi seputar MySQL. Versi awal MySQL ini, meski sudah bisa dipakai untuk aplikasi Web sederhana, belumlah memadai sama sekali untuk aplikasi bisnis. Contohnya, JOIN sederhana sudah ada, tapi tidak ada HAVINGbaru di bulan Desember ditambahkan. Sudah ada tipe data TIMESTAMP dan kolom autoupdate, tapi tidak ada system-generated number (sequence)baru di akhir 1996 juga ditambahkan modifier kolom AUTO_INCREMENT. Sudah ada LIMIT tapi GROUP BY dan ORDER BY memiliki keterbatasan. Dan seterusnya. Barulah di versi-versi akhir 3.22sepanjang 19981999 MySQL menjadi semakin 34 popular dan dilirik orang. Stabilitasnya sudah baik. Kecepatannya meningkat. Sudah tersedia di berbagai platform, termasuk Windows. Seri 3.22 ini banyak dipakai di berbagai instalasi, mungkin hingga sekarang, sehingga MySQL AB tetap memberikan dukungan untuk seri ini. Kelebihan MySQL Sebagai software database dengan konsep database modern, MySQL memiliki banyak kelebihan. Beberapa diantaranya: 1. Portabel MySQL dapat digunakan dengan stabil tanpa kendala, berarti pada berbagai sistem operasi diantaranya seperti Windows, Linux, Mac OS X server, Solaris, Amiga HP-UX dan masih banyak lagi. 2. Open source MySQL didistribusikan secara open source di bawah lisensi GPL, sehingga dapat memperoleh menggunakannya secara cuma-cuma tanpa dipungut biaya sepeserpun. 3. Multiuser MySQL dapat digunakan untuk menangani beberapa user dalam waktu yang bersamaan tanpa mengalami masalah atau konflik. Hal ini akan memungkinkan sebuah database server MySQL dapat diakses client secara bersamaan dalam waktu yang bersamaan pula. 4. Cepat MySQL memiliki kecepatan yang cukup menakjubkan dalam menangani query sederhana, serta mampu memproses lebih banyak SQL persatuan waktu. 5. Perintah dan Fungsi yang lengkap MySQL memiliki operator dan Fungsi secara penuh yang mendukung perintah SELECT dan WHERE dalam query. 6. Ketahanan tinggi Dalam hal batas kemampuan, MySQL terbukti mampu menangani database dalam skala yang besar dengan jumlah record lebih dari 50 juta dan 60 ribu tabel serta 5 miliar baris. Selain itu batas indeks yang dapat ditampung mencapai 32 indeks pada setiap tabelnya. 35 7. Struktur tabel fleksibel Struktur tabel MySQL cukup baik, serta cukup fleksibel. Misalnya ketika menangani Alter Table, dibandingkan database lainnya semacam ProgresSQL ataupun Oracle. Network Address Translation Ketika suatu komputer terhubung ke internet, komputer tersebut tidak saja dapat mengakses, misalnya ke server suatu situs tertentu, tetapi komputer tersebut juga sangat mungkin untuk diakses oleh komputer lain yang juga terhubung ke internet. Jika disalahgunakan, hal tersebut bisa sangat berbahaya. Data-data penting dapat dilihat atau bahkan dicuri oleh orang yang tidak bertanggung jawab. Network Address Translation (NAT) secara otomatis akan memberikan proteksi seperti halnya firewall dengan hanya mengizinkan koneksi yang berasal dari dalam jaringan. Hal ini berarti tingkat keamanan suatu jaringan akan meningkat, karena kemungkinan koneksi dari luar ke dalam jaringan menjadi relatif sangat kecil. Dengan NAT, suatu jaringan yang besar dapat dipecah-pecah menjadi jaringan yang lebih kecil. Bagian-bagian kecil tersebut masing-masing memiliki satu alamat IP, sehingga dapat menambahkan atau mengurangi jumlah komputer tanpa mempengaruhi jaringan secara keseluruhan. Selain itu, pada gateway NAT modern terdapat server DHCP yang dapat mengkonfigurasi komputer client secara otomatis. Hal ini sangat menguntungkan bagi admin jaringan karena untuk mengubah konfigurasi jaringan, admin hanya perlu mengubah pada komputer server dan perubahan ini akan terjadi pada semua komputer client. Selain itu gateway NAT mampu membatasi akses ke internet, juga mampu mencatat semua traffic, dari dan ke internet. Secara keseluruhan, dengan segala kelebihan gateway NAT tersebut, admin jaringan akan sangat terbantu dalam melakukan tugas-tugasnya. Jenis-jenis NAT Full cone NAT Full cone NAT juga sering disebut one-to-one NAT. Karakteristik Full cone NAT : 1. Ketika alamat internal (Addrint : portint ) dipetakan ke alamat eksternal (Addrext : portext ), semua paket dari (Addrint : portint ) akan dikirim melalui (Addrext : portext ). 36 2. Sembarang komputer di luar jaringan dapat mengirim paket ke (Addrint : portint ) dengan mengirimkan paket ke (Addrext : portext ). Gambar 8: Full cone NAT Restricted cone NAT Gambar 9: Restricted cone NAT Karakteristik Restricted cone NAT : 1. Ketika alamat internal (Addrint : portint ) dipetakan ke alamat eksternal (Addrext : portext ), semua paket dari (Addrint : portint ) akan dikirim melalui (Addrext : portext ). 37 2. Komputer di luar jaringan dapat mengirim paket ke (Addrint : portint ) dengan mengirimkan paket ke (Addrext : portext ) hanya jika sebelumnya (Addrint : portint ) telah mengirimkan paket ke komputer ybs. Port-Restricted cone NAT Port-Restricted cone NAT mirip dengan Restricted cone NAT. Karakteristik Port Restricted cone NAT : 1. Ketika alamat internal (Addrint : portint ) dipetakan ke alamat eksternal (Addrext : portext ), semua paket dari (Addrint : portint ) akan dikirim melalui (Addrext : portext ). 2. Komputer di luar jaringan (AddrH : portH ) dapat mengirim paket ke (Addrint : portint ) dengan mengirimkan paket ke (Addrext : portext ) hanya jika sebelumnya (Addrint : portint ) telah mengirimkan paket ke (AddrH : portH ). Gambar 10: Port-Restricted cone NAT Port-Restricted cone NAT Karakteristik Symmetric NAT : 1. Setiap permintaan hubungan dari alamat IP internal yang sama ke tujuan eksternal dipetakan ke satu buah alamat IP dan port yang unik. 2. Jika komputer di jaringan internal yang sama mengirimkan paket ke tujuan yang berbeda, pemetaan yang digunakan tidaklah sama. 38 Gambar 11: Symmetric NAT 3. Hanya komputer di jaringan eksternal yang menerima paket dari komputer di jaringan internal dapat mengirim balik paket. 39 40