Domain Name System
DNS dagıtık yapıda bir databasedir. Bu sistem hostnameleri
IPv4(yada ipv6) yada IPv4 adresleri hostnamelere çevirmeye yarar.
Ayrıca bir domain için gerekli mail sunucusunun adreslerini yada domain
name serverlarının hangi IP'de bulunduğunu daha teknik bir ifade ile RR(Resource
Records)'ları tutar.DNS yapısı gereği hızlı olmalıdır. Bu yüzden yapılan
sorgulamalar eğer 512 byte'tan küçük ise yada master dns server ile
slave dns server arası zone transferi değlise UDP üzerinden
yapılacaktır. DNS sisteminin yazaları 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 dökumanlara bakarsanız içinde birkaç kod ve zone
file'larının nasıl yazılacağını bulursunuz.
BIND (Berkeley
Internet Name Daemon)da yazılırken bu kriterler dikkate alınmıştır.
Fakat bu sistemde gereksiz karmaşıklıkta code'lar 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 olmayı
bizce hak kazanmıştır. Hatta bizce bind 9.1.X ve ileriki surumlerinde
kullanılan Dns-sec sistemi bile bind için bir çözüm olmaktan çok
uzaktır. Sonuçta temel yani daemon internetin ilk zamanlarından
kalmıştır. Şu an ipv4'te yaşanılan güvenlik sorunlarda 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 yada bu konu ile alakalı
kitap okunmamışsa bu iki olguyu karıştırabilmektedirler. Bunlar:
1) Resolving: 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ı. Resolving yapan yazılımlar iki çeşit
resolving yaparlar; recursive resolving yada non-recursive resolving.
Querylerde gönderilen RD (recursion required) bitlerine göre querynin
tipi belirlenir. Non-recursive querylere cevap veren serverlar cevap
olarak recursive name servları verirler.
Sonuç olarak yapılan bir query recursive ise
http://www.yildiz.edu.tr/ için direk 193.140.1.1 IP'si yada host
bulunamadı cevabı verilebilir. Fakat non-recursive bir query'de cevabı
bulmak için başka bir name server ip'si verebilir. Non-recursive
query'ler aynı anda iterative query'ler olarakta bilinirler.
2) Authoritive Nameserving: Bir domain hakkında bilgi bulunduran
daemondur. Mesela yildiz.edu.tr domainin MX,NS,A (Bunlar Resource Record
olarak bilinir) recordlarının yada kayıtlarının tutulduğu name
serverdır.