Konak İsimlendirmesi
Önceki XXX. Oylum - Sistem Yönetimi Sonraki
Konak İsimlendirmesi
Bu kısımda yazılımınızın çalıştığı belli bir sistemin nasıl isimlendirildiği açıklanacaktır. Önce internetin gelişim tarihçesinden dolayı biraz karmaşık olan bilgisayar sistemleri isimlendirilmesininin çeşitli yollarını gözden geçirelim.
Her Unix sistem (bir konak olarak da bilinir) bir ağa bağlı olup olmamasına bağlı olarak bir konak ismine sahiptir. En basit şekli, bilgisayar ağları ortada yokken civciv gibi tek bir sözcüktü.
Fakat bir sistem İnternete ya da bir ağa bağlandığında Alan Adı Sisteminin (DNS) parçası olarak daha titiz bir isimlendirme uzlaşımına uyum sağlaması gerekir. DNS'de her konak ismi iki parçadan oluşur:
  1. makine adı
  2. alan ismi
"makine adı" biraz "konak ismi" gibi görünür, fakat aynı şey değildir ve çoğunlukla konak adlarının tamamına hatalı olarak "alan adları" derler.
DNS'de, tam konak adına FQDN (Fully Qualified Domain Name - Tamamen Nitelenmiş Alan Adı) denir ve makine adı, nokta, alan adı şeklindedir. Alan adının kendisi de aslında noktalarla ayrılmış çok sayıda bileşene sahiptir. Örneğin, bir sistemin makine adı truva ve alan adı ulakbim.gov.tr olsun, bu durumda bu sistemin konak ismi (ya da FQDN'si) truva.ulakbim.gov.tr olur.
Bu karışıklığa ek olarak bir bilgisayarın bilinme gereksinimini karşılamak için DNS tek isim uzayı değildir. Diğer bir isim uzayı da NIS (nam-ı diğer YP) isim uzayıdır. NIS'in amaçlarına uygun olarak NIS alan adı ya da YP alan adı olarak bilinen başka bir alan adı daha vardır ve DNS alan adının gerek duyduğu hiçbir şeye ihtiyaç duymaz.
DNS'de aslında herşey biraz daha karışıktır, aynı sisteme çok sayıda konak ismi vermek mümkündür. Bununla beraber, bunlardan sadece biri gerçek konak ismidir ve "asıl konak ismi" (canonical FQDN) adını alır.
Bazı bağlamlarda, konak ismine "düğüm ismi" dendiği de olur.
DNS konak isimlendirmesi hakkında daha fazla bilgi edinmek için Konak İsimleri bölümüne bakınız.
Bu kısımdaki işlevlerin prototipleri unistd.h dosyasında bulunur.
hostname, hostid ve domainname komutları bu işlevleri çağırarak çalışır.
int gethostname
(char  *isim,
 size_t boyut)
işlev
Bu işlev çağrıldığı sistemin konak ismini isim dizisinde döndürür. boyut argümanı bu dizinin bayt cinsinden boyutudur. Dönen değer DNS makine adı değildir. Sistem DNS'de kayıtlı ise bu konak ismidir (FQDN) (yukarı bakınız).
İşlevin normal dönüş değeri 0'dır, -1 dönüşse hata oluşmuş demektir. GNU C kütüphanesinde gethostname işlevi boyut yeterli değilse başarısız olur; bu durumda daha büyük bir diziyle yeniden denemelisiniz. Aşağıdaki hata durumu bu işlev için tanımlanmıştır:
ENAMETOOLONG
boyut argümanı "konak adının uzunluğu artı bir" değerinden küçük
Bazı sistemlerde, olası en büyük konak ismi uzunluğu için bir sembol vardır: MAXHOSTNAMELEN. sys/param.h dosyasında tanımlıdır. Fakat bunun mevcudiyetine fazla güvenmeyin, en iyisi bir başarısızlık durumunda yeniden denemektir.
gethostname işlevi, konak ismi isim dizisine tam olarak sığmasa bile sığdığı kadarını diziye yerleştirir. Bazı durumlarda kırpılmış bir konak ismi bile yeterlidir. Böyle bir durumda hata kodunu yoksayabilirsiniz.
int sethostname
(const char *isim,
 size_t      uzunluk)
işlev
sethostname işlevi çağrıldığı sistemin konak ismini uzunluk baytlık bir dizge olarak isim dizgesindeki değere ayarlar. Sadece bir ayrıcalıklı süreç bu işlemi yapabilir.
Genellikle sethostname işlevi sistem açılışı sırasında sadece bir kere çağrılır. Çoğunlukla, işlevin çağrıldığı yazılım konak ismini /etc/hostname dosyasından alır. Konak ismi olarak DNS makine adını değil, tam konak ismini verdiğinizden emin olun.
İşlevin normal dönüş değeri 0'dır, -1 dönüşse hata oluşmuş demektir. Aşağıdaki hata durumu bu işlev için tanımlanmıştır:
EPERM
Süreç yetkisiz olduğundan konak ismini veremiyor
int getdomainnname
(char  *isim,
 size_t uzunluk)
işlev
getdomainname işlevi çağrıldığı sistemin NIS (YP) alan adı ile döner. Bu pek popüler bir DNS alan adı değildir. Bunun yerine gethostname işlevi önerilir.
Bu işlevin özellikleri yukarıdaki gethostname işlevinin benzeridir.
int setdomainnname
(const char *isim,
 size_t      uzunluk)
işlev
setdomainname işlevi çağrıldığı sistemin NIS (YP) alan adını ayarlar. Bu pek popüler bir DNS alan adı değildir. Bunun yerine sethostname işlevi önerilir.
Bu işlevin özellikleri yukarıdaki sethostname işlevinin benzeridir.
long int gethostid
(void)
işlev
Bu işlev çağrıldığı makinenin "konak kimliği" ile döner. Teamülen, bu genelde long int bir değere dönüştürülmüş olarak makinenin birincil Internet IP adresidir. Bununla birlikte, bazı sistemlerde bu adres anlamsızdır ama her makine için tam kodlu eşsiz bir numaradır.
Bu geniş çapta kullanılmaz. BSD 4.2'de vardı ama BSD 4.4'de kaldırıldı. POSIX için gerekli değildir.
IP adresini sorgulamak için en uygun yöntem gethostname işlevinin sonucu ile gethostbyname çağrısı yapmaktır. IP adresleri hakkında daha fazla bilgi için Konak Adresleri bölümüne bakınız.
int sethostid
(long int kimlik)
işlev
Bu işlev çağrıldığı makinenin "konak kimliği"ni kimlik değerine ayarlar. Sadece ayrıcalıklı süreç bu işlemi yapabilir. Sistem açılışı sırasında sadece bir kere çağrılır.
Sisteme birincil IP adresi vermenin uygun yolu gethostname tarafından döndürülen sistem konak ismi ile IP adresini ilişklendirecek IP adres çözümleyiciyi yapılandırmaktır. Örneğin, sistem için /etc/hosts dosyasına bir kayıt yerleştirin.
Konak kimlikleri için yukarıdaki gethostid işlevinde daha fazla bilgi bulabilirsiniz.
İşlevin normal dönüş değeri 0'dır, -1 dönmüşse hata oluşmuş demektir. Aşağıdaki hata durumları bu işlev için tanımlanmıştır:
EPERM
Süreç yetkisiz olduğundan konak kimliğini veremiyor
ENOSYS
İşletim sistemi konak kimliği verilmesini desteklemiyor. Bazı sistemlerde konak kimliği anlamsızdır ama her makine için tam kodlu eşsiz bir numaradır.
Önceki Üst Ana Başlık Sonraki
XXX. Oylum - Sistem Yönetimi Başlangıç Platform Türü İsimlendirmesi
Bir Linux Kitaplığı Sayfası