Lapisan taut data
Lapisan Data Link ("data link layer") adalah lapisan kedua dari bawah dalam model OSI, yang dapat melakukan konversi "frame-frame" jaringan yang berisi data yang mendeteksi kesalahan dan pentransmisian ulang terhadap "frame" yang gagal. "MAC address" juga diimplementasikan di dalam lapisan ini. Selain itu, beberapa perangkat seperti "Network Interface Card" (NIC), "switch" layer 2 serta "bridge" jaringan juga beroperasi di sini.
Lapisan "data-link" menawarkan layanan pentransferan data melalui saluran fisik. Pentransferan data tersebut mungkin dapat diandalkan atau tidak: beberapa protokol lapisan "data-link" tidak mengimplementasikan fungsi "Acknowledgment" untuk sebuah "frame" yang sukses diterima, dan beberapa protokol bahkan tidak memiliki fitur pengecekan kesalahan transmisi (dengan menggunakan "checksumming"). Pada kasus-kasus tersebut,
fitur-fitur "acknowledgment" dan pendeteksian kesalahan harus diimplementasikan pada lapisan yang lebih tinggi, seperti halnya protokol Transmission Control Protocol (TCP) (lapisan transport). Tugas utama dari "data link layer" adalah sebagai fasilitas transmisi data mentah dan mentransformasi data tersebut ke saluran yang bebas dari kesalahan transmisi. Sebelum diteruskan ke Network Layer, lapisan "data link" melaksanakan tugas ini dengan
memungkinkan pengirim memecah-mecah data input menjadi sejumlah data "frame" (biasanya berjumlah ratusan atau ribuan "byte"). Kemudian lapisan data link mentransmisikan "frame" tersebut secara berurutan dan memproses "acknowledgement" "frame" yang dikirim kembali oleh penerima. Karena lapisan fisik menerima dan mengirim aliran "bit" tanpa mengindahkan arti atau arsitektur "frame", maka tergantung pada lapisan
"data-link"-lah untuk membuat dan mengenali batas-batas "frame" itu. Hal ini bisa dilakukan dengan cara membubuhkan "bit" khusus ke awal dan akhir "frame". Fungsi dari lapisan "data link" adalah menyediakan layanan bagi lapisan jaringan. Layanannya yang penting adalah pemindahan data dari lapisan jaringan pada "node" sumber ke lapisan jaringan di pada "node" yang dituju. Tugas lapisan "data
link" adalah menstransmisikan bit-bit ke komputer yang dituju, sehingga bit-bit tersebut dapat diserahkan ke lapisan jaringan.
Transmisi aktual yang mengikuti lintasan akan lebih mudah lagi jika dianggap sebagai proses dua lapisan data-link yang berkomunikasi menggunakan protokol "data link" (Gambar 2). Lapisan "data-link" dapat dirancang sehingga mampu menyediakan bermacam-macam layanan. Layanan aktual yang ditawarkan suatu sistem akan berbeda dengan layanan sistem yang lainnya. Tiga layanan yang disediakan adalah sebagai berikut:
Setiap layanan yang diberikan data link layer akan dibahas satu persatu. Layanan jenis ini mempunyai arti dimana "node" sumber mengirimkan sejumlah "frame" ke node lain yang dituju dengan tidak memberikan "acknowledgment" bagi diterimanya "frame"-"frame" tersebut. Tidak ada koneksi yang dibuat baik sebelum atau sesudah dikirimkannya "frame". Bila sebuah "frame" hilang sehubungan dengan
adanya noise, maka tidak ada usaha untuk memperbaiki masalah tersebut di lapisan data-link. Jenis layanan ini cocok bila laju kesalahan ("error rate") sangat rendah, sehingga "recovery" bisa dilakukan oleh lapisan yang lebih tinggi. Sebagian besar teknologi [LAN] menggunakan layanan "unacknowledgment" "connectionless" pada lapisan "data link".
yang dikirimkan ke komputer tujuan telah diterima dengan baik atau tidak. Bila ternyata belum tiba pada interval waktu yang telah ditentukan, maka "frame" akan dikirimkan kembali. Layanan ini akan berguna untuk saluran "unreliable", seperti sistem nirkabel.
Layanan jenis ini merupakan layanan yang paling canggih dari semua layanan yang disediakan oleh lapisan "data-link" bagi lapisan jaringan. Dengan layanan ini, "node" sumber dan "node" tujuan membuat koneksi sebelum memindahkan datanya. Setiap "frame" yang dikirim tentu saja diterima. Selain itu, layanan ini menjamin bahwa setiap "frame" yang diterima benar-benar hanya sekali
dan semua "frame" diterima dalam urutan yang benar. Sebaliknya dengan layanan "connectionless", mungkin saja hilangnya "acknowledgment" akan meyebabkan sebuah "frame" perlu dikirimkan beberapa kali dankan diterima dalam beberapa kali juga. Sedangkan layanan "connection-oriented" menyediakan proses-proses lapisan jaringan dengan aliran "bit" yang bisa diandalkan.
Pada saat layanan "connection oriented" dipakai, pemindahan data mengalami tiga fase. Pada fase pertama koneksi ditentukan dengan membuat kedua "node" menginisialisasi variabel-variabel dan "counter-counter" yang diperlukan untuk mengawasi "frame" yang mana yang diterima dan yang belum diterima. Dalam fase kedua, satu "frame" atau lebih mulai ditransmisikan dari "node" sumber ke
"node" tujuan. Pada fase ketiga, koneksi dilepaskan, pembebasan variabel, "buffer" dan sumber daya yang lain yang dipakai untuk menjaga berlangsungnya koneksi.
Untuk melayani lapisan jaringan, lapisan data-link harus menggunakan layanan yang disediakan oleh lapisan fisik. Apa yang dilakukan lapisan fisik adalah menerima aliran bit-bit mentah dan berusaha untuk mengirimkannya ke tujuan. Aliran bit ini tidak dijamin bebas dari kesalahan. Jumlah bit yang diterima mungkin bisa lebih sedikit, sama atau lebih banyak dari jumlah bit
yang ditransmisikan dan juga bit-bit itu memiliki nilai yang berbeda-beda. Bila diperlukan, lapisan data-link juga dapat diserahi tanggung jawab untuk mendeteksi dan mengoreksi kesalahan yang terjadi.
Pendekatan yang umum dipakai adalah lapisan "data link" memecah aliran bit menjadi frame-frame dan menghitung nilai "checksum" untuk setiap "frame"-nya. Memecah-mecah aliran bit menjadi "frame-frame" lebih sulit dibandingkan dengan apa yang kita kira. Untuk memecah-mecah aliran bit ini, digunakanlah metode-metode khusus. Ada empat buah metode yang dipakai dalam pemecahan bit menjadi "frame", yaitu:
Berikut ini akan disajikan pembahasan mengenai metode-metode ini. Metode ini menggunakan sebuah field pada header untuk menspesifikasi jumlah karakter di dalam frame. Ketika data link layer pada komputer yang dituju melihat karakter penghitung, maka data link layer akan mengetahui jumlah karakter yang mengikutinya dan kemudian juga akan mengetahui posisi ujung framenya. Teknik ini bisa dilihat pada gambar 3 di bawah ini, dimana ada empat buah frame yang masing-masing berukuran 5.5,8 dan 8 karakter.
Masalah yang akan timbul pada aliran karakter ini apabila terjadi error transmisi. Misalnya, bila hitungan karakter 5 pada frame kedua menjadi 7 (Gambar 4), maka tempat yang dituju tidak sinkron dan tidak akan dapat mengetahui awal frame berikutnya. Oleh karena permasalahan ini, metode hitungan karakter sudah jarang dilakukan.
Metode yang kedua ini mengatasi masalah resinkronisasi setelah terjadi suatu error dengan membuat masing-masing frame diawali dengan deretan karakter DLE, STX, ASCII dan diakhiri dengan DLE, ETX. DLE adalah Data Link Escape, STX adalah Start of Text, ETX adalah End of Text. Dalam metode ini, bila tempat yang dituju kehilangan batas-batas frame, maka yang perlu dilakukan adalah mencari karakter-karakter DLE, STX, DLE dan ETX.
Masalah yang akan terjadi pada metode ini adalah ketika data biner ditransmisikan. Karakter-karakter DLE, STX, DLE dan ETX yang terdapat pada data akan mudah sekali mengganggu framing. Salah satu cara untuk mengatasi masalah ini adalah dengan membuat data link layer, yaitu pengirim menyisipkan sebuah karajter DLE ASCII tepat sebeum karakter DLE pada data. Teknik ini disebut character stuffing (pengisian karakter) dan cara pengisiannya dapat dilihat pada gambar 5