PEMROGRAMAN JARINGAN
Pengertian Socket
Socket adalah sebuah cara untuk berkomunikasi dengan program atau node lain
menggunakan file deskriptor. 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. Berikut ini menunjukkan bagaimana suatu aplikasi berhubungan dengan aplikasi
lainnya.
Socket dapat melakukan beberapa operasi yakni : koneksi ke mesin remote, mengirim
data (write), menerima data (read), menutup koneksi (close), bind to port, listen pada data yang
masuk dan menerima koneksi dari mesin remote pada port tertentu. Karena namanya saja socket
programming, maka masing-masing mesin yang saling berinteraksi harus terpasang socket pula.
Terurut
Jika dua pesan dikirimkan sepanjang koneksi, satu demi satu, pesan yang pertama
akan mencapai aplikasi penerima pertama. Ketika paket data tiba di urutan yang berbeda,
layer TCP menahan data selanjutnya sampai data yang baru saja datang dapat di urutkan
kembali dan dikirimkan ke aplikasi.
Heavyweight
TCP meminta tiga paket hanya untuk mensetup socket, sebelum beberapa data aktual
dapat dikirimkan. Ini mengatur koneksi, reliability, dan congestion control. Ini adalah
protocol transport yang besar yang didesain di atas IP
Streaming
Data dibaca sebagai stream, dengan tidak membedakan dimana satu paket berakhir
dan yang lin dimulai. Paket mungkin dipisah atau digabungkan ke dalam data streams yang
lebih besar atau lebih kecil secara sewenang-wenang.
UDP Socket tidak memerlukan proses koneksi terlebih dahulu undtuk dapat mengirimkan
data, paket-paket data yang dikirimkan UDP bisa jadi melalui rute yang berbeda-beda, sehingga
hasil yang diterima bisa jadi tidak berurutan. Tidak demikian halnya dengan 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 perbedaan tersebut 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 dterapkan untuk aplikasi chat, transfer file, ataupun transaksi-transaksi
penting. Sedangkan aplikasi UDP cocok diterapkan untuk aplikasi monitoring jaringan, game
online, dan aplikasi-aplikasi broadcast.
Port in TCP
Aplikasi client menggunakan nomor port untuk memberitahu mesin tujuan dan service
TCP mana yang diinginkannya. Server untuk aplikasi tertentu menggunakan well-known port
untuk mengetahui koneksi dari client yang meminta servicenya. Port port yang digunakan
dalam transport layer menggunakan 16-bit integer (0 65535), dengan satu sama lain harus
berbeda (unique). Pada saat client ingin membangun koneksi dengan Server, client harus
mengetahui port dari server yang dituju dan protokol apa yang digunakan (UDP or TCP or
SCTP).
Client di sisi sebaliknya, umumnya menggunakan ephemeral port atau biasa disebut
short-lived ports. Nomor pada port ephemeral yang digunakan oleh client diberikan oleh
Transport Protocol. Client tidak perlu tahu nomor port ephemeral yang digunakan, yang jelas
semua port ephemeral yang digunakan pasti bersifat unique.
The Internet Assigned Numbers Authority (IANA) telah mengelompokkan nomor
nomor port yang dibagi menjadi tiga bagian :
1. Well-known ports: 0 1023. Pada range ini merupakan nomor nomor port yang telah
digunakan oleh IANA. Contoh nya adalah Web server yang menggunakan port 80, FTP
menggunakan 21 dll.
2. Registered ports: 1024 49252. Nomor nomor port pada range ini tidak digunakan oleh
IANA, IANA mengelompokkan port port ini untuk dapat digunakan sebagai server untuk
TCP atau UDP. Contohnya antara port 6000 sampai 6063 digunakan untuk X Windows server.
Aplikasi yang kita gunakan juga bisa menggunakan port ini.
3. Private ports: 49152 65535. Nomor nomor port pada range ini adalah ephemeral port.
Namun tentu saja tidak menutup kemungkinan nilai ephemeral port mempunya nilai diluar
range ini, hal tersebut bergantung juga dari Sistem Operasi yang digunakan.
Jadi dapat disimpulkan bahwa koneksi TCP memiliki 1 buah local ip address, local port
number, foreign ip address dan foreign port number.
Contoh Kasus
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. Contoh alamat socket adalah 192.168.29.30: 3000, dimana nomer 3000
adalah nomer portnya.
Untuk pengiriman data ke server pertama-tama tentukan terlebih dahulu protocol yang
akan digunakan, disini digunakan protocol TCP karena dengan menggunakan TCP data bisa
dipastikan sampai ke server dengan baik. Pada proses pengiriman data ini inisialisasikan terlebih
dahulu socket yang digunakan, kemudian langkah selanjutnya tinggal mengirimkan string
dengan pola yang disesuaikan dengan pola penerimaan data pada server. Sebelum dikirim, nilai
tersebut dijadikan kedalam sebuah byte array dan dicodingkan ke dalam bentuk ASCII baru
kemudian data dikirimkan ke server.