8. fejezet: Ellenőrző kérdések és válaszok 1 - 8

 

  1. Milyen rétegei vannak az Internet hálózatnak, és ez hogyan viszonyul az OSI modellhez? Mi az egyes rétegek feladata?
  2. Mi a TCP protokoll feladata? Milyen információkat tartalmaz a TCP csomag?
  3. Mi az IP protokoll feladata? Milyen információkat tartalmaz a IP csomag?
  4. Ismertesse az Internet címzési rendszerét! Mik azok az A, B, C osztályú címek?
  5. Magyarázza el a domén nevek rendszerét!
  6. Milyen célt szolgál az ICMP protokoll?
  7. Milyen célt szolgál az ARP protokoll? Mit jelent egy csomag “beburkolása”?
  8. Mi az a socket?

 

1. Milyen rétegei vannak az Internet hálózatnak, és ez hogyan viszonyul az OSI modellhez? Mi az egyes rétegek feladata?

TCP/IP és az OSI modell

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).

 

2. Mi a TCP protokoll feladata? Milyen információkat tartalmaz a TCP csomag?

Az Internet szállítási rétege: a TCP

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.

 

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 fenti á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 terminológia 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.

 

3. Mi az IP protokoll feladata? Milyen információkat tartalmaz a IP csomag?

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.

 

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.

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.

 

4. Ismertesse az Internet címzési rendszerét! Mik azok az A, B, C osztályú címek?

A címzési rendszer kialakításánál azt a valóságos tényt vették figyelembe, hogy a címzés legyen hierarchikus: azaz vannak hálózatok, és ezen belül gépek (hosztok). Így célszerű a címet két részre bontani: egy hálózatot azonosító, és ezen belül egy, a gépet azonosító címre. Mivel a cím hossza 32 bit ezért ezt kellett két részre bontani, olyan módon, hogy a nagy hálózatokban lévő sok gépet is meg lehessen címezni. Négy különböző formátum használható, ahogy az alábbi ábrán látható.

 

IP címek

A cím négy bájtját szokásos a közéjük pontokat írva, a bájtok decimális megfelelőjével leírni.

Az első három címforma 128 hálózatot hálózatonként 16 millió hoszttal (A osztályú cím), 16 384 hálózatot 64 K-nyi hoszttal (B osztályú cím), illetve 2 millió hálózatot, (amelyek feltételezhetően LAN-ok), egyenként 254 hoszttal azonosít. Az utolsó előtti címforma (D osztályú cím) többszörös címek (mulicast address) megadását engedélyezi, amellyel egy datagram egy hosztcsoporthoz irányítható. Az utolsó címforma (E) fenntartott.

A címzéseknél a hálózat és hoszt címének szétválasztására cím-maszkokat (netmask) használnak. Alkalmazásakor bitenkénti ÉS műveletet végezve az IP cím és a cím-maszk között, a hálózati cím leválasztására. C osztályú címek esetén ezért a maszk: 255.255.255.0, míg B osztálynál: 255.255.0.0, stb.

A címzésnél bizonyos címtartományok nem használhatók.  

A 127-el kezdődő címek a “loopback” (visszairányítás) címek, nem használhatók a hálózaton kívül, a hálózatok belső tesztelésére használható.

A hoszt címrészbe csak 1-eseket írva lehetséges az adott hálózatban lévő összes hosztnak üzenetet küldeni (broadcast). Például a 195.13.2.255 IP címre küldött üzenetet a 193.13.2 című hálózatban lévő összes gép megkapja.

Ha a hoszt címrésze 0, az a aktuális hálózatot jelöli. Ha a hálózati cím 0, az a aktuális hálózatot jelöli. Például a saját gépről 0.0.0.0 címre küldött üzenet a saját gépre érkezik.

 

5. Magyarázza el a domén nevek rendszerét!

Az Internet használata során két, egymástól akár sok ezer kilométerre lévő számítógép között alakul ki kapcsolat. Nyilvánvalóan ezért minden egyes gépet azonosíthatóvá, címezhetővé kell tenni.

Erre két, egymással egyenértékű módszer áll rendelkezésre. Az elsődleges módszer az amit IP címzésként már megismertünk, míg a másodlagos — a felhasználók által szinte kizárólagosan használt módszer az azonosító domén (domain) nevek rendszere.

Amikor a hálózathoz újabb gép csatlakozik, egy — az adott hálózatnak adott címtartományból — négy tagból (bájtból) álló azonosító számot, Internet címet (IP-address) kap. A címtartományok kiosztását az Internet központi adminisztrációja, az INTERNIC (Internet Network Information Center) végzi. A körzeti központok az adott gépet ezen a számon tartja nyilván. A tényleges címeket általában decimális alakban pl. 193.224.41.1 használják.

A címben szereplő egyes címrészeket ma már nem véletlenszerűen határozzák meg, hanem hierarchikusan felosztott földrajzi terület, domének alapján. Így a cím egyes oktetjei (8 bites csoprtjai) a domént, az ezen belüli aldomént és hosztot, azaz a címzett számítógép helyét jelölik ki. A domén általában egy ország globális hálózati egysége vagy hálózati kategóriája, az aldomén ezen belül egy különálló hálózatrész, a hoszt pedig az adott hálózatrészen belüli felhasználókat kiszolgáló gép azonosító száma.

A felhasználó számára könyebben használható a név alapján történő címzés, ahol a sok számjegyből álló IP cím helyett egy karakterlánc, az FQDN (Fully Qualified Domain Name) használható. Az FQDN, azaz a teljes domén-név, amelyet a DNS (Domain Name System), vagyis a domén-név rendszer szerint képeznek, ugyanúgy hierarchikus felépítésű, mint az IP cím, formailag pedig több, egymástól ponttal elválasztott tagból áll.

Például az alpha1.obuda.kando.hu címben az egyes tagok sorrendben a kiszolgáló gépet, a hosztgépet (egy DEC Alpha munkaállomást), az aldomént azaz hálózati altartományt (obuda.kando), végül pedig a domént, vagyis az adott ország globális hálózati tartományát (hu) határozzák meg. A hálózati altartomány, az aldomén több tagot is tartalmazhat, de akár hiányozhat is a cím domén-név részéből.

A domén-név egyes részeit néha eltérő kifejezéssel adják meg: a hálózati tartomány domén vagy network, az altartomány aldomén vagy subnet, a kiszolgáló gép a hoszt vagy hoszt-address.

A domén-nevek használata az Internet számára némi járulékos munkát ad, hiszen egy adatcsomag továbbítás előtt a hosztcímből meg kell határozni a vele egyenértékű IP címet, és a küldemény hosztcímét ezzel kell helyettesítenie. Az összetartozó IP címeket és hosztcímeket a hosztgép először a helyi címtáblázatban (host table) keresi. Ha a keresés eredménytelen, a hosztgép az Internet valamelyik speciális szolgáltató-gépéhez, a névszolgáltatóhoz (Name Server-hez) fordul, amely az Internet gépeinek adatait tartalmazó, szabályos időközönként frissített sokszor hatalmas címtáblázatot kezeli. A címtáblázatokban a host.aldomén.domén alakú hostcímhez a vele egyenértékű IP cím, esetleg hivatkozási (alias) alak is tartozhat.

Az IP cím kérésekor azt is közölni kell a névszolgáltatóval, hogy az mire kell. Ha levelezéshez kérjük, akkor a névszolgáltató a névhez tartozó MX (Mail Exchange) adatrekordot adja vissza, különben a tényleges IP címet.

Az előbbi példa szerint az alpha1.obuda.kando.hu cím-meghatározása a következő: A gép Internet címének meghatározásához 4 potenciális kiszolgálót kellene megkérdezni. Először egy központi kiszolgálótól kellene megtudakolni, hogy hol található az hu kiszolgáló, amely nem más, mint a hálózatba kapcsolt magyar internet helyek nyilvántartása. A gyökérként szereplő kiszolgáló több hu kiszolgáló nevét és Internet címét adná meg. (Minden szinten több ilyen névkiszolgáló van, hogy az esetleges meghibásodások ne okozzanak fennakadást.) A következő feladat lenne az hu kiszolgáló lekérdezése a kando névkiszolgálójáról. Itt is több kiszolgáló nevét és Internet címét kapnánk meg (az egyik közülük a SZTAKI). Ezek közül általában nem mindegyik található az intézmény területén (egy esetleges áramszünet fellépte miatt).

Ez után a kando-tól kérdeznénk le az óbudai telephely (obuda) névkiszolgálójának adatait, majd végül az ottani névkiszolgálók egyike adná meg az alpha1 gép adatait. A végső eredmény a alpha1.obuda.kando.hu gép Internet címe lenne. A fenti szintek mindegyike egy tartományt (domain) jelöl. A teljes alpha1.obuda.kando.hu név egy tartománynév (domain name). (Ugyanígy a felsőbb tartományok nevei is tartománynevek: obuda.kando.hu, kando.hu, és hu)

Az esetek nagy többségében szerencsére nem kell a fenti lépések mindegyikét végrehajtani. A legfelső kiszolgáló (gyökér) ugyanis egyben a legfelső szinten lévő tartományok (pl. hu) névkiszolgálójaként is szerepel. Tehát a gyökér kiszolgáló felé irányuló egyetlen kérdéssel a MIT névkiszolgálójához lehet eljutni. Az alkalmazott szoftverek pedig a már feltett kérdésekre kapott válaszokra emlékeznek, az így megkapott domén név és a hozzá tartozó IP cím eltárolódik. Persze minden ilyen információnak van egy megfelelő élettartama, ami tipikusan pár napnak felel meg. Az élettartam lejárta után az információkat fel kell frissíteni, amivel az esetleges változások is nyomon követhetők.

Az IP cím — hosztcím átalakítást a TCP/IP automatikusan végzi, de a host operációs rendszer parancs kiadásával mi is lekérdezhetjük egy ismert felhasználó számát.

Az előbbiek alapján már nyilvánvaló, hogy az egyes hosztgépekhez nemcsak IP cím vagy az azzal egyenértékű domén cím tartozik, hanem a hosztgépek a rajtuk futó alkalmazások eléréséhez tartozó portcímet (Application Selection Address) is használnak. Ezért a címeket ki kell egészíteni az alkalmazás elérésére szolgáló portcímmel is:

hostcím:portcím

Míg az egyes hosztokat a hosztcímük egyértelműen meghatározzák, addig a hosztokat több felhasználó használja, tehát a hozzájuk kapcsolódó felhasználókat is meg kell különböztetnünk egymástól. Erre azok felhasználói neve (login- vagy felhasználónév), vagyis az adott hoszton egyedi azonosító-név szolgál.

Egy személy Internet elérhető levelezési (E-mail) címe tehát két főrészből áll, és a következő alakú:

felhasználónév@host.aldomén.domén

 

6. Milyen célt szolgál 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.

 

7. Milyen célt szolgál az ARP protokoll? Mit jelent egy csomag “beburkolása”?

Jelenleg a legtöbb hálózat fizikai és adatkapcsolati szinten Ethernet kártyákat használ. Mivel az Ethernet keretnek saját fejléce van, saját egyedi, 48 bites címzéssel rendelkezik, ezért az IP csomagokat ilyen hálózaton közvetlenül nem lehet átvinni, be kell csomagolni. Minden Ethernet keretnek egy 14 oktetes fejléce van, amely a forrás- és a célgép Ethernet címét, valamint egy típuskódot tartalmaz. A hálózaton lévő gépek csak az olyan kereteket figyelik, amelyek célmezőjében a saját Ethernet címüket, vagy a mindenkinek szóló körözvénycímet találnak. Minden számítógépnek van egy táblázata, amelyben felsorolja, hogy milyen Ethernet cím milyen Internet címnek felel meg. Ennek a táblázatnak a karbantartását a rendszer egy protokoll, az ARP (Address Resolution Protocol - címleképezési protokoll) segítségével végzi.

Egy alhálózatban, amelyik Ethernet összeköttetést használ, tegyük fel, hogy a 193.18.24.196 IP című hosztról a 193.18.24.75 hoszttal szeretnénk kapcsolatba lépni. A kezdeményező 193.18.24.196 című hoszt megnézi, hogy szerepel-e a saját ARP táblázatában a 193.18.24.75 címhez tartozó Ethernet cím bejegyzés. Ha igen, akkor a datagramhoz egy Ethernet fejlécet csatol, és elküldi. Ha azonban ilyen bejegyzés az ARP táblázatban nincsen, akkor a csomagot nem lehet elküldeni, hiszen nincs meg az Ethernet cím.

Ekkor lép működésbe az ARP protokoll. A 193.18.24.196 hoszt egy “a 193.18.24.75 Ethernet cím kellene” tartalmú ARP kérést ad ki az Ethernet hálózatra. Az adott hálózaton minden hoszt figyeli az ARP kéréseket. Ha egy hoszt egy rá vonatkozó ARP kérést kap, akkor válaszol rá.

Ebben az esetben tehát a 193.18.24.75 hallja a kérést, és egy ARP üzenetet küld válaszul a kérdezőnek, amelyben megadja a 193.18.24.75 IP című gépben lévő kártya Ethernet címét, pl.: 12:3:44:12:52:11. A kérést adó rendszer a kapott információt bejegyzi az ARP táblázatába.

Abban az esetben, ha a kért IP cím nincs a közös Ethernet hálózatba kapcsolt hosztok között, akkor a külvilág felé kapcsolatot biztosító átjáróban (routerben) lévő Ethernet kártyacímet felhasználva, oda kell küldeni az adott keretet.

A fentiekből nyilvánvaló, hogy az ARP kéréseket tartalmazó kereteket üzenetszórás formájában kell a hálózatra kiadni. A kérés megfogalmazásához a csupa egyes bitből álló FF:FF:FF:FF:FF:FF Ethernet címet használják. Megállapodás szerint az Ethernet alapú hálózatok minden gépe figyeli az ilyen címre küldött kereteket. Ez azt jelenti, hogy az ARP kérést is látja mindegyikük. Minden egyes gép ellenőrzi, hogy a kérés rá vonatkozik-e. Ha igen, akkor választ küld. Ha nem, akkor egyszerűen nem veszi figyelembe. Az üzenetszórást jelző IP című csomagokat (pl. 255.255.255.255 vagy 193.18.24.255) is csupa egyes bitből álló Ethernet címre kell küldeni.

A címek mellett a fejlécben szerepel még egy a használt protokollt azonosító típuskód is. Ennek segítségével ugyanazon a hálózaton többfajta protokollkészlet használata is lehetséges: TCP/IP, DECnet, Xerox, NS stb... Ezen protokollok mindegyike különböző értéket helyez a típus mezőbe. A csomag végén az ellenőrzőösszeg található, amely az egész csomagra vonatkozik. Az Ethernet keret tehát így néz ki:

  

Ethernet IP keret

Az ilyen módon “burkolt” (encapsuleted) keretek megérkezése után az egyes fejléceket leszedi a megfelelő protokoll. Az Ethernet interfész az Ethernet fejlécet és az Ethernet ellenőrzőösszeget szedi le. Ezek után ellenőrzi a protokollra utaló típuskódot. Ha az IP-re mutat, akkor a datagramot átadja az IP-nek, amely a protokoll mező tartalmát megvizsgálja. Itt általában azt találja, hogy TCP, ezért a datagramot a TCP-nek adja át. A TCP a Sorszám mező tartalma és egyéb információk alapján állítja össze az eredeti állományt.

Létezik az ARP protokoll fordítottja, a RARP (Reverse Address Resolution Protocol) amely olyan táblázattal dolgozik, amelyben az van felsorolva, hogy milyen IP cím milyen Ethernet címnek felel meg.

A lényeg összefoglalása:

Az információ datagramban terjed. A datagram (csomag) az üzenetben elküldött adatok összessége. Minden datagram a hálózatban egyedi módon terjed. Ezen csomagok továbbítására két protokoll, a TCP és az IP szolgál.

A TCP (Transmission Control Protocol) végzi az üzenetek datagramokra darabolását, míg a másik oldalon az összerakást. Kezeli az esetleges elvesző csomagok újrakérését és a sorrendváltozást. Az IP (Internet Prootocol) az egyedi datagramok továbbításáért felelős.

Pédául ha egy adathalmazt akarunk a hálózaton átvinni:

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

a TCP ezt datagramokká darabolja:

xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx

a TCP minden datagram elejére egy fejlécet rak (T=FEJ(TCP)) ami tartalmazza a forrás és a célprocessz port címét a sorozatszámot, és az ellenőrző összeget.

Txxx Txxx Txxx Txxx Txxx txxx Txxx

ezt adja tovább az IP-nek a cél Internet címével együtt. Az IP ebből és a hely Internet címből újabb fejlécet képez (I=FEJ(IP)) :

ITxxx ITxxx ITxxx ITxxx ITxxx ITxxx ITxxx

A hálózat elérési szint, (amely lényegében a fizikai és adatkapcsolati szint) különböző lehet — pl. soros vonal, X25, vagy Ethernet — keretekkel dolgozik. Az Ethernet saját fejlécét (a két ETHERNET címmel) és C ellenőrző összegét illeszti EIT(FEJ(F)):

EITxxxC EITxxxC EITxxxC EITxxxC EITxxxC EITxxxC

A fogadó oldal ezeket sorban egymásután leszedi, ha IP típusú, akkor az IP-nek adja tovább, ha TCP típusú, akkor a TCP-nek, ami a sorozatszám alapján visszaállítja az eredeti adatfolyamot.

 

8. Mi az a socket?

Mivel az Internetben sok gépen a UNIX-ot használják operációs rendszerként, ezért érdemes röviden összefoglalni, hogy ez az operációs rendszer hogyan támogatja a hálózati lehetőségeket. A TCP/IP-t protokollt egy primitívhalmazon keresztül lehet elérni, amelyeket rendszerhívásokként valósítottak meg (implementáltak). Ezen keresztül érheti el a felhasználó a szállítási szolgálatokat. A főbb rendszerhívásokat a következő táblázatban soroltuk fel:

 

NÉV

FUNKCIÓ

Socket

Létrehoz egy adott típusú TSAP-ot

Bind

ASCII nevet rendel egy korábban létrehozott sockethez

Listen

Létrehoz sort, amely a bejövő összeköttetés-kéréseket tárolja

Accept

Eltávolít a sorból, vagy vár egy összeköttetés-kérést

Connect

Összeköttetést kezdeményez egy távoli sockettel

Shutdown

Lezárja az összeköttetést a socketen

Send

Üzenetet küld el egy socketen keresztül

Recv

Üzenetet vesz egy adott végponton

Select

Megvizsgál egy sockethalmazt, hogy készek-e olvasásra vagy írásra

 

A szolgálatinterfész központi jelentőségű fogalma a socket (foglalat), amely hasonló az OSI TSAP-jához. A socketek végpontok, amelyekhez alulról (az operációs rendszer felől) az összeköttetések, míg felülről (a felhasználó felől) a folyamatok kapcsolódnak.

A socket rendszerhívás létrehoz egy socketet (egy operációs rendszeren belüli adatstruktúrát): a hívások paraméterei kijelölik a címformátumot (pl. egy Internet nevet), a socket típust (pl. összeköttetés-alapú vagy összeköttetés-mentes), valamint a protokollt (pl. TCP/IP).

Miután egy socket már létrejött, a bejövő összeköttetés kérések tárolásához puffer allokálható. Ezt a listen hívással lehet végrehajtani. Egy listen hívásban megadott socket passzív végponttá válik, amely a kívülről hozzá érkező összeköttetés-kérésekre várakozik.

Azért, hogy egy távoli felhasználó összeköttetés kérést küldhessen egy socketnek, a socketeknek névvel (TSAP címmel) kell rendelkezniük. A socketekhez neveket a bind hívással rendelhetünk. Ezután a neveket valamilyen módon ismertté kell tenni, és a távoli felhasználók máris megcímezhetik azokat.

Az accept hívással lehet egy felhasználói folyamatot egy sockethez hozzárendelni, és passzív módon összeköttetés kérésekre várakoztatni. Ha egy kérés érkezik, akkor a hívás kiveszi azt a sorából; egyébként a folyamat blokkolódni fog addig, amíg egy kérés be nem érkezik (kivéve, ha a socketet nem-blokkolósnak specifikálták).

Amikor egy kérés beérkezik, egy új socket jön létre és válik az összeköttetés végpontjává. Így egyetlen port több összeköttetés létesítésére is használható.

Távoli sockethez való összeköttetés létesítéshez, a folyamatoknak connect hívást kell kiadniuk, amelyben paraméterként a helyi és a távoli socketet kell kijelölniük. Ez a hívás összeköttetést létesít a két socket között.

Ha a socketek összeköttetés-mentes típusúak, akkor az operációs rendszer e hívás hatására feljegyzi a kettő közti kapcsolatot, és így a lokális socketen a későbbiekben kiadott send hívások távoli socket felé tartó üzeneteket eredményeznek.

Egy összeköttetés lebontását, vagy egy socket-socket pár közötti összerendelés megszüntetését a shutdown hívás használatával lehet elérni. Egy duplex összeköttetés két irányát külön-külön is le lehet zárni.

A send és recv hívások üzenetek küldésére és vételére használhatók. Ezen alaphívásoknak több változata is létezik.

Végül a select rendszerhívás olyan folyamatok számára hasznos, amelyeknek több létesített összeköttetésük van. Sokszor előfordul, hogy egy ilyen folyamatnak minden egyes olyan socketre recv hívást kell kiadnia, amelyen üzenet érkezett számára. Sajnos azonban nem tudja, hogy melyek ezek a socketek. Ha véletlenszerűen választja ki azokat, akkor előfordulhat, hogy blokkolódik egy olyan végponton, ahol nincs is üzenet, míg más socketeken üzenetek várják. A select hívás lehetővé teszi a folyamatnak, hogy addig blokkolódjon, amíg a paraméterként magadott socket-halmazon sikeres olvasási vagy írási kisérlet végrehajtható nem lesz.

 

8. fejezet: Ellenőrző kérdések és válaszok 9 - 15

8. fejezet: Ellenőrző kérdések és válaszok 16 - 22


Ábrajegyzék

Bevezetés

1.fejezet: A hálózatok célja, alkalmazása, alapfogalmak

2.fejezet: Fizikai átviteli jellemzők és módszerek

3.fejezet: Közeg-hozzáférési módszerek

4.fejezet: Adatkapcsolati protokollok

5.fejezet: Hálózati réteg

6.fejezet: A felsőbb rétegek

7.fejezet: Lokális hálózatok

8.fejezet: A TCP/IP protokoll és az Internet

9. fejezet: Szótár

Tárgymutató