SAP protokolas (Server Advertising Protocol)
Tikslas
Klientų procesai naudojasi serverio procesų, dirbančių serverio kompiuteryje, teikiamomis paslaugomis. Tam tikslui klientai turi žinoti, kokie serverio procesai dirba kiekviename iš serverių. Novell tai išsprendžia protokolo SAP (Server Advertising Protocol) pagalba. Per šį protokolą serveriai gali “susipažinti” vieni su kitais, ir kita vertus, klientai gali gauti informaciją apie reikiamus serverio procesus. Ryšiui tarp serverio bei klientų procesų užtikrinti, Novell visiems serverio procesams priskyrė šešioliktainius numerius. Keleto serverio procesų pavyzdžiai:
Serverio proceso tipas
Numeris
Print_Queue 0003h
File_Server 0004h
Job_Server 0005h
Print_Server 0007h
Archive_Server 0009h
Novell rezervavo visus numerius iki 8000h. Jei gamintojas nori rašyti serverio programą, kuri butų naudojama globaliai – pavyzdžiui, serverio programa, aptarnaujanti skaitmeninį faksą, – jis gali prašyti, kad Novell jam suteiktų vieną iš rezervuotų numerių. Lokaliam naudojimui skirti visi skaičiai, didesni už 8000h.
SAP paketų formatai
Service-Query paketas:
IPX-antraštė – 30 baitų
Užklausos tipas – 2 baitai
Serverio tipas – 2 baitai
Šio paketo pagalba klientas gali susipažinti su konkrečiu serverio procesu. IPX antraštėje pagrinde yra surašyti siuntėjo ir gavėjo kompiuterių adresai. Kaip siuntėjo adresas naudojamas darbo stoties adresas, o gavėjo adresas adresas yra globalus (Broadcast Address), t.y. paketas adresuojamas visiems kompiuteriams, dirbantiems tinkle.
Lauke “serverio tipas” (Server-Type) yra nurodomas serverio, į kurį klientas nori kreiptis, numeris. Lauke “užklausos tipas” (Query-Type) gali būti nurodoma, ar reikia ieškoti visų serverių, atitinkančių nurodytą tipą, ar rasti pirmą tinkantį.
Server-Identification paketas:
IPX – antraštė 30 baitų
Duomenys – 64 baitai
Jis sudarytas iš IPX antraštės ir duomenų lauko.
IPX antraštėje kaip siuntėjo adresas yra įrašomas įprastinis Novell serverio identifikacinis adresas (1h), o gavėjo adresas yra globalus. Duomenų laukas yra sudarytas iš laukų Response-Type (atsakymo tipas), Server-Type (serverio tipas), Server-Name (serverio vardas), Network-Address (tinklo adresas), Node-Address (tinklo “mazgo” adresas), Socket-Number (prievado numeris) ir Intervening-Networks (susisiekiantys tinklai).
Lauke Response-Type yra nurodoma, ar serverio kreipinys yra atsakymas į kliento užklausą ir į kokio tipo užklausą yra atsakoma. Lauke Server-Type nurodomas serverio numeris. Laukų Server-Name, Network-Address, Node-Address, Socket-Number pagalba serverio procesas informuoja klientus, kuriame kompiuteryje jis dirba, kuriame tinkle pastarasis kompiuteris yra, koks kompiuterio MAC adresas ir koks jo prievado numeris. Lauke Intervening-Networks nurodoma, kiek tiltų bei maršrutizatorių paketas sutiko savo kelyje nuo serverio iki kliento.
Eiga
Visi serverio procesai kas 60 sekundžių siunčia visiems kompiuteriams Server-Identification paketą. Šiuos paketus gauna ir serveriai, kurie tokiu atveju padaro įrašą specialioje duomenų bazėje; tokiu atveju serverio procesas pažymimas kaip galimas naudoti. Jei kuri laiką serverio procesas nesiųs SAP paketo, įrašas apie jį bus ištrinamas. Taikomoji programinė įranga, kuriai reikalingas tam tikras serverio procesas, gali kreiptis į šią duomenų bazę ir sužinoti, ar toks procesas yra registruotas. Tokiu atveju, jei įrašo apie reikiamą procesą nėra, kliento procesas gali išskirtinai jo teirautis Service-Query paketo pagalba.
Projektuojant didesnius tinklus, reikia atsižvelgti, kad SAP paketai didina tinklo apkrovimą. Novell tinklų sujungimo viešo naudojimo linijomis (pav. ISDN) atveju duomenų perdavimo sparta gali ypatingai sumažėti. To pasekoje anksčiau ar vėliau Novell turėjo įvesti kitokį serverio procesų registravimo būdą. Ir kompanija tai padarė kartu su pagrindinio protokolo keitimu iš SPX/IPX į TCP/IP.