Senin, 10 September 2012

PERANCANGAN APLIKASI ERROR DETECTION MENGGUNAKAN METODE CHECKSUM DENGAN BAHASA PEMROGRAMAN C++


STMIK PONTIANAK

KELOMPOK :
1.DIYAH DEVIYANTI (101102048)
2.LINGGAR KUSUMA WARDANI (101102066)
3.ERLIA NANA CHANDRA (101102072)
4.SYARIFAH KARIMAH (101102078)

BAB  I
PENDAHULUAN

1.1  Latar Belakang

Error detection adalah proses pelacakkan kesalahan selama transmisi data berlangsung ,yaitu perubahan satu atau beberapa Bit dari nilai “1” ke “0” atau sebalik nya. Error detection diperlukan untuk mendeteksi kesalahan dalam transmisi data. Biasanya digunakan pada data link layer dan checksum. Error detection terdiri dari beberapa metode yaitu : VRC,LRC,dan CRC. Namun metode VRC,LRC,dan CRC tidak digunakan dalam pembahasan makalah ini, oleh karena itu tidak dibahas secara detail.

a).VRC (Vertikal Redundancy Check)
Menambah sebuah parity Bit pada setiap data sehingga jumlah total Bit ‘1’ pada data menjadi genap. VRC dapat mendeteksi semua single Bit error serta dapat mendeteksi multiple dan burst error hanya jika jumlah total error pada data  adalah ganjil. Jika receiver mengetahui bahwa data yang dikirim telah dimasuki noise atau corrupt maka data akan dibuang dan meminta untuk dikirimkan kembali.

b). LRC (Longitudinal Redundancy Check )
LRC untuk data dikirim secara blok. Cara ini sama seperti VRC hanya saja penambahan Bit Parity tidak saja pada akhir karakter tetapi juga pada akhir setiap blok karakter yang dikirimkan. Untuk setiap Bit dari seluruh blok karakter ditambahkan ‘1’ Bit Parity termasuk juga Bit Parity dari masing-masing karater. Tiap blok mempunyai satu karakter khusus yang disebut Blok Check Character (BCC) yang dibentuk dari Bit uji dan dibangkitkan dengan cara sebagai berikut  “Tiap Bit BCC merupakan Parity dari semua Bit dari blok yang mempunyai nomor Bit yang sama, jadi Bit ‘1’ dari BCC merupakan Parity genap dari semua Bit ‘1’ karakter yang ada pada blok tersebut dan seterusnya”. LRC memiliki keunggulan dalam kecepatan untuk mendeteksi error pada single Bit maupun burst  error. Namun jika pada unit data terdapat 2 Bit mengalami kerusakkan pada posisi yang sama, maka LRC checker tidak dapat mendeteksi error . Kerugian terjadi overhead akibat penambahan Bit Parity per 7 Bit untuk karakter.

c). CRC (Cyclic Redundancy Check)
CRC adalah salah satu fungsi hash yang dikembangkan untuk mendeteksi kerusakkan data dalam proses transmisi ataupun penyimpanan. CRC menghasilkan suatu checksum yaitu suatu nilai dihasilkan dari fungsi hash nya, dimana nilai inilah yang nantinya digunakan untuk mendeteksi error pada transmisi ataupun penyimpanan, dan kemudian penerima akan melakukan verifikasi apakah data yang diterima tidak mengalami perubahan ataupun kerusakan.


1.2  Permasalahan

Operasi checksum perlu dilakukan untuk memeriksa integritas suatu berkas (file). Operasi checksum ini banyak dimanfaatkan dalam aplikasi komputer saat ini. Sebagai contoh, suatu web browser setiap melakukan download suatu file akan memeriksa kemungkinan terjadinya corrupt pada berkas tersebut dengan membandingkan hasil checksum terhadap berkas asli. Contoh lain adalah aplikasi antivirus. Aplikasi akan mendeteksi hasil checksum untuk dibandingkan dengan database virus yang dimilikinya. Operasi checksum tersebut dapat dilakukan dengan berbagai algoritma. Algoritma yang paling sederhana adalah memeriksa apakah jumlah byte berkas yang diperbandingkan sama atau tidak. Namun, permasalahannya tidak sesederhana itu. Bisa jadi, ukuran sama tetapi ada byte yang dipertukarkan. Maka perlu melibatkan fungsi hash untuk melakukan verifikasi suatu berkas. Ada banyak algoritma fungsi hash saat ini yang dapat digunakan untuk melakukan checksum tersebut. Permasalahan yang tertulis di dalam makalah ini adalah permasalahan mengenai kelemahan checksum sehingga ditambahkan suatu fungsi hash untuk mengatasinya.

Checksum atau hash sum adalah suatu data dengan ukuran tetap (fixed-size) yang dihitung dari suatu blok data digital dengan tujuan untuk mendeteksi kesalahan yang
mungkin terjadi saat proses transmisi atau penyimpanan. Integritas data dapat diperiksa pada langkah selanjutnya dengan menghitung pula checksum dan membandingkannya dengan data yang satunya (data sumber /asli). Jika checksum tidak sama, maka hampir dipastikan bahwa data tersebut telah berubah, baik disengaja maupun tidak disengaja. Prosedur untuk memperoleh checksum dari suatu data biasa disebut dengan checksum function atau checksum algorithm. Suatu algoritma checksum yang baik akan menghasilkan nilai yang berbeda ketika data mengalami kerusakan. Jika ternyata nilai checksum sama, maka kemungkinan besar data bebas dari kerusakan. Kembali ke istilah-istilah yang berkaitan dengan fungsi hash seperti yang telah disebutkan sebelumnya, Checksum pun juga berkaitan dengan istilah-istilah seperti check digits dan parity bits yang merupakan kasus khusus untuk memeriksa checksum pada blok data berukuran kecil (seperti nomor akun bank) dan error-correcting codes yang merupakan checksum khusus yang tidak hanya memeriksa kesalahan pada suatu data, tetapi juga mampu memulihkannya.


1.3  Tujuan

Tujuan checksum adalah untuk mengurangi lalu lintas jaringan atau internet dengan membandingkan checksum dalam cache database klien sebelum mengirimkan laporan masalah. Pada dasarnya menghitung checksum secara manual sangat sulit  sehingga dalam makalah ini kami membuat perancangan aplikasi untuk menghitung checksum  agar proses perhitungan nilai checksum dapat dilakukan dengan mudah.




BAB II
LANDASAN TEORI

Landasan Teori Checksum

1.      Menurut Wikipedia : Sebuah checksum atau hash sum adalah nama ukuran tetap dihitung dari blok data digital secara acak untuk tujuan mendeteksi kesalahan yang terjadi selama transmisi atau penyimpanan. Integritas data dapat diperiksa pada waktu berikutnya oleh recomputing checksum dan membandingkannya dengan disimpan satu. Jika checksum tidak cocok, data itu hampir pasti diubah (baik sengaja atau tidak sengaja).
Prosedur yang menghasilkan checksum dari data ini disebut checksum checksum fungsi atau algoritma. Algoritma checksum yang baik akan menghasilkan hasil yang berbeda dengan probabilitas tinggi saat data secara tidak sengaja rusak.Fungsi checksum terkait dengan hash functions, fingerprints, randomization functions, and cryptographic hash functions. Namun, masing-masing konsep memiliki perhitungan sendiri-sendiri. Beberapa kode koreksi kesalahan didasarkan pada checksum khusus yang tidak hanya mendeteksi kesalahan umum, tetapi juga memungkinkan data asli dapat dikembalikan dalam kasus-kasus tertentu.

2.      Checksum adalah nilai yang digunakan untuk memverifikasi integritas dari file atau transfer data. Dengan kata lain, itu adalah jumlah yang memeriksa validitas data. Checksum biasanya digunakan untuk membandingkan dua set data untuk memastikan mereka adalah sama. Beberapa aplikasi umum termasuk memverifikasi disk image atau memeriksa integritas dari file download. Jika checksum tidak cocok dengan file asli, data mungkin telah diubah atau rusak.
Checksum dapat dihitung dengan berbagai cara, menggunakan algoritma yang berbeda. Sebagai contoh, sebuah checksum dasar mungkin hanya jumlah byte dalam file. Namun, jenis checksum sangat tidak dapat diandalkan sejak dua atau lebih byte dapat diaktifkan sekitar, menyebabkan data yang akan berbeda, meskipun checksum akan sama. Oleh karena itu, algoritma checksum yang lebih maju biasanya digunakan untuk memverifikasi data. Ini termasuk siklik cek redundansi (CRC) dan algoritma fungsi hash kriptografi.

3.      Sebuah teknik untuk mendeteksi apakah sebuah data berubah pada saat transmisi. Checksum dilakukan dengan cara membagi semua data menjadi angka dengan dua karakter, kemudian semuanya dijumlahkan. Semua itu dilakukan oleh si pengirim. Oleh si penerima dilakukan kalkulasi yang sama pula, kemudian hasil kalkuklasinya dicocokan dengan kalkulasi yang dikirim. Jika tidak cocok, berarti data tersebut sudah berubah atau korup saat ditransmisikan.


Landasan Teori Error Detection

4.      Error Detection  : proses pelacakan kesalahan selama transmisi data  berlangsung, yaitu  perubahan satu atau beberapa bit dari nilai “1″ ke “0″ atau sebaliknya.
contoh : parity check, BSC, CRC.

5.      Error detection : berkaitan dengan cara untuk mendeteksi bit yang error dan usaha untuk merubah bit yang error menjadi bit yang benar.
Landasan Teori Bahasa Pemrograman C++

6.      Bahasa pemrograman  C++  adalah C + + IDE gratis yang dibangun untuk memenuhi kebutuhan yang paling menuntut penggunanya. Hal ini dirancang sangat extensible dan sepenuhnya dikonfigurasi. Akhirnya, sebuah IDE dengan semua fitur yang Anda butuhkan, memiliki tampilan yang konsisten, merasakan dan operasi di seluruh platform. Dibangun di sekitar sebuah plugin kerangka, C++ dapat diperluas dengan plugins. Setiap jenis fungsionalitas dapat ditambahkan dengan menginstal / coding sebuah plugin.

7.      Bahasa pemrograman C dikembangkan oleh Dennis Ritchie pada tahun 1972 di Laboratorium Bell. Bahasa pemrograman C adalah bahasa pemrograman yang dapat dikatakan berada antara bahasa tingkat rendah (berorientase mesin) dan bahasa tingkat tinggi (bahasa berorientase pada manusia). Bahasa pemrograman C berada satu tingkat di atas bahasa yang berorientasi pada mesin, namun tetap satu tingkat dibawah sebagian besar bahasa yang berorientasi persoalan. Bahasa pemrograman C cukup dekat dengan komputer untuk memberikan kendali yang besar terhadap detil implementasi pemakaian, namun cukup jauh untuk mengabaikan detil hardware. Karena itulah bahasa pemrograman C suatu ketika dipandang sebagai bahasa high-level dan pada saat yang lain dilihat sebagai bahasa low-level.

Bahasa pemrograman C merupakan bahasa pemrograman terstruktur, yang membagi program kedalam bentuk sebuah blok. Tujuannya adalah untuk memudahkan dalam pembuatan dan pengembangan program. Program yang ditulis dengan bahasa pemrograman C mudah sekali untuk dipindahkan dari satu jenis mesin ke jenis mesin lainnya. Hal ini berkat adanya standarisasi bahasa pemrograman C yaitu berupa standar ANSI (American National Standards Institute) yang dijadikan acuan oleh para pembuat kompiler C.

8.      C++ sendiri adalah sebuah bahasa pemrograman yang memiliki beberapa kompiler yang berbeda. Ada empat kompiler umum yaitu : C++ Borland, C++ Microsoft Visual, C/386 Watcom, dan DJGPP. Kamu dapat mendownload DJGPP atau mungkin saja anda telah memiliki kompiler lain.

Setiap kompiler ini agak berbeda. Setiap kompiler akan dapat menjalankan fungsi fungsi standar C++ ANSI/ISO, tetapi masing masing kompiler juga akan dapat menjalankan fungsi fungsi nonstandard (fungsi fungsi ini, agak mirip dengan ucapan yang tidak standar yang diucapkan orang diberbagai pelosok negeri. Sebagai contoh, di New Orleans kata median disebut neutral ground).

Kadang kadang pemakaian fungsi nonstandard akan menimbulkan masalah pada saat hendak mengkompilasi kode sumber data "source code" mempergunakan kompiler yang berbeda. Tutorial ini tidak terlepas dari masalah seperti itu. Bila anda belum mempunyai sebuah kompiler, disarankan agar anda segera memiliki sebuah kompiler. Sebuah kompiler sederhana sudah cukup untuk dipergunakan oleh anda dalam mengikuti tutorial ini.

Bahasa pemrograman C++ adalah bahasa yang amat berbeda. Untuk kompiler C++ berbasis DOS, akan memerlukan beberapa kata kunci (keywords); keyword sendiri tidak cukup untuk difungsikan sebagai input dan output. Walau hampir semua fungsi dalam file library tampaknya bias diakses oleh header file




BAB III
PEMBAHASAN

1.Algoritma dari coding program perancangan aplikasi error detection menggunakan metode checksum dengan bahasa pemrograman codeblocks

a.       Bilangan desimal (0 1 2 3 4 5 6 7 8 9) dikonversi ke bilangan heksadesimal sesuai dengan tabel ASCII
b.      Hasil dari konversi bilangan heksadesimal kemudian dijumlahkan
c.       Jika hasil penjumlahan konversi bilangan heksadesimal lebih dari 2 digit, maka hilangkan digit yang di depan (carry),  yang diambil adalah dua digit yang paling kanan
d.      Hasil dari penjumlahan heksadesimal yang telah dihilangkan carry kemudian  dikonversikan lagi ke heksadesimal

    2. Aplikasi

Aplikasi dalam makalah ini dirancang untuk melakukan perhitungan checksum dari data yang diinputkan oleh user. Aplikasi ini dapat melihat kesalahan kecil yang terjadi. Aplikasi ini juga dapat menampilkan nilai heksadesimal dari masing- masing karakter yang telah diinputkan oleh user sesuai dengan tabel ASCII.
Menampilkan kode ASCII dari NIM yang diinputkan oleh user sebanyak 9 digit. Dari kode ASCII tersebut diterjemahkan dalam satuan byte menjadi hexadesimal, kemudian dari hasil hexadesimal dinegasikan masih tetap dalam satuan byte.

3. Kode program

     #include <iostream>
#include <iomanip.h>
using namespace std;

int main()
{
    cout <<"Masukkan NIM Anda (9 digit) : ";
    char x[9];
    cin >> x[0];
    cin >> x[1];
    cin >> x[2];
    cin >> x[3];
    cin >> x[4];
    cin >> x[5];
    cin >> x[6];
    cin >> x[7];
    cin >> x[8];

    cout << "Kode ASCII NIM : " << x[0]<< x[1] << x[2] << x[3] << x[4] << x[5] << x[6] << x[7] << x[8] <<" adalah : ";

    cout << "0x" << hex << int (x[0]) << ' ';
    cout << "0x" << hex << int (x[1]) << ' ';
    cout << "0x" << hex << int (x[2]) << ' ';
    cout << "0x" << hex << int (x[3]) << ' ';
    cout << "0x" << hex << int (x[4]) << ' ';
    cout << "0x" << hex << int (x[5]) << ' ';
    cout << "0x" << hex << int (x[6]) << ' ';
    cout << "0x" << hex << int (x[7]) << ' ';
    cout << "0x" << hex << int (x[8]) << endl;

    cout << "Jumlah byte dari NIM " << x[0]<< x[1] << x[2] << x[3] << x[4] << x[5] << x[6] << x[7] << x[8]<< " adalah : 0x" << ((x[0]) + (x[1]) + (x[2]) + (x[3]) + (x[4]) + (x[5]) + (x[6]) + (x[7]) + (x[8])&0xff) << endl;

    cout << "Checksum dari NIM " << x[0]<< x[1] << x[2] << x[3] << x[4] << x[5] << x[6] << x[7] << x[8] << " adalah : 0x" << ((~((x[0]) + (x[1]) + (x[2]) + (x[3]) + (x[4]) + (x[5]) + (x[6]) + (x[7]) + (x[8]))+1)&0xff)<< endl;
}


4. Kesimpulan
Menggunakan  metode checksum untuk mengetahui kesalahan yang terjadi pada transmisi data. Kelebihan dari metode ini adalah mudah diimplementasi kan dalam software dan memiliki kehandalan sistem yang cukup tinggi yaitu sekitar  90%. Sedangkan kekurangannya adalah pendeteksian kesalahan yang masih lemah ( walaupun lebih handal dari parity check) karena tidak mendeteksi unit data (bytes atau words) yang urutannya berantakan, tidak dapat mendeteksi unit data mana yang mengalami kesalahan.

5.Saran
Dilihat dari kekurangannya pendeteksian kesalahan yang masih lemah maka kita perlu melengkapi sistem dengan cara menambahkan perhitungan yang lebih kompleks agar hasilnya lebih valid.




DAFTAR PUSTAKA

URL :
1.      http://tralala-raragel.blogspot.com/2012/02/pengertian-error-detection-and_29.html?m=1
2.      http://anjriterz.blogspot.com/2010/01/error-detection-and-error-correction.html?m=1
3.      http://informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/2009-2010/Makalah2/Makalah2_IF3058_2010_044.pdf
4.      http://support.prtracker.com/pr1023.html
5.      http://mahiralkhoir.wordpress.com/2009/12/20/cheksum-file-di-windows/
6.      http://www.techterms.com/definition/checksum
7.      http://sma5bpp.blogspot.com/2011/01/checksum.html
8.      http://suparty10018036.blogspot.com/2012/03/tugas-matkul-ttg-error-detection-and.html
9.      http://ilmukomunikasidata.wordpress.com/
10.  http://elbalintang.blogspot.com/2011/03/codeblock-1005.html
11.  http://www.ideelok.com/ilmu-komputer/pengenalan-bahasa-pemrograman-c
12.  http://kingsscorpion.blogspot.com/

4 komentar: