7
BAB 2 LANDASAN TEORI
2.1 Teori Umum 2.1.1 Jaringan Komputer Jaringan komputer adalah sejumlah komputer yang dikelompokkan dan dihubungkan satu dengan yang lainnya menggunakan protocol komunikasi melalui media transmisi atau media komunikasi, sehingga dapat saling berbagi data atau informasi, program-program, penggunaan bersama piranti keras (printer, hardisk, scanner, CD Room, serta piranti keras lainnya), dan memberikan layanan komunikasi antar pemakai. Dua komputer atau lebih dikatakan saling berhubungan (terkoneksi) bila saling dapat bertukar informasi dan data.
Hubungan antar Komputer tersebut tidak terbatas berupa kabel
tembaga saja, namun bisa juga melalui fiber optic, gelombang microwave, infrared, dan bahkan melalui satelit. Pada dasarnya tujuan daripada pembuatan jaringan adalah untuk : • Dapat menghemat hardware seperti berbagi pemakaian printer dan CPU • Melakukan komunikasi, contohnya surat elektronik, instant messaging, dan chatting • Mendapatkan akses informasi dengan cepat, contohnya web browsing • Melakukan sharing data
8 Berdasarkan tipe transmisinya, network dibagi menjadi dua bagian besar yaitu broadcast dan point-to-point. Dalam broadcast network, komunikasi terjadi dalam sebuah saluran komunikasi yang digunakan secara bersama-sama, dimana data berupa paket yang dikirimkan dari sebuah komputer akan disampaikan ke tiap komputer yang ada dalam jaringan tersebut. Paket data hanya akan diproses oleh komputer tujuan dan akan dibuang oleh komputer yang bukan tujuan paket tersebut. Sedangkan pada point-to-point network, komunikasi data terjadi melalui beberapa koneksi antar sepasang komputer, sehingga untuk mencapai tujuannya sebuah paket mungkin harus melalui beberapa komputer terlebih dahulu. Oleh karena itu, dalam tipe jaringan ini, pemilihan rute yang baik menentukan bagus tidaknya koneksi data yang berlangsung. a. Local Area Network (LAN), adalah sebuah jaringan komputer yang jaringannya hanya mencakup wilayah kecil seperti jaringan komputer kampus, gedung, kantor, dalam rumah, sekolah atau yang lebih kecil. Biasanya LAN menggunakan teknologi IEEE 802.3 yang mempunyai kecepatan transfer 10, 100, 1000 Mbit/s. Pada sebuah LAN, setiap komputer mempunyai daya komputasi sendiri, berbeda dengan konsep dump terminal. Setiap komputer juga dapat mengakses sumber daya yang ada di LAN sesuai dengan hak akses yang telah diatur. Sumber daya tersebut dapat berupa data atau perangkat seperti printer. Pada LAN, seorang pengguna juga dapat berkomunikasi dengan pengguna yang lain dengan menggunakan aplikasi yang sesuai.
9 Beberapa teknologi yang digunakan dalam LAN antara lain : • Ethernet • Token ring • FDDI b. Wide Area Network (WAN), adalah jaringan komputer yang merupakan gabungan beberapa LAN. WAN dapat memberikan akses kepada komputer, printer ataupun device yang lain untuk saling berkomunikasi dan melakukan sharing sehingga untuk berkomunikasi dapat dilakukan tanpa mengenal jarak. Wide Area Network dirancang untuk : • Menghubungkan antar jaringan pada skala geografis yang besar. • Membuat user dapat melakukan komunikasi dengan user yang lain tanpa mengenal jarak. • Mendukung email, internet, file transfer, dan service e-commerce. Untuk merancang sebuah Wide Area Network maka diperlukan beberapa device maupun protocol. Biasanya jenis protocol yang digunakan dalam Wide Area Network antara lain : • Multi Protocol Layer Switching (MPLS) • Integrated Services Digital Network (ISDN) • Digital subscriber line (DSL) • Frame Relay • X.25 • PPP • HDLC
10 • VPN Selain itu, device yang biasa digunakan antara lain router, communication server, modem CSU/DSU, dan frame relay switch. c. Metropolitan Area Network (MAN), adalah jaringan komputer yang merupakan gabungan beberapa LAN di satu wilayah geografis. MAN biasanya dibuat jika jaringan LAN tersebut hanya berada dalam satu wilayah saja. Penggunaan device dan protocolnya hampir sama dengan WAN.
2.1.2 Internet Internet adalah suatu jaringan publik dimana pengguna yang ada di luar jaringan dapat mengakses sumber yang ada di jaringan publik. Definisi lain mengatakan bahwa internet adalah suatu jaringan antar komputer yang saling dihubungkan. Media penghubung tersebut bisa melalui kabel, kanal satelit maupun frekuensi radio, sehingga komputer-komputer yang terhubung tersebut dapat saling berkomunikasi. Setiap komputer yang terhubung dengan jaringan tersebut, diberikan sebuah nomor yang unik, dan berkomunikasi satu sama lainnya dengan bahasa komunikasi yang sama. Bahasa komunikasi yang sama ini disebut protokol. Protokol yang digunakan di internet adalah TCP/IP (Transmission Control Protocol / Internet Protocol). Internet itu sendiri memiliki beberapa kegunaan yang sangat membantu bagi para penggunanya, yaitu :
11 • Fungsi komunikasi Internet adalah alat komunikasi, kegunaan yang sangat penting dari internet adalah pertukaran pesan dengan menggunakan electronic mail (e-mail). • Fungsi Resource Sharing Dengan internet, kita dapat mencari software, essay, data dan program dari ribuan titik distribusi di seluruh dunia. • Fungsi Resource Discovery Navigasi untuk mencari file tertentu, dokumen, host atau orang diantara jutaan host. • Fungsi Komunitas Masyarakat pengguna internet
Layanan yang diberikan oleh internet yaitu : • Internet memungkinkan aplikasi – aplikasi terdistribusi yang berjalan pada end system yang berbeda untuk saling bertukar data. Beberapa contoh dari aplikasi tersebut adalah remote login, e-mail, web surfing, instant messaging, dll. • Internet menyediakan dua layanan sehubungan dengan aplikasi terdistribusi yang
dijalankan,
yaitu
connection-oriented
reliable
service
dan
connectionless unreliable service. Connection-oriented reliable service menjamin bahwa data yang dikirimkan sampai kepada penerima secara utuh dan dalam urutan yang benar. Sedangkan connectionless unreliable service tidak menjamin keutuhan dan urutan data yang sampai kepada penerima.
12
2.1.3 TCP/IP Definisi dari TCP/IP adalah sebuah protokol yang menentukan bagaimana komputer – komputer dalam suatu jaringan saling terhubung, mengirim, serta menerima pesan lewat internet. TCP/IP merupakan “bahasa internet”, dimana TCP/IP memungkinkan aneka jenis komputer, dari PC sampai mainframe untuk bertukar informasi.( Tanenbaum, 2003) TCP/IP protocol suite terdiri dari banyak protokol dengan dua protokol utama, yaitu Transport Control Protocol (TCP) dan Internet Protocol (IP). Dalam protokol jaringan TCP/IP, sebuah port adalah mekanisme yang mengizinkan sebuah komputer untuk mendukung beberapa sesi koneksi dengan komputer
lainnya
dan
program
di
dalam
jaringan.
Port
dapat
mengidentifikasikan aplikasi dan layanan yang menggunakan koneksi di dalam jaringan TCP/IP. Sehingga, port juga mengidentifikasikan sebuah proses tertentu di mana sebuah server dapat memberikan sebuah layanan kepada klien atau bagaimana sebuah klien dapat mengakses sebuah layanan yang ada dalam server. Port dapat dikenali dengan angka 16-bit (dua byte) yang disebut dengan Port Number dan diklasifikasikan dengan jenis protokol transport apa yang digunakan, ke dalam Port TCP dan Port UDP. Dilihat dari penomorannya, port UDP dan TCP dibagi menjadi tiga jenis, yakni sebagai berikut: a. Well-known Port: yang pada awalnya berkisar antara 0 hingga 255 tapi kemudian diperlebar untuk mendukung antara 0 hingga 1023. Port number
13 yang termasuk ke dalam well-known port, selalu merepresentasikan layanan jaringan yang sama, dan ditetapkan oleh Internet Assigned Number Authority (IANA). Beberapa di antara port-port yang berada di dalam range Well-known port masih belum ditetapkan dan direservasikan untuk digunakan oleh layanan yang bakal ada di masa depan. Well-known port didefinisikan dalam RFC 1060. b. Registered Port: Port-port yang digunakan oleh vendor-vendor komputer atau jaringan yang berbeda untuk mendukung aplikasi dan sistem operasi yang mereka buat. Registered port juga diketahui dan didaftarkan oleh IANA tapi tidak dialokasikan secara permanen, sehingga vendor lainnya dapat menggunakan port number yang sama. Range registered port berkisar dari 1024 hingga 49151 dan beberapa port di antaranya adalah Dynamically Assigned Port. c. Dynamically Assigned Port: merupakan port-port yang ditetapkan oleh sistem operasi atau aplikasi yang digunakan untuk melayani request dari pengguna sesuai dengan kebutuhan. Dynamically Assigned Port berkisar dari 1024 hingga 65536 dan dapat digunakan atau dilepaskan sesuai kebutuhan. Ciri-ciri yang terdapat pada protokol TCP/IP yang juga merupakan keunggulan dari protokol tersebut adalah : • Perkembangan protokol TCP/IP menggunakan standar protokol terbuka • Tidak tergantung pada perangkat keras atau sistem operasi jaringan tertentu • Cara pengalamatan bersifat unik dalam skala global • TCP/IP memiliki fasilitas routing
14 Dalam arsitektur jaringan komputer, terdapat suatu lapisan - lapisan (layer) yang memiliki tugas spesifik serta memiliki protokol tersendiri. ISO (International Standard Organization) telah mengeluarkan suatu standard untuk arsitektur jaringan komputer yang dikenal dengan nama Open System Interconnection (OSI). Standard ini terdiri dari 7 lapisan protokol yang menjalankan fungsi komunikasi antara 2 komputer. Dalam TCP/IP hanya terdapat 5 lapisan, yaitu :
Application Layer Presentation Layer
Application Layer
Session Layer Transport Layer
Transport Layer
Network Layer
Internet Layer
Data Link Layer
Network Access Layer
Physical Layer
Physical Layer
Arsitektur OSI
Arsitektur TCP/IP
Gambar 2.1 Perbandingan Arsitektur OSI dan TCP/IP
Walaupun jumlahnya berbeda, namun semua fungsi dari lapisan – lapisan arsitektur OSI telah tercakup oleh arsitektur TCP/IP. Adapun rincian fungsi masing – masing layer arsitektur TCP/IP adalah sbb : a. Physical Layer (lapisan fisik) merupakan lapisan terbawah yang mendefinisikan besaran fisik seperti media komunikasi, tegangan, arus, dsb.
15 Lapisan ini dapat bervariasi bergantung pada media komunikasi pada jaringan yang bersangkutan. TCP/IP bersifat fleksibel sehingga dapat mengintegralkan mengintegralkan berbagai jaringan dengan media fisik yang berbeda - beda. b. Network Access Layer mempunyai fungsi yang mirip dengan Data Link layer pada OSI. Lapisan ini mengatur penyaluran data frame-frame data pada media fisik yang digunakan secara handal. Lapisan ini biasanya memberikan servis untuk deteksi dan koreksi kesalahan dari data yang ditransmisikan. Beberapa contoh protokol yang digunakan pada lapisan ini adalah X.25 jaringan publik, Ethernet untuk jaringan Etehernet, AX.25 untuk jaringan Paket Radio dsb. c. Internet Layer mendefinisikan bagaimana hubungan dapat terjadi antara dua pihak yang berada pada jaringan yang berbeda seperti Network Layer pada OSI. Pada jaringan Internet yang terdiri atas puluhan juta host dan ratusan ribu jaringan lokal, lapisan ini bertugas untuk menjamin agar suatu paket yang dikirimkan dapat menemukan tujuannya dimana pun berada. Oleh karena itu, lapisan ini memiliki peranan penting terutama dalam mewujudkan internetworking yang meliputi wilayah luas (worldwide Internet). Beberapa tugas penting pada lapisan ini adalah : • Addressing, yakni melengkapi setiap datagram dengan alamat Internet dari tujuan. Alamat pada protokol inilah yang dikenal dengan Internet Protocol Address (IP Address). Karena pengalamatan (addressing) pada
16 jaringan TCP/IP berada pada level ini (software), maka jaringan TCP/IP independen dari jenis media dan komputer yang digunakan. • Routing, yakni menentukan kemana datagram akan dikirim agar mencapai tujuan yang diinginkan. Fungsi ini merupakan fungsi terpenting dari Internet Protocol (IP). Sebagai protokol yang bersifat connectionless, proses routing sepenuhnya ditentukan oleh jaringan. Pengirim tidak memiliki kendali terhadap paket yang dikirimkannya untuk bisa mencapai tujuan. Router-router pada jaringan TCP/IP lah yang sangat menentukan dalam penyampaian datagram dari penerima ke tujuan. d. Transport Layer mendefinisikan cara-cara untuk melakukan pengiriman data antara end to end host secara handal. Lapisan ini menjamin bahwa informasi yang diterima pada sisi penerima adalah sama dengan informasi yang dikirimkan pada pengirim. Untuk itu, lapisan ini memiliki beberapa fungsi penting antara lain : • Flow Control. Pengiriman data yang telah dipecah menjadi paket-paket tersebut harus diatur sedemikian rupa agar pengirim tidak sampai mengirimkan data dengan kecepatan yang melebihi kemampuan penerima dalam menerima data. • Error Detection. Pengirim dan penerima juga melengkapi data dengan sejumlah informasi yang bisa digunakan untuk memeriksa data yang dikirimkan bebas dari kesalahan. Jika ditemukan kesalahan pada paket data yang diterima, maka penerima tidak akan menerima data tersebut.
17 Pengirim akan mengirim ulang paket data yang mengandung kesalahan tadi. e. Application Layer merupakan lapisan terakhir dalam arsitektur TCP/IP yang berfungsi mendefinisikan aplikasi-aplikasi yang dijalankan pada jaringan. Karena itu, terdapat banyak protokol pada lapisan ini, sesuai dengan banyaknya aplikasi TCP/IP yang dapat dijalankan. Contohnya adalah SMTP (Simple Mail Transfer Protocol) untuk pengiriman e-mail, FTP (File Transfer Protocol) untuk transfer file, HTTP (Hyper Text Transfer Protocol) untuk aplikasi web, dll. Proses enkapsulasi data pada protokol TCP/IP dapat dijelaskan dari gambar di bawah ini :
Gambar 2.2 Proses Enkapsulasi Data Pada Protocol TCP/IP
2.1.4 Web Server Web Server adalah software yang menjadi tulang belakang dari worl wide web (www). Web server menunggu permintaan dari client yang
18 menggunakan browser seperti Netscape Navigator, Internet Explorer, Mozilla, dan program browser lainnya. Jika ada permintaan dari browser, maka web browser akan memproses permintaan itu kemudian memberikan hasil prosesnya berupa data yang diinginkan kembali ke browser. Data ini mempunyai format yang standar, disebut dengan format SGML (standar general markup language). Data yang berupa format ini kemudian akan ditampilkan oleh browser sesuai dengan kemampuan browser tersebut. Contohnya, bila data yang dikirim berupa gambar, browser yang hanya mampu menampilkan teks (misalnya lynx) tidak akan mampu menampilkan gambar tersebut, dan jika ada akan menampilkan alternatifnya saja. Web server, untuk berkomunikasi dengan client-nya (web browser) mempunyai protokol sendiri, yaitu HTTP (hypertext tarnsfer protocol). Dengan protokol ini, komunikasi antar web server dengan client-nya dapat saling dimengerti dan lebih mudah. Seperti telah dijelaskan diatas, format data pada world wide web adalah SGML. Tapi para pengguna internet saat ini lebih banyak menggunakan format HTML (hypertext markup language) karena penggunaannya lebih sederhana dan mudah dipelajari. Kata HyperText mempunyai arti bahwa seorang pengguna internet dengan web browsernya dapat membuka dan membaca dokumen-dokumen yang ada dalam komputernya atau bahkan jauh tempatnya sekalipun. Hal ini memberikan cita rasa dari suatu proses yang tridimensional, artinya pengguna
19 internet dapat membaca dari satu dokumen ke dokumen yang lain hanya dengan mengklik beberapa bagian dari halaman-halaman dokumen (web) itu. Proses yang dimulai dari permintaan webclient (browser), diterima web server, diproses, dan dikembalikan hasil prosesnya oleh web server ke web client lagi dilakukan secara transparan. Setiap orang dapat dengan mudah mengetahui apa yang terjadi pada tiap-tiap proses. Secara garis besarnya web server hanya memproses semua masukan yang diperolehnya dari web clientnya.
2.1.5 HTTP Protokol HTTP pertama kali dipergunakan dalam www pada tahun 1990. Pada saat itu yang gunakan adalah protokol HTTP versi 0.9. Versi 0.9 ini adalah protokol transfer dokumen secara mentah, yaitu data dokumen dikirim sesuai dengan isi dari dokumen tersebut tanpa memandang tipe dari dokumen. Kemudian pada tahun 1996 protokol HTTP diperbaiki menjadi HTTP versi 1.0. Perubahan ini untuk mengakomodasi tipe-tipe dokumen yang hendak dikirim beserta enkoding yang dipergunakan dalam pengiriman data dokumen. Sesuai dengan perkembangan infrastruktur internet maka pada tahun 1999 dikeluarkan HTTP versi 1.1 untuk mengakomodasi proxy, cache dan koneksi yang persisten. HTTP (HyperText Transfer Protocol) adalah protokol yang dipergunakan untuk mentransfer dokumen dalam World Wide Web (WWW). Protokol ini adalah protokol ringan, tidak berstatus dan generik yang dapat dipergunakan berbagai macam tipe dokumen. Pengembangan HTTP
20 dikoordinasi oleh Konsorsium World Wide Web (W3C) dan grup bekerja Internet Engineering Task Force (IETF), bekerja dalam publikasi satu seri RFC, yang paling terkenal RFC 2616, yang menjelaskan HTTP/1.1, versi HTTP yang digunakan umum sekarang ini. HTTP adalah sebuah protokol meminta atau menjawab antara client dan server. Sebuh client HTTP seperti web browser, biasanya memulai permintaan dengan membuat hubungan TCP/IP ke port tertentu di tuan rumah yang jauh (biasanya port 80). Sebuah server HTTP yang mendengarkan di port tersebut menunggu client mengirim kode permintaan (request), lalu me-reply dengan HTTP response. Contoh request HTTP: GET
/index.htm HTTP/1.1
Host: localhost User-Agent: Mozilla/5.0 Contoh Response HTTP: HTTP/1.1 200 OK Date: Wed, 10 Jun 2009 19:53:40 GMT Server: Apache/2.2.4 (Win32) DAV/2 mod_ssl/2.2.4 OpenSSL/0.9.8e mod_autoindex_color PHP/5.2.2 Content-Length: 22 Content-Type: text/html
21 :
2.1.6 HTTPS Hyper Text Transfer Protocol over Secure socket layer (HTTPS) merupakan versi aman (save) dari HTTP. Ditemukan oleh Netscapes communication Corporation untuk menyediakan otentifikasi dan komunikasi tersandi (memiliki sandi). Selain menggunakan komunikasi Plain Text, HTTPS menyandikan sesi data menggunakan protokol SSL (Secure Socket Layer) atau protocol TLS (Transport Layer Security). Kedua protokol tersebut memberikan perlindungan yang cukup dari serangan eavesdroppers dan man in the middle attacks. Pada umumnya, port HTTPS adalah 443.
2.1.7 PHP Bahasa scripting adalah bahasa yang dapat menambah fitur – fitur tambahan secara tertulis pada HTML, mengingat terbatasnya kemampuan HTML. Bahasa scripting di bagi menjadi 2 jenis, yaitu server side scripting dan client side scripting. Server side script adalah script yang diterjemahkan oleh web server. Server side script merupakan satu set instruksi yang diproses oleh server dan menghasilkan HTML. HTML yang dihasilkan dikirim sebagai bagian dari tanggapan HTTP ke browser.Browser kemudian menampilkan HTML tersebut.
22 Sedangkan client side script merupakan script yang diterjemahkan oleh browser. PHP merupakan server side script yang tergabung dalam HTML yang didukung oleh banyak web server dan termasuk server HTTP Apache, dan internet Informatioan Service milik Microsoft. PHP juga merupakan bahasa pemograman yang disukai pada bahasa scripting web linux. PHP telah dipengaruhi oleh perkembangan bahasa pemograman lain seperti Perl, ‘C’, Java dan beberapa cakupan ASP (Active Server Pages). PHP memiliki beberapa kelebihan, yaitu : • Ekstensibility, memiliki cakupan yang luas. • Sejumlah modul disediakan untuk mendukung hal – hal seperti hubungan dengan database, xml, mail. • Didukung oleh sejumlah besar ISP(Internet Server Provider), yang berarti aplikasi yang ditulis dengan PHP dapat dengan mudah diletakkan pada web untuk dilihat oleh siapa saja. Kombinasi yang popular saat ini adalah server HTTP Apache, PHP, dan database MYSQL atau Postgre SQL. Di bawah ini merupakan langkah – langkah untuk mengirim web (Choi,2000,p2,pp49-51;Connoly,2002,pp965966) : • Pertama – tama client meminta halaman web kemudian web server mencari lokasi halaman web yang diminta. • Jika halamn web tersebut merupakan halaman PHP maka web server perlu untuk memproses PHP untuk menghasilkan HTML yang akan dikembalikan
23 ke browser. Pada tahap ini jika halaman web diakhiri dengan php, maka server mengirimnya ke server machine PHP yang ada dalam web server untuk diproses. Jadi kode PHP dimasukkan ke salah satu ujung web server yang kemudian menghasilkan output berupa halaman HTML murni. alaman HTML tersebut kemudian dikirimkan ke browser. Di browser, halaman HTML akan diterjemahkan untuk ditampilkan.
2.1.8 MySQL Menurut artikel “MSIT 643 Relational Database Management System” dan “Migrating From Microsoft SQL Server and Access to MySQL”, pada mulanya MySQL dikembangkan oleh TcX, sebuah perusahaan di Swedia oleh Michael Widenius sebagai perancang utama. Pada tahun 1979, ia mengembangkan sebuah Database Management System yang pertama kali diberi nama UNIREG. Lalu pada tahun 1995, terlahirlah MySQL yang dirilis ke internet. Pada tahun 1999, diperkirakan ada sekitar setengah juta server yang menggunakan MySQL. MySQL sebagai salah satu DBMS yang paling popular memiliki beberapa keunggulan, antara lain : 1. Performance yang tinggi, reliable, dan mudah untuk digunakan. 2. Open Source, yang berarti dapat digunakan dan dikembangkan oleh siapa saja. 3. Dapat dijalankan pada system client/server maupun system.
sebagai embedded
24 4. Cross-Platform, MySQL dapat digunakan pada berbagai macam sistem operasi.
2.1.9 Bahasa C Bahasa C dikembangkan pertama kali pada laboratorium Bell (USA) sekitar tahun 1972 oleh Dennis Ritchie pada komputer DEC PDP-11 dengan sistem operasi UNIX. Untuk melaksanakan pembakuan (standardisasi) terhadap bahasa C, ANSI (American National Standards Institute) membentuk team untuk membuat bahasa C standard ANSI, yang dimulai tahun 1983. Standard ANSI inilah yang selanjutnya digunakan sebagai acuan dari berbagai versi C yang beredar dewasa ini. Bahasa C mempunyai kemampuan lebih dibanding dengan bahasa pemrograman yang lain. Bahasa C merupakan bahasa pemrograman yang bersifat portabel, yaitu suatu program yang dibuat dengan bahasa C pada suatu komputer akan dapat dijalankan pada komputer lain dengan sedikit (atau tanpa) perubahan yang berarti. Bahasa C merupakan bahasa yang biasa digunakan untuk keperluan pemrograman sistem, antara lain untuk membuat :
•
assembler
•
interpreter
•
kompiler
•
sistem operasi
•
program bantu (utility)
25 •
editor
•
paket program aplikasi Beberapa program paket yang beredar seperti dBase dibuat dengan
menggunakan bahasa C, bahkan sistem Operasi UNIX juga dibuat dengan menggunakan bahasa C. Bahasa C sesungguhnya merupakan bahasa pemrograman yang serbaguna yang pemakaiannya tidak terbatas untuk pemrograman sistem, namun juga dapat digunakan untuk aplikasi bisnis, matematis maupun games, bahkan untuk aplikasi kecerdasan buatan. Dalam beberapa literatur, bahasa C digolongkan sebagai bahasa aras menengah (medium level language). Penggolongan ini bukan berarti bahasa C kurang ampuh atau lebih sulit dibandingkan dengan bahasa aras tinggi (high level language, seperti Pascal, Basic, Fortran, dll), namun untuk menegaskan bahwa bahasa C bukanlah bahasa yang berorientasi pada mesin (yang merupakan ciri bahasa aras rendah (low level language), yaitu bahasa mesin dan assembly). Pada kenyataannya, C mengkombinasikan elemen dalam bahasa aras tinggi dan bahasa aras rendah, yaitu kemudahan dalam membuat program yang ditawarkan pada bahasa aras tinggi dan kecepatan eksekusi dari bahasa aras rendah.
2.1.10 Thread Thread adalah sebuah pengontrol aliran program pelaksanaan program dengan menggunakan kendali tunggal (Tanenbaum, 2001). Operasi yang paling Modern saat ini adalah sistem yang banyak sekali menyediakan berbagai cara,
26 dan memungkinkan suatu proses terkendali dengan baik.Pendekatan tradisional sebuah thread eksekusi per-proses, dimana konsep thread tidak dikenal. Thread bermanfaat untuk Multithreading yang berguna untuk Multiprocessor dan Singleprocessor. Kegunaan untuk sistem Multiprocessor, adalah : •
Sebagai unit pararel atau tingkat granularitas pararelisme
•
Peningkatan kinerja disbanding berbasis proses
Sedangkan kegunaan Multithreading pada singleprocessor, adalah : •
Kerja foreground dan background sekaligus di satu aplikasi
•
Penanganan asynchronous processing menjadi lebih baik
•
Mempercepat eksekusi program
•
Pengorganisasian program menjadi lebih baik
Karakteristik thread adalah : Proses merupakan lingkungan eksekusi bagi thread-thread yang dimilikinya. Thread-thread di satu proses memakai bersama sumber daya yang dimiliki proses, yaitu :
•
Ruang alamat
•
Himpunan berkas yang dibuka
•
Himpunan berkas yang dibuka
•
Timer-timer
•
Sinyal-sinyal
•
Sumber daya-sumber daya lain milik proses
27 Tiap thread mempunyai property independen berikut seperti : •
Keadaan (state) eksekusi thread (running, ready dan sebagainya)
•
Konteks pemroses Thread dapat dipandang sebagai satu PC (program counter) tersendiri
independen di satu proses. Beberapa penyimpan statik per-thread untuk variable-variabel lokal. a. Paket Thread Paket thread adalah sekumpulan primitive (misalnya library calls) untuk pemrogram berhubungan dengan thread di program aplikasi. Pertimbangan penting pembuatab paket thread adalah : • Waktu penciptaan thread • Penanganan critical region di tingkat thread • Penanganan private global variables • Implementasi paket thread
b. Jenis-jenis Thread Berdasarkan Waktu Berikut ini adalah macam – macam thread berdasarkan waktu penciptaannya, yaitu : 1. Static threads Jumlah thread yang akan dibuat ditentukan saat penulisan dan kompilasi program. Tiap thread langsung dialokasikan stack tetap. Keunggulan dari thread ini adalah sederhana. Sedangkan kelemahannya adalah tidak fleksibel.
28 2. Dynamic threads Penciptaan dan penghancuran thread “on-the-fly” saat eksekusi. Penciptaan thread biasanya lebih spesifik pada fungsi utamanya (seperti pointer ke prosedur) dan ukuran stack, dapat juga ditambah parameterparameter lain seperti prioritas panjadualan. Keunggulan thread ini adalah fleksibel. Kelemahannya adalah lebih rumit.
2.1.11 IPC (Inter-Process Communication) Inter-Process Communication (IPC) atau Komunikasi antar Proses adalah teknik-teknik untuk penukaran data antara banyak thread (fork kepada dua atau lebih task yang berjalan secara konkuren) dalam satu atau lebih proses (Tanenbaum, 2001). Proses dapat berjalan pada satu atau lebih computer yang terhubung oleh sebuah network. Teknik-teknik IPC dibagi menjadi metodemetode untuk message passing, synchronization, shared memory, dan remote procedure calls (RPC). Metode IPC yang digunakan dapat berbeda-beda tergantung bandwidth dan latensi komunikasi antar thread, dan tipe data yang dikomunikasikan. A. Shared Memory Shared Memory merupakan salah satu metode interprocess communication
yang
paling
sederhana,
dimana
shared
memory
memperbolehkan 2 atau lebih proses untuk mengakses memory yang sama, biasa disebut dengan malloc, dan pointer dikembalikan ke memory yang sebenarnya.
29
B. Socket Programming Socket
adalah
mekanisme
komunikasi
yang
memungkinkan
terjadinya pertukaran data antar program atau proses baik dalam satu mesin maupun antar mesin(Stevens, 1998). Gaya pemrograman socket sendiri berawal dari sistem Unix BSD yang terkenal dengan kepeloporannya pada bidang penanganan jaringan, sehingga sering disebut BSD Socket. Socket pertama kali diperkenalkan di system Unix BSD versi 4.2 tahun 1983 sebagai kelanjutan dari implementasi protokol TCP/IP yang muncul pertama kali pada system Unix BSD 4.1 pada akhir 1981. Hampir setiap varian Unix dan Linux mengadopsi BSD socket. Linux menggunakan paradigma open-read-write-close. Sebagai contoh, suatu aplikasi pertama harus memanggil open untuk menyiapkan file yang akan diakses. Kemudian aplikasi tersebut memangil read atau write untuk membaca data dari pada file atau menuliskan data ke file. Setelah itu close dijalankan untuk mengakhiri aplikasi yang digunakan. Interface soket dalam berkomunikasi bisa dilihat dalam gambar berikut :
30
Gambar 2.3 Interface Socket Dalam Berkomunikasi Data
Di dalam kotak menunjukkan system call / function yang dibutuhkan untuk koneksi / komunikasi, misalnya socket(), bind(), listen(), connect(), dll. Secara garis besar langkah – langkah yang dilakukan pada client dan server adalah sebagai berikut : 1. Langkah – langkah dasar di client : a) Membuka koneksi client ke server, yang di dalamnya adalah : •
Membuat socket dengan printah socket()
•
Melakukan pengalamatan ke server
•
Menghubungi server dengan connect()
b) Melakukan komunikasi (mengirim dan menerima data), dengan menggunakan perintah write() dan read(). c) Menutup hubungan dengan perintah close().
31 2. Langkah – langkah dasar di server : a) Membuat socket dengan printah socket() b) Mengikatkan socket kepada sebuah alamat network dengan perintah bind() c) Menyiapkan socket untuk menerima koneksi yang masuk ke server dengan perintah listen() d) Menerima koneksi yang masuk ke server dengan perintah accept() e) Melakukan komunikasi (mengirim dan menerima data), dengan menggunakan perintah write() dan read()
Gambar 2.4 Komunikasi Antar Sepasang Socket
32
Gambar 2.5 Client – Server Socket
Struktur Pengalamatan Jaringan komputer dalam melakukan pengiriman data dapat diilustrasikan seperti pengiriman surat. Supaya surat dapat terkirim secara benar, maka alamat pengirim dan penerima harus tertulis dengan jelas dan lengkap. Begitu juga dengan koneksi di socket, diperlukan variable yang dipakai untuk menyimpan address clent dan server. Variable yang dipakai berupa structure sockaddr dan sockaddr_in pada include socket.h di direktori /usr/include/sys. Address ini akan dipakai pada waktu melaukan connect(), bind(), dan accept().
33 C. Mutex Mutex (mutual exclusion) adalah suatu jenis semaphore yang digunakan untuk menjamin hanya ada satu proses yang berjalan untuk mengakses buffer pada suatu waktu. Sehingga thread – thread lain yang mencoba mengakusisi mutex akan memblock. Pemblokiran didapatkan dengan melakukan spinning atau sleeping. Mutex biasanya diberi inisialisasi dengan angka 1. Solaris memiliki dua tipe dasar mutex, yaitu “adaptive” dan “spin”. Tipe default mutex adalah adaptive. Tipe mutex ditentukan ketika diinisialisasikan oleh mutex_init(9f). Sebagian besar mutex di sistem adalah adaptive, dan kode pengunci dioptimalisasikan untuk mutex adaptive tanpa perlu diperdebatkan. Dengan kata lain, mengakusisi mutex adaptive yang tidak ada pemilikinya merupakan kasus yang paling umum dan path kodenya paling cepat. a. Mutex adaptive bekerja sebagai berikut : Thread peminta mencoba mendapatkan pengunci. Jika pengunci tidak ada pemiliknya, thread peminta “mengakusisi” pengunci dan melanjutkan pemorosesannya. Jika pengunci telah ada pemiliknya, dan pemilik pengunci sekarang sedang berjalan di prosesor (tentunya ini mempengaruhi mesin berprosesor gdana), thread peminta men-spin untuk mencoba mengakusisi pengunci. Jika pemilik pengunci mem-blok (menswitch keluar membiarkan thread lain berjalan), thread peminta tidur ( berhenti men-spin dan men-switch keluar). Jika pemilik pengunci
34 melepaskan penguncinya, thread peminta bisa mengakusisi pengunci tersebut (tentunya bisa saja terdapat beberapa thread men-spin, dalam kasus ini hanya satu thread akan mendapatkan penguncinya). Jika thread pemilik tidak sedang berjalan di prosesor, thread peminta tidur. Dalam kasus dimana beberapa thread peminta tidur untuk mendapatkan pengunci, thread-thread seperti ini mengakusisi pengunci berdasarka prioritas urutan FIFO. b. Mutex spin bekerja sebagai berikut : Thread peminta me-mask interupsi di tingkat yang ditentukan oleh sebuah argumen dari mutex_init(9f). Thread peminta mencoba mengakusisi pengunci. Jika pengunci telah ada pemiliknya, thread peminta men-spin dengan interrupts masked hingga pengunci dilepaskan dan thread peminta dijamin memperoleh penguncinya. Ketika pengunci tidak ada pemiliknya, thread peminta mengakusisi pengunci dan melanjutkan pemrosesanya dengan interrupts masked. Interupsi diunmasked ketika pengunci dilepaskan. Dalam kasus dimana beberapa thread men-spin (di prosesor yang berbeda, tentunya), salah satu thread ini akan mengakusisi pengunci ketika pengunci dilepaskan. Siapa yang akan
mengakusisi
pengunci
tergantun
siapa
yang
lebih
dulu
mendapatkannya. Penggunaan mutex bersifat “sukarela” (voluntary). Penggunaan mutex terlalu banyak menimbulkan resiko kinerja buruk. Hindari penggunaan mutex karena menimbulkan resiko data tak-konsisten.
35 D. Semaphore Semaphore pada UNIX merupakan suatu counter yang dapat digunakan untuk mensinkronisasi multiple thread. Apabila menggunakan semaphore, maka harus menyertakan preprocessor include <semaphore.h> Secara deskripsi, semaphore dapat
digambarkan sebagai suatu
pemrograman struktur komponen data yang merupakan suatu variable bilangan bulat tak negatif semval. Seperti yang kita ketahui bersama bahwa semaphore dapat digunakan ketika beberapa proses mencoba untuk mengakses file yang sama. Dalam hal ini kita harus membuat semaphore yang tersedia agar dapat diakses oleh semua proses sehingga mereka dapat membaca dan memeriksa nilai juga menginisialisasi serta mereinilisasi nilai dari semaphore yang sewajarnya. Untuk alasan tersebut semaphore hanya disimpan di dalam kernel sehingga dapat diakses oleh semua proses. Karena beberapa kegunaan seperti onmode menggunakan koneksi koneksi memori yang dibagi bersama, maka kita harus mengatur sedikitnya dua semaphore untuk menetapkan masing – masing kejadian pada server database. Pertama, karena set awal dari VPs dan yang kedua adalah karena koneksi – koneksi memori yang dibagi bersama untuk setiap penggunaan server database. Parameter konfigurasi sistem operasi SEM-NI pada umumnya menerapkan banyaknya semaphore untuk menetapkan pengalokasiannya. Karena informasi tentang bagaimana cara menetapkan parameter – parameter
36 terkait dengan semaphore melihat perintah konfigurasi untuk sistem operasi yang digunakan. Parameter konfigurasi sistem operasi SEMMSL pada umumnya menetapkan nomor maksimum dari semaphore – semaphore per set. Tetapan parameter ini untuk minimal 100. Beberapa sistem operasi memerlukan pengaturan suatu total nomor yang maksimum dari semaphore – semaphore yang tersedia, yang mana pada umumnya parameter konfigurasi ditetapkan oleh sistem operasi SEMMNS. Semaphore dapat juga digunakan sebagai mekanisme sleep / wakeup. Perbedaan antara semaphore dan variabel kondisi adalah semaphore tidak memiliki cara untuk membangunkan semua thread (seperti fungsi cv_broadcast pada variabel kondisi). a. Macam – macam semaphore, yaitu : 1. binary semaphore, nilai hanya berkisar 0 dan 1. 2. counting semaphore, nilai tidak terikat pada 0 dan 1.
b. Semaphore system calls teridiri dari 3, yaitu : 1. semget(key;nsems;flags) buat satu array semaphore – semaphore nsems dan kembalikan identifikasinya sid 2. semop(sid;ops;nops) laksanakan valensi daftar operasi di sid seperti yang ditetapkan oleh array ops dari panjangnya nops
37 3. semctl(sid;snum;cmd;arg) merubah atau mengembalikan informasi tentang arus status dari semaphore – semaphore seperti yang terdapat pada struct sem
c. Suatu struktur data pemeliharaan semaphore ditunjukkan dalam : 1. semval, adalah nilai semaphore pada saat ini. 2. sempit, adalah nomor identifikasi proses yang menunjukkan operasi terakhir. 3. semncnt, adalah nomor proses yang menunggu semval untuk mencapai nilai positif yang cocok. 4. semzcnt, adalah nomor proses yang menunggu semval menjadi nol. System call ini dikembalikan satu integer id ke semaphore (analisator ke suatu file descriptor), atau -1 dalam hal kesalahan (error).
E. Message Passing Sistem ini menyediakan suatu mekanisme agar proses-proses dapat berkomunikasi dan mesinkronkan tugas-tugasnya tanpa harus berbagi pakai ruang alamat yang sama dan terutama digunakan dalam lingkungan terdistribusi, dimana komunikasi proses terjadi antar komputer yang terhubung melalui jaringan. Fasilitas yang disediakan terdiri dari dua operasi yaitu send(message) dan receive(message). Pengiriman pesan ukuran yang tetap maupun dinamis.
38
Gambar 2.6 Cara Kerja Message Passing
Jika suatu proses P dan Q berkomunikasi diantaranya harus mengirimkan pesan dan menerima pesan dari yang lainnya. Beberapa metode hubungan komunikasi antar proses tersebut diantaranya adalah: a) Komunikasi langsung dan tidak langsung Komunikasi Langsung Proses-proses yang ingin dikomunikasikan harus memiliki sebuah cara untuk memilih satu dengan yang lain. Mereka dapat menggunakan komunikasi
langsung/tidak
langsung.Setiap
proses
yang
ingin
berkomunikasi harus memiliki nama yang bersifat eksplisit baik penerimaan atau pengirim dari komunikasi tersebut. Dalam konteks ini,
39 pengiriman dan penerimaan pesan secara primitif dapat dijabarkan sebagai berikut: • Send (P, message) - mengirim sebuah pesan ke proses P. • Receive (Q, message) - menerima sebuah pesan dari proses Q.
Komunikasi Tidak Langsung Dengan komunikasi tidak langsung, pesan akan dikirimkan pada dan diterima dari/melalui mailbox (Kotak Surat) atau terminal-terminal, sebuah mailbox dapat dilihat secara abstrak sebagai sebuah obyek di dalam setiap pesan yang dapat ditempatkan dari proses dan dari setiap pesan yang bias dipindahkan. Setiap kotak surat memiliki sebuah identifikasi (identitas) yang unik, sebuah proses dapat berkomunikasi dengan beberapa proses lain melalui sebuah nomor dari mailbox yang berbeda. Dua proses dapat saling berkomunikasi apabila kedua proses tersebut berbagi pakai mailbox. Pengirim dan penerima dapat dijabarkan sebagai: • Send (A, message) - mengirim pesan ke mailbox A. • Receive (A, message) - menerima pesan dari mailbox A.
b) Komunikasi sinkron dan asinkron Komunikasi antara proses membutuhkan place by calls untuk mengirim dan menerima data primitif. Terdapat desain yang berbedabeda dalam implementasi setiap primitif. Pengiriman pesan mungkin
40 dapat diblok (blocking) atau tidak dapat dibloking (nonblocking)-juga dikenal dengan nama sinkron atau asinkron. •
Pengiriman yang diblok: Proses pengiriman di blok sampai pesan diterima oleh proses penerima (receiving process) atau oleh mailbox.
•
Pengiriman yang tidak diblok: Proses pengiriman pesan dan mengkalkulasi operasi.
•
Penerimaan yang diblok: Penerima memblok sampai pesan tersedia.
•
Penerimaan yang tidak diblok: Penerima mengembalikan pesan valid atau null.
c) Penyangga (buffering) otomatis dan eksplisit Apa pun jenis komunikasinya, langsung atau tidak langsung, penukaran pesan oleh proses memerlukan antrian sementara. Pada dasarnya, terdapat tiga cara untuk mengimplementasikan antrian tersebut: •
Kapasitas Nol. Antrian mempunyai panjang maksimum 0, sehingga tidak ada penungguan pesan (message waiting). Dalam kasus ini, pengirim harus memblok sampai penerima menerima pesan.
•
Kapasitas Terbatas. Antrian mempunyai panjang yang telah ditentukan, paling banyak “n” pesan dapat dimasukkan. Jika antrian tidak penuh ketika pesan dikirimkan, pesan yang baru akan menimpa, dan pengirim pengirim dapat melanjutkan eksekusi tanpa menunggu. Link mempunyai kapasitas terbatas. Jika link penuh, pengirim harus memblok sampai terdapat ruang pada antrian.
41 •
Kapasitas Tidak Terbatas. Antrian mempunyai panjang yang tak terhingga, sehingga semua pesan dapat menunggu disini. Pengirim tidak akan pernah di blok.
F. Signalling Signalling adalah sebuah sinyal yang digunakan di sistem UNIX untuk notify sebuah proses kalau suatu peristiwa telah terjadi. Sebuah sinyal dapat digunakan secara synchronous atau asynchronous tergantung dari sumber dan alas an kenapa peristiwa itu meberi sinyal. Semua sinyal (asynchronous dan synchronous) mengikuti pola yang sama : • Sebuah sinyal dimunculkan oleh kejadian dari suatu peristiwa. • Sinyal yang dimunculkan tersebut dikirim ke proses • Sesudah dikirim, sinyal tersebut harus ditangani.
Setiap sinyal dapat ditangani oleh salah satu dari dua penerima sinyal : a) Penerima sinyal yang merupakan set awal dari system operasi. b) Penerima sinyal yang didefinisikan sendiri oleh user. Penanganan sinyal pada program yang hanya memakai thread tunggal cukup mudah yaitu hanya dengan mengirimkan sinyal ke prosesnya. Tetapi mengirimkan sinyal lebih rumit pada program yang multithreading, karena sebuah proses dapat memiliki beberapa thread.
42 Secara umum ada tiga pilihan kemana sinyal harus dikirim : a) Mengirimkan sinyal ke thread yang dituju oleh sinyal tersebut. b) Mengirimkan sinyal ke setiap thread pada proses tersebut. c) Mengirimkan sinyal ke thread tertentu dalam proses.
G. Named Pipe Named pipe hanya bisa digunakan untuk komunikasi antara dua proses yang men-share common file sistem. Keuntungan dari named pipe adalah kemampuan untuk mengkomunikasikan dua proses yang dimulai secara independent, dimana salah satu proses tidak fork off sebuah proses baru.
H. Unnamed Pipe Unnamed pipe digunakan ketika program Linux mematikan sebuah proses yang terpisah setelah menggunakan pipe library call untuk men-create dua file descriptors (salah satunya tiap bagian akhir dari pipe). file unnamed_pipe.c mengimplementasikan ends of a pipe dengan meng-create dua input/output file descriptors: int file_descriptors[2] Pipe(file_descriptors) dan kemudian forking off sebuah proses baru menggunakan fork library call: pid_t spawned_process_pid = fork()
43 2.1.12 Embedded System Embedded system merupakan suatu sistem / program yang sengaja dirancang untuk melakukan tugas yang sangat spesifik. Sehingga, karena tugas yang dilakukannya sangat spesifik dan berulang – ulang, tidak dibutuhkan kekuatan prosesor yang sangat tinggi. Dan hal ini akan sangat menghemat biaya produksi. Embedded system biasanya merupakan bagian dari piranti yang lebih besar. Dalam hal ini, embedded system di pergunakan untuk meningkatkan kapabilitas piranti itu sendiri. Banyak dari kita yang tidak menyadari bahwa embedded system sebenarnya telah menjadi bagian dari kehidupan, karena mereka selalu ada di hamper semua piranti eletronik yang kita gunakan saat ini. Beberapa embedded system yang banyak ditemui saat ini : − Sistem Pemrosesan Signal Real-time video, DVD player, peralatan kesehatan. − Distributed control Network router, switche, firewall, mass transit system, elevator − “Small” systems Mobile phone, pager, toys, smartcard, MP3 player, PDA, kamera digital, sensor. Karakteristik dari embedded system adalah : • Menjadi bagian dari system yang lebih besar • Application-specific, bahkan sebagian bekerja dengan real-time Baik hardware maupun software dirancang khusus untuk aplikasi yang spesifik.
44 Software yang dipergunakan untuk embedded system biasa disebut dengan firmware, dan disimpan di dalam ROM atau Flash Memory. Firmware tersebut bekerja dengan sumber daya yang sangat terbatas. (Tanpa Monitor, Keyboard dan memory yang besar) • Interaksi dengan dunia fisik Aspek – aspek yang membedakan embedded system dari sistem – sistem lainnya yaitu : a. Biaya (cost) Ini merupakan aspek yang dapat dikatakan paling penting karena sangat mempengaruhi desain suatu embedded system secara keseluruhan. Dalam membuat suatu embedded system, biasanya dipilih komponenkomponen secara optimal, yaitu yang memungkinkan implementasi sistem tersebut tetapi dengan biaya yang serendah-rendahnya. Hal ini karena perbedaan harga sedikit saja dapat sangat berpengaruh ketika embedded system tersebut harus dipasarkan secara luas dalam jumlah yang besar. b. Constraint waktu Tidak sedikit embedded system yang sekaligus merupakan real-time system, yaitu sistem yang prosesnya terbatasi oleh batas waktu. Sistem sistem ini umumnya merupakan sistem yang digunakan untuk keperluan yang kritikal, dan harus selalu aktif. Dengan demikian tidak seperti system computer desktop yang dapat dilakukan reboot, misalnya untuk menjaga kestabilannya atau menangani serangan tertentu seperti virus, dalam embedded system tertentu hal tersebut mungkin tidak dapat diterima.
45 Embedded system harus selalu stabil, termasuk dalam gangguan oleh serangan. Harus diperhatikan bagaimana jika suatu real-time system mengalami serangan Denial of Service (DoS) yang membuatnya menjadi lambat sehingga batas waktunya tidak lagi terpenuhi. c. Interaksi langsung dengan dunia nyata Banyak embedded system, umumnya embedded control application, harus berhubungan langsung dengan dunia nyata. Akibatnya adalah kesalahan suatu gangguan bisa berakibat lebih fatal dibandingkan sistem komputer yang biasa. Jika misalnya suatu komputer server yang menyimpan database mengalami gangguan, paling parah yang terjadi adalah kehilangan data, dan apabila database tersebut di-backup secara berkala maka kerugiannya lebih kecil lagi. Hal ini akan sangat berbeda jika misalnya sistem kontrol dalam suatu pabrik kimia mengalami gangguan dan melakukan kesalahan. d. Constraint energi Banyak embedded system yang mengambil daya dari baterai. Hal ini berarti munculnya satu titik serangan baru pada embedded system, yaitu power supply. e. Elektronika Masih berhubungan dengan yang terakhir, karena embedded system merupakan
sistem
yang
sangat
erat
dengan
elektronika,
maka
seranganserangan atau gangguan juga mungkin dilakukan secara elektrik, misalnya analisis dengan multimeter, logic analyzer, dan sebagainya.
46 Walaupun sistem komputer lain pada dasarnya juga merupakan alat elektronik, tetapi kemungkinan hal ini dilakukan lebih tinggi untuk embedded system.
2.1.13 Enkripsi a. Algoritma Asimetrik Algoritma kriptografi asimetrik (Algoritma asimetrik) merupakan algoritma kriptografi yang menggunakan dua buah kunci yang berbeda untuk proses enkripsi dan dekripsi. Kunci yang digunakan untuk enkripsi disebut kunci publik sedangkan kunci yang digunakan untuk dekripsi disebut kunci private. Dinamai kunci publik karena nilai kunci ini bisa diketahui oleh siapa saja. Maksudnya jika kunci ini diketahui oleh semua orang, tidak akan mempengaruhi keamanan dari informasi yang akan dikirim. Namun, jika kunci private diketahui oleh banyak orang, maka keamanan informasi tidak akan terjamin. Oleh sebab itu, privatee key hanya diketahui oleh orang-orang tertentu (pihak yang berwenang). Pada awalnya, algoritma asimetrik hadir untuk mengatasi masalah yang terjadi pada algoritma simetrik (key manajemen). Namun, seiring dengan perkembangan zaman, algoritma asimetrik digunakan untuk enkripsi dan dekripsi data. Sebenarnya, dua buah kunci yang digunakan pada algoritma asimetrik (kunci publik dan kunci privatee) didapatkan melalui suatu perhitungan. Kunci private dihitung menggunakan perhitungan yang
47 melibatkan kunci publik dan sejumlah parameter tertentu, sehingga seseorang yang hanya mengetahui kunci publik saja akan sulit bahkan tidak mungkin untuk menghitung kunci private. Pada umumnya, algoritma asimetrik mengaplikasikan beberapa persoalan pada matematika, seperti pemfaktoran bilangan integer yang sangat besar, masalah logaritma diskrit (discrete logarithm problem), elliptic curve, bilangan kompleks (complex number), dsb. Contoh dari algoritma asimetrik adalah RSA.
Saya
Saya
!!x!!??!x!
E plaintext
D
enkripsi
ciphertext
dekripsi
plaintext
Gambar 2.7 Enkripsi Asimetrik
b. Algoritma Simetrik Algoritma kriptografi simetrik (algoritma simetrik) merupakan algoritma kriptografi yang menggunakan satu buah kunci untuk proses enkripsi dan dekripsi. Karena kunci yang digunakan untuk enkripsi dan dekripsi adalah sama, maka kekuatan dari algoritma ini terletak pada kunci yang digunakan. Kunci yang digunakan pada algoritma simetrik disebut dengan secret key. Kelemahan algoritma simetrik terletak pada manajemen kunci (key management). Karena kunci yang digunakan pada algoritma simetrik memegang peranan penting, maka kunci ini tidak boleh diketahui oleh pihak
48 yang tidak berhak. Sehingga diperlukan suatu mekanisme yang menjamin pengiriman/distribusi kunci pada semua pihak yang berwenang secara aman. Masalah distribusi kunci ini merupakan salah satu aspek yang terdapat pada manajemen kunci. Rumitnya masalah manajemen kunci pada algoritma simetrik ini membuat algoritma simetrik lebih memfokuskan pada masalah manajemen kunci dibandingkan masalah enkripsi data. Selain manajemen kunci, hal yang
tidak
kalah
penting
dalam
algoritma
simetrik
adalah
meyakinkan/jaminan bahwa pengirim dan penerima message benar-benar memiliki kunci yang sama. Saya
!!x!!??!x!
Saya
E plaintext
D
enkripsi
ciphertext
dekripsi
plaintext
Gambar 2.8 Enkripsi Simetrik
Berdasarkan proses yang dilakukannya, algoritma simetrik dibagi menjadi dua, yaitu : • Block cipher, rangkaian bit-bit plainteks dibagi menjadi blok-blok bit dengan panjang sama, biasanya 64 bit (tapi adakalanya lebih). Algoritma enkripsi menghasilkan blok cipherteks yang – pada kebanyakan sistem kriptografi simetri – berukuran sama dengan blok plainteks.
49 • Stream cipher, suatu sistem dimana kuncinya dimasukkan ke dalam suatu algoritma yang menggunakan kunci untuk membangkitkan suatu rangkaian yang tak terbatas. Algoritma tersebut biasanya dikenal sebagai pembangkit rangkaian (sequence generator) atau pembangkit kunci stream (stream key generator), stream cipher memiliki karakteristik membagi teks terang ke dalam karakter-karakter dan menyandi masingmasing karakter bit per waktu dengan suatu fungsi waktu bervariasi yang ketergantungan waktunya di atur berdasarkan kondisi (state) internal dari algoritma sistem sandi tersebut. Setiap penyandian satu karakter selesai, perangkat tersebut akan merubah kondisi (state) sesuai formulasinya. Sehingga pemunculan dua karakter teks terang yang sama biasanya tidak akan menghasilkan karakter teks sandi yang sama. stream cipher juga sebagai sistem sandi data digital yang menyandi 1 bit atau 1 byte dalam satuan
waktu.
Proses
enkripsi
pada
stream
cipher
umumnya
menggunakan operasi XOR sehingga kekuatan kriptografis dari algoritma stream cipher terletak pada key generatornya. Sebuah key generator harus menghasilkan rangkaian kunci yang acak dan memiliki periode yang sangat panjang sehingga dapat dihindari pengulangan pemakaian kunci akibat dari periode yang tidak maksimum.
2.1.14 RC-4 RC4 merupakan salah satu jenis stream cipher, yaitu memproses unit atau input data pada satu saat. Unit atau data pada umumnya sebuah byte atau
50 bahkan kadang kadang bit (byte dalam hal RC4). Dengan cara ini enkripsi atau dekripsi dapat dilaksanakan pada panjang yang variabel. Algoritma ini tidak harus menunggu sejumlah input data tertentu sebelum diproses, atau menambahkan byte tambahan untuk mengenkrip. Contoh stream cipher adalah RC4, Seal, A5, Oryx, dll. Tipe lainnya adalah block cipher yang memproses sekaligus sejumlah tertentu data (biasanya 64 bit atau 128 bit blok), contohnya : Blowfish, DES, Gost, Idea, RC5, Safer, Square, Twofish, RC6, Loki97, dll. RC4 merupakan enkripsi stream simetrik proprietary yang dibuat oleh RSA Data Security, Inc (RSADSI). Penyebarannya diawali dari sebuah source code yang diyakini sebagai RC4 dan dipublikasikan secara 'anonymously' pada tahun 1994. Algoritma yang dipublikasikan ini sangat identik dengan implementasi RC4 pada produk resmi. RC4 digunakan secara luas pada beberapa aplikasi dan umumnya dinyatakan sangat aman. Sampai saat ini diketahui tidak ada yang dapat memecahkan/membongkarnya, hanya saja versi ekspor 40 bitnya dapat dibongkar dengan cara "brute force" (mencoba semua kunci yang mungkin). RC4 tidak dipatenkan oleh RSADSI, hanya saja tidak diperdagangkan secara bebas (trade secret). 2.1.15 Use Case Diagram Use-case diagram menjelaskan manfaat dari aplikasi jika dilihat dari sudut pandang orang yang berada diluar sistem (actor). Diagram ini menunjukkan fungsionalitas suatu sistem atau kelas dan bagaimana sistem berinteraksi dengan dunia luar. Use-case diagram dapat digunakan selama proses analisa untuk menangkap requirements atau permintaan terhadap sistem
51 dan untuk memahami bagaimana sistem tersebut harus berkerja.Selama tahap desain, use-case diagram menetapkan perilaku dari aplikasi saat implementasi. Dalam sabuah model memungkinkan terdapat satu atu beberapa use-case diagram.
Gambar 2.9 Use Case
2.1.16 Sequence Diagram Sequence Diagram menjelaskan interaksi objekyang disusun dalam suatu urutan waktu. Diagram ini secara khusus berasosiasi dengan use-case. Sequencediagram memperlihatkan tahap demi tahap apa yang arusterjadi untuk menghasilkan suatu didalam use-case diagram. Tipe diagram yang digunakan sebaiknya
digunakan
diawal
tahap
desain
kesederhanaannya dan mudah untuk di mengerti.
atau
analisis
karena
52
Gambar 2.10 Sequence Diagram 2.1.17 Entity Relationship Diagram ERD merupakan suatu model untuk menjelaskan hubungan antar data dalam basis data berdasarkan objek-objek dasar data yang mempunyai hubungan antar relasi. ERD untuk memodelkan struktur data dan hubungan antar data, untuk menggambarkannya digunakan beberapa notasi dan simbol. Pada dasarnya ada tiga simbol yang digunakan, yaitu : a. Entiti Entiti merupakan objek yang mewakili sesuatu yang nyata dan dapat dibedakan dari sesuatu yang lain (Fathansyah, 1999: 30). Simbol dari entiti ini biasanya digambarkan dengan persegi panjang. b. Atribut Setiap entitas pasti mempunyai elemen yang disebut atribut yang berfungsi untuk mendeskripsikan karakteristik dari entitas tersebut. Isi dari atribut mempunyai sesuatu yang dapat mengidentifikasikan isi elemen satu dengan yang lain. Gambar atribut diwakili oleh simbol elips.
53 c. Hubungan / Relasi Hubungan antara sejumlah entitas yang berasal dari himpunan entitas yang berbeda. Relasi dapat digambarkan sebagai berikut : Relasi yang terjadi diantara dua himpunan entitas (misalnya A dan B) dalam satu basis data yaitu (Abdul Kadir, 2002: 48) : 1). Satu ke satu (One to one) Hubungan relasi satu ke satu yaitu setiap entitas pada himpunan entitas A berhubungan paling banyak dengan satu entitas pada himpunan entitas B. 2). Satu ke banyak (One to many) Setiap entitas pada himpunan entitas A dapat berhubungan dengan banyak entitas pada himpunan entitas B, tetapi setiap entitas pada entitas B dapat berhubungan dengan satu entitas pada himpunan entitas A. 3). Banyak ke banyak (Many to many) Setiap entitas pada himpunan entitas A dapat berhubungan dengan banyak entitas pada himpunan entitas B.
2.1.18 State Transition Diagram State-Transition Diagram menggambarkan bagaimana perilaku sistem saat mendapatkan event dari luar (External Events). STD mewakili berbagai mode perilaku dari sistem dan perlakuan yang terdapat pada transisi antar state. STD menjadi dasar dari model perilaku. Informasi tambahan mengenai aspek-
54 aspek kontrol terhadap perangkat lunak terdapat dalam spesifikasi kontrol (Control Specification).
Contoh :
State 1
Condition Action
State 2
Gambar 2.11 State Transition Diagram
2.1.19 Flowchart Flowchart adalah gambaran dalam bentuk diagram alir dari algoritmaalgoritma dalam suatu program, yang menyatakan arah alur program tersebut. Berikut adalah beberapa simbol yang digunakan dalam menggambar suatu flowchart : Tabel 2.1 Simbol Flowchart SIMBOL
NAMA
FUNGSI
TERMINATOR
Permulaan/akhir program
55
GARIS ALIR (FLOW LINE)
Arah aliran program
PREPARATION
Proses inisialisasi/pemberian harga awal
PROSES
Proses perhitungan/proses pengolahan data
INPUT/OUTPUT DATA
Proses input/output data, parameter, informasi
PREDEFINED PROCESS (SUB PROGRAM)
Permulaan sub program/proses menjalankan sub program Perbandingan pernyataan, penyeleksian data yang memberikan pilihan untuk langkah selanjutnya Penghubung bagian-bagian flowchart yang berada pada satu halaman
DECISION
ON PAGE CONNECTOR OFF PAGE CONNECTOR
Penghubung bagian-bagian flowchart yang berada pada halaman berbeda
2.1.20 Online Processing Online Processing adalah sebuah sistem yang mengaktifkan semua periferal sebagai pemasok data, dalam kendali komputer induk. Informasiinformasi yang muncul merupakan refleksi dari kondisi data yang paling mutakhir, karena setiap perkembangan data baru akan terus diupdatekan ke data induk. Salah satu contoh penggunaan online processing adalah transaksi
56 online. Dalam sistem pengolahan online, transaksi secara individual dientri melalui peralatan terminal, divalidasi dan digunakan untuk meng-update dengan segera file komputer. Hasil pengolahan ini kemudian tersedia segera untuk permintaan keterangan atau laporan.
2.1.21 Batch Processing Batch processing adalah suatu model pengolahan data, dengan menghimpun data terlebih dahulu, dan diatur pengelompokkan datanya dalam kelompok-kelompok yang disebut batch. Tiap batch ditandai dengan identitas tertentu, serta informasi mengenai data-data yang terdapat dalam batch tersebut. Setelah data-data tersebut terkumpul dalam jumlah tertentu, data-data tersebut akan langsung diproses. Contoh dari penggunaan batch processing adalah e-mail dan transaksi batch processing. Dalam suatu sistem batch processing, transaksi secara individual dientri melalui peralatan terminal, dilakukan validasi tertentu, dan ditambahkan ke transaction file yang berisi transaksi lain, dan kemudian dientri ke dalam sistem secara periodik. Di waktu kemudian, selama siklus pengolahan berikutnya, transaction file dapat divalidasi lebih lanjut dan kemudian digunakan untuk meng-up date master file yang berkaitan. 2.2 Teori Khusus 2.2.1 Telemetri Telemetri adalah sebuah teknologi yang memungkinkan pengukuran jarak jauh dan pelaporan informasi terhadap suatu obyek kepada perancang
57 atau operator sistem yang berada di tempat yang jauh dari objek pengukuran. Setelah di terima oleh operator sistem, data tersebut dapat diolah kembali atau ditampilkan Kata telemetri berasal dari akar bahasa Yunani, tele yang berarti jarak jauh, dan metron yang berarti pengukuran. Sistem yang membutuhkan instruksi atau data yang dikirim kepada mereka untuk mengoperasikan membutuhkan lawan dari telemetri, telekomando. Telemetri awalnya merujuk pada komunikasi nirkabel (contohnya menggunakan sistem radio untuk mengimplementasikan komunikasi data), tapi kini juga dapat merujuk pada komunikasi data melalui media lain, seperti telepon, kabel optic, kabel tembaga atau jaringan komputer atau internet. Secara umum sistem telemetri terdiri atas enam bagian pendukung yaitu objek ukur, sensor, pemancar, saluran transmisi, penerima dan tampilan/display.
Gambar 2.12 Sistem Telemetri
2.2.2 Telecommand Telecommand adalah perintah yang dikirimkan untuk mengatur sistem remote atau sistem yang tidak terhubung secara langsung (misalnya melalui
58 kabel) ke tempat dari mana telecommand dikirimkan. Kata tersebut berasal dari tele = jauh (yunani), dan command = mempercayakan / order (Latin). Telecommand biasa diaplikasikan pada sistem yang membutuhkan pengukuran jarak jauh dan pelaporan informasi yang menarik bagi sistem desainer atau operator. Dalam prakteknya, aplikasi yang digunakan tidak hanya membutuhkan telecommand saja tetapi juga telemetri.