DNS
(Domain Name System) internetin telefon defteri olarak düşünülebilir. Günümüzde
telefon numaralarını cep telefonlarımız dışında bir yerde saklamak ya da
ezberlemek (!) durumunda değiliz. Geçmişte durum böyle değildi. Küçük
defterlerimize telefon numaralarını yazar ve hata çok kullandığımız telefon
numaralarını ezberimizde tutardık. O zamanlardan ezberlediğim bazı numaralar
hala aklımdadır.
Elbette
bir kişiye ulaşmak için bir çok sayıyı aklında tutmak ve her ihtiyaç duyulduğunda bu
numaraları doğru sırada bir cihaza girmek çok pratik değil. Aynı şey internet
için de geçerli. Daha önce bu yazıda bahsettiğim gibi, internete bağlı cihazlar
bir IP adresine sahiptir. 212.154.234.45 gibi bir sayı dizisinden ya da IPv6
kullanan cihazlar için 2400:cb00:2048:1::c629:d7a2 gibi bir alfanümerik diziden
oluşan bu IP adreslerini, ziyaret etmek istediğimiz her web sitesi ya da sunucu
için ezberlemek zorunda olsak hiç pratik olmazdı. Bir bilgisayar başında
olduğumuz için ilk çözüm arayışı da bu sayı dizisini daha sonra anlayacağımız
bir isimle birlikte bilgisayarımızda saklamak olurdu. Örneğin aşağıdaki gibi
bir tablo hazırlayabilirdik.
Her
birimizin kişisel olarak bu tabloları tutması yine de pratik olmazdı. Ayrıca
ulaşmak istediğimiz web sitesi/hizmet sunucusunu ya da kullandığı IP adresini
değiştirebilir ve biz bundan habersiz kalabilirdik.
Daha
pratik, okunabilir, günlük hayatta kullanılırken hatırlanması ve insandan
insana aktarması daha kolay olan alan adlarının, ilgili sunucuların IP adresleri ile
ilişkilendirilmesi işini, tüm internet için Domain Name System yani DNS bizim için
yapıyor. Üstelik çoğunlukla arka planda neler olduğunun farkına bile
varmıyoruz. :)
Sistemi
tamam ama bu Domain Name (Alan Adı) nedir? Yukarıda bahsettiğim gibi internet
kullanımı sırasında insan hayatını kolaylaştırmak adına anlamsız karakter
dizileri ya da numaralar yerine kullanılan adreslere ihtiyacımız var. Bu
adreslerin tekil olması da bir diğer gereklilik. Evinizin adresinin postacının
sadece sizin evinizi bulmasını sağlayacak şekilde biçimlendirilmiş olması gibi.
Alan adları benzersiz olacak şekilde basit bir yapıda tasarlanmıştır. Alan adının bölümleri noktalarla ayrılır ve en sağındaki kısım TLD'dir. TLD Top Level Domain'in kısaltmasıdır. Prensip olarak TLD bu alan adının ne amaçla kullanıldığı hakkında bilgi verir. Com, net, org gibi TLD'ler için sıkı bir şekilde kontrol edilen kurallar olmamakla birlikte, ülkeler tarafından kontrol edilen uk, fr, tr gibi TLD'leri kullanmak için şartlar vardır.
Sağdan sola doğru incelemeye devam edersek göreceğimiz ikinci bölüm alan adını benzersiz kılan label kısmıdır. 3. ve daha sonraki kısımlar ise aynı labelın içindeki alt labelları ifade ederler. Çoğunlukla konuşurken alan adı içindeki bu ilk labeldan alan adı olarak sonraki labellardan ise alt alan adı olarak bahsederiz. Tr ve Uk TLD'lerinde olduğu gibi bazı ülkeler com.tr, gov.uk gibi ilk label'ı da kendilerine ayırmış sanki TLD'nin bir parçası gibi kullanmıştır. Bu nedenle bu ülke alan adlarından alacak kullanıcılar 2. label'ı seçerek kendi alan adlarını belirleyebilirler.
Bir
alan adını kullanmak istediğimizde daha önce başkası tarafından kullanılmıyorsa
ya da kullanılmak üzere ayırılmadıysa, registrar denen firmalar aracılığıyla
alan adını kendi adımıza kaydederiz. Bu kayıt işleminin takibi için de yıllık
olarak registrara ödeme yaparız. Bu işlem alan adını satın almamızı değil; ödemeleri yaptığımız sürece bu alan adının kullanım hakkına sahip olmamızı
sağlar. Alan Adları ve WWW hakkında detaylı bilgilere yazının sonundakikaynaklardan
ulaşabilirsiniz.
DNS
tarafından yapılan çözümleme (alan adından IP adresine dönüşüm) işlemi
gerçekleştirilirken arka planda neler olduğunu anlamak için, web tarayıcınızda
başlayan bu sürecin geçtiği bileşenleri de anlamak gerekir. Bu amaçla 4 farklı
DNS sunucusundan bahsedeceğiz.
DNS
Resolver: DNS
Resolver web tarayıcıları gibi client'lar tarafından yapılan sorguları
yanıtlamak üzere tasarlanmıştır. Kullanıcıdan gelen sorguda yer alan alan adını
çözümlemek için, bir kütüphanecinin kendisine sorulan bir kitabı bulmasına
benzer şekilde gerekli taramayı yapar ve ulaştığı bilgiyi istek sahibiyle
paylaşır.
Root
Nameserver: Çözümleme
işleminin ilk adımı root server'dır. Bir index tutarak daha sonra sorgunun
iletilmesi gereken yerleri belirler.
TLD
Nameserver: com,
net gibi TLD'lerin çözümlenmesini sağlar.
Authoritative
Nameserver: Çözümleme
işleminin son aşamasında görev alır. Sorgulanan alan adının karşılık geldiği IP
adresi kayıtlıysa bilgileri DNS Resolver'a gönderir.
Yazının sonundaki kaynaklarda bu sunucular ve aralarındaki iş bölümü hakkında daha detaylı bilgi bulabilirsiniz. Biz DNS çözümleme işlemini adım adım inceleyerek devam edelim.
- Web tarayıcının adres satırına
yazılan adres, örneğin: alperguclu.com tarayıcı tarafından işletim sistemi
üzerinde tanımlanmış DNS Resolverr'a
iletilir.
- DNS Resolver, sorguyu ilgili
root nameserver'a iletir.
- Root server ulaşılmak istenen
TLD'ye ait DNS server'ın adresini resolver'a döner.
- Resolver TLD sunucusuna (bu
durumda com TLD sunucusu) ilgili isteği iletir.
- TLD sunucusu alan adının
nameserver'ına ait IP adresini resolver'a döner.
- Resolver artık öğrenmiş olduğu
domain'in nameserverına isteği iletir.
- alperguclu.com için kayıtlı IP
adresi DNS sunucusu tarafından resolver'a dönülür.
- Son olarak DNS resolver tarayıcıya istenen alan adının bulunduğu web sunucusunun IP adresini bildirir.
DNS
çözümleme işlemi bittikten sonra, web tarayıcı öğrendiği IP adresine bir HTTP
isteği yaparak (9) web sayfasına (10) ulaşır.
Aşağıdaki
şemada bu adımları görebilirsiniz.
DNS
Caching (Önbellek)
DNS
sorgulama işleminin performansını arttırmak için daha önce elde edilen sonuçlar
önbellekte tutulur. DNS çözümleme işlemine ilişkin bilgilerin, isteği yapan
client'a yakın tutularak, harcanan zaman ve bant genişliğinin azaltılması
hedeflenir. DNS kayıtları bir çok yerde cachelenir ve önbelleğe alınan bu
bilgiler DNS kayıtlarında belirtilen TTL (time-to-live) değeri kadar süre
saklanır. Örneğin web tarayıcısında ya da işletim sisteminde daha önce sorgulanmış
olan bir adres için saklanan IP adresi bilgisi kullanabilir ya da
Nameserver, daha önce sorgulanmamışsa da Root Server ve TLD Server bilgileri
yeniden sorgulanmadan geçerli oldukları süre boyunca yeniden kullanılırlar.
Kaynaklar:
https://developer.mozilla.org/en-US/docs/Learn/Common_questions/Web_mechanics/What_is_a_domain_name
https://www.cloudflare.com/en-gb/learning/dns/glossary/what-is-a-domain-name/
https://en.wikipedia.org/wiki/World_Wide_Web
https://developer.mozilla.org/en-US/docs/Glossary/DNS
https://www.cloudflare.com/en-gb/learning/dns/what-is-dns/