Senin, 11 Maret 2013

Proses Pengiriman Data melalui TCP/IP Layer


Proses enkapsulasi data antar protocol layer di perlihatkan pada gambar.


Proses pengiriman data melalui TCP/IP layer hampir mirip dengan pengiriman data melalui OSI layer. Hanya saja, perbedaannya terletak di jumlah layer yang terlibat dalam proses pengiriman data.

Data yang akan dikirim akan di enkapsulasi oleh setiap layer, mulai dari application layer hingga yang terakhir physical layer. Pada saat data di terima oleh setiap layer, layer akan membuang header data tersebut. Jika data dianggap valid, protokol akan melepas informasi tambahan tersebut, untuk kemudian meneruskan data itu ke protokol lain di layer selanjutnya.

Layer Network akan mengatur supaya alamat sumber dan yang dituju benar. Layer network ini yang akan mengidentifikasi supaya datagram mencapai komputer yang benar. Tapi layer network sama sekali tidak menjamin bahwa datagram yang dikirim akan diterima sampai di tujuan dengan selamat.

Layer transport mengontrol port sumber dan port tujuan paket, termasuk nomor urut paket yang dikirim. Layer transport juga berusaha menjamin supaya paket yang diterima sampai ditujuan dengan selamat, jika ada kesalahan / kerusakan paket di jalan, maka layer ini yang akan berusaha memperbaikinya.

Data Link layer  biasanya di implementasikan di dalam firmware di LAN card, akan menentukan bagaimana frame data dikirim. Layer ini akan memberikan enkapsulasi datagram dari layer network ke dalam frame yang akan di kirim melalui jaringan. Dalam frame akan dimasukkan alamat Ethernet, atau MAC address, dari komputer sumber dan komputer selanjutnya untuk mencapai tujuan.





Socket Programming dengan Java

Code dari sisi server :


import java.net.ServerSocket;
import java.net.Socket;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;

public class Server {
    public static void main(String[] args){
        int port = 6666;
        try {
            ServerSocket ss = new ServerSocket(port);
            System.out.println("Menunggu pengguna atau admin");
            Socket socket = ss.accept();
            System.out.println("Terjadi koneksi\n");
            InputStream sin = socket.getInputStream();
            OutputStream sout = socket.getOutputStream();

            DataInputStream in = new DataInputStream(sin);
            DataOutputStream out = new DataOutputStream(sout);

            String line = null;
            while(true) {

                line = in.readUTF();
                if ("saya pengguna".equals(line))
                {
                    line = "SELAMAT DATANG PENGGUNA";
                    System.out.println("koneksi dengan pengguna\n");
                }
                if ("saya admin".equals(line))
                {
                    line = "SELAMAT DATANG ADMIN";
                    System.out.println("koneksi dengan admin\n");
                }
               
                out.writeUTF(line);
                out.flush();
               
                System.out.println();
            }
        }
        catch(Exception x) {
            x.printStackTrace();
        }
    }
}

Code dari sisi Client :

import java.io.InputStream;
import java.io.OutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Client {
    public static void main(String[] args){
        int serverPort = 6666;
        String address = "127.0.0.1";given here means "the same computer as the client".

        try {
            InetAddress ipAddress = InetAddress.getByName(address);

            Socket socket = new Socket(ipAddress, serverPort);
            System.out.println("Tersambung dengan server\n");

            InputStream sin = socket.getInputStream();
            OutputStream sout = socket.getOutputStream();

            DataInputStream in = new DataInputStream(sin);
            DataOutputStream out = new DataOutputStream(sout);

            BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));

            String line = null;
            
            while(true) {
                System.out.print("\nClient : ");
                line = keyboard.readLine();
                
                out.writeUTF(line);
                out.flush();
                line = in.readUTF();
                System.out.print("Server : " + line);
            }
        } 
        catch(Exception x) {
            x.printStackTrace();
        }
    }
}

Tutorial Wireshark

Hai guys, back again...

Postingan kali ini, mengenai Tutorial Wireshark. Pertama - tama, tau gak wireshark itu apa?
Wireshark adalah tool yang digunakan untuk menganalisa packet - packet (apalagi itu?) yang dikirim atau diterima oleh dan dari komputer kita. Intinya, kita bisa melihat "lalu lintas" pengiriman data pada komputer kita saat terhubung ke internet.

Keren kan?

OK, langsung aja ke tutorialnya . . .

Hal yang perlu disiapkan adalah :
1. Wireshark (pasti lah)
2. Koneksi internet (usahakan pake wireless atau kabel LAN, karena modem usb tidak terdetect pada wireshark, percayalah!)

Lanjut ke langkah langkah nya:
1. Install dulu Wireshark, terus baru buka aplikasiya
2. Setelah masuk wireshark akan ada pilihan untuk memulai meng-Capture packet. Pilih dulu hardware yang akan digunakan untuk Capture packet.



    Biasanya hardware yang digunakan akan muncul jumlah packet yang sedang ditransfer.


3. Setelah dijalankan, wireshark akan automatis menangkap semua arus data yang terjadi seperti gambar dibawah.



Sekian tutorial wireshark. Bila ada kesalahan mohon kritik dan saran karena penulis pun bukan makhluk yang sempurna.