utama dalam komunikasi data ialah realibility atau keandalan. Sinyal yang dikirim melalui medium tertentu dapat mengalami pelemahan, distorsi, keterb atasan bandwidth Data yang dikirim dapat menjadi rusak, hilang, berubah Tugas data link layer adalah menangani kerusakan dan hilangnya data antar 2 titik komunikasi yang terhu bung oleh satu medium transmisi fisik
mengirim data ke B. Jalur antara A dan B tidak reliable, sehingga mungkin ada data yang rusak/hilang. Bagaimana menjamin transmisi data A ke B tetap reliable?
tidak mengirim data yang panjang ke B. Data dibagi menjadi frame, sehingga kerusakan sebuah frame tidak merusak keseluruhan data. Bagaimana B dapat mendeteksi bahwa frame yang dikirim A mengalami kerusakan? A menambahkan error check bits ke frame, sehingga B dapat memeriksa frame dan menentukan apakah telah terjadi perubahan
Bagaimana
A mengetahui data yang dikirimnya telah diterima B? B dapat mengirimkan ack/pemberitahuan jika data diterima dengan benar, dan nak/pemberitahuan data salah jika data rusak A dapat mengirimkan ulang frame yang rusak
Mengapa
Bagian alamat/id/header mengalami kerusakan, sehingga frame tidak dikenali Temporer disconnection
Apa
B tidak mengetahui ada pengiriman dari A, sehingga tentunya juga tidak mengirimkan ack ke A. B mengirimkan ack namun hilang di jalan.
harus memiliki timer, yang akan mengirim ulang jika tidak menerima kabar dari B Jangka waktu timeout harus diatur.
Jika timeout terlalu cepat, A akan mengirimkan ulang sebelum ack dari B tiba. Jika timeout terlalu lama, A akan menunggu terlalu lama jika ada frame yg hilang
A mengirim frame 1 A mengalami timeout, dan mengirimkan ulang frame 1 A menerima ack, melanjutkan mengirim frame 2 A menerima ack kedua untuk frame 1, namun dianggap sebagai ack untuk frame 2 (error) Untuk mencegah hal tersebut maka A harus memberikan frame number, sehingga B dapat memberikan ack spesifik untuk frame number tertentu
layer: mengkodekan data menjadi sinyal yang dikirim melalui medium transmisi Data Link layer berfungsi menangani kesalahan transmisi, serta memberikan layanan ke network layer. Untuk itu beberapa hal yang dilakukan oleh Data Link Layer adalah:
Framing Flow control Error control, error detection, error correction
link layer dapat dirancang untuk memberikan salah satu dari jenis layanan (service) berikut:
Sesuai pada kondisi dengan error rate yang sangat rendah, juga pada aplikasi real time seperti voice. Sesuai pada kondisi channel yang kurang handal seperti wireless. Menjamin pengiriman data secara handal
Framing
DL
melakukan framing untuk: Mengurangi kemungkinan error Menyesuaikan dengan kapasitas buffer penerima yang terbatas
Framing
Framing
Teknik
framing: Character count Flag byte byte stuffing Flag bits bit stuffing
Setiap frame diawali dengan field yang menyatakan panjang frame Jika field ini rusak, maka frame tidak dapat dikenali lagi
dan akhir frame ditandai dengan byte(s) khusus Byte penanda dapat merupakan simbol yang sama atau berbeda Masalah: kode byte(s) yang digunakan dapat muncul di dalam data yang terkirim, sehingga dapat mengakibatkan kesalahan penentuan frame Solusi: byte stuffing, mengganti byte serupa pada data dengan simbol lain
(a) A frame delimited by flag bytes. (b) Four examples of byte sequences before and after stuffing.
dengan flag bytes, namun menggunakan bit Lebih cocok untuk data biner
Pada
pengirim: setiap muncul 5 bit 1 berurutan, tambahkan bit 0 Pada penerima: jika menerima 5 bit 1 berurutan, maka:
Jika bit berikutnya 0: hapus Jika bit berikutnya: 10: end-of-frame Jika bit berikutnya: 11: error
Bit stuffing
after
(a) The original data. (b) The data as they appear on the line. (c) The data as they are stored in receivers memory destuffing.
Flow control
Mengendalikan
aliran transmisi data, sehingga pengirim tidak membanjiri penerima Dapat dilakukan pada layer data link maupun layer di atasnya
Stop
mengirim
sebuah frame dan menunggu konfirmasi penerima (ACK) sebelum mengirimkan frame berikutnya
transmission delay/latency/propagation (tprop): waktu yang diperlukan sebuah bit untuk mencapai tujuan
kanal:
latency jauh lebih besar dari transmission time, maka utilisasinya akan sangat rendah. Contoh:
Pada link antara stasiun bumi dan satelit dengan jarak 36000 km dengan data rate 1 Mbps. t untuk frame berukuran 8000 bit : 8000/106 = trans
U = 8 / (8 + 2*120) = 0,032
pengirim dapat mengirim hingga w (ukuran window) buah frame tanpa harus menerima konfirmasi terlebih dahulu penerima harus memiliki buffer yang mampu menampung n buah frame frame memiliki nomor identitas (sequence number) ack menyatakan frame terakhir yang diterima sesuai urutan
kanal:
jika w x t trans > 2 x tprop, maka dapat dicapai utilisasi 100% (pengirim dapat melakukan pengiriman frame secara kontinu)
pengirim:
Setiap mengirimkan frame baru, batas atas akan bergeser. Setiap menerima ack, batas bawah akan digeser. Pada unreliable link, frame-frame ini harus disimpan pada buffer pengirim
Window
penerima: menyatakan frame yang dapat diterima. Setiap menerima frame pada batas bawah, window akan bergeser
Error Control
Konfirmasi/ack
untuk flow control digunakan pula untuk error control Positive ack berarti data telah diterima dengan benar, negative ack berarti frame diterima rusak. Pengirim menggunakan timeout untuk pengiriman ulang frame yg belum mendapat ack, sehingga pengiriman ulang dilakukan secara otomatis, disebut sebagai protokol ARQ (automatic repeat request)
penanganan error transmisi dilakukan pada data link layer. Error control dapat pula dilakukan pada layer lain (biasanya higher layer) Error dapat dideteksi dan dikoreksi dengan menggunakan data tambahan / redundant pada setiap pengiriman data
error:
Single
bit error: hanya sebuah bit yang berubah. Disebabkan oleh white noise Burst error: sederetan bit-bit mengalami error. Disebabkan oleh impulse noise Makin tinggi data rate, makin besar efeknya
Error
correcting codes memerlukan data redundant lebih besar dibandingkan den gan error detecting codes
sebuah bit pada setiap pengiriman sejumlah bit, sehingga jumlah bit bernilai 1 selalu genap/ganjil. Parity bit dapat mendeteksi kesalahan 1 bit atau kesalahan bit dalam jumlah ganjil, namun tidak dapat mendeteksi kesalahan dalam jumlah genap
Parity Checking
Single Bit Parity:
Detect single bit errors
redundancy check (CRC) adalah method yang umum digunakan untuk mendeteksi error CRC beroperasi pada sebuah frame/ block. Setiap block data (berukuran m bit) yang akan dikirim akan terlebih dahulu dihitung CRC checksumnya (berukuran r bit). Kemudian data + check sumnya akan dikirim sebagai frame (dengan ukuran m+r bit).
sisi penerima, CRC checksum akan dihitung kembali berdasarkan pada frame yang diterima, dan dibandingkan dengan checksum yang dikirimkan. Jika terdapat perbedaan, berarti frame telah rusak. CRC menggunakan prinsip modulo bilangan.
Modulo arithmetic
CRC
Contoh: Data berukuran m bit
Bagi bilangan ini dengan generator Sisanya adalah checksum (11) Tambahkan checksum ke data asal:
100111
CRC
Data dan checksum dikirimkan. Pada sisi penerima, data dan checksum yang diterima dibagi dengan generator. Jika sisanya 0, berarti tidak terjadi kesalahan Jika sisanya bukan 0, berarti terjadi kesalahan
1001 110101000 1001 1000 1001 0011 0000 0110 0000 1100 1001 1010 1001 011
T=110101 011
CRC
Cara
lain mengamati proses CRC adalah dengan menyatakan seluruh nilai sebagai polynomial dalam suatu model variabel X, dengan koefisien-koefisien biner. Contoh:
M=110011
CRC
Empat
Hamming Code
Hamming
code dapat digunakan untuk melakukan error correction. Codeword (berukuran n-bit) merupakan gabungan data berukuran m-bit dan redundant check bits berukuran rbit, (n=m+r). Hamming distance:Jumlah bit yang berbeda antara dua buah codeword:
1110 dan 1111 memiliki 1 bit yang berbeda: d=1 1010 dan 1100 memiliki 2 bit yang berbeda: d=2
Hamming Distance
Jika setiap kode yang valid memiliki perbedaan minimum h bit, maka setiap kesalahan yang < h bit dapat dideteksi Kode yang error dapat diperbaiki jika ia memiliki jumlah perbedaan yang lebih sedikit ke kode valid tertentu Untuk memperbaiki d bit error, diperlukan jarak minimum antar kode valid 2d+1
Hamming Code
Cara pengisian bit tambahan pada bit-bit informasi x
Untuk bit data 4-bit, bit-bit data terletak pada posisi 3, 5, 6 dan 7 Bit pengisi terletak pada posisi 1, 2, 4 (2K) K = jumlah bit data -1
Hamming Code
Jumlah bit informasi = (n jumlah bit cek) Bit pengisi / cek bit informasi
Hamming distance
Hamming Code
Hamming Code
Menangani single error code Cara membuat codenya : Posisi parity bit ada di bit sesuai 2 n (1,2,4,8,16,32.) Selain posisi tersebut akan dipakai sebagai data (3,5,6,7) Untuk mencari besar parity (0 atau 1) dapat dilakukan sbb:
Posisi 1 : bergantian ada 1bit dan tidak ada 1bit : ada 1bit, gak ada 1 bit,ada 1bit.. Posisi 2 : bergantian ada 2 bit dan tidak ada 2 bit : ada 2bit, gak ada 2 bit,ada 2bit.. Posisi 4 : bergantian ada 4 bit dan tidak ada 4 bit : ada 4 bit, gak ada 4 bit,ada 4 bit.. Dan seterusnya untuk 8, 16,32,64. Bit Paritas ditentukan sebagai 1 bila jumlah bit 1nya adalah ganjil. Bit Paritas ditentukan sebagai 0 bila jumlah bit 1-nya adalah genap
Hamming Code
Untuk informasi n-bit, nilai bit pengisi / cek adalah:
Hamming Code
Contoh: Bagaimana bentuk data yang ditransmisikan dengan kode Hamming, jika diketahui bit data = 1010 ? Jawab: a1 = a3 + a5 + a7 a1 = 1 + 0 + 0 = 1 a2 = a3 + a6 + a7 a2 = 1 + 1 + 0 = 0 a4 = a5 + a6 + a7 a3 = 0 + 1 + 0 = 1 Sehingga bentuk data yang ditransmisikan menjadi: 1011010
Contoh:
Suatu data : 1 0 0 1 1 0 1 0 Membuat data word nya: - - 1 0 0 1 1 0 1 0 ( - paritas 15) Carilah paritas-nya : Posisi 1 : ? 1 0 0 1 1 0 1 0 Jumlah bit 1 genap paritas : 0 Posisi 2 : 0 ? 1 0 0 1 1 0 1 0 Jumlah bit 1 ganjil paritas : 1 Posisi 4 : 0 1 1 ? 0 0 1 1 0 1 0 Jumlah bit 1 ganjil paritas : 1
Posisi 8 : 0 1 1 1 0 0 1 ? 1 0 1 0 Jumlah bit 1 genap paritas : 0 Jadi Code-word-nya : 011100101010 Dicoba :cari kesalahan pada bit paritas-nya 010101100011 111110001100 000010001010