5.14 TCP/IP alapismeretek


Ez az dokumentum a Bruce Clarke (Bruce.Clarke@UAlberta.CA) által készített SLIPHW.ZIP program angol nyelvû NETSETUP.TXT fájlja alapján készült. Az eredeti verzió megtalálható az ismert OS/2-es ftp site-okon.


Az egész hálózatosdi sokkal egyszerûbb, mint gondolnánk. A lényeg három alapprogram, az IFCONFIG, a ROUTE és az ARP mibenlétében és használatában van.

1. IFCONFIG

Az IFCONFIG.EXE program definiálja az Internethez (TCP/IP hálózathoz) kapcsolódáshoz szükséges interfészt. Ez az interfész lehet például slip interfész, ami mindig egy soros portot és egy modemet jelent. Az interfészek nevekkel vannak ellátva, slip estében ezek például a sl0, sl1, sl2,... stb. Az interfész lehet hálózati kártya is. Ilyenkor a lan0, lan1, lan2,... stb. nevek használatosak. Létezik egy loopback nevû interfész is, amelyik nem kapcsolódik sehová sem. Ez pontosan úgy mûködik, mint egy tükör. Minden, amit erre az interfészre küldünk, azonnal visszapattan. A loopback interfészen keresztül tehát a gép "magával beszélhet". Ezt az interfészt lo-val jelölik.

Ha konfigurálni akarunk egy interfészt, akkor csak ki kell adnunk az IFCONFIG parancsot az interfész nevével és számával mint paraméterekkel (többek között). Például loopback interfészt definiálhatunk a 127.0.0.1-es IP címre, ha kiadjuk az alábbi parancsot:

ifconfig lo 127.0.0.1

Egy sl0 slip interfészt pedig a következô módon adhatunk meg:

ifconfig sl0 199.99.99.99  199.99.99.88 netmask 255.255.255.0

Ebben a parancsban két IP címet is használtunk. A címek a slip vonal két végén lévô interfészekhez tartoznak. Az elsô cím a helyi géphez, a második a hívott géphez tartozik. Ha a hívott gépben hálózati kártya is van, akkor ahhoz egy másik IP cím is kell, hogy tartozzon. Az utolsó, netmask paraméter pedig azt adja meg, hogy az sl0 interfész egy olyan hálózaton van, ahol minden IP szám 199.99.99-cel kezdôdik és csak az utolsó számban van eltérés.

Ha egy hálózati kártya interfészét akarjuk konfigurálni a 199.99.99.77-es címre, akkor azt a következô paranccsal tehetjük meg:

ifconfig lan0 199.99.99.77 netmask 255.255.255.0.

2. A konfigurált interfész tesztelése

Amennyiben jól állítottuk be az interfészt, akkor tudunk pingetni. Ha például a gép nem kapcsolódik sehová sem, de konfiguráltuk a loopback interfészt a 127.0.0.1-es címre, akkor azt az alábbi paranccsal tesztelhetjük:

ping 127.0.0.1

Amikor a slip a 199.99.99.99-es (otthoni) gépet a 199.99.99.88-as (munkahelyi) géppel köti össze, csak akkor fogjuk tudni a 199.99.99.99-es interfészt pingetni, ha a slip kapcsolat él. Ez az elsô pillanatban meglepô lehet, hiszen a 199.99.99.99-es interfész az otthoni gépen lett definiálva. Ez azonban nem teljesen így van, mert az erre az interfészre küldött adatok a modemhez továbbítódnak, és ha az nincs összeköttetésben egy másik modemmel, akkor az otthoni interfész sem mûködik.

3. Számítógépnevek és IP címek

A számítógépek közötti kommunikációban gyakran a gépek nevét használjuk az IP címek helyett. Ha például a loopback interfészt konfiguráltuk, akkor a

ping localhost

parancs mûködni fog, amennyiben a HOSTS fájlban (a \TCPIP\ETC vagy az \MPTN\ETC könyvtárban van) össze van kapcsolva a 127.0.0.1 szám a localhost névvel. Ha nem lenne HOSTS fájl a megadott könyvtárakban (vagy abban a könyvtárban, amelyikre az ETC környezeti változó mutat), akkor készítsünk egyet, ami legalább az alábbi sort tartalmazza. Természetesen a név és az IP szám más is lehet.

127.0.0.1   localhost

Ha a home (199.99.99.99) és a work (199.99.99.88) nevû gépek között létesítünk slip kapcsolatot, akkor írjuk be a HOSTS fájlba az alábbi sorokat is:

199.99.99.99 home
199.99.99.88 work

4. Hogyan találja meg a TCP/IP a gépeket: a RESOLV fájl és a DNS

Tegyük fel, hogy kiadjuk az alábbi parancsot:

ping somebody

A hálózati programnak meg kell tehát találnia a somebody nevû gépet. Elôször a HOSTS fájlt fogja megvizsgálni, ha a Config.Sys-ben szerepel a SET USE_HOSTS_FIRST=1 sort. Ha itt nem találja meg a keresett gép IP címét, akkor egy másik gépet, a DNS-t (Domain Name Server, Tartománynév-kiszolgáló) fog megkérdezni. Amennyiben a DNS-nél regisztrálva van a somebody nevû gép, akkor visszakapjuk a hozzá tartozó IP címet és a pingetés sikeres lesz.

A dolog azonban egy kicsit bonyolultabb. A home egy olyan gép, amely saját alhálózaton (subnetwork) van. Mivel a subnet mask 255.255.255.0, a home IP címében lévô elsô három szám az alhálózat száma (199.99.99) is egyben, míg az utolsó szám (99) a home gép azonosítója. Az alhálózatoknak - a gépek nevéhez hasonlóan - nevük is van. A saját alhálózat neve kell, hogy az ETC könyvtárban található RESOLV fájl elsô sorában szerepeljen. Ha az alhálózatot például my.private.net-nek nevezzük, akkor a RESOLV fájl elsô sorában a következô bejegyzésnek kell állnia:

domain my.private.net

Az IP címhez hasonlóan a gép teljes neve a home névbôl és a subnet nevébôl tevôdik össze, tehát ez esetben home.my.private.net lesz. A HOSTNAME.EXE programmal megnézhetjük a használt gép nevét. Ha például konfiguráltuk a loopback interfészt és a HOSTS fájlban hozzárendeltük a 127.0.0.1-es IP számot a localhost névhez, akkor a HOSTNAME parancs kiadásakor a localhost nevet kell visszakapnunk. Ha a slip interfészt és a route-olást is megfelelôen konfiguráltuk, akkor a HOSTNAME parancs kiadásakor a teljes nevet (home.my.private.net) fogjuk megkapni. Elvileg bármilyen nevet választhatunk a gépünk és az alhálózat számára. Ha azonban azt akarjuk, hogy más gépekkel is tudjunk kapcsolatot létesíteni, akkor olyan nevet és alhálózatot kell használnunk, amelyek a DNS-nél is nyilván vannak tartva.

5. A DNS

A DNS egy olyan számítógép, amelyet arra használhatunk, hogy a neveket IP címekké, az IP címeket pedig nevekké konvertáljuk. Ehhez persze tudnunk kell a DNS IP címét, egyébként a 22-es csapdájába esünk. A DNS gép(ek) IP számát a RESOLV fájl tárolja. A szerzô RESOLV fájlja például a következôképpen néz ki:

domain chem.ualberta.ca
nameserver 129.128.5.233
nameserver 129.128.76.233
nameserver 129.128.4.241

Tegyük fel, hogy van egy mûködô slip kapcsolatunk. Ekkor pingethetjük a gépen lévô sl0 interfészt az IP száma alapján. Ha a számhoz tartozó név benne van a HOSTS fájlban, akkor a név alapján is pingethetjük az adott interfészt. Ha ezek a dolgok mind mûködnek, akkor a home és work gépek közötti összeköttetés tökéletes.

A következô kérdés az, hogy hogyan tudunk más gépekkel érintkezni. Tegyük fel, hogy pingetni akarjuk az otherwork nevû gépet:

ping otherwork.my.private.net

A home gép a parancs kiadása után megpróbálja meghatározni az otherwork IP számát. Ha az adat benne van a HOSTS fájlban, akkor a gép megkezdi a pingetést. Ha ott nem találja, akkor megpróbálja megkérdezni a DNS-t, de mivel még nincs minden megfelelôen konfigurálva, ez nem fog mûködni. Ha tovább akarunk lépni, akkor beírhatjuk a HOSTS fájlba az otherwork nevû gép IP számát is:

199.99.99.55 otherwork.my.private.net

Most már a ping otherwork.my.private.net parancs is ugyanúgy mûködni fog, mintha a ping 199.99.99.55 parancsot adnánk ki. Fog ez mûködni? Hát nem igazán. Két ok miatt sem.

Tegyük fel, hogy konfiguráltuk gépünkön az lo és sl0 interfészeket. Ha pingetni akarjuk otherworköt, akkor melyik interfész fogja az adatokat kiküldeni? Ezt a problémát oldja meg az alapértelmezés szerinti út (default route) bevezetése. Ez azt jelenti, hogy az otthoni gép minden olyan csomagot, amelynek a rendeltetési helye nem ismert, az alapértelmezés szerinti út végén lévô másik gépnek fogja küldeni (ami a slip kapcsolat esetén a slip vonal másik végén lévô work nevû gép).

Az alapértelmezés szerinti utat a ROUTE.EXE programmal adhatjuk meg:

route add default 199.99.99.88 1

A TCP/IP eljáráson alapuló hálózatok úgy mûködnek, hogy a csomagok egyik géptôl a másikra továbbítódnak amíg el nem érik rendeltetési helyüket. Ha egy csomag rendeltetési helyének IP címe nem ismert, akkor az adott gép a csomagot az alapértelmezés szerinti út irányába küldi tovább. A kiadott ping 199.99.99.55 parancs tehát továbbítódik a munkahelyi géphez, és annak helyes mûködése esetén eljut a 199.99.99.55-ös géphez.

Vizsgáljuk meg, hogy work hogyan továbbítja a csomagokat otherworknek. Esetünkben mindkét gép az Interneten van. Mivel IP számuk elsô három komponense megegyezik és a netmask 255.255.255.0, ezért ugyanazon az alhálózaton vannak. Ha a csomagokat az alhálózaton kívülre kellene küldeni, akkor work az alapértelmezés szerinti útra küldené ôket. Mivel ez esetben egy alhálózaton belül van mindkét gép, az adatcserét kizárólag nekik kell lebonyolítaniuk. Ethernet hálózatra kapcsolt gépek hálózati adapterük (MAC) címe segítségével érintkeznek. A MAC cím egy olyan hexadecimálisszám-sorozat, amellyel a gyárban látják el a kártyát. Minden kártyának saját MAC címe van. Egy ilyen cím például: 00:00:00:0c:11:22:33:44. Ha work csomagot akar küldeni otherworknek, akkor tudnia kell otherwork MAC címét. Ilyen esetben work kiküld egy üzenetet a hálózatra, amelyben azt kérdezi, hogy melyik gép rendelkezik a 199.99.99.55-ös IP számmal. Válaszul otherwork kiküldi a saját MAC címét, amelyet work (is) megkap. Ezek után work minden otherworknek küldött csomag elé oda fogja tenni otherwork MAC címét, és így kizárólag otherwork fogja fogadni a (neki küldött) csomagokat. Amikor otherwork megpróbál válaszolni a home által kiadott ping parancsra, akkor kiad egy üzenetet, amelyben megkérdezi, hogy mi a 199.99.99.99-es gép MAC címe. Az alhálózatra küldött üzenetek nem jutnak el mind automatikusan home-hoz, hiszen ez feleslegesen lassítaná a slip kapcsolatot, ami amúgy sem gyors. Ezért elvileg otherwork nem lenne képes megkapni home MAC címét, és így a ping parancsra sem tudna válaszolni. A megoldás az, hogy otherwork worknek küldi a home-nak szánt csomagokat, amelyeket aztán work továbbküld home-nak. Ezért, amikor otherwork keresi a 199.99.99.99-es gép MAC címét, worknek kell válaszolnia a saját MAC címével. Ezt az eljárást proxy arpnak hívják. A proxy megbízást jelent, tehát itt arra utal az elnevezés, hogy work a home megbízottjaként mûködik. Ehhez a következô parancsot kell kiadni workön:

arp -s 199.99.99.99 00:00:00:c0:11:22:33:44  pub

Az arp cím-meghatározási eljárást (Address Resolution Protocol) jelent. A parancs végén szereplô pub szó arra utal, hogy worknek a saját MAC címét (00:00:00:c0:11:22:33:44) kell kiadnia, amikor valamelyik gép a 199.99.99.99-es gép MAC címét keresi. Amennyiben a megadott arp parancsot végrehajtották workön, akkor a home-on kiadott ping otherwork parancs minden további nélkül mûködni fog.

6. A teljes kép. Miért ne használjunk saját hálózatot?

A slip kapcsolat alapvetô szabálya a következô: a slip interfészekhez rendelt IP számoknak ugyanazon alhálózaton kell lenniük. Elvileg lehetséges, hogy a munkahelyi PC slip és ethernet interfésze különbözô alhálózaton legyen. Ez ugyan megnehezíti a dolgunkat, azonban nem lehetetlen megoldani. A fô probléma az, hogy a nem slipes alhálózaton kiadott üzenetek megtalálják a slipes alhálózatot. Ez azonban nem olyan egyszerû dolog, ezért nem is fogunk vele foglalkozni.

Ha viszont feltesszük, hogy a sl0 és lan0 interfészek egy alhálózaton vannak, akkor nagyon könnyû dolgunk van, hiszen az otthoni gépnek küldött csomagok a munkahelyi gép alhálózatára érkeznek, így az minden gond nélkül tovább tudja adni az otthoni gépnek a slip vonalon keresztül. Mivel a slip vonal mindkét vége ugyanazon az alhálózaton van, mint a lan0 interfész, a SLIPHW csomag használatához még két IP címre is szükség lesz a munkahelyi gép már meglévô lan0 interfészéhez tartozó IP címén kívül.

Mivel más gépek név alapján is fogják keresni az otthoni gépet, a DNS-nél regisztrálva kell lennie az otthoni gép sl0 interfészéhez rendelt IP cím-név párosnak. A munkahelyi gép sl0 interfészéhez használt IP címet csak az otthoni gép fogja használni, ezért ennek nem feltétlenül regisztrálva lennie. Arra azonban ügyeljünk, hogy az alhálózatunkon más gép ne használja ugyanezt a címet, mivel abból problémák adódhatnak. A legjobb az, ha megkérjük a hálózat rendszergazdáját, hogy adjon nekünk használaton kívüli IP címeket.

7. Saját hálózat bekapcsolása

Tegyük fel, hogy létrehoztunk egy saját hálózatot, és a SLIPHW csomag segítségével Internet-hozzáférést szeretnénk biztosítani egy modemmel felszerelt gépen keresztül a saját hálózatban lévô többi gép számára. Két lehetséges eset van:

  • A saját hálózat ugyanazon az alhálózaton van, mint work.
  • A saját hálózat más alhálózaton van.

Az elsô esetben nagy valószínûséggel meg tudjuk oldani, hogy a saját hálózatban lévô minden gép elérje az Internetet, viszont a második esetben ez nem lehetséges, az alábbiakban vázolt okok miatt.

Tegyük fel, hogy az otthoni alhálózat száma 199.11.11 és a hálózati kártya által használt IP szám 199.11.11.11. Ennek az interfésznek nem lehet home a neve, hiszen azt az sl0 interfésze (199.99.99.99) használja. Hívjuk ezért etherhome-nak. Legyen egy másik gép is a saját hálózaton otherhome névvel és 199.11.11.22 IP címmel. Ezt a hálózatot a következôképpen kell konfigurálni, hogy mûködjön, ha a slip kapcsolat nem él:

Mindkét gépen készítsük el a HOSTS fájlt az alábbiak alapján:

199.11.11.11 etherhome
199.11.11.22 otherhome

Mindkét gépen állítsuk be, hogy az alapértelmezés szerinti út a másik gépre mutasson:

Etherhome route parancsa: route add default 199.11.11.22 1
Otherhome route parancsa: route add default 199.11.11.11 1

Ezek után a két gép kapcsolatot tud létesíteni egymással. DNS-re nincs is szükség. A RESOLV fájlban tehát elég megadni az alhálózat nevét:

domain my.private.net

Most pedig vizsgáljuk meg, hogy mi történik, amikor a home nevû gép az Internetre kapcsolódik a munkahelyi gépen keresztül.

A slip kapcsolat létrejötte után az alapértelmezés szerinti út a munkahelyi gépre fog mutatni, mivel végrehajtódik az alábbi parancs:

route add default 199.99.99.88 1

Ez azonban nem fogja befolyásolni a két otthoni gép egymás közötti adatforgalmát, mivel azok ismerik egymás IP címét és az alapértelmezés szerinti utat csak azok a csomagok követik, amelyeknek ismeretlen a rendeltetési helye. A home gép valószínûleg kifogástalanul fog az Interneten mûködni. Amikor például elindítjuk a WebExplorert, és egy, az otthoni hálózaton kívülre mutató URL-t adunk meg, akkor a TCP/IP eljárás az alapértelmezési utat használva a munkahelyi gépre fogja irányítani a csomagokat, amelyik aztán célba juttatja azokat. Probléma csak akkor lesz, ha otherhome akarja elérni az Internetet. Tegyük fel, hogy otherhome megpróbálja pingetni otherworköt. Ha otherwork IP címe benne van otherhome HOSTS fájljában, akkor a csomagok elôször az etherhome interfésznek, majd pedig (a slip vonalon keresztül) worknek továbbítódnak. Work lan0 interfészén át a csomagok tehát rendben eljutnak otherworkhöz. Otherwork azonban nem fog tudni válaszolni, mivel a csomagok egy olyan géptôl jönnek, amelynek nem ismert az alhálózata. Természetesen ez a probléma áthidalható, de a megoldás nem egyszerû és nem is minden esetben használható. Ha például véletlenszerûen választottuk az otthoni alhálózat számát, akkor az otherhome által válaszul kiküldött csomagok azon az alhálózaton fognak kikötni, amelyiknek "elloptuk" a számát.

Az elsô esetben leírt hálózat konfigurálása

Ebben az esetben az otthoni alhálózat a munkahelyi alhálózat része. A hálózat adminisztrátorának IP címeket kell adnia az összes otthoni PC-nek, valamint szükség lesz egy extra IP címre a munkahelyi PC sl0 interfészéhez. Az alábbiakban találunk egy példát:

munkahelyi gép lan0 199.99.99.77 (DNS-nél regisztráltnak kell lennie.)
munkahelyi gép sl0  199.99.99.88 (Használatlan IP szám)
otthoni gép 1  sl0  199.99.99.99 (DNS-nél regisztráltnak kell lennie.)
otthoni gép 1  lan0 199.99.99.11 (Használatlan IP szám)
otthoni gép 2  lan0 199.99.99.22 (DNS-nél regisztráltnak kell lennie.)

Kövessük újra végig az elôzôekben taglalt esetet. Amikor tehát otherhome pingeti otherworköt, a csomagok rendben eljutnak otherworkhöz. Ezúttal azonban otherwork látni fogja, hogy otherhome ugyanazon az alhálózaton van, ezért kiadja az alhálózatra az üzenetet, amelyben keresi a 199.99.99.22-es gép MAC címét. Otherhome azonban nem lesz képes válaszolni, csak akkor, ha work proxy arp szolgáltatást nyújt a második otthoni gép számára is. Ezért a munkahelyi gépen ki kell adni a következô parancsot is:

arp -s 199.99.99.22 00:00:00:c0:11:22:33:44  pub

8. Kiterjedt otthoni hálózat

Tegyük fel, hogy sok gép van otthon, a munkahelyivel megegyezô alhálózaton, és egy slip kapcsolat segítségével az Internetre akarjuk az összes gépet csatlakoztatni. Ekkor a kétgépes otthoni hálózat esetében megadott módon kell konfigurálni egy otthoni és egy munkahelyi gépet a slip kapcsolatra. Mindegyik otthoni gépre fel kell tenni egy olyan HOSTS fájlt, amelyik tartalmazza az összes gép IP címét és nevét, így az otthoni hálózat akkor is mûködni fog, ha a slip kapcsolat nem él. Amikor a slip kapcsolat felépült, a munkahelyi gépnek proxy arp szolgáltatást kell nyújtania az összes otthoni gép számára. Az alapértelmezés szerinti út az otthoni gépek számára az az otthoni gép legyen, amelyiken a slip interfész konfigurálva lett. E gép esetében viszont az alapértelmezés szerinti út a munkahelyi gép kell, hogy legyen.

9. Vizsgálati eszközök

A már az elôzôekben is említett PING.EXE program mellett nagyon hasznos segédprogram a NETSTAT.EXE, amelyet például az alábbi módon használhatunk:

netstat -r

Ez a parancs kilistázza az összes konfigurált utat az IP címekkel és interfészekkel egyetemben. Ha az ARP táblázatot akarjuk megnézni, akkor a -a opciót használjuk:

netstat -a

A témához kapcsolódó más oldalak:


< [ OS/2 kérdések és válaszok | Keresés | Észrevételek, megjegyzések ] >
Utolsó módosítás ideje: 2000.01.22.