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:
| Port | Layanan | Kegunaan |
|---|---|---|
| 22 | SSH | remote login terenkripsi |
| 53 | DNS | penerjemahan nama domain ke IP |
| 80 | HTTP | web tanpa enkripsi |
| 443 | HTTPS | web dengan enkripsi TLS |
Linux menyimpan katalog nama layanan beserta portnya di file /etc/services. Daripada menghafal, kita bisa bertanya langsung ke file tersebut:
grep -E '^(http|ssh|domain)[[:space:]]' /etc/servicesOutput yang Dihasilkan:
ssh 22/tcp # SSH Remote Login Protocol
domain 53/tcp # Domain Name Server
domain 53/udp
http 80/tcp www # WorldWideWeb HTTPSetiap 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:
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:
<title>Directory listing for /</title>Mari kita bedah baris demi baris:
- Baris 1 (
python3 -m http.server 8123 ... &): server HTTP dijalankan di background pada port 8123; pesan startup-nya dibuang ke/dev/null. - Baris 2 (
server=$!): variabelservermenyimpan PID proses yang baru dibuat, supaya bisa dimatikan nanti. - Baris 3-6 (
for i in ...): loop menunggu server siap —curldicoba berulang sampai koneksinya diterima, lalubreak. - Baris 7 (
curl -s ... | grep '<title>'): sebagai client,curlmeminta halaman dari server di127.0.0.1port8123;grepmenyaring baris judul dari responsnya. - 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:
| Sifat | TCP | UDP |
|---|---|---|
| Cara kerja | koneksi dua arah, urutan dijaga | kirim dan lupakan |
| Paket hilang | otomatis dikirim ulang | tidak ada jaminan |
| Contoh pemakaian | web, SSH, transfer file | streaming, 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:
- Aplikasi menyerahkan respons HTML ke sebuah socket — titik akhir komunikasi berupa pasangan
IP:portmilik proses. - Kernel menerima data dari socket, memilih protokol transport, memecah data menjadi paket, dan menulis alamat tujuan pada tiap paket.
- Kernel membaca routing table — peta jalur keluar — untuk memutuskan lewat interface mana paket dikirim.
- 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.