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