EL4120-tugas1-13210140

download EL4120-tugas1-13210140

of 16

Transcript of EL4120-tugas1-13210140

  • 7/24/2019 EL4120-tugas1-13210140

    1/16

    EL4120 Jaringan Komputer

    Tugas 1

    Oleh : Erich Pratama Saputra / 13210140

    Deskripsi Tugas

    Deskripsi tugas terdapat pada lamanhttp://kerja.stei.itb.ac.id/mod/assign/view.php?id=54

    DESIGN :

    A.Hardware

    End-point dari jaringan ini merupakan dua unit komputer masing-masing menggunakan

    sistem operasi Linux Ubuntu 14. Kedua komputer terhubung dengan wireless adapter ke sebuah

    gateway/router dengan jaringan IP 192.168.0.0/24.

    Gateway/Router

    http://kerja.stei.itb.ac.id/mod/assign/view.php?id=54http://kerja.stei.itb.ac.id/mod/assign/view.php?id=54http://kerja.stei.itb.ac.id/mod/assign/view.php?id=54http://kerja.stei.itb.ac.id/mod/assign/view.php?id=54
  • 7/24/2019 EL4120-tugas1-13210140

    2/16

    B. Software

    Source code untuk server dan client terlampir pada bagian akhir laporan. Algoritma dan

    fungsi pada socket-programming sepenuhnya menggunakan interface dari Berkeley Socket

    Interface. Adapun beberapa fungsi atau prosedur ditambahkan agar kedua komputer dapat saling

    mengirim pesan terus menerus serta untuk menampilkan waktu saat pesan terkirim.

    Hasil Percobaan :

    Percobaan 1 : Mengecek network yang dipakai dengan perintah 'ifconfig'

    Komputer 1 :

    Dari gambar di atas terlihat bahwa IP adress endpoint 1 pada interface wlan0 adalah 192.168.0.2.

    MAC address ditunjukkan oleh parameter Hwaddr yaitu 10:fe:ed:18:3a:f6

    Komputer 2 :

  • 7/24/2019 EL4120-tugas1-13210140

    3/16

    Dari gambar di atas terlihat bahwa IP adress endpoint 2 pada interface wlan0 adalah 192.168.0.3.

    MAC address ditunjukkan oleh parameter Hwaddr yaitu 48:5d:60:df:0f:b5.

    Berdasarkan percobaan ini terlihat bahwa endpoint 1 dan enpoint dua berada pada jaringan IP yang

    sama. Percobaan selanjutnya akan menguji konektivitas keduanya.

    Percobaan 2 : Mengecek sambungan antar komputer melalui jaringan dengan software

    'PING'

    Ping merupakan utility software yang digunakan untuk menguji konektivitas pada jaringan IP.

    Perintah ini akan mengembalikan total waktu yang diperlukan untuk mengirim message dari sender

    dan dari receiver kembali ke sender

    Skema 1 : Komputer 1 melakukan PING ke komputer 2

    Skema 2 : Komputer 2 melakukan PING ke komputer 1

  • 7/24/2019 EL4120-tugas1-13210140

    4/16

    Dari kedua hasil percobaan di atas dapat dipastikan bahwa komputer 1 dan komputer 2 terhubung

    melalui jaringan yang telah dibuat.

    Percobaan 3 : Mengirim data antar komputer dengan software UDP client-server

    Pada percobaan ini akan diimplementasikan sebuah software UDP client-server chat. Sebuah

    komputer akan bertindak sebagai sebuah server dan komputer lain bertindak sebagai client. Client

    akan menginisiasi koneksi dengan mengirim data berupa chat (string) dan server akan menerima

    data tersebut dan menampilkannya di layar. Selanjutnya server akan mengirim chat balasan pada

    client yang ditampilkan pada layar client. Protokol Transport layer yang digunakan adalah UDP.

    Software yang dibuat baik pada sisi client maupun server terlampir pada bagian akhir dokumen.Sebagian besar fungsi dan prosedur menggunakan library socket programming (Berkeley Socket

    Interface).

    Skema : Komputer 1 akan bertindak sebagai client dan komputer 2 sebagai server.

    Cl ient sent message :

    Tampilan Terminal Window Pada Komputer 1 (Client)send message

    Server receive message :

    Tampilan Terminal Window Pada Komputer 2 (Server)receive message

  • 7/24/2019 EL4120-tugas1-13210140

    5/16

    Server reply :

    Tampilan Terminal Window Pada Komputer 2 (Server)send reply

    Cli ent receive reply :

    Tampilan Terminal Window Pada Komputer 1 (Client)receive reply

    Dari hasil percobaan tersebut terlihat bahwa kedua endpoint dapat terhubung dan bertukar data pada

    jaringan yang telah dibuat.

    Percobaan 4 : Membuat paket data UDP dengan software Ostinato dan Melakukan

    Penyadapan Paket Ostinato

    Pada percobaan ini akan dibuat paket data dengan software Ostinato. Beberapa parameter paket

    yang dibuat adalah sebagai berikut :

    Protokol : UDP IPV4

    Source MAC : 10:FE:ED:18:3A:F6

    Source IP : 192.168.0.3

    Destination MAC : 48:5D:60:DF:0F:B5

    Destination IP : 192.168.0.2

    Source Port : 5000

    Destination Port : 5001

    Payload Data menggunakan type increment byte.

  • 7/24/2019 EL4120-tugas1-13210140

    6/16

    Setting parameter pada ostinato :

    Pemilihan Protokol

    Pengaturan MAC Address

  • 7/24/2019 EL4120-tugas1-13210140

    7/16

    Pengaturan protokol IPV4

    Isi paket yang telah dibuat

    Setelah dibuat, paket tersebut kemudian dikirim melalui stream. Selanjutnya, paket tersebut akan

    dicapture kembali menggunakan Wireshark untuk dibandingkan.

  • 7/24/2019 EL4120-tugas1-13210140

    8/16

    Hasil Capture Stream dengan Wireshark

    Dari hasil tersebut dapat terlihat bahwa frame yang dicapture sama dengan yang dikirim baik pada

    protokol, source dan dest IP, dan parameter lainnya.

    Percobaan 5 : Melakukan penyadapan paket data 'PING' dengan Wireshark

    Pada percobaan ini komputer 2 (192.168.0.3) akan mengirimkan PING pada komputer 1

    (192.168.0.2). Selanjutnya Wireshark pada komputer 2 digunakan untuk menganalisis paket data

    yang masuk dan keluar. Interface yang dicapture adalah wlan0 karena kedua komputer terhubung

    melalui Wireless LAN.

  • 7/24/2019 EL4120-tugas1-13210140

    9/16

    Hasil Capture Paket pada interface wlan0 komputer 1

    Gambar di atas memperlihatkan paket-paket data yang berhasil dicapture serta isi dari sebuah paket

    data. Sebelum melakukan PING, komputer1 dan komputer2 harus saling mengetahui alamat dan

    MAC address masing-masing. Untuk mengetahui alamat dari sebuah endpoint pada jaringan maka

    digunakan protokol Address Resolution Protocol. Salah satu contoh paket data ARP ini adalah

  • 7/24/2019 EL4120-tugas1-13210140

    10/16

    paket yang ditandai dengan warna kuning dengan info Who has 192.168.0.3? Tell 192.168.0.2.

    Apabila enpoint dengan IP Address tersebut ditemukan maka protokol ARP akan mengembalikan

    MAC Address dari alamat tersebut.

    Selanjutnya, setelah kedua endpoint terhubung dan mengetahui address masing-masing, maka

    komputer 2 (192.168.0.3) melakukan request PING ke komputer 1 (192.168.0.2). Paket data yang

    dikirimkan menggunakan protokol Internet Control Message Protocol ditandai dengan warna merah

    muda. Adapun isi dari paket tersebut antara lain :

    Source Address : 192.168.0.3

    Source MAC Address : 48:5d:60:df:0f:b5

    Destination Address : 192.168.0.2

    Destination MAC Address : 10:fe:ed:18:3a:f6

    Time to live : 64 berupa tenggat waktu alamat tujuan untuk merespon sebelum timeout

    Checksum : unik untuk setiap paket. Untuk memverifikasi data yang dikirim sama dengan

    yang diterima. Correct jika data yang dikirim sama dengan data yang diterima

    Data : terdiri dari 48 bytes dengan isi

    08:09:0a:0b:0c:0d:0e:0f:10:11:12:13:14:15:16:17:18:19:1a:1b:1c:1d:1e:1f:20:21:22:23:24:2

    5:26:27:28:29:2a:2b:2c:2d:2e:2f:30:31:32:33:34:35:36:37

    Response Time : bervariasi. Waktu yang diperlukan paket untuk sampai pada destination

    Setelah menerima request, komputer 1 akan mengirim reply PING kembali ke komputer 2. Isi paket

    datanya mirip dengan paket PING request hanya saja address source dan destination ditukar. Time

    to live tetap sama dan checksum tetap unik untuk setiap paket. Isi data tetap sama.

    Percobaan 6 : Melakukan penyadapan paket data UDP client-server

    Pada percobaan ini akan dilakukan penyadapan paket UDP dari koneksi antara client server dengan

    aplikasi chatting. Skema percobaan sama seperti pada percobaan 3 di mana client memulai koneksidan direply oleh server, dst.

    Untuk keperluan ini maka kedua komputer akan menjalankan wireshark masing-masing untuk

    melihat dan memverifikasi data yang dikirim. Paket yang dikirim menggunakan protokol UDP pada

    layer transport sehingga paket-paket data dapat difilter berdasarkan protokol nya untuk

    memudahkan menganalisa paket.

  • 7/24/2019 EL4120-tugas1-13210140

    11/16

    Hasil Capture Packet Komputer 1 (Client 192.168.0.2)

  • 7/24/2019 EL4120-tugas1-13210140

    12/16

    Gambar di atas merupakan isi dari paket data yang masuk dan keluar melalui interface wlan0 pada

    komputer1. Setelah dibandingkan dengan paket data yang dicapture pada komputer 2 isinya juga

    sama. Paket data tersebut isinya sebagian besar mirip dengan hasil percobaan sebelumnya yakni

    header Ethernet dan header IPv4. Karena program chat menggunakan protokol Udp maka terdapat

    juga header UDP yang berisi source dan destination port. Selain itu pada header ini juga terdapat

    checksum 2 bytes yang unik untuk setiap paket namun tidak divalidasi. Terakhir merupakan isi dari

    pesan yang ukurannya tergantung dari seberapa besar ukuran character/string yang diketikkan. Isi

    pesan dapat terlihat dalam format ASCII pada jendela packet byte di bagian bawah.

    Berdasarkan hasil percobaan-percobaan di atas, wireshark merupakan tools yang dapat digunakan

    untuk menganalisis paket data yang masuk dan keluar pada sebuah interface. Paket-paket data

    tersebut tidak hanya berisi isi pesan tetapi juga berisi header dari protokol-protokol yang digunakan

    misalnya ethernet, IPv4, UDP, dan lain-lain.

  • 7/24/2019 EL4120-tugas1-13210140

    13/16

    Lampiran

    Source Code Clientchatudp :

    #include #include #include #include #include #include

    #define MAXBUF 1024

    int main(int argc, char* argv[]){

    time_t rawtime;struct tm * timeinfo;int udpSocket;int returnStatus;int addrlen;struct sockaddr_in udpClient, udpServer;

    char buf[MAXBUF];char mymessage[MAXBUF];

    if (argc < 3){

    fprintf(stderr, "Usage: %s \n", argv[0]);exit(1);

    }

    /* create a socket */udpSocket = socket(AF_INET, SOCK_DGRAM, 0); //Sock_Dgram digunakan untuk UDPif (udpSocket == -1){

    fprintf(stderr, "Could not create a socket!\n");exit(1);

    }else {

    printf("Socket created.\n");}

    /* Address untuk Client *//* INADDR_ANY untuk assign IP Address lokal ke soket */udpClient.sin_family = AF_INET;udpClient.sin_addr.s_addr = INADDR_ANY;udpClient.sin_port = 0;returnStatus = bind(udpSocket, (struct sockaddr*)&udpClient,sizeof(udpClient));if (returnStatus == 0) {

    fprintf(stderr, "Bind completed!\n");

    }else {fprintf(stderr, "Could not bind to address!\n");close(udpSocket);exit(1);

    }

    while(1){/* Pesan yang akan dikirim */printf("Me : ");fgets(mymessage,MAXBUF,stdin);strcpy(buf,mymessage);

    /* server address */

    udpServer.sin_family = AF_INET;udpServer.sin_addr.s_addr = inet_addr(argv[1]);udpServer.sin_port = htons(atoi(argv[2])); //konversi ke BigEndian

  • 7/24/2019 EL4120-tugas1-13210140

    14/16

    returnStatus = sendto(udpSocket, buf, strlen(buf)+1, 0,(struct sockaddr*)&udpServer, sizeof(udpServer)); //Pesan pada buffer dikirim

    dengan fungsi Sendtoif (returnStatus == -1) {

    fprintf(stderr, "Pesan tidak terkirim!\n");}else {

    //ambil waktu saat ini dari system clock untuk ditampilkantime (&rawtime);timeinfo = localtime(&rawtime);printf(" Message sent %s

    \n",asctime(timeinfo));

    /* Menunggu pesan balasan */addrlen = sizeof(udpServer);returnStatus = recvfrom(udpSocket, buf, MAXBUF, 0,(struct sockaddr*)&udpServer, &addrlen);

    buf[returnStatus] = 0;printf("Friend : %s", buf); //tampilkan pesan balasan dari buffer

    }

    }/* cleanup */close(udpSocket);return 0;

    }

  • 7/24/2019 EL4120-tugas1-13210140

    15/16

    Source Code Serverchatudp :

    #include #include #include #include #include #include

    #define MAXBUF 1024

    int main(int argc, char* argv[]){

    time_t rawtime;struct tm * timeinfo;int udpSocket;int returnStatus = 0;int addrlen = 0;struct sockaddr_in udpServer, udpClient;char buf[MAXBUF];char mymessage[MAXBUF];/* check for the right number of arguments */if (argc < 2)

    { fprintf(stderr, "Usage: %s \n", argv[0]);exit(1);

    }

    /* create a socket */udpSocket = socket(AF_INET, SOCK_DGRAM, 0); //sock_dgram digunakan untuk UDPif (udpSocket == -1){

    fprintf(stderr, "Could not create a socket!\n");exit(1);

    }else {

    printf("Socket created.\n");}

    /* set up the server address and port *//* use INADDR_ANY to bind to all local addresses */udpServer.sin_family = AF_INET;udpServer.sin_addr.s_addr = htonl(INADDR_ANY);

    /* use the port passed as argument */udpServer.sin_port = htons(atoi(argv[1]));

    /* bind to the socket */returnStatus = bind(udpSocket, (struct sockaddr*)&udpServer,sizeof(udpServer));if (returnStatus == 0) {

    fprintf(stderr, "Bind completed!\n");}else {

    fprintf(stderr, "Could not bind to address!\n");close(udpSocket);exit(1);

    }

    while (1){

    addrlen = sizeof(udpClient);returnStatus = recvfrom(udpSocket, buf, MAXBUF, 0,(struct sockaddr*)&udpClient, &addrlen); //menerima request/pesan dari

    client

    printf("Friend : %s", buf); //tampilkan pesan dari bufferprintf("Me : "); //tulis pesan balasanfgets(mymessage,MAXBUF,stdin);strcpy(buf,mymessage);

  • 7/24/2019 EL4120-tugas1-13210140

    16/16

    returnStatus = sendto(udpSocket, buf, strlen(buf)+1, 0,(struct sockaddr*)&udpClient,sizeof(udpClient)); //kirim pesan

    if (returnStatus == -1) {fprintf(stderr, "Pesan tidak terkirim\n");

    }else {

    //ambil waktu dari system clock dan tampilkantime(&rawtime);timeinfo = localtime (&rawtime);printf(" Message sent %s \n",

    asctime(timeinfo));}

    }

    /*cleanup */close(udpSocket);return 0;

    }