A TCP/IP protokollcsalád
Az Internet kisebb kiterjedésű számítógépes
hálózatok (LAN-ok) összekapcsolásából álló globális számítógépes rendszer. A
rendszer alapjait a hatvanas évek elején az USA-ban alakították ki a Védelmi
Minisztérium támogatásával indított ARPA
kutatási program keretében, ezért kezdetben a neve ARPANET
volt. Azt vizsgálták, hogy milyen módon valósítható meg az egymástól távol lévő
számítógépeken keresztül történő adattovábbítás. A cél egy olyan kommunikációs
rendszer kialakítása volt, amely akkor is tovább működik ha egy-egy része valamilyen
ok miatt kiesik. Az adatok átvitelére csomagkapcsolt átvitelt használtak. Az
egyszerű kommunikációt megvalósító levelezésen vagy adatbázisok elérésén túl
ma már különféle multimédia-alkalmazások is használhatók.
17. ábra: Az OSI modell és a TCP/IP
A későbbiekben már Internet-nek nevezett
hálózat — bár a rétegmodell szemlélettel 1960-as években tervezték — nem követi
az OSI hét rétegű felépítését. A hálózati modell négy rétegből áll:
- Alkalmazási szint (Application) Itt vannak a felhasználói és a hálózati
kapcsolatot biztosító programok
- Hoszt-hoszt réteg (Transport) Az OSI modell szállítási hálózati rétegének
felel meg. A létesített és fennálló kapcsolat fenntartását biztosítja. Két
rétegprotokollból áll: az egyik a Transmission Control Protocol (TCP) azaz
a továbbítást szabályozó eljárás, a másik az összekötetés mentes szállítási
protokoll User Datagram Protocol (UDP)
- Hálózatok közötti (Internet ) Az OSI modell hálózati rétegének felel
meg, ez a réteg végzi az a csomagok útvonal kijelölését a hálózatok között.
Ennek a rétegnek a protokollja az Internet Protocol (IP), az üzenetvezérlő
protokoll cím meghatározó eljárása, a foglalt címet meghatározó eljárás. A
rétegben előforduló események és hibák jelzésére szolgál az Internet Control
Message Protocol (ICMP), az Internet Vezérlőüzenet Protokoll.
- Hálózat elérési (Network Interface) Az OSI modell két alsó szintjének
felel meg, és ez biztosítja a kapcsolatot a csomópontok között. (Pl.: Ethernet,
Token-Ring, Token-Bus).
Az információ áramlása két csomópont között a 18. ábrán látható.
18. ábra: A TCP/IP csomópontok közti információáramlás
Az eredeti ARPANET-ben az alhálózattól
virtuális áramkör szolgálatot vártak el (azaz tökéletesen megbízhatót). Az első
szállítási réteg protokoll az NCP (Network Control Protocol - hálózatvezérlési
protokoll) elvileg egy tökéletes alhálózattal való együttműködésre épült. Egyszerűen
átadta a TPDU-kat a hálózati rétegnek és feltételezte, hogy a megfelelő sorrendben
kézbesítődnek a célnál. A tapasztalat azt mutatta, hogy az ARPANET-en
belül ez a protokoll kielégítően működik.
19. ábra: TCP csomag
Ahogy azonban az ARPANET Internetté vált,
amelyben már számos LAN, rádiós csomagszóró alhálózat; valamint több műholdas
csatorna is működött, azaz a végpontok közötti átviteli megbízhatóság csökkent.
Ezért egy új szállítási protokollt,- a
TCP-t (Transmission Control Protocol - átvitel
vezérlési protokoll) vezettek be. A TCP tervezésénél már figyelembe vették azt,
hogy megbízhatatlan (az OSI terminológia szerint
C típusú) alhálózatokkal is tudjon együttműködni. A TCP-vel együtt fejlesztették
a hálózati réteg protokollját (IP) is. A TCP fogadja a tetszőleges hosszúságú
üzeneteket a felhasználói folyamattól és azokat maximum 64 kbájtos darabokra
vágja szét. Ezeket a darabokat egymástól független datagramokként küldi el.
A hálózati réteg sem azt nem garantálja, hogy a datagramokat helyesen kézbesíti,
sem a megérkezett datagramok helyes sorrendjét. A TCP feladata az, hogy időzítéseket
kezelve szükség szerint újraadja őket, illetve hogy helyes sorrendben rakja
azokat össze az eredeti üzenetté. Minden TCP által elküldött bájtnak saját sorszáma
van. A sorszámtartomány 32 bit széles, vagyis elegendően nagy ahhoz, hogy egy
adott bájt sorszáma egyedi legyen. A TCP által használt fejrész a 19. ábrán
látható. A minimális TCP fejrész 20 bájtos.
- A FORRÁSPORT és a CÉLPORT mezők az összeköttetések végpontjait
(TSAP-címek az OSI-modell szerint) azonosítják.
Minden egyes hosztnak magának kell eldöntenie, hogy miképpen allokálja (osztja
ki) a portjait.
- A SORSZÁM és a RÁÜLTETETT NYUGTA mezők a szokásos funkcióikat
hajtják végre. A TCP minden bájtot megsorszámoz, ezért 32 bit hosszúak.
- A FEJRÉSZ HOSSZ kijelöli, hogy a TCP fejrész hány 32 bites szót tartalmaz.
Erre az információra az Opció mező változó hossza miatt van szükség.
- Ezután hat jelzőbit következik. Az URG jelző akkor 1, ha a protokoll
használja a SÜRGŐSSÉGI MUTATÓ-t (Urgent pointer). Ez valójában egy
eltolási értéket ad meg, amely az aktuális sorszámtól számolva kijelöli a
sürgős adatok helyét. A SYN és ACK biteknek összeköttetés létesítésekor
van funkciója. Összeköttetés kérésekor SYN=1, valamint ACK=0 annak jelzésére,
hogy a ráültetett nyugta mező nincs használatban. Az összeköttetés válaszban
van nyugta, így SYN=1 és ACK= l. A FIN az összeköttetés lebontására
használható, azt jelzi, hogy a küldőnek nincs több adata. A hoszt hibák miatti
nem jó állapotba került összeköttetéseit az RST bit használatával lehet
megszüntetni. Az EOM bit az Üzenet vége (End Of Message) jelentést
hordozza.
- A TCP-beli forgalomszabályozás változó méretű forgóablakot használ. 16-bites
mezőre van szükség, mivel az ABLAK azt adja meg hogy hány bájtot lehet
még elküldeni.
- Az ELLENŐRZŐÖSSZEG képzési algoritmusa egyszerű: 16-bites szavakként
az adatokat összegzik, majd az összeg 1-es komplemensét veszik. Vételkor a
képződött összeghez ezt hozzáadva, hibátlan átvitel esetén nullát kapunk.
- Az OPCIÓK mező különféleképpen használható fel, pl. összeköttetés
létesítése során a puffer-méret egyeztetésére.
A hálózati réteg IP protokollja a 80-as években
jelent meg. A protokoll összeköttetés mentes. A szállított csomagok a datagramok,
amely a forrás hoszt-tól a cél hosztig kerülnek továbbításra, esetleg több hálózaton
is keresztül. A hálózati réteg megbízhatatlan összeköttetés mentes szolgálatot
biztosít, így az összes megbízhatósági mechanizmust a szállítási rétegben kell
megvalósítani, ami biztosítja a két végállomás közötti megbízható összeköttetést.
Az IP működése a következő: A szállítási réteg
az alkalmazásoktól kapott üzeneteket maximum 64 kbájtos datagramokra tördeli,
amelyek az útjuk során esetleg még kisebb darabokra lesznek felvágva. Amikor
az összes datagram elérte a célgépet, ott a szállítási réteg ismét összerakja
üzenetté. A datagram két részből áll: egy fejrészből és egy szövegrészből. A
fejrészben 20 bájt rögzített, és van egy változó hosszúságú opcionális rész
is.
20. ábra: IP csomag
- A VERZIÓ mező a protokoll verzióját azonosítja, így a protokoll módosítását
is ezzel figyelembe lehet venni. Az IHL adja a fejrész teljes hosszát
32 bites egységekben (20bájt+opció rész). Minimális értéke:5. (Nincs opció.)
- A SZOLGÁLAT TÍPUS mező teszi lehetővé a hoszt számára, hogy kijelölje
az alhálózattól kívánt szolgálat típusát. Különféle sebességek és megbízhatósági
fokok különböző kombinációi között lehet választani. Ez azért fontos mert
különféle optimális átvitelt lehet megvalósítani. Például digitalizált kép-
vagy hang továbbításakor a gyors átvitel sokkal fontosabb, mint az esetleges
átviteli hibák javítása. Ha azonban adat- vagy programfájlokat továbbítunk
akkor a pontos átvitel a fontosabb, és nem a gyorsaság.
- A TELJES HOSSZÚSÁG mező a teljes datagram hosszát tartalmazza (fejrész+adat).
A maximális hosszúság 65 536 bájt.
- Az AZONOSÍTÁS mező alapján állapítja meg a célhoszt, hogy egy újonnan
érkezett csomag melyik datagramhoz tartozik. Egy datagram minden egyes darabja
ugyanazzal az Azonosítás mező értékkel rendelkezik.
- Ezután egy nem használt bit, majd két 1-bites mező következik. A DF
mező a Don't Fragment (ne tördelj !) kifejezés rövidítése. Ha ez a bit 1 értékű,
akkor az átjárók nem tördelhetik a datagramot, mert a célállomás képtelen
azt ismét összerakni. Ha a datagram nem vihető keresztül a hálózaton, akkor
vagy kerülő utat kell választani, vagy el kell dobni.
- Az MF mező neve a More Fragments (több darab) rövidítése. A széttördelt
datagramdarabokat jelzi, kivéve az utolsót. A Teljes hosszúság mező mintegy
második ellenőrzésként használható, vajon nem hiányzik-e datagramdarab, és
hogy az egész datagram összeállt-e.
- Ehhez a kapcsolódik a DATAGRAMDARAB-ELTOLÁS mező, ami azt jelöli
ki, hogy az adott darab hol található a datagramban. Minden datagramdarab
hosszúságának, (kivéve az utolsót), 8 bájt egész számú többszörösének kell
lennie, amely az elemi datagramdarab hosszúsága. Mivel e mező 13 bit hosszú,
ezért maximálisan 8192 darabból állhat egy datagram, amelyből a maximális
datagramhossz 8*8192=65 536 bájt.
- Az ÉLETTARTAM mező lényegében egy 8 bites számláló, amely a csomagok
élettartamát tartalmazza másodpercben. Amikor értéke nullává válik, akkor
az adott csomag megsemmisül. Így a maximális élettartam 255 s lehet.
- Amikor a hálózati réteg összerak egy teljes datagramot, tudnia kell, hogy
mit tegyen vele.
- A PROTOKOLL mező kijelöli, hogy a datagram a különféle szállítási
folyamatok közül melyikhez tartozik. A TCP a leggyakoribb választás, de léteznek
egyebek is.
- A FEJRÉSZ ELLENŐRZŐ ÖSSZEGE csak a fejrész ellenőrzésére szolgál.
Egy ilyen ellenőrzőösszeg azért hasznos, mert a fejrész a darabolások miatt
változhat az átjárókban.
- A FORRÁSCÍM és a CÉLCÍM hálózati számot és a hosztszámot adják
meg (ld. később!!!).
- Az OPCIÓK mező rugalmasan alkalmazható biztonsági, forrás általi
forgalomirányítási, hibajelentési, hibakeresési, időpont-megjelölési és egyéb
információs célokra. A mező biztosításával elkerülhető, hogy a fejrészben
levő biteket és mezőket ritkán használt információk számára kelljen lefoglalni.
Összeköttetés-mentes szállítási protokoll: az UDP
Sok alkalmazás használ üzeneteket, amelyek elférnek egyetlen datagramban. Példa
erre a domén nevek kikeresése. Amikor egy felhasználó egy másik rendszerrel
kapcsolatba akar lépni, akkor általában az adott rendszer IP
címe helyett a nevét fogja megadni. Ezt a nevet le kell fordítania IP
címre. Ehhez a név-szolgáltatóhoz kell a kérést tartalmazó üzenetet eljuttatni.
A kérés annyira rövid, hogy biztosan elfér egyetlen datagramban, és a válasz
ugyanilyen rövid. Ilyenkor nincs szükség a TCP teljes bonyolultságára. Ha egy
pár másodpercen belül nem kapunk választ, akkor egyszerűen megismételjük a kérdést.
22. ábra: Az UDP csomagformátuma
A legtöbbet használt ilyen protokoll az UDP (user
datagram protocol — felhasználói datagram protokoll). Hasonlóképpen illeszkedik
a rendszerbe, mint a TCP. A hálózati szoftver az adatok elejére ráilleszti az
UDP fejlécet ugyanúgy, ahogy a TCP fejléc esetében teszi. Az UDP ezek után az
IP-nek adja át a datagramot. Az IP hozzáteszi a saját fejlécét, amibe a TCP
helyett az UDP protokollszámát helyezi el a Protokoll mezőben (lásd IP fejléc).
Az UDP csak portszámokat biztosít, hogy egyszerre több program is használhassa
a protokollt. Az UDP portszámok ugyanúgy használatosak, mint a TCP portszámok.
Az UDP-t használó kiszolgálókhoz is léteznek jól ismert portszámok. Látható,
hogy az UDP fejléc sokkal rövidebb, mint a TCP fejléce.
Az Internet vezérlése: az ICMP protokoll
Az Internet működését az IMP-k és az átjárók felügyelik olyan módon, hogyha
valami gyanús esemény fordul elő, akkor az eseményt az ICMP
(Internet Control Message Protocol - internet vezérlőüzenet protokoll) alapján
jelentik. Megközelítőleg egy tucat ICMP üzenettípus létezik. Minden üzenettípus
IP-csomagba burkolva vándorol a hálózatban. A protokoll az Internet tesztelésére
is használható.
- A DESTINATION UNREACHABLE (cél elérhetetlen) üzenet akkor keletkezik, amikor
a hoszt, vagy egy átjáró nem tudja lokalizálni
a címzettet, vagy amikor egy bebillentett DF bittel rendelkező csomagot egy
közbenső "kis csomagú" hálózat miatt nem lehet kézbesíteni.
- A TIME EXCEEDED (időtúllépés) üzenet küldésére akkor kerül sor, ha egy csomagot
a nullára csökkent számlálója miatt el kell dobni. Ez az esemény tünete lehet
annak, hogy a csomag hurokban kering, hogy súlyos torlódás van, vagy hogy
az időzítés értéke túl kicsire van beállítva.
- A PARAMETER PROBLEM (paraméterprobléma) üzenet azt jelzi, hogy illegális
értéket vett észre valaki egy fejrészmezőben. Ez a probléma a küldő hoszt
IP-szoftverének, vagy egy keresztezett átjáró szoftverének hibájára hívja
fel a figyelmet.
- A SOURCE QUENCH (forráslefojtás) üzenet a túl sok csomagot küldő hosztok
megfékezésére használható. Amikor egy hoszt
egy ilyen üzenetet vesz, akkor adási sebességét csökkentenie kell.
- A REDIRECT (újrairányítás) üzenetet akkor küld egy átjáró, amikor észreveszi,
hogy egy csomag valószínűleg rossz útvonalon halad. Ez segít a forgalomirányításnak
a helyes út megtalálásához.
- Az ECHO REQUEST (visszhangkérés) és ECHO REPLY (visszhangválasz) üzenetekkel
egy adott címzett elérhetőségét és működőképességét lehet megvizsgálni. Az
ECHO üzenet kézhezvételét követően a címzettnek egy ECHO REPLY üzenettel kell
válaszolnia.
- A TIMESTAMP REQUEST (időpontkérés) és TIMESTAMP REPLY (időpontválasz) üzenetek
hasonlóak, csak a válaszüzenetben a kérés megérkezésének és a válasz indulásának
ideje is fel van jegyezve. Ez a szolgáltatás a hálózati teljesítmény mérésére
nyújt lehetőséget.
Ezeken az üzeneteken kívül van még négy másik, amelyek az Internet
címzéssel foglalkoznak, és lehetőséget biztosítanak a hosztok
számára, hogy azonosítsák saját hálózatszámukat, felfedezzék a címzési hibákat:
például kezelni tudják azt az esetet, amikor egyetlen IP-címet több LAN
birtokol.
Forgalomirányítás
Az ARPANET eredetileg az elosztott forgalomirányítási
algoritmust használta. Ez egyrészt néhány csomag tartós hurokba kerülését okozta,
másrészt nem használt alternatív utakat. Mikor a hálózat nagy méretűvé növekedett,
akkor a forgalomirányító táblák kicserélésével előálló forgalom már olyan nagy
volt, hogy akadályozta a normál forgalmat is. Ezért a megváltoztatott jelenlegi
algoritmusban minden egyes IMP belsőleg fenntart
egy adatbázist, amely az egyes vonalakon való késleltetéseket tartalmazza. Erre
az adatbázisra alapozva minden IMP kiszámolja
a közte és az összes többi IMP közötti legrövidebb
utat. A számítás mértékéül a késleltetést használja. Mivel minden egyes IMP
a legrövidebb út algoritmust (majdnem) ugyanarra az adatbázisra alapozva futtatja,
ezért az utak konzisztensek és kevés hurok alakul ki. A forgalom és a topológia
változásaihoz való alkalmazkodás érdekében minden IMP
10 másodperces átlagolási idővel méri vonalain a késleltetést. E mérések eredményét
egy aktuális sorszámmal ellátva minden IMP megkapja.
Az információ köröztetéséhez az IMP-k az elárasztásos
algoritmust használják.