Windows Internet Name Service (WINS)
(Bu yazının yazarı Adil Hindistan önce öğrencim sonra arkadaşım oldu. Adil’in hazırladığı bu yazının size de çok yararlı olacağını umuyorum. Murat Yıldırımoğlu)

 

WINS'in iki işlevi vardır, isim kaydetme (Name Registration) ve isim
çözümleme (Name Resolution). Burada kasteddiğimiz isim NetBIOS ismi (=15
byte bilgisayar adı + 1 byte servis adı). Sadece windows 2000
bilgisayarların bulunduğu bir ortamda DNS, WINS'in işlevini yerine
getirebilir ancak daha alt seviyedeki Windows işletim sistemlerinin
bulunduğu ortamlarda WINS kullanılır.

 
A) İsim Kaydetme (Name Registration Using WINS)
 
Bir WINS istemcisinin (Client) en az 1 WINS sunucusunun (Server) IP
adresinden haberi vardır (Zaten bu yüzden WINS istemcisi adını alır).
Böylece arada router'ların da olduğu bir network'te istemci, WINS
sunucusunu bulabilir. Aşağıda bir WINS istemcisinin kendisini sunucuya
kaydettirmesi sırasında gelişen olaylar verilmiştir...
 
1) WINS istemcisi network'e bağlanacağı zaman, kendi WINS sunucusuna
"isim kaydettirme isteğinde" (Name Registration Request) bulunur.
Bilgisayar tüm SMB (Server Message Block) tabanlı servislerini WINS
sunucusuna kaydettirmek ister. Eğer bilgisayar, sunucu, istemci ve
messenger servislerini çalıştırıyprsa bu 3 servis ile de kayıt yaptırır!
 
Eğer istemcinin üzerinde 1den fazla network kartı varsa (Multihomed), her
kart için bu işi ayrı ayrı yapar.
 
 
2) Eğer WINS database'inde istemcinin adı veya IP adresi kayıtlı değilse,
WINS sunucusu "olumlu" cevap verir (Positive Name Registration Response),
kaydı ve "yenileme süresini" (Renewal Interval ya da Time To Live - TTL -
ki bu default olarak 6 gündür) database'ine ekler. İstemci yenileme süresi
içinde, kaydını yenilemek zorundadır.
 
 
3) Eğer WINS sunucusu kayıtlarında, aynı isim  fakat farklı bir IP ile bir
kayıt var ise, WINS sunucu, istemciye 5 dk beklemesini söyler ve kaydın
sahibine bir mesaj gönderir (Name Query Request). Eğer kaydın sahibinden
cevap gelirse, sunucu istemciye kayıt izni vermez (Negative Name
Registration Response).
 
 
4) Eğer Ismin kayıtlı sahibinden cevap gelmezse, WINS sunucu kaydı yapar,
kayıt için bir yenileme süresi belirler (6 gün) ve istemciye olumlu yanıt
verir (Positive Name Registration Response).
 
 
5) İlk defa adını WINS'e kaydettiren istemci yenileme süresinin 1/8 ine
geldiğinde, her kaydettirdiği servisi için sunucuya ayrı bir yenileme
isteği ("Renewal Request") gönderir. Sunucu cevap verir ve yenileme süresi
sıfırlanıp, yeniden geri sayım başlar. Bu özel ilk kaydettirmenin ardından
gelen yenileme isteği daha sonra aynı sıklıkta tekrarlanmaz,  yenileme
süresinin yarısına gelinceye kadar beklenir ve sonra yenileme isteği
gönderilir.
 
 
6) WINS istemcisi network'ten normal bir şekilde çıktığında (mesela Start
Shutdown ile bilgisayarı kapatırken) sunucuya ismini serbest bırakması
için (Name Release) bir mesaj gönderir.
 
 
7) Sunucu, ilgili kaydı SERBEST (Released) olarak işaretler ve bir
"yokolma süresi" (Extinction Interval) tanımlar (Default = 4 gün). Bu
yokolma süresi zarfında, işaretlenmiş kayıt diğer WINS sunucularına
bildirilmez (NOT REPLICATED). Kaydı yapan sunucu, bu ismi veya adresi
başkalarına verebilir ama diğer WINS sunucuları veremez! Bu yok olma
süresi, istemci tekrar online olduğunda, kayıt işlemini kolaylaştırır.
 
Özetle, WINS istemcisinin kayıt sirkulasyonu şu şekilde olur
 
- Kaydolma isteği ve ardından gelen yanıt (Registration Request followed
by Registration Response)
- Aktif bir süre. Bu süre boyunca istemci kaydını periyodik olarak
yeniliyor.
- Serbest bırakma isteği ve serbest kalma (Release Request followed by
 node release)
- İstemcinin hızlıca kaydını yenileyebileceği bir "Serbestlik süresi"
(Period of Released status during which the client can be reregistered
quickly)
 
 
 İsim Kaydettirirken Oluşan Hataların Ele Alınışı (Name Registration
 Failure Handling)
 
 - İsmi yeniden kaydettirememe (Failure to reregister)
 Eğer bir istemci bir kaydı serbest bıraktırır ve ardından tekrar
kaydettirmezse, sunucu "yokolma süresi" (extinction interval) bitinceye
kadar bekler (4 gün) ve sonra kaydın yanına bir mezartaşı diker (assign a
Tombstone to the record). Tombstone ile işaretlenmiş kayıtlar diğer WINS
sunucularına kopyelenir (REPLICATED), böylece başka biri aynı ismi veya
adresi isterse alabilir.
 
Tombstone ile işaretlenen kayda bir "yokolma bitiş süresi" (Extinction
TimeOut Interval) tanınır (default = 6 gün). Bu süre sonunda da kayıt
"Scavenging" metoduyla database'den temizlenir.
 
- Kayıt Yenilememe (Failure to Renew)
Eğer bir istemci, "yenileme süresi" (Renewal Period; default = 6 gün)
içerisinde kaydını yenilemezse, kaydın durumu SERBEST olarak not edilir
(assigned a status of RELEASED). Sunucu, kayda bir "yokolma süresi"
(Extinction Interval; default= 4 gün) belirler ve bu süre sonunda da
kaydın yanına TOMBSTONED notu düşülür (Yukarıda tombstone ile işaretlenen
kayıtlara ne olduğu anlatıldı). 
 
- Kaydı Bırakmama (Failure To Release)
Eğer bir istemci "yenileme süresinde" (Renewal Period) bittiğinde hala
kaydı bırakmamışsa, sunucu otomatik olarak kaydı SERBEST bırakır
(RELEASED). Serbest bırakılan kayıt yukarıdaki işlemlere tabii tutulur.
 
- Ana WINS Sunucusunu ulaşamama (Unable to contact Primary WINS Server)
Eğer istemci kaydını yenilemek istediğinde, Ana WINS sunucusuna ulaşamazsa
ve başka bir WINS sunucu (Secondary) biliyorsa, kaydını onda
yenileyebilir. Bu durum genellikle, problemlere sebep olur (Mesela bir
kayıt ana sunucuda Aktif görünüyorken, diğerinde Serbest kalabilir).

Bu durumu önlemek için, eğer istemci kaydını ana sunucu dışında bir
sunucuda serbest bıraktırıyorsa (Released), kayıt süresinin sonu
beklenmeden yanına TOMBSTONED işareti konulur.

- İstemci'nin göçmesi (Client Crash)
WINS sunucusunun, "yenileme süresi" (Renewal Period) devam ettiği sürece,
kayıtlı bir WINS istemci bilgisayarının göçüp göçmediğini bilmesinin
imkanı yoktur. Bu süre zarfında, kayıt durumu "Aktif" olarak işaretli
olduğu için, sunucu kendisinden kayıtla ilgili çözümleme isteyenlere, bu
kaydın IP adresini  verir.
 
Eğer bir istemci, göçmüş bir bilgisayar IPsini alır ve bağlantı kurmaya
çalışırsa, bağlantı kurulamaz. İstemci, bu durumu WINS sunucuya rapor
eder. WINS de bulunamayan istemciye bir isim sorgulama mesajı (Name Query
Request) gönderir. Eğer cevap gelmezse, kaydı serbest bırakır ve tabii ki
hemen bir "yokolma süresi" (extinction interval; default=4 gün) belirler.
 
B) İsim Çözümleme (NAME RESOLUTION)
Bir WINS istemci, bir NETBIOS isminin çözümlenmesini istediğinde (karşı
tarafın IP adresine ihtiyaç duyduğunda) NETBT.SYS sürücüsü (driver) WINS
sunucusuna bir "isim sorgulaması" (Name Lookup Query) gönderir.
 
Eğer gönderdiği isim 16 karakterden uzunsa ya da için de "." varsa, bu bir
DNS Host adı olarak düşünülür ve IP adresini bulmak için NETBT.SYS
devreden çıkar, TCPIP.SYS sürücüsü devreye girer.
 
WINS sunuc bir isim sorgulaması aldığında, database'ine bakar. Eğer kaydı
bulur ve durumunun Aktif (Active Status) olduğunu görürse, "isim sorgusu
cevabı" (Name Lookup Response) ile aranan IP adresini geri iletir.
 
İstemci Çözümleme Seçenekleri (Client Name Resolution Options)
Bir windows istemci NETBIOS isimlerini ya Broadcast ya da WINS ile
çözümlemeye ayarlanabilir. Bu iki yöntemin çeşitli kombinazonları vardır.
İstemci tarafından kullanılacak yöntem NETBIOS "düğüm tipi" (node type)
ile belirlenir. 4 tip düğüm vardır.
 
1) b-node (broadcast) 
NETBT.SYS sürücüsü, IP Multicast'ler kullanarak kaydolma ve çözümleme
yapar.
 
2) p-node (point-to-point)
Bu yöntem sadece WINS'i kullanır. Eğer WINS sunucusu bulunamazsa, isim
çözümlenemez.
 
3) m-node (mixed)
Bu yöntemde önce Broadcast yapılır, eğer sonuç alınamazsa WINS'e
başvurulur.
 
4) h-node (Hybrid)
Bu yöntem RFC 1001 veya 1002 de belirtilmemiştir ama Microsoft m-node'un
ürettiği broadcast trafiğini azaltmak amacıyla bu yöntemi bulmuştur. Bu
yöntemde önce WINS ile çözümleme yapılır, eğer WINS ile sonuç alınamazsa
broadcast yapılır. WINS yüklendiğinde default olarak bu yöntem aktiftir.
 
Aslında burda en uygun seçim p-node ya da h-node olarak görünür. Hatta
h-node daha mantıklı görünür  ama pratikte h-node istemcileri sık sık
broadcast yaparlar. Hatta ortamdaki WINS çalışıyoprken bile broadcast
yaptıkları olur. Ayrıca h-node istemcileri logoff yaparken biraz daha
fazla bekletirler çünkü ısrarla hem WINS hem de broadcast ile isimlerini
serbest bıraktırmak isterler (deregistration).
 
Öte taraftan p-node istemcileri asla broadcast trafiği oluşturmazlar ve
hızlı logoff olurlar ama tabii eğer WINS sunucusuna bir şey olursa NETBIOS
isim çözümlemesi yapamazlar. Eğer 2. bir WINS sunucu (yedek) varsa
p-node'unu seçmek daha akıllıcadır. Eğer tek sunucu varsa, ihtiyatlı
davranıp h-node kullanmakta fayda var.
 
WINS REPLICATION
 
Her WINS sunucukendi veritabanına (database) sahiptir. Bir WINS sunucya
yeni bir replikasyon partneri kaydedildiğinde, veritabanları
birleştirilir!
WINS iki yöntemle replikasyon yapar:
- PUSH MODE
Veritabanındaki değişiklikler, önceden belirlenen sayıya ulaştığında,
replikasyon partnerleri ile temasa geçilir ve güncellemeler gönderilir
(Event driven).
 
- PULL MODE
Replikasyon partneri belli aralıklarla WINS sunucusunu yoklar (poll for
updates; time driven).
 
Her kayda bir versiyon numarası verilir ve bu numara (ID) sürekli artar.
Push yönteminde WINS sunucu, son gönderdiğinden daha yüksek numaralı
kayıtları gönderir. Pull yönteminde, Replikasyon isteyen sunucu
kendisindeki numaraları WINS sunucuya bildirir ve daha yüksek numaralı
olan kayıtları alır.