Pada kali ini, saya akan membahas Socket Programming.
Apa itu Socket ?
Socket adalah sebuah class yang disediakan oleh beberapa bahasa
pemrograman.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.
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.
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.
Kelebihan 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:
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 identifier yaitu 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-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.
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 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.
Socket, TCP, 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:
1. Protokol.
2. Local IP.
3. Local Port.
4. Remote IP.
5. 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:
a. Datagram socket (menggunakan UDP).
b. 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.
Port, 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:
a. 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).
b. 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.
c. 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.
Ada
kalanya Anda perlu menjalankan tools jaringan yang telah disebutkan di
atas melalui aplikasi Anda. Untuk keperluan ini, Anda dapat menggunakan
shell command yang disediakan oleh bahasa pemrograman yang Anda gunakan.
Misalnya pada Visual Basic, dapat digunakan perintah Shell diikuti parameter yang diperlukan.
Jika ingin mengolah response yang dihasilkan oleh tools tertentu, Anda dapat menuliskan hasilnya pada sebuah file
teks, contohnya jika Anda menjalankan perintah netstat –an >
hasil.txt pada Command Prompt Windows, maka informasi mengenai koneksi
yang aktif akan tersimpan dalam file hasil.txt, di mana Anda dapat mengolah file hasil.txt tersebut lebih lanjut di dalam aplikasi Anda.
Apa itu Socket Programming ?
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.
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.
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.
Troubleshooting Jaringan ?
Kadang
sebagai admin jaringan, kita kerap kali menemukan masalah-masalah,
untuk itu diperlukan ilmu yang mempelajari tentang trouble shooting
jaringan. Di sini akan dijabarkan beberapa trouble shooting dan
penanganannya :
1. Antar komputer 1 dan lainnya tidak bisa berkomunikasi :
a. Cek apakah pembagian IP pada class yang sama
b. Cek apakah komputer dalam 1 workgroup yang sama
c. Restart Komputer
2. Komputer sudah diset dengan ip calss yang benar dan dalam 1 workgroup tetapi tidak dapat berkomunikasi
a. Cek apakah LAN card rusak, yaitu dengan menjalankan perintah ping 127.0.0.1 atau ping localhost.
b. Cek
Apakah Kabel LAN sudah benar pembuatannya, untuk komputer yang melewati
Hub tidak perlu crossing pada kabelnya, tetapi untuk komputer yang
tidak melewati Hub harus memakai metode crossing 1-3, 2-6.
Tidak ada komentar:
Posting Komentar