A Service Location Protocol (SLP, srvloc) egy szolgáltatásfelismerési protokoll, amellyel hálózatba kapcsolt számítógépek és egyéb eszközök szolgáltatásokat (idegen szóval service-eket) találhatnak meg. Az SLP-t úgy tervezték meg, hogy kis- és nagyméretű hálózatokban egyaránt használható legyen, azaz méretezhető legyen. Az SLP teljes meghatározását az RFC 2608 dokumentum tartalmazza.

Áttekintés szerkesztés

Az SLP-t hálózati eszközök használják szolgáltatások meghirdetésére. Minden szolgáltatásnak rendelkeznie kell egy URL-lel, ami egyértelműen azonosítja azt. Az URL mellett rendelkezhet még tetszőleges számú név/érték párral, melyeket attribútumoknak hívunk. Minden eszköznek legalább egy scope-ban kell szerepelnie. A scope-ok egyszerű sztringek, melyeket az eszközök csoportosítására használnak. A scope fogalom hasonlatos a névtér fogalomhoz, mert a láthatóságot definiálja. Egy adott scope-hoz tartozó eszköz számára nem láthatóak a más scope-ban definiált szolgáltatások.

Például egy nyomtató URL-je lehet a következő:

service:printer:lpr://myprinter/myqueue

Ez az URL például egy myprinter nevű nyomtató myqueue nevű nyomtatási sorát jelöli. Az URL-ből az is látszik, hogy a nyomtató az LPR protokollt használja. Vegyük észre, hogy az URL a speciális „service:” prefixumot használja. Ez nem kötelező, de segítségével kereshetünk adott típusú szolgáltatásokra, például nyomtatókra anélkül, hogy a konkrét protokollt meghatároznánk. Az első három komponenst (service:printer:lpr) hívják szolgáltatástípusnak, vagy idegen szóval service type-nak. Az első két komponenst (service:printer) hívják absztrakt szolgáltatástípusnak is, angolul abstract service type-nak. Azonban nem minden URL kezdődik a „service:” prefixummal, más URL-eknél, mint például a http://www.wikipedia.org esetében maga a sémanév a szolgáltatástípus.

A nyomtató attribútumai például a következők lehetnek. Ez a példa a szabvány SLP szintaxist követi, bár az olvashatóság kedvéért soremelésekkel bővítettük:

(printer-name=Hugo),
(printer-natural-language-configured=en-us),
(printer-location=In my home office),
(printer-document-format-supported=application/postscript),
(printer-color-supported=false),
(printer-compression-supported=deflate,gzip)

A másik fontos fogalom a service template, ami az URL szintaxis és az attribútumok formális leírása. A service template definícióját az RFC 2609 dokumentum tartalmazza.

Az SLP-ben többféle lekérdezéstípus létezik:

  • Lekérdezhető egy adott szolgáltatástípushoz vagy absztrakt szolgáltatástípushoz tartozó összes szolgáltatás.
  • A lekérdezésben szűrhetünk attribútumokra az LDAP szintaxist használva.
  • Az URL alapján lekérdezhetjük egy adott szolgáltatás attribútumait.
  • Lekérhető az összes szolgáltatástípus listája.
  • Lekérhető az összes létező scope listája.

Szerepek szerkesztés

Az SLP három különböző szerepet definiál. Egy eszköz több szereppel is rendelkezhet, akár mind a hárommal is.

  • User Agent (UA) olyan eszköz, amely szolgáltatásokat keres
  • Service Agent (SA) olyan eszköz, amely egy vagy több szolgáltatást tesz közzé
  • Directory Agent (DA) olyan eszköz, amely szolgáltatások köztes tárolását (cache-elését) valósítja meg. Az ilyen eszközöket nagyobb hálózatokban használják az adatforgalom csökkentésére, s ezáltal a rendszer skálázhatóvá tételére. A DA-k használata opcionális, de ha van jelen a rendszerben DA, akkor az UA-k és az SA-k csak azokon keresztül kommunikálhatnak.

Manapság a legtöbb implementáció démon, és egyaránt képes az UA és az SA szerepekre, továbbá gyakori, hogy a démon konfigurálható DA szerepre is.

Protokoll-részletek szerkesztés

Az eszközöknek a 427-es porton kell figyelniük UDP csomagokra. Az SA-knak és a DA-knak ezen felül TCP csomagokra is figyelniük kell ugyanazon a porton. Az SLP sűrűn használja a multicastolást, különösen olyan eszközök esetében, amelyek frissen kerültek a rendszerbe és más eszközöket keresnek.

Az SLP működése nagy mértékben függ attól, hogy van-e jelen DA. Ha új kliens kerül a rendszerbe, akkor először kiküld egy multicast üzenetet, hogy DA-t keressen. Ha nem kap választ, akkor feltételezi, hogy nincs a rendszerben DA. Ha egy SA rátalál egy DA-ra, akkor regisztrálnia kell minden saját szolgáltatását a szóban forgó DA-nál. Amennyiben egy szolgáltatás megszűnik, akkor arról értesítenie kell a DA-t.

Ha nincs jelen DA, akkor az UA kiküld egy multicast UDP csomagot, amely a lekérdezést tartalmazza. Minden olyan SA, amely rendelkezik válasszal UDP csomag formájában válaszol az UA-nak. Ha a válasz nem fér bele egy UDP csomagba, akkor a csomag overflown jelölést kap, és ekkor az UA küldhet TCP kérést az SA-nak, hogy tetszőleges méretű választ kaphasson.

Ha van jelen DA, akkor az SA küld egy vagy UDP vagy TCP lekérdezést a DA-nak. Mivel minden SA köteles minden szolgáltatását regisztrálni a DA-nál, a DA rendelkezik a válasszal és simán elküldi azt az UA-nak.

Biztonság szerkesztés

Az SLP tartalmaz nyilvános kulcsú titkosítási mechanizmust, de ezt többnyire nem használják a következők miatt:

  • Ahhoz hogy a hitelesítés működjön, a szolgáltatók nyilvános kulcsait előzetesen telepíteni kell minden UA-ra, az SLP célja pedig éppen az, hogy az eszközök előzetes konfigurálás nélkül képesek legyenek megtalálni a szolgáltatásokat.
  • Az URL mindenképp tartalmaz hosztnevet vagy IP címet, és egy lokális hálózatban szinte kivédhetetlen a DNS nevek illetve IP címek meghamisítása. Ezért nem elég csak az URL hitelességét garantálni, hiszen egy adott kérésre bármely eszköz reagálhat.
  • Mivel a címek hamisíthatóak, az eszközök hitelességét egy más szinten kell ellenőrizni. Például az alkalmazási rétegben (lásd. SSL).

Alkalmazása szerkesztés

  • gyakran használják nyomtatók megkeresésére, több nyomtatási rendszer is támogatja, köztük a CUPS
  • hálózati nyomtatók is támogatják, hogy üzembe helyezés után azonnal megtalálhatók legyenek a hálózaton
  • az ACN protokoll különböző multimédiás eszközök, mint például intelligens fényszórók megtalálására használja
  • a Mac OS és a Mac OS X a 10.1-es verzióig SLP-t használt a fájlmegosztások és egyéb szolgáltatások keresésére. Az újabb Mac OS X-verziók, a 10.2-től fölfelé inkább a Zeroconfot használják az új funkciókhoz.
  • a Novell NetWare kliensek tisztán IP-alapú hálózatban SLP-vel keresik meg a szervereket
  • a SUSE Linux 9.1-es változatától kezdve SLP-t használ egyes szolgáltatások elérésére
  • a DMTF szabványosította a WBEM szolgáltatások elérését SLP-n keresztül
  • az SNIA az SLP szabványt tette kötelezővé az Storage Management Initiative – Specificationban (tárolóeszközök szabványa).