- bookworm 1:4.18.1-1
- bookworm-backports 1:4.23.0-1~bpo12+1
- testing 1:4.23.0-1
- unstable 1:4.23.0-1
PING(8) | iputils | PING(8) |
NAZWA¶
ping - wysyła pakiety ICMP ECHO_REQUEST do stacji sieciowych
SKŁADNIA¶
ping [-aAbBdCDfhHLnOqrRUvV46] [-c liczba] [-e identyfikator] [-F etykieta-przepływu] [-i interwał] [-I interfejs] [-l liczba-pakietów] [-m znacznik] [-M opcja-pmtudisc] [-N opcja-nodeinfo] [-w limit] [-W czas-oczekiwania] [-p wzorzec] [-Q tos] [-s rozmiar-pakietu] [-S sndbuf] [-t ttl] [-T opcja-znacznika-czasu] [hop...] {cel}
OPIS¶
Program ping używa obowiązkowego datagramu protokołu ICMP o nazwie ECHO_REQUEST, wywołującego ICMP ECHO_RESPONSE od stacji lub bramy sieciowej. Datagramy ECHO_REQUEST („pingi”) składają się z nagłówka IP oraz ICMP, za którymi następuje struct timeval oraz określona liczba bajtów wypełnienia, używanych do wypełnienia pakietu.
ping działa z IPv4 oraz IPv6. Można wymusić używanie jednego z nich opcją -4 lub -6.
ping może wysyłać również Node Information Queries (RFC4620) IPv6. Niedozwolone mogą być przeskoki, ponieważ trasowanie źródeł IPv6 zostało oznaczone jako przestarzałe (RFC5095).
OPCJE¶
-4
-6
-a
-A
-b
-B
-c liczba
-C
-d
-D
-e identyfikator
-f
-F etykieta-przepływu
-h
-H
-i interwał
-I interfejs
-L liczba-pakietów
-L
-m znacznik
-M opcja-pmtudisc
-N opcja-nodeinfo
help
nazwa
ipv6
ipv6-global
ipv6-sitelocal
ipv6-linklocal
ipv6-all
ipv4
ipv4-all
subject-ipv6=adres-ipv6
subject-ipv4=adres-ipv4
subject-name=nazwa-węzła
subject-fqdn=nazwa-węzła
-n
-O
-p wzorzec
-q
-Q tos
W RFC2474, pola te są interpretowane jako ośmiobitowe Differentiated Service (DS), składające się z : bitów 0-1 (2 najniższe bity) oddzielnych danych i bity 2-7 (najwyższe 6 bitów) Differentiated Services Codepoint (DSCP). W RFC2481 i RFC3168 bity 0-1 są używane do ECN.
Historycznie (RFC1349, zastąpione przez RFC2474) były one interpretowane jako: bit 0 (najniższy) - zarezerwowany (obecnie: kontrola ograniczenia przesyłu), 1-4 jako Type of Service (typ usługi), a bity 5-7 (najwyższe) jako Precedence (pierwszeństwo).
-r
-R
-s rozmiar-pakietu
-S sndbuf
-t ttl
-T opcja-znacznika-czasu
-U
-v
-V
-w limit
-W czas-oczekiwania
Przy używaniu pinga do izolowania błędów, należy go najpierw uruchomić na komputerze lokalnym, by sprawdzić czy lokalny interfejs sieciowy jest włączony i czy działa. Potem należy „pingować” coraz to dalsze stacje i bramki. Obliczane są czasy podróży i statystyki utraty pakietów. Jeśli odbierane są pakiety zduplikowane, nie są one włączane do obliczeń strat pakietów, choć ich czas podróży jest używany do obliczania minimalnego/średniego/maksymalnego czasu podróży.
Standardowe odchylenie populacji (mdev) to przeciętna wartość, o jaką każdy ping RTT różni się od średniego RTT. Im wyższe jest mdev, tym bardziej zmienne jest RTT (w czasie). Przy dużej zmienności RTT będą występować problemy szybkości przy dużych transferach (będą zajmowały więcej czasu, niż jest to ściśle potrzebne, jako że zmienność doprowadzi w końcu do konieczności oczekiwania przez wysyłającego na potwierdzenia) oraz jakość rozmów VoIP będzie przeciętna do miernej.
Po wysłaniu (i otrzymaniu) podanej liczby pakietów lub po przerwaniu programem SIGINT, wyświetlane jest zwięzłe podsumowanie. Można też pozyskać bieżące statystyki z krótszego okresu, bez przerywania procesu, sygnałem SIGQUIT.
Program ten jest przeznaczony do testowania sieci, pomiarów i zarządzania. Z powodu obciążenia, jakie może wywołać w sieci, niemądre jest używanie pinga podczas normalnych operacji z zautomatyzowanych skryptów.
STATUS ZAKOŃCZENIA¶
Jeśli ping nie otrzyma w ogóle pakietów odpowiedzi zakończy się z kodem 1. Jeśli podano liczbę pakietów oraz limit i są one mniejsze niż liczba pakietów otrzymanych po osiągnięciu limitu kodem zakończenia również będzie 1. W przypadku innego błędu program wychodzi z kodem 2. W przeciwnym wypadku kończy się z kodem 0. W ten sposób można na podstawie kodu zakończenia sprawdzić czy stacja odpowiada, czy też nie.
CELE ADRESÓW SEGMENTOWYCH IPV6¶
Przy IPv6, gdy adresem docelowym jest adres segmentowy (ang. link-local) i ping używa gniazd datagramowych ICMP, konieczne jest podanie interfejsu wyjściowego. Gdy ping używa gniazd surowych, nie jest ściśle konieczne podanie interfejsu wyjściowego, ale powinno się to zrobić, aby uniknąć wieloznaczności, gdy występuje wiele możliwych interfejsów wyjściowych.
Istnieją dwa sposoby określenia interfejsu wyjściowego:
• używając notacji %
ping fe80::5054:ff:fe70:67bc%eth0
ping fe80::5054:ff:fe70:67bc%2
• za pomocą opcji -I
SZCZEGÓŁY PAKIETU ICMP¶
Nagłówek IP bez opcji ma 20 bajtów. Pakiet ICMP ECHO_REQUEST zawiera dodatkowych 8 bajtów nagłówka ICMP, za którymi następuje określona ilość danych. Gdy podany jest rozmiar-pakietu, to określa on rozmiar dodatkowego bloków danych (domyślnie 56). Tak więc ilość danych znajdujących się wewnątrz pakietu IP typu ICMP ECHO_REPLY jest zawsze 8 bajtów większa niż żądana ilość danych (nagłówek ICMP).
Jeśli rozmiar danych ma wielkość przynajmniej struktury timeval, ping używa pierwszych 8 bajtów do włączania znacznika czasowego, którego używa do obliczeń czasów podróży. Jeśli podano mniej niż 8 bajtów wypełnienia, nie są podawane czasy podróży.
ZDUPLIKOWANE I USZKODZONE PAKIETY¶
Program ping zgłasza pakiety uszkodzone i zduplikowane. Pakiety zduplikowane nigdy nie powinny się pojawiać i prawdopodobnie są powodowane przez nieprawidłowe retransmisje poziomu połączenia (link-level). Mogą się one pojawiać w wielu sytuacjach i rzadko są dobrym znakiem, choć obecność niskiej liczby duplikatów nie musi być zawsze powodem alarmu.
Pakiety uszkodzone są oczywiście poważną przyczyną alarmu i często wskazują na uszkodzenie sprzętu na drodze pakietu ping (w sieci lub w komputerze).
KOLIZJE IDENTYFIKATORÓW¶
W przeciwieństwie do TCP i UDP unikatowo identyfikujących odbiorcę do dostarczenia danych, ICMP używa pola identyfikatora (ID) do celów identyfikacji. Z tego względu, jeśli na tym samym komputerze, w tym samym czasie, istnieją dwa procesy ping używające tego samego ID, odpowiedź echo może trafić do niewłaściwego odbiorcy. To znany problem, ze względu na ograniczony rozmiar 16-bitowego pola ID. Jest to historyczne ograniczenie protokołu, którego nie da się w tym momencie naprawić, chyba że ID zostałby zakodowany we fragmencie payload pakietu ping. ping wypisuje błąd DIFFERENT ADDRESS i utrata pakietów jest ujemna.
ping używa identyfikatora procesu (PID) do pozyskania unikatowego numeru. Domyślną wartością /proc/sys/kernel/pid_max jest 32768. W systemach intensywnie korzystających z programu ping, oraz przy pid_max większym od 65535 kolizje są nieuniknione.
UŻYWANIE RÓŻNYCH WZORCÓW DANYCH¶
Poziom (inter)sieci nigdy nie powinien traktować pakietów odmiennie w zależności od danych zawartych w części danych. Niestety, problemy zależne od danych, czasem pojawiają się w sieciach i pozostają długo niezauważane. W wielu przypadkach konkretny wzorzec powodujący problemy jest czymś, co nie posiada wystarczającej liczby „zmian”, np. jest samymi jedynkami lub samymi zerami, lub wzorcem na samym krańcu, prawie wypełnionym zerami. Niekoniecznie jednak musi wystarczyć podanie wzorca z samymi zerami w wierszu poleceń, gdyż interesujący wzorzec jest na poziomie połączenia i związek między tym co się wpisze, a tym co transmituje kontroler może być złożony.
Znaczy to, że jeśli występuje problem zależny od danych, to będzie to wymagało wielu testów do jego izolacji. Jeśli ma się szczęście, można znaleźć plik, który nie może być przesłany przez sieć lub który wymaga dużo więcej czasu do przesłania niż inne podobnej długości pliki. Można następnie taki plik przetestować w poszukiwaniu powtarzalnych wzorców z użyciem opcji -p programu ping.
SZCZEGÓŁY TTL¶
Wartość TTL pakietu IP reprezentuje maksymalną liczbę routerów IP, którą pakiet może minąć nim zostanie wyrzucony. W obecnej sytuacji, można oczekiwać że każdy router internetowy obniży wartość TTL o jeden.
Pole TTL pakietu TCP może przyjąć różne wartości. Maksymalna możliwa wartość tego pola wynosi 255, a zalecana początkowa: 64. Więcej informacji znajduje się w rozdziale „TCP/Lower-Level Interface” w RFC9293.
W normalnym działaniu, ping wypisuje wartości TTL odbieranych pakietów. Gdy system zdalny otrzymuje pakiet ping, może on zrobić jedną z trzech rzeczy z polem TTL:
USTERKI¶
ZOBACZ TAKŻE¶
HISTORIA¶
Komenda ping pojawiła się w 4.3BSD.
Niniejsza wersja jest jej następcą charakterystycznym dla Linuksa.
Według stanu na wersję s20150815, plik binarny ping6 już nie istnieje. Został złączony z ping. Utworzenie dowiązania symbolicznego nazwanego ping6 wskazującego na ping zapewni tę samą funkcjonalność jak wcześniej.
BEZPIECZEŃSTWO¶
ping wymaga do wykonania przywileju (ang. capability) CAP_NET_RAW 1) jeśli program jest używany do zapytań innych niż echo (zob. opcję -N) lub jeśli pole identyfikacyjne ustawiono na 0 do ECHO_REQUEST (zob. -e) albo 2) jeśli jądro nie obsługuje gniazd datagramowych IMMP albo 3) jeśli użytkownik nie może tworzyć gniazda echo ICMP. Program może być używany z ustawieniem ID roota podczas wykonania (suid).
DOSTĘPNOŚĆ¶
ping jest częścią pakietu iputils.
TŁUMACZENIE¶
Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Przemek Borys <pborys@dione.ids.pl> i Michał Kułach <michal.kulach@gmail.com>
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.
iputils 20240117 |