(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.