web socket

                                      

 PEMROGRAMAN JARINGAN
Latar belakang 
     Seiring dengan pesatnya perkembangan networking di dunia ternyata juga sangat memberi dampak positif yang besar terhadap industri-industri pembuat game seperti yang kita rasakan saat ini dimana banyak game online yang bermunculan di internet diantarannya seperti xian, ragnarok, warcraf dan masih banyak lagi. Bagi anda para pembuat, pengembang game ataupun yang tertarik untuk membuat game, tentunya sangat menginginkan game yang dihasilkan tidak hanya berjalan secara stand alone tetapi juga di dalam jaringan (multi player). Dalam hal ini, Java dapat menjawab dan memberi solusi kepada para developer untuk membuat game baik di jaringan local maupun global dengan menyertakan pemrograman socket agar  permasalahan-permasalahan diatas dapat teratasi. Socket adalah sebuah Class yang disediakan oleh beberapa bahasa pemrograman. Dengan socket, sebuah aplikasi di suatu komputer dapat membuka koneksi untuk menghubungi aplikasi lain di komputer lainnya. Tentu saja aplikasi di komputer yang dihubungi menerima koneksi juga menggunakan socket. Dengan kata lain socket adalah suatu Class yang digunakan oleh aplikasi untuk saling berhubungan. Paradigma pada aplikasi jaringan berlaku model client-server. Aplikasi yang menginisialisasi koneksi, disebut aplikasi client. Sedangkan aplikasi yang menerima inisialisasi disebut sebagai aplikasi server. Oleh karena itu, jika kita membangun suatu aplikasi  jaringan yang lengkap, maka kita harus membuat aplikasi client maupun aplikasi server. 
Sejarah Socket
    Socket adalah mekanisme komunikasi yang memungkinkan terjadinya pertukaran data antar program atau proses baik dalam satu mesin maupun antar mesin. Gaya pemrograman socket sendiri berawal dari sistem Unix BSD yang terkenal dengan kepeloporannya pada  bidang penanganan jaringan, sehingga sering disebut BSD Socket. Socket pertama kali diperkenalkan di sistem Unix BSD versi 4.2 tahun 1983 sebagai kelanjutan dari implementasi  protokol TCP/IP yang muncul pertama kali pada sistem Unix BSD 4.1 pada akhir 1981. Hampir setiap variant Unix dan Linux mengadopsi BSD Socket. Pada lingkungan Unix, socket memberikan keleluasaan pemrograman gaya Unix yang terkenal dengan ideologinya, Semua di Unix/Linux adalah file Komunikasi antar program dapat berlangsung lewat penggunaan deskriptor file standar Unix dengan bantuan socket. Keunggulan dari penggunaan socket adalah anda dapat melakukan komunikasi antar  proses/program melalui jaringan berbasis yang TCP/IP tentunya, bahkan dengan program lain yang berjalan pada platform non-unix seperti Microsoft Windows, sepanjang program tersebut  berbicara dalam protokol transfer yang sama. Fasilitas-fasilitas yang disediakan oleh mesin unix seperti rlogin, ssh, ftp, dan lain-lain menggunakan socket sebagai sarana komunikasi mereka. Socket dibentuk dan digunakan dengan cara yang berbeda. Komunikasi socket terutama diciptakan untuk tujuan menjembatani komunikasi antara dua buah program yang dijalankan pada mesin yang berbeda. Jangan khawatir, ini tentu saja berarti dua program pada mesin yang sama dapat juga saling berkomunikasi. Kelebihan lain dari komunikasi socket adalah mampu menangani banyak klien sekaligus (multiple clients).
Jenis Socket
 Ada dua golongan socket di Unix yang paling umum dipakai yaitu:
·         Socket Lokal atau AF_UNIX
·      Socket Lokal adalah socket yang melakukan komunikasi dengan perantaraan sebuah file yang biasanya diletakkan pada direktori /tmp atau /usr/tmp ataupun /var/tmp. Socket semacam ini digunakan umumnya terbatas untuk komunikasi antar aplikasi dalam satu mesin.
.
 Pengertian Socket
      Socket adalah sebuah Class yang disediakan oleh beberapa bahasa pemrograman. Dengan socket, sebuah aplikasi di suatu komputer dapat Tentu saja aplikasi di komputer yang dihubungi menerima koneksi juga menggunakan socket. Dengan kata lain socket adalah suatu Class yang digunakan oleh aplikasi untuk saling berhubungan. berikut ini menunjukkan bagaimana suatu aplikasi berhubungan dengan aplikasi lainnya.
    Paradigma pada aplikasi jaringan berlaku model client-server. Aplikasi yang menginisialisasi koneksi, disebut aplikasi client. Sedangkan aplikasi yang menerima inisialisasi disebut sebagai aplikasi server. Oleh karena itu, jika kita membangun suatu aplikasi jaringan yang lengkap, maka kita harus membuat aplikasi client maupun aplikasi server.
    Lebih lanjut mengenai socket, ada dua jenis socket yang bisa digunakan untuk membangun aplikasi, yakni TCP Socket dan UDP Socket. Perbedaan utamanya adalah, di model TCP digunakan konsep connection oriented dan reliable data transfer, sedangkan di model UDP digunakan konsep connectionless oriented dan unreliable data transfer. Sebuah aplikasi dapat menggunakan salah satu dari jenis Socket tersebut disesuaikan dengan peruntukan aplikasi tersebut. Aplikasi berbasis TCP biasanya adalah aplikasi yang membutuhkan ketepatan data hingga 100% tapi tidak memperdulikan
lama pengiriman, sedangkan aplikasi berbasis UDP biasanya adalah aplikasi yang tidak terlalu mempedulikan ketepatan data tapi sangat peduli dengan delay pengiriman. Contoh aplikasi TCP adalah web browser, sedangkan UDP adalah Video Converence.
     Untuk membangun aplikasi hal pertama yang perlu dilakukan adalah menganalisa jenis aplikasi kita, kebutuhan bandwidth, kebutuhan ketersampaian data dan sensitifitas terhadap delay. Berdasarkan hal ini kita bisa menentukan protokol apa yang kita gunakan, entah TCP atau UDP
Socket Networking atau AF_INET
Socket Networking ditujukan untuk komunikasi antar aplikasi antar mesin dalam lingkungan jaringan TCP/IP. Identifikasi socket dilakukan dengan sebuah service identifier 
yaitu berupa nomor port TCP/IP yang dapat di sambung oleh client. Socket Networking memiliki beberapa jenis, yang paling umum digunakan yaitu:
·Socket Stream atau SOCK_STREAM
Socket Stream adalah socket komunikasi full-duplex berbasis aliran (stream) data. Pada model komunikasi Socket Stream, koneksi dua aplikasi harus dalam kondisi tersambung dengan benar untuk dapat bertukar data. Ini dapat dianalogikan seperti komunikasi telepon. Jika sambungan telepon di salah satu titik putus, maka komunikasi tidak dapat terjadi. Koneksi model seperti ini akan menjamin data dapat dipertukarkan dengan baik, namun memiliki kelemahan dalam hal penggunaan jalur data yang relatif besar dan tidak boleh terputus.
  Socket Datagram atau SOCK_DGRAM
Socket Datagram berkomunikasi dengan cara yang berbeda. Socket ini tidak membutuhkan koneksi yang tersambung dengan benar untuk mengirimkan dan menerima data. Model koneksi semacam ini tidak dapat menjamin data dapat dipertukarkan dengan baik, namun memiliki keunggulan dalam hal penggunaan jalur data yang minimal. Socket Datagram dapat dianalogikan dengan komunikasi yang terjadi pada kelas, misalnya pada saat guru melakukan broadcasting
materi pelajaran untuk diterima oleh setiap murid. Tidak ada yang dapat menjamin materi pelajaran dapat diterima oleh semua murid dengan baik, kecuali diterapkan metoda rechecking. Rechecking ini dapat dilakukan baik oleh guru maupun murid. Guru bertanya untuk memastikan jawaban dari murid benar, atau murid bertanya untuk memastikan kebenaran materi yang diterimanya. Socket Datagram pun menggunakan metoda ini untuk menjamin pengiriman data dapat dilakukan dengan baik.
Sekilas Tentang Socket, TCP Dan UDP
Mengenal Socket
Pengertian socket adalah interface pada jaringan yang menjadi titik komunikasi antarmesin pada Internet Protocol, dan tentunya tanpa komunikasi ini, tidak akan ada  pertukaran data dan informasi jaringan. Socket terdiri dari elemen-elemen utama sebagai berikut:
·         Protokol.  
·         Local IP.
·         Local Port.
·         Remote IP.
Remote Port. Dalam komunikasi antara dua pihak, tentunya harus digunakan kesepakatan aturan dan format yang sama agar komunikasi dapat dimengerti. Seperti halnya dua orang yang menggunakan bahasa yang sama, maka bahasa di sini berfungsi sebagai protokol. Protokol yang digunakan dalam socket dapat menggunakan TCP ataupun UDP. Contoh komunikasi sederhana adalah komunikasi antara komputer A dan komputer B. Baik komputer A maupun komputer B harus memiliki identitas unik, yang direpresentasikan oleh IP masing-masing. Komunikasi yang terjadi melalui port, sehingga baik komputer A maupun komputer B harus memiliki port yang dapat diakses satu sama lain.
TCP dan UDP
Pemrograman socket adalah cara untuk menggunakan komponen/API (Application Programming Interface) socket untuk membuat sebuah aplikasi. Aplikasi socket umumnya terdiri dari dua kategori berdasarkan pengiriman datanya, yaitu: 
·     Datagram socket (menggunakan UDP).  
·     Stream socket (menggunakan TCP).
Terdapat perlakuan yang berbeda antara UDP dan TCP, walaupun sama-sama berfungsi sebagai protokol pertukaran data.
    UDP tidak memerlukan proses koneksi terlebih dahulu untuk dapat mengirimkan data,  paket-paket data yang dikirimkan UDP bisa jadi melalui rute yang berbeda-beda, sehingga hasil yang diterima bisa jadi tidak berurutan.
Contohnya jika aplikasi socket pengirim mengirimkan berturut-turut pesan 1, pesan 2, dan pesan 3, maka aplikasi socket penerima belum tentu mendapatkan pesan yang berurutan dimulai dari pesan 1, pesan 2, dan terakhir pesan 3. Bisa saja pesan 2 terlebih dulu diterima, menyusul pesan-pesan yang lain, atau berbagai kemungkinan lainnya. Bahkan, dapat terjadi  pesan yang dikirimkan tidak sampai ke penerima karena kegagalan pengiriman paket data. 
­­­Tidak demikian halnya dengan stream socket yang menggunakan TCP. Jenis ini mengharuskan terjadinya koneksi terlebih dahulu, kemudian mengirimkan paket-paket data secara berurutan, penerima juga dijamin akan menerima data dengan urutan yang benar,
dimulai dari data pertama yang dikirimkan hingga data terakhir. TCP dapat menangani data yang hilang, rusak, terpecah, ataupun terduplikasi.
 Dari sekilas perbedaan ini, kita dapat menarik kesimpulan bahwa aplikasi socket yang menggunakan TCP memerlukan pertukaran data dua arah yang valid. Sedangkan, aplikasi socket yang menggunakan UDP lebih memprioritaskan pada pengumpulan data.
Karena itu aplikasi socket dengan TCP sering diterapkan untuk aplikasi chat, transfer
file, ataupun transaksi-transaksi penting. Sedangkan aplikasi socket dengan UDP cocok diterapkan untuk aplikasi monitoring jaringan, game online, dan aplikasi-aplikasi broadcast.
Pemrograman Socket menggunakan TCP
Detil dari proses tersebut adalah:  
·         Untuk bisa melakukan koneksi client server, program server harus berjalan terlebih dahulu
·         Di sisi server disediakan sebuah socket, yang disebut welcoming socket yang fungsinya untuk mendeteksi adanya permintaan koneksi dari sisi client.
·         Di sisi client terdapat client socket. Jika ingin menghubungi server, maka melalui client socket-nya, client membuat inisialisai koneksi ke welcoming socket milik server, dengan mode three-way handshake.
·         Setelah welcoming socket menerima inisialisasi koneksi dari client socket, aplikasi server akan membuat connection socket di sisi server. Dengan connection socket ini, client socket dan connection socket berinteraksi satu sama lain untuk mengirim dan menerima data.
Berikut adalah contoh aplikasi TCP dengan skenario:
·         Client membaca inputan dari keyboard, kemudian mengirimkan hasilnya ke server melalui socket-nya.
·         Server membaca data yang dikirim oleh client di connection socket
·         Server mengubah data menjadi huruf besar
·         Server mengirimkan data yang telah diubah menuju client melalui connection socket-nya.
·         Client membaca data yang dikirim oleh server dari client socket-nya. Kemudian menampilkan data tersebut di monitor
Pemrograman Socket menggunakan UDP
Contoh aplikasi untuk UDP socket berikut ini menggunakan kasus yang sama dengan kasus yang digunakan oleh TCP socket, yakni:
·         Client membaca inputan dari keyboard, kemudian mengirimkan hasilnya ke server melalui socket-nya.
·         Server membaca data yang dikirim oleh client di connection socket
·         Server mengubah data menjadi huruf besar
·         Server mengirimkan data yang telah diubah menuju client melalui connection socket-nya.
·         Client membaca data yang dikirim oleh server dari client socket-nya. Kemudian menampilkan data tersebut di monitor
Port dan Winsock
  
Port
      Salah satu elemen penting yang digunakan dalam aplikasi socket adalah port. Port merupakan sebuah koneksi data virtual yang digunakan aplikasi untuk bertukar data secara langsung.
 Terdapat banyak port di dalam sebuah sistem komputer dengan fungsinya masing-masing. Sebagai contoh, dalam mengirim e-mail digunakan service SMTP yang umumnya menggunakan port 25. Sementara service POP3 untuk menerima e-mail menggunakan port 110, port 80 digunakan untuk HTTP, port 443 digunakan untuk HTTPS, dan seterusnya.  Nomor-nomor port dikategorikan dalam tiga jenis sebagai berikut:
a. Well-known ports.
Merupakan port yang telah digunakan secara internal oleh sistem Windows, misalnya  port untuk koneksi Internet, service FTP, dan seterusnya. Port yang telah digunakan ini adalah  port 0 sampai dengan port 1023.
b. Registered ports.
Port ini dapat digunakan dalam aplikasi Anda, range-nya adalah port 1024 hingga port 49151, cukup banyak port yang tersedia yang bebas Anda pilih sehingga Anda tidak perlu kuatir kekurangan port untuk aplikasi Anda.
c. Dynamic/Private ports.
Dari port 49152 sampai dengan port 65535
Winsock
    Untuk pemrograman aplikasi socket berbasis Windows, maka komponen API yang sering digunakan adalah Winsock (Win-dows Socket API) yang mendukung interface standar TCP/IP, yang merupakan protokol jaringan paling popular saat ini (contoh protokol jaringan yang lain adalah NetBIOS, IPX dari Novell, AppleTalk dari Apple, dan sebagainya).
 Pengertian TCP/IP (TCP over IP) mungkin dapat menjadi sedikit rancu jika diartikan TCP/IP hanya mengizinkan pengiriman TCP (dan tidak UDP), padahal seperti yang telah kita  bahas, pengiriman socket dapat melalui TCP maupun UDP.
     Pengertian TCP/IP di sini sebenarnya digunakan untuk menunjukkan teknologi  jaringan/Internet, termasuk di dalamnya adalah UDP. Jika Anda menggunakan UDP, dapat  juga disebut sebagai UDP/IP (UDP over IP), tetapi umumnya istilah ini jarang digunakan dan istilah TCP/IP telah mencakup, baik TCP maupun UDP.
   Pada bahasa pemrograman visual seperti Visual Basic/Delphi, Anda dapat menggunakan control Winsock yang telah disediakan untuk mengembangkan aplikasi socket.
Walaupun kita akan mencontohkan aplikasi socket dalam environment Windows, Anda tidak perlu khawatir jika aplikasi socket yang menggunakan Winsock tidak dapat  berkomunikasi dengan aplikasi socket berbasis Unix/Linux, karena komunikasi tetap dapat terjadi selama aplikasi tersebut menggunakan protokol jaringan yang sama.
Bagi Anda yang terpaksa hanya menggunakan satu komputer, dapat memanfaatkan alamat localhost atau 127.0.0.1 yang mengizinkan dua aplikasi berjalan pada satu mesin komputer dan berkomunikasi satu sama lain.
Tools Tambahan
      Aplikasi socket merupakan aplikasi jaringan dan jika Anda mendalami seluk-beluk  jaringan, tentu akan familiar dengan tools tambahan yang umumnya digunakan dalam jaringan. Tools ini kemungkinan dapat berguna untuk diimplementasikan ke dalam aplikasi socket Anda. Tools yang dimaksud, antara lain:
· Ping.
      Ping digunakan untuk memeriksa keberadaan remote host dengan jalan mengirimkan sinyal kepada remote host. Keberadaan remote host dapat ditentukan dengan melihat response yang diterima. Ping juga dapat digunakan untuk mengukur kecepatan transfer data. Salah satu
contoh penggunaan ping dalam aplikasi socket adalah memeriksa server yang tersedia sebelum mengirimkan data (dengan asumsi tersedia lebih dari 1 server).
·         Telnet.
     Telnet merupakan singkatan dari TELecommunication NET-work. Umumnya istilah telnet saat ini merujuk pada aplikasi telnet client yang tersedia pada kebanyakan operating sys-tem. Telnet mengizinkan Anda mengakses remote host dan menggunakan service-nya. Sebagai contoh, Anda dapat mengirimkan e-mail melalui telnet yang menggunakan port 25 (service SMTP) pada remote host tertentu. Jika Anda telah masuk ke dalam environment telnet, command line yang digunakan adalah command berbasis Unix/Linux. Aplikasi socket dapat dimodifikasi bekerja seperti telnet dengan mengakses remote host dan port tertentu. Di dalam aplikasi socket, Anda dapat mengambil dan mengolah response yang didapat dari remote host.
·         Netstat.
            Netstat menampilkan status jaringan yang terjadi. Dapat menampilkan port yang sedang terkoneksi, atau dalam kondisi menunggu/listening, juga menampilkan protokol yang digunakan, apakah TCP atau UDP. Dengan Netstat, Anda dapat mengetahui koneksi jaringan yang terjadi, hal ini dapat dimanfaatkan di dalam aplikasi socket, misalnya untuk melihat port yang sedang aktif dan digunakan.
·         Model Aplikasi Client Server
            Untuk membuat aplikasi socket yang sederhana diperlukan dua aplikasi. Yaitu, pertama adalah aplikasi server yang akan menerima data, sedangkan aplikasi kedua adalah aplikasi client yang mengirimkan data pada server. Baik aplikasi server dan aplikasi client mende
finisikan port yang sama sebagai jalur komunikasi.
       Obyek socket pada sisi client dan server berbeda sedikit. Pada sisi aplikasi server, suatu socket server dibentuk dan melakukan operasi listen/menunggu. Operasi ini pada intinya menunggu permintaan koneksi dari sisi client. Sedangkan pada sisi client, dibentuk suatu socket biasa. Pada saat socket client, informasi alamat socket server dilewatkan sebagai argumen dan socket client akan otomatis mencoba meminta koneksi ke socket server. Pada saat permintaan koneksi client sampai pada server, maka server akan membuat suatu socket biasa. Socket ini yang nantinya akan berkomunikasi dengan socket pada sisi client. Setelah itu socket server dapat kembali melakukan listen untuk menunggu permintaan koneksi dari client lainnya. Langkah ini umumnya hanya dilakukan jika aplikasi server mengimplementasikan multithreading.
     Setelah tercipta koneksi antara client dan server, maka keduanya dapat saling bertukar  pesan. Salah satu atau keduanya kemudian dapat mengakhiri komunikasi dengan menutup socket.
 Untuk protokol UDP, perbedaanya adalah socket di sisi server sama dengan socket di sisi client, dan tidak ada operasi listen pada sisi server. Kemudian saat paket data dikirimkan, alamat socket penerima harus disertakan sebagai argumen. Program Aplikasi Client Server bisa dibuat dengan menggunakan Visual Basic 6, NET, Delphi, dan lain sebagainya. Sebagai contoh yaitu Aplikasi Client Server sederhana dengan Delphi dimana tugas aplikasi server cukup sederhana, yaitu hanya siap sedia menerima data yang masuk pada sebuah port.
Socket Client
Socket adalah sebuah penghubung antara dua host, yang dapat dibangun dengantujuh dasar operasi
·         Menghubungkan untuk mengendalikan mesin atau perangkat
·         mengirim data
·         menerima data
·         menutup koneksi
·         Bergantung pada port
·         Mendengarkan data yang masuk
·         Menerima koneksi dari mesin yang dikendalikan berdasarkan sebuah port 
sumber: http://mzsay.blogspot.com/2012/04/pengertian-socket-dan-pemrogramman.html
s

Postingan terkait:

Belum ada tanggapan untuk "web socket"

Post a Comment