DNS sorgulama nasıl çalışır?

DNS sorgulama nasıl çalışır?

Gelin hep beraber tarayıcıya bir domain girdiğimizde nasıl çözümlendiğine bakalım. Belki birçok yerde bu bilgiye ulaşabilirsiniz ancak bazı merak edilen ve cevaplanmayan puslu kısımlar da yok değil..

Bilgisayar sistemleri sadece ip adresinden anlar, yani google.com yazmanın onlar için hiçbir anlamı yoktur. Ancak biz insanlar ip adreslerini kafada tutamayacağımız için bunları bir isme atamışız. www.google.com yazdığımızda  sistem bizi 216.58.212.36 adresine gönderecek ve oradan web hizmetini alacağız. Şimdi nasıl oluyor da bu isimler ip adreslerine dönüştürülüyor? Bunun tam süreci nasıl işliyor? Bakalım.

1. Tarayıcı belleğinde var mı?

Google chrome’u açıp www.google.com yazdığımızda ilk olarak chrome kendi içindeki dns cache(önbellek) sisteminde bu isme ait bir ip adresi var mı yok mu ona bakar. Ip adresi varsa isteği direk buraya yapar ve bizim yazı da sona erer. 😉

Adres cubuğunda chrome://net-internals/#dns  yazarsanız tarayıcının o anki dns önbelleğini görebilir ve buradan temizleyebilirsiniz.

 

2. İşletim sisteminin hosts dosyasında var mı?

Bazen sabit olarak, isme karşılık gelen ip adreslerini sisteme tanıtmamız gerekebilir. Bu durumda sistemde yer alan hosts dosyasına değer girilir ve artık bundan sonraki tüm adımlar atlanmış, sistem direk bu adresi kullanmış olur.

Host dosyaları
Windows üzerinde C:\Windows\System32\drivers\etc\hosts
Linux üzerinde ise /etc/hosts 

 

3. İşletim sistemi ön belleğinde var mı?

Dns istemcisi o isme ait ip adresini tarayıcı ön belleğinde ve hosts dosyasında bulamazsa işletim sisteminin Dns cache’ine bakar. İşletim sistemi domain özelliklerinde yazan değere(TTL) göre alan adlarını sistem ön belleğinde tutar böylece daha hızlı çözümleme sağlamış olur.

İşletim sistemi önbelleğinde değerleri görmek için:
c:\>ipconfig /displaydns

www.google.com.tr
—————————————-
Kayıt Adı . . . . . . : www.google.com.tr
Kayıt Türü . . . . . : 1
Yaşam Süresi . . . . : 281
Veri Uzunluğu . . . . : 4
Bölüm. . . . . . . . : Yanıt
A (Ana) Kaydı . . . . : 216.58.212.3

www.google.com.tr 281 milisaniye saniye önbellekte duracak ve sonra silinecektir.

Önbellek değerlerini silmek için:
C:\>ipconfig /flushdns

 

4. Servis sağlayıcıda var mı?

Eğer isim halen çözümlenememişse, DNS istemcisi tercih edilen ağ kartında yer alan ilk DNS sunucu(195.175.39.49) adresine istek gönderir ve cevap için bir saniye bekler.

(195.175.39.49 Türlk Telekom’un Dns Server adresi)

Bir saniye içinde yanıt alamazsa tüm diğer ağ kartlarının(bağdaştırıcı) ilk DNS sunucularına istek gönderir ve cevap için iki saniye bekler.

Diğer tüm ağ kartlarının birinci DNS sunucularından iki saniyede haber alamazsa tüm ağ kartlarının tüm DNS sunucularına(birinci ve ikinci) istek gönderir. Gene cevap alınıncaya kadar iki saniye daha beklenir. Eğer halen cevap alınamamışsa  tüm  DNS sunucularına önce 4 saniye sonra da 8 saniye bekleyecek şekilde istek gönderir.

Cevap yoksa bu aşk bitmiştir.

Şimdi 195.175.39.49 adresine www.google.com.tr adı için istekte bulunduk. Servis sağlayıcı DNS sunucusu bu adrese(www.google.com.tr) bakar ve kendi ön belleğinde ya da DNS kayıtlarında ip kaydı varsa geri döndürür.

Burada da bir ismin önbellekte kalma süresi  o alan adına ait DNS serverda tanımlanan TTL zamanı kadardır.

Servis sağlayıcıda yoksa?

Şimdiye kadar genelde ön belleklerde var mı yok mu sorgusu ile hareket ettik, artık bundan sonra gerçek isim sorgulamaya geçebiliriz.

Ama önce biraz bilgi…

Root Servers, TLD, Name Server vs..

TLD

Alan adlarını birbirinden ayıran özellik, en sağdaki tanımlama kısmıdır(Üst Seviye Alan Adı – Top Level Domain, TLD). Bunlar .com .org .co .tr .de gibi ülke veya diğer kısaltmaları ifade eder ve her TLD kaydı için yetkili bir kuruluş vardır. Örneğin .tr alan adları için Odtü yetkilidir ve bu kayıtlar oradaki sunucularda tutulur.

Top Level Domain kavramı aslında iki şeyi ifade eder.

  1. g-tld : generic TLD-genel TLD (.com .net .org .co .io …)
  2. cc-tld : country code TLD-ülke kodlu TLD  (.tr .de .es .uk …)

Yukarıda da belirttiğimiz gibi her TLD için yetkili bir kurum vardır ve ve TLD ait kayıtlar o kurumun  sunucularında bulunur.

Root-Servers

Dünya üzerinde 13 tane root DNS sunucu vardır.

Bu sunucuların görevi  hangi TLD’nin(.com .net .tr .org) hangi sunucularda yer aldığını bilmesidir. Yani .com alan adlarının bilgileri hangi sunucularda tutuluyor, com.tr alan adlarının bilgileri hangi sunucularda tutuluyor vs..

Linux’da TLD’ lerin hangi sunucularda tutulduğunu görmek istersek..

.com alan adları hangi sunucularda?

.tr alan adları hangi sunucularda?

Name Server

Bir alan adı aldığınızda sizden en az iki tane name server bilgisi girmeniz istenecektir. Buradaki name server aslında bu alan adına ait yetkili DNS sunucularıdır.İsim tescil yapılan yerde alan adı detayları(ftp, mail,ptr vs..) girilmez orada sadece bu alan adının detaylarının tutulduğu sunucunun adı girilir.

Name server’ın en az iki tane olması bir standarttır. DNS sunuculardan birinin(ns1) erişilemez olması durumunda ikinci sunucuya(ns2) erişilerek sürekli çalışma sağlanır. Dns isteklerinde hangi name server kullanılacağı belli değildir. Yani istekler ns1 veya ns2 den rastgele birine yapılır. Bu nedenle tüm name server’ın belirttiği DNS sunucularda aynı kayıtlar olmalıdır.

 

İsim Çözümleme

Yerel ön bellekte www.google.com.tr için ip bulunamamış ve top servis sağlayıcının DNS sunucusuna atılmıştır. Tam o sırada servis sağlayıcıda şunlar yaşanacaktır.

  1. www.google.com.tr kaydı bende yok. Ön bellekte de yok.
  2. Root-Server’lara .tr kayıtlarının tutulduğu sunucuları sorayım. (Root-server listesi sabittir ve DNS sunucuda ön tanımlı olarak yer alır.)
  3. Sordum.
  4. Root-Server ns41.nic.tr. ns92.nic.tr. ns3.nic.tr. ns22.nic.tr. ns91.nic.tr. ns42.nic.tr. ns21.nic.tr. ns31.nic.tr. adreslerini gönderdi.
  5. Şu gelen listedeki sunuculardan(cc-tld server) birine sorayım bakayım google.com.tr ile ilgili bilgi var mı?
  6. ns41.nic.tr ye www.google.com.tr için bilgi var mı diye sordum.
  7. Bilgi varmış biraz muhabbetten sonra bana www.google.com.tr için name server bilgileri verdi.
  8. Bu bilgiler şöyle  ns1.google.com(216.239.32.10).  ns2.google.com(216.239.34.10).
  9. Tamamdır yaklaşıyoruz.
  10. ns1.google.com(216.239.32.10)’a sende google.com.tr ile ilgili birşeyler var mı diye sorayım
  11. Sordum.
  12. Evet gelen cevapta : “google.com.tr’nin yetkilisi benim dedi. Bu alan adı ile ilgili tüm kayıtlar bende “
  13. Bende www.google.com.tr nin ip adresin ver dedim.
  14. Verdi : 216.58.212.3

Linux dig +trace ile aslında işleyişi tam olarak görebiliriz.

#dig +trace google.com.tr

 

Bir de çizelim

 

 

 

 

 

 

 

 

 

  • Can Nuhlar

    ipconfig /displaydns komutunun çıktısındaki yaşam süresi milisaniye değil saniye bazındadır, gözümüzden kaçmış sanırım.

    • ahmetorhan

      Haklısınız. Düzeltildi, teşekkürler