Senin, 10 Juni 2013

Cisco Packet Tracer

Cisco Packet Tracer adalah sebuah program yang biasa digunakan untuk setting up suatu network atau jaringan. Dengan kata lain, program ini digunakan untuk simulasi setting network yang akan dibuat.


Diatas adalah contoh settingan network virtual yang telah jadi. Dari contoh ada 4 elemen yang terdapat pada network.

Hub/ Switch

DNS Server
Router
Host / End-User








Pada masing masing elemen, kita dapat men-setting konfigurasi network, seperti gateway, IP address, subnet mask, dan lainnya.

Dibawah adalah salah satu contoh konfigurasi dari salah satu router.


Pada router, selain men-setting IP address, juga harus kita setting Routing Table nya. Routing Table adalah suatu settingan, untuk menyimpan subnet mana saja yang digunakan jika terdapat request ke IP yang termasuk dalam subnet tersebut.

Fitur utama dari cisco packet tracer adalah untuk mensimulasikan proses pengiriman data dari suatu elemen ke elemen lain.
Proses ping berhasil

Selasa, 16 April 2013

Webserver dengan Java

Berikut ini source code untuk membuka file yang telah kita tentukan :


public class Modul2 {

    /**
     * @param args the command line arguments
     */
   
    public static String readLine(InputStream is)throws IOException
    {
        String req = "";
        int c;
       
        while(true){
            c = is.read();
            req += (char)c;
           
            if((char)c == '\n')
                break;
        }
       
        return req;
    }
   
    public static void main(String[] args) {
        try {
            // TODO code application logic here
            ServerSocket ss = new ServerSocket(6661);
           
           while(true)
           {
               Socket s = ss.accept();
               BufferedInputStream inp = new BufferedInputStream(s.getInputStream());
               BufferedOutputStream out = new BufferedOutputStream(s.getOutputStream());
             
               int c, line;
               line = 0;
               String req = "";
               String path = "";
             
               while(!(req = readLine(inp)).equals("\r\n")){
                    System.out.print(req);

                    if(line == 0){
                        int start = 5;
                        for(int i=start; true ; i++){
                            if(req.charAt(i) != ' '){
                                path += req.charAt(i);
                            }
                            else break;
                        }
                    }

                    line++;
               }
               System.out.print(req);

                String body = "";

                String response = "";  // Untuk balasan dari server agar diterima oleh browser
                response = "HTTP/1.0 200 OK\r\n" +
                           "Content-Type: text/html\r\n" +
                           "Server: Bot\r\n" +
                           "\r\n";
               
                FileInputStream ifs = new FileInputStream("C:\\Users\\Ryan\\Documents\\index.html");  // Direktori file yang dimasukkan

                while((c = ifs.read()) != -1){  // Membaca baris text sampai nilai -1 atau NULL
                    response += (char) c;
                }

                out.write(response.getBytes());
                out.flush();


                inp.close();
                inp.close();
                s.close();
           }
           
           
        } catch (IOException ex) {
            Logger.getLogger(Modul2.class.getName()).log(Level.SEVERE, null, ex);
        }
       
       
    }
}


Praktikum Jaringan Komputer

Pada kesempatan kali ini, saya akan menjelaskan mengenai hal - hal yang saya dapat saat praktikum jaringan komputer modul 2 ini. Pada modul 2 ini, materi yang diberikan yaitu mengenai cara membuat proxy server dan webserver dalam OS Ubuntu dengan menggunakan UML (User-Mode Linux), serta membuat webserver dalam bahasa Java.

Pertama, yaitu Proxy Server.

Secara teknis, proxy server adalah sebuah sistem yang berperan sebagai perantara antara client hosts, dengan server yang ingin diaksesnya. Cara kerja Proxy Server contohnya, misal ingin membuka Google. PC yang kita pakai merupakan client host. Halaman Google yang muncul merupakan file html yang ada di server Google. Dengan proxy, berarti proxy adalah sebagai perantara antara PC kita dengan Google. Jadi, kita meminta file html bukan ke server Google secara langsung, tetapi melalui server proxy yang kita pakai.

Topologi Proxy :


Untuk setting Proxy di UML, saya memakai Squid Proxy versi 3 (Squid3). Install dengan : apt-get install squid3. Setelah meng-Install Squid, konfigurasi Squid lewat dengan mengedit file squid.conf yang berada di /etc/squid3/ . Pada praktikum kali ini, beberapa konfigurasi proxy yang saya pakai pada settingan virtual network yaitu :

acl limitcon maxconn 2
acl com3 src 192.168.1.93
acl hos2 src 192.168.1.92
acl com4 src 192.168.1.94
acl download urlpath_regex -i \.mp3$ \.doc$ \.pdf$
acl waktu time M T W T F 00:00-14:00

http_access allow com4 com3
http_access allow hos2 ! download
http_access deny limitcon
http_access deny all

delay_pools 3

delay_class 1 1
delay_parameters 1 10000/10000
delay_access 1 allow com4 waktu
delay_access 1 deny all

delay_class 2 1
delay_parameters 2 20000/20000
delay_access 2 allow com3 waktu download
delay_access 2 deny all

delay_class 3 1
delay_access 3 allow com4 com3 !waktu
delay_access 3 deny all

Sedikit penjelasan mengenai syntax - syntax :
delay_pools untuk menspesifikasi berapa pools yang akan digunakan untuk ACL delay.
delay_class untuk menspesifikasi tingkat delay yang diberikan pada masing masing pool.
delay_parameter untuk memberikan aturan aturan khusus untuk suatu delay pool.
delay_access untuk menspesifikasikan ACL mana saja yang diberikan ijin (Deny/Allow) untuk akses keluar proxy

Berikutnya Webserver.
Untuk setting webserver, saya menggunakan Apache pada UML saya. Webserver sendiri sebenarnya hampir mirip dengan proxy, namun bedanya, webserver bukan perantara seperti proxy, melainkan penyedia jasa HTTP, HTTPS, dan lainnya. Seperti biasa, install apache dengan apt-get install apache2 terlebih dahulu. Untuk mengecek apakah sudah berhasil instalasi apache, lakukan koneksi ke localhost, maka akan ada reply berupa "It Works!" dari localhost.

Berikut konfigurasi apache pada file /etc/apache2/sites-enabled/000-default

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /home/admin/
        <Directory />
                Options +Indexes FollowSymLinks Includes +ExecCGI
                AllowOverride All
                Allow from all
        </Directory>
        <Directory /home/admin/>
                Options Indexes FollowSymLinks Includes ExecCGI
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
   Options Indexes FollowSymLinks Includes ExecCGI
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/error.log
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Listen 8080
<VirtualHost *:8080>
        ServerAdmin webserver@localhost
        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride AuthConfig
                Require valid-user
                AuthType basic
                AuthName "Basic Auth"
                AuthUserFile /usr/lib/cgi-bin/.htusers
 AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride AuthConfig
                Require valid-user
                AuthType basic
                AuthName "Basic Auth"
                AuthUserFile /usr/lib/cgi-bin/.htusers
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

Sekian untuk webserver dan proxy server dari saya.

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.