Sebagai akibat proses-proses fisika yang menyebabkannya terjadi, error pada beberapa media (misalnya, radio) cenderung timbul secara meletup (burst) bukannya satu demi satu. Error yang meletup seperti itu memiliki baik keuntungan maupun kerugian pada error bit tunggal yang terisolasi. Sisi keuntungannya, data komputer selalu dikirim dalam bentuk blok-blok bit. Anggap ukuran blok sama dengan 1000 bit, dan laju error adalah 0,001 per bit. Bila error-errornya independen, maka sebagian besar blok akan mengandung error. Bila error terjadi dengan letupan 100, maka hanya satu atau dua blok dalam 100 blok yang akan terpengaruh, secara rata-ratanya. Kerugian error letupan adalah bahwa error seperti itu lebih sulit untuk dideteksi dan dikoreksi dibanding dengan error yang terisolasi.
Kode-kode Pengkoreksian Error
dua strategi dasar yang berkenaan dengan error. Cara pertama adalah dengan melibatkan informasi redundan secukupnya bersama-sama dengan setiap blok data yang dikirimkan untuk memungkinkan penerima menarik kesimpulan tentang apa karakter yang ditransmisikan yang seharusnya ada. Cara lainnya adalah dengan hanya melibatkan redundansi secukupnya untuk menarik kesimpulan bahwa suatu error telah terjadi, dan membiarkannya untuk meminta pengiriman ulang.Strategi pertama menggunakan kode-kode pengkoreksian error (error-correcting codes), sedangkan strategi kedua menggunakan kode-kode pendeteksian error (error-detecting codes).
Untuk bisa mengerti tentang penanganan error, yang disebut error itu. Biasanya, sebuah frame terdiri dari m bit data (yaitu pesan) dan r redundan, atau check bits. Ambil panjang total sebesar n (yaitu, n=m+r). Sebuah satuan n-bit yang berisi data dan checkbit sering kali dikaitkan sebagai codeword n-bit.
Ditentukan dua buah codeword: 10001001 dan 10110001. Disini kita dapat menentukan berapa banyak bit yang berkaitan berbeda. Dalam hal ini, terdapat 3 bit yang berlainan. Untuk menentukannya cukup melakukan operasi EXCLUSIVE OR pada kedua codeword, dan menghitung jumlah bit 1 pada hasil operasi. Jumlah posisi bit dimana dua codeword berbeda disebut jarak Hamming (Hamming, 1950). Hal yang perlu diperhatikan adalah bahwa bila dua codeword terpisah dengan jarak Hamming d, maka akan diperlukan error bit tunggal d untuk mengkonversi dari yang satu menjadi yang lainnya.
Pada sebagian besar aplikasi transmisi data, seluruh 2m pesan data merupakan data yang legal. Tetapi sehubungan dengan cara penghitungan check bit, tidak semua 2n digunakan. Bila ditentukan algoritma untuk menghitung check bit, maka akan dimungkinkan untuk membuat daftar lengkap codeword yang legal. Dari daftar ini dapat dicari dua codeword yang jarak Hamming-nya minimum. Jarak ini merupakan jarak Hamming bagi kode yang lengkap.
Sifat-sifat pendeteksian error dan perbaikan error suatu kode tergantung pada jarak Hamming-nya. Untuk mendeteksi d error, anda membutuhkan kode dengan jarak d+1 karena dengan kode seperti itu tidak mungkin bahwa error bit tunggal d dapat mengubah sebuah codeword yang valid menjadi codeword valid lainnya. Ketika penerima melihat codeword yang tidak valid, maka penerima dapat berkata bahwa telah terjadi error pada transmisi. Demikian juga, untuk memperbaiki error d, anda memerlukan kode yang berjarak 2d+1 karena hal itu menyatakan codeword legal dapat terpisah bahkan dengan perubahan d, codeword orisinil akan lebih dekat dibanding codeword lainnya, maka perbaikan error dapat ditentukan secara unik.
Sebagai sebuah contoh sederhana kode pendeteksian error, ambil sebuah kode dimana parity bit tunggal ditambahkan ke data. Parity bit dipilih supaya jumlah bit-bit 1 dalam codeword menjadi genap (atau ganjil). Misalnya, bila 10110101 dikirimkan dalam parity genap dengan menambahkan sebuah bit pada bagian ujungnya, maka data itu menjadi 101101011, sedangkan dengan parity genap 10110001 menjadi 101100010. Sebuah kode dengan parity bit tunggal mempunyai jarak 2, karena sembarang error bit tunggal menghasilkan sebuah codeword dengan parity yang salah. Cara ini dapat digunakan untuk mendeteksi erro-error tunggal.
Sebagai contoh sederhana dari kode perbaikan error, ambil sebuah kode yang hanya memiliki empat buah codeword valid :
0000000000,0000011111,1111100000 dan 1111111111
Kode ini mempunyai jarak 5, yang berarti bahwa code tersebut dapat memperbaiki error ganda. Bila codeword 0000011111 tiba, maka penerima akan tahun bahwa data orisinil seharusnya adalah 0000011111. Akan tetapi bila error tripel mengubah 0000000000 menjadi 0000000111, maka error tidak akan dapat diperbaiki.
Bayangkan bahwa kita akan merancang kode dengan m bit pesan dan r bit check yang akan memungkinkan semua error tunggal bisa diperbaiki. Masing-masing dari 2m pesan yang legal membutuhkan pola bit n+1. Karena 2n.£jumlah total pola bit adalah 2n, kita harus memiliki (n+1)2m
Dengan memakai n = m + r, persyaratan ini menjadi (m + r 2r. Bila m ditentukan, maka ini akan meletakkan batas bawah pada£+ 1) jumlah bit check yang diperlukan untuk mengkoreksi error tunggal.
Dalam kenyataannya, batas bawah teoritis ini dapat diperoleh dengan menggunakan metoda Hamming (1950). Bit-bit codeword dinomori secara berurutan, diawali dengan bit 1 pada sisi paling kiri. Bit bit yang merupakan pangkat 2 (1,2,4,8,16 dan seterusnya) adalah bit check. Sisanya (3,5,6,7,9 dan seterusnya) disisipi dengan m bit data. Setiap bit check memaksa parity sebagian kumpulan bit, termasuk dirinya sendiri, menjadi genap (atau ganjil). Sebuah bit dapat dimasukkan dalam beberapa komputasi parity. Untuk mengetahui bit check dimana bit data pada posisi k berkontribusi, tulis ulang k sebagai jumlahan pangkat 2. Misalnya, 11=1+2+8 dan 29=1+4+8+16. Sebuah bit dicek oleh bit check yang terjadi pada ekspansinya (misalnya, bit 11 dicek oleh bit 1,2 dan 8).
Ketika sebuah codeword tiba, penerima menginisialisasi counter ke nol. Kemudian codeword memeriksa setiap bit check, k (k=1,2,4,8,....) untuk melihat apakah bit check tersebut mempunyai parity yang benar. Bila tidak, codeword akan menambahkan k ke counter. Bila counter sama dengan nol setelah semua bit check diuji (yaitu, bila semua bit checknya benar), codeword akan diterima sebagai valid. Bila counter tidak sama dengan nol, maka pesan mengandung sejumlah bit yang tidak benar. Misalnya bila bit check 1,2, dan 8 mengalami kesalahan (error), maka bit inversinya adalah 11, karena itu hanya satu-satunya yang diperiksa oleh bit 1,2, dan 8. Gambar 12 menggambarkan beberapa karakter ASCII 7-bit yang diencode sebagai codeword 11 bit dengan menggunakan kode Hamming. Perlu diingat bahwa data terdapat pada posisi bit 3,5,6,7,9,10,11.
Kode Hamming hanya bisa memperbaiki error tunggal. Akan tetapi, ada trick yang dapat digunakan untuk memungkinkan kode Hamming dapat memperbaiki error yang meletup. Sejumlah k buah codeword yang berurutan disusun sebagai sebuah matriks, satu codeword per baris. Biasanya, data akan ditransmisikan satu baris codeword sekali, dari kiri ke kanan. Untuk mengkoreksi error yang meletup, data harus ditransmisikan satu kolom sekali, diawali dengan kolom yang paling kiri. Ketika seluruh k bit telah dikirimkan, kolom kedua mulai dikirimkan, dan seterusnya. Pada saat frame tiba pada penerima, matriks direkonstruksi, satu kolom per satuan waktu. Bila suatu error yang meletup terjadi, paling banyak 1 bit pada setiap k codeword akan terpengaruh. Akan tetapi kode Hamming dapat memperbaiki satu error per codeword, sehingga seluruh blok dapat diperbaiki. Metode ini memakai kr bit check untuk membuat km bit data dapat immune terhadap error tunggal yang meletup dengan panjang k atau kurang.
Kode-kode Pendeteksian Kesalahan
Kode pendeteksian error kadang digunakan dalam transmisi data. Misalnya, bila saturan simplex, maka transmisi ulang tidak bisa diminta. Akan tetapi sering kali deteksi error yang diikuti oleh transmisi ulang lebih disenangi. Hal ini disebabkan karena pemakaian transmisi ulang lebih efisien. Sebagai sebuah contoh yang sederhana, ambil sebuah saluran yang errornya terisolasi dan mempunyai laju error 10 –6 per bit.
Anggap ukuran blok sama dengan 1000 bit. Untuk melaksanakan koreksi error blok 1000 bit, diperlukan 10 bit check; satu megabit data akan membutuhkan 10.000 bit check. Untuk mendeteksi sebuah blok dengan error tunggal 1-bit saja, sebuah bit parity per blok akan mencukupi. Sekali setiap 1000 blok dan blok tambahan (1001) akan harus ditransmisikan. Overhead total bagi deteksi error + metoda transmisi ulang adalah hanya 2001 bit per megabit data, dibanding 10.000 bit bagi kode Hamming.
Bila sebuah bit parity tunggal ditambahkan ke sebuah blok dan blok dirusak oleh error letupan yang lama, maka probabilitas error dapat untuk bisa dideteksi adalah hanya 0,5 hal yang sangat sulit untuk bisa diterma. Bit-bit ganjil dapat ditingkatkan cukup banyak dengan mempertimbangkan setiap blok yang akan dikirim sebagai matriks persegi panjang dengan lebar n bit dan tinggi k bit. Bit parity dihitung secara terpisah bagi setiap kolomnya dan ditambahkan ke matriks sebagai baris terakhir. Kemudian matriks ditransmisikan kembali baris per baris. Ketika blok tiba, penerima akan memeriksa semua bit parity, Bila ada bit parity yang salah, penerima meminta agar blok ditransmisi ulang.
Metoda ini dapat mendeteksi sebuah letupan dengan panjang n, karena hanya 1 bit per kolom yang akan diubah. Sebuah letupan dengan panjang n+1 akan lolos tanpa terdeteksi. Akan tetapi bila bit pertama diinversikan, maka bit terakhir juga akan diinversikan, dan semua bit lainnya adalah benar. (Sebuah error letupan tidak berarti bahwa semua bit salah; tetapi mengindikasikan bahwa paling tidak bit pertama dan terakhirnya salah). Bila blok mengalami kerusakan berat akibat terjadinya error letupan yang panjang atau error letupan pendek yang banyak, maka probabilitas bahwa sembarang n kolom akan mempunyai parity yang benar adalah 0,5. Sehingga probabilitas dari blok yang buruk akan bisa diterima adalah 2 –n.
metode lain yangdigunakan: Kode polynomial (dikenal juga sebagai cyclic redundancy code atau kode CRC). Kode polynomial didasarkan pada perlakuan string-string bit sebagai representatsi polynomial dengan memakai hanya koefisien 0 dan 1 saja. Sebuah frame k bit berkaitan dengan daftar koefisien bagi polynomial yang mempunyai k suku, dengan range dari xk-1 sampai x0.
Polynomial seperti itu disebut polynomial yang bertingkat k-1. Bit dengan orde tertinggi (paling kiri) merupakan koefisien dari xk-1; bit berikutnya merupakan koefisien dari xk-2, dan seterusnya. Misalnya 110001 memiliki 6 bit, maka merepresentasikan polynomial bersuku 6 dengan koefisien 1,1,0,0,0 dan 1:x5+x4+x0.
Aritmetika polynomial dikerjakan dengan modulus 2, mengikuti aturan teori aljabar. Tidak ada pengambilan untuk pertambahan dan peminjaman untuk pengurangan. Pertambahan dan pengurangan identik dengan EXCLUSIVE OR, misalnya :
Pembagian juga diselesaikan dengan cara yang sama seperti pada pembagian bilangan biner, kecuali pengurangan dikerjakan berdasarkan modulus 2. Pembagi dikatakan “masuk ke” yang dibagi bila bilangan yang dibagi mempunyai bit sebanyak bilangan pembagi.
Saat metode kode polynomial dipakai, pengirim dan penerima harus setuju terlebih dahulu tentang polynomial generator, G(x). Baik bit orde tinggi maupun bit orde rendah dari generator harus mempunyai harga 1. Untuk menghitung checksum bagi beberapa frame dengan m bit, yang berkaitan dengan polynomial M(x), maka frame harus lebih panjang dari polynomial generator. Hal ini untuk menambahkan checksum keakhir frame sedemikian rupa sehingga polynomial yang direpresentasikan oleh frame berchecksum dapat habis dibagi oleh G(x). Ketika penerima memperoleh frame berchecksum, penerima mencoba membaginya dengan G(x). Bila ternyata terdapat sisa pembagian, maka dianggap telah terjadi error transmisi.
Algoritma untuk perhitungan checksum adalah sebagai berikut :
- Ambil r sebagai pangkat G(x), Tambahkan bit nol r ke bagian orde rendah dari frame, sehingga sekarang berisi m+r bit dan berkaitan dengan polynomial xrM(x).
- Dengan menggunakan modulus 2, bagi string bit yang berkaitan dengan G(x) menjadi string bit yang berhubungan dengan xrM(x).
- Kurangkan sisa (yang selalu bernilai r bit atau kurang) dari string bit yang berkaitan dengan xrM(x) dengan menggunakan pengurangan bermodulus 2. Hasilnya merupakan frame berchecksum yang akan ditransmisikan. Disebut polynomial T(x).
Sekarang kita menganalisis kekuatan metoda ini. Error jenis apa yang akan bisa dideteksi ? Anggap terjadi error pada suatu transmisi, sehingga bukannya string bit untuk T(x) yang tiba, akan tetapi T(x) + E(X). Setiap bit 1 pada E(x) berkaitan dengan bit yang telah diinversikan. Bila terdapat k buah bit 1 pada E(x), maka k buah error bit tunggal telah terjadi. Error tunggal letupan dikarakterisasi oleh sebuah awalan 1, campuran 0 dan 1, dan sebuah akhiran 1, dengan semua bit lainnya adalah 0.
Begitu frame berchecksum diterima, penerima membaginya dengan G(x); yaitu, menghitung [T(x)+E(x)]/G(x). T(x)/G(x) sama dengan 0, maka hasil perhitungannya adalah E(x)/G(x). Error seperti ini dapat terjadi pada polynomial yang mengandung G(x) sebagai faktor yang akan mengalami penyimpangan, seluruh error lainnya akan dapat dideteksi.
Bila terdapat error bit tunggal, E(x)=xi, dimana i menentukan bit mana yang mengalami error. Bila G(x) terdiri dari dua suku atau lebih, maka x tidak pernah dapat habis membagi E(x), sehingga seluruh error dapat dideteksi.
Bila terdapat dua buah error bit-tunggal yang terisolasi, E(x)=xi+xj, dimana i > j. Dapat juga dituliskan sebagai E(x)=xj(xi-j + 1). Bila kita mengasumsikan bahwa G(x) tidak dapat dibagi oleh x, kondisi yang diperlukan untuk dapat mendeteksi semua error adalah bahwa G(x) tidak dapat habis membagi xk+1 untuk sembarang harga k sampai nilai maksimum i-j (yaitu sampai panjang frame maksimum). Terdapat polynomial sederhana atau berorde rendah yang memberikan perlindungan bagi frame-frame yang panjang. Misalnya, x15+x14+1 tidak akan habis membagi xk+1 untuk sembarang harga k yang kurang dari 32.768.
Bila terdapat jumlah bit yang ganjil dalam error, E(x) terdiri dari jumlah suku yang ganjil (misalnya,x5+x2+1, dan bukannya x2+1). Sangat menarik, tidak terdapat polynomial yang bersuku ganjil yang mempunyai x + 1 sebagai faktor dalam sistem modulus 2. Dengan membuat x + 1 sebagai faktor G(x), kita akan mendeteksi semua error yang terdiri dari bilangan ganjil dari bit yang diinversikan.
Untuk mengetahui bahwa polynomial yang bersuku ganjil dapat habis dibagi oleh x+1, anggap bahwa E(x) mempunyai suku ganjil dan dapat habis dibagi oleh x+1. Ubah bentuk E(x) menjadi (x+1)Q(x). Sekarang evaluasi E(1) = (1+1)Q(1). Karena 1+1=0 (modulus 2), maka E(1) harus nol. Bila E(x) mempunyai suku ganjil, pensubtitusian 1 untuk semua harga x akan selalu menghasilkan 1. Jadi tidak ada polynomial bersuku ganjil yang habis dibagi oleh x+1.
Terakhir, dan yang terpenting, kode polynomial dengan r buah check bit akan mendeteksi semua error letupan yang memiliki panjang <=r. Suatu error letupan dengan panjang k dapat dinyatakan oleh xi(xk-1 + .....+1), dimana i menentukan sejauh mana dari sisi ujung kanan frame yang diterima letupan itu ditemui. Bila G(x) mengandung suku x0, maka G(x) tidak akan memiliki xi sebagai faktornya. Sehingga bila tingkat ekspresi yang berada alam tanda kurung kurang dari tingkat G(x), sisa pembagian tidak akan pernah berharga nol.
Bila panjang letupan adalah r+1, maka sisa pembagian oleh G(x) akan nol bila dan hanya bila letupan tersebut identik dengan G(x). Menurut definisi letupan, bit awal dan bit akhir harus 1, sehingga apakah bit itu akan sesuai tergantung pada bit pertengahan r-1. Bila semua kombinasi adalah sama dan sebanding, maka probabilitas frame yang tidak benar yang akan diterima sebagai frame yang valid adalah ½ r-1.
Dapat juga dibuktikan bahwa bila letupan error yang lebih panjang dari bit r+1 terjadi, maka probabilitas frame buruk untuk melintasi tanpat peringatan adalah 1/2r yang menganggap bahwa semua pola bit adalah sama dan sebanding.
Tiga buah polynomial telah menjadi standard internasional:
CRC-12 = X12 + X11 + X3 + X2 + X1 + 1
CRC-16 = X16 + X15 + X2 + 1
CRC-CCITT= X16 + X12 + X5 + 1
Ketiganya mengandung x+1 sebagai faktor prima.CRC-12 digunakan bila panjang karakternya sama dengan 6 bit. Dua polynomial lainnya menggunakan karakter 8 bit. Sebuah checksum 16 bit seperti CRC-16 atau CRC-CCITT, mendeteksi semua error tunggal dan error ganda, semua error dengan jumlah bit ganjil, semua error letupan yang mempunyai panjang 16 atau kurang, 99,997 persen letupan error 17 bit, dan 99,996 letupan 18 bit atau lebih panjang.
Kendali kesalahan
Tujuan dilakukan pengontrolan terhadap error adalah untuk menyampaikan frame-frame tanpa error, dalam urutan yang tepat ke lapisan jaringan. Teknik yang umum digunakan untuk error control berbasis pada dua fungsi, yaitu:
Error detection, biasanya menggunakan teknik CRC (Cyclic Redundancy Check) Automatic Repeat Request (ARQ), ketika error terdeteksi, pengirim meminta mengirim ulang frame yang terjadi kesalahan.
Mekanisme Error control meliputi
- Ack/Nak : Provide sender some feedback about other end
- Time-out: for the case when entire packet or ack is lost
- Sequence numbers: to distinguish retransmissions from originals
Untuk menghindari terjadinya error atau memperbaiki jika terjadi error yang dilakukan adalah melakukan perngiriman message secara berulang, proses ini dilakukan secara otomatis dan dikenal sebagai Automatic Repeat Request (ARQ). Pada proses ARQ dilakukan beberapa langkah di antaranya (1):
Error detection
Acknowledgment
Retransmission after timeout
Ada dua pendekatan untuk deteksi kesalahan :
1. Forward Error Control
Dimana setiap karakter yang ditransmisikan atau frame berisi informasitambahan (redundant) sehingga bila penerima tidak hanya dapat mendeteksi dimana error terjadi, tetapi juga menjelaskan dimana aliran bit yang diterima error.
2. Feedback (backward) Error Control
Dimana setiap karakter atau frame memilki informasi yang cukup untuk memperbolehkan penerima mendeteksi bila menemukan kesalahan tetapi tidak lokasinya. Sebuah transmisi kontro digunakan untuk meminta pengiriman ulang, menyalin informasi yang dikirimkan.
Feedback error control dibagi menjadi 2 bagian, yaitu :
1. Teknik yang digunakan untuk deteksi kesalahan
2. Kontrol algoritma yang telah disediakan untuk mengontrol transmisi ulang.
Metode Deteksi Kesalahan :
1. Echo
Metode sederhana dengan sistem interaktif .
Operator memasukkan data melalui terminal dan mengirimkan ke komputer. Komputer akan menampilkan kembali ke terminal, sehingga dapat memeriksa apakah data yang dikirimkan dengan benar.
2. Error Otomatis
Metode dengan tambahan bit pariti.
Terdapat 2 cara :
a. Pariti Ganjil (Odd Parity) Yaitu bit pariti yang ditambahkan supaya banyaknya bit "1"
tiap karakter atau data ganjil.
b. Pariti Genap (Even Parity) Yaitu bit pariti yang ditambahkan supaya banyaknya bit "1"
tiap karakter atau data genap.
Dengan bit pariti dikenal 3 deteksi kesalahan, yaitu :
a. Vertical Redundancy Check / VRC
Setiap karakter yang dikirimkan (7 bit) diberi 1 bit pariti. Bit pariti ini diperiksa oleh penerima untuk mengetahui apakah karakter yang dikirim benar atau salah. Cara ini hanya dapat melacak 1 bit dan berguna melacak kesalahan yang terjadi pada pengiriman berkecepatan menengah, karena kecepatan tinggi lebih besar kemungkinan terjadi
kesalahan banyak bit.
Kekurangan : bila ada 2 bit yang terganggu ia tidak dapat melacaknya karena paritinya akan benar.
Contoh :
ASCII huruf "A" adalah 41h
100 0001 ASCII 7 bit
1100 0001 ASCII dengan pariti ganjil
0100 0001 ASCII dengan pariti genap
Akibatnya huruf "A" kode ASCII dalam Hex :
- 41 bilamana pariti genapl
- A1 bilamana pariti ganjil
b. Longitudinal Redundancy Check / LRC
LRC untuk data dikirim secara blok. Cara ini seperti VRC hanya saja penambahan bit pariti tidak saja pada akhir karakter tetapi juga pada akhir setiap blok karakter yang dikirimkan.Untuk setiap bit dari seluruh blok karakter ditambahkan 1 bit pariti termasuk juga bit pariti dari masing-masing karakter.Tiap blok mempunyai satu karakter khusus yang disebut Block Check Character (BCC) yang dibentuk dari bit uji. dan dibangkitkan dengan cara sebagai berikut :
"Tiap bit BCC merupakan pariti dari semua bit dari blok yang mempunyai nomor bit yang sama. Jadi bit 1 dari BCC merupakan pariti genap dari semua bit 1 karakter yang ada pada blok tersebut, dan seterusnya"Kerugian : terjadi overhead akibat penambahan bit pariti per 7 bit untuk karakter.
c. Cyclic Redundancy Check / CRC
Digunakan pengiriman berkecepatan tinggi, sehingga perlu rangkaianelektronik yang sukar.
Cara CRC mengatasi masalah overhead dan disebut pengujian berorientasibit, karena dasar pemeriksaan kemungkinan kesalahan adalah bit atau karakter dan menggunakan rumus matematika yang khusus. Satu blok informasi dilihat sebagai sederetan bit yang ditransmisikan. Bit yang ditransmisikan dimasukkan kedalam register geser siklis yang disebut generator CRC. Operasi ini didasarkan atas pembagian deretan bit dengan sebuah fungsi khusus. Hasil bagi pembagian diabaikan. Sisanya disalurkan sebagai BCS (Block Check Sequence).Fungsi khusus tersebut disebut generator polynominal.
3. Framing Check.
Dipakai pada transmisi asinkron dengan adanya bit awal dan akhir. Data berada diantara bit awal dan bit akhir. Dengan memeriksa kedua bit ini dapat diketahui apakah data dapat diterima dengan baik atau tidak. Transmisi asinkron mempunyai bentuk bingkai sesuai dengan ketentuan yang dipergunakan.
Pendekatan yang umum dipakai adalah data link layer memecah aliran bit menjadi frame-frame diskrit dan menghitung checksum setiap framenya. Ketika sebuah frame tiba di tujuan, checksum dihitung kembali. Bila hasil perhitungan ulang checksum tersebut berbeda dengan yang terdapat pada frame, maka data link layer akan mengetahui bahwa telah terjadi error
dan segera akan mengambil langkah tertentu sehubungan dengan adanya error tersebut (misalnya, membuang frame yang buruk dan mengirimkan kembali laporan error).
Salah satu cara untuk melaksanakan pembuatan frame ini adalah dengan caramenyisipakn gap waktu di antara dua buah frame, sangat mirip seperti spasi antara dua buah katan dalam suatu teks. Akan tetapi, jaringan jarang memberikan jaminan tentang pewaktuan. Karena itu, mungkin saja gap ini dibuang, atau diisi oleh gap lainnya selama proses transmisi, karena sangat besar risikonya dalam menghitung pewaktuan untuk menandai awal dan akhir
frame, telah dibuat metode lainnya, yaitu 4 buah metoda :
1. Karakter penghitung
2. Pemberian karakter awak dan akhir, dengan pengisian karakter
3. Pemberian flag awal dan akhir, dengan pengisian bit
4. Pelanggaran pengkodean physical layer.
Metoda framing pertama menggunakan sebuah field pada header untuk menspesifikasikan jumlah karakter di dalam frame. Ketika data link layer pada mesin yang dituju melihat karakter penghitung, maka data link layer akan mengetahui jumlah karakter yang mengikutinya, dan kemudian juga akan mengetahui posisi ujung frame-nya. Masalah yang dijumpai dalama algoritma ini adalah bahwa hitungan dapat dikacaukan oleh error transmisi.
Misal bila hitungan karakter 5 frame menjadi 7, maka tempat yang ditujuakan tidak sinkron dan tidak dapat mengetahui awal frame berikutnya. Bahkan bila cheksum tidak benar sehingga tempat yang dituju mengetahui bahwa frame yang bersangkutan buruk, maka tidak mungkin untuk menentukan awal frame berikutnya. Pengiriman kembali sebuah frame ke sumber untuk meminta pengiriman ulangpun tidak akan menolong, karena tempat yang dituju tidak mengetahui jumlah karakter yang terlewat untuk mendapatkan awal transmisi. Untuk alasan ini, metoda hitungan karakter ini sudah jarang digunakan lagi.
Metode framing yang kedua mengatasi masalah resinkronisasi setelah terjadi suatu error dengan membuat masing-masing frame diawali dengan sederetan karakter DLE STX ASCII dan diakhiri dengan DLE ETX (DLE=Data Link Escape, STX=Start Of Text, ETX=End Of Text). Dalam metoda ini, bila tempat yang dituju kehilangan track batas-batas frame, maka yang perlu dilakukan adalah mencari karakter-karakter DLE STX dan DLE ETX.Masalah serius yang terjadi pada metoda ini adalah ketika data biner, seperti program object, atau bilangan floating point, ditransmisikan.Karakter-karakter DLE STX dan DLE ETX yang terdapat pada data mudah sekali menganggu framing. Satu cara untuk mengatasi masalah ini adalah dengan membuat data link pengirim menyisipkan sebuah karakter DLE ASCII tepat
sebelum karakter DLE "insidentil" pada data. Data link layer pada mesin penerimamembuang DLE sebelum data diberikan ke network layer. Teknik ini disebut character stuffing (pengisian karakter).DLE-DLE pada data selalu digandakan.Kerugian penting dalam memakai metoda framing ini sangat berkaitan erat dengan karakter 8-bit secara umum dan kode karakter ASCII pada khususnya. Dengan berkembangnya jaringan, kerugian dari melekatkan kode karakter dalam mekanisma framing menjadi semakin jelas, sehingga
suatu teknik baru perlu dibuat untuk memungkinkan pemakaian karakter berukuransembarang.Teknik baru memungkinkan frame data berisi sembarang sejumlah bit dan
mengijinkan kode karakter dengan sembarang jumlah bit per karakter. Teknik ini bekerja seperti berikut, setiap frame diawali dan diakhiri oleh pola bit khusus, 01111110 yang disebut flag. Kapanpun data link layer pada pengirim menemukan lima buah flag yang berurutan pada data, maka datalink layer secara otomatis mengisikan sebuah bit 0 ke aliran bit keluar. Pengisian bit ini analog dengan pengisian karakter, dimana sebuah DLE
diisikan ke aliran karakter keluar sebelum DLE pada data.Ketika penerima melihat 5 buah bit 1 masuk yang berurutan, yang diikuti oleh sebuah bit 0, maka penerima secara otomatis mengosongkan (menghapus)bit 0 tersebut. Seperti halnya pengisian karakter transparan sepenuhnya bagi network layer pada kedua buah komputer, demikian pula halnya dengan
pengisian bit. Bila data pengguna berisi pola flag 01111110, maka flag ini akanditransmisikan kembali sebagai 011111010 tapi akan disimpan di memory penerima sebagai 01111110. Dengan pengisian bit, maka batas antara dua frame dapat dikenal jelas oleh pola flag. Jadi bila penerima mengalami kehilangan track frame tertentu, yang perlu dilakukan adalah menyisir input deretan flag, karena flag tersebut hanya mungkin terdapat pada batas frame saja dan tidak pernah berada pada data.
Metode framing terakhir hanya bisa digunakan bagi jaringan yang encoding pada medium fisiknya mengandung beberapa redundansi (pengulangan). Misalnya, sebagian LAN melakukan encode bit 1 data dengan menggunakan 2 bit fisik. Umumnya, bit1 merupakan pasangan tinggi-rendah dan bit 0 adalah pasangan rendah-tinggi. Kombinasi pasangan tinggi-tinggi dan rendah-rendah tidak digunakan bagi data. Proses itu berarti bahwa setiap bit data
memiliki transisi di tengah, yang memudahkan penerima untuk mencari batas bit. Manfaat kode fisik yang invalid merupakan bagian standard LAN 802.2.
Realisasi Generator CRC / Penguji
Data dimasukkan kedalam register geser pada berbagai titik melalui gerbang XOR yang mempunyai hubungan langsung dengan generator polynominal yaitu rumus matematika untuk membagi bit data.Lebih baik dari VRC / LRC, 99% error dapat terdeteksi.