Internet nasıl çalışır?

Internetin nasıl çalıştığı konusunda size yardımcı olmak için, Linux Belgelendirme Projesinin web anasayfasındaki bu dökümanın, ön sayfasındaki bir tarayıcıyı göstererek, tipik bir Internet işlemi yaptığınız zaman neler olduğuna bakacağız. Bu belge

Bu, www.tldp.org konağının, World Wide Web dışa aktarma dizini altındaki HOWTO/Unix-and-Internet-Fundamentals-HOWTO/index.html dosyasında bulunduğu anlamına gelir.

İsimler ve konumlar

Tarayıcınızın yapması gereken ilk şey: belgenin bulunduğu makineye bir ağ bağlantısı kurmaktır. Bunu yapmak için ilk başta, www.tldp.org konağının ('host', 'host makinesi' ya da 'ağ konağı'nın kısaltmasıdır; www.tldp.org, tipik bir konak adıdır) konumuna olan ağı bulmak zorundadır. İlgili konum, aslında IP adresi denilen sayıdır (bu terimin 'IP' kısmını daha sonra açıklayacağız).

Bunu yapmak için tarayıcınız, isim sunucusu denilen bir programı sorgular. İsim sunucusu makinenizde bulunabilir, ancak konuştuğunuz servis makinesinde çalışması daha muhtemeldir. Bir ISP ile kaydolduğunuz zaman kurulum yordamının parçası, hemen hemen kesinlikle, Internet yazılımınıza ISP ağının üzerindeki isim sunucusunun IP adresini bildirmesi gereklidir.

Faklı makinelerdeki isim sunucuları birbirleriyle, konak isimlerini çözümlemek için gereken tüm bilgileri takas yaparak ve güncel tutarak haberleşirler (onları IP adreslerine eşleyerek). İsim sunucunuz, www.tldp.org çözümleme işlemindeki, üç ya da dört farklı yerdeki ağ arasında sorgulama yapmalıdır, ancak bu durum genellikle çok hızlı olur (bir saniyeden daha az). İsim sunucusu detaylarına bir sonraki bölümde bakacağız.

İsim sunucusu, www.tldp.org'un IP adresinin 152.19.254.81 olduğunu tarayıcınıza bildirecektir. Makineniz bunu bilerek, bitleri www.tldp.org'le doğrudan takas yapabilme imkanına sahip olacaktır.

Alan Adı Sistemi

Konak isimlerini Ip adreslerine çevirirken birlikte çalışan programların ve veritabanlarının ağlarının tümü 'DNS' olarak adlandırılır (Domain Name System). 'DNS sunucusu' terimine atıfta bulunulduğunu gördüğünüzde, yalnıca isim sunucusunu çağırdığımız anlamına gelir. Şimdi, sistemin tümünün nasıl çalıştığından bahsedeceğim.

Internet konak isimleri, noktalarla birbirinden ayrılmış kısımlarda oluşur. Bir alan, yaygın isim soneklerini paylaşan makinelerin bir toplamıdır. Örneğin; www.tldp.org makinesi, .org etki alanının .tldp.org alt etki alanında bulunur.

Her alan, alandaki diğer makinelerin IP adreslerinden haberdar olan yetkili bir isim sunucusu tarafından tanımlanır. Yetkili (ya da 'birincil') isim sunucusu, bozulacağı durumda yedekleme yapmalıdır; bir ikincil isim sunucusuna ya da ('ikincil DNS') atıfta bulunulduğunu görürseniz, bunlardan birinden bahsediyoruz demektir. Bu ikinciller tipik olarak, her birkaç saatte bir birincillerinden bilgilerini yenilerler, böylece birincil üzerindeki alan adından IP'ye eşleme yapılacak bir değişiklik otomatik olarak yayılır.

Şimdi, burası önemli bir bölümdür. Bir alan için isim sunucuları, diğer alanlarda bulunan (kendi alt alanları içeren) tüm makinelerin konumlarını bilmek zorunda değildir; yalnızca isim sunucularının konumlarını bilmek zorundadır. Örneğimizde, .org alanı için yetkili isim sunucuları, .tldp.org içim isim sunucularının Ip adreslerinden haberdadır, ancak .tldp.org'daki diğer makinelerin tümünden değildir.

DNS sistemindeki etki alanları, ters çevrilmiş büyük bir ağaç gibi düzenlenir. En tepedekiler kök sunuculardır. Herkes, kök sunucuların Ip adreslenebilir, bunlar DNS yazılımınıza tel ile bağlıdırlar. Kök sunucular, .com ve .org gibi üst seviye etki alanları için olan isim sunucularının IP adreslerini bilirler, ancak bu etki alanlarının içerisindeki makinelerin adreslerini bilmezler. Her üst seviye alan sunucusu, etki alanlarının direk olarak altında bulunan isim sunucularından haberdardır, vesaire.

DNS'nin dikkatlice tasarlanmasıyla, her makine, ihtiyaç duyduğu ağacın biçimi hakkındaki bilginin az bir miktarı ile çıkabilir ve alt ağaçlardaki yerel değişiklikler, bir yetkilili sunucunun isim-IP adres eşleme veritanının değiştirilmesiyle basitçe yapılabilir.

www.tldp.org adresinin IP adresi için sorgulama sırasında aslında gerçekleşen şey: İlk başta isim sunucunuz, .org için bir isim sunucusunu nerede bulabileceğini söylemesi için kök sunucusuna sorar. Bir kere bunu öğrendikten sonra, .tldp.org isim sunucusunun IP adresini söylemesi için .org sunucusuna sorar. Bir kere bunu öğrendikten sonra da, www.tldp.org. konağının adresini söylemesi için .tldp.org isim sunucusuna sorar.

Çoğu zaman aslında isim sunucunuz bu kadar katı çalışmaz. İsim sunucuları çok fazla önbellekleme yapar; isim sunucunuz bir konak adı çözümlediği zaman, kısa bir süreliğine, bellekte bulunan sonuç IP adresle olan ilişkisini tutar. Bu nedenle, yeni bir web sitesini ziyaret ettiğinizde, genellikle sadece getiriyor olduğunuz ilk sayfa konağının aranması hakkında tarayıcınızdan bir mesaj görürsünüz. Sonuç olarak, isim-adres eşlemesinin süresi biter ve DNS'niz yeniden sorgulama yapmak zorundadır. Bu önemlidir, böylece bir konak adı adresi değiştirdiği zaman, sonsuza dek boş boş dolanan geçersiz bilgiye sahip olmazsınız. Bir site için önbelleklemiş olduğunuz IP adresi de, konak erişilemez durumda olduğunda reddedilir.

Paketler ve Yönlendiriciler

Tarayıcının yapmak istediği şey, www.tldp.org üzerindeki Web sunucusuna şuna benzer bir komut olarak gönderilir:

GET /LDP/HOWTO/Fundamentals.html HTTP/1.0

Nasıl olduğu buradadır. Komut, kaynak adres (makinenizin Ip adresi), hedef adres (152.19.254.81) ve bunun bir World Wide Web isteği olduğunu belirten bir servis veya port numarası (bu durumda 80) gibi üç önemli şeyle sarılmış, telgrafa benzer bir bit bloğu olan bir paket haline getirilir.

Daha sonra makineniz, paketinizi, yönlendirici denilen özel bir makineye ulaşıncaya dek, telin (ISP bağlantınız ya da yerel ağ) altına nakleder. Yönlendirici, belleğinde, her zaman tam olmayan, fakat birinin ağınızın komşuluğunu tamamı ile açıklayan ve Internet üzerinden diğer komşuluklara nasıl gidebileceğimizi bilen bir Internet haritasını taşır.

Paketiniz hedefine ulaşıncaya dek çeşitli yönlendiriciler üzerinden geçebilir. Yönlendiriler akıllıdır. Yönlendiriciler, diğer yönlendiricilerin bir paket alımını onaylamanın ne kadar zaman alacağını izlerler. Ayrıca bu bilgiyi, hızlı bağlantılar üzerindeki trafiği yönetmek için kullanırlar. Bunu, başka bir yönlendiricinin (veya bağın) düştüğünü farketmek için ve bir başka yönlendirici bularak bu durumu telafi etmek için kullanırlar.

Bir efsaneye göre; Internet, nükleer savaşta hayatta kalmak için tasarlanmıştır. Bu doğru değildir, ancak güvenilmez bir dünyada, kat kat donanınımın haricinde güvenilir performans sağlaması konusunda aşırı derecede iyidir. Bu durum direk olarak, birkaç ağır ve zayıf anahtarlardan daha ziyade, binlerce yönlendirici üzerinden dağıtılması olan zekasından kaynaklanır (telefon ağı gibi). Bu durum, başarısızlıkların iyi yerelleştirilmesine eğilimli olduğu ve ağın bunlar etrafından yönlendirme yapabileceği anlamına gelir.

Bir kere paketiniz hedef makineye ulaştığı zaman bu makine, paketi web sunucunda beslemek için servis numarasını kullanır. Web sunucusu, paketin kaynak IP adres komutuna bakarak, nereye cevaplama yapılacağını söyleyebilir. Web sunucusu bu belgeyi geri döndürdüğü zaman, bu belge birkaç pakete parçalanacaktır.Paket boyutları, ağdaki iletim araçlarına ve servis türüne bağlı olarak çeşitlilik gösterir.

TCP ve IP

Birden fazla paket iletiminin nasıl ele alındığını anlamak için, Internetin aslında diğerlerin üzerine yığılmış olan iki protokolü olduğunu bilmeniz gerekir.

Düşük seviye olan IP (Internet Protocol), tekil olan paketleri, ağ üzerinden iki bilgisayarın bilgi alışverişinin kaynak ve hedef adresleri ile birlikte etiketlemesinden sorumludur. Mesela http://www.tldp.org'e eriştiğinizde; gönderdiğiniz paketler, 192.168.1.101 gibi bilgisayarınızın IP adresine ve www.tldp.org'un IP adresi olan 152.2.210.81'e sahip olacaktır. Birileri size bir yazı gönderdiğinde sizin ev adresiniz nasıl çalışıyorsa, bu adresler de aynı yolla çalışır. Postane, bu adresleri okuyabilir, nerede olduğunuza ve Internet trafiğindeki bir yönlendiricinin yaptığı gibi yazıyı size en iyi şekilde nasıl yönlendirebileceğine karar verebilir.

Daha üst seviye olan TCP (Transmission Control Protocol), güvenilirliği sağlar. İki makine bir TCP bağlantısını görüştüğünde (IP kullanarak yaptıkları) alıcı, paketin onayını gönderene geri yollayacağını bilir. Gönderici bazı zaman aşımı noktalarında bir onay görmez ise, bu paketi tekrar gönderir. Ayrıca, gönderici her TCP paketine, düzensiz gösterim durumunda paketleri yeniden toplamak için kullanabileceği bir sıra numarası verir. (Bu durum, bir bağlantı sırasında ağ bağlantılarında iniş veya çıkışlar olduğu durumda kolayca oluşur.)

TCP/IP paketleri ayrıca, kötü bağlantılar tarafından bozulmuş verinin belirlenmesini etkin hale getirmek için, bir sağlama toplamı içerir. (Sağlama toplamı, paketin geri kalanı kullanılarak hesaplanır; ya paketin geri kalanı ya da sağlama toplamı bir şekilde bozulmuştur, yeniden hesaplama ve karşılaştırma kuvvetle muhtemelen hata verecektir.) Böylece, TCP/IP ve isim sunucularını kullanan birisinin bakış açısıyla, konak adı/servis numarası ikilileri arasındaki byte akımlarının geçişi için güvenilir bir yol gibi görünür. Ağı protokollerini kaleme alan insanlar, neredeyse hiçbir zaman, bu seviyenin altında gelişen paketleme, yeniden paket toplama, hata kontrolü, sağlama toplaması ve yeniden iletim hakkında düşünmek zorunda değildir.

HTTP, bir uygulama protokolü

Şimdi tekrar örneğimize geri dönelim. Web tarayıcıları ve sunucuları, TCP/IP'nin en üstünde çalışan, basitçe bayt stringlerini geriye ve dışarıya geçirmede kullanan bir uygulama protokolü üzerinden konuşurlar. Bu protokol HTTP (Hyper-Text Transfer Protocol) olarak adlandırılır ve bunu daha önce bir komutta görmüştük - yukarıda gösterilmiş olan GET.

GET komutu www.tldp.org web sunucusuna 80 servis numarası ile gittiği zaman, 80 portunu dinleyen bir artalan sunucusuna dağıtılır. Çoğu Internet servisi, hiçbirşey yapmayan ancak portları bekleyen, gelen komutları izleyen ve çalıştıran artalan sunucuları tarafından gerçekleştirilirler.

Eğer Internet tasarımı bir kuralın tümüne sahip ise, tüm parçalar basit ve mümkün olduğunca insanlarca erişilebilir olmalıdır. HTTP ve onunla ilişkili olanlar (konaklar arasında elektronik posta geçişinde kullanılan Simple Mail Transfer Protocol, SMTP gibi), satırbaşı/satır beslemesi ile biten ve basit olan basılabilir komutları kullanmaya eğilimlidir.

Bu sonuna kadar verimsizdir. Bazı durumlarda, sıkı kodlanmış ikili protokolleri kullanarak daha çok hız elde edebilirsiniz. Ancak tecrübeler şunu gösteriyor ki; komutlara sahip olmanın avantajları, birşeyleri hileli ve şeffaf olmayan hale getirebilmenizin maliyetinde elde edebileceğiniz, etkinlikdeki herhangi bir marjinal faydadan daha önemli olduğunu açıklamak ve anlamak, insanlar için kolay olur.

Bu nedenle, sunucunun size TCP/IP yolu ile geri gönderdiği şey de metindir. Yanıtın başlangıcı şuna benzer bir şeye benzeyecektir (birkaç başlık saklanmıştır):

HTTP/1.1 200 OK
Date: Sat, 10 Oct 1998 18:43:35 GMT
Server: Apache/1.2.6 Red Hat
Last-Modified: Thu, 27 Aug 1998 17:55:15 GMT
Content-Length: 2982
Content-Type: text/html

Bu başlıklar bir satır boşluk ve web sayfasının metni ile devam ettirilecektir (düşen bağlantıdan sonra). Tarayıcınız yalnızca bu sayfayı görüntüler. Başlıklar bunun nasıl oluduğunu söyler (özellikle Content-Type başlığı, geri dönen verinin gerçekten HTML olduğunu söyler).