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
sumber: http://mzsay.blogspot.com/2012/04/pengertian-socket-dan-pemrogramman.html
s