Dasar-Dasar Networking (Layer 1-4)
Tulisan ini berfungsi sebagai penjelasan singkat tentang jaringan dan cara kerja beberapa protokol standar yang dapat dilihat saat melakukan perekaman lalu lintas. Konsep-konsep ini merupakan inti dari perekaman dan analisis lalu lintas. Tanpa pemahaman mendasar tentang aliran jaringan umum dan port serta protokol apa yang digunakan, kita tidak dapat menganalisis lalu lintas yang kita rekam secara akurat.
Gambar di atas memberikan gambaran yang bagus tentang "Open Systems Interconnect (OSI)" dan "Transmission Control Protocol - Internet Protocol (TCP-IP)". Model-model tersebut merupakan representasi grafis tentang bagaimana komunikasi ditangani antara komputer yang terhubung dalam jaringan.
Karakteristik OSI TCP/IP
Lapisan Tujuh Empat
Fleksibilitas Ketat Longgar
Ketergantungan Independen dari protokol & bersifat umum Berdasarkan protokol komunikasi yang umum digunakan
Ketika membandingkan kedua model ini, kita dapat melihat bahwa model OSI memiliki segmentasi yang lebih banyak dibandingkan model TCP/IP. Hal ini karena OSI dibagi menjadi bagian-bagian fungsional yang lebih kecil.
Lapisan (layer) 1 hingga 4 dalam model OSI berfokus pada pengendalian transportasi data antara host. Kontrol ini mencakup berbagai aspek, mulai dari media fisik yang digunakan untuk transmisi hingga protokol yang dipakai untuk mengatur komunikasi, atau bahkan tidak adanya komunikasi dalam proses pengiriman data. Sementara itu, lapisan 5 hingga 7 menangani interpretasi, pengelolaan, dan penyajian data yang telah dikemas sebelum akhirnya diterima oleh pengguna akhir.
Kita bisa menganggap model OSI sebagai teori yang menjelaskan cara kerja komunikasi jaringan, sementara model TCP/IP lebih erat kaitannya dengan implementasi nyata dalam dunia jaringan. Model TCP/IP memiliki struktur yang lebih fleksibel dan lebih menyatu dibandingkan model OSI. Model ini terdiri dari empat lapisan, di mana lapisan 5, 6, dan 7 dari OSI digabung menjadi satu lapisan dalam TCP/IP. Selain itu:
Lapisan 3 dalam TCP/IP berfungsi sebagai transportasi,
Lapisan 2 disebut sebagai lapisan internet, yang sejajar dengan lapisan jaringan dalam OSI,
Lapisan 1 adalah lapisan tautan (link layer), yang mencakup lapisan 1 dan 2 dalam model OSI.
Bagiann ini, akan membahas berbagai Protocol Data Unit (PDU). Oleh karena itu, pemahaman fungsional tentang bagaimana PDU bekerja baik secara teori maupun dalam implementasi jaringan sangatlah penting.
PDU adalah paket data yang terdiri dari informasi kontrol dan data yang dienkapsulasi di setiap lapisan dalam model OSI. Tabel berikut akan menunjukkan bagaimana lapisan dalam kedua model tersebut sesuai dengan struktur PDU.
Saat menganalisis Protocol Data Unit (PDU), penting untuk memahami konsep enkapsulasi. Ketika data bergerak ke bawah dalam stack protokol, setiap lapisan akan membungkus data dari lapisan sebelumnya dalam sebuah "gelembung" yang disebut enkapsulasi.
Proses ini menambahkan informasi yang diperlukan oleh lapisan tersebut ke dalam header PDU. Informasi ini bervariasi tergantung pada lapisan yang terlibat, tetapi secara umum mencakup:
Data dari lapisan sebelumnya
Flags operasional
Opsi yang diperlukan untuk melakukan negosiasi komunikasi
Alamat IP sumber dan tujuan
Port
Protokol yang digunakan pada lapisan transport dan aplikasi
Dengan adanya enkapsulasi, setiap lapisan dalam model jaringan dapat berfungsi dengan baik tanpa perlu mengetahui detail dari lapisan lainnya. Proses ini memastikan bahwa data dapat dikirim dan diterima dengan benar di seluruh jaringan.
Gambar di atas menunjukkan bagaimana Protocol Data Unit (PDU) disusun, berdampingan dengan tampilan paket yang dipecah dari Packet Details di Wireshark. Perlu diperhatikan bahwa Wireshark menampilkan PDU dalam urutan terbalik. Hal ini terjadi karena Wireshark menampilkan data dalam urutan saat proses unencapsulation dilakukan, yaitu saat paket diterima dan diekstrak dari layer terluarnya menuju layer terdalam.
Sekarang akan membahas mekanisme pengalamatan yang memungkinkan pengiriman paket ke host yang benar. Akan dimulai dengan Media Access Control (MAC) Address.
MAC Addressing
Setiap antarmuka, baik logis maupun fisik, yang terhubung ke suatu host memiliki Media Access Control (MAC) address. MAC address adalah alamat unik yang digunakan dalam komunikasi pada lapisan data link (Layer 2 dalam model OSI). Seperti pada Red Arrow pada gambar dibawah.
MAC Addressing digunakan dalam komunikasi pada Lapisan 2 (data-link atau link-layer, tergantung model yang digunakan). Mekanisme ini bekerja dengan komunikasi host-to-host dalam satu domain siaran (broadcast domain).
Namun, jika lalu lintas Layer 2 harus melewati antarmuka Layer 3, maka PDU akan dikirim ke antarmuka egress Layer 3, dan paket tersebut akan dirutekan ke jaringan yang benar.
Pada Lapisan 2, proses ini terlihat seperti berikut:
PDU ditujukan ke antarmuka router, karena router bertindak sebagai gateway untuk perangkat di jaringan lokal.
Router memeriksa alamat di Layer 3 (misalnya, alamat IP tujuan) untuk menentukan ke mana paket harus dikirim selanjutnya.
Setelah menentukan tujuan, router melepas enkapsulasi Layer 2 yang lama dan menggantinya dengan informasi baru yang menunjukkan alamat fisik (MAC address) berikutnya dalam jalur perutean.
Dengan cara ini, setiap hop dalam jaringan menggunakan MAC addressing untuk komunikasi di dalam domain siaran yang sama, sedangkan IP addressing digunakan untuk komunikasi antar jaringan yang berbeda.
Internet Protocol (IP) dikembangkan untuk mengirimkan data dari satu host ke host lainnya melintasi batas jaringan. IP bertanggung jawab atas perutean paket, enkapsulasi data, serta fragmentasi dan penyusunan kembali datagram saat mencapai host tujuan.
Secara default, IP adalah protokol connectionless, yang berarti tidak memberikan jaminan bahwa data akan mencapai penerima yang dituju. Untuk memastikan keandalan dan validasi pengiriman data, IP bergantung pada protokol lapisan atas seperti TCP.
Saat ini, terdapat dua versi utama dari IP:
IPv4, yang merupakan standar utama yang digunakan saat ini.
IPv6, yang dirancang sebagai penerus IPv4.
IPv4
Mekanisme pengalamatan yang paling umum dikenal adalah Internet Protocol versi 4 (IPv4). IPv4 merupakan metode utama yang digunakan untuk merutekan paket antar jaringan menuju host yang berada di luar jaringan lokal kita. Gambar di bawah ini menunjukkan contoh alamat IPv4, yang ditandai dengan panah hijau.
Alamat IPv4 terdiri dari 32-bit yang dibagi menjadi empat oktet dan direpresentasikan dalam format desimal. Sebagai contoh, alamat 192.168.86.243 menunjukkan bagaimana setiap oktet memiliki rentang nilai dari 0 hingga 255.
Dalam analisis Protocol Data Unit (PDU):
Alamat IP ditemukan di Lapisan 3 (Network) dalam model OSI.
Dalam model TCP/IP, alamat IP terdapat di Lapisan 2 (Internet Layer).
Meskipun kita tidak akan membahas IPv4 secara mendalam di sini, penting untuk memahami fungsi dasar alamat ini, bagaimana mereka bekerja dalam jaringan, serta di lapisan mana mereka digunakan dalam komunikasi data.
Lapisan Transport memiliki beberapa mekanisme untuk memastikan pengiriman data dari sumber ke tujuan berjalan lancar. Bayangkan lapisan Transport sebagai pusat kontrol. Data aplikasi dari lapisan atas harus melewati lapisan Transport sebelum diteruskan ke lapisan bawah (IP dan MAC). Lapisan ini mengatur bagaimana lalu lintas akan dienkapsulasi sebelum dikirim ke protokol lapisan bawah. Setelah data mencapai penerima, lapisan Transport bekerja sama dengan protokol lapisan Jaringan/Internet untuk menyusun kembali data yang dienkapsulasi dalam urutan yang benar. Dua mekanisme yang digunakan untuk tugas ini adalah Transmission Control Protocol (TCP) dan User Datagram Protocol (UDP).
Dari tabel di atas, TCP dan UDP memiliki metode transmisi data yang sangat berbeda. TCP dianggap lebih andal karena menyediakan mekanisme error checking and data acknowledgment sebagai fungsi normalnya. Sebaliknya, UDP adalah protokol cepat yang mengorbankan keandalan demi kecepatan.
Sebagai gambaran, TCP digunakan ketika kita membutuhkan data yang lengkap daripada kecepatan. Misalnya, saat menggunakan Secure Shell (SSH) untuk terhubung dari satu host ke host lain, koneksi tetap aktif selama kita mengeluarkan perintah dan melakukan tindakan. Ini adalah fungsi TCP yang memastikan percakapan kita dengan host jauh tidak terputus. Jika koneksi terputus, TCP tidak akan mengirimkan potongan paket yang rusak ke aplikasi, sehingga menghindari kesalahan. Bayangkan jika kita menjalankan perintah sudo passwd user untuk mengubah kata sandi pengguna di remote host, tetapi sebagian pesan hilang di tengah jalan. Jika menggunakan UDP, kita tidak akan tahu apa yang terjadi dengan sisa pesan tersebut, yang bisa menyebabkan kata sandi rusak atau bahkan hal yang lebih buruk. TCP mencegah hal ini dengan mengakui setiap paket yang diterima, memastikan host tujuan telah memperoleh setiap paket sebelum mengirimkannya ke aplikasi untuk diproses.
Di sisi lain, jika kita membutuhkan respons cepat atau menggunakan aplikasi yang lebih mementingkan kecepatan daripada kelengkapan data, UDP adalah jawabannya. Contohnya adalah streaming video. Pengguna tidak akan menyadari jika ada satu atau dua piksel yang hilang dari video yang sedang diputar. Yang lebih penting adalah video dapat diputar dengan lancar tanpa terus-menerus terjeda untuk buffering. Contoh lainnya adalah DNS. Ketika sebuah host meminta entri rekaman untuk inlanefreight.com, host hanya menginginkan respons cepat untuk melanjutkan prosesnya. Jika permintaan DNS hilang, ia akan dikirim ulang. Tidak ada risiko data yang rusak akibat kehilangan paket seperti pada TCP.
Lalu lintas UDP tampak seperti lalu lintas biasa; ia hanya berupa satu paket tanpa respons atau pengakuan bahwa paket tersebut dikirim atau diterima, sehingga tidak ada banyak hal yang dapat diamati dari segi pengiriman. Namun, kita dapat melihat bagaimana TCP membangun koneksi.
Salah satu cara TCP memastikan pengiriman data dari server ke klien adalah melalui penggunaan sesi. Sesi ini dibuat menggunakan mekanisme yang disebut three-way handshake. Untuk melakukannya, TCP menggunakan opsi dalam header TCP yang disebut flags. Kita tidak akan membahas TCP flags secara mendalam sekarang, tetapi yang umum digunakan dalam three-way handshake adalah Synchronization (SYN) dan Acknowledgment (ACK).
Ketika sebuah host ingin berkomunikasi dengan server menggunakan TCP, langkah-langkahnya adalah sebagai berikut:
Klien mengirimkan paket dengan flag SYN diaktifkan, beserta opsi lain yang dapat dinegosiasikan dalam header TCP.
Ini disebut paket synchronization.
Paket ini hanya diatur dalam paket pertama dari host ke server dan memungkinkan kedua ujung menyepakati nomor urutan (sequence number) untuk memulai komunikasi.
Ini sangat penting untuk melacak paket.
Pada tahap ini, berbagai opsi lain juga dinegosiasikan, seperti window size, maximum segment size, dan selective acknowledgments.
Server merespons dengan paket TCP yang memiliki flag SYN dan ACK diaktifkan, untuk negosiasi nomor urutan dan mengakui paket SYN dari klien.
Server juga akan menyertakan perubahan apa pun pada opsi TCP yang diperlukan di dalam bidang opsi dalam header TCP.
Klien merespons dengan paket TCP dengan flag ACK diaktifkan, menyetujui negosiasi.
Paket ini menandai akhir dari three-way handshake dan koneksi antara klien dan server kini telah terjalin.
Saat memeriksa output ini, dapat dilihat pada bagian awal dari proses three-way handshake pada baris pertama. Informasi yang disorot dalam kotak merah menunjukkan bahwa Syn flag telah diatur. Jika kita melihat angka yang digarisbawahi hijau, terdapat dua angka, yaitu 57678 dan 80. Angka pertama adalah port acak yang digunakan oleh klien, sementara angka kedua adalah port well-known untuk HTTP, yang digunakan oleh server untuk mendengarkan koneksi permintaan web yang masuk.
Pada baris kedua, kita dapat melihat respons dari server kepada klien dengan mengirimkan paket SYN/ACK ke port yang sama. Kemudian, pada baris ketiga, klien mengakui paket sinkronisasi dari server untuk membangun koneksi.
Pada paket keempat, terlihat bahwa permintaan HTTP telah dikirim, dan sesi telah dibuat untuk mentransmisikan data dari gambar yang diminta. Saat proses streaming berlangsung, TCP mengirim acknowledgment untuk setiap bagian data yang diterima. Ini adalah contoh komunikasi TCP yang umum.
Kita telah melihat bagaimana sesi TCP dibuat; sekarang, mari kita periksa bagaimana sesi tersebut diakhiri.
Pada gambar di atas, terdapat serangkaian paket yang mirip dengan three-way handshake di akhir output. Ini menunjukkan bagaimana TCP menutup koneksi secara teratur. Salah satu flag lain yang dapat kita temui dalam TCP adalah FIN flag, yang digunakan untuk menandakan bahwa transfer data telah selesai dan pengirim meminta penghentian koneksi.
Klien akan mengakui penerimaan data, lalu mengirimkan FIN dan ACK untuk memulai proses terminasi sesi. Server kemudian merespons dengan mengakui paket FIN dan mengirimkan FIN miliknya. Terakhir, klien mengakui bahwa sesi telah selesai dan menutup koneksi.
Sebelum sesi benar-benar berakhir, kita biasanya akan melihat pola paket berikut:
FIN, ACK
FIN, ACK,
ACK
Output seperti ini menandakan bahwa koneksi telah ditutup dengan benar.