Wednesday, February 19, 2014

perbedaan jaringan Clien-Server dengan Peer-to-Peer

keduanya merupakan jaringan komputer yang menghubungkan 2 atau lebih komputer

Client Server
Client Server adalah suatu bentuk arsitektur, dimana client adalah perangkat yang menerima yang akan menampilkan dan menjalankan aplikasi (software komputer) dan server adalah perangkat yang menyediakan dan bertindak sebagai pengelola aplikasi, data, dan keamanannya.
jaringan ini dapat diterapkan pada jaringan lokal dan juga pada teknologi internet. Dimana ada suatu unit komputer) berfungsi sebagai server yang hanya memberikan pelayanan bagi komputer lain, dan client yang juga hanya meminta layanan dari server. Akses dilakukan secara transparan dari client dengan melakukan login terlebih dulu ke server yang dituju.
Client hanya bisa menggunakan resource yang disediakan server sesuai dengan otoritas yang diberikan oleh administrator. Aplikasi yang dijalankan pada sisi client, bisa saja merupakan resource yang tersedia di server. namun hanya bisa dijalankan setelah terkoneksi ke server. Pada implementasi software splikasi yang di-install disisi client berbeda dengan yang digunakan di server.


Peer-to-Peer
Jaringan peer-to-peer juga sering disebut dengan workgroup. karena arti workgroup mempunyai konotasi yaitu kolaborasi tanpa adanya pusat kontrol (server). Peer-to-peer dapat dibangun hanya dengan sistem operasi yang terinstall di dalam komputer dan tersambungnya beberapa komputer secara fisik.

Dalam jaringan ini tidak ada komputer yang berfungsi khusus, semua komputer dapat berfungsi sebagai klien dan server secara bersamaan. Pengguna masing-masing komputer bertanggung jawab terhadap administrasi resource komputer, seperti membuat nama user, menentukan yang akan di-share, menandai ijin akses bagian share tersebut, dan yang lainnya. Tiap-tiap user juga bertanggung jawab melakukan backup data pada komputer masing-masing.

Sistem jaringan ini dapat digunakan di rumah atau di kantor. Pemakai komputer yang memiliki sebuah komputer lama dan sebuah komputer baru, tidak perlu membuang komputer lamanya. Dengan memasang kartu jaringan (netword card) pada komputer tersebut, maka kedua komputer dapat dihubungkan dengan kabel yang khusus digunakan untuk sistem jaringan.

 



Perbedaan antara Client-server dengan peer to peer
Kelebihan client server
Kelebihan peer to peer
Memberikan keamanan yang lebih baik
Pelaksanaan tidak terlalu mahal
Lebih mudah pengaturannya bila networknya besar karena administrasinya disentralkan
Tidak membutuhkan software server NOS ( Network Operating System )
Semua data dapat dibackup
Tidak membutuhkan administrator network yang handal
Kerugian client server
Kerugian peer to peer
Membutuhkan hardware yang lebih tinggi dan mahal untuk mesin server
Tidak cocok untuk network skala besar, administrasi menjadi tidak terkontrol
Membutuhkan administrator yang professional
Tiap user harus dilatih untuk menjalankan tugas administrative
Mempunyai satu titik lemah jika menggunakan satu server, data user menjadi tak ada jika server mati.
Keamanan kurang
Membutuhkan software NOS yang mahal contoh : NT atau server Windows 2000, XP,Novell, UNIX
Semua mesin yang sharing resource tidak mempengaruhi performaa

sumber:
http://blogeko3.blogspot.com/2012/07/pengertian-clent-server-dan-peer-to-peer.html
http://dosen.gufron.com/artikel/pengertian-jaringan-peer-to-peer-p2p/7/
http://auliarampack.blogspot.com/2011/10/perbedaan-client-server-dengan-peer-to.html

socket programming in c

kali ini saya akan memberikan tutorial aplikasi socket programming sederhana menggunakan bahasa pemrograman C melalui ubuntu

1. pastikan anda telah memiliki source code serverc.c dan clientc.c
serverc.c
#include<stdio.h>
#include<netinet/in.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netdb.h>
#include<stdlib.h>
#include<string.h>
#define MAX 80
#define PORT 43454
#define SA struct sockaddr
void func(int sockfd)
{
char buff[MAX];
int n;
for(;;)
{
bzero(buff,MAX);
read(sockfd,buff,sizeof(buff));
printf("From client: %s\t To client : ",buff);
bzero(buff,MAX);
n=0;
while((buff[n++]=getchar())!='\n');
write(sockfd,buff,sizeof(buff));
if(strncmp("exit",buff,4)==0)
{
printf("Server Exit...\n");
break;
}
}
}
int main()
{
int sockfd,connfd,len;
struct sockaddr_in servaddr,cli;
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1)
{
printf("socket creation failed...\n");
exit(0);
}
else
printf("Socket successfully created..\n");
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
servaddr.sin_port=htons(PORT);
if((bind(sockfd,(SA*)&servaddr, sizeof(servaddr)))!=0)
{
printf("socket bind failed...\n");
exit(0);
}
else
printf("Socket successfully binded..\n");
if((listen(sockfd,5))!=0)
{
printf("Listen failed...\n");
exit(0);
}
else
printf("Server listening..\n");
len=sizeof(cli);
connfd=accept(sockfd,(SA *)&cli,&len);
if(connfd<0)
{
printf("server acccept failed...\n");
exit(0);
}
else
printf("server acccept the client...\n");
func(connfd);
close(sockfd);
}

clientc.c
 #include<stdio.h>
#include<netinet/in.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netdb.h>
#include<string.h>
#include<stdlib.h>
#define MAX 80
#define PORT 43454
#define SA struct sockaddr
void func(int sockfd)
{
char buff[MAX];
int n;
for(;;)
{
bzero(buff,sizeof(buff));
printf("Enter the string : ");
n=0;
while((buff[n++]=getchar())!='\n');
write(sockfd,buff,sizeof(buff));
bzero(buff,sizeof(buff));
read(sockfd,buff,sizeof(buff));
printf("From Server : %s",buff);
if((strncmp(buff,"exit",4))==0)
{
printf("Client Exit...\n");
break;
}
}
}

int main()
{
int sockfd,connfd;
struct sockaddr_in servaddr,cli;
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1)
{
printf("socket creation failed...\n");
exit(0);
}
else
printf("Socket successfully created..\n");
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr=inet_addr("127.0.0.1");
servaddr.sin_port=htons(PORT);
if(connect(sockfd,(SA *)&servaddr,sizeof(servaddr))!=0)
{
printf("connection with the server failed...\n");
exit(0);
}
else
printf("connected to the server..\n");
func(sockfd);
close(sockfd);
}

2. pastikan bahwa ubuntu anda telah terinstall compiler bahasa C
3. buka 2 terminal secara paralel
4. masukkan direktori kedua source code tersebut dengan mengetikkan cd [direktori file]
5. lalu ketikkan gcc -o [nama server] [nama file, pada kali ini nama file saya berupa serverc.c] pada terminal 1. lalu ketikkan gcc -o [nama client] [nama file, pada kali ini nama file saya berupa clientc.c] pada terminal 2. hal iini dilakukan untuk meng-compile source code yang anda punya
6. lalu eksekusi dengan mengetikkan ./[nama server] pada terminal 1. dan mengetikkan ./[nama client] pada terminal 2
7. jika berhasil akan muncul gambar seperti dibawah ini dan anda bisa mengirimkane pesan melalui kedua terminal seperti gambar dibawah ini
sumber: mcalabprogram.blogspot.com/2012/01/tcp-sockets-chat-applicationserver.html

Socket Programming in Phyton

kali ini saya akan memberikan tutorial melakukan socket programming sederhana menggunakan bahasa pemrograman phyton dengan ubuntu.
1. pastikan anda memiliki Source code server.py dan client.py
server.py
#!/usr/bin/python           # This is server.py file

import socket               # Import socket module

s = socket.socket()         # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345                # Reserve a port for your service.
s.bind((host, port))        # Bind to the port

s.listen(5)                 # Now wait for client connection.
while True:
   c, addr = s.accept()     # Establish connection with client.
   print 'Got connection from', addr
   c.send('Thank you for connecting')
   c.close()                # Close the connection

client.py
#!/usr/bin/python           # This is client.py file

import socket               # Import socket module

s = socket.socket()         # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345                # Reserve a port for your service.

s.connect((host, port))
print s.recv(1024)
s.close                     # Close the socket when done


2. pastikan ubuntu anda telah terinstal compiler phyton. tutorial penginstalannya dapat dilihat disini.
3. lalu buka kedua terminal secara paralel
4. masukkan direktori kedua source code tersebut dengan mengetikkan cd [direktori file]
5. ketikkan phyton server.py &  pada terminal 1. lalu ketikkan phyton client.py pada terminal 2
6. jika sudah berhasil pada terminal akan memberikan hasil seperti gambar dibawah



http://www.tutorialspoint.com/python/python_networking.htm

Socket Programming in Java

Socket  Programming dapat diterapkan dalam berbagai bahasa pemrograman. kali ini saya akan memberikan tutorial untuk melakukan socket programming client-server secara sederhana menggunakan bahasa Java pada ubuntu anda.

1. pastikan anda memiliki source code GreetingServer.java dan GreetingClient.java
GreetingServer.java
 package edu.lmu.cs.networking;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;

/**
 * A TCP server that runs on port 9090.  When a client connects, it
 * sends the client the current date and time, then closes the
 * connection with that client.  Arguably just about the simplest
 * server you can write.
 */
public class DateServer {

    /**
     * Runs the server.
     */
    public static void main(String[] args) throws IOException {
        ServerSocket listener = new ServerSocket(9090);
        try {
            while (true) {
                Socket socket = listener.accept();
                try {
                    PrintWriter out =
                        new PrintWriter(socket.getOutputStream(), true);
                    out.println(new Date().toString());
                } finally {
                    socket.close();
                }
            }
        }
        finally {
            listener.close();
        }
    }
}

GreetingClient.java
// File Name GreetingClient.java

import java.net.*;
import java.io.*;

public class GreetingClient
{
   public static void main(String [] args)
   {
      String serverName = args[0];
      int port = Integer.parseInt(args[1]);
      try
      {
         System.out.println("Connecting to " + serverName
                             + " on port " + port);
         Socket client = new Socket(serverName, port);
         System.out.println("Just connected to "
                      + client.getRemoteSocketAddress());
         OutputStream outToServer = client.getOutputStream();
         DataOutputStream out =
                       new DataOutputStream(outToServer);

         out.writeUTF("Hello from "
                      + client.getLocalSocketAddress());
         InputStream inFromServer = client.getInputStream();
         DataInputStream in =
                        new DataInputStream(inFromServer);
         System.out.println("Server says " + in.readUTF());
         client.close();
      }catch(IOException e)
      {
         e.printStackTrace();
      }
   }
}

2. pastikan juga anda memiliki compiler java pada laptop anda. jika belum dapat melihat tutorial dari sini
3. buka 2 terminal secara paralel
4. lalu masukkan direktori kedua file java
5. ketik javac GreetingServer.java untuk melakukan compile  di terminal 1. lalu masukan javac GreetingClien.java
ingat: selalu lakukan compile untuk server terlebih dahulu
6. lalu ketikkan java GreetingServer [pilih port secara bebas] pada terminal 1. lalu ketikkan java localhost GreetingServer [port yang telah dipilih di server]
7. jika berhasil akan mucul seperti dibawah ini


sumber: http://www.tutorialspoint.com/java/java_networking.htm

Monday, February 17, 2014

Socket Programming

Socket merupakan Saluran komunikasi antar komputer yang berbasis protocol internet.
Soket Programming sendiri merupakan cara menggunakan socket API ( Application Socket Programming ), untuk menghubungkan komunikasi antara proses remote dan local.
lalu API ( Application Socket Programming ) adalah sebuah library atau fungsi windows untuk mengeksekusi sebuah perintah yang ada di dalam semua tampilan windows , sebagai contoh untuk tampilan desktop ,screen saver ,shutdown computer dll.

berikut merupakan cara kerja dari Socket Programming antar aplikasi: 

terdapat dua jenis protokol, yaitu:
  • TCP (Transmission Control Protocol)  
adalah protokol yang paling umum digunakan di Internet. Alasan untuk ini adalah karena TCP menawarkan koreksi kesalahan. Ketika protokol TCP digunakan ada “guaranteed delivery.” yaitu jaminan bahwa packet akan terkirim. Hal ini disebabkan  metode yang disebut ”flow control.” Flow control menentukan kapan data harus dikirim kembali, dan menghentikan aliran data paket sebelumnya sampai berhasil ditransfer. Saat  paket data dikirim, tabrakan dapat terjadi. Ketika ini terjadi, client akan meminta kembali paket dari server sampai seluruh paket lengkap dan identik dengan aslinya.
  •  UDP (USer Datagram Protocol)
adalah protokol yang umum digunakan di Internet. Namun, UDP tidak pernah digunakan untuk mengirim data penting seperti halaman web, informasi database, dll.  UDP umumnya digunakan untuk streaming audio dan video. Media streaming seperti Windows Media audio files (. WMA), Real Player (. RM), dan lain-lain menggunakan UDP karena menawarkan kecepatan!   Alasan UDP lebih cepat daripada TCP adalah karena tidak ada bentuk flow control atau koreksi kesalahan. Data yang dikirim melalui Internet dipengaruhi oleh tabrakan, dan error akan muncul. Ingatlah bahwa UDP hanya berkaitan dengan kecepatan. Ini adalah alasan utama mengapa media streaming tidak berkualitas tinggi.






sumber:
http://egrit-nurcahyo-w.blog.ugm.ac.id/2011/09/25/pengenalan-socket-programming/

Tuesday, February 4, 2014

SSH (Secure Shell)

SSH merupakan  protokol jaringan yang memungkinkan pertukaran data melalui saluran aman antara dua perangkat jaringan. Dalam semua versi SSH, penting untuk memverifikasi kunci publik sebelum menerimanya secara valid. Menerima sebuah kunci publik atttacker sebagai kunci publik yang valid memiliki efek membuka password yang ditransmisikan dan memungkinkan serangan man in-the-middle.

SSH berfungsi untuk menggantikan  Telnet dan shell remote tak aman lainnya, yang mengirim informasi, terutama kata sandi, dalam bentuk teks sederhana yang membuatnya mudah untuk dicegat.  SSH biasanya digunakan oleh administrator jaringan sebagai remote login / remote control untuk memanage sebuah server.

mungkin beberapa dari anda bingung apa perbedaan dari SSL dan SSH yang sama-sama menyediakan keamanan dalam berinternet. berikut akan dijabarkan beberapa perbedaan utama dari kedua protokol ini.
  • fungsi utama SSL adalah mengamankan transmisi data penting seperti kartu kredit dan data bank. Sedangkan SSH befungsi untuk merahasiakan proses pertukaran data yang terjadi di internet antara komputer klien dengan server.
  • SSH memerlukan otentikasi username / password untuk menciptakan koneksi yang aman. Sedangkan di SSL tidak diperlukan otentikasi.
  • SSH lebih sering berkaitan dengan network tunneling, sedangkan SSL lebih kepada sertifikasi / sertifikat.
  • SSH memakai port 22, sedangkan SSL memakai port 443.

setting SSH
1. buka terminal lalu ketikkan sudo su untuk mengubah akses menjasi super user lalu masukkan pasword anda.
2. ketikkan apt-cache search ^ssh untuk menampilkan aplikasi SSH apa saja yng dimiliki dan dapat diinstal. jika sudah, akan keluar hasil seperti dibawah ini.
3. untuk menginstal SSH, ketikkan ketikkan apt-get install ssh pada terminal. lalu tunggu instalasi selesai seperti gambar berikut.


sumber:
http://webssh.uni.me/ 
 http://hostingunlimitedterbaik.com/2012/03/19/perbedaan-ssl-dan-ssh/ 

SSL (Secure Socket Layer)

SSL merupakan protokol yang menyediakan komunikasi yang aman di internet dengan menjaga kerahasiaan data antara client dan server. protokol ini menggunakan cryptography untuk menjaga keamanan sebuah data agar data yang ditransfer tidak dapat dibaca oleh pihak lain. Berbeda dengan SSH, SLL tidak memerlukan proses otentikasi.
fungsi dari SSL sendiri adalah untuk menjaga keamanan pengiriman data web server ke pengguna situs tersebut. pada intinya SSL menyediakan sebuah layanan untuk memastikan kerhasiaan data pengguna situs seperti password agar tidak dapat dilihat oleh pihak lain. 

dibawah ini merupakan bagan cara kerja SSL


Open SSL merupakan tool-kit open-source dari SSL yang kriptografi mengimplementasikan SSL (SSL v2/v3) dan Transport Layer Security (TLS v1) dan terkait dengan protokol jaringan standar kriptografi yang dibutuhkan oleh keduanya. 


setting SSL
1. buka terminal lalu ketikkan sudo su untuk mengubah akses menjasi super user lalu masukkan pasword anda.
2.  lalu masukkan perintah apt-get install openssl pada terminal memulai instalasi open SSL. tunggu instalasinya selesai. Jika muncul peringatan tambahkan opsi –skip-broken untuk mengabaikan peringatan lainnya.


3. setelah instalasi selesai, ketikkan perintah /opt/lampp/lampp restart untuk mereset ulang web server yang telah dilengkapi SSL. Pastikan anda telah menginstal web server sebelumnya yang sudah dibahas di atas.


sumber:
http://lebaksono.wordpress.com/2010/12/20/debian-web-server-with-openssl-https/
http://littlebro-note.blogspot.com/2009/08/tentang-openssl.html