A szállítási réteg

 

Feladata: hogy megbízható, gazdaságos adatszállítást biztosítson a forráshoszttól a célhosztig, függetlenül magától a fizikai hálózattól vagy az aktuálisan használt kommunikációs alhálózatoktól.

A szállítási réteg szolgálata:

·        összeköttetés alapú szállítási szolgálat

·        összeköttetés nélküli szállítási szolgálat

Különbségek a hálózati réteg és a szállítási réteg szolgálatai között: a szállítási réteg kódja teljes egészében a felhasználók gépein fut, szemben a hálózati réteggel, ami nagyrészt a routereken, a routereket pedig a szolgáltató üzemelteti (legalábbis a nagy kiterjedésű hálózatokban). A szállítási réteg létezése lényegében azt teszi lehetővé, hogy a szállítási szolgálat megbízhatóbb lehessen annál a hálózati szolgálatnál, amelyre ráépül. A szállítási réteg képes felfedezni, és kiegyenlíteni az elveszett csomagok, és a csonkolt adatok okozta hibákat.

A szállítási rétegen belül azt a hardver és/vagy szoftver elemet, amely a munkát végzi, szállítási funkcionális elemnek vagy szállítási entitásnak (transport entity) nevezzük. Ez lehet az operációs rendszer magjának (kernelének) része, önálló felhasználói folyamat, egy hálózati alkalmazáshoz tartozó könyvtár vagy a hálózati illesztő kártya.

A szállítási rétegnek köszönhetően az alkalmazások programozói egy szabványos primitívkészletre írhatják a kódot, és az így megírt programok a hálózatok széles skáláján működnek. Mindezt anélkül, hogy a programozóknak a különféle alhálózati interfészekkel és a megbízhatatlan átvitellel törődniük kellene. Ha minden létező hálózat tökéletes lenne, és mindegyik egy olyan közös szolgálatprimitív-készletet használna, amely garantáltan soha de soha nem változik, akkor lehet, hogy nem lenne szükség a szállítási rétegre. A gyakorlati életben azonban azt a kulcsfontosságú feladatot teljesíti, hogy elszigeteli a magasabb rétegeket a műszaki megoldásoktól és az alhálózat tökéletlenségeitől.

A fenti ok miatt sokan megkülönböztetik az 1-4. rétegeket a 4. feletti réteg(ek)től. Az alsó négy réteget tekinthetjük a szállítási szolgáltatónak (transport service provider), míg a magasabb réteg(ek)et tekinthetjük a szállítási szolgálat felhasználójának (transport service user). A szolgáltató és a felhasználó ezen elkülönítése jelentős hatással van a rétegek kialakítására, és kulcsfontosságú helyzetbe hozza a szállítási réteget, mivel ez alkotja a fő határvonalat a szolgáltató és a megbízható adatátviteli szolgálat felhasználója között.

A valódi hálózatok nem hibamentesek, de pontosan a szállítási réteg feladata az, hogy egy nem megbízható hálózatra épülve megbízható szolgálatot nyújtson.

         A szállítási protokollok feladata: hibakezelés, sorszámozás és forgalomszabályozás.


Az Internet szállítási protokolljai:

ü     az összeköttetés nélküli protokoll az UDP,

ü     az összeköttetés alapú protokoll a TCP.

UDP (User Datagram Protocol - felhasználói datagram protokoll).

Az UDP olyan alkalmazásoknak kínálja a szolgálatát, amelyek összeköttetés kiépítése nélkül akarnak beágyazott IP-datagramokat küldeni.

Az UDP olyan szegmenseket (segment) használ az átvitelhez, amelyek egy 8 bájtos fejrészből, valamint a felhasználói adatokból állnak.

 

Az UDP-fejrész:

32bit

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

UDP Forrásport

UDP Célport

UDP szegmens hossza

UDP ellenőrző összeg

ADAT

OPCIÓK

 

Az UDP használatának a legnagyobb előnye a nyers IP használatával szemben, hogy a fejrészben megtalálható a feladó és a címzett portszáma is. A portszámokat tartalmazó mezők nélkül a szállítási réteg nem tudná, hogy mit kezdjen a csomaggal. A segítségükkel azonban helyesen tudja kézbesíteni a szegmenseket.

Az UDP nem végez forgalomszabályozást, hibakezelést vagy újraküldést egy rossz szegmens vétele esetén. Viszont biztosít egy interfészt az IP-protokoll használatához, azzal a többletszolgáltatással, hogy a portok használatával egyszerre több folyamatot képes demultiplexelni. Az olyan alkalmazásoknak, amelyeknek fontos a csomagforgalom, a hibakezelés vagy az időzítés precíz ellenőrzése, az UDP pontosan azt nyújtja, amire szükségük van.

Minden olyan programnak, amely valamely hoszt neve (pl.www.cs.berkeley.edu)  alapján akarja kikeresni a hoszt IP-címét, egy UDP-csomagot kell elküldenie valamelyik DNS-szervernek. A szerver egy olyan UDP-csomaggal válaszol, amely a hoszt IP-címét tartalmazza. Nincs szükség előzetes összeköttetés létesítésre, sem az összeköttetés lebontására az átvitel után. A hálózaton csak két üzenet halad át.

 

DNS: (Domain Name System - körzeti névkezelő rendszer)

A szükséges információt a hívótól a hívott felé a paraméterekben, visszafelé pedig az eljárás eredményében lehet átvinni, a programozó elől azonban minden üzenetváltás rejtve marad. Ezt a módszert RPC-nek (Remote Procedure Call - távoli eljáráshívás) nevezték el és sok hálózati alkalmazás alapjául szolgált már. A hívó folyamatot hagyományosan kliensnek, a hívott folyamatot, pedig szervernek hívják.


A kliens-szerver RPC egy olyan terület, amelyen az UDP széles körben használatos.

Egy másik ilyen a multimédiás alkalmazásoké. Ahogyan az internetes rádió, az

internetes telefon, a hálózati zeneszolgáltatás (music-on-demand), a videokonferencia és más multimédiás alkalmazások egyre elterjedtebbé váltak, a tervezők észrevették, hogy minden egyes alkalmazáshoz többé-kevésbé ugyanazt a valós idejű szállítási protokollt találták fel újra és újra.

Egy általános, több célra alkalmazható valós idejű szállítási protokoll a napjainkban, széles körben használatos RTP (Real-Time Transport Protocol - valós idejű szállítási protokoll).

Az RTP alapvető feladata az, hogy több valós idejű adatfolyamot multiplexeijen

UDP-szegmensek egyetlen folyamába. Az UDP-folyamot egy címre (egyesküldés), vagy több címre (többesküldés) is feladhatja. Mivel az RTP csak a szabványos UDP-t használja, a blokkjait a routerek nem kezelik különleges módon.

RTP nem használ forgalomszabályozást, hibakezelést, nyugtázást és újraküldést, kérő megoldásokat.

 

A TCP-t (Transmission Control Protocol - átvitel-vezérlési protokoll)

- feladata: bitfolyamok biztonságos átvitele megbízhatatlan összeköttetéses hálózaton

- hoszt azonosítása: IP cím + TCP portcím

- a küldő és a vevő között az adatok szegmensekben mennek

- TCP szegmens: 20 bájt fejléc + nem kötelező opcionális rész + adatok

 

Kifejezetten arra tervezték, hogy megbízható bájtfolyamot biztosítson a végpontok között egy egyébként megbízhatatlan összekapcsolt hálózaton.

A TCP-t arra tervezték, hogy dinamikusan alkalmazkodjon az összekapcsolt hálózatok tulajdonságaihoz, valamint hogy nagymértékben ellenálló legyen sokféle meghibásodással szemben. Pozitív nyugtázást és csúszóablakot használ.

Minden TCP-t támogató gép rendelkezik egy TCP szállítási entitással, amely lehet egy könyvtári eljárás, egy felhasználói folyamat vagy a kernel része. A TCP-folyamokat és az IP-réteg felé használható interfészeket minden esetben a TCP-entitás kezeli. A helyi folyamatoktól kapott felhasználói adatfolyamokat a TCP-entitás 64 KB-ot meg nem haladó méretű darabokra szedi szét (a gyakorlatban sokszor 1460 adatbájtos darabokra, mert így az IP- és TCP-fejrészekkel együtt is beleférnek egy Ethernet-keretbe). Az egyes darabokat önálló IP-datagramokban küldi el. Amikor egy géphez TCP-adatokat tartalmazó datagram érkezik, az a TCP-entitáshoz kerül, amely visszaállítja az eredeti bájtfolyamokat.


A TCP szolgálati modell:

A TCP-szolgálat úgy valósul meg, hogy mind a küldő, mind a fogadó létrehoz egy csatlakozónak (socket) nevezett végpontot. Minden csatlakozónak van egy száma, azaz csatlakozócíme, ami a hoszt IP-címéből és egy hoszton belül érvényes 16 bites számból, a port azonosítójából tevődik össze.

Egy csatlakozó egyidejűleg több összeköttetés kezelésére is használható. 65536 port van, az 1024 alatti portokat jól ismert portoknak (well-known port) hívják.


A TCP fejrésze:

32bit

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Forrásport

Célport

 

Sorszám

Nyugtaszám

Eltolás

 

URG

ACK

PSH

RST

SYN

FIN

Ablakméret

 

Ellenőrzőösszeg

Sürgősségi mutatók

 

 

 

Opciók (0 vagy több 32 bites szó)

Adatok (opcionális)

 

 

Forrásport: a forráskapu száma

Célport: a célkapu száma

Sorszám: a szegmens első adatbájtjának sorszáma

Nyugtaszám: a következő várt bájt sorszáma

Eltolás: TCP fejrész hossz, hány 32 bites szóból áll a TCP-fejléc

Foglalt: későbbi használatra fenntartott üres mező

U: URG: sürgős

A: ACK: érvényes nyugtázás

P: PSH: késedelem nélküli adattovábbítás (pufferelés tiltva)

R: RST: kapcsolat megszakítása

S: SYN: sorszámok összehangolása, összeköttetés létesítésére szolgál

  - háromutas kézfogás:

- SYN = 1, ACK = 0: kapcsolat felépítésének kezdeményezése

- SYN = 1, ACK = 1: kapcsolat elfogadása

- SYN = 0, ACK = 1: kapcsolat nyugtázása

 

F: FIN: küldés vége, utolsó adat

Ablakmére (Unused): mennyi adat vételére képes a vevő

Ellenőrzőösszeg: a fejléc és az adatok ellenőrző összege

Sürgősségi mutatók: ha az URG=1 akkor a sürgős adatok a keret elejére kerülnek

Opciók és kitöltés (0 vagy több): Forgalomirányítás kitöltés stb.


TCP portok:

Az általánosan használt módszer az, hogy külön szállítási címeket definiálunk az egyes folyamatok részére, amelyeken várhatják az összeköttetési kéréseket. Az Interneten ezeket a végpontokat portoknak hívják.

Amikor egy folyamat egy TCP-kapcsolatot szeretne kiépíteni egy másik, távoli folyamattal, akkor hozzácsatolja magát egy addig a saját gépén nem használt TCP-porthoz. Ezt nevezzük forrás portnak (source port), és ez mondja meg a TCP-szoftvemek, hogy hová küldje az adott kapcsolathoz tartozó bejövő csomagokat. A folyamat megad egy cél portot (destination port) is, hogy megmondja, kinek kell a csomagokat adni a távoli oldalon. A 0-1023-ig terjedő portokat a jól ismert szolgáltatások számára tartották fenn. A webkiszolgálók például a 80-as portot használják, így a távoli kliensek könnyen megtalálják őket. Minden kimenő TCP-üzenet tartalmaz egy forrás és egy cél portot is. Ez a két port együtt azonosítja a kapcsolatot, használó folyamatokat mindkét végponton.

Mivel a TCP Forrás port 16 bites, legfeljebb 65 536 gépet lehet egy IP-címhez rendelni.

Port

Protokoll

Alkalmazás

20-21

FTP

Fájlátvitel (20-adatátvitel, 21-vezérlő)

22

SSH

Titkosított távoli parancssoros bejelentkezés

23

TELNET

Távoli parancssoros bejelentkezés

25

SMTP

E-levelezés (TCP)

53

DNS

Névkezelés (UDP)

69

TFTP

Trivial FTP (Egyszerűbb fájlátvitel)

67

DHCP

IP-címkérés

80

HTTP

WEB

110

POP3

Levelezés

135-139

NETBIOS

Windows

143

IMAP4

Levelezés

443

HTTPS

Biztonságos WEB

445

MS-DS

Microsoft nyitott portja

A küldő és a vevő TCP-entitások az adatokat szegmensekben viszik át egymás között. A TCP-szegmensek (TCP segment) egy rögzítetten 20 bájtos fejrészből (és egy nem kötelező, opcionális részből), valamint 0 vagy több adatbájtból állnak.

A szegmensek méretének két korlátja van. Egyrészt, minden szegmensnek a hozzá tartozó TCP-fejrésszel együtt bele kell férnie a 65 515 bájtos IP-adatmezőbe. Másrészt, minden hálózaton meghatározzák az úgynevezett legnagyobb átvihető adategységet (Maximum Transfer Unit - MTU), amelybe minden szegmensnek bele kell férnie.

A TCP-entitások egy csúszóablakos protokoll-változatot használnak. A küldő minden szegmens feladásakor egy időzítőt is elindít. Amikor a szegmens megérkezik a célhoz, a vevő TCP-entitás visszaküld egy olyan szegmenst (adatokkal tele, ha van elküldendő adat, egyébként üresen), amelyben a következőnek várt szegmens sorszámával visszaigazolja az adást. Ha a küldő oldalon az időzítő a nyugta vétele előtt lejár, akkor a küldő entitás újra elküldi a szegmenst.

Teljesítőképesség:

1. A teljesítőképesség problémái.

2. A hálózat teljesítőképességének mérése.

3. Rendszertervezés a teljesítőképesség növelésére.

4. Gyors TPDU-feldolgozás.

5. A jövő nagy teljesítményű hálózati protokolljai.

 

Összefoglalás

A szállítási réteg megértése kulcsfontosságú a rétegekbe szervezett protokollok megértéséhez. Számos különböző szolgálatot kínál, amelyek közül a legfontosabb a végpontok közötti, összeköttetés alapú, megbízható bájtfolyam a küldőtől a vevőig. Ehhez egy olyan szolgálatprimitív-készlet segítségével lehet hozzáférni, amely az összeköttetések kiépítését, használatát és lebontását teszi lehetővé. Egy gyakran alkalmazott szállítási réteg interfész a Berkeley-csatlkozók (sockets) által nyújtott interfész.

A szállítási protokolloknak képesnek kell lenniük arra, hogy összeköttetés-kezelést végezzenek egy megbízhatatlan hálózaton. Az összeköttetések kiépítését az olyan késleltetett és megkettőzött csomagok léte nehezíti, amelyek teljesen váratlan pillanatokban újra felbukkanhatnak. Emiatt háromutas kézfogásra van szükség az összeköttetések felépítéséhez. Az összeköttetések bontása könnyebb, mint a kiépítésük, de a két hadsereg problémája miatt még így is távol áll a triviálistól.

A szállítási rétegnek még akkor is sok dolga van, ha a hálózati réteg teljesen megbízható. Kezelnie kell az összes szolgálatprimitívet, az összeköttetéseket és az időzítőket, valamint adási jogokat kell adnia és felhasználnia.

Az Internet két fő szállítási protokollt használ, az UDP-t és a TCP-t. Az UDP egy összeköttetés nélküli protokoll, amely lényegében egy olyan héj az IP-csomagok körül, amely lehetővé teszi több folyamat multiplexelését és a demultiplexelését egyetlen IP-címen. Az UDP kliens-szerver párbeszédek lefolytatására alkalmas, például RPC használatával. Felhasználható még az RTP-hez hasonló valós idejű protokollok építőelemeként. Az Internet fő szállítási protokollja a TCP, amely megbízható, kétirányú bájtfolyamot biztosít. Minden szegmensben 20 bájtos fejrészt alkalmaz. A szegmenseket az Interneten belüli routerek feldarabolhatják, ezért fontos, hogy a hosztok képeseknek legyenek a darabok újbóli összerakására. Nagymennyiségű munka fekszik a TCP teljesítmény-optimalizálásában, amely Nagle, Clark, Jacobson, Karn és mások algoritmusait használja fel. A vezeték nélküli összeköttetések használata számos módon bonyolítja a TCP alkalmazását. A tranzakciós TCP a TCP olyan kiterjesztése, amely kevesebb csomaggal valósítja meg a kliens-szerver párbeszédeket.

A hálózat hatékonysága általában főként a protokoll és a TPDU-feldolgozás kommunikációs költségén múlik, és a sebesség növelésével a helyzet egyre romlik. A protokollokat arra kell tervezni, hogy a lehető legkevesebbre csökkentsék a felhasznált TPDU-k, a szükséges környezetváltások és az egyes TPDU-k lemásolásainak számát. A gigabites hálózatok egyszerű protokollokat igényelnek.

TPDU (Transport Protocol Data Unit - szállítási protokoll adategység)

CR: CONNECTION REQUEST (összeköttetés kérése) 

CA: CONNECTION ACCEPTE (összeköttetés elfogadva)