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
Application Layer
Transport Layer
Internet Layer
Network Access Layer
Physical Layer
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
Session Layer
Transport Layer
Network Layer
Data Link 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
<HTML>
:
</HTML>
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,pp965-
966) :
•  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
sebagai  embedded
system.
  
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 parameter-
parameter  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
metode-
metode 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 (men-
switch 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 di-
unmasked 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
berbeda-
beda  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
komponen-
komponen 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
!!x!!??!x!
E
D
Saya
plaintext
enkripsi
dekripsi
ciphertext
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
D
plaintext
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
masing-
masing 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 
atau 
analisis 
karena
kesederhanaannya dan mudah untuk di mengerti.
  
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 algoritma-
algoritma 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
DECISION
Perbandingan pernyataan,
penyeleksian data yang
memberikan pilihan untuk
langkah selanjutnya
ON PAGE
CONNECTOR
Penghubung bagian-bagian
flowchart yang berada pada
satu halaman
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.
Informasi-
informasi
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.