Hetedik lecke

Verzió: 0.99

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

A világ számítógépeit összeköto hálózatok vezetékei keresztül-kasul átszelik az egész földgolyót. Több világméretu 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évbol általában következtetni lehet a gépet muködteto 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-szeru 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 egyszeruség kedvéért -és hogy ne kelljen megeroltetni a szám-memóriánkat- a telnet parancs node név alapján is fel tud hívni egy gépet. Ilyenkor elobb kikeresi a "telefonkönyvbol" 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. Errol 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 érhetok 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 átvitelrol és a talk-ról pedig e fejezet késobbi részeiben lesz szó.

Információk a hálózat gépeirol é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övetkezo 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 illeto 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értelmezot (Shell:) használ, mikor és melyik terminálról volt utoljára bejelentkezve (Last login...). Ha itt a "Never logged in" üzenet szerepel, az illeto 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 elofordulhat, hogy a felhasználó egy késobbi idopontban egy másik hostra is bejelentkezett. Ezt csak úgy tudjuk ellenorizni ha sorban valamennyi hostot végignézzük. A levelekrol 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 idopontja.

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 érdeklodo 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 elozo példán.)

A fingerhez hasonló a who parancs; ez valamivel szukszavú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-u felhasználó a q0 nevu terminálról jelentkezett be tíz óra elott kilenc perccel és jelenleg a parancsértelmezo programot futtatja (command shell), azaz a monitorán a UNIX prompt látszik (%). kovacs a pine levelezoprogramon dolgozik, lengyel pedig a winterm nevu programot futtatja, ami nem más mint egy grafikus munkaállomáson használható shell ablak. (A fenti lista némileg egyszerusí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évo 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évoket. Általában 5 - 20 gép van egy szegmensben; ennél több gép esetén a muvelet 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 idoben. Sot, 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övetkezo 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éno bejelentkezést hívják "interaktív login"-nak - erre utal a bizonyos rendszereken belépéskor megjeleno "last interactive login" dátum és idopont. 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ínuleg nem találja a telefonkönyvben a hívott gép IP számát. Ha tudjuk fejbol az IP számot, azt is megadhatjuk a node név helyett. Ha minden jól megy, a vonal terheltségétol függoen 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 nevu 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 ] billentyuk 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 lehetoségekrol 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éprol, 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 nevu, 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 elobb már említett (fiktív) piglet.forest.edu gépen van anonymous ftp szolgáltatás. A bejelentkezés a következoké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éprol a távoli gépre.
get fájlnév
Egy fájt átmásol a távoli géprol 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 muködésérol.

Most belépünk a pub alkönyvtárba, beállítjuk az átvitel módját binárisra, bekapcsoljuk az átvitel jelzo 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 megfelelo 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 muvelet 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 lehetoleg este vagy éjszaka végezzük!

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

Bármelyik bejelentkezve lévo felhasználó képernyojére üzenetet tudunk küldeni a write parancs segítségével.

write username@host_név

Ehhez nyilván tudnunk kell az illeto 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> billentyukombinációt. A begépelt szöveg erre megjelenik a megcímzett felhasználó termináljának képernyojén, függetlenül attól hogy ott éppen mi van. Ha tehát a címzett éppen dolgozik valamin, akkor a képernyojé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 billentyuzeté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élgetopartnerünk velünk egy hoston van bejelentkezve, akkor a @ és a host_név elhagyható. A parancs kiadása után azonnal letörlodik a képernyo. Középen megjelenik egy szaggatott vonal, a felso 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épernyojé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övetkezo 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épernyo felso 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épernyo felso 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> billentyukombiná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épernyonkre, 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 lehetové 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 ido 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épernyore két legrégebbi bejelentkezésünkrol tárolt adatokat! (Használjuk a Unix operációs rendszer "cso" 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üggoen, 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 tolünk. Miután bejutottunk, egy világméretu információs rendszerben találjuk magunkat, ahol számtalan különbözo témáról olvashatunk cikkeket. Az anyagok hierarchikusan vannak tárolva, a menükbol almenük nyílnak, emelyekbol ú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 érdeklo programot! Ha Magyarországról próbálkozunk, akkor a novell.aszi.sztaki.hu gépet hívjuk az elobbi helyett!!!
    (Megjegyzés: minden alkönyvtárban van egy index nevu fájl, ez tartalmazza az adott alkönyvtárban lévo 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! (Lehetoleg 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   =*
*=                                                                     =*
*************************************************************************