Domain Name System [DNS] (Alan Adı Sistemi) dağıtık yapıda bir veritabanıdır.
Bu sistem makina isimlerini IPv4 (ya da ipv6) adreslere ya da IPv4 adresleri
makina isimlerine çevirmeye yarar. Ayrıca bir alan için gerekli eposta
sunucusunun adreslerini ya da alanadı sunucularının hangi IP adreslerinde
bulunduğunu daha teknik bir ifade ile RR'ları (Resource Records - Özkaynak Kayıtları) tutar.
DNS yapısı gereği hızlı olmalıdır. Bu yüzden yapılan sorgulamalar eğer 512
bayttan küçük ise ya da yapılan işlem asıl DNS sunucusu ile yardımcı DNS
sunucusu arasında bölge transferi değilse UDP üzerinden yapılacaktır.
DNS sisteminin yazarları DNS için gerekli bilgileri diğer Internet araçlarında
olduğu gibi RFC'lerde tanımlamışlardır (RFC 1034 ve 1035). Bu belgelere
bakarsanız içinde bir kaç kod ve bölge soayalarının nasıl yazılacağını
bulursunuz.
BIND'de (Berkeley Internet Name Daemon) yazılırken bu kriterler dikkate
alınmıştır. Fakat bu sistemde gereksiz karmaşıklıkta kodlar ve bunun getirdiği
güvenlik problemleri vardır. Fakat djbdns bu karmaşadan uzak ve güvenli bir
yazılımdır. Bunun sonucu olarakta "two-thumbs-up bir daemon" olmaya bizce hak
kazanmıştır. Hatta bizce bind 9.1.X ve ileriki sürümlerinde kullanılan
"Dns-sec sistemi" bile bind için bir çözüm olmaktan çok uzaktır. Sonuçta temel
yani "daemon Internet"in ilk zamanlarından kalmıştır. Şu an IPv4'te yaşanılan
güvenlik sorunları da aynı sebepten oluşmaktadır.
Bu yüzden köklü bir değişim olması gerekliliği savunulmuş ve IPv6 ortaya
atılmıştır. Bind içinde benzer model söz konusu olmadıkçca djbdns popüleritesini
sürdürecektir. (Haklı bir popülerite !!!).
Genel olarak dns yazılımlarının yaptığı iki vazife vardır. Bind kullananlar
eğer çok profesyenel değillerse ya da bu konu ile alakalı kitap okunmamışsa
bu iki olguyu karıştırabilmektedirler. Bunlar:
Resolving (Çözümleme): Aranılan bir kaydı bulma işlemi
Mesela http://www.yildiz.edu.tr/ adresine karşılık gelen
IPv4 adresinin 193.140.1.1 olmasının bulunması. Çözümleme
yapan yazılımlar iki çeşit işlem yaparlar; ardışık çözümeme ve ardışık
olmayan çözümleme. Sorgularda gönderilen RD (recursion required - ardışık gerekli)
bitlerine göre sorgunun türü belirlenir. Ardışık olmayan sorgulara cevap
veren sunucular cevap olarak ardışık isim sunucuları verirler.
Sonuç olarak yapılan bir sorgu ardışık ise http://www.yildiz.edu.tr/
için doğrudan 193.140.1.1 IP'si ya da "makina bulunamadı"
cevabı verilebilir. Fakat ardışık olmayan bir sorguda cevabı bulmak için
başka bir isim sunucusunun IP'sini verebilir. Ardışık olmayan sorgular aynı
zamanda yinelemeli sorgular olarak daa bilinirler.
Authoritive Nameserving (Yetkili İsim Sunumu)
Bir alan hakkında bilgi bulunduran sunucudur. Mesela yildiz.edu.tr
alanının MX, NS, A (Bunlar - Resource Record - Özkaynak Kaydı olarak bilinir)
kayıtlarının tutulduğu isim sunucusudur.
- CANLI BIR ÖRNEK
Bir sorgu nasıl yapılır. Mesela http://www.yildiz.edu.tr/
adresinin IPv4 karşılığı nedir? Bunun için çözümleyici ya da sizin bilgisayarınız
Internet'te birkaç yetkili isim sunucusunu gezmek zorundadır. İlk başta " . "
sunucularından tr TLD'si için yetkili isim sunucu IP'si
bulunur. Bunun IP'si (ki bu IP'nin makina ismi ülkemiz için ns1.metu.edu.tr
ya da ns2.metu.edu.tr'dir) alındıktan sonra bu yetkili isim sunucuya "edu.tr." i
barındıran yetkili isim sunucu IP'si sorulacak ve bu işlem böylece devam
edecektir ve sonuç olarak 193.140.1.1 adresini sizin
makinanız ya da /etc/resolv.conf dosyanızda bulunan
çözümleyicinin yildiz.edu.tr'nin yetkili isim sunucusundan
aldığı bilgilere göre belleğinde belli bir müddet tutacaktır. Bu süreye TTL
(time to live - yaşam süresi) denir. Bu süre boyunca çözümleyici gerekli
bilgileri belleğinde saklayacaktır. DjbDNS için aksi belirtilmezse bu süre
42 dakikadır. Kurulacak göre bu süre 5 saniye de yapılabilir. (Nitekim birden
fazla www sunucunuz var ve bunlar arasında döner turnuva kullanarak yük dengelemesi
yapmak istersek bu saniye değeri kullanılacaktır).