1.Parity Check
Pada metode ini, deteksi error dilakukan dengan menambahkan sebuah ‘parity’ bit pada setiap paket data, sehingga dapat dideteksi suatu paket data tersebut valid atau tidak. Metode parity bit ini terbagi menjadi dua jenis yakni:
- even parity
metode ini biasa dipergunakan dalam transmisi data secara asynchronous, pada metode ini sebelum paket data dikirim, setiap paket data di cek apakah jumlah ‘1’ berjumlah ganjil atau genap, jika paket data berjumlah genap maka bit parity akan tetap 0 sedangkan jika jumlah ‘1’ ganjil maka bit parity akan menjadi 1 sehingga jumlah bit menjadi genap. Proses penghitungan ini menggunakan XOR gate. Untuk lebih jelasnya dapat dilihat pada contoh dibawah ini.
Berikut ini adalah contoh pengecekan error pada transmisi menggunakan metode even parity :
A ingin mentransmisikan data :1001
A menghitung, untuk mendapatkan bit parity :1^0^0^1 = 0
A menambahkan bit paritas pada paket data :10010
B menerima data :10010
B menghitung parity :1^0^0^1 = 0
B melaporkan bahwa data yang diterima valid [harapan yang diterima B benar, yakni even parity].
Pada metode ini, deteksi error dilakukan dengan menambahkan sebuah ‘parity’ bit pada setiap paket data, sehingga dapat dideteksi suatu paket data tersebut valid atau tidak. Metode parity bit ini terbagi menjadi dua jenis yakni:
- even parity
metode ini biasa dipergunakan dalam transmisi data secara asynchronous, pada metode ini sebelum paket data dikirim, setiap paket data di cek apakah jumlah ‘1’ berjumlah ganjil atau genap, jika paket data berjumlah genap maka bit parity akan tetap 0 sedangkan jika jumlah ‘1’ ganjil maka bit parity akan menjadi 1 sehingga jumlah bit menjadi genap. Proses penghitungan ini menggunakan XOR gate. Untuk lebih jelasnya dapat dilihat pada contoh dibawah ini.
Berikut ini adalah contoh pengecekan error pada transmisi menggunakan metode even parity :
A ingin mentransmisikan data :1001
A menghitung, untuk mendapatkan bit parity :1^0^0^1 = 0
A menambahkan bit paritas pada paket data :10010
B menerima data :10010
B menghitung parity :1^0^0^1 = 0
B melaporkan bahwa data yang diterima valid [harapan yang diterima B benar, yakni even parity].
A ingin mentransmisikan
data
: 1001
A menghitung, untuk mendapatkan bit parity : 1^0^0^1 = 0
A menambahkan bit paritas pada paket data : 10010
*** TRANSMISSION ERROR ***
B menerima data : 11010
B menghitung parity : 1^1^0^1^0 = 1
B melaporkan adanya error pada transmisi, setelah mendapatkan data yang ditidak sesai harapan yakni even parity
A menghitung, untuk mendapatkan bit parity : 1^0^0^1 = 0
A menambahkan bit paritas pada paket data : 10010
*** TRANSMISSION ERROR ***
B menerima data : 11010
B menghitung parity : 1^1^0^1^0 = 1
B melaporkan adanya error pada transmisi, setelah mendapatkan data yang ditidak sesai harapan yakni even parity
- odd parity
metode ini biasa dipergunakan dalam transmisi data secara synchronous, pada metode ini sebelum paket data dikirim, setiap paket data di cek apakah jumlah ‘1’ berjumlah ganjil atau genap, jika paket data berjumlah genap maka bit parity akan menjadi 1 sehingga jumlah bit ‘1’ menjadi ganjil sedangkan jika jumlah ‘1’ sudah ganjil maka bit parity akan tetap menjadi 0.
Berikut ini adalah contoh pengecekan error pada transmisi menggunakan metode even parity :
A ingin mengirimkan paket data : 1001
A menghitung, untuk mendapatkan bit parity : ~(1^0^0^1) = 1
A menambahkan bit parity : 10011
B menerima data : 10011
B menghitung parity bit : 1^0^0^1^1 = 1
B melaporkan bahwa data yang diterima valid [harapan yang diterima B benar, yakni even parity].
metode ini biasa dipergunakan dalam transmisi data secara synchronous, pada metode ini sebelum paket data dikirim, setiap paket data di cek apakah jumlah ‘1’ berjumlah ganjil atau genap, jika paket data berjumlah genap maka bit parity akan menjadi 1 sehingga jumlah bit ‘1’ menjadi ganjil sedangkan jika jumlah ‘1’ sudah ganjil maka bit parity akan tetap menjadi 0.
Berikut ini adalah contoh pengecekan error pada transmisi menggunakan metode even parity :
A ingin mengirimkan paket data : 1001
A menghitung, untuk mendapatkan bit parity : ~(1^0^0^1) = 1
A menambahkan bit parity : 10011
B menerima data : 10011
B menghitung parity bit : 1^0^0^1^1 = 1
B melaporkan bahwa data yang diterima valid [harapan yang diterima B benar, yakni even parity].
A ingin mengirimkan paket
data
: 1001
A menghitung nilai even parity : 1^0^0^1 = 0
A menambahkan bit parity : 10010
*** TRANSMISSION ERROR ***
B menerima : 10011
B menghitung bit parity : 1^0^0^1^1 = 1
B melaporkan adanya error pada transmisi, setelah mendapatkan data yang ditidak sesai harapan yakni even parity
A menghitung nilai even parity : 1^0^0^1 = 0
A menambahkan bit parity : 10010
*** TRANSMISSION ERROR ***
B menerima : 10011
B menghitung bit parity : 1^0^0^1^1 = 1
B melaporkan adanya error pada transmisi, setelah mendapatkan data yang ditidak sesai harapan yakni even parity
Kelebihan dari metode parity check:
- # Sederhana dalam analisis dan penggunaan pada sistem
- # Mudah direalisasikan dalam bentuk rangkaian/hardware
Kekurangan dari metode parity check:
- # Kurang handal dalam mengatasi deteksi dan perbaikan error.
- # Kemungkinan kesalahan yang terjadi besar, yaitu 50%
- # Hanya dapat mendeteksi error dalam jumlah bit terbatas : 1-3 bit errors.
Berikut ini contoh kesalahan yang
dilakukan oleh metode parity check
A ingin mengirimkan data : 1001
A menghitung nilai paritas genap : 1^0^0^1 = 0
A mengirimkan : 10010
*** TRANSMISSION ERROR ***
B menerima : 11011
B menghitung semua paritas : 1^1^0^1^1 = 0
B melaporkan transmisi data benar, walaupun sebenarnya data terima salah.
A ingin mengirimkan data : 1001
A menghitung nilai paritas genap : 1^0^0^1 = 0
A mengirimkan : 10010
*** TRANSMISSION ERROR ***
B menerima : 11011
B menghitung semua paritas : 1^1^0^1^1 = 0
B melaporkan transmisi data benar, walaupun sebenarnya data terima salah.
2.Checksum
Pada Metode checksum, pengecekan
dilakukan dengan melakukan penjumlahan pada sekumpulan data dan kemudian
mengcomplement jumlah tersebut, kemudian hasil complement tersebut/checksum
ditambahkan pada data sebagai sebuah karakter. Kemudian pada reciever, akan
dihitung ulang checksum-nya dan dilakukan perbandingan nilai/jumlah data yang
dikirimkan dengan checksum. Bila terjadi perbedaan nilai antara kedua nilai
ini, maka terjadi kesalahan/error dalam pengiriman data. Pada dasarnya metode ini
mirip dengan parity check, perbedaannya adalah jumlah bit pada sums lebih besar
dan hasil dari penjumlahan data dengan checksum harus selalu dibuat nol.
Di sisi pengirim:
Di sisi pengirim:
- Unit data dibagi ke dalam k seksi yang masing-masing seksi berisi n-bit data.
- Semua seksi data tersebut ditambahkan menggunakan 1’s complement untuk mendapatkan jumlahnya.
- Jumlah tersebut kemudian dikomplemenkan dan menjadi nilai checksum.
- Checksum dikirim bersama dengan data sebagai unit terakhir dalam paket pengiriman.
Di sisi penerima:
- Unit data yang diterima kembali dibagi ke dalam k seksi yang masing-masing seksi berisi b-bit data.
- Semua seksi unit data tersebut dijumlahkan menggunakan 1’s complement untuk mendapatkan jumlahnya.
- Jumlah tersebut kemudian dikomplemenkan.
- Jika hasilnya adalah nol, maka data diterima; jika tidak, data akan ditolak.
Jadi, secara umum dapat disimpulkan
mengenai Checksum ini adalah sebagai berikut:
Kelebihan dari metode Checksum:
Kelebihan dari metode Checksum:
- Mudah diimplemantasikan dalam software
- Memiliki kehadalan sistem yang cukup tinggi, yaitu sekitar 90%.
Kekurangan dari metode Checksum:
- Kehandalan sistem deteksi error yang masih lemah (walaupun lebih handal dibanding parity check) karena tidak dapat mendeteksi unit data (bytes/words) yang urutannya berantakan, tidak dapat mendeteksi unit data mana yang mengalami kesalahan.
3. CRC – Cyclic Redundancy Check
Cyclic redundancy check (CRC) adalah metode yang umum digunakan untuk mendeteksi error. CRC beroperasi pada sebuah frame/block. Setiap block berukuran m bit yang akan dikirim akan dihitung CRC checksumnya (berukuran r bit), kemudian dikirim bersama2 dengan frame (dengan ukuran m+r bit). Pada sisi penerima, penerima akan menghitung CRC checksum pada frame yang diterima, dan dibandingkan dengan checksum yang diterima, jika berbeda, berarti frame rusak.
Cyclic redundancy check (CRC) adalah metode yang umum digunakan untuk mendeteksi error. CRC beroperasi pada sebuah frame/block. Setiap block berukuran m bit yang akan dikirim akan dihitung CRC checksumnya (berukuran r bit), kemudian dikirim bersama2 dengan frame (dengan ukuran m+r bit). Pada sisi penerima, penerima akan menghitung CRC checksum pada frame yang diterima, dan dibandingkan dengan checksum yang diterima, jika berbeda, berarti frame rusak.
CRC menggunakan prinsip modulo
bilangan. Data dianggap sebagai sebuah bilangan, dan untuk menghitung checksum,
sama dengan menambahkan digit untuk data dengan digit untuk checksum (berisi 0)
kemudian dibagi dengan pembilang tertentu, dan sisa pembagiannya menjadi
checksum untuk data tersebut. Tergantung pemilihan bilangan pembagi, CRC dapat
mendeteksi single-bit error, double bit error, error berjumlah ganjil, burst
error dengan panjang maksimum r. Bilangan pembagi tersebut disebut sebagai
generator (polinomial).
Berikut contoh deskripsi mengenai CRC.
Di sisi pengirim:
# Data memiliki m bit
1001, m = 4
# Generator memiliki panjang r bit
101, r = 3
# Tambahkan r-1 bit 0 ke data:
100100
# Bagi bilangan ini dengan generator, sisanya (11) adalah checksum
# Tambahkan checksum ke data asal: 100111
Berikut contoh deskripsi mengenai CRC.
Di sisi pengirim:
# Data memiliki m bit
1001, m = 4
# Generator memiliki panjang r bit
101, r = 3
# Tambahkan r-1 bit 0 ke data:
100100
# Bagi bilangan ini dengan generator, sisanya (11) adalah checksum
# Tambahkan checksum ke data asal: 100111
Di sisi penerima:
# Bagi data yang diterima dengan generator.
Jika sisanya bukan 0, berarti terjadi kesalahan.
# Jika sisanya 0, berarti tidak terjadi kesalahan,
sesuai dengan kriteria generator yang digunakan.
# Bagi data yang diterima dengan generator.
Jika sisanya bukan 0, berarti terjadi kesalahan.
# Jika sisanya 0, berarti tidak terjadi kesalahan,
sesuai dengan kriteria generator yang digunakan.
Pada CRC ini, generator pembagi data
ini sering disebut generator polinomial karena nilai pembagi ini dapat direpresentasikan
dalam bentuk polinomial peubah banyak, tergantung pada jenis/nilai pembagi yang
digunakan. Gambar berikut menjelaskan konsep tersebut.
Berikut adalah beberapa generator
polinomial yang sering digunakan berdasarkan konvensi internasional.
LRC: X8 + 1
CRC-12: X12 + X11 + X3 + X2 + X + 1
CRC-16: X16 + X15 + X2 + 1
CRC CCITT V41: X16 + X12 + X5 + 1 (digunakan pada HDLC procedure.)
CRC-32 (Ethernet): = X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 + X8 + X7 + X5 + X4 + X2 + X + 1
CRC ARPA: X24 + X23+ X17 + X16 + X15 + X13 + X11 + X10 + X9 + X8 + X5 + X3 + 1
LRC: X8 + 1
CRC-12: X12 + X11 + X3 + X2 + X + 1
CRC-16: X16 + X15 + X2 + 1
CRC CCITT V41: X16 + X12 + X5 + 1 (digunakan pada HDLC procedure.)
CRC-32 (Ethernet): = X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 + X8 + X7 + X5 + X4 + X2 + X + 1
CRC ARPA: X24 + X23+ X17 + X16 + X15 + X13 + X11 + X10 + X9 + X8 + X5 + X3 + 1
Jadi, secara umum dapat disimpulkan
mengenai CRC ini adalah sebagai berikut
Kelebihan dari metode CRC:
Kelebihan dari metode CRC:
- Dapat digunakan dalam pengiriman data berkecepatan tinggi (16-32 bit).
- Memiliki kehadalan sistem yang sangat tinggi, yaitu sekitar 99%.
- Mampu mendeteksi bit error dalam jumlah banyak (burst error) dengan panjang yang kurang dari jumlah redundansi bitnya.
Kekurangan dari metode CRC:
- Realisasi rangkaian/hardware dan software yang paling sulit dibanding parity check dan checksum.
- Analisis dan perhitungan dalam perancangan yang cukup sulit.