Socket
Socket
Contoh aplikasi untuk UDP socket berikut ini menggunakan kasus yang sama
dengan kasus yang digunakan oleh TCP socket, yaitu :
1. Client membaca inputan dari keyboard, kemudian mengirimkan
hasilnya ke server melalui socket-nya.
2. Server membaca data yang dikirim oleh client di connection socket
3. Server mengubah data menjadi huruf besar
4. Server mengirimkan data yang telah diubah menuju client melalui
socket-nya.
5. Client membaca data yang dikirim oleh server dari client socketnya. Kemudian menampilkan data tersebut di monitor
Perbedaan utama antara aplikasi berbasis TCP dengan aplikasi berbasis
UDP adalah di aplikasi UDP tidak ada welcoming socket. Pada UDP tidak
ada socket khusus untuk permintaan inisialisai koneksi. Setiap data yang
datang ditangani lansung oleh server socket.
Protokol.
Local IP.
Local Port.
Remote IP.
Remote Port.
PEMROGRAMAN SOCKET
A. 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).
B. 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 sebuahservice identifier yaitu berupa nomor port
TCP/IP yang dapat di sambung oleh client.
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 masingmasing. Komunikasi yang terjadi melalui port, sehingga baik
komputer A maupun komputer B harus memiliki port yang dapat
diakses satu sama lain.
2. 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
c. Dynamic/Private ports.
Dari port 49152 sampai dengan port 65535.
2. 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.
3. 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.
E. 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.
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.