Windows - Hálózati helyfigyelés

A hálózati helyfigyelés a Windows XP egyik szolgáltatása, amely leveszi a fejlesztők válláról azt a terhet, hogy figyelniük kelljen a logikai hálózatok beállításait olyan gépen, ahol több hálózati interfész is elérhető. Cikkünkben ismertetjük a szolgáltatás által nyújtott előnyöket.
Network Location Awareness Service Provider (NLA)
A Windows-t futtató PC-k gyakran több hálózati kapcsolattal rendelkeznek. Lehet több hálózati kártya is egy gépben különféle hálózatokra kapcsolódva, de telefonos dial-up kapcsolat is lehetséges ezen felül. A Windows Sockets képes számba venni az elérhető hálózati interfészeket egy meghatározott ideig, de bizonyos kritikus információk a hálózati kapcsolatokról – mint például a logikai hálózat, amelyhez a gép kapcsolódik, vagy az, hogy több interfész ugyanahhoz a hálózathoz kapcsolódik-e – korábban nem volt elérhető.
A hálózati helyfigyelő szolgáltató – amelyet NLA-nak nevezünk – lehetővé teszi a Windows Socket 2 alkalmazásoknak, hogy azonosítsák a logikai hálózatot, amelyikhez a Windows számítógép kapcsolódik. Emellett az NLA lehetővé teszi azt is, hogy beazonosítsuk, melyik fizikai hálózati interfészhez mentett el egy adott alkalmazás speciális információit. Az NLA tulajdonképpen egy általános Windows Socket 2 névfeloldó szolgáltató.
Az NLA szabályrendszere
Az NLA szolgáltató létfontosságú azokhoz a gépekhez vagy eszközökhöz, amelyek különféle hálózatok között mozoghatnak, segít optimális kapcsolat-beállítást választani, ha több is elérhető. Például egy drót nélküli gép – amely fizikai hálózatok között vándorolhat – használhatja az NLA-t arra, hogy meghatározza a jellegzetes konfigurációt az elérhető hálózati kapcsolat alapján. Az NLA szintén előnyös lehet, amikor egy több helyen használt gépnek fizikai kapcsolata van egy adott hálózathoz, amíg szintén kapcsolódik egy másik hálózathoz egy dial-up kapcsolaton, vagy csatornán keresztül.
Régebben a fejlesztőknek kellett megszerezni a logikai hálózati interfész információit, és ezután határozni a hálózati összeköttetésről, az elkülönített hálózati információk tömegére alapozva. Ilyen körülmények között a fejlesztőknek kellett választani az IP címre alapozott helyes hálózati interfészről, az alhálózatról, az interfészhez megfeleltetett DNS névről, az interfész MAC címéről, a drót nélküli hálózat nevéről, vagy más hálózati információkról. Az NLA csökkenti a problémát azáltal, hogy egy általános csatolót ellát részletes logikai hálózati kapcsolat-információkkal, fizikai interfész-információkkal megfeleltetve és értesítést nyújtva, amikor a korábban visszaadott információk érvénytelenné válnak.
Az NLA az alábbi hálózati információkat nyújtja:
  • Logikai hálózati azonosító: Az NLA először megpróbálja azonosítani a logikai hálózatot a DNS neve alapján. Ha a logikai hálózatnak nincs tartományneve, akkor az NLA azonosítja a hálózatot a registry-ben tárolt egyedi statikus információk szerint, és végül az alhálózati cím szerint.
  • Logikai hálózati interfészek: Minden hálózathoz, amelyhez egy számítógép csatolva van, az NLA hozzáad egy adapter nevet (AdapterName), ami egyedileg azonosít egy fizikai csatolót, mint pl. NIC, vagy egy logikai interfészt, mint pl. RAS kapcsolatot. Az AdapterName ezután használható az IP Helper API függvényekkel, hogy további interfész-jellemzőket érjünk el.
Az NLA a logikai hálózatot, mint szolgáltatásosztályt írja le, megfeleltetett osztály GUID, valamint további tulajdonságok segítségével. Minden logikai hálózat, amelyről az NLA információt ad vissza, ennek a szolgáltatásosztálynak a példánya.
NLA lekérdezése
Ahhoz, hogy értesüljünk az érvénytelen logikai hálózatokról, használnunk kell a WSANSPIoctl függvényt, hogy regisztráljunk a hálózati változtatási eseményekre. Két módszer használható annak megállapítására, hogy egy előzőleg valós hálózati hely érvénytelenné vált-e: lekérdezési módszerek, vagy értesítés az átlapolt I/O vagy Windows Messaging segítségével.
A lekérdezések a WSALookupServiceBegin, a WSALookupServiceNext és a WSALookupServiceEnd függvények segítségével formázhatók, hogy számba vegyék az elérhető logikai hálózatokat. Az változásokról való értesítés kérés mechanizmusa a WSALookupServiceBegin, a WSANSPIoctl és a WSALookupServiceNext függvények kombinációja.