Tentang PERL
PERL adalah bahasa pemrograman yang menggunakan tipe data dinamis, program PERL
dapat langsung dieksekusi tanpa harus melalui proses kompilasi tersendiri ke format binary yang dapat dieksekusi.PERL banyak digunakan pada aplikasi manajemen sistem dan jaringan, pemrograman web,manipulasi teks, akses ke database.Berikut ini beberapa aplikasi yang menggunakan PERL yang cukup dikenal: mrtg, SQL
Ledger (aplikasi akunting), Webmin (aplikasi admin), spam assasin (anti spam).
Menjalankan Program PERL
Eksekusi dari file
Berikut ini sebuah program PERL salam.pl, yang mencetak salam universal di konsol, jika ada argumen pada command line maka ditampilkan setelah salam.
#!/usr/local/bin/perl
if ($#ARGV > 1)
{
print "hello $ARGV[0]\n";
} else {
print "hello\n";
}
Eksekusi di shell menggunakan PERL interpreter, sbb:
bash% perl salam.pl Bejo
helo Bejo
Agar dapat dieksekusi tanpa mengetikkan interpreter perl di command line, file salam.pl perlu diset permissionnya. Misalkan dengan perintah :
bash% chmod 755 salam.pl
bash% ./salam.pl Adhie
hello Adhie
Pastikan program PERL diawali dengan path lengkap ke interpreter perl yang terinstal di sistem operasi anda, untuk sistem berbasis Linux dan Unix, path tersebut harus diawali dengan karakter '#!' , seperti contoh:
#!/usr/local/bin/perl
Eksekusi dari command line
PERL dapat mengeksekusi perintah secara langsung dari command line, tanpa perlu membuat file program, menggunakan options e di interpreter perl, contoh:
bash% perl e
'print ”hello\n”'
Dasardasar PERL
Program PERL
Program PERL atau skrip PERL, biasa disimpan dalam file teks berakhiran .pl. Walaupun
demikian perl interpreter tetap akan mengeksekusi program PERL yang tidak menggunakan
ekstensi .pl.
Sebuah program PERL yang executable dapat menggunakan hanya statement, tanpa perlu
mendefinisikan fungsi khusus seperti main() dalam program bahasa C.
Program PERL dapat terdiri atas statemen, deklarasi subroutine, konstruksi kondisional,konstruksi loop, konstruksi block.
Statemen
Statemen diakhiri dengan tanda titik coma. Statemen dapat berbentuk deklarasi variabel,assignment variabel dan pemanggilan fungsi. White space (spasi, baris baru) diabaikan.
print "open source software ?!",
" it's a miracle",
", do you believe miracle?\n";
Komentar
Sebagaimana bahasa pemrograman lainnya, programmer PERL dapat menuliskan komentar
dalam kode program, dengan menempatkan karakter '#' sebelum baris komentar, contoh:
# menghitung hitung luas
$area = $pi * $radius * $radius;
Atau dapat juga setelah bagian kode:
$area = $pi * $radius * $radius; # menghitung hitung luas
Komentar diperlakukan sebagaimana white space.
Variabel dan Tipe data
Variabel digunakan untuk menyimpan data. PERL memiliki 3 tipe variabel utama: skalar,
array dan hash. Nama-nama variabel, dan identifier lainnya dalam PERL adalah casesensitive.
Skalar
Variabel skalar menyimpan data bernilai tunggal, tipe data dapat berupa string atau bilangan.Tipe data secara otomatis ditentukan pada saat assignment variabel. tidak perlu mendeklarasikan tipe data sebelum assignment.Nama variabel skalar dimulai dengan karakter '$'.
Contoh:
# string
$file = '/etc/profile';
$kota = “depok”;
# integer
$_num = 255;
$byte_ = 0x00ff;
# float
$konstanta_pi = 22/7;
String petik tunggal (single quote) dan petik ganda (double quote)
String dapat dinyatakan dalam petik tunggal (') dan petik ganda (“).
String dengan petik tunggal menyatakan data adalah seperti yang tertulis, tidak ada
interpretasi terhadap karakter-karakter pada string. String dengan petik ganda menyatakan bahwa interpreter PERL harus melakukan interpretasi terhadap karakter-karakter pada string tersebut.
Contoh:
# dicetak dalam satu baris, karakter \n tidak diinterpretasikan
$str1 = '\niman \nilmu \namal \n';
print $str1;
# dicetak dalam 3 baris diikuti baris baru
$str2 = “\niman \nilmu\namal \n”;
print $str2;
# mencetak 'honour the adzan' diikuti baris baru
$str3 = 'honour';
$str4 = “$str3 the adzan\n”;
Variabel Khusus
PERL juga mengenal beberapa variabel skalar khusus, seperti $ARG, $_, $!, $1, $2, $3, dan sebagainya yang dijelaskan di man perlvar
Array
Array menyimpan sekumpulan nilai secara berurutan (sekuensial), yang biasa disebut list, nilai nilai yang disimpan dapat berbeda-beda tipe datanya. Untuk membaca nilai anggota array digunakan nomor indeks integer dimulai dari nol.Variabel array dideklarasikan menggunakan karakter @ di depan nama variabel, data anggota
array ditempatkan dalam kurung (), nilai-nilai anggota dipisahkan oleh koma.
Nilai anggota array dibaca menggunakan operator [] dan nomor indeks.
Contoh:
@prima1 = (2,3,5,7,11,13,17);
# mencetak '5'
print $prima1[2];
Untuk mendapatkan jumlah anggota array digunakan variabel $# diikuti nama variabel, tapi nilainya adalah jumlah anggota array dikurangi satu. Nilai ini juga dapat digunakan untuk membaca elemen terakhir.
Contoh :
@hari2 = (1, "senin",2,"selasa", 3,"rabu",4,”kamis”, 5, ”jumat”);
# mencetak 'jumlah anggota : 9'
print “jumlah anggota : $#hari2 \n”;
# mencetak 'elemen terakhir : jumat'
print “elemen terakhir : $hari2[$#hari2] \n”;
Jika sebuah program mencoba menulis anggota array pada posisi indeks yang lebih besar dari ukuran array, maka PERL secara otomatis menambah ukuran array sampai posisi baru tersebut.
Contoh:
@bil3 = (10, 20, 30, 40);
# mencetak 'ukuran array : 3'
print “ukuran array : $#bil3 \n”;
$bil3[110] = 1234;
# mencetak 'ukuran array : 110'
print “ukuran array : $#bil3 \n”;
Membaca dari array dengan indeks yang lebih besar tidak akan menyebabkan error dan tidak akan menambah ukuran array.
Contoh:
@bil4 = (10,20,30,40);
$t1 = $bil4[89];
# mencetak 'ukuran array : 3'
print "ukuran array : $#bil4 \n";
Jika variabel array dievaluasi dalam konteks nilai skalar (scalar context) maka variabel tersebut dievaluasi sebagai jumlah anggota array,
contoh:
# dievaluasi dalam scalar context
@arr = (10,20,6,19,11,22);
if(@arr == 6) {
print "jumlah anggota array ada 6\n";
}
Array dapat disalin sebagian anggotanya ke array lain dengan mudah (array slice),
menggunakan operator [],
Contoh:
@arr1 = ('semar', 'gareng', 'petruk', 'bagong', 'arjuna',
'srikandi');
@arr2 = @arr1[2,4] # 'petruk' dan 'arjuna'
@arr3 = @arr1[1..3] # 'gareng', 'petruk', 'bagong'
@arr4 = @arr1[1..$#arr1] # semua kecuali 'semar'
3.2.3.Hash
Hash menyimpan sekumpulan nilai yang menggunakan pasangan nama kunci dan nilai.
Nama kunci dalam sebuah variabel hash haruslah unik, tidak boleh ada 2 pasangan yang
menggunakan nama kunci yang sama.
Variabel hash didefinisikan menggunakan karakter % diikuti nama variabel.
Nilai-nilai
anggota hash terdiri atas pasangan nama kunci dan nilai yang dipisahkan oleh
koma. Nama kunci dan pasangan dituliskan berurutan, dapat dipisahkan tanda koma atau
dapat juga dipisahkan oleh karakter '=>'. Untuk membaca nilai anggota hash digunakan operator kurawal {} dan nama kunci.
Contoh:
%rasa_buah1 = ('asam', 'asem djawa', 'manis', 'manggis', 'pahit' ,'pare');
# mencetak 'yang pahit = pare'
print “yang pahit = $rasa_buah1{'pahit'} \n”;# dapat juga ditulis seperti ini
%rasa_buah2 = ( 'asam' => 'asem djawa',
'manis' =>' manggis',
'pahit' => 'pare');
$rasa = 'manis';
# mencetak 'yang manis = manggis'
print “yang $rasa = $rasa_buah2{$rasa} \n”;
Operator
PERL memiliki banyak operator dan fungsi yang built-in,berikut ini beberapa operator yang umum digunakan, selengkapnya dapat dilihat dengan man perlop.
Manipulasi String
. Concat (penggabungan)
Aritmetika
+ Penjumlahan
Pengurangan
* Perkalian
/ Pembagian
Perbandingan Bilangan
'== kesamaan
'!= Ketidaksamaan
< Kurang dari
> Lebih dari
<= Kurang dari atau sama dengan
>= Lebih dari atau sama dengan
Perbandingan String
eq kesamaan
ne Ketidak samaan
lt Kurang dari
gt Lebih dari
le Kurang dari atau sama dengan
ge Lebih dari atau sama dengan
Perhatikan bahwa PERL menyediakan operasi pembanding string dan pembanding bilangan.
String dibandingkan secara alpabetis. Secara alpabetis, string '100' lebih kecil dari '8'. Contoh:
$a = 100; $b = 8
if ( $a > $b ) {
print “Bilangan $a lebih besar dari $b\n”;
} else {
print “Bilangan $a tidak lebih besar dari $b\n”;
}
if ( $a gt $b ) {
print “String $a secara alpabetis lebih besar dari $b”;
} else {
print “String $a secara alpabetis tidak lebih besar dari $b”;
}
Operasi perbandingan menghasilkan nilai benar (true) atau salah (false).
TRUE dan FALSE dalam PERL
PERL tidak mengenal tipe data khusus untuk mewakili TRUE dan FALSE.
Dalam PERL nilai berikut ini adalah FALSE:bilangan 0, string '0', list kosong (), dan undef ,selain nilai-nilai tersebut adalah TRUE.
Fungsi
PERL memiliki fungsi built-in yang kaya, salah satu yang sudah diperkenalkan adalah
print.Fungsi dapat menerima nol atau lebih argumen. Argumen sebuah fungsi dapat berupa skalar,list, atau keduanya.Pemanggilan fungsi dapat menggunakan tanda kurung () diantara argumen, dapat juga tidak.Fungsi print adalah fungsi yang menerima argumen list.
Contoh:
print “saya”, “belajar”, “PERL”;
# sama dengan
print (“saya”, “belajar”, “PERL”);
Fungsi print juga dapat menerima argumen skalar berupa filehandle dan list. Tentang
filehandle akan dijelaskan dibagian File Input dan Output.Fungsi dapat mengembalikan nilai skalar atau list.Berikut ini fungsi localtime, yang mengembalikan list berisi data waktu, dipanggil tanpa argumen:
@bulan = ('jan', 'peb', 'mar', 'apr', 'mei', 'jun', 'jul', 'ags','sep', 'okt', 'nop', 'des');
@hari = ('minggu', 'senin', 'selasa', 'rabu', 'kamis', 'jumat', 'sabtu');
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) =localtime;
print "Bulan $bulan[$mon] hari $hari[$wday] tgl $mday tahun ",1900+$year,"\n";
Perlu diingat bahwa PERL pertamakali dikembangkan di lingkungan Unix, jadi akan banyak ditemukan fungsi-fungsi yang familiar dengan sistem operasi ini, misalnya yang berhubungan dengan file system, socket, network, interprocess communication, dan process control. Daftar fungsi builtin secara lengkap dapat dibaca dengan man perlfunc. Penjelasan untuk fungsi tertentu dapat dicari dengan perldoc -f
Contoh:
bash% perldoc -f localtime
Konstruksi Kondisional
Berikut ini konstruksi kondisional yang disediakan PERL
if
Mengeksekusi statemen jika kondisi bernilai benar. Untuk percabangan menggunakan elsif dan else.
Bentuknya :
if ( kondisi1) {# statemenstatemen}
elsif (kondisi2) {
# statemenstatemen
} elsif (kondisi3) {
# statemenstatemen
} else {
# statemenstatemen
}
unless
Adalah kebalikan dari if.
Konstruksi Loop
PERL mengenal beberapa jenis loop:
for
Digunakan untuk melakukan pengulangan berdasarkan 3 ekspresi yang masing-masing
untuk
: memulai loop, menentukan apakah melanjutkan eksekusi loop, dieksekusi pada akhir loop supaya kondisi untuk mengakhiri loop dapat dicapai.
Bentuknya:
for (
Ekspresi yang umum digunakan adalah sebagai berikut:
for ( $i = 0; $i < $jumlah_pengulangan; $i++ ) { # statemen }
foreach
Digunakan untuk melakukan iterasi berdasarkan anggota sebuah array atau list. Bentuknya:
foreach
Contoh:
# iterasi atas array
@hari = ('senin','selasa','rabu','kamis','jumat','sabtu','minggu');
foreach $h (@hari) {
print "hari $h\n";
}
# terhadap list
$p = 1;
foreach $q (2..6) {
$p *= $q;
}
print "faktorial 6 = $p\n";
# atau terhadap array slice
foreach $q (@hari[2..5]) {
print "$q\n";
}
while
Loop dieksekusi selama kondisi adalah TRUE. Untuk keluar dari loop harus dengan
mengubah kondisi menjadi false atau menggunakan statement last;
Bentuknya :
while(kondisi) {# statemen }
Input dan Output ke file
Membaca dari file teks
Sebelum file dapat dibaca maka harus file dibuka dengan fungsi open, dengan mode “baca”,
contoh:
open($fh, '/etc/passwd');
Variable $fh adalah filehandle yang diperlukan untuk membaca dan menutup file.
Selanjutnya setiap baris dibaca dengan operator <>. sebagai berikut:
while($line = <$fh>) {
# memproses $line
}
Setelah selesai file ditutup dengan fungsi close, contoh:
close($fh)
Menulis ke file teks
Perintah yang sama dengan program di atas dapat digunakan untuk menulis ke file. Pertama, file dibuka dengan mode 'tulis':
open($fh, “> /path/ke/file”);
selanjutnya dapat ditulis dengan perintah print, menggunakan file handle, sbb:
print $fh “baris teks yang ditulis ...\n”;
Seperti halnya dalam hal membaca, maka filehandle harus ditutup dengan close.
Berikut ini contoh membaca dari file dan menulis ke file baru, atau mengcopy file:
# mengcopy /etc/profile
$fnam = '/etc/profile';
$fbaru = '/home/didi/copyprofile';
open($fh1, $fnam) or die “gagal baca $fnam, $!”;
open($fh2, “>$fbaru”) or die “gagal menulis $fbaru, $!”;
while($line = <$fh1>) {
print $fh2 $line;
}
close($fh1);
close($fh2);
Ekspresi “or die ... “ digunakan sebagai error handler jika file tidak dapat dibuka.
Variabel khusus $! digunakan untuk menampilkan pesan error dari sistem.
Subrutin
Pada program aplikasi umumnya, kumpulan statemen yang mengimplementasikan sebuah
operasi tertentu didefinisikan dalam sebuah subrutin. Beberapa subrutin biasanya didefinisikan dalam sebuah file tersendiri, sehingga dapat digunakan oleh berbagai program pemanggil.
Berikut ini bentuk pendefinisian subrutin :
sub
Subrutin dapat menerima parameter, tapi PERL tidak mengenal named formal parameter,
parameter yang dikirimkan ke subrutin dapat diakses dalam subrutin melalui array khusus @_
,berikut ini contoh subrutin sederhana yang menghitung nilai faktorial :
sub faktorial {
my ($num) = @_;
my $res = 1;
foreach my $a (1..$num) {
$res *= $a; # atau $res = $res * a
}
return $res;
}
# return TRUE value 1;
Perhatikan bahwa jika subrutin didefinisikan di file tersendiri, maka file tersebut harus mengembalikan nilai TRUE, dalam program diatas digunakan bilangan 1.
Jika subrutin tersebut disimpan di file /home/didi/mylib/math.pl, maka dapat
dipanggil dari program lainnya sebagai berikut:
req uire “/home/didi/mylib/math.pl”
print "Faktorial 6 = ", faktorial(6),"\n";
Penjelasan lebih lengkap tentang subrutin dapat dibaca dari man perlsub
Penutup
PERL adalah bahasa pemrograman yang berdaya guna tinggi, yang terus digunakan dan
dikembangkan oleh komunitas open source. Seperti halnya bahasa open source lain, PERL memiliki sistem dokumentasi yang sangat lengkap, pembaca sangat dianjurkan menelaah manual PERL yang terdistribusi bersama source code PERL.
Mengenal PERL
Pengenalan Internet (Poin-poin penting)
Internet merupakan jaringan global yang terdiri dari berbagai komputer yang saling berhubungan dan bekerjasama dengan cara berbagai informasi dan data menggunakan protocol TCP/IP.
-1969, Proyek Lembaga Riset Departemen Pertahanan Amerika Serikat menghasilkan ARPANET .
-1982, ARPANET menggunakan standar protokol TCP/IP.
-1986, Lembaga Ilmu Pengetahuan Amerika Serikat mendanai pembuatan jaringan TCP/IP yang dinamai NSFNET.Jaringan NSFNET ini menjadi embrio Internet yang kita kenal sekarang.
-1987 berdiri UUNET, salah satu provider utama Internet.
Aplikasi di Internet bertambah dengan diciptakannya WAIS (Wide Area Information Servers), Gopher, dan WWW (World Wide Web). WWW berkembang menjadi yang paling populer sampai sekarang.
Protokol adalah Suatu aturan standar komunikasi baik antar komputer maupun antar jaringan komputer.
Berbagai macam protokol komunikasi komputer :
-IPX/SPX : Novell Networe
-NETBEUI : Microsoft Network
-AppleTalk : Apple Macintosh Network
-Banyam Vines, DECnet, dan sebagainya
Transmission Control Protocol / Internet Protocol) merupakan Protokol yang dikembangkan pada ARPANET dan diterapkan pada jaringan komputer berbasis sistem operasi UNIX dengan konsep open system. TCP/IP menjadi standar protokol yang digunakan pada jaringan internet, karena dapat diterapkan pada hampir segala platform komputer.
Internet tidak terbentuk dari hanya suatu jaringan, melainkan terbentuk dari banyak jaringan. Untuk menghubungkan jaringan–jaringan komputer diperlukan Router dan Gateway.
Satu IP Address mempunyai suatu nama untuk dapat mempermudah identifikasi host.
Dalam tata cara penamaan digunakan istilah Domain, digunakan untuk menentukan posisi hirarki host di jaringan.
Untuk dapat terhubung dengan Internet, perlu adanya koneksi ke internet Gateway.
Salah satu contoh Internet Gateway adalah Online services atau ISP ( Internet Service Provider ). ISP adalah suatu jasa layanan koneksi Internet untuk jaringan komputer yang terhubung kepadanya.
hubungan ke ISP dapat dilakukan melalui :
-Hubungan jaringan langsung misalnya : Ethernet
-Hubungan jarak jauh misalnya : Leased line, micro wave radio, VSAT
-Hubungan lokal misalnya : jalur telepon
Bandwidth adalah kecepatan transmisi dalam sistem komunikasi data, dihitung dalam satuan bit / detik (bps - bit per second)
Contoh :
-Ethernet 10 - 100 Mbps
-Modem 14,4 - 56 Kbps
-Leased line 19 Kbps - 2 Mbps
Contoh peralatan yang dibutuhkan untuk hubungan dari satu komputer :
-Seperangkat komputer
-Modem
-Saluran telepon
-Piranti lunak komunikasi dan protokol TCP/IP
-Menjadi anggota ISP
-Piranti lunak aplikasi Internet
Hotspot adalah Area dimana internet dapat diakses dengan perangkat yang telah berteknologi Wi-Fi, seperti laptop (notebook) dan PDA. Dengan demikian akses internet nirkabel dapat dinikmati.
Disebut nirkabel karena koneksi antara penyedia jasa internet dan pemakainya tidak tersambung dengan kabel melainkan melalui gelombang radio.
GPRS atau General Packet Radio Services adalah sistem koneksi internet yang menggunakan perangkat GSM, dengan GPRS panggilan voice dapat dilakukan secara bersamaan dengan transmisi data.
internet server ada beberapa macam :
-Domain Name Service (DNS) Server
-FTP Server
-WEB Server
-WAIS Server
-IRC Server
-Firewall dan sebagainya
Layanan Aplikasi Internet mencakup :
-WWW (World Wide Web)
-Email / surat elektronik
-IRC
-Newsgroup
-File Sharing
-Finger / Telnet
Manfaat internet :
-Sebagai media komunikasi, setiap pengguna internet dapat berkomunikasi dengan pengguna lainnya dari seluruh dunia.
-Media pertukaran data, dengan menggunakan email, newsgroup, ftp dan www para pengguna internet di seluruh dunia dapat saling bertukar informasi dengan cepat dan murah.
-Media untuk mencari informasi atau data, perkembangan internet yang pesat, menjadikan www sebagai salah satu sumber informasi yang penting dan akurat.
-Kemudahan memperoleh informasi yang ada di internet sehingga manusia tahu apa saja yang terjadi.
-Bisa digunakan sebagai lahan informasi untuk bidang pendidikan, kebudayaan, dan lain-lain.
-Kemudahan bertransaksi dan berbisnis dalam bidang perdagangan sehingga tidak perlu pergi menuju ke tempat penawaran/penjualan
Contoh penggunaan internet :
-Dengan Browser (IE,Mozzila, Opera, Netscape,dll) :
-Membaca Berita-berita di koran dalam versi online (The Times, Kompas, Republika, Popular Online, dll),
-Melihat Foto dari seluruh penjuru dunia
-Ramalan cuaca untuk seluruh kota di dunia
-Membeli VCD atau buku, barang elektronik, dll
-Melihat situs-situs milik grup band favorit dan melihat video terbaru
-Melihat klasemen sementara Liga Inggris dan liga olahraga lain di seluruh dunia
-Mendengarkan siaran radio atau televisi dari stasiun-stasiun terkenal di dunia
-Membuat situs web yang dikunjungi oleh orang seluruh dunia.
-Dan lain-lain
-Dengan software messenger :
(MSN Messenger, Yahoo Messenger,AIM dll )
Anda bisa ngobrol (chat) dengan teman di mana pun ia berada, bertukar foto, dll.
-Dengan fasilitas email :
Anda bisa berikirim email ke siapa saja, kapan saja..
-Dengan program telnet :
Anda dapat menjalankan komputer lain tanpa harus berpindah tempat.
Efek negatif Internet :
-Materi yang Tidak Layak.
(Materi pornografi, seksual, kebencian, rasisme, kejahatan, kekerasan, dll)
-Penyebaran virus komputer.
-Pencurian data, hacking, cracking & carding
-Pelanggaran hak cipta.
-Tindakan kriminal (Penipuan, Pelecehan Fisik dan Non Fisik,).
-Pelanggaran privasi.
-Perjudian
-Dan lain-lain
Masa Depan Internet
-Akses internet makin cepat, mudah dan murah.
-Jumlah domain dan pemakai internet semakin banyak dengan adanya IP versi 6 (internet 2)
-Pemakai Mobile internet bertambah dan semakin populer.
-Aplikasi Video online real time dalam pola streaming di internet makin populer dan banyak digunakan karena bertambahnya bandwidth.
-Dan masih banyak lagi………..
Voice Over Internet Protocol (VoIP) Menggunakan Internet Telephony Gateway (ITG) Planet VIP-400
Voice over Internet Protocol (VoIP)
Voice over Internet Protocol dikenal juga dengan sebutan IP Telephony. Secara umum, VoIP didefinisikan sebagai suatu sistem yang menggunakan jaringan internet untuk mengirimkan data paket suara dari suatu tempat ke tempat yang lain menggunakan perantara protokol IP.
Dengan teknologi VoIP, diharapkan tiga jenis layanan komunikasi publik berikut ini mempunyai kualitas yang hampir sama dengan teknologi yang sebelumnya :
•Layanan komukasi voice dengan normal
•Layanan voice mail yang dapat ditinggalkan pada nomor yang dihubungi
•Layanan pengiriman transmisi fax dengan biaya yang terjangkau.
Protokol –protokol dalam VoIP
Dalam dunia komunikasi data komputer, protokol mengatur bagaimana sebuah komputer berkomunikasi dengan komputer lain. Dalam jaringan komputer kita dapat menggunakan banyak macam protokol tetapi agar dua buah komputer dapat saling berkomunikasi, keduanya perlu menggunakan protokol yang sama. Protokol berfungsi mirip dengan bahasa. Agar dapat berkomunikasi, orang-orang perlu berbicara dan mengerti bahasa yang sama.
Berikut ini dijelaskan tentang protokol-protokol yang terlibat pada VoIP diurut berdasarkan urutan proses koneksi yang terjadi. Protokol-protokol yang terlibat dalam VoIP adalah sebagai berikut :
1.Internet Protocol (IP)
IP adalah sebagian dari sederetan protokol TCP/IP, dan merupakan protokol yang paling banyak digunakan dalam internetworking. Sifat-sifat IP dalam pengiriman data :
•Unreliable (tidak andal)
Berarti protokol internet tidak menjamin datagram yang dikirimkan pasti sampai di tujuan, hanya berjanji melakukan usaha yang terbaik agar paket yang dikirimkan dapat sampai ke tujuan.
•Connectionless protocol
Berarti tidak adanya koneksi terlebih dahulu antara dua titik ujung yang sedang melakukan komunikasi tersebut.
•Datagram delivery service
Berarti setiap paket yang dikirimkan diperlakukan sebagai sebuah unit data yang berdiri sendiri tanpa ada hubungan apapun dengan unit data lainnya. Sehingga jalur yang ditempuh oleh setiap paket data IP dapat berbeda-beda dengan tujuan yang sama.
2.Transmission Control Protocol (TCP)
TCP merupakan connection-oriented protocol, dimana terdapat koneksi disetiap titik ujung sistem dan koneksi ini tetap terjaga pada saat pertukaran data sampai data tersebut selesai dipertukarkan. TCP bertugas membagi sebuah informasi ke dalam paket-paket yang diatur oleh IP dan kemudian pada titik ujung lainnya menyusun kembali paket-paket tersebut kedalam informasi semula.
3.User Datagram Protocol (UDP)
UDP merupakan connectionless protocol yang menggunakan IP untuk mengirimkan sebuah unit data yang disebut datagram dari sebuah komputer ke komputer lainnya. Perbedaan dengan TCP, dimana UDP tidak melakukan pembagian informasi kedalam paket-paket data dan penyusunannya kembali, UDP tidak menyediakan sequencing paket-paket data yang datang sehingga program-program aplikasi yang menggunakan UDP harus dapat memastikan keseluruhan data informasi tersebut tiba dalam urutan yang benar.
4.H.323
H.323 adalah suatu standar yang menentukan komponen, protokol, dan prosedur yang menyediakan layanan komunikasi multimedia, yaitu komunikasi audio, video dan data real-time (waktu nyata), melalui jaringan berbasis paket (packet-based network). Jaringan berbasis paket tersebut anatara lain Internet Protokol (IP), Internet Packet eXchange (IPX), Local Area Network (LAN), Enterprise Network (EN), Metropolitan Area Network (MAN), dan Wide Area Network (WAN). H.323 dapat diterapkan pada berbagai aplikasi komunikasi, yaitu suara saja (IP Telephony), suara dan gambar (Video Telephony), suara dan data, dan juga suara, gambar dan data. H.323 terdiri dari beberapa protokol yang digunakan untuk tujuan yang berbeda dan digabungkan untuk saling bekerjasama. Protokol-protokol tersebut diantaranya adalah H.225 RAS, H.225 call signaling dan H.245 control signaling.
5.Registration Admission Status (RAS)
RAS merupakan protokol yang digunakan untuk komunikasi antara endpoint dengan gatekeeper. RAS berfungsi untuk melakukan prosedur registration, admission, perubahan bandwidth, status dan pembubaran sambungan antara gateway dan gatekeeper.
6.H.225
H.225 merupakan standar ITU yang digunakan untuk membentuk koneksi antara dua H.323 endpoint dengan cara mempertukarkan H.225 protokol message pada kanal call signaling. H.225 message dipertukarkan antara dua endpoint atau antara endpoint dengan gatekeeper.
7.H.245
H.245 merupakan standar ITU yang dipergunakan oleh terminal untuk mempertukarkan end-to-end H.245 control message. H.245 control message menyediakan informasi mengenai kapabilitas terminal-terminal yang sedang berkomunikasi. Pertukaran kapabilitas termasuk pemberitahuan coder-decoder (CODEC) yang digunakan (G.711, G.722, G.723, G.723.1, G.728 atau G.729).
8.T.120 (Data Interface)
Protokol T.120 menyediakan komunikasi dalam bentuk informasi data antara dua atau lebih terminal. Protokol ini dapat digunakan untuk berbagai bentuk jaringan, seperti PSTN, ISDN dan LAN. Protokol ini mempunyai kemampuan untuk memberikan layanan aplikasi bersama antar terminal yang terhubung dengan jaringan-jaringan yang berbeda.
9.Real-time Protocol (RTP) dan Real-time Control Protocol (RTCP)
RTP dan RTCP merupakan protokol yang digunakan untuk mengatasi masalah aliran paket data audio dan video. Protokol RTP menyediakan mekanisme transport end-to-end layanan audio dan video secara real-time. RTP biasanya digunakan untuk mengirimkan data melalui UDP. Protokol RTCP digunakan untuk mengontrol RTP dengan cara menyediakan feedback untuk menganalisa kesalahan pengiriman.
Komponen-komponen H.323
Standar H.323 menetapkan empat komponen yang digunakan pada jaringan VoIP, yakni :
1.Terminal
Terminal H.323 digunakan untuk komunikasi multimedia bidirectional real-time. Terminal H.323 ini dapat berupa PC atau juga stand-alone device. Pada sistem VoIP yang berfungsi sebagai teminal dapat berupa telepon dan PC, karena yang disini yang dilayani adalah suara maka pada sistem ini terminalnya berupa telepon.
2.Gateway
Gateway menghubungkan dua jaringan yang berbeda, jaringan H.323 dan jaringan non-H.323. Gateway juga melakukan komunikasi dengan gatekeeper untuk menjalankan fungsi Registration, Admission, Status (RAS) untuk routing paket ketujuannya didalam jaringan. Selain itu juga gateway berfungsi untuk meroutekan panggilan (call) melalui IP network.
3.Gatekeeper
Gatekeeper dapat dianggap sebagai otaknya jaringan H.323. Satu gatekeeper dapat berhubungan dengan banyak gateway. Gatekeeper memiliki beberapa karakteristik yang melayani beberapa service berikut :
•Address translation
Skema pengalamatan yang disebut juga alias address digunakan untuk membangun komunikasi IP dimana skema pengalamatan ini dibuat oleh gatekeeper.
•Admission control
Gatekeeper dapat mengontrol setup call VoIP antara terminal atau gateway.
•Bandwidth control
Gatekeeper mengatur lebar bandwidth yang digunakan.
•Call signalling
Gatekeeper dapat bertindak sebagai call signalling “proxy” untuk terminal.
4.Multipoint Control Unit (MCU)
MCU mendukung pertemuan tiga atau lebih terminal H.323 dan terminal-terminal tersebut membuat suatu hubungan dengan MCU. MCU mengatur sumber pertemuan, negosiasi antara terminal untuk tujuan determinasi audio atau video coder decoder (CODEC) yang digunakan untuk dapat menangani media-media tersebut.
Dalam sistem VoIP disini tidak menggunakan MCU karena pada sistem ini hanya menggunakan voice saja. Perangkat yang digunakan adalah Terminal, Gatekeeper dan Gateway. Perangkat Gateway dan Gatekeeper dapat berupa satu device fisik tunggal.
Format Paket VoIp
Setiap paket VoIP terdiri dari dua bagian yakni header dan payload (beban). Header terdiri atas IP header, Realtime Transport Protocol (RTP) header, User Datagram Protocol (UDP) header dan link header.
IP header bertugas menyimpan informasi routing untuk mengirimkan paket-paket ke tujuan. Pada tiap header IP disertakan tipe layanan atau Type of Services (ToS) yang memungkinkan paket tertentu seperti suara diperlakukan berbeda dengan paket yang non real time.
UDP header memiliki ciri tertentu yaitu tidak menjamin paket akan mencapai tujuan sehingga UDP tidak sesuai digunakan pada aplikasi real time yang sangat peka terhadap delay dan latency.
RTP header merupakan header yang dapt dimanfaatkan untuk melakukan framing dan segmentasi data real time. Seperti UDP, RTP juga tidak mendukung realibilitas paket untuk sampai tujuan. RTP menggunakan protokol kendali yang disebut RTCP (Real time Transport Control Protocol) yang mengendalikan Quality of Services (QoS) dan sinkronisasi media stream yang berbeda.
Besarnya link header bergantung pada media yang digunakan.
Standar Layanan VoIP
Industri telekomunikasi mengambil langkah ke depan terhadap keterbatasan bandwidth dengan meningkatkan kapasitas internet backbone. International Telecommunications Union (ITU) mengesahkan spesifikasi H.323, Mei 1996, yang mendefinisikan bagaimana voice, data, dan video trafik akan ditransmisikan melalui IP-based on local area network juga mendefinisikan jaringan multimedia secara lengkap (mulai dari peralatan sampai protokol yang digunakan), termasuk juga T.120 standar data-conferencing. Rekomendasi ini berdasar pada real-time protocol/real-time control protocol (RTP/RTCP) untuk mengatur sinyal audio dan video.Stack protokol H.323 yang digunakan untuk VoIP adalah bagian audio dan control saja. Stack audio menangani semua fungsi dari VoIP. Untuk membawa trafik voice melalui IP, H.323 menggunakan dua protokol transport layer yaitu UDP dan TCP.
Voice Coding
Suara manusia dan semua suara yang bisa didengar, secara umum merupakan sinyal analog. PSTN mentransmisikan suara dalam bentuk sinyal digital. PSTN merubah sinyal suara dari telepon diubah ke format digital yang disebut Pulse Code Modulation (PCM).
ITU-T (International Telecommunication Union-Telecommunication Sector) membuat beberapa standar untuk voice coding yang direkomendasikan untuk implementasi VoIP. Beberapa standar yang sering dikenal antara lain:
a)G.711 voice coding PCM dengan bandwidth 64 Kbps
b)G.726 voice coding ADPCM dengan bandwidth 40, 32, 24, dan 16 Kbps
c)G.728 voice coding dengan kompresi Code-Excited Linear-Predictive (CELP) dengan bandwidth 16 Kbps.
d)G.729 voice coding dengan kompresi CELP dengan bandwidth 8 Kbps. Kualitas suara yang dihasilkan menyamai voice coding ADPCM dengan bandwidth 32 Kbps.
e)G.723.1 yang dapat digunakan untuk kompresi percakapan maupun komponen audio pada aplikasi multimedia dengan bandwidth 5,3 dan 6,3 KBps. Standar ini merupakan komponen dari keluarga H.324.
Jenis Konfigurasi Jaringan VoIP•
Telepon melalui Internet
Konfigurasi ini menggunakan fasilitas PSTN atau PABX pada kedua sisi subsistem terminalnya. Konfigurasi seperti ini akan membutuhkan antar muka berupa gateway yang menghubungkan jaringan VoIP dengan jaringan internet.
Untuk konfigurasi seperti ini dibutuhkan suatu sistem tambahan lainnya yang dapat memetakan pemanggilan nomor telepon menjadi kode-kode IP, lebih di kenal dengan sebutan Call Manager.
•Gabungan perangkat telepon dan perangkat berbasis IP (Hybrid)
Konfigurasi ini menggunakan sistem hybrid, yaitu campuran antara subsistem terminal menggunakan PC disatu sisi dan subsistem terminal menggunakan PSTN + telepon analog disisi yang lain.
•Komunikasi antar perangkat berbasis IP
Pada dasarnya, konfigurasi jenis ini lebih banyak pada pengembangan bidang perangkat lunak (software) multimedianya saja.
QoS VoIP
Quality of Services pada IP telephony adalah parameter-parameter yang menunjukkan kualitas paket data jaringan. Beberapa parameter yang menyatakan QoS untuk IP telephony antara lain latency, delay, jitter, packet loss dan sequence error pada jaringan internet.
Latency
Latency adalah waktu yang dibutuhkan oleh suatu perangkat dari meminta hak akses ke jaringan sampai mendapatkan hak akses itu.
Delay
Delay dapat didefinisikan sebagai waktu yang dibutuhkan untuk mengirimkan data dari sumber (pengirim) ke tujuan (penerima).
Jitter (Variasi Delay)
Jitter disebabkan oleh bervariasinya waktu penerimaan pengiriman paket-paket data dari pengirim ke penerima.
Echo
Echo (gema) disebabkan oleh sinyal refleksi dari speaker voice lawan dan berbalik sampai dengan speaker ear.
Packett Loss
Pada jaringan berbasis IP, semua frame suara diperlakukan sama seperti frame data. Pada saat peak load dan congestion, frame suara akan dibuang sama dengan frame data. Frame suara sensitif terhadap waktu sehingga bila dilakukan retransmisi akan mengubah arti pembicaraan.
Sequence error
Kongesti di dalam jaringan paket switch dapat mengakibatkan paket mengambil route yang berbeda untuk mencapai tujuan yang sama. Akibatnya, paket sampai dengan urutan yang berbeda.
Internet Telephony Gateway (ITG) Planet VIP-400
Internet Telephony Gateway (ITG) Planet VIP-400 adalah peralatan yang dapat menghubungkan VoIP di Internet dengan jaringan telepon yang menggunakan RJ-11. Biasanya peralatan gateway VoIP ini disambungkan ke PBX/PABX di kantor atau di wartel agar telepon biasa yang ada dapat terkait ke jaringan VoIP juga. ITG Planet VIP-400 memiliki dua jenis port, yaitu :
1)FXS (Foreign Exchange Subscriber) : digunakan untuk di hubungkan langsung ke pesawat telepon biasa melalui konektor RJ-11.
2)FXO (Foreign Exchange Office) : tidak dapat dihubungkan ke pesawat telepon biasa, hanya dapat di hubungkan ke PABX/PBX maupun langsung ke saluran telkom melalui konektor RJ-11.
Pengkodean Suara
Pengkodean suara yang didukung oleh ITG termasuk G.711, G.723.1 5.3 kbps, G.723.1 6.3 kbps dan G.729 AB.