TUGAS KOMUNIKASI DATA
A. Tujuan
1.
Mengetahui
proses pengiriman data sampai data diterima kembali
2.
Mengetahui
proses penambahan error control
B. Dasar Teori
Komunikasi
data merupakan proses pengiriman dan penerimaan data/informasi dari dua
atau lebih device (alat,seperti komputer/laptop/printer/dan alat komunikasi
lain)yang terhubung dalam sebuah jaringan, baik lokal maupun yang luas,
seperti internet.
Namun
dalam proses pengiriman dan penerimaan informasi tersebut bisa saja terjadi
kesalahan, yaitu data yang diterima tidak sesuai dengan yang dikirim, ataupun
gagalnya pengiriman informasi atau data. Sehingga dibutuhkannya Error Detection
and Error Corection.
Teknik
Error Detection
Ada beberapa
cara terkait dengan bagaimanakah teknik Error Detection ini bekerja, yaitu :
Parity
check, adalah menambahkan sebuah bit pada setiap pengiriman sejumlah bit,
sehingga jumlah bit bernilai 1 selalu genap atau ganjil. Parity bit tidak dapat
mendeteksi kesalahan dalam jumlah yang genap.
CRC
(cyclic redundancy chek), adalah method 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).
Terdapat 2 macam cara penambahan bit
parity yaitu :
·
Pariti
ganjil (odd parity) yaitu Bit pariti yang ditambahkan supaya banyaknya bit “1”
tiap karakter atau data ganjil.
·
Pariti
genap (even parity) yaitu Bit parity yang ditambahkan supaya banyaknya bit “1”
tiap karakter atau data genap.
Teknik Error Correction
Bila
dijumpai kesalahan pada data yang telah diterima, maka perlu diadakan tindakan
perbaikan agar kesalahan tidak memberikan dampak yang signifikan. Metode
koreksi ini diantaranya adalah :
Kirim
ulang, cara ini merupakan cara yang paling simpel, yaitu bila komputer penerima
menemukan kesalahan pada data yang diterima, maka selanjutnya meminta komputer
pengirim untuk mengirim mengulangi pengiriman data.
Mengirim
data koreksi, data yang dikirim harus ditambah dengan kode tertentu dan data
duplikat. Bila penerima menjumpai kesalahan pada data yang diterima, maka
perbaikan dilakukan dengan mengganti bagian yang rusak dengan data duplikat,
tetapi cara ini jarang dilakukan.
Subtitusi
simbol, Bila ada data yang rusak maka komputer penerima mengganti bagian itu
dengan karakter lain, sepertu karakter SUB yang berupa tanda tanya terbalik.
Jika pemakai menjumpai karakter ini (pada program word-prossessor), maka
berarti data yang diterima telah mengalami kerusakan, selanjutnya perbaikan
dilakukan sendiri.
C. Penjelasan Program
import java.util.Scanner;
class konversi {
//
deklarasi variabel-variabel yang digunakan
int ascii;
int bcs = 0;
String data1 = "";
String data2 = "";
String BCS = "";
String temp = "";
String binary;
// method ini untuk mengubah tiap karakter dari teks
yang di inputkan kedalam ASCII
public int charKeAscii(char teks) {
ascii = (int) teks;
return ascii;
}
//
method untuk mengubah dari ASCII ke biner
public String asciiKeBiner() {
String biner;
// jika ascii lebih dari ato sama dengan 128, maka data
sudah mencapa 8 bit, data ditulis seperti apa adanya.
if (ascii >= 128){
biner = Integer.toBinaryString(ascii);
data1 = data1+biner;
return biner;
}
// jika ascii lebih dari ato sama dengan 64, maka data
baru berupa 7 bit, data ditulis ditambah dengan 0 supaya menjadi 8 bit.
else if (ascii >= 64) {
biner = Integer.toBinaryString(ascii);
binary = "0" + biner;
data1 = data1+binary;
return binary;
}
// jika ascii lebih dari ato sama dengan 32, maka data baru
berupa 6 bit, data ditulis ditambah dengan 00 supaya menjadi 8 bit.
else if (ascii >= 32) {
biner = Integer.toBinaryString(ascii);
binary = "00" + biner;
data1 = data1+binary;
return binary;
}
// jika ascii lebih dari ato sama dengan 16, maka data baru
berupa 5 bit, data ditulis ditambah dengan 000 supaya menjadi 8 bit.
else if (ascii >= 16) {
biner = Integer.toBinaryString(ascii);
binary= "000" + biner;
data1 = data1+binary;
return binary;
}
// jika ascii lebih dari ato sama dengan 8, maka data baru
berupa 4 bit, data ditulis ditambah dengan 0000 supaya menjadi 8 bit.
else if (ascii >= 8) {
biner = Integer.toBinaryString(ascii);
binary = "0000" + biner;
data1 = data1+binary;
return binary;
}
// jika ascii lebih dari ato sama dengan 4, maka data baru
berupa 3 bit, data ditulis ditambah dengan 00000 supaya menjadi 8 bit.
else if (ascii >= 4) {
biner = Integer.toBinaryString(ascii);
binary = "00000" + biner;
data1 = data1+binary;
return binary;
}
//
jika ascii lebih dari ato sama dengan 2, maka data baru berupa 2 bit, data
ditulis ditambah dengan 000000 supaya menjadi 8 bit.
else if (ascii >= 2) {
biner = Integer.toBinaryString(ascii);
binary = "000000" + biner;
data1 = data1+binary;
return binary;
}
//
selain itu data baru berupa 1 bit, data ditulis ditambah dengan 0000000 supaya
menjadi 8 bit.
else {
biner = Integer.toBinaryString(ascii);
binary = "0000000" + biner;
data1 = data1+binary;
return binary;
// Setiap hasil konversi biner akan disimpan dan ditambahkan
dengan data sebelumnya pada variabel data1. Setelah semua karakter
dirubah ke biner dan disimpan pada variabel data1 maka deretan
biner panjang ini yang akan dikirimkan ke penerima.
}
}
//
method untuk mencari error detection
public int error() {
bcs = (ascii ^ bcs);
return bcs;
}
Nilai BCS ditentukan dengan cara nilai ascii karakter
pertama di X-OR dengan 0 dan hasilnya di X-OR lagi dengan nilai ascii karakter
selanjutnya, begitu seterusnya. Nilaii BCS terakhir akan dikirimkan bersama
dengan data ke penerima.
//
method untuk merubah data biner ke string
public String binerKeString() {
String bnr;
error();
//
method untuk mencari besar BCS
persyaratan
sama seperti method asciiKeBiner, supaya BCS disimpan dalam 8 bit.
if (bcs >= 128){
bnr = Integer.toBinaryString(bcs);
BCS = bnr;
return (bnr);
}
else if (bcs >= 64) {
bnr = Integer.toBinaryString(bcs);
binary = "0" + bnr;
BCS = binary;
return (binary);
}
else if (bcs >= 32){
bnr = Integer.toBinaryString(bcs);
binary = "00" + bnr;
BCS = binary;
return (binary);
}
else if (bcs >= 16){
bnr = Integer.toBinaryString(bcs);
binary = "000" + bnr;
BCS = binary;
return (binary);
}
else if (bcs >= 8){
bnr = Integer.toBinaryString(bcs);
binary = "0000" + bnr;
BCS = binary;
return (binary);
}
else if (bcs >= 4){
bnr = Integer.toBinaryString(bcs);
binary = "00000" + bnr;
BCS = binary;
return (binary);
}
else if (bcs >= 2){
bnr = Integer.toBinaryString(bcs);
binary = "000000" + bnr;
BCS = binary;
return (binary);
}
else {
bnr = Integer.toBinaryString(bcs);
binary = "0000000" + bnr;
BCS = binary;
return (binary);
BCS
disimpan dalam bentuk biner.
}
}
// method untuk memproses data yang diterima dari bentuk string diuraikan
tiap character kemudian disimpan ke dalam array dt. Jika semua
character sebanyak panjang array sudah diproses kedalam BCS, maka character
akan diubah kembali ke dalam bentuk string.
public
void stringToString() {
char[]
dt = data1.toCharArray();
int count = 0;
for(int
i=0; i<dt.length+1; i++) {
if
(i<dt.length) {
if
(count!=8) {
String
s1 = Character.toString(dt[i]);
temp
= temp + s1;
count++;
}
else {
System.out.printf("%8s
| %5s | %9s | %16s |", temp, stringToAscii(), asciiToChar(),
binerKeString());
System.out.println();
temp
= "";
count
= 1;
String
s1 = Character.toString(dt[i]);
temp
= temp + s1;
}
}
}
}
//
method untuk mengubah data ke bentuk ASCII kembali
public int stringToAscii() {
ascii = Integer.parseInt(temp,2);
return ascii;
}
//
ASCII dikembalikan ke bentuk character
public String asciiToChar() {
char kar = (char) stringToAscii();
String Kar = Character.toString(kar);
data2 = data2 + Kar;
return Kar;
}
}
Main class
public class UAS_11520244026
{
public static void main( String[] args ) {
Scanner baca = new Scanner(System.in);
konversi br = new konversi();
String teks;
// menginputkan teks
System.out.print("Input Teks : ");
teks = baca.nextLine();
System.out.println();
// teks yang masuk di uraikan tiap character dan disimpan ke dalam array
char[] data = teks.toCharArray();
// menampilkan tabel proses pengiriman data
System.out.println(":: Pengirim :: ");
System.out.println("------------------------------------------------.");
System.out.println("Character | ASCII | Binary |
Block Check Sum|");
System.out.print("------------------------------------------------'");
for (int i=0; i<data.length; i++) {
System.out.println();
System.out.printf("%9s | %5s | %10s | %14s
|",data[i],br.charKeAscii(data[i]),br.asciiKeBiner(),br.binerKeString());
}
System.out.println(" -->> Transmitted Sum");
System.out.println("------------------------------------------------'");
// menampilkan data dikirim dan BCS
System.out.println("Data Dikirim\t: "+br.data1);
System.out.println("BCS\t\t: "+br.BCS);
// menampilkan tabel penerimaan data
System.out.println("\n:: Penerima ::");
System.out.println("------------------------------------------------.");
System.out.println(" Binary | ASCII | Character | Block Check
Sum |");
System.out.println("------------------------------------------------'");
br.stringToString();
System.out.printf("%8s | %5s | %9s | %16s
|",br.temp,br.stringToAscii(),br.asciiToChar(),br.binerKeString());
// melihat apakah data benar atau salah dari
hasil akhir BCS, jika hasilnya 00000000 berarti benar, selain itu
salah
if (br.binary.equals("00000000")) {
System.out.println(" -->> Data Benar ");
} else {
System.out.println(" -->> Data Salah ");
}
System.out.println("------------------------------------------------'");
//
menampilkan data diterima berupa teks
System.out.println("Data Diterima : "+br.data2);
}
}
D. Kesimpulan
Proses
pengiriman data dalam komunikasi data dimulai dari informasi masuk berupa teks
yang tiap karakternya diubah kedalam bentuk ASCII kemudian dikirim dalam
deretan bit beserta Block Check Sum kemudian data diterima dalam bentuk deretan
bit yang kemudian dikonversi kedalam bentuk teks lagi.