İnternet üzerinde iletişim kurmanın temeline indiğimizde karşımıza IP (Internet Protocol) adresleri çıkıyor. IP adresini aslında eviniz adresi olarak düşünebilirsiniz. Eğer bir arkadaşınız ya da sevdiğiniz size mektup göndermek istediğinde üzerine ev adresinizi yazması gerekiyor ki o mektup size ulaşabilsin. Peki bir web sitesine bağlanmak istediğinizde de benzer durum yaşanıyor mu?
Elbette ki her web tasarım bir web serverda ya da daha açık bir ifade ile bir web sunucusunda tutuluyor. Örneğin google.com adresine gitmek istediğinizde o web sitenin ilgili web sunucusunun adresine ihtiyaç duyarsınız. Hatta google.com yazmak yerine 172.217.17.238 IP adresini yazarsanız da Google’a ulaşmış olursunuz.
İşte burada devreye DNS (Domain Name System) giriyor. Hali hazırda elinizde google.com domaininin IP adresinin olmadığını düşünelim. İlk önce web tarayıcınız kendi bünyesinde ilgili domaine ait bir IP olup olmadığına bakar. Eğer herhangi bir sonuç bulunmazsa bilgisayarınızda mevcut olan DNS Resolver’a (Domain Name System Çözücü) web tarayıcınız istek gönderir. DNS Resolver aynı şekilde kendi hafızasında ilgili kayıdı arar eğer bulursa web tarayıcınıza cevap olarak gönderir ama bulamazsa artık internetteki DNS sunucularına istek göndererek gitmek istediğiniz adresin çözümlenmesini sağlar. İşte bu sistemin tamamına DNS diyebiliriz.
Gelin beraber bu sistemin detaylarına inelim.
DNS Recursor sunucular, clientlardan (istemci) uygulamalar yoluyla (web tarayıcı bir örnek olabilir) DNS istekleri almak üzerine tasarlanmıştır. Genel görevleri aldıkları DNS isteklerine cevap verebilmek için başka DNS sunucularına istek göndererek ilgili yanıtı yani istenilen IP adresini bulmaktır.
Kök isim sunucuları insanların okuyabildiği web adreslerini (örnek olarak google.com) ilgili IP adreslerine çözümleyen ilk aşamayı gerçekleştirir. Bu işlem başka bir DNS sunucusuna yönlendirme ile gerçekleştirilir. DNS’in çalışma mantığından da yola çıkarsak tümden gelim gibi düşünülebilir.
TLD’ler .com, .net, .org, .edu gibi uzantılara ait web sunucuların adreslerinin tutulduğu DNS sunuculardır.Özetlemek gerekirse ilgili adrese TLD ile daha çok yaklaşıyoruz.
Yetkili isim sunucuları, DNS sorgularının en son aşamasını gerçekleştirmemizi sağlar. Gitmek istediğiniz web sitenin kesin adresini bünyesinde bulundurduğu için ilgili adresi size gönderir.
Subdomainleri yani alt domainleri bir web siteye ait alt kademedeki web siteleri içerisinde bulunduran adresler gibi düşünebilirsiniz. Eğer account.google.com web sitesine gitmek istiyorsanız ilgili IP adresinin sorgusunun son durağı Authoritative Nameserver (Yetkili İsim Sunucusu) değil subdomain adreslerini yani CNAME kayıtlarını tutan başka bir DNS sunucusudur.
Yinelemeli sorgulama, DNS istemcinin, isteklere bulduğu kayıtlarla ya da hatalar ile geri dönüş yapacak bir DNS sunucuya (Genellikle Recursive Resolver) ihtiyacı olduğu zaman yapılır.
Bu durumda bir DNS istemcisi istekte bulunduğu bir DNS sunucusunun kendisine yanıt olarak en iyi sonucu göndermesini ister. Eğer iletişimde bulunulan DNS sunucusunda ilgili domain ile alakalı kesin bir sonuç yoksa başka bir referans sunucusuna yönlendirme yapılır. Bunun ardından DNS istemcisi kendisinin yönlendirildiği diğer DNS sunucusuna istek yollar. Bu işlemler DNS sunucularının hata mesajı göndermesine ya da gecikme yaşanmasına kadar devam eder.
Bu sorgular genellikle DNS resolver (Çözücü) istemcilerin ilgili kayıtları kesin olarak tuttuğunu bildiği bir authoritative (Yetkili) DNS sunucusuna istek göndermesi ile gerçekleşir. Non-recursive sorguya zemin hazırlamak için DNS sunucular fazladan internet trafiği oluşturmamak için daha önceden gelen isteklerin cevaplarını kayıt olarak kendi hafızalarında tutar.
Modern web tarayıcılar web sitelere ulaşımı daha hızlı bir hale getirmek için önceden DNS sorguları ile öğrenilmiş web sitelerin IP adreslerini kendi hafızalarında tutar. Böylelikle çok kısa bir zamanda herhangi bir DNS sorgusuna gerek kalmadan web tasarımlar kullanıcılara sunulur.
İşletim sistemi düzeyinde DNS resolver (çözücü), DNS sorgularının yapılması gerekmeden önceki son çıkış noktasıdır. İşletim sistemlerinin bünyesinde bulunan Stub resolver bir başka adlandırma ile DNS istemcisi işletim sistemi üzerinde çalışan bir uygulamadan DNS sorgusu alarak işlemlerine başlar. İlk olarak kendi hafızasında hali hazırda bir kayıt olup olmadığına bakar. Eğer ilgili kayıt mevcut ise DNS sorgusunu gönderen uygulamaya istenen IP adresini gönderir. Fakat herhangi bir kayıt bulunmuyorsa artık işletim sistemindeki DNS istemcisi internet üzerindeki çeşitli DNS sunucularına istekler göndererek adres çözümlemesi yapar. Bu işlemler de bittikten sonra aynı şekilde DNS sorgusu yapan uygulamaya ilgili web sitesinin IP adresi cevap olarak gönderilir.
Eğer hali hazırda DNS çözücüsü authoritative (Yetkili) DNS sunucusunun adresini bilmiyor fakat nameserver’ın (İsim Sunucusu) adresini biliyorsa aradaki ekstra aşamaları atlayarak direkt olarak nameserver’a DNS sorgusu gönderir.
Başka bir durumda ise eğer DNS çözücüsü nameserver’ın adresini bilmiyor ama TLD (Top Level Domain) sunucusunun adresini biliyorsa aradaki işlemlere gerek kalmaksızın TLD’ye DNS sorgusu gönderir.
İnternet üzerinde ne kadar web site mevcut?
2020 verilerine göre toplamda 2 milyar web sitesi mevcuttur. Fakat aktiflik olarak baktığımızda bu sayı 400 milyondan daha azdır.