A viszonyréteg az OSI modell ötödik rétege, szerepe nem kevésbé fontos, mint az alsóbb rétegeké.  Alapvető feladata, hogy az alkalmazások számára speciális szolgáltatásokat, párbeszéd alapú adatátvitelt, valamint szinkronizációs lehetőségeket biztosítson. Ezek a szolgáltatások nem elengedhetetlenek, de lényegében minden alkalmazás előnyösen használhatja ezeket. A szállítási réteggel ellentétben, ahol a viszonylag kevés primitívet találunk, ebben a rétegben sokkal több ilyen elérésére nyílik lehetőség.
A viszonyréteg lehetővé teszi, hogy a felhasználók gépeikkel kapcsolatot létesítsenek. Egy viszony lehet egyszerű adatátvitel, mint a szállítási réteg esetén, de ezt kiegészítheti néhány hasznos szolgáltatással, amelyeket az alkalmazások használhatnak ki. A viszony lehetőséget biztosít abban is, hogy a felhasználók bejelentkezhetnek egy távoli, időosztásos szerverre, vagy megoldhatnak állományátvitelt két gép között.
A továbbiakban csak az alapvető szolgáltatásokat tekintjük át.

  • A párbeszéd alapú vezérlés lehetővé teszi a felhasználók számára, hogy fél- vagy teljes duplex párbeszédeket folytassanak egymással, valamint félduplex átvitelnél felügyeli a párbeszéd irányváltásait. Csakúgy, mint az emberek közötti beszélgetés során, a kommunikációs alkalmazások is megkövetelik a kommunikáció irányának vezérlését. Több folyamat esetén el kell dönteni, hogy melyik alkalmazásnak van adási joga. A kommunikáció lehetséges iránya meghatározza a párbeszédes üzemmód vezérlését. A küldési jog tisztázása minden esetben nagyon fontos, de különösen nagy a jelentősége félduplex átvitelnél. Ilyen esetekben adatkeretek hordozzák a küldési jogot.
  • A szinkronizálás és helyreállítás szolgáltatás jelzőbit sorozatokat illeszt be az adatfolyamba, bejelenti az újraszinkronizálás szükségességét, valamint meghatározza, hogy erre melyik jelzőbit csoporttól van szükség. A harmadik feladata, hogy az újraszinkronizáció alatt kiüríti az alhálózatból azokat a csomagokat, amelyekre nincs szükség, vagy meghibásodtak. A szinkronizációs pontok sorszámozva vannak a könnyebb kezelés érdekében. Ezeket a számokat a szolgáltató automatikusan, folyamatosan növelve osztja ki. A szinkronizálás három szinten történhet meg:
    • A főszinkronizálás folyamatát minden esetben meg kell erősíteni. Ez megakadályozza az újabb adatátvitelt, amíg a szinkronizálás be nem fejeződik
    • Alacsony rendű szinkronizálás folyamatát nem feltétlenül kell megerősíteni, mindamellett az adatátvitelt sem akadályozza meg. A megerősítés magába foglalja mindazon szinkronizációs pontok megerősítését, amelyek előtte helyezkednek el.
    • Újraszinkronizálás során a viszonyréteg visszatérhet az előző fő- vagy alacsony fokú ellenőrzési ponthoz. Alkalmas megszakítani az aktív párbeszédet, és egy újat indítani. Lehetőséget teremt a szinkronizációs pontok közötti ugrásra.
  • A viszonyréteg támogatja olyan több esemény kezelését is, amelyek egy viszonyon belül végzik tevékenységüket, vagy olyan tevékenységet, amely egynél több viszonyt fog át.
  • Az alkalmazások számára biztosítja a kivételek naplózását is.
 A viszonyréteg feladata és működése hasonlít a szállítási réteghez a kapcsolatok kezelése, az adatátvitel és a folyamatkezelés tekintetében.

 Az alábbi táblázat a viszonyréteg szolgáltatásait mutatja
 

SzolgáltatásMűködésvezérlés Funkcionális egység(ek)
S-CONNECT Kernel
S-RELEASE Kernel, Párbeszéd felépítés
S-U-ABORT Kernel
S-P-ABORT Kernel
S-DATA Kernel
S-EXPEDITED-DATA Küldött adat
S-TYPED-DATA Típusos adat
S-CAPABILITY-DATA felhasznált adat
S-TOKEN-GIVE Félduplex, párbeszéd felépítés, alacsony rendű szinkronizálás, működésvezérlés
S-TOKEN-PLEASE Félduplex, párbeszéd felépítés, szinkronizálások, működésvezérlés
S-CONTROL-GIVE Működésvezérlés
S-SYNC-MINOR Alacsony rendű szinkronizálás
S-SYNC-MAJOR Fő szinkronizálás
S-RESYNCHRONIZE Újraszinkronizálás
S-P-EXCEPTION-REPORT Kivételek
S-U-EXCEPTION-REPORT Kivételek
S-ACTIVITY-START Működésvezérlés
S-ACTIVITY-END Működésvezérlés
S-ACTIVITY-DISCARD Működésvezérlés
S-ACTIVITY-INTERRUPT Működésvezérlés
S-ACTIVITY-RESUME Működésvezérlés

 A tevékenységek lehetnek:

  • elkezdettek,
  • befejezettek,
  • megszakítottak,
  • visszaállítottak,
  • eldobottak.

A viszonyréteg működése viszony primitíveken (Session Primitive Data Unit, SPDU) alapszik. Ezeket mutatja be az alábbi táblázat.
 

Service SPDUs
S-CONNECT Kapcsolódás
S-CONNECT Kapcsolódás elfogadása
S-CONNECT Kapcsolódás eldobása
S-DATA Adatátvitel
S-EXPEDITED-DATA Elküldött adat
S-TYPED-DATA Nyomtatott adat
S-CAPABILITY-DATA Felhasznált adat
S-CAPABILITY-DATA Felhasznált adat elfogadása
S-TOKEN-GIVE Keret adás
S-TOKEN-PLEASE Keret kérés
S-CONTROL-GIVE Keret adás megerősítése
S-CONTROL-GIVE Keret adás elfogadása
S-SYNC-MINOR Alacsony rendű ellenőrzési pont
S-SYNC-MINOR Alacsony rendű ellenőrzési pont elfogadása
S-SYNC-MAJOR Fő ellenőrzési pont
S-SYNC-MAJOR Fő ellenőrzési pont
S-RESYNCHRONIZE Újraszinkronizálás 
S-RESYNCHRONIZE Újraszinkronizálás elfogadása
S-ACTIVITY-START Tevékenység kezdete
S-ACTIVITY-RESUME Tevékenység újrakezdése
S-ACTIVITY-INTERRUPT Tevékenység megszakítása
S-ACTIVITY-INTERRUPT Tevékenység megszakításának elfogadása
S-ACTIVITY-DISCARD Tevékenység
S-ACTIVITY-DISCARD Tevékenység elfogadása
S-P-EXCEPTION-REPORT Kivétel lista
S-U-EXCEPTION-REPORT Kivétel adatok
S-RELEASE  Befejezés
S-RELEASE Szétkapcsolódás
S-RELEASE Befejezetlen
S-U-ABORT Megszakítás
S-P-ABORT 

Minden SPDU rendelkezik egy azonosítóval (ID), amely alapján egyértelműen meg lehet határozni.  A felhasználói adatokon kívül tárolásra kerül az SPDU hossza is. Lehetőség van paraméterek használatára is. Ezeket hasonlóan kezelhetjük, minden paraméter rendelkezik azonosítóval, valamint annak értékével és a keret hosszát is meg kell határoznunk. Több paraméter esetében azokat egymás után felsorolva használhatjuk. Az alábbi ábra az SPDU-k felépítését mutatja:

Ebben a részben a viszonyréteg feladataival ismerkedhettünk meg. A következő hónaptól a megjelenítési rétegről fogunk beszélni, elsősorban a tömörítési és titkosítási eljárásokkal ismerkedhetünk meg.