- Awalnya data dibuat, ketika memulai proses pengiriman, data turun melalui Application layer (layer 7) layer ini merupakan interface antara jaringan dengan aplikasi yang digunakan user , layer ini bertanggung jawab dalam pertukaran informasi dari komputer ke jaringan, pada dasarnya. Dapat juga disebut bahwa layer ini berfungsi untuk mendefinisikan request dari user. Kemudian data diteruskan ke layer Presentation (layer 6), yang mana layer ini bertanggung jawab dalam menentukan apakah ia perlu untuk melakukan enkripsi terhadap request ini ataupun ke bentuk lain dari translasi data. Jika proses sudah lengkap, selanjutnya ditambahakan informasi yang diperlukan. Lalu di forward ke Session layer (layer 5) yang mana layer ini akan memeriksa apakah aplikasi merequest suatu informasi dan memverifikasi layanan yang direquest itu pada server.
- Sampailah data di Transport layer (layer 4), memastikan bahwa ia mempunya suatu koneksi yang sudah tepat dengan server dan memulai proses dengan mengubah informasi itu ke bentuk segment. Pengecekan error dan penggabungan data yang berasal dari aplikasi yang sama dilakukan di layer transport ini serta keutuhan data di jamin pula di sini. Terbentuk L4PDU dari proses ini.
- Selanjutnya segment tersebut diteruskan ke Network layer (layer 3), disini diterima segment-segment tadi dan ditambahkan alamat network untuk station yang me-request dan alamat network untuk server yang direquest. Segment-segment tersebut akan diubah menjadi packet-packet, Kemudian layer Network membuat header Network, dimana didalamnya terdapat juga alamat layer Network, dan ditempatkan L4PDU dibaliknya, dan terbentuklah L3PDU.
- Kemudian packet-packet tadi dilewatkan ke layer Data Link (layer 2) dan paket-paket tadi diatur dan kemudian akan dibungkus lagi ke dalam individual frame, salah satu contoh dalam proses ini adalah memberikan alamat MAC tujuan dan MAC address sumber yang kemudian informasi tersebut digunakan untuk membuat trailer. Dikarenakan suatu paket dapat dikirimkan melalui banyak sekali perangkat dan router, disinilah peran MAC Address dalam mengirimkan paket antara satu router dan router lainnya. Kemudian akan ditransmisikan ke media. Seluruh informasi yanng ditambahkan oleh tiap layer sebelumnya (sebagai suatu actual file request) harus cocok ke dalam ukuran 46-1500 byte data field pada frame ethernet. Data link layer bertanggung jawab untuk mengirimkan frame menurut topologi yang digunakan. Terbentuklah L2PDU pada proses ini.
- Terakhir, sampailah data di layer Physical (layer 1), informasi akan dibawa dari source menuju destination. Karena Physical layer tidak mengenal frame, ia akan melewatkan informasi itu ke bentuk bits. Tidak terjadi penambahan header pada layer ini. 1Layer Physical ini berhubungan dengan perangkat keras. Akhirnya bit-bit tersebut nantinya akan disinkronisasi dan kemudian diubah menjadi sinyal listrik yang berupa tinggi rendahnya tegangan dan selanjutnya ditransmisikan melalui media. Misalnya dari kabel ke tujuan, hal ini sesuai dengan karakteristik lapisan Physical layer yang menentukan rangkaian kejadian dimana arus bit berpindah melalui medium fisik.
Senin, 11 Maret 2013
Mekanisme Data Melalui OSI Layer
Sekilas Tentang Crimping
Crimping adalah proses pembuatan kabel jaringan. Tipe kabel straight digunakan saat menghubungkan dari PC ke Switch, Router ke Switch, Router ke HUB dan PC ke HUB. Sedangkan tipe kabel cross digunakan saat menghubungkan PC ke PC, Switch ke Switch, HUB ke HUB dan PC ke Router.
Susunan straight:
Susunan cross:
Susunan straight:
| Susunan warna kabel straight |
Susunan cross:
| Susunan warna kabel cross |
Sekilas Tentang Wireshark
Wireshark merukan salah satu dari software monitoring jaringan yang biasanya banyak digunakan oleh para administrator jaringan untuk mengcapture dan menganalisa kinerja jaringan.
Wireshark merupakan salah satu dari sekian banyak tool Network Analyzer yang banyak digunakan oleh Network administrator untuk menganalisa kinerja jaringannya terrmasuk protokol didalamnya.
Kegunaannya:
- Wireshark mampu menangkap paket-paket data atau informasi yang berseliweran dalam jaringan.
- Sniffing
- Wireshark dapat membaca data secara langsung dari Ethernet, Token-Ring, FDDI, serial (PPP dan SLIP), 802.11 wireless LAN, dan koneksi ATM.
- Program ini juga sering digunakan oleh chatters untuk mengetahui ip korban maupun para chatter lainnya lewat typingan room.
- Tool wireshark dapat menganalisa transmisi paket data dalam jaringan, proses koneksi dan transmisi data antar komputer.
- Selama kita bisa mendapatkan paket langsung dari jaringan, dengan tools seperti wireshark, maka kita juga bisa memanfaatkan wireshark untuk ‘menyadap’ pembicaraan Voice over IP.
Bagian-bagian Wireshark:
a. Comand Menu
b. Display Filter : Bagian untuk membatasi paket data yang ditampilkan..
c. Daftar Paket : Tempat dimunculkan paket data yang ditangkap wireshark.
d. Detail Paket : Data lengkap tentang sebuah paket.
e. Detail Heksa : Detail data yang ditampilkan dalam bentuk heksadecimal.
| Cara membaca tampilan dari Wireshark |
Minggu, 10 Maret 2013
Contoh Sederhana Program Socket Client-Server
Dalam pemrograman jaringan sebenarnya dasarnya sangat sederhana. Pertama kita harus membuat method(disertai namanya) berupa socket dan server socket sebagai pintu masuk dan keluar programnya. Jadi ketika kita butuh mengirim data (misal: dari server ke client) maka kita buka dulu pintu di server lalu dikirim melalui pintu/socket tersebut ke socket client yang sudah terbuka. Setelah menggunakannya juga socket tersebut perlu ditutup agar program berjalan normal.
Apa itu socket?
Socket adalah suatu abtraksi yang mana aplikasi dapat mengirim dan menerima data seperti sama halnya dengan membuka suatu file untuk dibaca dan ditulis pada tempat penyimpanan file. Socket memungkinkan untuk masuk kedalam jaringan dan berkomunikasi dengan aplikasi lain yang juga masuk kedalam jaringan yang sama. Informasi yang ditulis kedalam socket pada suatu aplikasi pada suatu mesin dapat dibaca oleh aplikasi lain pada mesin yang berbeda dan sebaliknya.
Apa fungsi dari socket?
Fungsi utama dari socket yaitu mengatur pengiriman data pada jaringan komputer. Maksudnya yaitu memberitahukan apakah dia client atau serve,memberikan informasi data yang dikirim, memberikan informasi dimana data yang disimpan, memberikan informasi kemana data aka dikirimkan, dan lainnya.
Source Code Server #1:
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
/* * To change this template, choose Tools | Templates * and open the template in the editor. *//** * * @author BASKARA */public class Server { public static void main(String[] args) { Socket s = null; ServerSocket ss; try { ss = new ServerSocket(1234); s = ss.accept(); //waiting connection InputStream in = s.getInputStream(); OutputStream out = s.getOutputStream(); int dummy = 0; while(true) { dummy = in.read(); System.out.print((char)dummy); if((char)dummy=='\n') break; } dummy = 0; String pesan = "Anda siapa?(1. Admin 2. User)"; String pesan1 = "Selamat datang admin!\n"; String pesan2 = "Selamat datang user!\n"; //String pesan3 = "!"; out.write(pesan.getBytes()); out.flush(); while(true) { dummy = in.read(); if(dummy=='1') { System.out.print("masuk\n"); out.write(pesan1.getBytes()); out.flush(); break; /*dummy = (dummy - 48) + (dummy - 48); out.write((int)dummy); out.flush();*/ //out.write(pesan3.getBytes()); //out.write(new Integer(123).toString()); //out.flush(); //break; } else { System.out.print("masuk\n"); out.write(pesan2.getBytes()); out.flush(); break; /*dummy = (dummy - 48) + (dummy - 48); out.write((int)dummy); out.flush();*/ //out.write(pesan3.getBytes()); //out.write(new Integer(123).toString()); //out.flush(); //break; } } in.close(); out.close(); s.close(); ss.close(); } catch (IOException ex) { Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex); }}}
Source Code Client #1:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.logging.Level;
import java.util.logging.Logger;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author BASKARA
*/
public class Client {
public static void main(String[] args) {
try {
Socket s = new Socket("127.0.0.1",1234);
InputStream in = s.getInputStream();
OutputStream out = s.getOutputStream();
String tes = "Tes koneksi\n";
out.write(tes.getBytes());
out.flush();
int dummy = 0;
while(true)
{
dummy = in.read();
System.out.print((char)dummy);
if((char)dummy==')')
break;
}
//System.out.print('\n');
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
tes = br.readLine();
//System.out.print(tes.toString());
out.write(tes.getBytes());
out.flush();
dummy = 0;
while(true)
{
dummy = in.read();
//System.out.print(dummy);
System.out.print((char)dummy);
if((char)dummy=='!')
break;
}
in.close();
out.close();
s.close();
} catch (UnknownHostException ex) {
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
![]() |
| Ilustrasi |
Socket adalah suatu abtraksi yang mana aplikasi dapat mengirim dan menerima data seperti sama halnya dengan membuka suatu file untuk dibaca dan ditulis pada tempat penyimpanan file. Socket memungkinkan untuk masuk kedalam jaringan dan berkomunikasi dengan aplikasi lain yang juga masuk kedalam jaringan yang sama. Informasi yang ditulis kedalam socket pada suatu aplikasi pada suatu mesin dapat dibaca oleh aplikasi lain pada mesin yang berbeda dan sebaliknya.
Apa fungsi dari socket?
Fungsi utama dari socket yaitu mengatur pengiriman data pada jaringan komputer. Maksudnya yaitu memberitahukan apakah dia client atau serve,memberikan informasi data yang dikirim, memberikan informasi dimana data yang disimpan, memberikan informasi kemana data aka dikirimkan, dan lainnya.
Source Code Server #1:
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
/* * To change this template, choose Tools | Templates * and open the template in the editor. *//** * * @author BASKARA */public class Server { public static void main(String[] args) { Socket s = null; ServerSocket ss; try { ss = new ServerSocket(1234); s = ss.accept(); //waiting connection InputStream in = s.getInputStream(); OutputStream out = s.getOutputStream(); int dummy = 0; while(true) { dummy = in.read(); System.out.print((char)dummy); if((char)dummy=='\n') break; } dummy = 0; String pesan = "Anda siapa?(1. Admin 2. User)"; String pesan1 = "Selamat datang admin!\n"; String pesan2 = "Selamat datang user!\n"; //String pesan3 = "!"; out.write(pesan.getBytes()); out.flush(); while(true) { dummy = in.read(); if(dummy=='1') { System.out.print("masuk\n"); out.write(pesan1.getBytes()); out.flush(); break; /*dummy = (dummy - 48) + (dummy - 48); out.write((int)dummy); out.flush();*/ //out.write(pesan3.getBytes()); //out.write(new Integer(123).toString()); //out.flush(); //break; } else { System.out.print("masuk\n"); out.write(pesan2.getBytes()); out.flush(); break; /*dummy = (dummy - 48) + (dummy - 48); out.write((int)dummy); out.flush();*/ //out.write(pesan3.getBytes()); //out.write(new Integer(123).toString()); //out.flush(); //break; } } in.close(); out.close(); s.close(); ss.close(); } catch (IOException ex) { Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex); }}}
Source Code Client #1:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.logging.Level;
import java.util.logging.Logger;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author BASKARA
*/
public class Client {
public static void main(String[] args) {
try {
Socket s = new Socket("127.0.0.1",1234);
InputStream in = s.getInputStream();
OutputStream out = s.getOutputStream();
String tes = "Tes koneksi\n";
out.write(tes.getBytes());
out.flush();
int dummy = 0;
while(true)
{
dummy = in.read();
System.out.print((char)dummy);
if((char)dummy==')')
break;
}
//System.out.print('\n');
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
tes = br.readLine();
//System.out.print(tes.toString());
out.write(tes.getBytes());
out.flush();
dummy = 0;
while(true)
{
dummy = in.read();
//System.out.print(dummy);
System.out.print((char)dummy);
if((char)dummy=='!')
break;
}
in.close();
out.close();
s.close();
} catch (UnknownHostException ex) {
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Alur program pertama di atas setelah terhubung adalah sebagai berikut:
1. Client mengirim pesan tes koneksi ke server.
2. Setelah dibaca oleh server, server akan mengirim pertanyaan apakah client merupakan admin atau user.
3. Client mengirimkan balasan ke server, jika balasan berupa "1" maka dia adalah admin, jika "2" atau selain itu maka dia adalah user.
Source Code Server#2:
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author BASKARA
*/
public class Server {
public static void main(String[] args) {
Socket s = null;
ServerSocket ss;
try {
ss = new ServerSocket(1234);
s = ss.accept(); //waiting connection
InputStream in = s.getInputStream();
OutputStream out = s.getOutputStream();
int dummy = 0;
while(true)
{
dummy = in.read();
System.out.print((char)dummy);
if((char)dummy=='\n')
break;
}
dummy = 0;
String pesan = "Masukkan angka yang ingin dikalikan 2: ";
//String pesan1 = "Selamat datang admin!\n";
//String pesan2 = "Selamat datang user!\n";
String pesan3 = "!";
out.write(pesan.getBytes());
out.flush();
while(true)
{
dummy = in.read();
if(dummy=='1')
{
/*System.out.print("masuk\n");
out.write(pesan1.getBytes());
out.flush();
break;*/
dummy = (dummy - 48) + (dummy - 48); //kode ASCII jadi harus dikurangi 48 dahulu
out.write((int)dummy);
out.flush();
//out.write(pesan3.getBytes());
//out.write(new Integer(123).toString());
//out.flush();
break;
}
else
{
/*System.out.print("masuk\n");
out.write(pesan2.getBytes());
out.flush();
break;*/
dummy = (dummy - 48) + (dummy - 48);
out.write((int)dummy);
out.flush();
//out.write(pesan3.getBytes());
//out.write(new Integer(123).toString());
//out.flush();
break;
}
}
in.close();
out.close();
s.close();
ss.close();
} catch (IOException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Source Code Client#2:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.logging.Level;
import java.util.logging.Logger;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author BASKARA
*/
public class Client {
public static void main(String[] args) {
try {
Socket s = new Socket("127.0.0.1",1234);
InputStream in = s.getInputStream();
OutputStream out = s.getOutputStream();
String tes = "Tes koneksi\n";
out.write(tes.getBytes());
out.flush();
int dummy = 0;
while(true)
{
dummy = in.read();
System.out.print((char)dummy);
if((char)dummy==')')
break;
}
//System.out.print('\n');
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
tes = br.readLine();
//System.out.print(tes.toString());
out.write(tes.getBytes());
out.flush();
dummy = 0;
while(true)
{
dummy = in.read();
System.out.print(dummy);
//System.out.print((char)dummy);
//if((char)dummy=='!')
break;
}
in.close();
out.close();
s.close();
} catch (UnknownHostException ex) {
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Alur program kedua di atas setelah dijalankan adalah sebagai berikut:
1. Client melakukan tes koneksi ke server.
2. Server membalas, meminta input angka yang akan dilipatgandakan.
3. Client mengirim angka ke server.
4. Angka berupa ASCII dikurangi 48 supaya ketahuan angka sesungguhnya, kemudian dilipatgandakan dan dikirim kembali ke Client.
Langganan:
Postingan (Atom)
