Kamu pasti pernah mengetik sesuatu seperti localhost:3000 di browser, atau melihat pesan error yang bunyinya “connection refused on port 5432”, lalu kamu cuma manggut-manggut saja. Angka-angka itu bukan asal comot. Mereka adalah dua sisi dari pertanyaan paling mendasar di seluruh dunia jaringan: mesin yang mana, dan pintu mana di mesin itu? Jawabannya adalah alamat IP plus sebuah port, dan begitu kamu paham bagaimana keduanya nyambung, banyak sekali perilaku server yang tadinya bikin pusing langsung jadi masuk akal.
Bayangkan kamu mengirim surat. Alamat IP itu alamat jalan yang mengantar suratmu ke gedung yang benar. Port itu nomor kamar yang mengantarnya ke orang yang tepat di dalam gedung. Salah satu meleset, pesannya nyasar entah ke mana. Kita bahas satu per satu dulu, baru lihat bagaimana keduanya bekerja sama.
Alamat IP itu apa
Alamat IP adalah label yang menandai sebuah perangkat di dalam jaringan. “IP” itu singkatan dari Internet Protocol — sekumpulan aturan yang sudah disepakati supaya komputer bisa mengarahkan pesan satu sama lain. Setiap perangkat yang ikut bicara di jaringan, entah itu laptop, ponsel, server di data center, atau kulkas pintarmu, punya minimal satu alamat IP selama dia tersambung. Tanpa itu, jaringan sama sekali tidak tahu harus mengantar apa pun ke mana.
Alamatnya bukan nama seperti “laptop John”. Dia berupa angka, ditulis dalam format khusus supaya mesin dan router bisa membacanya dengan cara yang sama setiap kali. Ketika browser-mu mau sebuah halaman web, dia tidak teriak ke kekosongan — dia mengirim permintaan ke alamat IP yang spesifik, lalu perangkat jaringan di antaranya memakai alamat itu untuk meneruskan permintaan, lompat demi lompat, sampai tiba di mesin yang benar.
Alamat IP itu buat mesin, bukan buat manusia
Kamu hampir tidak pernah mengetik alamat IP secara langsung. Kamu mengetik nama seperti example.com, lalu sistem diam-diam mencarikan IP di baliknya untukmu. Proses pencarian itu adalah bagian terpisah dari teka-teki ini — mengubah nama yang ramah manusia menjadi alamat yang ramah mesin — dan itu layak dibahas tersendiri nanti. Untuk sekarang, cukup ingat ini: di balik setiap nama domain ada sebuah alamat IP yang mengerjakan pekerjaan pengantaran yang sebenarnya.
IPv4 dan IPv6: dua rasa alamat
Ada dua versi alamat IP yang dipakai sekarang, dan kamu bakal ketemu dua-duanya.
IPv4 adalah yang lebih tua dan jauh lebih akrab. Bentuknya empat angka yang dipisah titik, masing-masing dari 0 sampai 255:
192.168.1.10
93.184.216.34
8.8.8.8
Tiap potongan dari empat itu adalah satu byte (8 bit), jadi satu alamat IPv4 totalnya 32 bit. Hitungan itu menghasilkan sekitar 4,3 miliar alamat yang mungkin — angka yang terdengar seluas samudra di tahun 1980-an, tapi ternyata cuma seukuran genangan begitu seluruh planet ikut online. Dunia benar-benar kehabisan stok alamat IPv4 yang baru.
IPv6 adalah jawaban untuk kelangkaan itu. Dia jauh lebih panjang — 128 bit — dan ditulis sebagai kelompok angka heksadesimal yang dipisah titik dua:
2001:0db8:85a3:0000:0000:8a2e:0370:7334
Supaya tetap enak dibaca, IPv6 membolehkanmu meringkas deretan nol yang panjang dengan ::, jadi alamat yang sama tadi bisa muncul sebagai 2001:db8:85a3::8a2e:370:7334. Jumlah alamat IPv6 yang mungkin saking besarnya boleh dibilang tak terbatas untuk keperluan praktis apa pun — cukup untuk memberi setiap butir pasir di Bumi alamatnya sendiri dan masih sisa banyak. Kedua versi ini berjalan berdampingan di internet sekarang, dan kebanyakan sistem menangani dua-duanya secara otomatis.
Port itu apa
Nah, ini hal yang tidak bisa diberitahu oleh alamat IP sendirian: satu mesin biasanya menjalankan banyak layanan jaringan sekaligus. Satu server bisa saja melayani halaman web, menerima login secure shell, dan menjawab query database, semuanya berbarengan. Mereka semua berbagi alamat IP yang sama. Lalu bagaimana sebuah pesan masuk tahu dia ditujukan untuk layanan yang mana?
Di situlah tugas port. Port adalah angka — dari 0 sampai 65535 — yang menandai sebuah layanan atau koneksi spesifik di sebuah mesin. Kalau alamat IP mengantar pesan ke gedung yang benar, nomor port mengantarnya ke ruangan yang tepat di dalam.
SATU SERVER (IP: 203.0.113.5)
┌─────────────────────────────────────┐
│ port 22 → SSH (login jarak jauh) │
│ port 80 → web (HTTP) │
│ port 443 → web (HTTPS, aman) │
│ port 5432 → database │
└─────────────────────────────────────┘
▲ ▲ ▲
login browser app server
Setiap permintaan masuk membawa alamat IP sekaligus port. IP mengantarnya ke mesin; port memberi tahu mesin program mana yang harus menerimanya. Sebuah program yang diam dan menunggu koneksi di port tertentu disebut sedang listening (menyimak) di port itu.
Port terkenal vs. sisanya
Karena ada layanan yang sangat umum, dunia menyepakati nomor port standar untuk mereka supaya software tidak perlu menebak-nebak. Inilah yang disebut well-known port, yaitu nomor 0 sampai 1023. Beberapa yang perlu kamu kenali:
22 SSH (login jarak jauh yang aman)
53 DNS (pencarian nama)
80 HTTP (trafik web biasa)
443 HTTPS (trafik web terenkripsi)
25 SMTP (mengirim email)
Inilah persisnya kenapa kamu bisa mengetik https://example.com tanpa pernah menyebut port — browser-mu sudah tahu HTTPS tinggal di port 443 berdasarkan kesepakatan, jadi dia mengisinya sendiri untukmu. http:// biasa juga otomatis ke port 80 dengan cara yang sama.
Di atas 1023, kamu masuk ke wilayah yang dipakai segala hal lain: aplikasimu sendiri, server development, dan koneksi-koneksi sementara. Inilah kenapa server dev lokal sering hidup di angka seperti 3000, 5173, atau 8080 — angkanya tinggi, gampang diingat, dan kecil kemungkinannya bentrok dengan layanan sistem yang standar.
Sekarang localhost:3000 jadi masuk akal
Pecah jadi dua bagiannya. localhost adalah nama khusus yang selalu berarti mesin ini juga (dia mengarah ke IP 127.0.0.1, alamat “loopback” yang berputar balik ke dirimu sendiri). :3000 adalah port yang dipilih server development-mu untuk disimak. Jadi localhost:3000 secara harfiah dibaca sebagai: “sambung ke sebuah layanan di komputerku sendiri, di pintu nomor 3000”. Mesin yang sama bisa menjalankan server dev kedua di :3001 pada saat bersamaan tanpa konflik sama sekali — pintu beda, tidak bentrok.
Menyatukan keduanya: socket
Ketika kamu menggabungkan alamat IP dan port, hasilnya punya nama: socket. Ditulis lengkap, bentuknya seperti 203.0.113.5:443 — alamat, titik dua, port. Socket adalah titik ujung yang presisi dari sebuah percakapan jaringan. Satu koneksi yang utuh sebenarnya didefinisikan oleh dua socket: milik client (mesinmu plus port sementara) dan milik server (IP-nya plus port layanan).
Pasangan itulah yang memungkinkan satu server menangani ribuan koneksi sekaligus tanpa tertukar. Sekalipun seribu orang sama-sama menyambung ke web server yang sama di port 443, tiap koneksi dikenali unik dari kombinasi kedua ujungnya — IP dan port sementaramu di satu sisi, IP server dan port 443 di sisi lain. Tidak ada dua koneksi yang berbagi sidik jari empat-bagian yang persis sama, jadi jawaban selalu menemukan jalan kembali ke peminta yang benar.
IP publik vs. IP privat
Satu pembeda lagi yang sering bikin orang tersandung. Tidak semua alamat IP bisa dijangkau dari internet terbuka. Ada rentang tertentu yang dipesan khusus untuk jaringan privat — jaringan di dalam rumah atau kantormu:
10.0.0.0 – 10.255.255.255
172.16.0.0 – 172.31.255.255
192.168.0.0 – 192.168.255.255
Alamat 192.168.x.x yang dipakai laptopmu di rumah itu? Itu privat. Dia cuma bermakna di dalam jaringan lokalmu. Internet yang lebih luas tidak bisa menjangkaunya secara langsung. Saat laptopmu bicara ke dunia luar, router-mu menerjemahkan alamat privat tadi menjadi satu IP publik yang diberikan penyedia internetmu — trik yang namanya NAT (Network Address Translation). Inilah kenapa semua perangkat di rumahmu bisa berbagi satu alamat publik, dan kenapa orang di internet tidak bisa begitu saja “menelepon” 192.168.1.10 lalu mendarat di laptop spesifikmu.
Untuk server yang ingin kamu jangkaukan ke seluruh dunia, kebalikannya yang berlaku: dia butuh alamat IP publik, yang unik secara global dan bisa diarahkan, supaya client mana pun di mana pun bisa menemukannya. Alamat publik itu, dipasangkan dengan sebuah port, adalah pintu depan yang dibuka aplikasimu ke internet.
Kenapa ini penting saat kamu membangun sesuatu
Ini bukan sekadar pengetahuan iseng — dia muncul terus-menerus begitu kamu menjalankan server sungguhan. Saat sebuah layanan “can’t bind to port 80”, artinya program lain sudah lebih dulu merebut pintu itu. Saat firewall “memblokir port 22”, dia sedang memutuskan pintu mana yang boleh diketuk orang asing. Saat kamu menyetel server dev ke 0.0.0.0 alih-alih localhost, kamu menyuruhnya menyimak di semua alamat mesin itu, bukan cuma yang loopback. Tiap situasi itu cuma logika alamat-IP-dan-port yang sedang berjalan.
Ini juga menjadi pondasi keamanan. Bagian besar dari mengamankan server adalah menutup setiap port yang tidak perlu terbuka, supaya makin sedikit pintu yang bisa dicoba penyerang. Kamu tidak bisa berpikir soal itu sama sekali sebelum “alamat IP” dan “port” terasa konkret — yang, semoga, sekarang sudah.
Penutup
Ini gambaran utuhnya dalam satu tempat:
- Alamat IP menandai sebuah perangkat di jaringan. Ini sisi “mesin yang mana” dari pertanyaannya.
- Alamat IPv4 bentuknya
192.168.1.10(32 bit, sekitar 4,3 miliar, sekarang sudah habis); alamat IPv6 bentuknya2001:db8::1(128 bit, praktis tak terbatas). Dua-duanya berjalan berdampingan sekarang. - Port (0–65535) menandai sebuah layanan di mesin itu. Ini sisi “pintu yang mana”.
- Well-known port (0–1023) sudah distandarkan — 22 SSH, 80 HTTP, 443 HTTPS — itu sebabnya kamu jarang mengetik port untuk layanan yang umum.
- IP plus port adalah sebuah socket (
203.0.113.5:443); satu koneksi utuh adalah sepasang socket, dan itulah cara satu server menangani ribuan koneksi dengan rapi. - Rentang IP privat (
192.168.x.xdan kawan-kawan) hidup di dalam jaringan lokal; server yang ingin dijangkau dunia butuh IP publik.
Dengan “mesin yang mana” dan “pintu yang mana” sudah jelas, pertanyaan lanjutan yang wajar adalah bagaimana kita berangkat dari sebuah nama seperti example.com menuju alamat IP itu sejak awal — sistem pencarian yang diam-diam menggerakkan setiap alamat yang bakal kamu ketik. Di sanalah dunia domain dan DNS mengambil peran, dan itu jadi bahasan berikutnya.