Senin, 06 Juni 2016

Quantum Computation

Pengertian Quantum Computatioon

Merupakan alat hitung yang menggunakan mekanika kuantum seperti superposisi dan keterkaitan, yang digunakan untuk peng-operasi-an data. Perhitungan jumlah data pada komputasi klasik dihitung dengan bit, sedangkan perhitungan jumlah data pada komputer kuantum dilakukan dengan qubit. Prinsip dasar komputer kuantum adalah bahwa sifat kuantum dari partikel dapat digunakan untuk mewakili data dan struktur data, dan bahwa mekanika kuantum dapat digunakan untuk melakukan operasi dengan data ini. Dalam hal ini untuk mengembangkan komputer dengan sistem kuantum diperlukan suatu logika baru yang sesuai dengan prinsip kuantum.

Implementasi Quantum Computation

NASA dan Google berbagi sebuah komputer kuantum untuk digunakan di Quantum Artificial Intelligence Lab menggunakan 512 qubit D -Wave Two yang akan digunakan untuk penelitian pembelajaran mesin yang membantu dalam menggunakan jaringan syaraf tiruan untuk mencari set data astronomi planet ekstrasurya dan untuk meningkatkan efisiensi searchs internet dengan menggunakan AI metaheuristik di search engine heuristical . A.I. seperti metaheuristik dapat menyerupai masalah optimisasi global mirip dengan masalah klasik seperti pedagang keliling , koloni semut atau optimasi swarm , yang dapat menavigasi melalui database seperti labirin . Menggunakan partikel terjerat sebagai qubit , algoritma ini bisa dinavigasi jauh lebih cepat daripada komputer konvensional dan dengan lebih banyak variabel . Dengan menggunakan desentralisasi , segerombolan kuantum AI , dimungkinkan untuk mensimulasikan perilaku muncul juga, seperti Langton itu semut , yang bisa melihat munculnya kecerdasan simulasi berbasis kuantum yang bisa pergi sejauh untuk menciptakan robot selular realistis pada komputer. 

Penggunaan metaheuristik canggih pada fungsi heuristical lebih rendah dapat melihat simulasi komputer yang dapat memilih sub rutinitas tertentu pada komputer sendiri untuk memecahkan masalah dengan cara yang benar-benar cerdas . Dengan cara ini mesin akan jauh lebih mudah beradaptasi terhadap perubahan data indrawi dan akan mampu berfungsi dengan jauh lebih otomatisasi daripada yang mungkin dengan komputer normal. Selain itu, dimungkinkan untuk menggunakan metaheuristik untuk melakukan koreksi kesalahan pada perangkat lunak menggunakan jaringan syaraf tiruan dengan membandingkan pemecahan sebuah komputer kuantum dengan perangkat lunak program reguler dari komputer biasa masalah dioptimalkan . Karena komputer biasa tidak kuantum mekanik , mereka harus diprogram klasik . 

Namun, dengan menggunakan metaheuristik kuantum dimungkinkan untuk melakukan optimasi masalah menggunakan kecerdasan buatan pada sebuah komputer kuantum dan kemudian dibandingkan dengan arsitektur baris perintah dalam software konvensional pada komputer klasik , yang mungkin terlalu rumit untuk memodifikasi atau untuk memeriksa untuk kesalahan menggunakan perangkat lunak insinyur manusia.

A. Entanglement

Setelah sedikit memahami apa itu quantum computation dan quantum  computer kita akan memasuki pembahasan dari Entanglement. Entanglement sendiri masih bagian dari Quantum Computation. Apa itu Entanglement? Entanglement adalah suatu teori mekanika quantum yang menggambarkan seberapa cepat dan betapa kuatnya keterhubungan partikel-partikel pada Quantum computer yang dimana jika suatu partikel diperlakukan "A" maka akan memberikan dampak "A" juga ke partikel lainnya.

B. Pengoperasian Data Qubit

Qubit merupakan kuantum bit , mitra dalam komputasi kuantum dengan digit biner atau bit dari komputasi klasik. Sama seperti sedikit adalah unit dasar informasi dalam komputer klasik, qubit adalah unit dasar informasi dalam komputer kuantum . Dalam komputer kuantum, sejumlah partikel elemental seperti elektron atau foton dapat digunakan (dalam praktek, keberhasilan juga telah dicapai dengan ion), baik dengan biaya mereka atau polarisasi bertindak sebagai representasi dari 0 dan / atau 1. Setiap partikel-partikel ini dikenal sebagai qubit, sifat dan perilaku partikel-partikel ini (seperti yang diungkapkan dalam teori kuantum ) membentuk dasar dari komputasi kuantum. Dua aspek yang paling relevan fisika kuantum adalah prinsip superposisi dan Entanglement.

Superposisi, pikirkan qubit sebagai elektron dalam medan magnet. Spin elektron mungkin baik sejalan dengan bidang, yang dikenal sebagai spin-up, atau sebaliknya ke lapangan, yang dikenal sebagai keadaan spin-down. Mengubah spin elektron dari satu keadaan ke keadaan lain dicapai dengan menggunakan pulsa energi, seperti dari Laser - katakanlah kita menggunakan 1 unit energi laser. Tapi bagaimana kalau kita hanya menggunakan setengah unit energi laser dan benar-benar mengisolasi partikel dari segala pengaruh eksternal? Menurut hukum kuantum, partikel kemudian memasuki superposisi negara, di mana ia berperilaku seolah-olah itu di kedua negara secara bersamaan. Setiap qubit dimanfaatkan bisa mengambil superposisi dari kedua 0 dan 1. 

Dengan demikian, jumlah perhitungan bahwa komputer kuantum dapat melakukan adalah 2 ^ n, dimana n adalah jumlah qubit yang digunakan. Sebuah komputer kuantum terdiri dari 500 qubit akan memiliki potensi untuk melakukan 2 ^ 500 perhitungan dalam satu langkah. Ini adalah jumlah yang mengagumkan - 2 ^ 500 adalah atom jauh lebih dari yang ada di alam semesta (ini pemrosesan paralel benar - komputer klasik saat ini, bahkan disebut prosesor paralel, masih hanya benar-benar melakukan satu hal pada suatu waktu: hanya ada dua atau lebih dari mereka melakukannya). Tapi bagaimana partikel-partikel ini akan berinteraksi satu sama lain? Mereka akan melakukannya melalui belitan kuantum.

C. Quantum Gates

Gate sendiri dalam bahasa Indonesia adalah Gerbang.jadi Quantum Gates adalah sebuah gerbang kuantum yang dimana berfungsi mengoperasikan bit yang terdiri dari 0 dan 1 menjadi qubits. dengan demikian Quantum gates mempercepat banyaknya perhitungan bit pada waktu bersamaan.
Quantum Logic Gates, Prosedur berikut menunjukkan bagaimana cara untuk membuat sirkuit reversibel yang mensimulasikan dan sirkuit ireversibel sementara untuk membuat penghematan yang besar dalam jumlah ancillae yang digunakan.

  • Pertama mensimulasikan gerbang di babak pertama tingkat.
  • Jauhkan hasil gerbang di tingkat d / 2 secara terpisah.
  • Bersihkan bit ancillae.
  • Gunakan mereka untuk mensimulasikan gerbang di babak kedua tingkat.
  • Setelah menghitung output, membersihkan bit ancillae.
  • Bersihkan hasil tingkat d / 2.


Sekarang kita telah melihat gerbang reversibel ireversibel klasik dan klasik, memiliki konteks yang lebih baik untuk menghargai fungsi dari gerbang kuantum. Sama seperti setiap perhitungan klasik dapat dipecah menjadi urutan klasik gerbang logika yang bertindak hanya pada bit klasik pada satu waktu, sehingga juga bisa setiap kuantum perhitungan dapat dipecah menjadi urutan gerbang logika kuantum yang bekerja pada hanya beberapa qubit pada suatu waktu. Perbedaan utama adalah bahwa gerbang logika klasik memanipulasi nilai bit klasik, 0 atau 1, gerbang kuantum dapat sewenang-wenang memanipulasi nilai kuantum multi-partite termasuk superposisi dari komputasi dasar yang juga dilibatkan. Jadi gerbang logika kuantum perhitungannya jauh lebih bervariasi daripada gerbang logika perhitungan klasik.

D. Algoritma Shor

Algoritma yang ditemukan oleh Peter Shor pada tahun 1995. Dengan menggunakan algoritma ini, sebuah komputer kuantum dapat memecahkan sebuah kode rahasia yang saat ini secara umum digunakan untuk mengamankan pengiriman data. Kode yang disebut kode RSA ini, jika disandikan melalui kode RSA, data yang dikirimkan akan aman karena kode RSA tidak dapat dipecahkan dalam waktu yang singkat. Selain itu, pemecahan kode RSA membutuhkan kerja ribuan komputer secara paralel sehingga kerja pemecahan ini tidaklah efektif.

Algoritma Shor bergantung pada hasil dari teori bilangan. Hasil ini adalah: fungsi periodik. Dalam konteks algoritma Shor, n akan menjadi bilangan yang akan difaktorkan. Jika dua bilangan tersebut adalah coprime itu berarti bahwa pembagi umumnya adalah 1. Perhitungan fungsi ini untuk jumlah eksponensial, dari itu akan mengambil waktu eksponensial pada komputer klasik. Algoritma Shor memanfaatkan paralelisme kuantum untuk melakukan jumlah eksponensial operasi dalam satu langkah.

Sumber :
  • https://amoekinspirasi.wordpress.com/2014/05/15/pengertian-quantum-computing-dan-implementasinya/
  • http://cute-periidola.blogspot.co.id/2014/05/pengertian-quantum-computing.html
  • http://rifqo-muhammad.blogspot.co.id/2016/04/quantum-computation.html
  • http://mojomakearocket.blogspot.co.id/2015/04/tugas-softskill-pertemuan-2-quantum.html

Parallel Computation

Pengertian Parallel Computation 
Parallel computation adalah penggunakan lebih dari satu CPU untuk menjalankan sebuah program secara simultan. Idealnya, parallel processing membuat programberjalan lebih cepat karena semakin banyak CPU yang digunakan. Tetapi dalam praktek,seringkali sulit membagi program sehingga dapat dieksekusi oleh CPU yang berbea-beda tanpa berkaitan di antaranya, Maksudnya program dijalankan dengan banyak CPU secara bersamaan dengan tujuan untuk membuat program yang lebih baik dan dapat diproses dengan cepat. Dapat diambil kesimpulan bahwa pada parallel processing berbeda dengan istilah multitasking, yaitu satu CPU mengangani atau mengeksekusi beberapa program sekaligus, parallel processing dapat disebut juga dengan istilah parallel computing.

A. Parallelism Concept

Konsep program parallel :
  • Memerintahkan set instruksi (pandangan programmer)
  • File executable (pandangan sistem operasi)

Komputasi paralel didefinisikan sebagai penggunaan sekumpulan sumberdaya komputer secara simultan untuk menyelesaikan permasalahan komputasi. Secara prinsip komputer paralel membagi permasalahan sehingga menjadi lebih kecil untuk dikerjakan oleh setiap prosesor / CPU dalam waktu yang bersamaan/simultan / concurrent dan prinsip ini disebut paralelisme.

Sebenarnya prinsip paralelisme juga sudah diterapkan dalam komputer serial misal dengan pipelining dan superscalar-nya namun demikian tidak memberikan solusi terbaik dalam hal meningkatkan performansi dikarenakan terbatasnya kemampuan untuk menambah kecepatan prosesor dan fenomena memory bottleneck.  Tingkat paralelisme dalam komputasi khususnya pada prosesor di antaranya :
  • Paralelisme bit-level. Contoh : prosesor 32 bit dan prosesor 64 bit.
  • Paralelisme instruction set-level. Contoh : CISC dan RISC.
  • Paralelisme thread-level. Contoh : Intel hyperthreading.

Paralelisme lain yang juga berkembang dalam komputasi paralel adalah paralelisme data dan paralelisme fungsi. Perkembangan teknologi prosesor : prosesor singlecore superscalar, chip multiprocessor, prosesor multicore, hingga prosesor cell memberikan kontribusi terhadap peningkatan performansi komputer parallel.

B. Distributed Processing

Pemrosesan paralel adalah pendekatan komputasi untuk meningkatkan tingkat di mana satu set data diolah dengan pengolahan bagian yang berbeda dari data pada waktu yang sama secara simultan atau bersamaan pada sebuah komputer dan berfungsi memecah beban besar menjadi beberapa beban kecil untuk mempercepat proses penyelesaian masalah.

Didistribusikan pengolahan paralel menggunakan pemrosesan paralel pada beberapa mesin. Salah satu contoh dari hal ini adalah bagaimana beberapa komunitas memungkinkan pengguna untuk mendaftar dan mendedikasikan komputer mereka sendiri untuk memproses beberapa data set yang diberikan kepada mereka oleh server. Ketika ribuan pengguna mendaftar untuk ini, banyak data dapat diproses dalam jumlah yang sangat singkat.

Tipe lain dari komputasi paralel yang kadang-kadang disebut "didistribusikan" adalah gagasan dari sebuah komputer paralel cluster. Sebuah cluster akan banyak CPU terhubung melalui kecepatan tinggi koneksi ethernet ke hub sentral (Server) yang memberi masing-masing beberapa pekerjaan yang harus dilakukan. Metode cluster mirip dengan metode yang dijelaskan dalam paragraf di atas, kecuali bahwa semua CPU secara langsung terhubung ke server, dan satu-satunya tujuan mereka adalah untuk melakukan perhitungan yang diberikan kepada mereka.

Parallel distributed computing dapat dibentuk dari :
  • Ada : digunakan konsep pertemuan yang menggabungkan fitur RPC dan monitor.
  • PVM (Parallel Virtual Machine) untuk mendukung workstation clusters
  • MPI (Message-Passing Interface) programming GUI untuk parallel computers.

C. Architectural Parallel Computer

Terdapat 4 macam arsitektur dari komputer paralel, yaitu:
  1. SISD (Single Instruction, Single Data) adalah satu-satunya yang menggunakan arsitektur Von Neumann. Ini dikarenakan pada model ini hanya digunakan 1 processor saja. Oleh karena itu model ini bisa dikatakan sebagai model untuk komputasi tunggal. Sedangkan ketiga model lainnya merupakan komputasi paralel yang menggunakan beberapa processor.
  2. SIMD(Single Instruction, Multiple Data) menggunakan banyak processor dengan instruksi yang sama, namun setiap processor mengolah data yang berbeda. Sebagai contoh kita ingin mencari angka 27 pada deretan angka yang terdiri dari 100 angka, dan kita menggunakan 5 processor. Pada setiap processor kita menggunakan algoritma atau perintah yang sama, namun data yang diproses berbeda. Misalnya processor 1 mengolah data dari deretan / urutan pertama hingga urutan ke 20, processor 2 mengolah data dari urutan 21 sampai urutan 40, begitu pun untuk processor-processor yang lain. Beberapa contoh komputer yang menggunakan model SIMD adalah ILLIAC IV, MasPar, Cray X-MP, Cray Y-MP, Thingking Machine CM-2 dan Cell Processor (GPU).
  3. MISD(Multiple Instruction, Single Data) menggunakan banyak processor dengan setiap processor menggunakan instruksi yang berbeda namun mengolah data yang sama. Hal ini merupakan kebalikan dari model SIMD. Untuk contoh, kita bisa menggunakan kasus yang sama pada contoh model SIMD namun cara penyelesaian yang berbeda. Pada MISD jika pada komputer pertama, kedua, ketiga, keempat dan kelima sama-sama mengolah data dari urutan 1-100, namun algoritma yang digunakan untuk teknik pencariannya berbeda di setiap processor. Sampai saat ini belum ada komputer yang menggunakan model MISD.
  4. MIMD( Multiple Instruction, Multiple Data) menggunakan banyak processor dengan setiap processor memiliki instruksi yang berbeda dan mengolah data yang berbeda. Namun banyak komputer yang menggunakan model MIMD juga memasukkan komponen untuk model SIMD. Beberapa komputer yang menggunakan model MIMD adalah IBM POWER5, HP/Compaq AlphaServer, Intel IA32, AMD Opteron, Cray XT3 dan IBM BG/L.
Sumber :

  • http://syaefulhamzah.blogspot.co.id/2013/06/v-behaviorurldefaultvmlo.html
  • http://seto.citravision.com/berita-46-parallel-computation--parallelism-concept.html
  • http://seto.citravision.com/berita-47-parallel-computation--distributed-processing.html
  • http://winjor12.blogspot.co.id/2013/07/parallel-computation.html




Pemrograman Jaringan (Get IP, Get Name, IP to Name, NSLOOKUP dan Aplikasi Client-Server (JAVA))

Get IP 

Penjelasan dibawah ini merupakan penjelasan bagaimana cara untuk mendapatkan IP Address dengan program Java. Langkah awalnya buat file baru dalam notepad lalu masukkan source code dibawah ini. Setelah itu simpan file dengan nama getip.java. Kemudian jalankan program di Command Prompt. 

Source Code :
import java.net.*;
public class getip {
          public static void main(String args[]) throws Exception {
          InetAddress host = null;
          host = InetAddress.getLocalHost();
          byte ip[] = host.getAddress();
                 for (int i=0; i<ip.length; i++) {
                     if (i > 0) {
                     System.out.print(".");
                     }
                 System.out.print(ip[i] & 0xff);
                 }
          System.out.println();
          }

}

Logika Program : 

Pada listing diatas program pertama-tama akan mengimport package java.net. Lalu, program akan membuat class dengan nama getip. Pada class tersebut lalu program akan mendeklarasikan variabel InetAddress host yang bernilai null, variabel host yang bernilai host.getAddress() dengan tujuan byte ip akan mendapatkan nilai dari host address.

Selanjutnya, terdapat perulangan for. Jika kondisinya bernilai benar saat variabel i bernilai 0 dan nilai variabel i lebih kecil dari IP maka nilai i akan bertambah.

Output Program:

Get Name

Penjelasan dibawah ini merupakan penjelasan bagaimana cara untuk mendapatkan Name dengan program Java. Langkah awalnya buat file baru dalam notepad lalu masukkan source code dibawah ini. Setelah itu simpan file dengan nama getName.java. Kemudian jalankan program di Command Prompt. 

Source Code :
import java.net.*;
public class getName {
          public static void main(String args[]) throws Exception {
          InetAddress host = null;
          host = InetAddress.getLocalHost();
          System.out.println("Nama komputer Anda: " +
          host.getHostName());
         }
}

Logika Program :

Pada listing diatas program pertama-tama akan mengimport package java.net. Lalu, program akan membuat class dengan nama getName. Pada class tersebut lalu program akan mendeklarasikan variabel InetAddress host yang bernilai null, variabel host yang bernilai InetAddress.getLocalHost dengan tujuan host yang didapatkan dari niilai InetAddress pada localhost. Selanjutnya, program akan mencetak hasil dari programnya dengan cara memanggil variabel host.getHostName().

Output Program:

IP to Name
Penjelasan dibawah ini merupakan penjelasan bagaimana cara untuk mendapatkan Name dari IP dengan program Java. Langkah awalnya buat file baru dalam notepad lalu masukkan source code dibawah ini. Setelah itu simpan file dengan nama IPtoName.java. Kemudian jalankan program di Command Prompt. 

Source Code:
import java.net.*;
public class IPtoName {public static void main (String args[]) {
if (args.length == 0) {
System.out.println ("Pemakaian: java IPtoName <IP address>");
System.exit(0);
}
String host = args [0];
InetAddress address  = null;
try {
address = InetAddress.getByName(host);
} catch (UnknownHostException e) {
System.out.println ("invalid IP - malformed IP");
System.exit(0);
}
System.out.println(address.getHostName());
}
}

Logika Program:
Pada listing diatas program pertama-tama akan mengimport package java.net. Lalu, program akan membuat class dengan nama IPtoName. Selanjutnya terdapat percabangan if dimana jika kondisi panjang string host sama dengan 0 bernilai true maka program akan cetak nama pemakai dan IPtoName, tetapi jika kondisi bernilai false program akan mengulang. lalu pada program terdapat try catch dimana jika tidak sesuai kondisi maka program akan tercetak invalid IP, jika sesuai kondisinya program akan mencetak hostname.

Output Program:

NSLOOKUP

Penjelasan dibawah ini merupakan penjelasan bagaimana cara untuk mendapatkan IP dengan HostName dengan program Java. Langkah awalnya buat file baru dalam notepad lalu masukkan source code dibawah ini. Setelah itu simpan file dengan nama NSLookup.java. Kemudian jalankan program di Command Prompt. 

Source Code:
import java.net.*;
public class NsLookup {
public static void main(String args[]) {
if (args.length == 0) {
System.out.println("Pemakaian: bagus-PC 192.168.0.15");
System.exit(0);
}
String host = args[0];
InetAddress address = null;
try {
address = InetAddress.getByName(host);
} catch(UnknownHostException e) {
System.out.println("Unknown host");
System.exit(0);
}
byte[] ip = address.getAddress();
for (int i=0; i<ip.length; i++) {
if (i > 0) System.out.print(".");
System.out.print((ip[i]) & 0xff);
}
System.out.println();
}
}

Logika Program:
Pada listing diatas program pertama-tama akan mengimport package java.net. Lalu, program akan membuat class dengan nama NsLookup. pada program diatas terdapat percabangan if yang berisi jika panjang string sama dengan 0 maka program akan mencetak "Pemakaian: java NsLookup <hostname> " . lalu terdapat try catch yang berisi jika tidak sesuai dengan kondisi yang ada maka program akan mencetak Unknown host, tetapi jika kondisinya sesuai maka program akan mencetak hasil akhir dari program.

Output Program:


Aplikasi Client-Server
Penjelasan dibawah ini merupakan penjelasan bagaimana cara untuk membuat aplikasi Client-Server dengan program Java. Langkah awalnya buat file baru dalam notepad lalu masukkan source code dibawah ini. Setelah itu simpan file dengan nama simpleServer.java dan simpleClient.java. Kemudian jalankan program di Command Prompt. 

Source Code: simpleServer.java
import java.io.*;
import java.net.*;
public class simpleServer {
public final static int TESTPORT = 5000;
public static void main(String args[]) {
ServerSocket checkServer = null;
String line;
BufferedReader is = null;
DataOutputStream os = null;
Socket clientSocket = null;
try {
checkServer = new ServerSocket(TESTPORT);
System.out.println("Aplikasi Server hidup ...");
} catch (IOException e) {
System.out.println(e);
}
try {
clientSocket = checkServer.accept();
is = new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));
os = new DataOutputStream(clientSocket.getOutputStream());
} catch (Exception ei) {
ei.printStackTrace();
}
try {
line = is.readLine();
System.out.println("Terima : " + line);
if (line.compareTo("salam") == 0) {
os.writeBytes("salam juga");
} else {
os.writeBytes("Maaf, saya tidak mengerti");
}
} catch (IOException e) {
System.out.println(e);
}

try {
os.close();
is.close();
clientSocket.close();
} catch (IOException ic) {
ic.printStackTrace();
}
}

}

Source Code : simpleClient.java
import java.io.*;
import java.net.*;
public class simpleClient {
public final static int REMOTE_PORT = 5000;
public static void main(String args[]) throws Exception {
Socket cl = null;
BufferedReader is = null;
DataOutputStream os = null;
BufferedReader stdin = new BufferedReader(new
InputStreamReader(System.in));
String userInput = null;
String output = null;
// Membuka koneksi ke server pada port REMOTE_PORT
try {
cl = new Socket(args[0], REMOTE_PORT);
is = new BufferedReader(new
InputStreamReader(cl.getInputStream()));
os = new DataOutputStream(cl.getOutputStream());
} catch(UnknownHostException e1) {
System.out.println("Unknown Host: " + e1);
} catch (IOException e2) {
System.out.println("Erorr io: " + e2);
}
// Menulis ke server
try {
System.out.print("Masukkan kata kunci: ");
userInput = stdin.readLine();
os.writeBytes(userInput + "\n");
} catch (IOException ex) {
System.out.println("Error writing to server..." + ex);
}
// Menerima tanggapan dari server
try {
output = is.readLine();
System.out.println("Dari server: " + output);
} catch (IOException e) {
e.printStackTrace();
}
// close input stream, output stream dan koneksi
try {
is.close();
os.close();
cl.close();
} catch (IOException x) {
System.out.println("Error writing...." + x);
}
}
}

Logika Program:
Untuk menjalankan program diatas pertama kita jalankan terlebih dahulu program "simpleServer.java". Setelah itu tunggu beberapa waktu hingga keluar hasilnya yaitu "Aplikasi Server hidup...". Jika sudah jalankan program "simpleClient.java" lalu tulis "salam" sebagai string yang sudah dijadikan kata kunci pada server.

Output Program:




Pemrograman Jaringan (Proxy, Web, Mail, FTP, DNS) Server

Dalam artikel ini kita akan membahas tentang beberapa materi yang berkaitan dengan pemrograman jaringan yang bertujuan untuk memenuhi tugas dari mata kuliah pemrograman jaringan. materi yang akan dibahas adalah :

  • Proxy Server
  • Web Server
  • Mail Server
  • FTP Server
  • DNS Server
A. Proxy Server

Proxy Server merupakan server yang memiliki fungsi sebagai tempat menyimpan halaman - halaman website yang dikunjungi. Fungsinya sebagai cache,  jika kita ingin ke halaman website yang sama maka akan mengambil dari  proxy server, tetapi jika situs yang akan dikunjungi belum ada  maka akan diteruskan ke server sebenarnya. Selain itu proxy server juga berfungsi sebagai security seperti untuk memblokir situs yang berbahaya.

Cara Kerja Proxy Server

Cara kerja dari proxy dengan cara mendengarkan request dari client internal lalu mengirim request tersebut ke jaringan external sehingga seolah-olah proxy server itu sendiri yang menjadi client. Saat proxy server menerima sresponrespon dan server publik, proxy memberikan respon tersebut ke client yang asli seolah-olah publik server.

Manfaat Proxy Server

Pada Proxy server umumnya terdapat 2 macam manfaat yaitu :
A. Meningkatkan Kinerja Jaringan 
Proxy server memiliki kemampuan untuk menyimpan data permintaan dari client, permintaan yang sama dengan permintaan sebelumnya hanya akan di ambil dari server proxy. jika seseorang pernah membuka situs yang sama maka tidak perlu dihubungkan langsung ke situs sumbernya, tetapi cukup hanya diambil dari penyimpanan server proxy. 

B. Filter Permintaan
Proxy server bisa digunakan untuk melakukan filter permintaan data dari situs.Artinya proxy server dapat melakukan filter ke situs yang boleh atau tidak boleh untuk dkunjungi. Selain itu, proxy server  bisa digunakan sebagai filter untuk aplikasi client yang bisa menggunakan akses terhadap internet. Dalam hal ini proxy server berfungsi sebagai filter terhadap gangguan internet.

Fungsi Utama Proxy Server

1. Connection Sharing : berfungsi sebagai gateway yang dijadikan batas antara jaringan lokal dan jaringan luar. Sehingga koneksi dari jaringan lokal ke internet akan menggunakan sambungan yang dimiliki oleh gateway secara bersamaan.
2. Filtering : berfungsi untuk melindungi jaringan lokal dari gangguan atau serangan dari jaringan luar. selain itu, dapat juga untuk menolak situs web tertentu di waktu tertentu.
3. Caching : berfungsi untuk menyimpan objek-objek yang merupakan hasil permintaan dari pengguna yang di peroleh dari internet.

B. Web Server

Web server merupakan suatu server yang memberikan layanan ke klien yang meminta informasi  mengenai tentang web. Web server terdapat dua komponen yaitu komputer itu sendiri dan software web server yang digunakan. 

Fungsi Web Server

Fungsi utama dari web server adalah mentransfer data atas permintaan pengguna melalui protokol komunikasi yang sudah ditentukan. Karena halaman web dapat berupa berkas teks, gambar, video dan lain-lainnya penggunaan web server berfungsi juga sebagai mentransfer semua aspek pemberkasan dalam sebuah web yang berkaitan termasuk teks,video, gambar dan lainnya.

Cara Kerja Web Server
  • Web server, untuk berkomunikasi dengan client-nya (web browser) mempunyai protokol sendiri, yaitu HTTP (hypertext tarnsfer protocol).
  • Dengan protokol ini komunikasi antar web server dengan client-nya dapat saling dimengerti dan lebih mudah.
  • Format data pada world wide web adalah SGML(standar general markup language), Tapi para pengguna internet saat ini lebih banyak menggunakan format HTML (hypertext markup language) karena penggunaannya lebih sederhana dan mudah dipelajari.
C. Mail Server

Mail Server merupakan perangkat lunak program yang mendistribusikan file atau informasi sebagai respon dari permintaan yang dikirim via email. Selain itu, juga digunakan pada bitnet sebagai penyedia layanan serupa ftp. Dan juga mail server dapat dikatakan sebagai aplikasi yang digunakan untuk penginstallan email.

Server Pada Mail Server

Pada Mail server terdapat 2 server yaitu :

  • Outgoing Server (Sending email) : Protocol server yang menangani adalah SMTP (Simple Mail Transfer Protocol) pada port 25.
  • Incoming Server (Receiving email) : Protocol server yang menangani adalah POP3 (Post Office Protocol) pada port 110 atau IMAP (Internet Message Access Protocol) pada port 143.
Cara Kerja Mail Server

Cara kerja mail server dapat kita analogikan sebagai sebuah perusahaan pos yang bekerja mengantarkan surat yang dikirim oleh client dan juga menyimpan file dan mengorganisasikan pesan dari semua clientnya. Perusahaan ini terdiri dari tukang pos yang tugasnya mengantar pesan dan sebuah kantor yang mana kantor itulah pusat pengorganisasian mail yang keluar masuk server.

D. FTP Server

FTP server merupakan suatu protokol yang berfungsi sebagai pertukaran file di dalam suatu jaringan komputer yang mendukund protokol TCP/IP. Ada dua hal utama pada FTP yaitu FTP server dan FTP client. Selain itu FTP dapat juga disebut sebuah protokol internet yang berjalan di dalam lapisan aplikasi yang merupakan standar dari pertransferan file komputer antara mesin-mesin didalam sebuah framework.

Konsep FTP


Pada FTP terdapat sebuah model FTP, model FTP adalah standar yang mampu mendeskripsikan sebuah operasi sederhana. Model FTP memiliki tugas mendefinisikan perintah yang berpartisipasi dalam sebuah perpindahan file dari kedua kanal komunikasi yang terbentuk serta komponen-komponen FTP yang mengatur kedua kanal dan definisi terminologi yang digunakan untuk komponen-komponen tersebut.Sesuai namanya yaitu file transfer protocol (FTP) yang berarti segala prosesnya masuk dalam protokol client dan server. Client FTP disebut sebagai user, dimana para pengguna FTP melakukan perintah dan proses dari mesin yang disebut client.

Proses ini berupa serangkaian operasi pada perangkat lunak FTP. Sedangkan pengertian File transfer protocol server atau FTP server adalah tempat dimana FTP client terhubung dan melakukan proses yang berlangsung.

Fungsi FTP

Fungsi FTP adalah Melakukan transfer file antara komputer yang terhubung melalui jaringan, termasuk internet. Dalam bahasa teknis, FTP dikenal sebagai protokol jaringan yang memungkinkan transfer file antara komputer yang tersambung pada TCP/IP yang berbasis jaringan. FTP juga berfungsi untuk mempermudah dalam pembagian file-file., mempercepat secara tidak langsung atau implicyt menggunakan komputer remote, melindungi user dari berbagai file storage system antar host.

Cara Kerja FTP

Cara kerja utamanya digunakan dalam pengembangan situs web untuk menjalankan fungsi-fungsi FTP yaitu mentransfer halaman file dari komputer Client ke situs web komputer hosting, juga digunakan oleh situs yang menyediakan fasilitas download file. Ini juga digunakan untuk file intra-jaringan pada sistem jaringan komputer kecil.

E. DNS Server

DNS server adalah sebuah sistem yang dikembangkan untuk mengelola penamaan suatu komputer, layanan atau sumber daya dalam jarinagn yang disusun secara hirarki dan terdistribusi. Secara singkat DNS dapat digunakan untuk mengaitkan antara alamat IP suatu server dengan nama domain dalam format Fully Qualified Domain Name (FQDN).

Cara Kerja DNS Server

Berikut ini merupakan cara kerja dari dns server yaitu :
  1. Mencari alamat host pada file HOSTS, bila ada berikan alamatnya dan proses selesai.
  2. Mencari pada data cache yang dibuat oleh resolver untuk menyimpan hasil permintaan sebelumnya, bila ada simpan dalam data cache, berikan hasilnya dan selesai.
  3. Mencari pada alamat Server DNS pertama yang telah ditentukan oleh user.
  4. Apabila pada Server DNS pertama tidak ditemukan pencarian dilanjutkan pada Server DNS kedua dan seterusnya dengan proses yang sama seperti diatas.
Fungsi DNS Server
  • Menerjemahkan nama-nama host(hostnames) menjadi nomor IP(IPaddress) ataupun sebaliknya, sehingga nama tersebut mudah diingat oleh pengguna internet
  • Memberikan suatu informasi tentang suatu host keseluruh jaringan internet.
Keunggulan DNS Server

  • DNS sangat mudah karena user tidak lagi direpotkan untuk mengingat IP address sebuah computer cukup hostname (nama Komputer).
  • Konsisten, IP address sebuah computer boleh berubah tapi hostname tidak berubah.