Buraya nasıl geldik?
(how-did-i-get-here.net)- Kullanıcının paketinin internet üzerinden web sitesi sunucusuna ulaşırken izlediği yolu gerçek zamanlı olarak görselleştiren interaktif bir sayfa
- Özel olarak geliştirilen
ktradlı traceroute programı, ICMP paketlerinin TTL değerini kullanarak her ağ atlamasına ilişkin bilgileri topluyor - Web sitesi JavaScript olmadan da çalışıyor; sunucu traceroute sonuçlarını akış halinde HTML'e yansıtıyor
- Yol analizi için WHOIS ve PeeringDB verileri kullanılarak her IP'nin ait olduğu otonom sistem (AS) ve şirket bilgileri gösteriliyor
- traceroute ile BGP tabanlı internet yapısını birleştirerek internetin, şirketler arasındaki peering ilişkileriyle kurulu ağlar topluluğu olduğunu gösteriyor
Paketinizin geçtiği yolculuk
- Sayfanın üst kısmındaki traceroute, kullanıcının bilgisayarından sunucuya kadar olan paket hareket yolunu gösteriyor
- Sırasıyla router, ISP, Amazon, NTT Global IP Network, Hetzner gibi ağlardan geçiyor
- Bazı bölümler “(no response)” olarak görünüyor; bunun nedeni yanıt vermeyen sunucular
- Hetzner ağı içinde birden fazla router'dan geçerek son sunucuya ulaşıyor
213.239.252.10IP adresi, ters DNS sorgusu ilecore0.fra.hetzner.comolarak gösteriliyor
Perde Arkası
- Web sitesi, kullanıcı isteğini aldığında sunucuda traceroute çalıştırıyor ve sonuçları gerçek zamanlı gönderiyor
- traceroute, ICMP protokolünü kullanıyor ve TTL (Time To Live) değerini her seferinde 1 artırarak her atlamadan gelen yanıtları topluyor
- TTL 0 olduğunda ilgili router bir hata mesajı döndürüyor; böylece paketin geçtiği yol izlenebiliyor
ktr, traceroute sonuçlarını akış halinde aktarırken her atlamanın IP, ASN ve sahip ağ bilgilerini de eşzamanlı sorguluyor
Frontend Eğlencesi
- JavaScript olmadan da çalışıyor; tarayıcı bunu yalnızca yavaş yüklenen bir sayfa gibi algılıyor
- Sunucu, HTTP bağlantısını açık tutarak traceroute sonuçlarını sırayla HTML içine ekliyor
- Her güncellemede CSS blokları ekleyip önceki sonuçları gizleme yöntemiyle gerçek zamanlı yenilenme etkisi oluşturuluyor
Önden Arkaya, Arkadan Öne
- Aslında sunucudan kullanıcının IP'sine traceroute çalıştırılıyor ve sonuçlar ters sırada gösteriliyor
- Bu, bir “reverse traceroute”; iki yönlü yol tamamen aynı olmasa da genellikle benzer bir rota gösteriyor
Ağlar ve otonom sistemler (AS)
- İnternet, otonom sistem (Autonomous System, AS) adı verilen şirket düzeyindeki ağların birbirine bağlı yapısı
- Her AS'nin benzersiz bir ASN (Autonomous System Number) değeri var ve karşılıklı peering ile trafik değiş tokuşu yapıyorlar
- İnternet, bireylerin değil şirketlerin sahip olduğu ağların toplamı; bağlantılar mali sözleşmeler ve idari süreçler tarafından belirleniyor
- ASN, 5 bölgesel internet kayıt kuruluşundan (RIR) biri üzerinden başvurularak alınabiliyor
WHOIS ve PeeringDB
- traceroute içindeki her IP'nin hangi AS'ye ait olduğunu bulmak için WHOIS protokolü ve PeeringDB veritabanı kullanılıyor
- WHOIS, TCP bağlantısı kurulduktan sonra sorgu gönderildiğinde sunucunun bilgi döndürdüğü basit bir yapıya sahip
- Sunucudan sunucuya alan adları ve biçimler değiştiği için, parser insanın okuma biçimine yakın basit bir simülatör olarak uygulanmış
- PeeringDB, tüm AS'lerin yaklaşık üçte biri için şirket bilgisi sağlıyor
BGP (Border Gateway Protocol)
- BGP, internetin şeklini belirleyen temel protokol olarak AS'ler arasında yol bilgisini değiş tokuş eder
- Sınır router'ları (border router), BGP yönlendirme tablolarını tutar ve her yol için ASN listesini saklar
- İki AS peering yaptığında, router'ları BGP oturumu kurar ve rota ilanlarını (route advertisement) değiş tokuş eder
- Router'lar, birden fazla yol arasından en kısa ya da en çok tercih edilen yolu seçerek paketleri iletir
BGP'nin tarihi
- 1969'da ARPANET ile başlayan ağ deneyleri, 1989'da Cisco ve IBM'in RFC 1105 çalışmasına uzanarak BGP v1'in ortaya çıkmasına yol açtı
- Daha sonra BGP v2 (1990) ve v4 (1994) yayımlandı; v4 bugün hâlâ kullanılıyor
- BGP, internetteki tüm ağlar arasındaki bağlantı yollarını belirleyen standart protokol haline geldi
Traceroute ile BGP'nin ilişkisi
- Örnek rota: AS16509 → AS2914 → AS24940
- Amazon (AS16509) → NTT Global IP Network (AS2914) → Hetzner (AS24940) sırası
- Aynı ASN içinde de birden fazla atlama olabilir; bu, iç yönlendirme protokolleri veya sabit yollarla işlenir
- AS'ler arasındaki peering ilişkileri, internetteki gerçek erişilebilirliği belirler
Kısa özet
- Web sitesi, kullanıcının IP'sine traceroute çalıştırıyor ve sonuçları HTTP akışıyla gönderiyor
- traceroute, ICMP paketlerinin TTL değerini kullanarak router'lar arasındaki yolu görselleştiriyor
- Her router bir otonom sisteme (AS) ait ve bunlar BGP üzerinden birbirine bağlı
- Peering ilişkileri, internetin erişilebilirliğini ve yapısını belirliyor
Sonsöz
- Yazar, internet yapısına dair bilgisinin yetersiz olduğunu fark ederek protokol merkezli eğitsel bir interaktif yazı hazırladı
- Büyük ve kusursuz bir proje yerine, küçük de olsa yayımlanmış bir iş ortaya koymayı seçti
- Hack Club topluluğunun teşvikiyle tamamlandı ve açık kaynak traceroute programı kullanıldı
- “Küçük de olsa tamamlanmış olması daha iyidir” mesajıyla, kalıcı web içeriği olarak yaşamayı umuyor
1 yorum
Hacker News görüşü
Bu reverse traceroute özelliğinin hâlâ faydalı olduğunu düşünüyorum Ama pratikte, AS yolu aynı olsa bile peering point neredeyse her zaman farklı olur Çoğu AS, hot-potato routing kullanır; yani trafiği paketin çıkış noktasına en yakın peering noktasından devreder Cold-potato kullansa bile asimetriktir. Ayrıca AS-path uzunluğu aynı olduğunda, hot-potato politikası yüzünden farklı bir rota da seçilebilir (düzenleme: hot/cold karışıklığı düzeltildi)
traceroute'un aşağıdan yukarıya doğru satır satır yüklenme nedeninin açıklanması ilginçti JavaScript olmadan, CSS bloklarını periyodik olarak ekleyip önceki durumu gizleme yöntemi gerçekten hackvari ve yaratıcı
“This is not my beautiful website.” ifadesi zekice geldi
Henüz denemediyseniz
ve ardından
komutlarını çalıştırmanızı öneririm
Bu proje yeniden Hacker News ana sayfasına çıkınca sunucu kısa süreliğine zorlanmış Lexi, “yarın tekrar bakın” diye duyurmuş
Başlığı görünce bir Talking Heads şarkısı çıkacak sandım
“Once in a Lifetime” bağlantısı sanki beynime kazındı Sadece başlığı görünce bile o bas çizgisi otomatik olarak çalmaya başlıyor
Kendim çalıştırdım ve ana internet bağlantımın kopup yedek hatta geçtiğini fark ettim Bugün elektrik kesintisi olmuştu; bunu bu araç sayesinde anladım. Oldukça faydalıydı
Bazen üstteki “You are here” bilgisi şöyle görünüyor
Ama başka zamanlarda
şeklinde görünüyor. Aynı IP için ASN'nin neden 50:50 oranında değiştiğini merak ediyorum. Rastgele değişiyor gibi görünüyor
Sayfa başta JavaScript olmadan düzgün çalışıyordu, ama sonradan değiştirilen HTML metin olarak encode edilmeye başladı
Bu yüzden bozuldu Bununla ilgili düzeltme PR'ını GitHub'a gönderdim