PING(8)

NÉV
ping - a hálózat gépeinek ICMP ECHO_REQUEST csomagok küldése

VÁZLAT
ping [-dfnqrvR] [-c (számláló)] [-i (várakozás)] [-l (előterhelés)] [-p (mintázat)] [-s (csomagméret)]

LEÍRÁS
A ping ICMP (hálózatközi vezérlőüzenet protokol) kötelező ECHO_REQUEST (visszhang-kérés) datagramot küld azért, hogy egy ICMP ECHO_RESPONSE (visszhang-válasz) válaszcsomagot kapjon egy géptől vagy átjárótól. Az ECHO_REQUEST datagramok (``ping''-ek) egy IP és egy ICMP fejléccel rendelkeznek, amit egy “struct timeval” késés követ, majd tetszőleges számú kitöltő ``pad'' byte ami megtölti a csomagot.

-c számláló
    A program leállása számláló ECHO_RESPONSE csomag fogadása után.

-d  Beállítja a SO_DEBUG (hibakeresési) opciót a használt csatlakozóponton (socket-en).

-f  Elárasztó (flooding) ping. A kimenő csomagok olyan gyorsak, hogy vagy másodpercenként százszor, vagy a visszaérkezés után azonnal indulnak, amelyik gyorsabb. Minden egyes elküldött ECHO_REQUEST után egy pont ``.'' jelenik meg, és minden kapott ECHO_REPLY után egy visszatörlés (backspace). Ez gyorsan láthatóvá teszi, hogy hány csomag veszett el. Ezt az opciót csak a szuper-felhasználó használhatja. Figyelmeztetés: ez komoly hálózat terhelést okoz, és csak fokozott óvatossággal használható.

-i várakozás
    Minden csomag között várakozás másodpercnyi várakozás. Az alapértelmezett egy másodpercnyi várakozás minden csomag között. Ez az opció összeférhetetlen az -f opcióval.

-l előterhelés
    Ha az előterhelés opciót megadjuk, a ping először ennyi csomagot küld, amilyen gyorsan csak lehetséges, mielőtt visszatérne normál működési állapotába. Ezt az opciót csak a szuper-felhasználó használhatja.

-n  Csak számjegyes kijelzés. Nem történik kísérlet a gépek címeihez tartozó szimbolikus nevek visszakeresésére.

-p mintázat
    Meghatározható legfeljebb 16 kitöltő, ``pad'' byte a küldött csomag kitöltéséhez. Ez akkor hasznos, ha a hálózat adatfüggő problémáit szeretnénk diagnosztizálni. Például, a “-p ff” hatására a küldött csomag csupa egyessel lesz kitöltve.

-q  Csöndes kijelzés. Semmi sem íródik ki, csak az összegző sor induláskor és befejezéskor.

-R  Útvonal feljegyzés. Tartalmazza a RECORD_ROUTE opciót az ECHO_REQUEST csomagban és a visszatérő csomagokban lévő útvonal puffert megjeleníti. Megjegyzendő, hogy az IP fejlécbe csak kilenc ilyen útvonal fér bele. Sok gép nem veszi figyelembe, vagy eldobja ezt az opciót.

-r  Kikerüli a rendes útvonal választó táblázatot és közvetlenül a csatolt hálózat gépének küld. Hibajelzés érkezik, ha a gép nem a közvetlenül csatolt hálózaton található. Ez az opció akkor használható, ha egy helyi gépet szeretnénk pingelni egy olyan csatolón keresztül, aminek nincs közvetlen útvonala felé (például miután a csatolót eldobta a routed(8)).

-s csomagméret
    Az elküldendő adatbájtok számát határozza meg. Az alapértelmezett 56, ami 64 ICMP adatbájtra módosul, amikor az ICMP 8 bájtos fejléce hozzáadódik.

-v  Bőbeszédű kimenet. Minden fogadott ICMP csomag, ami nem ECHO_RESPONSE kiíródik.

Amikor a ping segítségével hibát keresünk, először mindig a saját gépet kell ellenőrizni, hogy a helyi hálózati csatoló jól működik. Utána egyre távolabbi gépeket és átjárókat kell ``pingelni''. A program a válaszidők és a csomag veszteségek statisztikáját kiszámolja. Ha kettőzött csomagok érkeznek, azokat nem számolja bele a csomagveszteségi statisztikába, habár ezen csomagok válaszidejét használja a minimum/átlag/maximum válaszidő kiszámításához. Amikor a meghatározott darabszámú csomagot elküldte (és megkapta), vagy SIGINT hatására megszakad a program futása, egy rövid összegzést ír ki.

Ha a ping nem kap egyetlen válaszcsomagot sem, 1-es kilépési kódot eredményez. Hiba esetén 2-es, egyébként 0-ás kóddal lép ki. Ezért a kilépési kód használható annak megállapítására, hogy egy gép ``él'' vagy sem.

Ezen programot a hálózat ellenőrzésére, mérésére és menedzselésére szánták. A terhelés miatt, amit a hálózaton okoz, nem tanácsos a ping használata normál működés során, vagy automatikus parancsfájlokban.

AZ ICMP CSOMAG RÉSZLETEI
Egy IP fejléc opciók nélkül 20 byte hosszú. Egy ICMP ECHO_REQUEST csomag ezenkívül tartalmaz egy 8 bájtos ICMP fejlécet, amit tetszőleges mennyiségű adat követ. Amikor a csomagméretet megadjuk, ezt a többlet adatmennyiséget határozzuk meg (az alapértelmezett 56). Tehát az IP csomag belsejében kapott ICMP ECHO_REPLY típusú adat mennyisége mindig 8 bájttal (az ICMP fejléccel) több lesz, mint az kért adatmennyiség.

Ha ez az adatmennyiség legalább 8 byte hosszú, a ping ennek az első nyolc bájtját használja arra, hogy időjelzést tegyen bele, amit a visszatérési idő kiszámítására használ. Ha kevesebb, mint nyolc kitöltő bájtot határozunk meg, akkor a visszatérési időket nem adja meg.

KÉTSZEREZETT ÉS SÉRÜLT CSOMAGOK
A Ping jelez minden megkétszerezett és sérült csomagot. Kétszerezett csomagnak normális esetben nem lenne szabad előfordulnia, és úgy tűnik, hogy hibás link-szintű újraküldések okozzák. A kétszereződések sok helyzetben előfordulhatnak, és habár ritkán, (vagy sosem) jelentenek jót, az alacsony szintű kettőződések előfordulása nem minden esetben ad okot a riadalomra.

A sérült csomagok feltétlenül riasztó jelek, és a ping csomag útjában (a hálózaton vagy a gépeken) hibás hardvert jeleznek.

KÜLÖNBÖZŐ ADATMINTÁZATOK KIPRÓBÁLÁSA
A hálózat(között)i réteg sohasem kezelheti a csomagokat eltérően, az adatrészükben tartalmazott adatoktól függően. De sajnos, adatfüggő problémák osonhatnak be a hálózatokba, amik ott hosszú ideig felfedezetlenek maradhatnak. Sok esetben az a különös mintázat, amivel a probléma van olyan, amiben nincs elég ``átmenet'', mint pl. a csak nullák, csak egyesek, vagy olyan minta, ami ehhez közelít, mint pl. a majdnem csak nullák. Nem feltétlenül elégséges, ha a parancssorban olyan adatmintázatot határozunk meg, ami (például) csak nullákból áll, mivel az adatkapcsolati szinten lévő mintázat számít, és a kapcsolat a parancssorba beírt adat és a vezérlő által továbbított adat között igen bonyolult lehet.

Ez azt jelenti, hogy ha adatfüggő problémát kell keresni, valószínűleg igen sokat kell próbálgatni hogy megtaláljuk. Ha szerencsénk van, található egy olyan fájl, ami vagy nem megy át a hálózaton, vagy az átvitele sokkal tovább tart, mint a hasonló hosszúságú fájloké. Akkor ebben a fájlban lehet olyan ismétlődő mintázatokat keresni, amit ki lehet próbálni a ping -p opciójával.

TTL RÉSZLETEI
Egy IP csomag TTL értéke jelzi az IP útvonalválasztók maximális számát, amin a csomag keresztül tud menni, mielőtt eldobják. A jelenlegi gyakorlat szerint az Interneten minden útvonalválasztótól az várható, hogy a TTL mezőt pontosan eggyel csökkenti.

A TCP/IP specifikációja szerint a TTL mezőt a TCP csomagoknál 60-ra kell állítani, de sok rendszer kisebb értékeket használ ( a BSD 4.3 30-at, a 4.2 15-öt használt).

Ennek a mezőnek a lehetséges legnagyobb értéke 255, és a legtöbb Unix rendszer az ICMP ECHO_REQUEST csomagokban a TTL mezőt 255-re állítja. Ezért van az, hogy néhány gép ``ping''-elhető, de nem érhető el telnet(1) -tel vagy ftp(1) -vel.

Normális működés esetén a ping a megkapott csomagok TTL értékét kiírja. Amikor a távoli rendszer megkapja a ping csomagot, a következő három dolog valamelyikét teheti a TTL mezővel a válaszában:

•   Nem változtatja; ez az, amit a Berkeley Unix rendszerek csináltak a 4.3BSD tahoe változat előtt. Ebben az esetben a TTL értéke a megkapott csomagban 255 minusz az oda-vissza úton érintett útvonalválasztók száma lesz.

•   Beállítja 255-re; ez az, amit a jelenlegi Berkeley Unix rendszerek tesznek. Ebben az esetben a TTL értéke a kapott csomagban 255 minusz az útvonalválasztók száma lesz a távoli rendszer felől a pingelő gép irányában.

•   Valami más értékre állítja. Néhány gép ugyanazt az értéket használja az ICMP csomagok számára, mint amit a TCP csomagok esetében, például 30-at vagy 60-at. Egyebek használhatnak teljesen vad értékeket.

HIBÁK
Sok gép és átjáró figyelmen kívül hagyja a RECORD_ROUTE opciót.

Az IP fejléc maximális hossza túl kicsi ahhoz, hogy az olyan opciók, mint a RECORD_ROUTE teljesen hasznosak lehessenek. Ezzel azonban nem sokat lehet tenni.

Az elárasztó pingelés általában nem ajánlott, az üzenetszórási címnek az elárasztó pingelése pedig csak nagyon ellenőrzött körülmények között végezhető.

LÁSD MÉG
netstat(1), ifconfig(8), routed(8)

TÖRTÉNETE
A ping parancs először a 4.3BSD rendszerben jelent meg.

MAGYAR FORDÍTÁS
Bozsér Zoltán <ZOLTAN.BOZSER@hun.conoco.com>