Port dan Socket Oleh Faisal Akib
Port adalah alamat yang membedakan koneksi TCP yang berbeda-beda pada mesin yang sama (lihat Pengalamatan TCP/IP). Port TCP adalah nomor yang mengindentifikasi koneksi dalam mesin spesifik. Semua aplikasi upper-layer yang menggunakan TCP atau UDP memiliki sebuah nomor port yang mengidentifikasikan aplikasi. Secara teori, nomor port dapat ditentukan pada sebuah mesin. nomor port dapat diubah, meskipun hal ini dapat mengakibatkan kerumitan. kebanyakan sistem mengatur sebuah file yang berisi informasi nomor port dan pasangan layanannya.
Umumnya nomor port diatas 255 disediakan untuk kebutuhan pribadi (private) pada mesin lokal, dan nomor port dibawah 255 digunakan untuk proses yang sering digunakan. Daftar nomor port yang paling sering digunakan yang dipublikasikan oleh Internet Assigned Numbers Authority. Pada tabel berikut dapat dilihat sejumlah nomor port yang sering digunakan.
TABEL: Nomor Port yang Digunakan TCP
Port Number Process Name Description
1 TCPMUX TCP Port Service Multiplexer
5 RJE Remote Job Entry
7 ECHO Echo
9 DISCARD Discard
11 USERS Active Users
13 DAYTIME Daytime
17 Quote Quotation of the Day
19 CHARGEN Character generator
20 FTP-DATA File Transfer Protocol•Data
21 FTP File Transfer Protocol•Control
23 TELNET Telnet
25 SMTP Simple Mail Transfer Protocol
27 NSW-FE NSW User System Front End
29 MSG-ICP MSG-ICP
31 MSG-AUTH MSG Authentication
33 DSP Display Support Protocol
35 PPS Private Print Servers
37 TIME Time
39 RLP Resource Location Protocol
41 GRAPHICS Graphics
42 NAMESERV Host Name Server
43 NICNAME Who Is
49 LOGIN Login Host Protocol
53 DOMAIN Domain Name Server
67 BOOTPS Bootstrap Protocol Server
68 BOOTPC Bootstrap Protocol Client
69 TFTP Trivial File Transfer Protocol
79 FINGER Finger
80 HTTP Hyper Text Transfer Protocol
101 HOSTNAME NIC Host Name Server
102 ISO-TSAP ISO TSAP
103 X400 X.400
104 X400SND X.400 SND
105 CSNET-NS CSNET Mailbox Name Server
109 POP2 Post Office Protocol v2
110 POP3 Post Office Protocol v3
111 RPC Sun RPC Portmap
137 NETBIOS-NS NETBIOS Name Service
138 NETBIOS-DG NETBIOS Datagram Service
139 NETBIOS-SS NETBIOS Session Service
146 ISO-TP0 ISO TP0
147 ISO-IP ISO IP
150 SQL-NET SQL NET
153 SGMP SGMP
156 SQLSRV SQL Service
160 SGMP-TRAPS SGMP TRAPS
161 SNMP SNMP
162 SNMPTRAP SNMPTRAP
163 CMIP-MANAGE CMIP/TCP Manager
164 CMIP-AGENT CMIP/TCP Agent
165 XNS-Courier Xerox
179 BGP Border Gateway Protocol
Setiap sirkuit komunikasi yang masuk dan keluar lapisan TCP dikenali secara unik dengan dua kombinasi angka, yang kemudian disebut sebagai socket. Socket terdiri atas alamat IP sebuah mesin dan nomor port yang digunakan software TCP. Baik mesin pengirim dan penerima memiliki socket. Karena IP address sifatnya unik dalam internetwork, dan nomor port bersifat unik untuk setiap mesin, maka berarti nomor socket juga bersifat unik dalam internetwork. Ini memungkinkan sebuah proses berkomunikasi dengan proses lain dalam jaringan.
Catatan
TCP menggunakan keneksi (bukan port protokol) sebagai sebuah elemen dasar. Koneksi yang lengkap memiliki setidaknya dua titik. Ini memungkinkan port protokol digunakan untuk beberapa koneksi secara bersamaan (multiplexing)
Dalam prosesi pengiriman, TCP pengirim meminta koneksi kepada TCP penerima dengan menggunakan nomor socket yang unik. Proses ini dapat dilihat pada gambar berikut. Misalnya jika TCP pengirim menginginkan sebuah koneksi session telnet dari nomor port 350, maka nomor socket akan terdiri atas alamat IP mesin source dengan nomor port (350), dalam message yang dikirim terdapat informasi nomor port tujuan 23 (nomor port aplikasi Telnet). Mesin penerima TCP memiliki nomor source port 23 (Telnet) dan port destination 350 (nomor port mesin pengirim).
GAMBAR: Pengaturan sirkuit virtual dengan nomor socket
GAMBAR: Pengaturan sirkuit virtual dengan nomor socket
Mesin pengirim dan penerima akan membuat tabel port yang berisi informasi semua nomor port yang aktif. Kedua mesin ini akan saling bertukar entri tabel yang dimilikinya pada setiap session. Ini disebut dengan binding dan diilustrasikan pada gambar berikut. Nomor mesin source dan destination akan saling ditukarkan untuk setiap koneksi sesuai tabel port.
GAMBAR: Binding entry pada tabel port
GAMBAR: Binding entry pada tabel port
Jika mesin pengirim meminta lebih dari satu koneksi, maka nomor port sumber harus beda, meskipun nomor port destination mungkin sama. Misalnya, jika mesin pengirim mencoba untuk membuat tiga koneksi telnet secara simultan, maka nomor port mesin sumber misalnya akan menjadi 350, 351, dan 352, dan nomor port destination semuanya menggunakan nomor port 23.
Dimungkinkan juga untuk lebih dari satu mesin menggunakan nomor socket tujuan yang sama – proses ini disebut dengan multiplexing –. Pada gambar berikut terdapat tiga mesin yang menggunakan session telnet dengan satu destination. Ketiganya menggunakan nomor port destination 23 yang dimultiplex. Karena datagram datang dari port yang memiliki informasi socket yang lengkap (dengan alamat IP), maka destination tidak akan salah dalam mengenali asal datagram.
GAMBAR: Multiplexing satu port destination
GAMBAR: Multiplexing satu port destination
Port Aktif dan Pasif
Ada dua metode penetapan sebuah koneksi: aktif dan pasif. Penetapan koneksi aktif terjadi ketika TCP mengeluarkan sebuah permintaan untuk sebuah koneksi berdasarkan instruksi dari sebuah ULP yang menyediakan nomor socket. Pendekatan pasif terjadi ketika ULP memerintahkan TCP untuk menunggu permintaan koneksi yang datang dari sebuah remote system (biasanya dari sebuah instruksi active open). Ketika TCP menerima permintaan, maka TCP akan menentukan sebuah nomor port.