Fizikai Szemle honlap

Tartalomjegyzék

Fizikai Szemle 2005/1. 41.o.

LEVELE ÉRKEZETT

Bagoly Zsolt, Papp Gábor
ELTE Fizika Tanszékcsoport

"Levele érkezett" olvassuk a számítógép képernyőjén. De mi is történt valójában attól kezdve, hogy a feladó nekilátott a levél megírásának, egészen addig, amíg azt elolvassuk?

A feladónak először is tudatnia kell a számítógéppel, hogy levelet szeretne írni. Ehhez vagy az egérrel rákattintunk a levelezőprogram megfelelő ikonjára, vagy begépeljük a parancsot, mely elindítja a levelezőrendszert. Ennek elindítása során a számítógép (pontosabban az operációs rendszer) először megnézi, hogy futtattuk-e nemrég ezt a programot, azaz benn van-e a memóriában. Ha nincs, akkor azt betölti a merevlemezről a memóriába, és elkezdi futtatni.

Akár az egérrel, akár a billentyűzetről indítottuk a programot, valamit csinálunk a számítógép perifériáján, amit annak észre kell vennie.

A modern számítógépek egyszerre sokféle feladatot végeznek. Ezt azonban nem úgy érik el, hogy párhuzamosan hajtják azokat végre, hanem úgynevezett időosztásos módon, azaz egy kis ideig az egyik feladattal foglalkozik, majd a következővel, és így tovább. Az egyszerre egy feladatra fordított idő valóban nagyon kicsi, a másodperc törtrészéig tart. Ezzel lehet biztosítani, hogy az egér vagy a billentyűzet lenyomására elég gyorsan reagáljon a számítógép, és mi emberek - felhasználók - ne is vegyük észre, hogy esetleg közben mást is csinál a gép. Ugyanez a mechanizmus biztosítja azt is, hogy a különböző feladatokhoz különböző fontosságot tudjunk hozzárendelni: a fontosabb feladatok nagyobb időszeleteket kapnak a számítógéptől. Tehát az egyik ilyen feladat dolga, hogy állandóan figyelje, hogy lenyomta-e a felhasználó a billentyűt, mozgatta- e az egeret. Általában ez a célprogramunktól (pl. levelezőrendszer) független program, mely az egér-, illetve a billentyűzeteseményeket eltárolja egy átmeneti tárolóban, ahonnan aztán a célprogram kiolvassa ezt az információt. Érdekes kérdés, hogy miként kerül egy szám a billentyűzet lenyomásából ebbe az átmeneti tárolóba. A billentyűzetek zömének működési alapja egy vezetékekből álló háló, melynek megfelelő vízszintes és függőleges szálait az éppen lenyomott billentyű összeköti, rövidre zárja. Így a billentyűzetben működő processzor egy egyedi kóddal, számpárral jelöli az adott billentyű lenyomását. Ez az úgynevezett billentyűzetkód, amelyből a számítógépen futó billentyűzetfigyelő program létrehozza a lenyomott betű kódját. Ez igen fontos mozzanat, mivel többféle nyelvű billentyűzetet is használhatunk, melyek eltérő billentyűzetkódokat generálhatnak. A billentyűzetfigyelő programnak az a feladata, hogy az adott gombnyomásnak megfelelő információt egységes betűkódra alakítsa át.

Így most a levelezőprogramunk megkapja a billentyűzeten beadott betűket, illetve hasonlóképpen, az egérrel végrehajtott műveleteket. Ahhoz, hogy lássuk is azt, amit gépelünk, a programnak meg kell jelenítenie az eredményt a képernyőn. Az operációs rendszer egy másik programja felelős azért, hogy a kiadott grafikus parancsok eredménye megjelenjen a képernyőn: ez rajzol például egy adott méretű kék téglalapot, ír ki egy betűt vagy villant fel egy püspöklila pontot. Egy másik speciális program, az ablakkezelő gondoskodik arról, hogy a futó programunk kapjon egy ablakot a képernyőn, legyen ennek kerete, és megjelenjenek azok a gombok, amelyek a program bezárását, az ablak kicsinyítését stb. biztosítják - az ablakon belüli területet a program maga kezeli. A levelezőprogram egyszerűen csak kiadja ezeket a grafikus parancsokat ahhoz, hogy a billentyűzeten lenyomott betűk megjelenjenek a képernyőn, a többiről a grafikus alrendszer gondoskodik. Természetesen a levelezőprogramnak is van feladata: többek között ez végzi a levél tartalmának és címzésnek az összeállítását.

Ha már megírtuk a levelet, akkor megadjuk a címzettet, és elküldjük a levelet. Számunkra ez ismét csak egy gomb lenyomása vagy kattintás az egéren, de a számítógép ilyenkor is egész sor műveletet hajt végre. Először is kiszedi a címből a megcímzett gép nevét, majd egy speciális hálózati géptől, a tartománynév-kiszolgálótól megkérdezi, hogy kinek kell küldeni az oda szóló leveleket (a számítástechnikában igen gyakori a "postafiók" használata, amikor más gép kezeli le ki a másiknak érkező levelet). A tartománynév-kiszolgálók egymás közt állandóan frissítik a hálózati információkat, és mindjárt az elérendő gép IP (internet protocol) címét is visszaadják.

Számítógépünk ezután hálózati kapcsolatot létesít a levelezésért felelős géppel, és ezen a kapcsolaton át jelzi a túloldali gépnek, hogy ki óhajt levelet küldeni kinek. A túloldali gép levélkezelő programja ennek alapján eldönti, hogy fogadja-e a levelet: ha igen, akkor gépünk átküldheti magát a levelet is.

Az adatok átvitele a hálózaton darabokban történik: az egymással kapcsolatban álló két végponthoz tartozó gépeken futó hálózati szoftver felszabdalja az adatfolyamot egyforma méretű kicsi csomagokra. Ezeket aztán a hálózati célgépek, az útválasztók (router-ek) adják kézről-kézre az egyik végponttól a másikig, miközben megállapítják azt is, hogy milyen útvonal a pillanatnyilag optimális az egyik géptől a másikig és vissza.

A csomagok egy része elveszhet (pl. kikapcsolják az éppen továbbító útválasztót, megszakad a vonal stb.), de az is lehet, hogy a csomagok megelőzik egymást: éppen ezért a küldő végpont ellátja őket sorszámmal. A túloldali gép minden megérkezett csomagot nyugtáz. Ha a nyugta nem érkezik vissza, számítógépünk újból elküldi a nem nyugtázott csomagot. A túloldali gép feladata, hogy a csomagokat a helyes sorrendbe visszaállítsa, azaz "kicsomagolja". Két gép között a csomagok általában 5-6 útválasztón mennek keresztül, de egy "hálózati mérték" szerint távoli gép esetén ez akár 20-30 is lehet. Az átlag az internet méretétől függ!

A túloldali gép, miután észlelte, hogy az egyik perifériáján - a hálózati kártyán, modemen - információ érkezik, elindítja azt a programot, mely fogadja a hálózaton érkező levelet. Ezek után - beállítástól függően - elvégezhet rajta például egy előfeldolgozást (ahol például megpróbálja eldönteni, hogy szemétről - úgynevezett "spam"-ről - van-e szó, van-e a levélben ismert vírus stb.), és ha értékes/érdekes a levél, kézbesíti a címzett postafiókjába (azaz beleírja egy a merevlemezen található állományba).

A levelek itt gyűlnek a postafiókban, de ha akarjuk, akkor a levelezőprogram bizonyos időközönként (pl. fél perc, vagy 30 perc) megnézi, hogy a legutolsó ellenőrzés óta megváltozott-e a postafiók tartalma, s ha igen, akkor büszkén kiírja a képernyőre, hogy
Levele érkezett