13 puan yazan GN⁺ 2025-02-27 | 5 yorum | WhatsApp'ta paylaş
  • Ağ altyapısı; switch, bridge, router, load balancer, firewall gibi bileşenlerden oluşur
  • İşletim sistemi, paketleri sınıflandırarak, kuyruklara yerleştirerek ve firewall kurallarını uygulayarak ağ iletişimini kontrol eder
  • Peki var olmayan bir taşıma katmanı protokolü kullanılırsa ne olur?
  • OS buna izin verir mi? Paketler gerçekten iletilir mi? Firewall engeller mi?
  • Bunu doğrulamak için doğrudan deney yapıldı

İnternet protokollerine genel bakış

  • İnternet, verileri iletmek için birden çok katmandaki protokollerin birlikte çalıştığı bir yapı ile işler
  • Uygulama bir istek gönderdiğinde, OS bunu çeşitli ağ katmanlarının başlıklarıyla sararak iletir
  • Taşıma katmanı (Transport Layer): TCP(6), UDP(17) gibi protokoller burada yer alır
  • IP başlığındaki Protocol alanı değiştirilip kullanılmayan bir numara verilirse ne olur?

Deney #1: Kendi bilgisayarımda doğrudan test

Deney yöntemi

  1. HDP (sahte protokol) tanımı: Mevcut protokollerden tamamen farklı yeni bir taşıma katmanı protokolü tasarlandı
  2. Sunucu ve istemci uygulaması: Paket alıp gönderen programlar geliştirildi
  3. Loopback testi: OS'nin paketleri kendi içinde nasıl işlediği gözlemlendi

Çalıştırma süreci

$ sudo cargo run --bin server  # Sunucuyu çalıştır  
$ fortune | cowsay | sudo cargo run --bin client 127.0.0.1  # İstemciyi çalıştır  

Sonuçlar

  • OS, HDP paketlerini normal şekilde işledi ve loopback arayüzü üzerinden yeniden alındı
  • IP protokol numarası değiştirilerek ek testler yapıldı
    • 1 (ICMP), 2 (IGMP), 6 (TCP) → sunucuda algılanmadı
    • 50, 51 (IPSec ile ilgili protokoller) → istemcide gönderim doğrudan engellendi
    • 256 (IP protokol numarası aralığını aşıyor)socket() çağrısı aşamasında hata oluştu

Neden analizi

  • OS'nin bazı protokol numaralarını sistem düzeyinde rezerve ederek engellediği durumlar var
  • Darwin (BSD tabanlı macOS) üzerinde socket() çağrısında protocol=0 ayarlanırsa bazı paketler otomatik olarak filtrelenir
  • IPSec ile ilgili protokoller büyük olasılıkla güvenlik nedeniyle engellenir
  • IPv4 protokol numarası 8 bit olduğundan yalnızca 0~255 aralığı geçerlidir

Deney #2: İnternetten paket gönderimi

Deney planı

  1. DigitalOcean VPS kurulumu: Almanya Frankfurt'taki bir bulut sunucusunda deney ortamı kuruldu
  2. HDP paketi gönderimi: Kendi bilgisayarımdan (Suudi Arabistan) DigitalOcean sunucusuna paket gönderildi
  3. Ağ ekipmanının tepkisinin analizi: Paketin ulaşıp ulaşmadığı ve firewall tarafından engellenip engellenmediği kontrol edildi

Beklenen sonuç

  • HDP paketleri normal şekilde iletilebilir ya da bazı ISP'ler veya DigitalOcean firewall'u tarafından engellenebilir

Gerçek sonuç

  • Yalnızca ilk paket iletildi, sonraki paketler engellendi
  • tcpdump ile doğrulananlar:
    • Kendi bilgisayarımdan paketler normal şekilde gönderildi
    • DigitalOcean sunucusunda yalnızca ilk paket algılandı
    • Sonraki paketler bir yerde engellendi (NAT, firewall, ISP vb.)

Neden analizi

  • DigitalOcean, standart dışı IP protokollerini desteklemiyor
  • Bunun başlıca nedeni büyük olasılıkla bulut sağlayıcısının firewall politikaları
  • Neden yalnızca ilk paketin ulaştığı ise belirsiz

AWS üzerinde yeniden deneme

  • AWS'de iki instance kullanılarak deney tekrarlandı
  • Aynı veri merkezi içinde HDP paketleri normal şekilde gönderilip alınabildi
  • Ancak internet üzerinden gönderildiğinde DigitalOcean'dakiyle aynı şekilde yalnızca ilk paketin ulaştığı sorun ortaya çıktı

Başlıca sorunlar

  • NAT (Network Address Translation): TCP/UDP portlarına göre çalıştığı için HDP gibi yeni bir protokolü ele almanın bir yolu yok
  • Firewall/ağ filtreleme: Çoğu ISP ve bulut sağlayıcısı onaylanmamış IP protokollerini engeller
  • Ağ ekipmanı optimizasyon sorunları: Bazı ağ cihazları standart dışı paketleri koşulsuz silebilir

Sonuç: TCP ve UDP kullanmak en iyisi

  • İşletim sistemleri arasındaki ağ yığını uygulamaları farklıdır
    • Linux, macOS ve Windows'ta socket() davranışı birbirinden farklıdır
  • Firewall ve NAT cihazları standart dışı protokolleri engeller
    • Kişisel ağlarda çalışsa bile internette kullanmak neredeyse imkânsızdır
  • Performans kazancı yok
    • UDP tabanlı QUIC gibi zaten doğrulanmış alternatifler mevcut
  • TCP/UDP kullanalım
    • Standart protokoller kullanıldığında port tabanlı NAT, firewall ve routing desteği otomatik gelir

Ek kaynaklar

5 yorum

 
junhochoi 2025-03-04

https://www.saturnsoft.net/network/2019/03/21/quic-http3-1/ yazısını okumanız da faydalı olabilir gibi görünüyor.

 
secret3056 2025-02-28

Eski StarCraft'ta Hamachi ile çok oyunculu oynarken IPX vardı; o zaman bunun ne olduğunu gerçekten çok merak ettiğimi hatırlıyorum.

 
secret3056 2025-02-28

Düşününce, NAT her şeyi engellerdi sanırım... IPv6 tamamen yerleşir ve NAT ortadan kalkarsa (pek olacak gibi görünmese de), kendi yaptığınız bir protokolle iletişim kurmak da mümkün olabilir.

 
tujuc 2025-02-27

Oho, güzel bir deneme...
Ağların temelini sarsan bir girişim olması güzeldi ama bu dünyadaki tüm ağ cihazları sadece TCP/UDP’ye özelleşmiş cihazlar olduğu için...

Ağ cihazlarının kalıptan seri üretim olduğunu bilmezken... mümkün gibi görünebilir... ama bunu öğrendikten sonra, ya benim işim çok başarılı olacak da herkes benim protokolümü kullanacak diye düşünmüyorsanız, bunun yapılamayacağını anlıyorsunuz...

 
GN⁺ 2025-02-27
Hacker News görüşleri
  • TCP'den üstün olmasına rağmen benimsenmemiş eski bir protokol olan SCTP var
    • Bunun nedeni, ağ donanımının TCP ve UDP dışındaki her şeyi engellemesi
  • Çeşitli taşıma protokollerini uygulamış biri olarak, IP üzerinde katman inşa etmenin önündeki en büyük engelin WAN yönlendiricileri değil, tüketici tipi NAT cihazları olduğunu söyleyebilirim
    • Belirli bir Netgear yönlendiricide, trafik sonuna kadar hayatta kalıyordu ama ilk 4 baytın 0'a dönüştüğü belirli bir bozulma yaşanıyordu
    • Bunun TCP/UDP olarak işlendiğinden ama gerçek çeviri yolunu izlemediğinden şüpheleniliyordu
  • TCP ya da UDP kullanmazsanız iletişim kurmak zor olur
    • İnternet, TCP ve UDP'yi standart olarak kabul ediyor
    • Başka protokolleri işleyemeyen çok sayıda cihaz var
    • İnternet donanımının tamamını değiştirmek, IPv4'ü terk etmekten bile daha uzun sürer
    • Ancak yeni bir protokol çok büyük avantajlar sunarsa şirketler ve hükümetler yüksek maliyetine rağmen destek uygulamayı düşünebilir
  • Yazının sonu bir cliffhanger gibi hissettiriyor
    • Neden özel protokolün yalnızca tek bir paketinin geçtiğini ve geri kalanların düşürüldüğünü merak ediyorum
  • TCP/UDP paketlerinin, OS ağ yığını tarafından yalnızca belirli portları dinleyen süreçlere iletildiğini sanıyordum
    • Bu bir güvenlik özelliği olabilir ve yetkisiz süreçler bazı portları dinleyemez
    • Başka süreçlerin tüm trafiği yakalayabilmesini beklemezdim
    • Birden fazla taşıma katmanı protokolünün trafiğinin yakalanabildiğini bilmiyordum
    • Muhtemelen ilgili sistem çağrısı yüksek yetki gerektiriyordur
  • İnternet protokolleri ve yönlendirme ekipmanı bugün sıfırdan tasarlansaydı nasıl olurdu diye merak ediyorum
    • HTTP'nin yerini, çok daha büyük paketler kullanan ve UDP tarzı temel bir protokol almış olurdu
    • TCP'nin yerini, video oynatmayı destekleyen basit bir akış protokolü almış olurdu
    • Bu iki protokol, trafiğin çoğunu daha verimli biçimde işlemiş olurdu
  • Bu, "tekerleği yeniden icat etsek ne olurdu?" varsayımı
  • Paket soketi gerekiyor
    • IP ağları her şeyi iletebilmelidir ama asıl sorun NAT
    • Bunu IPv6 ile denemek ilginç olurdu
  • TCP/UDP/IP her şeyi ele geçirmeden önceki başka protokoller kullanılırdı
  • Herkes UUCP kullanırdı
    • TCP/UDP'den önce benzer işleri yapıyordu