Anda di halaman 1dari 16

EL4120 Jaringan Komputer

Tugas 1
Oleh : Erich Pratama Saputra / 13210140
Deskripsi Tugas
Deskripsi tugas terdapat pada laman http://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

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 :

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

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.

Client sent message :

Tampilan Terminal Window Pada Komputer 1 (Client) send message

Server receive message :

Tampilan Terminal Window Pada Komputer 2 (Server) receive message

Server reply :

Tampilan Terminal Window Pada Komputer 2 (Server) send reply

Client 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.

Setting parameter pada ostinato :

Pemilihan Protokol

Pengaturan MAC Address

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.

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.

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

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 koneksi
dan 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.

Hasil Capture Packet Komputer 1 (Client 192.168.0.2)

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.

Lampiran
Source Code Clientchatudp :
#include
#include
#include
#include
#include
#include

<sys/types.h>
<sys/socket.h>
<netdb.h>
<string.h>
<stdio.h>
<time.h>

#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 <ip address> <port>\n", argv[0]);
exit(1);
}
/* create a socket */
udpSocket = socket(AF_INET, SOCK_DGRAM, 0); //Sock_Dgram digunakan untuk UDP
if (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

returnStatus = sendto(udpSocket, buf, strlen(buf)+1, 0,


(struct sockaddr*)&udpServer, sizeof(udpServer));
//Pesan pada buffer dikirim
dengan fungsi Sendto
if (returnStatus == -1) {
fprintf(stderr, "Pesan tidak terkirim!\n");
}
else {
//ambil waktu saat ini dari system clock untuk ditampilkan
time (&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;
}

Source Code Serverchatudp :


#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <string.h>
#include <stdio.h>
#include <time.h>
#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 <port>\n", argv[0]);
exit(1);
}
/* create a socket */
udpSocket = socket(AF_INET, SOCK_DGRAM, 0); //sock_dgram digunakan untuk UDP
if (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

client
printf("Friend : %s", buf); //tampilkan pesan dari buffer
printf("Me
: "); //tulis pesan balasan
fgets(mymessage,MAXBUF,stdin);
strcpy(buf,mymessage);

dari

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 tampilkan
time(&rawtime);
timeinfo = localtime (&rawtime);
printf("
asctime(timeinfo));
}
}
/*cleanup */
close(udpSocket);
return 0;
}

Message sent %s \n",

Anda mungkin juga menyukai