(geri sayım: 7, 6, 5, 4, 3, 2, 1)
İnternet Paketler, Yönlendirme ve Güvenilirlik
Merhaba, ismim Lynn Root. Spotify'da yazılım mühendisiyim. İnternetin
güvenilirliğini çoğu zaman sorgulamadan kabul ettiğimi ilk ben itiraf edeceğim.
İnternette dolaşan bilgi yoğunluğuna inanamazsınız. Ama her bir veri parçasının
size güvenilir biçimde ulaşması nasıl mümkün?
Diyelim ki Spotify'da bir şarkı çalacaksınız.
Bilgisayarınız doğrudan Spotify sunucularına bağlanıyor ve Spotify
şarkıyı size doğrudan, paylaşımsız bir hattan gönderiyor gibi görünür.
Aslında, internet böyle çalışmaz.
İnternet doğrudan, paylaşımsız bağlantılardan oluşsaydı bir şeyleri
milyonlarca kullanıcı katılırken çalıştırmaya devam etmek imkansız olurdu.
Çünkü her bir telin ve bilgisayarın her daim çalışacağının garantisi yok.
Bunun yerine, veri internet üzerinde daha az doğrudan bir şekilde gezer.
Uzun yıllar önce, 1970'lerin başında, ortağım Bob Kahn ile
şimdi internet dediğimiz şeyin tasarımı üzerine çalışmaya başladık.
Bob ve benim internet protokolleri ve mimarisini
tasarlama sorumluluğumuz ve fırsatımız vardı.
Biz de internetin gelişimine ve evrimine
katkıda bulunmakta ısrarımızı bunca zamandır sürdürüyoruz.
Bilginin bir bilgisayardan diğerine aktarımı oldukça ilgi çekici.
Belirli bir yol takip etmeye gerek duymuyor, hatta kullandığınız yol
bilgisayardan bilgisayara yapılan bir konuşmanın ortasında değişebilir.
İnternette bilgi bir bilgisayardan diğerine
"bilgi paketi" dediğimiz bir şeyle gider. Bir paket, internette bir yerden bir yere
sizin bir yerden bir yere arabayla seyahat ettiğiniz gibi ulaşır.
Trafik sıkışıklığına veya yolların durumuna bağlı olarak
aynı yere varmak için farklı bir yol seçebilir
veya seçmek zorunda kalabilirsiniz.
Ve tıpkı bir arabada her türlü şeyi taşıyabildiğiniz gibi
çeşitli dijital bilgiler de "IP paketleriyle" gönderilebilir.
Fakat bazı kısıtlar vardır. Diyelim ki bir uzay mekiğini
inşa edildiği yerden fırlatılacağı yere taşımanız gerekiyor. Mekik bir kamyona
sığmayacağından parçalara ayrılıp bir kamyon filosu ile taşınması gerekir.
Her biri farklı güzergahlar takip edebilir
ve varış yerine farklı zamanlarda ulaşabilirler.
Fakat tüm parçalar ulaştığında parçaları yeniden birleştirebilirsiniz
ve mekik fırlatmaya hazır hale gelir.
İnternette de detaylar benzer şekildedir.
Bir arkadaşınıza göndermek veya bir web sayfasına yüklemek istediğiniz
çok büyük boyutlu bir görsel on milyonlarca bit'lik 1 ve 0'lardan
oluşabilir ve tek bir pakette gönderilemeyebilir.
Veri bilgisayarda olduğundan görseli gönderen bilgisayar bu veriyi
"paket" denen yüzlerce ve hatta binlerce parçaya hızla ayırabilir.
Araba veya kamyonlardan farklı olarak bu paketlerin sürücüleri yoktur
ve güzergahlarını seçmezler. Her bir paket geldiği yerin ve gideceği yerin
internet adresini taşır. İnternetteki "yönlendirici" denen özel bilgisayarlar
paketlerin ağlar üzerinde sorunsuzca ilerlemesini sağlamak için
trafik yöneticisi gibi hareket eder. Bir güzergah sıkışıksa kişisel paketler
internet üzerinde farklı güzergahlara geçebilir ve varış noktasına
birbirlerinden az farkla veya düzensiz biçimde ulaşabilirler.
Nasıl işlediğine bir bakalım. "İnternet protokolü"nün bir parçası olarak
her yönlendirici paket göndermek için birden çok yolun takibini yapar
ve paketin varış IP adresine bağlı olarak her bir veri parçası için
erişilebilir en ucuz veri yolunu seçer.
Bu durumda "en ucuz" maliyetten ziyade zaman ve şirketler arası
politika ile ilişkiler gibi teknik olmayan faktörleri ifade eder.
Sıklıkla, verinin ulaşımı için en doğrudan güzergahın, en iyi olması gerekmez.
Farklı yol seçeneklerine sahip olmak ağı "arızaya dayanıklı" hale getirir. Yani
bir şeyler korkunç derecede ters gitse de ağ, paketleri göndermeye devam edebilir.
Bu, bir internet ana prensibinin temelini oluşturur: "güvenilirlik".
Peki bir veri talep etmek istemişseniz ve her şey teslim edilmemişse?
Diyelim ki bir şarkı dinlemek istiyorsunuz.
Tüm verilerin teslim edilip şarkının başarıyla çalacağından
nasıl yüzde yüz emin olabilirsiniz?
Yeni en iyi arkadaşınızla tanışın. "TCP: Geçiş Kontrol Protokolü".
TCP tüm verilerinizin paketler halinde gönderilip alınmasını yönetir.
Taahhütlü posta hizmeti gibi düşünün.
Cihazınızda bir şarkı istediğinizde Spotify şarkıyı
paketlere bölünmüş halde gönderir.
Paketleriniz ulaştığında TCP etraflı bir sayım yapar
ve alınan her paket için teyit gönderir.
Tüm paketler ulaşmışsa TCP teslim edildiğine dair imza atar
ve görev tamamlanır.
♪ (hareketli müzik) ♪
TCP bazı paketlerin kayıp olduğunu fark ederse imza atmaz,
yoksa şarkınızın sesi pek iyi çıkmaz veya bazı kısımları eksik olabilir.
Her bir eksik veya tamamlanmamış paketi Spotify yeniden gönderir.
TCP bir şarkı için birçok paketin teslim edildiğini doğruladığında
şarkınız çalmaya başlayacaktır.
♪ (hareketli müzik) ♪
TCP ve yönlendirme sistemlerinin en iyi tarafı "ölçeklendirilebilir" olmalarıdır.
8 cihazla da 8 milyar cihazla da çalışabilirler.
Aslında, "arızaya dayanıklılık" ve "yedeklilik" ilkeleri dolayısıyla
ne kadar "yönlendirici" eklersek internet o kadar "güvenilir" hale gelir.
Güzel olan bir diğer şeyse interneti herhangi bir kullanıcının hizmetini
sekteye uğratmadan geliştirip ölçeklendirebilmemiz.
İnternet, fiziksel olarak bağlı yüz binlerce "ağdan" ve milyarlarca
bilgisayar ve "cihazdan" oluşur. İnterneti oluşturan bu farklı sistemler verilerin
internette nasıl gönderileceğine dair üzerinde anlaşılan standartlar dolayısıyla
birbirlerine bağlanır, birbirleriyle iletişim kurar ve birlikte çalışırlar.
Bilgisayarlar veya internet üzerindeki yönlendiriciler tüm paketlerin yeniden
birleştirilecekleri varış noktasına, gerekliyse sırayla, ulaşmalarını sağlar.
Bu bir günde milyarlarca kez, siz veya bir başkası e-posta gönderirken,
bir web sitesini ziyaret ederken, görüntülü konuşma yaparken,
bir mobil uygulama kullanırken veya internet üzerindeki sensörler
veya cihazlar birbirleriyle konuşurlarken gerçekleşir.