BAB 2 TINJAUAN PUSTAKA 2.1 Teori Umum 2.1.1 Jaringan Komputer (Forouzan, Behrouz A., 2007: 8). Jaringan atau network merupakan dua komputer atau lebih yang saling berhubungan satu sama lain, saling berkomunikasi secara elektronik, saling membagi sumber daya (semisal: CD-ROM, Printer, File Sharing: pertukaran file, Internet dan lainnya) dan juga dapat saling mempergunakan sumber daya yang sama. Jaringan terdistribusi adalah jaringan komputer yang cara kerjanya dilakukan oleh semua perangkat komputer di dalamnya. Ini berarti tidak ada perbedaan antara Server dengan Client. Sedangkan jaringan tersentralisasi adalah jaringan komputer yang cara kerjanya berbeda baik itu Server maupun Client. Pemusatan jaringan komputer tersentralisasi adalah pada komputer Server. 2.1.2 Jenis – Jenis Network Berdasarkan skala yang dapat dijangkau, jaringan komputer dibagi menjadi tiga yaitu : 1. Local Area Network (LAN) (Forouzan, Behrouz A., 2007: 13). Local Area Network (LAN) secara umum adalah jaringan privat yang menghubungkan perkantoran, gedung atau kampus. Tergantung dari kebutuhan pengguna LAN dan teknologi yang digunakan. Sampai sekarang, jaringan LAN terbatas hanya sampai beberapa kilometer saja. 6 7 Gambar 2.1 Local Area Network 2. Metropolitan Area Network (MAN) (Forouzan, Behrouz A., 2007: 15). Metropolitan Area Network (MAN) adalah jaringan yang luas jangkauanya berada tidak kurang dari jaringan LAN dan tidak seluas jaringan WAN, yang biasanya hanya seluas kota. Di desain untuk pelanggan yang membutuhkan koneksi cepat, koneksi internet lancar dan merupakan jaringan dengan banyak end points di suatu kota atau hanya sebagian dari sebuah kota tersebut. Gambar 2.2 Metropolitan Area Network 3. Wide Area Network (WAN) (Forouzan, Behrouz A., 2007: 14). Wide Area Network (WAN) memungkinkan komunikasi data, gambar, suara bahkan video dengan jarak yang relatif jauh dan dapat pula berjarak antar negara, benua bahkan seluruh dunia sekalipun. WAN dapat juga serumit backbone yang terkoneksi jaringan internet atau juga hanya seperti 8 jaringan dial-up yang mengkoneksikan komputer dengan internet. Gambar 2.3 Wide Area Network 2.1.3 Media Transmisi Data a. Media Tembaga Hampir semua jaringan komputer saat ini menggunakan kabel sebagai media transmisi. Media transmisi ini memiliki batasan jangkauan dan tidak efisien karena banyak memakai tempat. Media kabel ini biasanya digunakan dalam jaringan lokal misalnya dalam satu gedung atau antar gedung dalam suatu lembaga. Bila sumber data dan penerima memiliki jarang yang tidak jauh kabel dapat digunakan dalam media transmisi. Jenis kabel yang sering digunakan dalam media transmisi adalah sebagai berikut : 1. Twisted-Pair (Forouzan, Behrouz A., 2007: 193). Kabel Twisted-Pair secara umum adalah kabel Unshielded Twisted-Pair (UTP). IBM juga telah membuat versi lain dari kabel Twisted-Pair yakni kabel Shielded Twisted-Pair (STP). Kabel STP memiliki lapisan metalfoil atau dapat juga berupa jala-jala metal yang bertujuan untuk melindungi konduktor didalamnya dari gangguan external (noise). 9 Gambar 2.4 UTP dan STP 2. Coaxial (Forouzan, Behrouz A., 2007: 195). Kabel Coaxial dapat menyalurkan sinyal dengan frekuensi yang lebih tinggi dari kabel twisted-pair, dikarenakan keduanya sangat berbeda dari cara penyusunannya. Dengan tidak menggunakan dua kawat, kabel coaxial hanya memiliki satu kawat sebagai konduktor utama (umumnya tembaga) dan terbungkus selubung yang mengisolasi yang kemudian dibungkus lagi dengan metalfoil atau jala-jala metal dan dapat pula dengan kombinasi keduanya. Gambar 2.5 Coaxial 10 3. Serat Optik (Forouzan, Behrouz A., 2007: 198). Kabel serat optik adalah kabel yang memiliki ukuran kecil, mempunyai tiga komponen utama, yaitu media transmisi, sumber cahaya, dan detektor. Memiliki jarak jangkauan mencapai 2 km dengan kecepatan tinggi yang dapat mencapai 600 Mbps. cahaya melewati jalur lurus sepanjang jalur tersebut memiliki zat dengan kepadatan yang sama. Jika sinar cahaya yang secara konsisten melewati jalur dengan kepadatan zat yang sama dan kemudian berbeda kepadatan zatnya, maka cahaya akan berbelok. Kelebihan media transmisi ini memiliki kecepatan tinggi dan tidak terganggu noise. Kekurangan media transmisi ini adalah masih termasuk kabel yang mahal. Gambar 2.6 Serat Optik 2.1.4 Perangkat Jaringan Komputer 1. Ethernet Card (Micro, Andi, 2012: 12). Ethernet card atau Network Interface Card (NIC) atau LAN Card adalah perangkat yang berfungsi sebagai media penghubung antara komputer dengan 11 jaringan luar. Pada ethernet card terdapat beberapa jenis port, diantaranya port BNC (Barrel Nut Connector atau Bayonet Net Connector) dan RJ-45, namun untuk sekarang ini yang sering dipakai adalah port RJ-45. Gambar 2.7 Ethernet Card 2. Hub dan Switch (Micro, Andi, 2012: 9). Hub dan Switch adalah perangkat konsentrator yaitu perangkat yang digunakan untuk menyatukan kabel-kabel dari workstation, Server, atau perangkat host lainnya.Biasanya konsentrator ini digunakan pada jaringan dengan topologi Star.Sebagai konsentrator, Switch mempunyai kemampuan lebih lebih dibanding Hub. Gambar 2.8 Switch 12 3. Repeater (Micro, Andi, 2012: 6). Repeater berfungsi untuk memperkuat sinyal yang melemah karena melewati media transmisi yang panjang cara kerja repeater ini dengan cara menerima sinyal dari satu segmen kabel kemudian memancarkan kembali sinyal tersebut dengan kekatan yang sama dengan sinyal aslinya, sehingga jarak transmisi atau kabel dapat diperpanjang. Gambar 2.9 Repeater 4. Router (Micro, Andi, 2012: 23). Router merupakan perangkat khusus yang digunakan untuk menangani konektivitas antara dua jaringan atau lebih yang terhubung melalui paket switching. Cara kerja router dengan melihat alamat asal dan alamat tujuan dari paket yang melewatinya kemudian router memutuskan rute yang akan dilewati paket tersebut untuk sampai ke tujuan. Router mengetahui alamat masing-masing komputer dilingkungan jaringan lokalnya, mengetahui alamat bridge, dan router lainnya. 13 Gambar 2.10 Router 5. Modem (Micro, Andi, 2012: 1). Modem atau ModulatorDemodulator merupakan perangkat yang berfungsi merubah sinyal analog menjadi sinyal digital. Secara umum digunakan untuk memperoleh koneksi internet baik menggunakan kabel telepon maupun sinyal mobile. Gambar 2.11 Modem 6. Access Point (Sofana, 2008: 350).Access point adalah peralatan yang digunakan pada Wireless Local Area Network (WLAN). Access point bertugas mengatur dan menghubungkan beberapa peralatan Wi-Fi. Access point dapat dianalogikan sebagai Hub, 14 hanya saja digunakan pada WLAN. Access point juga bisa menggabungkan jaringan wireless dengan wired dan dapat memperbesar jangkauan WLAN. 2.1.5 Kriptografi (Kromodimoeljo, 2009: 5). Kriptografi adalah suatu metode keamanan untuk melindungi suatu informasi dengan menggunakan kata-kata sandi yang hanya bisa dimengerti oleh pihak yang berhak mengakses informasi tersebut. Kriptografi merupakan satu-satunya metode yang digunakan untuk melindungi informasi yang melalui jaringan komunikasi yang menggunakan land line (kabel di bawah tanah), satelit komunikasi, dan fasilitas microwave (gelombang mikro). Prosedur-prosedur kriptografi juga bisa digunakan untuk authentifikasi pesan, digital signature, dan identifikasi pribadi untuk mengotorisasi transfer uang secara digital melalui ATM, kartu kredit, dan melalui suatu jaringan. Gambar 2.12 Proses Enkripsi dan Dekripsi (Ariyus, 2008: 14). Kriptografi sebenarnya adalah suatu metode yang sering sekali digunakan untuk melindungi berbagai macam data yang prosesnya disebut dengan encryption, yaitu adalah suatu proses yang mengkonversi sebuah pesan plain text menjadi sebuah cipher text yang bisa dibalik ke bentuk asli seperti semula, yang juga bisa disebut sebagai proses decoding atau decryption. 15 2.1.6 Sejarah Kriptografi (Ariyus, 2008: 13). Kriptografi mempunyai sejarah yang sangat panjang. Kriptografi sudah digunakan 4000 tahun yang lalu, diperkenalkan oleh orang – orang Mesir lewat hieroglyph. Jenis tulisan ini bukanlah bentuk standar untuk menulis pesan. Gambar 2.13 Tulisan hieroglyph (Ariyus, 2008: 13). Kriptografi berasal dari bahasa Yunani, cryptos yang berarti rahasia dan graphein yang berarti tulisan. Kriptografi adalah sebuah teknik dalam mengamankan dan mengirim data dalam bentuk yang hanya diketahui oleh pihak yang berhak membukanya. Kriptografi merupakan ilmu dan seni dalam memproteksi informasi dengan mengubahnya ke dalam bentuk himpunan karakter acak yang tidak dapat dibaca. Kriptografi adalah sebuah cara yang efektif dalam mengamankan informasi-informasi penting baik yang tersimpan dalam media penyimpanan maupun yang ditransmisikan melalui jaringan komunikasi. 16 2.1.7 Tujuan Kriptografi (Ariyus, 2008: 13). Tujuan kriptografi adalah melindungi data dari ancaman yang disengaja atau tidak disengaja. Dewasa ini ancaman bertambah karena semakin meluasnya akses melalui internet atau teknologi bergerak. Aspek-aspek keamanan data dalam kriptografi adalah sebagai berikut : 1) Confidentiality Merupakan usaha untuk menjaga kerahasiaan data. Data hanya boleh diakses oleh orang yang berwenang. Contohnya data-data pribadi, data-data bisnis, daftar gaji, data nasabah dan lainnya. Aspek keamanan data menjadi sensitif dalam e-commerce dan militer. Serangan dalam aspek ini antara lain dilakukan dengan penyadapan, misalnya sniffer atau logger. 2) Integrity Memastikan bahwa informasi yang dikirim melalui jaringan tidak mengalami modifikasi oleh pihak yang tidak berhak. Serangan dapat berupa pengubahan data oleh orang yang tidak berhak, misalnya dengan spoofing, yaitu virus yang dapat mengubah berkas. 3) Availability Informasi harus tersedia ketika dibutuhkan. Serangan dapat berupa menghilangkan atau menghapus data. 4) Authentication Meyakinkan keaslian data, sumber data, orang yang mengakses data, dan server yang digunakan. Beberapa cara yang dapat digunakan untuk membuktikan keaslian data antara lain dengan what 17 you have (misalnya kartu identitas), what you know (misalnya password atau PIN) dan what you are (misalnya dengan biometric identity). 5) Access Control Aspek ini berhubungan dengan mekanisme pengaturan akses ke informasi, untuk mengatur siapa yang boleh melakukan apa. Membutuhkan adanya klasifikasi data, misalnya umum (public), pribadi (private), rahasia (confidential) atau sangat rahasia (top secret). 2.1.8 Waterfall Model (Pressman, 2009: 39). Waterfall Model digunakan sebagai pendekatan sistematis dalam mengembangkan perangkat lunak. Model waterfall dapat disebut sebagai classic life cycle. Dalam model waterfall, terdapat lima tahap dalam mengembangkan sebuah perangkat lunak, yaitu: Communication Planning Modeling Construction Deployment Gambar 2.14 Proses pengembangan perangkat lunak waterfall a. Communication Tujuan akhir dari fase communication adalah agar developer memiliki gambaran sistem akhir yang akan dihasilkan dan 18 mengumpulkan kebutuhan dari perangkat lunak. Tahap communication terdiri dari empat langkah, yaitu: 1. Membuat garis besar dari tujuan dan sasaran dari sistem akhir yang akan dihasilkan, 2. Melakukan survei dengan menggunakan kuesioner untuk menentukan target pengguna dan kebutuhan lain yang diharapkan dari sistem yang akan dihasilkan, 3. Menganalisis masalah dan kendala yang mungkin terjadi beserta solusi untuk menyelesaikannya, dan 4. Menganalisis kebutuhan perangkat keras, perangkat lunak, authoring tools, serta delivery platform yang tepat untuk digunakan pada tahap selanjutnya. b. Planning Pada tahap planning, developer mulai membuat estimasi biaya dan jumlah orang yang dibutuhkan dalam pengembangan perangkat lunak. Selain estimasi, disusun juga penjadwalan dengan membuat timeline agar perangkat lunak dapat berjalan dan selesai tepat waktu. c. Modeling Pada tahap modeling, developer melakukan analisis dan merancang sistem dari perangkat lunak sesuai dengan kebutuhan pengguna. d. Construction Pada tahap construction, dilakukan perancangan kode (coding) sesuai dengan rancangan perangkat lunak yang telah ditentukan. Setelah perancangan kode selesai dilakukan, akan dilakukan beberapa uji coba untuk menguji perangkat lunak yang telah dibangun. e. Deployment Pada tahap deployment, dilakukan implementasi sistem ke dalam lingkungan tujuan. 19 2.1.9 Server (Henderson, 2009: 507). Server merupakan komputer dengan memory dan kapasitas hard disk yang besar yang menjadi pusat dari sebuah jaringan komputer. Server bertugas untuk menyediakan informasi dan layanan yang di request oleh user. 2.1.10 Web Browser (Henderson, 2009: 503). Web browser adalah aplikasi perangkat lunak yang berfungsi untuk mentransfer informasi pada internet. Dengan begitu, pengguna dapat mengakses halaman web pada internet. Selain itu web browser juga dapat digunakan untuk mengakses data dalam web server di dalam sebuah jaringan yang tertutup. Beberapa browser yang banyak digunakan adalah Chrome, Firefox, Opera, Safari, dan Internet Explorer (W3.org). Web browser tidak hanya diperuntukan untuk komputer desktop saja. Hadir pula mobile web browser yang digunakan untuk telepon selular yang memiliki kemampuan untuk mengakses internet. (Henderson, 2009: 503). Web browser mengirimkan request sebuah halaman web ke webserver dengan menggunakan alamat web tersebut. Kemudian server bertugas untuk mengirimkan halaman web yang sesuai dengan request untuk selanjutnya ditampilkan di web browser. Pada umumnya, web browser menyimpan file dan dokumen yang direquest pada local cache. Cache berfungsi untuk mengurangi jumlah data yang harus dikirim kembali jika web browser akan melakukan request terhadap halaman web yang pernah diakses Pada umumnya web browser memiliki fitur- fitur yang sama diantaranya adalah : 1. (Henderson, 2009: 503). Navigation buttons yang berfungsi agar user dapat berpindah maju ke halaman 20 selanjutnya atau mundur ke halaman sebelumnya yang sudah dikunjungi 2. (Henderson, 2009: 503). Tabs yang berfungsi untuk memudahkan pengguna dalam berpindah pindah halaman web jika pengguna sedang mengakses ke lebih dari satu halaman web secara bersamaan. 3. (Henderson, 2009 : 503). History, sebuah panel yang menampilkan halaman- halaman web yang telah dikunjungi pengguna dalam beberapa waktu kebelakang. Dengan begitu, pengguna cukup memilih alamat yang ada di history untuk kembali mengunjungi web tersebut tanpa harus mengetik ulang alamat webnya. 4. (Henderson, 2009: 503). Favorites atau bookmark, kemampuan webbrowser untuk menandai atau menyimpan halaman web yang dikehendaki pengguna. Serupa dengan history, pengguna hanya perlu memilih alamat web dalam daftar bookmark untuk dapat mengakses halaman web tersebut tanpa harus mengetik ulang alamat web. 2.1.11 Web Development Web development adalah proses pembuatan sebuah website untuk internet atau sebuah intranet. Dalam pembuatan sebuah website digunakan berbagai macam bahasa pemrograman. Diantaranya adalah: 1. HTML (Henderson, 2009: 232). HTML (Hyper Text Mark Up Language) merupakan bahasa yang digunakan untuk mendeskripsikan struktur sebuah halaman web. HTML berfungsi untuk mempublikasi dokumen online. (W3.org). Statement dasar dari 21 HTML disebut tags. Sebuah tag dinyatakan dalam sebuah kurung siku (<>). Tags yang ditujukan untuk sebuah dokumen atau bagian dari suatu dokumen haruslah dibuat berupa pasangan. Terdiri dari tag pembuka dan tag penutup. Dimana tag penutup menggunakan tambahan tanda garis miring (/) di awal nama tag. Contohnya <html> merupakan tag pembuka dan </html> merupakan tag penutupnya. Selain tag dasar terdapat juga tag A ,atau anchor tag. Seperti beberapa tag HTML lainnya, tag A digunakan bersamaan dengan atribut yang dapat menjelaskan lebih spesifik mengenai apa yang akan dikerjakan. Tag A biasanya digunakan bersamaan dengan atribut <HREF> atau Hypertext Reference yang berfungsi menghubungkan satu dokumen dengan dokumen lainnya. Tag inilah yang membuat pengguna dapat berpindah- pindah halaman dengan cara memilih button tertentu. 2. CSS (W3.org, 17 April 2015). CSS adalah bahasabahasa yang merepresentasikan halaman web. Seperti warna, layout, dan font. Dengan menggunakan CSS, seorang web developer dapat membuat halaman web yang dapat beradaptasi dengan berbagai macam ukuran layar. Pembuatan CSS biasanya terpisah dengan halaman HTML. Meskipun CSS dapat disisipkan di dalam halaman HTML. Hal ini ditujukan untuk memudahkan pengaturan halaman HTML yang memiliki rancangan yang sama. Pada saat sebuah style diasosiasikan terhadap sebuah elemen, maka format yang terdapat pada style tersebut akan secara otomatis diaplikasikan ke setiap 22 elemen yang terasosiasikan tersebut. Sebagai contoh jika kita ingin merubah format font pada heading menjadi italic, maka kita hanya perlu mengaturnya pada style yg terasosiasikan pada elemen heading. Dengan begitu setiap elemen heading yang ada akan memiliki format font yang italic. Agar dapat berjalan, halaman CSS yang terpisah dengan HTML haruslah diasosiasikan dengan dokumen HTML yang dituju. Pada saat browser melakukan load pada halaman HTML, maka secara otomatis browser juga akan melakukan load terhadap halaman CSS dan menggunakannya untuk menentukan display dari sebuah halaman web. (Henderson, 2009: 72). Style pada CSS diaplikasikan dalam sebuah urutan yang bergantung pada hubungan elemen- elemen yang terasosiasi. Contohnya pada saat kita menentukan format style pada sebuah div, maka setiap elemen yang berada dalam div tersebut akan memiliki format style yang sama. 3. Javascript (Mcfarland, 2011: 1). Javascript merupakan bahasa pemrograman yang bisa mengubah HTML dengan animasi, interaktif, dan efek visual yang dinamis. Javascript bisa membuat sebuah web pages menjadi lebih berguna dengan memberikan feedback yang cepat. (Henderson, 2009: 256). Javascript adalah salah satu bahasa pemrograman populer yang mampu membuat halaman web dapat berinteraksi dengan 23 penggunanya. Javascript pertama kali dikembangkan pada pertengahan dekade 90an. Meskipun memiliki nama yang hampir serupa, javascript berbeda dengan bahasa pemrograman Java. Untuk penulisannya, javascript dapat disisipkan di dalam dokumen HTML ataupun dijadikan dokumen tersendiri yang kemudian diasosiasikan dengan dokumen lain yang dituju. Javascript mengimplementasikan fitur yang dirancang untuk mengendalikan bagaimana sebuah halaman web berinteraksi dengan penggunanya. Seperti tampilan pada window atau kendali pada menu dan button. Javascript juga dapat digunakan untuk memvalidasi sebuah webform pada browser sebelum informasi pada form tersebut dikirim ke server 2.1.12 Instant Messaging (Pagani, 2005: 88). Instant messaging atau IM adalah aplikasi berbasis internet yang menyediakan komunikasi real-time antar penggunanya. Sebagian instant messaging dibuat untuk dapat berjalan di berbagai device baik komputer desktop, komputer tablet, dan juga smartphone. Sebagian lainnya hanya dapat dijalankan melalui device tertentu. Instant messaging dianalogikan seperti sebuah percakapan telepon. Namun dengan basis teks bukan suara. Instant messaging merupakan aplikasi yang real-time. Maksudnya adalah para penggunanya dapat saling berkomunikasi apabila mereka dalam kondisi online dan sama-sama terhubung dengan aplikasi IM. 24 2.2 Teori Khusus 2.2.1 Node.js Menurut Rauch (2012: 1), Node.js pertama kali dikembangkan oleh Ryan Lienhart Dahl pada tahun 2009. Platform ini dibuat untuk memperoleh performance aplikasi web yang tinggi dan mengoptimalisasikan lingkungan concurrent yang tinggi pula. Platform Node.js memungkinkan bekerja dengan keandalan tinggi dan dengan I/O non-blocking. Node.js adalah sebuah platform yang dirancang untuk webserver. Aplikasi ini ditulis dalam bahasa javascript dan berbasis pada event (event driven). Tidak seperti kebanyakan bahasa javascript yang dijalankan di client, Node.js dieksekusi sebagai aplikasi server. Node.js memiliki efisiensi memory yang lebih baik apabila bekerja dalam keadaan muatan yang banyak. Pengguna tidak perlu khawatir dengan terjadinya deadlock karena tidak ada lock dalam Node.js. Aplikasi ini terdiri dari V8 Javascript engine buatan Google. Inc dan beberapa modul bawaan yang terintegrasi . Di dalam Node.js terdapat operasi-operasi yang sifatnya synchronous dan asynchronous, tetapi keunggulan Node.js ini terdapat pada asynchronous-nya atau bisa juga disebut dengan non-blocking I/O . Node.js menggunakan pendekatan event-driven berbasis infinite event loop dalam satu thread untuk mengurangi jumlah memory. Manuel Kiessling (2012) berpendapat bahwa Node.js merupakan model yang efisien untuk membangun sebuah aplikasi yang harus bersinggungan dengan concurrency (dua hal yang bekerja secara bersamaan). Snippet atau Code Snippet adalah istilah pemrograman untuk sebagian kecil dari re-usable source code atau teks. Biasanya, unit operatif yang didefinisikan secara formal ini seringkali digunakan untuk memperjelas makna dari sebuah fungsi yang “kacau”, atau untuk meminimalkan pemakaian kode berulang yang umum bagi fungsi-fungsi lain. 25 (Teixera, 2013: 4). Semenjak kemunculannya, Node.js telah menyita perhatian dari kalangan industri. Banyak pelaku industri yang menggunakan node untuk membuat layanan jaringan yang cepat dan scalable. Salah satu alasannya adalah karena node.js menggunakan javascript. Javascript adalah salah satu bahasa pemrograman yang paling banyak digunakan. Kebanyakan web programmer sudah terbiasa menggunakan javascript pada browser. Didalam node.js sudah terdapat HTTP server sehingga tidak perlu menginstall program web server kembali. Kebalikannya dengan PHP yang mengharuskan untuk menginstall aplikasi web server terlebih dahulu agar bisa menggunakan HTTP Server. Disamping itu terdapat perbedaan didalam letak eksekusinya . jika di PHP dieksekusi di sisi server (serverside) dan hasilnya baru ditampilkan disisi client dan node.js kebalikannya, sebelum ditampilkan script JS dieksekusi di sisi client (clientside) melalui browser yang digunakan. 2.2.2 Node Packet Manager (npmjs.org, 17 April 2015). Node Package Manager atau NPM adalah sebuah package manager untuk node.js. Fungsi dari NPM adalah untuk mengatur, mencari, dan melakukan install modulmodul pada Node.js. 2.2.3 Express.js (expressjs.com, 17 April 2015). Express.js adalah framework node.js yang minimalis dan fleksibel. Express.js menyediakan kumpulan fitur untuk membangun sebuah aplikasi web. Dengan express.js programmer dapat menambahkan rute, memberikan otentifikasi, dan kode pemrograman yang lebih struktural. 26 2.2.4 Operasi I/O (Leonard, 2011: 212). I/O adalah suatu mekanisme pengiriman data secara bertahap dan terus menerus melalui suatu aliran data dari proses ke piranti (begitu pula sebaliknya). Fungsi I/O pada dasarnya adalah mengimplementasikan algoritma I/O pada level aplikasi. Hal ini dikarenakan kode aplikasi sangatlah fleksibel, dan bugs aplikasi tidak mudah menyebabkan sistem crash. Untuk memulai operasi I/O, CPU mengisi register yang bersesuaian ke device controller. Sebaliknya device controller memeriksa isi register untuk kemudian menentukan operasi apa yang harus dilakukan. Pada saat operasi I/O dijalankan, ada dua kemungkinan, yaitu synchronous I/O dan asynchronous I/O. Gambar 2.15 Proses Synchronous dan Asynchronous I/O 27 2.2.5 Synchronous I/O (Leonard, 2011: 215). Pada operasi synchronous I/O atau blocking sebuah thread menunggu sampai I/O request selesai dikerjakan baru dapat melakukan operasi selanjutnya Operasi synchronous ini merupakan model operasi yang digunakan pada sistem yang berbasis pada thread (thread-based system). Kelemahan pada sistem adalah pada saat banyak request yang masuk ke server akan menimbulkan block, yang selanjutnya akan berakibat terjadinya deadlock. 2.2.6 Asynchronous I/O (Leonard, 2011: 216). Biasa juga disebut non-blocking I/O. Berbeda dengan operasi synchronous, dalam asynchronous sebuah operasi tidak harus menunggu selesai dikerjakan untuk melakukan operasi yang lain. Dengan begitu operasi tersebut tidak akan melakukan blok terhadap operasi lainnya. Sehingga tidak terjadi deadlock. Asynchronous digunakan pada sistem yang berbasiskan pada event (event-driven system). 2.2.7 Websocket (Wang, Salim, and Moskovits, 2013: 7). Websocket adalah sebuah protocol dimana merupakan fitur konektivitas baru dari HTML5. Websocket dapat melakukan perpindahan data 2 arah dalam suatu waktu atau yang dikenal dengan transmisi data full-duplex. Untuk menghasilkan sebuah koneksi dengan protocol websocket, client harus melakukan request dengan protocol HTTP/1.1 dan mendapat reply dari server sehingga HTTP dirubah menjadi websocket yang dikenal dengan websocketopening handshake. Sebagai perbandingan pada websocket terdapat juga konsep yang 28 bernama polling. Polling adalah fungsi yang bertugas untuk melakukan proses update setiap detiknya. Gambar 2.16 Polling send HTTP request Sama halnya dengan kehidupan nyata, dalam komunikasi antara client dengan server proses ini sangat menggangu dan tidak produktif, karena hanya menimbulkan banyak permintaan yang kosong dan terjadinya flooding terhadap server. Gambar 2.17Polling vs Websocket (Wang,Salim,dan Moskovits, 2013: 7) Dapat dilihat pada gambar 2.17, bahwa konsep websocket dengan polling memiliki perbedaan. Websocket memiliki efisiensi 29 dalam transimisi data real-time dibanding protokol HTTP biasa, efisiensi merupakan faktor utama dalam transmisi data real-time. 2.2.8 Socket.io Menurut Rauch (2012: 179), socket.io adalah sebuah library javascript untuk aplikasi web yang real time yang ditujukan untuk setiap browser dan mobile device. Dibuat oleh Guillermo Yauch, CTO dari Learnboost. Socket.io memiliki kelebihan jika dibandingkan dengan websocket. Salah satu fitur yang tidak dimiliki websocket adalah heartbeat, dimana client akan mengirimkan pesan ke server (atau dari server ke client lalu kembali lagi ke client) dalam interval waktu tertentu untuk memastikan kondisi apakah client dalam kondisi aktif atau tidak. Dalam penggunaannya, socket.io menggunakan penanda dalam pemrogramannya yang disebut socket id Gambar 2.18 Representasi Visual Socket.io 2.2.9 Hypertext Transfer Protocol (HTTP) Menurut Wang, Salim, dan Moskovits (2013: 3), HTTP merupakan protokol jaringan yang digunakan untukkomunikasi antara client dan server.di dalam HTTP/1.0 , koneksi yang terpisah dibuat 30 untuk setiap request ke server, yang bisa di bilang kurang efektif. Perkembangan berikutnya dari HTTP adalah HTTP/1.1, yang membuat koneksi lama dapat digunakan kembali. Dengan koneksi yang dapat digunakan kembali, browser bisa menginisialisasi koneksi ke web server untuk mengambil halaman HTML, kemudian menggunakan kembali sambungan yang sama. HTTP/1.1 mengurangi latency antara request dengan mengurangi jumlah koneksi yang harus dibuat dari client ke server. Menurut Wang,Salim, dan Moskovits (2013: 4), HTTP memperlakukan setiap permintaan dengan unik dan independen. Ada keuntungan untuk protokol ini yaitu, server tidak perlu menyimpan informasi mengenai sesi dan dengan demikian tidak memerlukan storage data. Dengan HTTP/1.0 dan HTTP/1.1 , inefisiensi utama berasal dari berikut ini: 1. HTTP dirancang untuk berbagi dokumen, bukan untuk aplikasi interaktif. 2. Jumlah informasi yang dibutuhkan protokol HTTP untuk berkomunikasi antara client dan server bertambah dengan cepat, ketika interaksi yang Anda miliki antara client dan server bertambah. 2.3 Hasil Penelitian Sebelumnya Websocket di HTML5 merupakan kemajuan di bidang komunikasi HTTP. Spesifikasi dari websocket memungkinkan saluran komunikasi dua arah single-socket untuk mengirim dan menerima informasi antara browser dan server. Dengan demikian, websocket menghindari koneksi dan portabilitas masalah teknik lainnya dan memberikan solusi yang lebih efisien daripada polling AJAX. Saat ini websocket di HTML5 adalah sarana terdepan untuk memfasilitasi full-duplex, pertukaran data di web secara real time. 31 Websocket menyediakan lintasan sederhana dari firewall dan router dan kompatibel dengan data biner. Websocket juga memungkinkan pertukaran data dengan cookie-based authentication. Menurut Hamalainen (2011, 4), Websocket merupakan komunikasi full-duplex yang diperkenalkan sebagai bagian dari standar HTML5 mendatang. Spesifikasi lengkap gabungan dari Websocket API yang ditetapkan oleh W3C dan protokol yang Websocket diusulkan sebagai IETF RFC6455. The Websocket API mendefinisikan interface antara Browser dan aplikasi web sementara protokol Websocket menentukan komunikasi protokol antara browser dan aplikasi server. Gambar 2.19 Websocket Protocol (Hamalainen, 2013: 4) Menurut Fette dan Melnikov (2011: 1), websocket protokol memungkinkan untuk melakukan komunikasi dua arah antar client dalam menjalankan program yang tidak dipercaya dalam lingkungan yang terkendali ke remote host. Websocket ini merupakan protokol yang terdiri dari opening handsake yang diikuti berdasarkan dasar message framing, yang berdiri diatas TCP. Tujuan dari teknologi ini adalah untuk menyediakan mekanisme untuk aplikasi berbasis browser yang membutuhkan komunikasi dua arah dengan server yang tidak bergantung kepada beberapa koneksi HTTP. Menurut Fette dan Melnikov (2011: 1), pada jurnalnya yang berjudul The Websocket Protocol, websocket didesain untuk menggantikan teknologi komunikasi bidirectional yang menggunakan HTTP sebagai transport layer untuk mendapatkan keuntungan dari infrastuktur yang ada (proxy, filtering dan otentikasi). Teknologi tersebut di implementasi sebagai pertukaran antara 32 efisiensi dan kehandalan karena HTTP pada dasarnya tidak didesain untuk melakukan komunikasi bidirectional. Berikut ini hasil perbandingan koneksi HTTP dengan Websocket : Tabel 2.1 Perbandingan HTTP dengan websocket (Fette dan Melnikov, 2011)