kodingup.camp

Beranda/Bekal Wajib: Cara Kerja Web, Tools, Git & Cara Belajar

Cara Kerja Internet & Web

Modul 1 dari 96 menit bacaHow the Web Works

Isi modul

    Kenapa ini penting

    Setiap hari kamu membuka website tanpa berpikir. Tetapi sebagai developer, kamu akan sering bertemu masalah yang hanya bisa dipecahkan kalau paham apa yang terjadi di balik layar. Contohnya: "Kenapa website saya tidak bisa dibuka padahal kodenya benar?" (mungkin DNS belum menyebar), "Kenapa gambar tidak muncul?" (mungkin server membalas 404), atau "Kenapa browser bilang situs ini tidak aman?" (mungkin belum memakai HTTPS). Modul ini memberi kamu peta besar. Peta ini akan terus terpakai saat nanti belajar fetch() di JavaScript, membuat API di Next.js, atau men-deploy website.

    Konsep inti

    Internet vs web

    Internet adalah jaringan raksasa yang menghubungkan miliaran komputer lewat kabel, serat optik, dan sinyal radio. Web (World Wide Web) adalah salah satu layanan yang berjalan di atas internet: kumpulan halaman yang saling terhubung lewat link. Email, game online, dan WhatsApp juga memakai internet, tetapi bukan "web". Analogi: internet adalah jaringan jalan raya, web adalah salah satu jenis kendaraan yang lewat di sana.

    Client dan server

    Analogi warung makan: kamu (client) memesan nasi goreng ke pelayan, dapur (server) memasak, lalu pelayan mengantarkan piringnya. Satu dapur bisa melayani banyak pelanggan sekaligus.

    IP address dan DNS

    Setiap perangkat di internet punya alamat angka yang disebut IP address, misalnya 172.66.147.243 (IPv4) atau versi panjang seperti 2606:4700::6812:1a78 (IPv6). Manusia susah menghafal angka, jadi dibuatlah DNS (Domain Name System), semacam buku telepon internet yang menerjemahkan nama domain seperti example.com menjadi IP address.

    Bagian-bagian sebuah URL:

    Bagian Contoh dari https://blog.contoh.id:443/artikel/git?hal=2#komentar Arti
    Protokol (scheme) https Cara berkomunikasi
    Subdomain blog Bagian dari domain utama
    Domain contoh.id Nama yang kamu sewa dari registrar
    TLD .id Top-level domain (.com, .id, .org)
    Port 443 "Pintu" di server; biasanya tidak ditulis karena default
    Path /artikel/git Lokasi halaman di server
    Query ?hal=2 Data tambahan berbentuk kunci=nilai
    Fragment #komentar Lompat ke bagian tertentu, tidak dikirim ke server

    Untuk punya website sendiri, kamu butuh dua hal: domain (dibeli/disewa tahunan di registrar) dan hosting (tempat file website disimpan dan dilayani). Nanti di modul GitHub kamu akan belajar hosting gratis lewat GitHub Pages.

    TCP/IP, HTTP, dan HTTPS

    Data di internet dipecah menjadi paket-paket kecil. IP mengurus alamat pengiriman paket, TCP memastikan paket sampai lengkap dan berurutan. Di atasnya ada HTTP (HyperText Transfer Protocol), "bahasa" percakapan antara browser dan server. HTTPS adalah HTTP yang dibungkus enkripsi TLS, sehingga isi percakapan (password, nomor kartu) tidak bisa diintip orang di tengah jalan, misalnya di Wi-Fi kafe. Sekarang hampir semua situs wajib HTTPS; browser menandai situs HTTP biasa sebagai "Not secure".

    Percakapan HTTP selalu berpola request (permintaan) dan response (jawaban). Request punya method: GET (ambil data), POST (kirim data baru), PUT/PATCH (ubah), DELETE (hapus). Response punya status code:

    Kode Arti Contoh situasi
    200 OK Berhasil Halaman tampil normal
    301 Moved Permanently Pindah alamat permanen http:// dialihkan ke https://
    302 Found Pindah sementara Dialihkan ke halaman bahasa
    403 Forbidden Dilarang Tidak punya izin akses
    404 Not Found Tidak ditemukan Salah ketik URL, file belum diupload
    500 Internal Server Error Server error Ada bug di program server

    Cara gampang menghafal: 2xx berhasil, 3xx dialihkan, 4xx salah di sisi client, 5xx salah di sisi server.

    Apa yang terjadi saat kamu mengetik URL lalu menekan Enter

    1. Browser membaca URL dan menentukan protokol, domain, dan path.
    2. DNS lookup: browser mencari IP dari domain (cek cache dulu, kalau tidak ada tanya DNS resolver milik provider internet).
    3. Koneksi TCP dibuka ke IP tersebut, lalu TLS handshake untuk HTTPS (kedua pihak sepakat soal kunci enkripsi dan browser memeriksa sertifikat situs).
    4. HTTP request dikirim, misalnya GET /artikel/git.
    5. Server memproses dan membalas response: status code, header, dan isi (biasanya HTML).
    6. Browser membaca HTML dan menemukan file lain yang dibutuhkan (CSS, JavaScript, gambar, font), lalu meminta semuanya lewat request tambahan.
    7. Render: HTML diubah menjadi DOM (pohon elemen), CSS menjadi CSSOM, keduanya digabung menjadi render tree, lalu browser menghitung posisi dan ukuran (layout), mewarnai piksel (paint), dan menyusun lapisan (composite). JavaScript dijalankan dan bisa mengubah DOM kapan saja.

    Peran HTML, CSS, dan JavaScript

    Ibarat rumah: HTML adalah struktur (dinding, pintu, ruangan), CSS adalah tampilan (cat, perabot, tata letak), dan JavaScript adalah perilaku (lampu otomatis, bel pintu). Memisahkan ketiganya memudahkan kerja tim dan perawatan. Prinsip progressive enhancement mengajarkan: buat isi inti tetap bisa diakses dengan HTML saja, lalu tambahkan CSS dan JavaScript sebagai lapisan peningkat. Kamu juga harus ingat bahwa kamu tidak pernah tahu pasti browser, ukuran layar, atau kecepatan internet pengunjung, jadi kode web harus ditulis dengan hati-hati.

    Contoh kode

    Kamu bisa "mengintip" percakapan HTTP dan DNS langsung dari terminal. Perintah di bawah sudah diuji di macOS (di Windows, curl dan nslookup juga tersedia di PowerShell).

    # 1. Tanya DNS: berapa IP dari example.com?
    nslookup example.com
    # → Name:    example.com
    # → Address: 172.66.147.243
    # → (IP bisa berbeda di tempatmu, satu domain bisa punya beberapa IP)
    
    # 2. Minta header response saja (-I) dari sebuah situs HTTPS
    curl -I https://example.com
    # → HTTP/2 200
    # → content-type: text/html; charset=utf-8
    
    # 3. Coba versi http:// (tanpa S) dari github.com
    curl -I http://github.com
    # → HTTP/1.1 301 Moved Permanently
    # → Location: https://github.com/
    # Artinya: server menyuruh browser pindah ke versi HTTPS
    

    Berikut bentuk request dan response HTTP mentah, supaya kamu terbayang isinya:

    GET /artikel/git HTTP/1.1
    Host: blog.contoh.id
    User-Agent: Mozilla/5.0
    Accept: text/html
    
    HTTP/1.1 200 OK
    Content-Type: text/html; charset=utf-8
    Content-Length: 128
    
    <!DOCTYPE html>
    <html lang="id"><head><title>Belajar Git</title></head>
    <body><h1>Belajar Git</h1></body></html>
    

    Kesalahan umum

    Latihan

    1. Mudah, Uraikan URL https://shop.tokoku.co.id/produk/sepatu?warna=hitam#ulasan menjadi protokol, subdomain, domain, TLD, path, query, dan fragment.
    2. Sedang, Jalankan curl -I ke tiga situs favoritmu (pakai https://), catat status code dan nilai header content-type. Lalu coba satu URL yang pasti tidak ada, misalnya https://example.com/halaman-ngasal. Status apa yang kamu dapat?
    3. Menantang, Tulis dengan kata-katamu sendiri urutan langkah dari mengetik https://developer.mozilla.org sampai halaman tampil, minimal 7 langkah, dan sebutkan di langkah mana HTTPS membuat perbedaan.
    Lihat solusi
    1. Protokol https, subdomain shop, domain tokoku.co.id, TLD .id (dengan second-level .co), path /produk/sepatu, query ?warna=hitam, fragment #ulasan.

    2. Contoh perintah dan hasil yang wajar:

    curl -I https://example.com
    # → HTTP/2 200
    curl -I https://developer.mozilla.org
    # → HTTP/2 302   (dialihkan ke /en-US/, wajar)
    curl -I https://example.com/halaman-ngasal
    # → biasanya 404 (tidak ditemukan)
    

    Hasil persisnya bisa beda tergantung situs. Yang penting kamu bisa membaca kelompok kodenya (2xx/3xx/4xx/5xx).

    1. Contoh jawaban: (1) browser mengurai URL; (2) cek cache DNS, kalau kosong tanya DNS resolver dan dapat IP; (3) buka koneksi TCP ke IP port 443; (4) TLS handshake: browser memeriksa sertifikat dan menyepakati kunci enkripsi (di sinilah HTTPS berperan, sejak titik ini semua data terenkripsi); (5) kirim GET /; (6) server membalas 302 ke /en-US/, browser meminta ulang; (7) terima HTML 200; (8) browser meminta CSS/JS/gambar; (9) bangun DOM + CSSOM, layout, paint, tampil.

    Ringkasan

    Video pendamping

    Kalau penjelasan di atas belum masuk, tonton ini. Video dari kanal YouTube pihak lain.

    JKT #14 - Bagaimana Internet Bekerja?Kelas Terbuka · Bahasa IndonesiaBuka di YouTube

    Kuis pemahaman

    Pilih satu jawaban per soal. Penjelasan muncul setelah kamu menjawab.