1 6. DOMAIN NAME SYSTEM Internet adreslerini telefon numaraları gibi doğrudan bilmemiz gerektiğini düşünelim. Bilgisayar ağları büyüdükçe kullanıcıların daha fazla bol rakamlı sayıları akıllarında tutmalarını ya da kaydetmelerini gerekecekti. Bu, istenen ağ kaynaklarına erişimi oldukça sıkıntılı bir hale getirecekti. Neyse ki, TCP/IP protokol ailesinde yer alan DNS bu sıkıntıları aşmamızı sağlar. DNS, IP adresleri ile bu IP adreslerinin konuşma lisanı ile hazırlanmış karşılıklarının tutulduğu bir hizmet protokolüdür. 6.1 Domain Name System mimarisi DNS isimlendirme için hiyerarşik bir mimari kullanır. Şekil 6-1 de DNS yapısı gösterilmiştir. DNS bir kök ve ağaç yapısı ile organize edilmiştir. Bir kök en üst giriştir ve ağacın daha alt seviyelerince ana olarak adlandırılır. Ağaç düğümleri bağlayan dallar içerir. Ağacın aynı düğüm seviyesinde olan her bir düğümün etiketi, tamamen belirli ve ayrık olmalıdır. Şekil 6-1 DNS Hiyerarşisi Hiyerarşik isimlendirme, ağacın kökünden aşağıya doğru ilerlenerek yapılır. Her etikete bağlı isimler seçilip birlikte sıralanarak görülebilir isim şekli elde edilir. Bu isim, ağacın her seviyesinden ayırt edilebilirdir. Örneğin, kökün altındaki ilk düğüm seviyesi çeşitli isimler içerir. Örneğimizde COM u kullanacağız. COM u izleyen diğer seviyede ACME yi de içeren çeşitli diğer isimler listelenmiştir. Son olarak ACME nin altında RD bulunur ki bu, ağacın en alt seviyesidir. RD yaprak düğümü olarak anılır çünkü onun altına bağlı düğüm yoktur. Sıralanmış isim şekilde gösterildiği gibi RD.ACME.COM olur. Domain isimleri adresleri tanımlamak için icat edilmemiştir. Gerçekten de isimleri adreslere haritalamak için ek servisler gerekir. Bu servisler, sunucular ve isim çözücüler ile sağlanır. Internet isimleri yalnızca host lar için atanmaz. Örneğin, Mail Exchange (MX bilgisi) olarak anılan bir bilgi sınıfı, bir organizasyonun, yalnızca iş istasyonu veya bilgisayarlara değil bir posta sunucusu olarak tasarlanmış her cihaza mektup yollamasını sağlar. Ayrıca, domain isimlerinin kullanımı bir MX cihazının Internet e bağlanmadan domain ismi almasına olanak sağlar. Organizasyonların mektuplarını posta sunucusuna yönlendirmeleri yeterli olur. Şekil 6-2 de bir isim sunucusunun tipik işlemleri gösterilmiştir. Eğer bir birey ile bağlantı kurmak isterse, birey, bağlantı kurmak istediği kişinin ismini ve kişinin firmasını (domain ismini) girer. Bu ismin ağ adresini soruşturmak için isim sunucusuna bir sorgu (query) yollanır veya sorgu, iş istasyonunda bulunan tablo ile eşleştirilir.
2 Sorgunun cevabı, ismi karşılayan adresi içerir. Bu kurgusal örnekte, adres dır. Bu adres daha sonra bir router a yollanacak olan bir datagrama yerleştirilir. Router bu adresi kullanarak datagramı rotalayacaktır. Bu örnekte datagram ile tanımlı düğüme yollanır. 6.2 Domain İsimleri Şekil 6-2 Bir isim sunucusunun kullanılması Her bir domain belirli bir domain ismi ile tanımlanır. DNS in hiyerarşik doğası nedeni ile bir domain, başka bir domain in alt-domain i olabilir. Alt-domain ler, isimlendirme ilişkilerinin yeniden paketlenmesini sağlayan isimlendirme yapısı ile oluşturulur. Şekil 6-1 örneğinde, RD.ACME domain i RD.ACME.COM domain inin alt-domain idir. Bir isim DNS de iki şekilde gösterilebilir. Bunlardan biri, DNS teki ismin tümünü içeren tam isimdir. Şekil 6-1 örneğinde tam isim RD.ACME.COM dur. Buna karşın göreceli isim DNS teki tam ismin yalnızca bir parçasıdır. Örneğimizde RD bir göreceli isimi tanımlamada kullanılır. Tam ve göreceli isimler OSI modelinin tanımladığı ayrık isim (distinguished name (DN)) ve göreceli ayrık isimlere (relative distinguished name (RDN)) oldukça benzerdir. 6.3 Yüksek-Seviye Domain leri Şu anda DNS, yedi üst-seviye domain ismi içerir. Bunlar Şekil 6-1 de gösterilmiştir ve aşağıda anlamlarının açıklamaları yapılmıştır:
3 GOV: Herhangi bir hükümet gövdesi EDU: Bir eğitim kurumu ARPA: ARPANET-Internet host u tanımlaması COM: Herhangi bir ticari kurum MIL: Askeri organizasyonlar ORG: Buradaki tanımlamalara uymayan tüm organizasyonlar CON: İngilizce olarak iki harfli ülke kodu (Türkiye için TR). 6.4 Domain Name Çözümlemesi ve İsimleri Adreslere Haritalamak Bir Internet kullanıcısı, kullanıcıya dost isimleri IP adreslerine haritalamak için domain isim çözümlemesi (domain name resolution) kavramı ile çalışmalıdır. RFC (Request for Comments) 1035 bu işlemler için gerekli prosedürleri tanımlar. Şanslıyız ki, bu isimlerin çözülmesinde kullanıcının alacağı görev oldukça basittir. Kullanıcıya düşen domain ismini bölgesel isim çözücüye (name resolver) sağlamaktır. Bir isim çözücü, ya bir domain ismini baz alarak gerekli bilgiyi kullanıcıya gönderir ya da bir isim sunucusuna (name server a) istek gönderir. Kullanıcı aynı zamanda isim sunucusuna doğru sorgu oluşturup göndermek ve işlemlerin nasıl yapılacağına dair belirli ihtiyaçları sağlamak gibi ufak görevleri yapar. Şekil 6-3 te domain name çözümlemesinin yapısı görülmektedir. Kullanıcı domain ağacını tek bir isim olarak görür. Çözücü, isim adres çözümlemesi için; ismi çözümleme veya isimi bağımsız bir yardımcı sisteme (isim sunucular) gönderme görevlerini üstlenir. Şekilde görüldüğü gibi isim sunucusu, isim çözücüsüne bir istek yollar. Böylece çözücü kullanıcı programına bir servis sağlar. Çözücü, isim sunucusunun kullanıcısı durumundadır. İsim sunucusu ve yedekleme (backup) açısından isim çözücülerdeki bazı bilgilerin aynısını saklayabilir. İsim çözücü sorguyu başlatmak için en az bir isim sunucusunun ismini bilmelidir. Sorgu (query) isim çözücüden sunucuya aktarılır. Bunu alan sunucu bir cevap yollar ya da başka bir isim sunucusuna çağrı yapar. Bu yaklaşım ile çözücü, başka isim sunucularının kimliklerini ve tuttukları bilgileri öğrenebilir. İşleme hangi isim sunucularının katılacağına, Şekil 6-1 de gösterilen isimlendirme hiyerarşi ağacı baz alınarak karar verilir. Bu ağacın her bir yaprak girişi bir isim sunucusuna karşılık düşer. Alt-domain lerdeki bir sunucu, kendi altındaki domain leri bilir ve sorguya cevap verecek uygun sunucuyu seçebilir.
4 Şekil 6-3 Domain name Çözümlemesi Şekil 6-3 te çözücüye bağlı isim belleği olarak etiketlenmiş bir parça görüyoruz. Çözücü bir sorgu aldığında önce kendi hafızasında buna cevap var mı diye bakar. Eğer varsa, netice, bir cevap formunda istekçiye gönderilir. İsim belleğinde cevap mevcut değilse isim çözücü cevabı bulmak için hangi isim sunucusuna sorgu göndermesi gerektiğine karar verir. İsim belleğinde, isim çözme işlemini hızlandırmak üzere sıklıkla sorgulanan bilgiler saklanır. İsim belleğindeki bilgiler zamanlayıcı kullanılarak nihayetinde silinirler. 6.5 İsim Sunucusu İşlemleri İsim sunucusu, kullanıcı sorgusuna (bu işlemleri çözücü yürütmektedir) tekrarlamalı ya da tekrarlamasız işlemlerle servis verebilir. Tekrarlamasız işlemlerde cevap aşağıdakilerden biri olur: Bir cevap Bir hata teşhisi Başka bir sunucuya aktarma (referansıma aktar cevabı) Burada çözücü, özel isim sunucularına yeniden sorgu yollamak zorundadır. Tekrarlamalı işlemlerde, bölgesel isim sunucu diğer sunucular ile bağlantı kurabilir. Burada isim sunucusu sorgulanan IP adresini istekçiye geri döndürmek zorundadır. Eğer isim sunucusu IP adresini geri döndüremezse, istekçiye (isim çözücüsüne) negatif bir cevap yollar. İsim sunucusu istekçiye referansıma aktar cevabı yollayamaz. Tekrarlamalı ve tekrarlamasız işlem yapan isim sunucuların ortak yanları şunlardır: isim çözücü, en az bir sunucunun adresini bilmektedir. isim sunucu en az bir başka isim sunucusunun IP adresini bilmektedir.
5 Bir sunucu, domain isminin bir altağacının bir parçasını oluşturmakla sorumludur. Bu parçaya zone denir. Bu, domain isminin bitişik bir bölgesidir. Tipik olarak, her bir zone için ayrık bir veri tabanı vardır. Bir isim sunucusunun bulunduğu zone un doğru olup olmadığı periyodik olarak kontrol edilmelidir, eğer doğru değilse zone doğru olarak güncelleştirilmelidir. Bir zone yalnızca yetkili kişilerce güncelleştirilebilir. İsim sunucusu, zone transfer protokolünü kullanarak birden fazla isim sunucusunun bir zone hakkında bilgi saklamasına izin verir. Eğer bir domain ismini sağlayan isim sunucu bir şekilde çökerse diye diğer isim sunucularda isimlendirme ve adresleme bilgilerinin fazladan kopyası bulunabilir. Bir isim sunucusu, birincil isim sunucusu veya ikincil isim sunucusu olarak sınıflandırılır. Bu terimlerden çıkaracağımız gibi, birincil isim sunucusunun fonksiyonları diğer cihazlarla yedeklenebilir. Bu yedekleyen cihazlara da ikincil isim sunucular denir. Bu yaklaşım, sorgu servislerinin güvenilirlik ve etkinliğini sağlar. İsim sunucular arasında iletilen sorgu ve cevap mesajları TCP ve UDP yi kullanabilirler. Sorgular genelde daha yüksek başarım sağlayan bağlantısız UDP ile yapılır. Zone yenileme gibi veri tabanı güncelleştirme gereksinimlerinde güvenilir transfer sağlamak için TCP kullanılır. Durum ne olursa olsun, isim sunucular her iki protokolü de kullanabilirler. 6.6 Kaynak Kayıtları (Resource Records (RRs)) Daha önce bir domain isminin bir düğümü tanımladığını öğrendik. Her bir düğüm kendi kaynakları ile ilgili bilgileri içerir. Kaynak bilgisi, hem düğüm hem de isimle ilgilidir. Bu bilgiye, kaynak kaydı (resource record (RR)) denir. Kaynak kaydı bir veri tabanında bulunur ve domain zone larını tanımlamak için kullanılır. RR ler aynı zamanda domain isimleri ve ağ objeleri arasında haritalama yapmakta kullanılırlar. Şekil 6-4 Kaynak Kaydı İçeriği Bir RR, kısaltması ve nümerik kodundan tanınır. Bu tip ve değerler Tablo 6-1 de listelenmiştir. RR ler standart bir formatta saklanırlar. Şekil 6-4 de bir RR nin en üst seviye parçasının formatı görülmektedir. Bir RR kaydının formatı aşağıdaki gibidir. <<isim>> <<TTL>> <<sınıf>> <<tip>> <<RD uzunluğu>> <<veri>> Bu alanların bazıları bir RR de atlanabilir. Eğer <<TTL>> alanı boş ise veri tabanının başka bir parçasında tanımlı default minimum zaman kullanılır. Eğer <<sınıf>> boş ise, veri tabanında tanımlanmış son sınıf kullanılır. Bu alanları şöyle açıklayabiliriz:
6 isim: Bu RR için düğümün domain name ini (sahibinin ismini) içerir. Eğer boşsa bir önceki RR nin ismi kullanılır. TTL: Yaşama-zamanı parametresidir. Opsiyoneldir ve RR tanımının isim sunucusu belleğinde geçerli olacağı zaman süresini (saniye olarak) tanımlar. Eğer değeri 0 ise RR belleğe kayıt edilmez. Pratikte bu değer çözücünün, belleğini güncelleştirmeksizin bir sunucu verisini ne kadar süre kullanacağını belirler. sınıf: RR sınıf kodunu belirtir (burada IN = Internet; CH = chaos system demektir). Eğer boşsa, son tanımlanmış sınıf atanır. tip: Tablo 6-1 deki RR tip kodlarını gösteren değerleri içerir. RD uzunluğu: RDATA olarak ayrılan alanın uzunluğunu oktet olarak verir. veri (RDATA): Kaynağı tanıtan değişken-uzunluklu alandır. RDATA nın içeriği, RR nin tipi ve sınıfına bağlı olarak değişir. Tablo 6-1 DNS Tip Değerleri RDATA alanı Şekil 6-5 te en yaygın RDATA formatları gösterilmiştir, SOA formatı (start of zone authority format (zone yetkisi formatı)) başlangıcı. Her bir zone için yalnız bir SOA kaydı vardır.
7 Şekil 6-5 Zone Yetki Formatının Başlangıcı Şekilde gördüğümüz gibi, SOA RDATA yedi alt-alan içerir. Bu alanların çoğu isim sunucusunun yönetimi ve idamesi için kullanılır. İçerikleri aşağıdaki gibidir: MNAME: Bu zone için verinin orijinal veya birincil kaynağı olan domain ismini tanımlar. RNAME: Bu zone dan sorumlu kişinin mailbox ında kullanılacak domain ismini tanımlar. SERIAL: Zone un orijinal kopyasının sürüm numarasını içerir. Zone transfer edilirken bu değer korunur. Zone da bir değişiklik yapılınca SERIAL arttırılır. REFRESH: Zone un yenilenmesi için geçmesi gereken zamanı belirtir (saniye olarak). RETRY: Başarısız bir refresh yapılınca, yeni bir refresh denemesi yapmak için geçirilmesi gereken zamanı saniye olarak belirtir. EXPIRE: Bu zone un ne zamana kadar yetkili olacağını belirtir. MINIMUM: Konu edilen zone dan ithal edilecek herhangi bir RR nin TTL alanının minimum değerini taşır. Bir zone daki tüm RR lerin TTL için olan en düşük sınırıdır. Şekil 6-6 da RDATA alanının diğer formatları gösterilmektedir.
8 Şekil 6-6 RDATA alanının içerdiği diğer alanlar 6.7 DNS mesajları Şekil 6-7 de bir DNS mesajının formatı verilmiştir. Mesajlar isim sunucular arasında RR lerin güncelleştirilmesi için transfer edilir. Netice olarak, mesajın bazı alanları RR formatına benzerdir. Şekil 6-7 DNS Mesajının Formatı Şekilde görüldüğü gibi mesaj beş ana bölümden oluşur. Başlık (ki her zaman bulunur) sorgu ve cevabın doğası ile ilgili alanlar içerir. Soru (question) bölümü isim sunucusuna sorgu
9 gönderilmede kullanılan verileri içerir. Cevap (answer) bölümü soruların cevapları ile yenilenen RR değerlerini içerir. Yetki (authority) bölümü yetkili isim sunucularını işaret eden RR ler içerir. Ek kayıt (additional record) sorguya asistanlık yapan RR ler içerir; bu RR ler özellikle soruların cevapları ile ilgili değildir. Şekil 6-8 DNS Mesajının Başlığı Şekil 6-8 de başlık bölümünün formatı gösterilmiştir. İlk alan ID alanıdır ve 16-bitten oluşur. Bu tanımlayıcı hem sorguda hem cevapta kullanılır ve ikisinin eşleşmesini sağlar. QR alanı bir bitlik alandır ve mesajın sorgu (0) veya cevap (1) olduğunu belirtir. Opcode 4 bitten oluşur. Değerlerinin karşılığı şöyledir: 0 = standart sorgu, 1 = ters sorgu, 2 = sunucu statü isteği ve 3 den 15 e = rezerve edilmiştir. AA (yetkili cevap) bir cevap için 1 değerine set edilirse cevaplayan isim sunucusunun sorgulanan domain name i için yetkili olduğunu belirtir. TC (truncation-kesici) 1 e set edilerek mesajın çok uzun olduğu için kesildiği belirtilir. Kesme iletim linkinin izin verdiği veri birimi uzunluğu ile ilgilidir. RD (tekrarlamalı işlem istendi) biti 1 e set edilerek isim sunucusuna bir tekrarlamalı sorgu yap direktifi verilir. RA (tekrarlamalı yapılabilir) biti bir cevap mesajıdır. Eğer isim sunucusu bir tekrarlamalı sorgu yapabilecekse RA ile bunu gösterir. Z alanı üç bittir ve ileride kullanılmak üzere rezerve edilmiştir. RCODE aşağıdaki değerlere set edilebilen 4 bit içerir: 0 = Hiç bir hata oluşmadı. 1 = Bir format hatası oluştu ve isim sunucu sorguyu anlayamadı. 2 = İsim sunucusunda bir sorun var. 3 = Sorgudaki domain referansında bir sorun var; sunucu bunu bulamaz. 4 = İsim sunucu bu tip sorguyu desteklemiyor. 5 = İsim sunucu yönetim veya güvenlik sebebi ile işlem yapmıyor. 6 dan 15 e = İleride kullanılmak üzere rezerve edilmiştirler. QDCOUNT 16-bitten oluşur ve soru bölümündeki girişlerin sayısını belirtir. ANCOUNT 16- bitten oluşur ve cevap bölümündeki RR lerin sayısını belirtir. NSCOUNT 16-bitten oluşur ve yetkili kayıt bölümündeki sunucu kaynak kayıtlarının sayısını belirtir. ARCOUNT 16-bitten oluşur ve ek kayıt bölümündeki kaynak kayıtlarının sayısını belirler. Bu son dört alan mesajı alan birime, dört alanın sınırlarını nasıl belirleyeceğinin bildirir.
10 Şekil 6-9 DNS Mesajının diğer Alanlarının Formatı Şekil 6-9 da bu dört bölümün formatı gösterilmiştir. Soru bölümü üç girişten oluşur. Bu bölümün sorgu mesajlarının sorularını taşıdığını söylemiştik. QNAME domain ismini içerir. QTYPE alanı sorgunun tipini belirtir. Bu alandaki değerler daha önceki bölümde bahsettiğimiz tip alanlarının (Tablo 6-1 e bakınız) değerlerinin içerebilirler. QCLASS sorgu sınıfını belirtir. Tipik olarak, bu değer Internet için IN olur. Şekil 6-9 da görüldüğü gibi DNS mesajının Cevap, Yetki ve Ek Kayıt bölümleri aynı formatı içerirler. Bu formattaki alanlar şöyledir: İSİM: Kaynak kaydınca belirtilen domain ismini tanımlar. TİP: RR tip kodlarından birini içerir. SINIF: RDATA alanında bulunan veri sınıfını belirler. TTL: Daha önce öğrendik. RD Uzunluğu: Alan uzunluğunu belirtir. RDATA: Kaynakla ilgili bilgiyi içerir. İçeriği kaynak kaydının tipi ve sınıfı ile ilgilidir. Örneğin, bir Internet adresi olabilir.