PING(8) | System Manager's Manual | PING(8) |
ping
— a
hálózat gépeinek ICMP ECHO_REQUEST csomagok
küldése
ping
[-dfnqrvR
]
[-c
(számláló)]
[-i
(várakozás)]
[-l
(előterhelés)]
[-p
(mintázat)]
[-s
(csomagméret)]
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ó-d
SO_DEBUG
(hibakeresési) opciót a használt
csatlakozóponton (socket-en).-f
-i
várakozás-f
opcióval.-l
előterhelésping
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
-p
mintázat-p ff
”
hatására a küldött csomag csupa egyessel lesz
kitöltve.-q
-R
-r
-s
csomagméret-v
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.
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.
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.
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.
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:
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ő.
A ping
parancs először a
4.3BSD rendszerben jelent meg.
Bozsér Zoltán <ZOLTAN.BOZSER@hun.conoco.com>
August 30, 1996 | Linux NetKit 0.09 |