Linux jarang bekerja sendirian: sistem yang kita kelola hampir selalu terhubung ke jaringan. Di balik itu semua berulang pola yang sama — sebuah program menawarkan layanan, program lain memintanya, dan keduanya bertukar data melalui jaringan. Pada Chapter ini kita bongkar pola tersebut sampai ke komponen penyusunnya: IP address, port, protokol transport, serta jalur yang ditempuh sebuah paket dari aplikasi hingga keluar dari kartu jaringan.

Client dan Server: Pembagian Peran #

Model client-server adalah cara paling umum dua program berkomunikasi lewat jaringan. Server adalah program yang menunggu permintaan pada alamat tertentu — misalnya web server. Client adalah program yang mengirim permintaan ke alamat tersebut — misalnya browser atau perintah curl. Server tidak pernah menghubungi client lebih dulu; server hanya menunggu dan menjawab.

Pembagian peran ini tidak menempel pada mesin — satu laptop bisa menjadi client dan server sekaligus; istilahnya menggambarkan peran program dalam satu percakapan, bukan kelas mesin.

IP Address dan Port: Alamat Lengkap Sebuah Layanan #

Supaya paket data sampai ke tujuan, dua informasi harus diketahui pengirimnya. IP address menunjuk mesin tujuan di jaringan — analogi nomor rumah. Port menunjuk proses tertentu di dalam mesin itu — analogi nomor pintu. Satu server kerap menjalankan banyak layanan pada satu IP address, dan port-lah yang memastikan paket permintaan web tidak nyasar ke layanan SSH.

Nomor port berupa angka 0-65535; rentang 0-1023 disebut well-known dan hanya root yang boleh membukanya, sedangkan client memakai port ephemeral di rentang tinggi sebagai pintu sementara. Empat port well-known yang paling sering kita jumpai:

PortLayananKegunaan
22SSHremote login terenkripsi
53DNSpenerjemahan nama domain ke IP
80HTTPweb tanpa enkripsi
443HTTPSweb dengan enkripsi TLS

Linux menyimpan katalog nama layanan beserta portnya di file /etc/services. Daripada menghafal, kita bisa bertanya langsung ke file tersebut:

bash
grep -E '^(http|ssh|domain)[[:space:]]' /etc/services

Output yang Dihasilkan:

text
ssh		22/tcp				# SSH Remote Login Protocol
domain		53/tcp				# Domain Name Server
domain		53/udp
http		80/tcp		www		# WorldWideWeb HTTP

Setiap baris memuat tiga kolom yang dipisah tab: nama layanan, port/protokol, lalu komentar. Nama domain muncul dua kali — untuk 53/tcp dan 53/udp — karena DNS memakai keduanya. File ini tidak mengatur jaringan; isinya murni kamus acuan.

Client-Server di Praktik: Server HTTP Mini #

Kita tidak perlu server produksi untuk menyaksikan pola client-server bekerja. Python membawa server HTTP kecil bernama http.server; blok berikut menjalankannya di port 8123, menghubunginya sebagai client memakai curl, lalu mematikannya kembali:

bash
python3 -m http.server 8123 >/dev/null 2>&1 &
server=$!
for i in 1 2 3 4 5; do
  curl -s -o /dev/null 127.0.0.1:8123/ && break
  sleep 0.2
done
curl -s 127.0.0.1:8123/ | grep '<title>'
kill "$server"

Output yang Dihasilkan:

text
<title>Directory listing for /</title>

Mari kita bedah baris demi baris:

  1. Baris 1 (python3 -m http.server 8123 ... &): server HTTP dijalankan di background pada port 8123; pesan startup-nya dibuang ke /dev/null.
  2. Baris 2 (server=$!): variabel server menyimpan PID proses yang baru dibuat, supaya bisa dimatikan nanti.
  3. Baris 3-6 (for i in ...): loop menunggu server siap — curl dicoba berulang sampai koneksinya diterima, lalu break.
  4. Baris 7 (curl -s ... | grep '<title>'): sebagai client, curl meminta halaman dari server di 127.0.0.1 port 8123; grep menyaring baris judul dari responsnya.
  5. Baris 8 (kill "$server"): server dimatikan memakai PID yang disimpan di awal.

Alamat 127.0.0.1 adalah loopback — jalur internal yang menghubungkan mesin dengan dirinya sendiri tanpa menyentuh kabel atau wifi, sehingga demo ini jalan bahkan di komputer tanpa jaringan.

TCP dan UDP: Dua Mode Pengiriman #

Di atas IP address bekerja dua protokol transport dengan karakter berbeda:

SifatTCPUDP
Cara kerjakoneksi dua arah, urutan dijagakirim dan lupakan
Paket hilangotomatis dikirim ulangtidak ada jaminan
Contoh pemakaianweb, SSH, transfer filestreaming, query DNS, game daring

TCP menomori tiap segmen dan mengirim ulang yang hilang, sehingga halaman web tiba utuh. UDP membuang mekanisme itu demi kecepatan — untuk siaran langsung, data yang terlambat lebih baik dibuang daripada ditunggu.

Perjalanan Sebuah Paket #

Saat server http.server membalas permintaan curl, data menempuh jalur berikut di dalam mesin:

  1. Aplikasi menyerahkan respons HTML ke sebuah socket — titik akhir komunikasi berupa pasangan IP:port milik proses.
  2. Kernel menerima data dari socket, memilih protokol transport, memecah data menjadi paket, dan menulis alamat tujuan pada tiap paket.
  3. Kernel membaca routing table — peta jalur keluar — untuk memutuskan lewat interface mana paket dikirim.
  4. NIC (network interface card) mengubah paket menjadi sinyal — pulsa listrik di kabel atau gelombang radio di wifi — dan paket meninggalkan mesin.

Urutan ini menjelaskan mengapa diagnosis masalah jaringan selalu bertahap: aplikasi bisa sehat sementara routing salah. Kita mulai dari lapisan paling dekat dengan hardware — network interface, materi Chapter Network Interfaces .

Referensi lanjut: services(5) untuk format /etc/services, dan wiki Arch networking untuk ringkasan stack jaringan Linux.