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).
Socket adalah
sebuah cara untuk berkomunikasi dengan program atau node lain menggunakan file
deskriptor. Di UNIX (dimana socket diciptakan) kita sering mendengar slogan: “everything is a file”, jadi untuk
berkomunikasi dengan program atau node lain semudah kita membaca dan menulis
file deskriptor. Antarmuka socket dan
file adalah mirip, jika pada file kita membukanya dengan open() sedangkan pada
socket kita manggunakan socket(). Pada file deskriptor
yang menjadi tujuan adalah sebuah file, sedangkan pada socket adalah komputer
atau node lain. Intinya ketika kita telah
terhubung dengan socket(), maka antarmukanya sama saja dengan sebuah file.
Sebuah abstraksi perangkat lunak yang digunakan sebagai suatu “terminal” dari
suatu hubungan antara dua mesin atau proses yang saling berinterkoneksi
Penggunaan
socket programming memungkinkan adanya komunikasi antara client dan server.
Salah satu contoh sederhana penggunaan socket programming adalah pembuatan
program untuk chatting. Program tersebut sebenarnya merupakan bentuk aplikasi
berupa komunikasi antara client dan server. Ketika seorang user (client) melakukan koneksi ke chat
server, program akan membuka koneksi ke port yang diberikan, sehingga server
perlu membuka socket pada port tersebut dan “mendengarkan” koneksi yang datang.
Socket sendiri merupakan gabungan antara host-adress dan port adress.
Dalam hal ini socket digunakan untuk komunikasi antara client dan server.
Socket
merupakan fasilitas IPC (Inter Proses
Communication) untuk aplikasi jaringan. Agar suatu socket dapat
berkomunikasi dengan socket lainnya, maka socket butuh diberi suatu alamat unik
sebagai identifikasi. Alamat socket terdiri atas Alamat IP dan Nomer Port.
Contoh alamat socket adalah 192.168.29.30:
3000, dimana nomer 3000 adalah
nomer portnya. Alamat IP dapat menggunakan
alamat Jaringan Lokal (LAN) maupun alamat internet. Jadi socket dapat digunakan untuk IPC pada LAN maupun Internet.
Ada dua golongan socket di Unix
yang paling umum dipakai yaitu:
1.
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.
2.
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 identifieryaitu berupa nomor
port TCP/IP yang dapat di sambung oleh client.
Socket Networking memiliki beberapa
jenis, yang paling umum digunakan yaitu:
a. Socket Stream atau SOCK_STREAM
Socket Stream adalah socket
komunikasi full-duplexberbasis 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.
b. 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 broadcastingmateri
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.
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 mendefinisikan 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
1 comment:
oke bro mantab lengkap bngat ini
Cara menggunakan http injector untuk android
Post a Comment