TRANSZPORT FELÜLET

Bevezetés

A transzport felület, vagy más néven Transport-Level Interface (TLI), ”C” nyelvű függvények halmaza, amely lehetővé teszi, hogy transzport-független hálózati alkalmazásokat fejlesszünk ki. A TLI és a socket interface általában standard hálózati interfészek a UNIX alapú operációs rendszerekben.

A transzport szolgáltatást nyújtó protokoll hajtja végre a TLI függvényeket. Ezeknek a függvényeknek a végrehajtását a transzport szolgáltatást felhasználó kezdeményezi megfelelő szolgáltatási kérések formájában.

A TLI-nek a következő két komponense van:

1. TLI könytári rutinok, amlyek az egyes szolgáltatásokat végrehajtják.

2. Állapotátmeneti szabályok, amelyek meghatározzák a transzport rutinok lehetséges hívási sorozatát.

Táblázatok definiálják a lehetséges állapotátmeneteket a potenciális események függvényében. Ilyen esemény lehet valamely, a felhasználó által kezdeményezett kérést, illetve választ megfogalmazó függvényhívás sikeres végrahajtása (kimenő esemény), vagy a szolgáltatást nyújtó felől érkező jelzések, illetve megerősítések átvételével kapcsolatos függvényhívások sikeres végrehajtása (bejövő esemény).

A TLI felhasználójának értenie kell az állapotátmeneteket, mielőtt olyan szoftver elkészítéséhez fogna, amelyik a transzport felületre épül.

Szolgáltatási módok

A TLI lehetséges szolgáltatási módjai a következők:

1. kapcsolatorientált szolgáltatás, és

2. kapcsolat nélküli szolgáltatás.

Kapcsolatorientált szolgáltatás

A kapcsolatorientált szolgáltatásnak négy fázisa van:

- lokális kezelés,

- kapcsolatfelépítés,

- adatátvitel,

- kapcsolatbontás.

Kapcsolatorientált szolgáltatás esetén az adatok sorrendtartóan továbbítódnak egy a végfelhasználók között már létrehozott adatátviteli kapcsolaton. A adatátviteli kapcsolat létrehozása után már nincs szükség további címkezelésre az adatátviteli fázisban.

A lokális kezelés elemei

A lokális kezelés fázisa a lokális műveleteket foglalja magába a szolgáltatást nyújtó és a szolgáltatást használó között. Ebben a munkafázisban például a felhasználónak kommunikációs csatornát kell létrehoznia a transzport szolgáltatóval. Minden ilyen csatorna egy meghatározott kommunikáció végpontja, és ezért transzport végpontnak is

Typeset by AMS-TEX

szokás nevezni. A t open függvény lehetővé teszi, hogy a felhasználó kiválassza a megfelelő transzport protokollt, amely alkalmas a kívánt kapcsolatorientált szolgáltatásra, és egyben megalapítja a transzport végpontot is. A transzport végpont szemléletesen a transzport felületen helyezkedik el, és szükségképpen valamely transzport rétegbeli entitáshoz kell kapcsolni. Ez gyakorlatilag a transzport végpontnak valamely transzport címhez való lekötését jelenti. Természetesen egy felhasználó egyidejűleg akár több transzport végpontot, illetve kapcsolatot kezelhet. A kommunikációs csatorna lokális végpontja nem a traszport entitásnál ”ér véget”, hanem tovább kell folytatni a kiépítést az internet réteg választott interfészén keresztül a kapcsolatos alhálózatig. A lekötést csak az interfész meghatározásáig kell folytatni, mivel ettől kezdve az összeköttetés az alhálózatig már a konkrét szoftver installáció által egyértelműen meghatározott. Az egyes transzport szolgáltatást adó protokolloknak sajátos mechanizmusuk van az egyes rétegek cimzésének kezelésére, és a végfelhasználók azonosítására. A t bind függvény hívásával lehetséges valamely végponthoz címeket hozzárendelni. Valamely transzport végpont megalapítával kapcsolatos tevékenységeket az alábbi függvények segítségével lehet elvégezni.

t alloc  Allokálja az adatszerkezeteket
t bind  Transzport címet kapcsol a transzport végponthoz
t close  Lezárja a transzport végpontot
t error  Kiírja a TLI hibaüzenetet
t free  Felszabadítja a t alloc által lefoglalt

területeket

t getinfo  A transzport protokoll paramétereit adja át a

felhasználónak

t getstate  Visszaadja a transzport végpont pillanatnyi állapotát
t look  Informálja a kurrens transzport réteg eseményről

a felhasználót

t open  Létrehoz egy transzport végpontot, és hozzárendel

a végponthoz egy traszport protokollt

t optmgmt  Egyezteti a protokoll-specifikus opciókat a traszport

szolgáltatóval

t sync  Szinkronba hozza a transzport végpontot a transzport

szolgáltatóval

t unbind  Leválasztja a transzport címet a transzport végpontról

Több TLI rutinhoz is van vele ekvivalens socket szolgáltatási rutin. Ezeknek a TLI rutinoknak a neve a megfelelő socket rutin nevéből a ”t ” prefix alkalmazásával kapható meg.

A kapcsolatfelépítés elemei

A kapcsolatfelépítési fázisban a kommunikációban résztvevő végfelhasználók kapcsolatokat létesítenek egymással a transzport szolgáltatón keresztül.

Így például valamely szerver meghirdeti a szolgáltatását a kliensek egy csoportjának, és ezután blokkolódik egy t listen hívásnál, és várakozik a kapcsolatkialakítási kérésekre. Valamely kliens megpróbál kapcsolatba lépni a szerverrel a meghirdetett címére hivatkozva a t connect hívásban. A kapcsolatkialakítási kérelem megérkezése a szerverhez a szerver blokkolt álapotának feloldását eredményezi, amely ezután a t accept hívással teheti teljessé részéről a kapcsolatkialakítást.

A következő tábázat összegzi azokat a rutinokat, amelyek a kapcsolatkialakítást támogatják.

t accept  Elfogad egy kapcsolatkialakítási kérelmet
t connect  Kezdeményez egy kapcsolatkialakítást valamely

meghatározott címen levő transzport végpontnál

t listen  Átvesz egy kapcsolatkialakításra irányuló

jelzést a transzport réteg felől

t rcvconnect Átvesz egy korábbi kapcsolatkialakításra adott

válasznak megfelelő megerősítést a transzport réteg felől

Az adatátviteli fázis elemei

Az adatátiteli fázisban a transzport felhasználóknak lehetőségük van adatátvitelre mindkét irányban egyidejűleg. A t send adatokat küld, a t rcv pedig adatokat fogad a már létrehozott kacsolaton keresztül. Az adatátvitel mindkét irányban sorrendtartóan garantált. A következő tábázat tartalmazza az adatátviteli fázist támogató TLI rutinokat.

t rcv  Adatot fogad, amely a hivatkozott transzport

kapcsolaton érkezett

t snd  Adatot küld egy már létrehozott transzport kapcsolaton

keresztül

A kapcsolatbontás elemei

A TLI a kapcsolatbontásra két lehetőséget is kínál. Az abortív jellegű bontás a kapcsolat azonnali megszüntetését jelenti. Minden megelőzően elküldött adat, amely még nem került átvételre, elveszhet. A t snddis hívás kezdeményezi az abortív kapcsolatbontást, amellyel kapcsolatos jelzést a másik oldalon a t rcvdis hívással lehet átvenni. Ezután a kapcsolat mindkét oldal számára törlődött. Az abortív bontás lehetőségét minden transzport szolgáltatást nyújtó szükségképpen biztosítja.

A transzportot szolgáltató biztosíthatja az egyeztetett bontás lehetőségét. Egyeztetett bontás esetén nincs adatvesztés. Ebben a szolgáltatásban a t sndrel és a t rcvrel rutinok vesznek részt. A kapcsolatban résztvevők bármelyike a t sndrel kérés kiadásával jelzést küldhet a partner felé, hogy a felőle irányuló adatátvitelt befejezte, és ezután már nincs is a továbbiakban lehetősége adatküldésre. A másik irányú adatforgalmat mindez nem érinti. Ha a másik irányú adatforgalom is hasonlóképpen lezárásra kerül, akkor ez a kapcsolat bontását jelenti. Látható, hogy ebben az esetben nincsen adatvesztés.

A kapcsolatbontási fázis rutinjainak összefoglalását az alábbi táblázat adja.

t rcvdis  Abortív bontással kapcsolatos jelzést ad át

a partner végpontnál

t rcvrel  Egyeztetett bontással kapcsolatos jelzést ad át

a partner végpontnál

t snddis  Abortiv bontási kezdeményezés, vagy elutasító válasz

valamely kapcsolatkialakítási kérelemre

t sndrel  Egyeztetett bontási kezdeményezés

Kapcsolat nélküli szolgáltatás

A kapcsolat nélküli szolgáltatásnak két fázisa van:

- lokális kezelés,

- adatátvitel.

A kapcsolat nélküli szolgáltatás üzenetorientált. Valamely adatcsomag az átvitelhez szükséges összes információt tartalmazza, beleértve a forrás és a rendeltetési címeket is. Minden ilyen információ egyetlen szolgáltatási kérés formájában adódik át, és az egyes adatcsomagok átvitele egymástól teljesen független. A kommunikációban résztvevő végfelhasználóknak kell értelmezniük az átvitt adatcsomagokat a hierarchia egy magasabb szintjén definiált protokoll alapján. A kapcsolat nélküli szolgáltatást megbízhatatlannak is szokták nevezni, mivel az átvitel nem garantáltan sorrendtató.

A kapcsolat nélküli szolgáltatás esetén a lokális kezelés fázisa ugyanazokat a lehetőségeket foglalja magába, mint a kapcsolatorienált esetben. Az adatátviteli fázisba a t sndudata küldi, a t rcvudata pedig fogadja a datagramokat. A transzport réteg felől a hibás datagram-átvitelekkel kapcsolatos jelzéseket a küldőnél a t rcvuderr függvény segítségével lehet átvenni.

A következő táblázat a kapcsolat nélküli adatátviteli szolgáltatás rutinjait foglalja össze.

t sndudata  Datagramot küld a redeltetési állomás felé
t rcvudata  Datagramot fogad valamely állomás felől
t rcvuderr  Hibaüzenetet ad át az előzőleg elküldött

datagram hibás átviteléről

Rétegkommunikáció

A transzport interfészt felhasználó folyamat és a transzport réteg szinkron, illetve aszinkron módon kommunikálhat egymással a transzport réteg felőli jelzések és megerősítések átvétele szempontjából. Ezek a jelzések, illetve megerősítések a megfelelő függvényhívások sikeres végrahajtásával vehetők át. Ha a felhasználó egy ilyen jelzésre, illetve megerősítésre számít, akkor kiadhatja a megfelelő függvényhívást. Ha a jelzés, illetve megerősítés rendelkezésre áll, akkor a szóbanforgó függvény sikeresen visszatérhet. Ha viszont a kívánt jelzés, illetve megerősítés nem áll rendelkezésre, akkor a megfelelő függvényhívás kétféleképpen hajtódhat végre. Szinkron rétegkommunikáció esetén a függvényhívás blokkolódik, amely blokkoltsági állapotot valamely jelzés, illetve megerősítés beérkezése oldja fel automatikusan. Sikeres visszatéréskor a kívánt jelzés, illetve megerősítés érkezett be, sikertelen visszatéréskor pedig a t errno érétke alapján dönthetünk a kialakult helyzetről. Aszinkron rétegkommunikáció esetén az illető függvényhívás végrehajtása nem blokkolódik, és a visszatérés sikeres vagy sikertelen voltából, és a t errno alapján lehet a kalakult helyzetet analizálni.

A t errno változó egy speciális értéke a TLOOK. Ha valamely TLI függvényhívás visszatérése hibás, és a t errno értéke TLOOK, akkor a t look függvény hivásakor a sikeres végrahajtásnál a visszatérési érték alapján lehet eldönteni, hogy milyen jelzés, illetve megerősítés érkezett, és ennek alapján lehet a megfelelő TLI függvényhívást kiadni a beérkezett jelzés, illetve megerősítés átvételére. Ha valamely függvényhívás abortál és a t errno értéke TLOOK, akkor a függvényhívás semmilyen változást nem idéz elő.

A t look függvény lehetséges visszatérési értékeit, és a megfelelő jelséseket, illetve megerősítéseket a következő táblázat tartalmazza.

\underline{Név}  \underline{Leírás}
T LISTEN  Kapcsolatkialakítási kérelem érkezett a

transzport végponthoz

T CONNECT  Megerősítés érkezett egy, az illető végpontnál

előzőleg kiadott kapcsolatkialakítási kérelemre a transzport végponthoz

T DATA  Felhasználói adat érkezett
T EXPDATA  Expressz felhasználói adat érkezett
T DISCONNECT  Elutasítás érkezett egy, az illető végpontnál

előzőleg kiadott kapcsolatkialakítási kérelemre a transzport végponthoz, vagy abortív bontás jelzése érkezett a létező kapcsolaton a transzport végponthoz

T ORDREL  Jelzés érkezett egyeztett bontással kapcsolatban

egy létező kapcsolat esetében a partner

végpont felől

T UDERR  Jelzés érkezett a transzport réteg felől azzal

kapcsolatban, hogy az előzőleg elküldött

datagram átvitelében hiba történt

TLI állapotok

\underline{Állapot} \underline{Leírás}

Szolgáltatás

T UNINIT  Inicializálatlan - az interfész kezdő és végállapota T COTS,

T COTS ORD, T CLTS

T UNBND Inicializált, de címhez nem kötött  T COTS,

T COTS ORD, T CLTS

T IDLE  Nincs kapcsolat létrehozva  T COTS,

T COTS ORD, T CLTS

T OUTCON A kapcsolatkérelem megtörtént a partner felé  T COTS,

T COTS ORD

T INCON  A kapcsolatkérelem érkezett a partner felől  T COTS,

T COTS ORD

T DATAXFERAdatátvitel  T COTS,

T COTS ORD

T OUTREL Egyeztetett bontás kérelme elment a partner felé T COTS ORD
T INREL  Egyeztetett bontás kérelme érkezett a partner felől T COTS ORD

Kimenő események

A kimenő események az érintett transzport rutinok sikeres végrehajtásakor következnek be. Ezek a transzport rutinok szolgáltatási kéréseknek, illteve válaszoknak felelnek meg. Bizonyos eseteben az eseményeket meg kell külnböztetni annak függvényében, hogy milyen környezetben történtek. A környezet a következő paraméterektő függ:

ocnt - beérkezett, de még fel nem dolgozott kapcsolatkérések száma, fd - a kurrens transzport végpont file leírója, resfd - annak a transzport végpontnak a file leírója, ahol a kapcsolat kiszolgálásra kerül.

\underline{Esemény} \underline{Leírás}

Szolgáltatás

opened  Sikeres visszatérés a t open hívásból  T COTS,

T COTS ORD, T CLTS

bind  Sikeres visszatérés a t bind hívásból  T COTS,

T COTS ORD, T CLTS

optmgmt  Sikeres visszatérés a t optmgt hívásból  T COTS,

T COTS ORD, T CLTS

unbind  Sikeres visszatérés a t unbind hívásból  T COTS,

T COTS ORD, T CLTS

closed  Sikeres visszatérés a t close hívásból  T COTS,

T COTS ORD, T CLTS

connect1  Sikeres visszatérés a t connect hívásból  T COTS,
szinkron módban  T COTS ORD
connect2  TNODATA hiba t connect híváskor  T COTS,
aszinkron módban, vagy TLOOK hiba amiatt, T COTS ORD

hogy disconnect érkezet a transzport végpontnál

accept1  Sikeres visszatérés a t accept hívásból  T COTS,
feltéve, hogy ocnt == 1, fd == resfd  T COTS ORD,
accept2  Sikeres visszatérés a t accept hívásból  T COTS,
feltéve, hogy ocnt == 1, fd! == resfd  T COTS ORD
accept3  Sikeres visszatérés a t accept hívásból  T COTS,
feltéve, hogy ocnt > 1  T COTS ORD
snd  Sikeres visszatérés a t snd hívásból  T COTS,

T COTS ORD

snddis1  Sikeres visszatérés a t snddis hívásból  T COTS,
feltéve, hogy ocnt <= 1  T COTS ORD
snddis2  Sikeres visszatérés a t snddis hívásból  T COTS,
feltéve, hogy ocnt > 1  T COTS ORD
sndrel  Sikeres visszatérés a t sndrel hívásból  T COTS ORD
sndudata  Sikeres visszatérés a t sndudata hívásból  T CLTS

Bejövő események

A bejövő események a megfelelő transzport rutinok sikeres befejeződését jelentik. Általában jellemző, hogy ezek a transzport rutinok valamely jelzés, vagy megerősítes átvételével kapcsolatosak. Az egyetlen bejövő esemény, amely nem kapcsolódik egyetlen transzport rutinhoz sem, a pass conn esemény, amely akkor következik be, amikor valamely kapcsolatkérést a végpont elfogad, de egyúttal át is adja azt egy másik már előre létrehozott, és transzport címhez lekötött végponthoz. Ez az esemény annál a végpontnál következik be, ahová a szóbanforgó kapcsolat kiszolgálása átkerül, habár egyetlen transzport rutin hívására sem került sor ennél a végpontnál.

\underline{Esemény} \underline{Leírás}

Szolgáltatás

listen  Sikeres visszatérés a t listen hívásból  T COTS,

T COTS ORD

rcvconnect  Sikeres visszatérés a t rcvconnect hívásból  T COTS,

T COTS ORD

rcv  Sikeres visszatérés a t rcv hívásból  T COTS,

T COTS ORD

rcvdis1  Sikeres visszatérés a t rcvdis hívásból  T COTS,
feltéve, hogy ocnt <= 0  T COTS ORD
rcvdis2  Sikeres visszatérés a t rcvdis hívásból  T COTS,
feltéve, hogy ocnt == 1  T COTS ORD
rcvdis3  Sikeres visszatérés a t rcvdis hívásból  T COTS,
feltéve, hogy ocnt > 1  T COTS ORD
rcvrel  Sikeres visszatérés a t rcvrel hívásból  T COTS ORD
rcvudata  Sikeres visszatérés a t rcvudata hívásból  T CLTS
rcvuderr  Sikeres visszatérés a t rcvuderr hívásból  T CLTS
pass-conn  Átadott kapcsolat átvétele  T COTS,

T COTS ORD

Transzport-felhasználó akciói

Az eseményektől függő állapotátmeneteket táblázatosan adjuk meg. Bizonyos állapotátmenetek esetén a felhasználónak meghatározott akciókat kell végrehajtania. Az egyes akciókra sorszámokkal hivatkozunk. A sorszámokhoz rendelt akciók a következők:

1. Az ocnt változó nullára állítása

2. Az ocnt változó eggyel növelése

3. Az ocnt változó eggyel csökkentése

4. A kapcsolat átadása egy másik végponthoz a t accept-nek megfelelően Állapotátmeneti táblázatok Lokális kezelés fázisa

T UNINIT T UNBND T IDLE
opened  T UNBND
bind  T IDLE[1]
optmgmt  T IDLE
unbind  T UNBND
closed  T UNINIT

Kapcsolatnélküli szolgáltatás - adatátvitel

T IDLE

snudata  T IDLE
rcvudata T IDLE
rcvuderr T IDLE

Kapcsolatorientált szolgáltatás - kapcsolatkezelés és adatátvitel

T IDLE  T OUTCON  T INCON  T DATAXFER
connect1  T DATAXFER
connect2  T OUTCON
rcvconnect  T DATAXFER
listen T INCON[2] T INCON[2]
accept1  T DATAXFER[3]
accept2  T IDLE[3][4]
accept3  T INCON[3][4]
snd  T DATAXFER
rcv  T DATAXFER
snddis1 T IDLE T IDLE[3] T IDLE
snddis2  T INCON[3]
rcvdis1 T IDLE T IDLE
rcvdis2  T IDLE[3]
rcvdis3  T INCON[3]
sndrel  T OUTREL
rcvrel  T INREL
pass con  T DATAXFER
T OUTREL T INREL

connect1 connect2 rcvconnect listen accept1 accept2 accept3

snd  T INREL
rcv  T OUTREL
snddis1 T IDLE T IDLE

snddis2

rcvdis1 T IDLE T IDLE

rcvdis2 rcvdis3

sndrel  T IDLE
rcvrel  T IDLE

pass con