Model TCP/IP dan Wireshark
Pernahkah Anda bertanya-tanya bagaimana data yang Anda ketikkan di ponsel atau laptop bisa sampai ke server yang berjarak ribuan kilometer? Proses ini lebih kompleks dan terstruktur dari yang terlihat. Di balik layar, data diubah dari format yang dapat dibaca manusia (seperti teks JSON) menjadi serangkaian angka biner (0s dan 1s) yang dapat dikirim melalui kabel atau gelombang radio. Mari kita bedah bagaimana transformasi luar biasa ini terjadi, selangkah demi selangkah.
1. Konsep Dasar: Protokol sebagai Bahasa Universal
Bayangkan Anda ingin mengirimkan sebuah buku ke teman di luar negeri. Anda tidak bisa hanya melemparkannya. Anda harus membungkusnya, menempelkan label alamat, dan memastikan pengiriman mematuhi aturan tertentu. Dalam dunia jaringan, protokol adalah aturan-aturan ini.
Setiap protokol memiliki peran spesifik:
Protokol Aplikasi (HTTP): Ini adalah "bahasa" yang digunakan oleh aplikasi, seperti peramban web dan server. Aturan ini menentukan bagaimana permintaan (misalnya,
POST) dan respons diformat.Protokol Transport (TCP): Ini adalah "layanan pengiriman" yang menjamin paket Anda tiba dengan utuh dan dalam urutan yang benar.
Protokol Internet (IP): Ini adalah "sistem alamat" yang memastikan setiap paket menemukan jalannya di seluruh jaringan global.
Tanpa aturan-aturan ini, komunikasi data akan menjadi kekacauan yang tidak teratur.
2. Proses Pengiriman: Sebuah Perjalanan Empat Lapisan
Perjalanan data dari komputer Anda ke server mengikuti model berlapis yang dikenal sebagai model TCP/IP. Data melewati empat lapisan utama, dengan setiap lapisan menambahkan informasi atau "amplop" baru. Proses ini disebut enkapsulasi.
Lapisan 1: Lapisan Aplikasi (HTTP)
Semua dimulai di sini. Data Anda, misalnya dalam format JSON yang mudah dibaca, ditempatkan di dalam sebuah permintaan HTTP.
Bentuk Data: Teks atau string yang terstruktur, seperti:
Ini adalah permintaan yang siap dikirim.
Lapisan 2: Lapisan Transport (TCP)
Permintaan HTTP dari lapisan aplikasi diserahkan ke lapisan ini. Di sini, data yang besar dipecah menjadi unit-unit kecil yang disebut segmen. Setiap segmen diberi TCP header yang berisi nomor port sumber dan tujuan, serta nomor urut (sequence number). Nomor urut ini krusial untuk memastikan data dirakit kembali dengan benar di sisi penerima, seperti menyusun ulang potongan puzzle.
Bentuk Data: (Header TCP) + (Data HTTP)
Lapisan 3: Lapisan Internet (IP)
Setiap segmen TCP kemudian dibungkus lagi menjadi sebuah paket IP. Lapisan ini menambahkan IP header yang berisi alamat IP sumber (alamat komputer Anda) dan alamat IP tujuan (alamat server). Ini adalah alamat "fisik" di internet, seperti alamat rumah yang memastikan paket menemukan kota yang tepat.
Bentuk Data: (Header IP) + (Segmen TCP)
Lapisan 4: Lapisan Tautan Data & Fisik
Ini adalah lapisan terakhir sebelum data dikirim. Paket IP dibungkus lagi menjadi sebuah frame (misalnya, Ethernet frame) yang menambahkan alamat fisik perangkat (MAC Address) di jaringan lokal. Pada akhirnya, seluruh frame—bersama semua header yang ada—dikonversi menjadi byte stream.
Bentuk Data: (Header Frame) + (Header IP) + (Header TCP) + (Data HTTP) + (Trailer Frame)
Ini adalah bentuk data yang sesungguhnya melintasi media fisik, baik itu kabel, serat optik, atau gelombang radio.
3. Proses Penerimaan: Dekapsulasi
Di sisi server, prosesnya dibalik. Paket yang datang dibaca dari lapisan paling bawah. Setiap header dilepas satu per satu (proses dekapsulasi), hingga akhirnya data HTTP dan JSON asli terungkap di lapisan aplikasi, siap untuk diproses oleh server.
Membongkar Paket dengan Wireshark
Panduan ini akan menjelaskan secara komprehensif cara menggunakan Wireshark untuk analisis jaringan di Mac, mulai dari instalasi hingga analisis mendalam paket jaringan. Wireshark adalah alat penganalisis protokol jaringan yang paling kuat dan populer, memungkinkan Anda untuk melihat setiap lapisan protokol secara detail.
Bagian 1: Instalasi Wireshark di Mac
1.1 Metode Instalasi
Ada beberapa cara untuk menginstal Wireshark di Mac:
Metode 1: Instalasi Langsung dari Website (Disarankan)
Download Wireshark:
Kunjungi situs web resmi Wireshark: www.wireshark.org
Pilih versi stabil terbaru untuk macOS
Download file .dmg
Proses Instalasi:
Buka file .dmg yang telah di-download
Drag aplikasi Wireshark ke folder
/ApplicationsPENTING: Jangan lupa untuk menginstall ChmodBPF launch daemon
Buka file
Install ChmodBPF.pkgyang ada di dalam .dmgAtau alternatifnya, buka Wireshark → Preferences → Folders tab → double-click "macOS Extras"
Verifikasi Instalasi:
Buka aplikasi Wireshark dari folder Applications
Jika muncul permintaan password, masukkan password admin Anda
Metode 2: Instalasi via Homebrew
Jika Anda sudah memiliki Homebrew terinstal:
1.2 Mengatasi Masalah Permission yang Sering Terjadi
Masalah Umum: Error "You don't have permission to capture on that device"
Solusi:
Pastikan ChmodBPF terinstal:
Cek di System Preferences → Users & Groups → Login Items
Harus ada "ChmodBPF" di daftar
Jika masih error, lakukan langkah berikut:
Contoh:
Restart Mac Anda (kadang diperlukan agar perubahan permission berlaku)
Verifikasi dengan perintah:
Seharusnya muncul:
Bagian 2: Memulai Pengambilan Paket
2.1 Antarmuka Wireshark
Buka Wireshark:
Aplikasi → Wireshark
Mungkin perlu masukkan password admin untuk pertama kali
Pilih Antarmuka Jaringan:
en0: Biasanya untuk Ethernet (kabel)en1: Biasanya untuk Wi-FiAnda bisa melihat deskripsi masing-masing antarmuka di sebelah kanan nama
Mulai Capture:
Klik tombol Start capturing packets (ikon hiu biru)
Atau double-click pada antarmuka yang dipilih
Wireshark akan mulai menampilkan semua paket yang melintas
2.2 Tips Sebelum Memulai Capture
Matikan aplikasi yang tidak perlu untuk mengurangi noise
Gunakan filter sejak awal untuk fokus pada traffic yang relevan
Siapkan aksi yang akan dilakukan (misal: buka browser, jalankan curl, dll)
Bagian 3: Membuat dan Menganalisis Traffic HTTP
3.1 Membuat Permintaan HTTP untuk Testing
Menggunakan Terminal (curl)
Menggunakan Browser
Buka browser (Safari, Chrome, Firefox)
Kunjungi website yang ingin dianalisis
Lakukan aksi (klik link, submit form, dll)
3.2 Menggunakan Filter di Wireshark
Filter Dasar
Filter Lanjutan
3.3 Analisis Paket di Wireshark
Setelah menemukan paket yang relevan, klik pada paket tersebut untuk melihat detailnya:
1. Frame Layer (Lapisan Fisik & Data Link)
Penjelasan:
Frame Length: Total ukuran frame dalam bytes
Interface: Antarmuka jaringan yang digunakan
Arrival Time: Waktu paket tiba
Protocols in frame: Protokol yang terkandung dalam frame
2. Internet Protocol Version 4 (Lapisan Internet)
Penjelasan:
Version: Versi IP (4 = IPv4)
Header Length: Panjang header IP
Total Length: Total panjang paket IP
Source/Destination Address: Alamat IP sumber dan tujuan
Protocol: Protokol lapisan transport (6 = TCP)
TTL (Time to Live): Batas hop paket
3. Transmission Control Protocol (Lapisan Transport)
Penjelasan:
Source/Destination Port: Port sumber dan tujuan
Sequence Number: Nomor urut untuk pengiriman data
Acknowledgment Number: Nomor ack untuk konfirmasi penerimaan
Flags: Flag TCP (SYN, ACK, PSH, FIN, RST, URG)
Window Size: Ukuran window untuk flow control
Header Length: Panjang header TCP
4. Hypertext Transfer Protocol (Lapisan Aplikasi)
Penjelasan:
Request Line: Method, URI, dan HTTP version
Headers: Informasi tambahan tentang request
Body: Data yang dikirim (dalam hal ini JSON)
Bagian 4: Decrypt HTTPS Traffic (Advanced)
4.1 Mengapa Perlu Decrypt HTTPS?
Sebagian besar traffic web modern menggunakan HTTPS, yang terenkripsi. Tanpa decrypt, Anda tidak bisa melihat:
URL sebenarnya
Header HTTP
Body request/response
Parameter query
4.2 Setup untuk Decrypt HTTPS
Metode 1: Menggunakan Browser (Chrome/Firefox)
Setup Environment Variable:
Jalankan Browser dengan Environment Variable:
Metode 2: Menggunakan curl
4.3 Setup Wireshark untuk Decrypt HTTPS
Buka Wireshark Preferences:
Menu: Edit → Preferences
Atau shortcut: ⌘ + ,
Konfigurasi TLS/SSL:
Di panel kiri, pilih: Protocols → TLS (untuk Wireshark 3.x) atau SSL (untuk Wireshark 2.x)
Cari field: (Pre)-Master-Secret log filename
Klik Browse dan pilih file key log yang Anda buat
Klik OK
Restart Capture untuk menerapkan perubahan
4.4 Analisis HTTPS Traffic yang Ter-decrypt
Setelah setup, Anda akan melihat:
HTTP requests muncul di bawah HTTPS packets
Bisa melihat URL, headers, dan body yang sebenarnya
Bisa follow HTTP stream seperti traffic HTTP biasa
Bagian 5: Tips dan Trik Lanjutan
5.1 Menggunakan Color Coding
Wireshark memiliki color coding otomatis untuk memudahkan identifikasi:
Hijau: HTTP traffic
Biru: TCP traffic
Merah: Error atau problematic packets
Kuning: DNS traffic
Anda bisa membuat custom color rules di View → Coloring Rules
5.2 Menggunakan Statistics
Protocol Hierarchy:
Statistics → Protocol Hierarchy
Lihat distribusi protokol dalam capture
IO Graphs:
Statistics → IO Graphs
Visualisasi traffic over time
Endpoints:
Statistics → Endpoints
Lihat semua IP/Port yang terlibat
5.3 Export Data
Export Packets:
File → Export Specified Packets
Pilih format (pcap, pcapng, dll)
Export Objects:
File → Export Objects → HTTP
Export file yang dikirim via HTTP (images, documents, dll)
Save as CSV/JSON:
File → Export Packet Dissections → As CSV/JSON
Bagian 6: Troubleshooting Umum
6.1 Tidak Bisa Capture Paket
Masalah: "You don't have permission to capture on that device"
Solusi:
Pastikan ChmodBPF terinstal
Ubah ownership file BPF (lihat Bagian 1.2)
Restart Mac
Coba jalankan Wireshark sebagai sudo:
6.2 Traffic Tidak Muncul
Masalah: Tidak ada paket yang muncul meskipun ada aktivitas jaringan
Solusi:
Pastikan antarmuka yang benar dipilih
Cek apakah ada firewall yang memblokir
Coba antarmuka lain (en0 vs en1)
Matikan VPN jika aktif
6.3 HTTPS Tidak Ter-decrypt
Masalah: Traffic HTTPS masih terlihat terenkripsi
Solusi:
Pastikan SSLKEYLOGFILE environment variable ter-set
Cek path ke key log file di Wireshark preferences
Pastikan browser/app dijalankan dengan environment variable yang benar
Restart Wireshark setelah mengubah preferences
Bagian 7: Alternatif Wireshark untuk Mac
Jika Anda merasa Wireshark terlalu kompleks, ada beberapa alternatif:
7.1 Proxyman (Recommended untuk Developer)
Keuntungan:
Native macOS app (developed in Swift)
UI/UX yang lebih user-friendly
Fokus pada HTTP/HTTPS debugging
Automatic device setup untuk iOS/Android
Built-in tools untuk modify request/response
Fitur Utama:
Capture HTTP/HTTPS traffic
Multiple Filters (Protocol, Content-Type, URL, etc)
GraphQL Debugging
Map Local/Map Remote
Breakpoint debugging
JavaScript scripting
Website: proxyman.io
7.2 tcpdump (Command Line)
Keuntungan:
Sudah terinstal di macOS
Ringan dan cepat
Bisa di-automate dengan scripts
Contoh Penggunaan:
7.3 Charles Proxy
Keuntungan:
UI yang intuitif
Bagus untuk debugging mobile apps
Mendukung SSL Proxying
Website: charlesproxy.com
Bagian 8: Best Practices
8.1 Keamanan
Jangan capture di public network tanpa izin
Hapus capture yang mengandung data sensitif setelah analisis
Gunakan dummy data untuk testing (seperti httpbin.org)
Hati-hati dengan capture yang berisi password/token
8.2 Performance
Gunakan filter sejak awal untuk mengurangi noise
Matikan capture saat tidak digunakan
Save capture secara berkala untuk analisis nanti
Gunakan ring buffer untuk capture jangka panjang
8.3 Etika
Hanya capture traffic yang Anda miliki atau punya izin
Hormati privacy pengguna lain di jaringan
Gunakan pengetahuan untuk tujuan pembelajaran dan troubleshooting
Wireshark adalah alat yang sangat powerful untuk analisis jaringan di Mac. Dengan panduan ini, Anda sekarang memiliki pengetahuan lengkap untuk:
Menginstal Wireshark dengan benar di Mac
Mengatasi masalah permission yang sering terjadi
Melakukan capture dan analisis paket jaringan
Memahami setiap lapisan protokol secara detail
Decrypt HTTPS traffic untuk analisis mendalam
Menggunakan alternatif tools jika diperlukan
Praktikkan langkah-langkah di atas secara bertahap, dan Anda akan mahir dalam analisis jaringan menggunakan Wireshark. Ingatlah untuk selalu menggunakan pengetahuan ini dengan bertanggung jawab dan mengikuti aturan etika yang berlaku.
Cara Baca Laporan Wireshark
1. Lapisan Frame (Fisik & Tautan Data)
Bagian pertama ini adalah informasi dasar tentang paket yang ditangkap oleh Wireshark.
Frame 91: Ini adalah paket ke-91 yang ditangkap dalam sesi Wireshark.269 bytes on wire: Ukuran total paket saat melintas di jaringan.Interface name: en0: Antarmuka jaringan yang digunakan, yaitu Wi-Fi.Arrival Time: Waktu paket ini ditangkap, lengkap dengan milidetik.[Protocols in frame: eth:ethertype:ip:tcp:http:json]: Ini adalah ringkasan yang paling penting. Urutan ini menunjukkan lapisan-lapisan protokol dari bawah ke atas: Ethernet -> IP -> TCP -> HTTP -> JSON. Ini membuktikan bahwa data JSON Anda dienkapsulasi di dalam setiap lapisan di bawahnya.
2. Lapisan Ethernet (Tautan Data)
Bagian ini menunjukkan informasi dari lapisan Ethernet. Ini adalah "amplop" pertama yang membungkus paket.
Src: 8e:c3:47:d6:f1:01: Alamat MAC (Media Access Control) sumber. Ini adalah alamat fisik unik dari kartu jaringan (Wi-Fi card) komputer Anda.Dst: 02:02:00:a5:90:00: Alamat MAC tujuan. Ini adalah alamat MAC dari perangkat berikutnya di jaringan Anda, kemungkinan router Anda.Type: IPv4 (0x0800): Nilai ini menunjukkan bahwa "amplop" berikutnya yang ada di dalam bingkai Ethernet ini adalah paket IPv4.
3. Lapisan Internet (IP)
Ini adalah informasi alamat logis dari paket.
Source Address: 10.126.79.11: Alamat IP (Internet Protocol) lokal komputer Anda.Destination Address: 52.202.135.65: Alamat IP tujuan, yaitu IP dari serverhttpbin.org.Protocol: TCP (6): Nilai ini mengindikasikan bahwa "amplop" berikutnya yang ada di dalam paket IP ini adalah segmen TCP.
4. Lapisan Transport (TCP)
Bagian ini menunjukkan rincian komunikasi yang andal antara dua aplikasi.
Src Port: 51324: Port sumber, yaitu port yang digunakan oleh aplikasi (misalnya browser ataucurl) di komputer Anda untuk mengirim permintaan.Dst Port: 80: Port tujuan. Ini adalah port standar untuk lalu lintas HTTP di server.Flags: PSH, ACK: Ini adalah flag TCP.PSH(Push) menandakan bahwa paket ini berisi data yang harus segera dikirim ke lapisan aplikasi di atasnya.ACK(Acknowledgement) berarti paket ini juga mengakui penerimaan paket sebelumnya dari server.TCP payload (203 bytes): Ini menunjukkan bahwa ada 203 byte data HTTP yang berada di dalam segmen TCP ini.
5. Lapisan Aplikasi (HTTP & JSON)
Ini adalah bagian paling atas, di mana data asli Anda berada.
POST /post HTTP/1.1: Ini adalah Request Line dari permintaan HTTP. Anda mengirim permintaanPOSTke server.Host: httpbin.org: Header HTTP yang menunjukkan nama domain tujuan.Content-Type: application/json: Header yang memberitahu server bahwa data yang dikirim adalah format JSON.Content-Length: 69: Panjang data JSON yang ada di bagian body.JavaScript Object Notation: application/json: Wireshark secara otomatis mengenali data ini sebagai JSON.Object: Bagian ini memecah struktur data JSON yang Anda kirim.Member: nama:String value: AndiMember: email:String value: andi@example.comMember: pesan:String value: Halo Dunia!
Program Go
Mari kita buat program sederhana untuk menangani berbagai jenis permintaan HTTP (JSON, form data, dan multipart) dan kemudian menangkapnya dengan Wireshark. Program Go ini akan berfungsi sebagai server lokal yang berjalan di localhost:8080.
1. Program Server Golang
Buat file baru bernama main.go. Program ini akan mendengarkan permintaan di port 8080 dan memiliki tiga endpoint yang berbeda untuk setiap jenis data.
2. Menjalankan Program dan Mengirim Permintaan
Buka terminal, navigasi ke direktori tempat Anda menyimpan
main.go, dan jalankan server Go:Server akan mulai berjalan dan menunggu permintaan. Biarkan terminal ini tetap terbuka.
3. Menggunakan Wireshark untuk Menangkap Paket
Buka aplikasi Wireshark.
Pilih antarmuka jaringan
Loopback(ataulo0di macOS). Ini adalah antarmuka virtual yang digunakan untuk lalu lintas jaringan lokal (dari komputer ke komputer itu sendiri).Klik tombol Start capturing packets.
Di bilah filter, ketik:
tcp.port == 8080dan tekan Enter. Ini akan memastikan Anda hanya melihat lalu lintas ke server lokal Anda.
4. Simulasi dan Analisis
Sekarang, buka terminal baru untuk mengirim permintaan menggunakan curl dan amati hasilnya di Wireshark.
Simulasi 1: Permintaan JSON
Di terminal, kirim permintaan
POSTdengan data JSON:Kembali ke Wireshark. Anda akan melihat paket TCP yang berisi permintaan HTTP. Klik pada paket tersebut.
Luaskan bagian Hypertext Transfer Protocol. Anda akan melihat header seperti
Content-Type: application/json.Luaskan bagian Line-based text data untuk melihat data JSON asli:
{"nama": "Budi", "umur": 25}. Ini menunjukkan bagaimana data JSON murni terlampir di dalam permintaan HTTP.
Simulasi 2: Permintaan Form Data
Di terminal, kirim permintaan
POSTdengan form data:Di Wireshark, cari paket baru. Klik paket
POSTyang relevan.Di bagian Hypertext Transfer Protocol, perhatikan header
Content-Typeyang akan menjadiapplication/x-www-form-urlencoded.Di bawah header, Anda akan melihat data form dalam format
key=value, yaitunama=Siti&kota=Jakarta.
Simulasi 3: Permintaan Multipart Form Data
Buat file teks sederhana (misalnya,
test.txt) dengan konten apa pun.Di terminal, kirim permintaan
POSTyang berisi file tersebut:Di Wireshark, cari paket
POSTyang baru.Di bagian Hypertext Transfer Protocol, Anda akan melihat
Content-Typeyang sangat berbeda, yaitumultipart/form-data; boundary=....Luaskan bagian Multipart Mime Media Encapsulation. Anda akan melihat bagian-bagian terpisah (parts) dari data
multipart. Satu bagian akan berisi headerContent-Dispositiondengan nama file (test.txt), dan di bawahnya, Anda akan menemukan konten dari file tersebut. Ini menunjukkan bagaimana data dan file dipaketkan secara terpisah di dalam satu permintaan.

Simulasi Beberapa Segmen
Ini akan memperjelas bagaimana TCP memecah data HTTP menjadi potongan-potongan yang lebih kecil.
1. Memodifikasi Program Go (Golang)
Kita akan mengirimkan data yang sangat besar. Kita bisa menggunakan endpoint /json karena sangat fleksibel.
2. Menjalankan Program dan Mengirim Permintaan
Jika server Go Anda belum berjalan, jalankan kembali:
Buka Wireshark dan mulai menangkap lalu lintas di antarmuka
Loopback(lo0di macOS) dengan filtertcp.port == 8080.Buat file JSON berukuran besar. Anda bisa membuat file ini secara manual atau menggunakan skrip sederhana. Misalnya, buat file
large_data.json.Di terminal, kirim permintaan
POSTdengan file JSON berukuran besar:Bash
Perintah
@large_data.jsonmemberitahucurluntuk membaca konten dari file dan mengirimkannya sebagai body permintaan.

3. Analisis di Wireshark
Setelah perintah
curlselesai, kembali ke Wireshark dan hentikan penangkapan paket.Di bilah filter, gunakan
tcp.port == 8080dan cari paketPOSTyang Anda kirim. Anda akan melihat satu baris untuk permintaanPOSTAnda.Namun, di bawah baris tersebut (atau dengan mengklik panah di sampingnya), Anda akan melihat beberapa paket TCP terpisah. Ini adalah paket-paket yang mewakili setiap segmen.
Klik pada paket pertama (yang memiliki
POSTdi bagian infonya). Di panel bawah, Anda akan melihat header HTTP dan bagian pertama dari data JSON. Perhatikan header TCP. Anda akan melihatSequence Numberyang menandai awal data.Sekarang, klik pada paket kedua (yang akan memiliki "TCP segment of a reassembled PDU" di bagian info).
Perhatikan header TCP-nya. Anda akan melihat
Sequence Numberyang melanjutkan dari paket sebelumnya. Ini membuktikan bahwa paket ini adalah kelanjutan dari data yang sama.Wireshark akan merakit kembali data ini secara otomatis untuk Anda, tetapi Anda bisa melihatnya di panel bawah.
Jika Anda memiliki lebih dari dua segmen, periksa paket-paket berikutnya. Setiap paket akan memiliki
Sequence Numberyang meningkat, menunjukkan urutan pengiriman.
Dengan cara ini, Anda bisa melihat bagaimana data yang secara konseptual adalah satu kesatuan (satu file JSON) dipecah oleh protokol TCP menjadi beberapa segmen yang lebih kecil untuk pengiriman yang lebih efisien dan andal.
Last updated
