Hetedik lecke

Verzió: 0.99

Az Internet hálózat felépítése

A világ számítógépeit összekötő hálózatok vezetékei keresztül-kasul átszelik az egész földgolyót. Több világméretű hálózat létezik, mi a továbbiakban az Internet hálózattal fogunk foglalkozni, mivel az oktatási intézményekben ez a legelterjedtebb.

Minden hálózatba kötött gépnek van egy neve; ez az un. node name*, például: woland.iit.uni-miskolc.hu. A névből általában következtetni lehet a gépet működtető intézetre és annak helyére (iit = Institute of Information Technology, uni-miskolc = Miskolci Egyetem, hu = Magyarország). Minden gépnek van egy telefonszám-szerű száma is, amit IP számnak hívunk. Ez valahogy így néz ki: 193.6.4.30 (a pontokkal elválasztott számok nagyjából megfelelnek a node név egyes elemeinek.) A hálózat bármelyik gépére be tudunk jelentkezni "fel tudjuk hívni" a telnet parancs segítségével (dolgozni természetesen csak akkor tudunk rajta, ha van username-ünk és érvényes jelszavunk.) A hívás fizikai szinten az IP szám segítségével történik. Az egyszerűség kedvéért -és hogy ne kelljen megerőltetni a szám-memóriánkat- a telnet parancs node név alapján is fel tud hívni egy gépet. Ilyenkor előbb kikeresi a "telefonkönyvből" a hívott gép IP számát; ez a telefonköny az ún. "domain name server", rövidítve DNS.

A gépek közötti kapcsolat a TCP/IP protokoll segítségével történik. Erről annyit kell tudnunk, hogy az adatokat nem egyszerre küldik el, hanem kis csomagokra (packet) bontják, majd ezeket egymás után elindítják a célállomás felé. Ha egy csomag útközben elvész, akkor elég csak a hiányzó csomagot újra küldeni. Ezért szokták az Internetet "csomagkapcsolt hálózat" (packet switching network) néven is emlegetni.

Az Interneten belül a legkülönfélébb szolgáltatások érhetők el, ezek közül a három legfontosabb az elektronikus levelezés, a fájl átvitel és az online kapcsolat (talk). Feltételezzük, hogy az elektronikus levelezést már mindenki ismeri,* a fájl átvitelről és a talk-ról pedig e fejezet későbbi részeiben lesz szó.

Információk a hálózat gépeiről és felhasználóiról

Valamennyi parancs közül talán a finger adja a legtöbb információt. Paraméterek nélkül kiadva megmutatja hogy egy hoston rajtunk kívül ki van még bejelentkezve. Bármelyik hostot le lehet kérdezni a következő módon (a host név helyett írhatunk IP számot is):
finger @host_név
Ha valakinek nem ismerjük az username-jét, de tudjuk a nevét, a finger segítségével ki tudjuk deríteni. Írjuk be például:
finger Laszlo
Erre valami ilyen választ kapunk (legalább is Miskolcon):
Login name: kovacs    		In real life: Kovacs Laszlo
Office: IIT
Directory: /usr/people/users/kovacs 	Shell: /bin/tcsh
Never logged in.
No Plan.
Login name: cser      			In real life: Cser Laszlo
Office: IIT
Directory: /usr/people/users/cser   	Shell: /bin/tcsh
Never logged in.
No Plan.
Login name: szakal    			In real life: Szakal Laszlo
Office: IIT,  x2106
Directory: /usr/people/users/szakal 	Shell: /bin/tcsh
Last login at Tue Aug 31 10:05 on /dev/tty
Plan:
Don't marry, be happy!
Amint látjuk, egészen sok információt kaptunk. A Login name: után szerepel az illető bejelentkezési neve (username). Az In real life: a felhasználó valódi nevét adja meg, az Office: a tanszéket, ahol dolgozik és a telefonszámot. Megtudjuk azt is, hogy hol található a felhasználó munkakönyvtára (Directory:), milyen parancsértelmezőt (Shell:) használ, mikor és melyik terminálról volt utoljára bejelentkezve (Last login...). Ha itt a "Never logged in" üzenet szerepel, az illető még soha nem volt bejelentkezve. Ha azt látjuk hogy "On since..." akkor a felhasználó jelenleg is a rendszerben tartózkodik.

Megjegyzés: A Last login... azt mondja meg, hogy a felhasználó az adott hoston mikor járt utoljára. Ha több host van összekapcsolva úgy, hogy a jelszó mindegyikre érvényes, akkor előfordulhat, hogy a felhasználó egy későbbi időpontban egy másik hostra is bejelentkezett. Ezt csak úgy tudjuk ellenőrizni ha sorban valamennyi hostot végignézzük. A levelekről adott információkra ez nem vonatkozik, mivel az összekapcsolt hostokon egy usernek csak egyetlen postafiókja van.

Bizonyos rendszerek (például a SUN) azt is elárulják, hogy a felhasználó mikor kapott utoljára levelet és mikor olvasta utoljára a leveleit. No unread mail - nincs elolvasatlan levél, New mail received at...- új levél érkezett... Mail last read at...- az utolsó levélolvasás időpontja.

A finger egy további bájos tulajdonsággal is rendelkezik: ha a kiindulási könyvtárunkban létrehozunk egy .plan és egy .project fájlt, akkor a finger a Plan: és Project: címszavak után ezek tartalmát is megjeleníti. Ha valamit közölni szeretnénk a rólunk érdeklődő felhasználókkal, azt e két fájl valamelyikébe kell beírnunk. (A .plan fájl egy életszagú alkalmazását láthatjuk az előző példán.)

A fingerhez hasonló a who parancs; ez valamivel szűkszavúbb:

varga         ttyq0        Sep  3 21:32
szabo         ttyq1        Sep  6 09:49
kovacs        ttyq3        Sep  6 09:32
lengyel       ttyq5        Sep  6 11:04
A w parancs viszont azt is megmutatja, hogy a felhasználók éppen min dolgoznak:
User	tty     from	what
varga	q0	9:51am	-tcsh
kovacs	q2	9:17am	pine
lengyel	q3	9:27am	xwsh -name winterm -na
A listából megállapítható, hogy a varga username-ű felhasználó a q0 nevű terminálról jelentkezett be tíz óra előtt kilenc perccel és jelenleg a parancsértelmező programot futtatja (command shell), azaz a monitorán a UNIX prompt látszik (%). kovacs a pine levelezőprogramon dolgozik, lengyel pedig a winterm nevű programot futtatja, ami nem más mint egy grafikus munkaállomáson használható shell ablak. (A fenti lista némileg egyszerűsített, a valóságos néhány további adatot is tartalmaz.)

Az rusers nem csak a mi hostunkra bejelentkezett felhasználó username-jét mutatja meg, hanem a hálózat azonos alegységén (szegmensén) lévő valamennyi gépet végignézi:

ind03.iit.uni-miskolc.hu         cser
ind02.iit.uni-miskolc.hu         toth toth toth
indvd.iit.uni-miskolc.hu         wagner szakal vadasz
ind04.iit.uni-miskolc.hu         stsmork
zeus.iit.uni-miskolc.hu          vadasz
indkl.iit.uni-miskolc.hu         kovacs
Megjegyzés: A parancs természetesen nem a világ összes gépét nézi végig, hanem csak az azonos szegmensben lévőket. Általában 5 - 20 gép van egy szegmensben; ennél több gép esetén a művelet akár percekig is eltarthat! (Ilyenkor a <Ctrl-c> leütésével tudjuk megállítani a parancsot.)

Amint látjuk, egy hostra több felhasználó is bejelentkezhet egy időben. Sőt, ugyanaz a felhasználó bejelentkezhet ugyanarra a hostra több terminálról is.

Bármelyik hostról át tudunk jelentkezni bármely másikra, az rlogin paranccsal:

rlogin host_név
A rendszer ekkor ismét megkérdezi a jelszónkat, majd átjelentkezik a megadott hostra, amit a megváltozott promptból is láthatunk.

A last parancs megadja az utolsó néhány száz bejelentkezés tényét. Ha csak egy felhasználó adataira vagyunk kíváncsiak, akkor azt a következő módon tudhatjuk meg (tegyük fel, hogy a keresett felhasználó username-je winnie):

last winnie

Bejelentkezés egy távoli gépre

Erre szolgál a már említett telnet parancs. A telnettel történő bejelentkezést hívják "interaktív login"-nak - erre utal a bizonyos rendszereken belépéskor megjelenő "last interactive login" dátum és időpont. Ha például a piglet.forest.edu gépet akarjuk felhívni, akkor adjuk ki a
telnet piglet.forest.edu
Ha a parancs hibát jelez, akkor valószínűleg nem találja a telefonkönyvben a hívott gép IP számát. Ha tudjuk fejből az IP számot, azt is megadhatjuk a node név helyett. Ha minden jól megy, a vonal terheltségétől függően hosszabb-rövidebb várakozás után valami ilyesmi jelenik meg:
Trying piglet.forest.edu...
Connected to 19.54.285.892.
Escape character is '^]'.

login:
Megjegyzés: A piglet.forest.edu nevű gép a valóságban nem létezik, ezért senki ne próbálja felhívni. A lecke végén találunk néhány igazi nevet és IP számot, amelyeken nyugodtan gyakorolhatunk.

Az Escape character is '^]'. annyit tesz, hogy a kapcsolatot bármikor megszakíthatjuk a Ctrl és ] billentyűk együttes lenyomásával. Ilyenkor nem a Unix prompthoz jutunk vissza, hanem a telnet parancs promtjához:

telnet>
Ha újra be akarunk kapcsolódni, akkor írjuk be a connect parancsot, egyébként pedig a quit parancsot. A további lehetőségekről a ? parancs ad rövid felvilágosítást.

Fájlok átvitele két gép között

Ha az ftp parancs segítségével jelentkezünk be egy távoli (remote) gépről, akkor fájlokat tudunk mozgatni a távoli és a helyi (local) gép között. Jegyezzük meg, hogy mindig az a helyi (local) gép, amelyiken elindítottuk az ftp programot, és az a távoli (remote), amelyikre bejelentkeztünk. Az ftp bejelentkezést hívják nem interaktív loginnak (non interactive login). A legtöbb gépre be lehet jelentkezni nem interaktívan, feltéve hogy az adott gépre van jelszavunk. Egyes gépeken van egy különleges username, az anonymous nevű, amelynek nincs jelszava és így bárki bejelentkezhet rá. (Jelszó helyett felkér minket, hogy adjuk meg az e-mail címünket: ezt illik megadni, de bármit beírhatunk.) Ha bejutottunk a gépre, a get és put parancsok segítségével fájlokat hozhatunk el, illetve vihetünk fel a távoli gépre.

Tegyük fel, hogy az előbb már említett (fiktív) piglet.forest.edu gépen van anonymous ftp szolgáltatás.* A bejelentkezés a következőképpen történik:

orlando% ftp piglet.forest.edu
Connected to piglet.forest.edu.
220 cica FTP server (Version wu-2.1c(1) Mon Oct 18 10:56:22 EST 1993) ready.
Name (piglet.forest.edu:stsmork): anonymous
331 Guest login ok, send your complete e-mail address as password.
Password:
230-**
230-**  You have reached piglet.forest.edu [123.789.290.287] at 
230-**  the Center for Innovative Computer Applications at 
230-**
. .
. .
. .
Itt további információk olvashatók, majd megjelenik az ftp program promptja:
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
Az itt kiadható legeslegfontosabb parancsok:
binary
Bináris átvitelt állít be (CR/LF konverzió kikapcsolva).

ascii
ASCII text átvitelt állít be (CR/LF konverzió bekapcsolva).

hash
Az átvitel során minden átvitt egy kilobyte után kiír egy # jelet.

put fájlnév
Egy fájlt átmásol a lokális gépről a távoli gépre.

get fájlnév
Egy fájt átmásol a távoli gépről a lokális gépre.

bye
Kilép az ftp programból.
További nagyon fontos parancsok:
cd
Alkönyvárat vált a távoli gépen.

lcd
Alkönytárat vált a lokális gépen.

ls
Kilistázza az aktuális alkönyvtárat a távoli gépen.

pwd
Kiírja a távoli gép aktuális alkönytárát.

?
Kilistázza az ftp program parancsait.

help parancs
Rövid ismertetést ad a parancs működéséről.

Most belépünk a pub alkönyvtárba, beállítjuk az átvitel módját binárisra, bekapcsoljuk az átvitel jelző kereszteket, elhozunk egy fájlt, végül pedig kilépünk az ftp programból.

ftp> cd pub
250 CWD command successful.
ftp> binary
200 Type set to I.
ftp> hash
Hash mark printing on (1024 bytes/hash mark).
ftp> get
(remote-file) Where.to.find.Winnie
(local-file) winnie.txt
local: where.txt remote: Where.to.find.Winnie
200 PORT command successful.
150 Opening BINARY mode data connection for Where.to.find.Winnie (6742 bytes)
######
226 Transfer complete.
6742 bytes received in 25.82 seconds (0.25 Kbytes/s)
ftp> bye
221 Goodbye.
orlando%
Az ftp-vel tehát bármely két gép között lehet fájlokat mozgatni, ha rendelkezünk a megfelelő jogosultságokkal (jelszavakkal). Az ftp egy különleges alkalmazásaként nyilvános adatbázisokból jelszó nélkül lehet freeware programokat letölteni.

Figyelem! A fájltranszfer művelet nagy terhelést jelent a hálózatnak, ezért a nyilvános adatbázisok felderítését és programok letöltését lehetőleg este vagy éjszaka* végezzük!

Valós idejű kapcsolat két felhasználó között

Bármelyik bejelentkezve lévő felhasználó képernyőjére üzenetet tudunk küldeni a write parancs segítségével.

write username@host_név

Ehhez nyilván tudnunk kell az illető felhasználó username-jét és azt hogy éppen melyik hoston van bejelentkezve. Ha ugyanazon a hoston van mint mi, akkor a @ jel és az utána megadott host_név elhagyható.

Miután kiadtuk a parancsot, nem történik semmi. (Mint tudjuk, ez a Unixnál azt jelenti, hogy minden rendben.) Gépeljük be az üzenetet, a sorok végén üssük le az enter-t, majd -ha befejeztük az üzenetet- üssük le a <Ctrl-d> billentyűkombinációt. A begépelt szöveg erre megjelenik a megcímzett felhasználó termináljának képernyőjén, függetlenül attól hogy ott éppen mi van. Ha tehát a címzett éppen dolgozik valamin, akkor a képernyőjének a közepén egyszer csak megjelenik az üzenetünk (kivéve ha grafikus felhasználói felülettel dolgozik, ilyenkor egy ablakban jelenik meg a szöveg).

A másik felhasználó hasonló módon válaszolhat, de ha hosszabb beszélgetésbe akarunk kezdeni valakivel, akkor jobb, ha a talk parancsot használjuk. Ez oly módon köti össze a két gépet, hogy amit az egyik felhasználó begépel a billentyűzetén, az rögtön megjelenik a másik felhasználó monitorán. Így "beszélgetni" lehet, bár a párbeszéd sebességének határt szab a társalgó felek gépírás tudása. A parancsot így kell kiadnunk:

talk hívott_fél_username-je@hívott_fél_hostjának_neve
Ha beszélgetőpartnerünk velünk egy hoston van bejelentkezve, akkor a @ és a host_név elhagyható. A parancs kiadása után azonnal letörlődik a képernyő. Középen megjelenik egy szaggatott vonal, a felső sorban pedig egy üzenet ami arról tájékoztat hogy a rendszer próbálja felépíteni a kapcsolatot. A hívott fél képernyőjén ekkor megjelenik egy üzenet, hogy valaki talk-olni (beszélgetni) akar vele. A kapcsolat létrejöttéhez a hívott félnek is ki kell adnia a talk parancsot, a következő módon:
talk hívó_fél_username-je@hívó_fél_hostjának_neve
Ha mindketten begépelték a helyes parancsokat, a képernyő felső sorában megjelenik a [Connection established] üzenet. Ez azt jelenti, hogy a kapcsolat felépült, kezdhetünk "beszélgetni". Amit mi írunk be, az a képernyő felső felén jelenik meg, a szaggatott vonal felett; partnerünk szövege pedig a vonal alatt. Ha be akarjuk fejezni a beszélgetést, üssük le a <Ctrl-c> billentyűkombinációt.

Megjegyzés: Ha valamilyen okból kifolyólag azt szeretnénk, hogy mások ne tudjanak velünk talkoni, vagy a write paranccsal üzenetet küldeni a képernyőnkre, akkor a mesg paranccsal letilthatjuk az üzenetek fogadását.

orlando% mesg n
E parancs letiltja az üzenetek fogadását, a mesg y pedig újra lehetővé teszi.

Egyéb hálózati segédprogramok

A Unix számos további hálózattal kapcsolatos segédeszközt is biztosít. Ilyen például a ping program (az /usr/etc vagy az /etc alkönyvtárban található) amely két számítógép közötti adatátvitel sebességét méri. (Csomagokat küld a másik gépnek és méri, hogy a csomagok mennyi idő alatt teszik meg az oda-vissza utat, valamint számolja, hogy hány csomag vész el.)

Feladatok

  1. A last és a tail segítségével írassuk ki a képernyőre két legrégebbi bejelentkezésünkről tárolt adatokat! (Használjuk a Unix operációs rendszer "cső" szolgáltatását!)

  2. A telnet program segítségével hívjuk fel az alábbi gépek valamelyikét, attól függően, hogy földrajzilag melyikhez vagyunk legközelebb! (Ha a telnet parancsunk név alapján nem ismeri fel a gépet, akkor próbálkozzunk az IP számmal.)
    mars.sztaki.hu           192.84.225.92  Magyarország
    consultant.micro.umn.edu 134.84.132.4   Észak-Amerika
    gopher.uiuc.edu          128.174.33.160 Észak-Amerika
    gopher.sunet.se          192.36.125.2   Észak-Európa
    gopher.chalmers.se       129.16.221.40  Svédország
    tolten.puc.cl            146.155.1.16D  él-Amerika
    ecnet.ec                 157.100.45.2   Ecuador
    
    Jelentkezzünk be gopher néven, ekkor a gép nem fog jelszót kérni tőlünk. Miután bejutottunk, egy világméretű információs rendszerben találjuk magunkat, ahol számtalan különböző témáról olvashatunk cikkeket. Az anyagok hierarchikusan vannak tárolva, a menükből almenük nyílnak, emelyekből újabb almenük nyílnak és így tovább. A menüpontok között a kurzormozgató nyilakkal mozoghatunk, belépni egy menübe, vagy megnézni egy dokumentumot pedig az enter leütésével lehet.

  3. Lépjünk be az ftp.cica.indiana.edu nyilvános adatbázisba és nézzünk körül az alkönyvtárakban, hátha találunk minket érdeklő programot! Ha Magyarországról próbálkozunk,* akkor a novell.aszi.sztaki.hu gépet hívjuk az előbbi helyett!!!
    (Megjegyzés: minden alkönyvtárban van egy index nevű fájl, ez tartalmazza az adott alkönyvtárban lévő fájlok neveit és egy-egy mondatban a feladatukat.)

  4. Nézzük meg, hogy ki van bejelenkezve a gépen; ha látunk valakit akit személyesen is ismerünk, próbáljunk meg kapcsolatba lépni vele a talk parancs segítségével!

  5. Készítsünk .plan vagy .project fájlt magunknak! (Lehetőleg a vi editorral, hogy egy kicsit azt is gyakoroljuk.)


*************************************************************************
*=                                                                     =*
*=                           SZERZOI JOGOK                             =*
*=                                                                     =*
*=   Ez  a dokumentum a Unix  operacios  rendszer  es a szamitogepes   =*
*=   halozatok elterjedeset  kivanja  elosegiteni, ezert dijmentesen   =*
*=   terjesztheto.  Nem szabad azonban a terjesztes soran a szoveget   =*
*=   megvaltoztatni,  barmilyen  modon  megcsonkitani  es a  szerzoi   =*
*=   jogokra vonatkozo megjegyzest eltavolitani!  Sem  a dokumentum,   =*
*=   sem annak barmely resze nem hasznalhato fel segedanyagkent vagy   =*
*=   tankonyvkent profitorientalt intezmenyekben vagy tanfolyamokon,   =*
*=   a szerzok elozetes irasbeli engedelye nelkul!                     =*
*=                                                                     =*
*=   (C) Csaky Istvan es Mork Peter         Miskolc, 1994. januar 19   =*
*=                                                                     =*
*************************************************************************