TCP/IP Yığını Kodlamak, 1: Ethernet ve ARP (2016)
(saminiir.com)-
TCP/IP yığını uygulaması
- TCP/IP yığınını doğrudan uygulamak karmaşık bir iş gibi görünebilir.
- TCP'nin temel özellikleri TCP başlığını ayrıştırma, durum makinesi, tıkanıklık kontrolü ve yeniden iletim zaman aşımı hesaplamasından oluşur.
- Bu blog serisinde Linux üzerinde asgari düzeyde bir kullanıcı alanı TCP/IP yığını uygulayacağız.
- Bu yazının ve yazılımın amacı, ağ ve sistem programlamayı daha derinlemesine öğrenmeye yönelik eğitsel bir amaç taşır.
-
TUN/TAP aygıtı
- Linux çekirdeğinde düşük seviyeli ağ trafiğini yakalamak için TAP aygıtı kullanılır.
- TUN/TAP aygıtları kullanıcı alanı programlarında kurulumu kolaydır ve OpenVPN gibi çeşitli programlarda kullanılır.
- TAP aygıtı kullanılarak Ethernet tamponlarına veri okunup yazılabilir.
-
Ethernet çerçeve biçimi
- Ethernet, LAN üzerinde bilgisayarları birbirine bağlayan çeşitli ağ teknolojilerinin temelidir.
- Ethernet standardı, 1980'de ilk kez yayımlandığından beri büyük ölçüde gelişmiştir.
- Ethernet çerçevesi başlığı bir C yapısı olarak tanımlanabilir ve DMAC, SMAC, Ethertype ve payload alanlarını içerir.
-
Ethernet çerçevesi ayrıştırma
- GNU C derleyicisinin yapı bellek yerleşimini optimize etmesini önlemek için
packedniteliği kullanılır. - Ethernet çerçevelerini ayrıştırma ve işleme için genel senaryo basittir.
- GNU C derleyicisinin yapı bellek yerleşimini optimize etmesini önlemek için
-
Adres Çözümleme Protokolü (ARP)
- ARP, 48 bit Ethernet adreslerini protokol adreslerine dinamik olarak eşlemek için kullanılır.
- ARP paket biçimi görece basittir ve donanım türü, protokol türü, donanım boyutu, protokol boyutu, opcode ve veri alanlarını içerir.
-
Adres çözümleme algoritması
- Yinelenen ARP isteklerini önlemek için ARP sonuçlarını saklamada
translation tablekullanılır. - ARP uygulamasının nihai testi, ARP isteklerine doğru şekilde yanıt verip vermediğini doğrulamaktır.
- Yinelenen ARP isteklerini önlemek için ARP sonuçlarını saklamada
-
Sonuç
- Ethernet çerçevesi işleme ve ARP'nin asgari uygulaması görece kolaydır ve birkaç satır kodla mümkündür.
- Projenin kaynak kodu GitHub'da incelenebilir.
- Bir sonraki yazıda ICMP echo ve yanıtı (ping) ile IPv4 paket ayrıştırmasının uygulanmasına devam edilecek.
Henüz yorum yok.