Coding Stack TCP/IP, 1: Ethernet dan ARP (2016)
(saminiir.com)-
Implementasi stack TCP/IP
- Mengimplementasikan stack TCP/IP sendiri mungkin terlihat seperti pekerjaan yang kompleks.
- Spesifikasi inti TCP terdiri dari parsing header TCP, mesin status, kontrol kemacetan, dan perhitungan waktu habis retransmisi.
- Dalam seri blog ini, akan diimplementasikan stack TCP/IP minimal di ruang pengguna pada Linux.
- Tujuan tulisan dan perangkat lunak ini adalah untuk pembelajaran yang bersifat edukatif agar dapat mempelajari pemrograman jaringan dan sistem secara lebih mendalam.
-
Perangkat TUN/TAP
- Untuk mencegat lalu lintas jaringan tingkat rendah di kernel Linux, digunakan perangkat TAP.
- Perangkat TUN/TAP mudah dikonfigurasi dari program ruang pengguna dan digunakan oleh berbagai program seperti OpenVPN.
- Dengan menggunakan perangkat TAP, data dapat dibaca dan ditulis ke buffer Ethernet.
-
Format frame Ethernet
- Ethernet adalah dasar dari berbagai teknologi jaringan yang menghubungkan komputer di LAN.
- Standar Ethernet telah berkembang pesat sejak pertama kali diumumkan pada tahun 1980.
- Header frame Ethernet dapat dideklarasikan sebagai struktur C dan mencakup field DMAC, SMAC, Ethertype, dan payload.
-
Parsing frame Ethernet
- Atribut
packeddigunakan agar kompiler GNU C tidak mengoptimalkan tata letak memori struktur. - Skenario keseluruhan untuk mem-parsing dan memproses frame Ethernet cukup sederhana.
- Atribut
-
Address Resolution Protocol (ARP)
- ARP digunakan untuk memetakan alamat Ethernet 48-bit ke alamat protokol secara dinamis.
- Format paket ARP relatif sederhana dan mencakup tipe perangkat keras, tipe protokol, ukuran perangkat keras, ukuran protokol, opcode, dan field data.
-
Algoritme resolusi alamat
- Untuk menyimpan hasil ARP, digunakan
translation tableagar terhindar dari permintaan ARP yang duplikat. - Uji utama implementasi ARP adalah memastikan apakah ia merespons permintaan ARP dengan benar.
- Untuk menyimpan hasil ARP, digunakan
-
Kesimpulan
- Implementasi minimal pemrosesan frame Ethernet dan ARP relatif mudah dan dapat dilakukan hanya dengan beberapa baris kode.
- Kode sumber proyek dapat dilihat di GitHub.
- Pada tulisan berikutnya, implementasi akan dilanjutkan dengan parsing paket IPv4 serta ICMP echo dan responsnya (ping).
Belum ada komentar.