Selasa, 18 Februari 2014

Source Code Socket Programming in PYTHON

SOURCE CODE SOCKET PROGRAMMING



1. Source code untuk Server

# Echo server program
import socket

HOST = ''                 # Symbolic name meaning all available interfaces
PORT = 50007              # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
while 1:
    data = conn.recv(1024)
    if not data: break
    conn.sendall(data)
conn.close()


2. Source code untuk Client

#!/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

berikut adalah hasil tampilan kompilasi dari kedua source code diatas.



source : 
- http://docs.python.org/2/library/socket.html

Perbedaan Client-Server dan Peer to Peer

Client-Server

Client Server adalah suatu bentuk arsitektur dimana client adalah perangkat yang menerima yang akan menampilkan dan menjalankan aplikasi dan server adalah perangkat yang menyediakan dan bertindak sebagai pengelola aplikasi, data dan keamanannya.






Kelebihan yang dimiliki oleh client-server ini diantaranya lebih aman digunakan, semua data dapat di backup pada satu lokasi central, dan kecepatan aksesnya lebih tinggi karena penyediaan fasilitas jaringan dan pengelolaannya dilakukan secara khusus oleh satu komputer (server) yang tidak dibebani oleh tugas lain sebagai workstation.
Selain kelebihan, client-server juga memiliki beberapa kekurangan diantaranya membutuhkan administrator yang handal, dalam pelaksanaannya memerlukan biaya yang mahal, dan jika server mati maka komputer client juga akan mati.



Peer to Peer

Peer to Peer adalah jaringan komputer dimana setiap host dapat menjadi server dan juga menjadi client di waktu yang bersamaan.

Kelebihan yang dimiliki Peer to Peer diantaranya biaya yang dikeluarkannya tidak terlalu mahal dan tidak membutuhkan administrator yang handal. Kekurangan dari sistem ini adalah tingkat keamanan yang kurang dan tidak cocok untuk jaringan dalam skala besar.







source :
- http://blogeko3.blogspot.com/2012/07/pengertian-clent-server-dan-peer-to-peer.html
- http://fcit.usf.edu/network/chap6/chap6.htm
- http://www.skullbox.net/ntoplogy.php

Source Code Socket Programming in JAVA

SOURCE CODE SOCKET PROGRAMMING



1. Source Code untuk Server

import java.lang.*;
import java.io.*;
import java.net.*;
 
class Server {
   public static void main(String args[]) {
      String data = "Toobie ornaught toobie";
      try {
         ServerSocket srvr = new ServerSocket(1234);
         Socket skt = srvr.accept();
         System.out.print("Server has connected!\n");
         PrintWriter out = new PrintWriter(skt.getOutputStream(), true);
         System.out.print("Sending string: '" + data + "'\n");
         out.print(data);
         out.close();
         skt.close();
         srvr.close();
      }
      catch(Exception e) {
         System.out.print("Whoops! It didn't work!\n");
      }
   }



2. Source Code untuk Client

 
import java.lang.*;
import java.io.*;
import java.net.*;
 
class Client {
   public static void main(String args[]) {
      try {
         Socket skt = new Socket("localhost", 1234);
         BufferedReader in = new BufferedReader(new
            InputStreamReader(skt.getInputStream()));
         System.out.print("Received string: '");
 
         while (!in.ready()) {}
         System.out.println(in.readLine()); // Read one line and output it
 
         System.out.print("'\n");
         in.close();
      }
      catch(Exception e) {
         System.out.print("Whoops! It didn't work!\n");
      }
   }


berikut adalah tampilan hasil dari kompilasi kedua source code diatas.


 
source : 

- http://www.cise.ufl.edu/~amyles/tutorials/tcpchat/

Source Code Socket Programming in C

SOURCE CODE SOCKET PROGRAMMING

  1. Source Code untuk Server

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

void error(const char *msg)
{
    perror(msg);
    exit(1);
}

int main(int argc, char *argv[])
{
     int sockfd, newsockfd, portno;
     socklen_t clilen;
     char buffer[256];
     struct sockaddr_in serv_addr, cli_addr;
     int n;
     if (argc < 2) {
         fprintf(stderr,"ERROR, no port provided\n");
         exit(1);
     }
     sockfd = socket(AF_INET, SOCK_STREAM, 0);
     if (sockfd < 0)
        error("ERROR opening socket");
     bzero((char *) &serv_addr, sizeof(serv_addr));
     portno = atoi(argv[1]);
     serv_addr.sin_family = AF_INET;
     serv_addr.sin_addr.s_addr = INADDR_ANY;
     serv_addr.sin_port = htons(portno);
     if (bind(sockfd, (struct sockaddr *) &serv_addr,
              sizeof(serv_addr)) < 0)
              error("ERROR on binding");
     listen(sockfd,5);
     clilen = sizeof(cli_addr);
     newsockfd = accept(sockfd,
                 (struct sockaddr *) &cli_addr,
                 &clilen);
     if (newsockfd < 0)
          error("ERROR on accept");
     bzero(buffer,256);
     n = read(newsockfd,buffer,255);
     if (n < 0) error("ERROR reading from socket");
     printf("Here is the message: %s\n",buffer);
     n = write(newsockfd,"I got your message",18);
     if (n < 0) error("ERROR writing to socket");
     close(newsockfd);
     close(sockfd);
     return 0;
}


2. Source Code untuk Client
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>

void error(const char *msg)
{
    perror(msg);
    exit(0);
}

int main(int argc, char *argv[])
{
    int sockfd, portno, n;
    struct sockaddr_in serv_addr;
    struct hostent *server;

    char buffer[256];
    if (argc < 3) {
       fprintf(stderr,"usage %s hostname port\n", argv[0]);
       exit(0);
    }
    portno = atoi(argv[2]);
    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if (sockfd < 0)
        error("ERROR opening socket");
    server = gethostbyname(argv[1]);
    if (server == NULL) {
        fprintf(stderr,"ERROR, no such host\n");
        exit(0);
    }
    bzero((char *) &serv_addr, sizeof(serv_addr));
    serv_addr.sin_family = AF_INET;
    bcopy((char *)server->h_addr,
         (char *)&serv_addr.sin_addr.s_addr,
         server->h_length);
    serv_addr.sin_port = htons(portno);
    if (connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0)
        error("ERROR connecting");
    printf("Please enter the message: ");
    bzero(buffer,256);
    fgets(buffer,255,stdin);
    n = write(sockfd,buffer,strlen(buffer));
    if (n < 0)
         error("ERROR writing to socket");
    bzero(buffer,256);
    n = read(sockfd,buffer,255);
    if (n < 0)
         error("ERROR reading from socket");
    printf("%s\n",buffer);
    close(sockfd);
    return 0;
}

hasil yang akan ditampilkan setelah kedua source code diatas dikompilasi dan dijalankan secara bersamaan adalah sebagai berikut.





source :
http://www.linuxhowtos.org/C_C++/socket.htm



Socket Programming

SOCKET PROGRAMMING

Socket Programming adalah pemrograman yang bertujuan agar satu program bisa berinteraksi dengan program lainnya dalam satu jaringan, biasa disebut dengan pemrograman jaringan. Socket dapat berupa :
  • Connection based or connectionless adalah koneksi yang didirikan sebelum berkomunikasi atau sebelum paket menentukan lokasi tujuan.
  • Packet based or streams based 
  • Reliable or unreliable adalah suatu kondisi dimana pesan atau paket bisa hilang, terjadi duplikasi atau bahkan rusak 

Karakteristik dari socket programming ini dapat dikenali dari domainnya masing-masing, bentuk dan transport protokol. Domain pada socket umumnya dibagi menjadi dua, yaitu :
  1. AF_UNIX atau Socket lokal : alamat format diambil dari pathname UNIX.
  2. AF_INET atau Socket networking : alamat format diambil dari host dan port number.
Setiap socket mempunyai satu bentuk protokol atau lebih, contoh :
  • TCP/IP (virtual circuits)
  • UDP (datagram)
Kegunaan dari connection-based socket programming adalah sebagai komunikasi antara client-server, server menunggu koneksi dari client sedangkan kegunaandari connectionless socket programming adalah sebagai alat komunikasi peer to peer dan setiap proses adalah sama. 

Socket terdiri dari elemen-elemen utama sebagai berikut: 
1. Protokol. 
2. Local IP. 
3. Local Port.
4. Remote IP. 
5. Remote Port. 





 source :
- http://pic.dhe.ibm.com/infocenter/iseries/v6r1m0/index.jsp?topic=/rzab6/uafunix.htm
- http://10108262.blog.unikom.ac.id/berkenalan-dengan.2zx
- http://edwincool07.blogspot.com/2012/03/pemrograman-socket.html

Rabu, 05 Februari 2014

Secure Shell (SSH)

Secure Shell (SSH)

Secure Shell atau SSH adalah protokol jaringan yang memungkinkan pertukaran data melalui saluran aman antara dua perangkat jaringan. Terutama banyak digunakan pada sistem berbasis Linux dan Unix untuk mengakses akun shell, SSH dirancang sebagai pengganti Telnet dan shell remote tak aman lainnya, yang mengirim informasi, terutama kata sandi, dalam bentuk teks sederhana yang membuatnya mudah untuk dicegat. Enkripsi yang digunakan oleh SSH menyediakan kerahasiaan dan integritas data melalui jaringan yang tidak aman seperti internet. SSH menggunakan kriptografi kunci publik untuk mengotentikasi komputer remote dan biarkan komputer remote untuk mengotentikasi pengguna, jika perlu. SSH biasanya digunakan untuk login ke mesin remote dan mengeksekusi berbagai perintah. Ini merupakan gambaran secara singkat tentang SSH.


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.







source :
- http://id.wikipedia.org/wiki/SSH
- http://merpati-xp.blogspot.com/2013/04/apa-itu-ssh.html
- http://sheila033.blogspot.com/2014/02/ssh-secure-shell.html

Secure Socket Layer (SSL)

Secure Socket Layer

Secure Socket Layer atau lebih dikenal dengan SSL merupakan sebuah protocol yang digunakan untuk browsing web secara lebih aman. Selain berguna untuk mengamankan komunikasi antara server dan klien, SSL juga memfasilitasi penggunaan enkripsi data rahasia dan membantu menjamin integritas informasi yang dipertukarkan antara website dan web browser. Open SSL adalah sebuah tool untuk mengenkripsi file dengan mengimplementasikan SSL dan protocol TSL (Transport Layer Security) di dalam bahasa C dan diimplementasikan untuk fungsi kriptografi basic. Fungsi dari SSL sendiri antara lain digunakan untuk pembuatan parameter kunci dari RSA, DH dan DSA, pembuatan sertifikat X.509, CSR dan CRL, perhitungan message digest, enkripsi dan dekripsi menggunakan chiper, pemeriksaan klien dan server SSL/TLS serta penanganan dari file bertanda S/MIME atau mail terenkripsi. Ini merupakan gambaran singkat dari SSL.





Setting SSL






Berikut adalah langkah penginstallan SSL pada Ubuntu :
1. Ketikkan perintah apt-get install ssl pada terminal. Lalu akan keluar tampilan seperti berikut.


2. Setelah proses instalasi selesai, ketikkan perintah /opt/lampp/lampp restart. Pastikan anda telah menginstal web server sebelumnya. Maka akan muncul tampilan seperti berikut.




source :
- http://adibowo.com/ssl-secure-socket-layer-pengertian-dan-definisi-ssl-certificate/
- http://kslupnvj.wordpress.com/2012/10/01/mengenkripsi-file-di-linux-menggunakan-openssl/
- http://pic.dhe.ibm.com/infocenter/wasinfo/v6r1/topic/com.ibm.websphere.edge.doc/edge/cp/admingd119.htm