Pojęcia ogólne
TTL (Time To Live) to pole w nagłówku protokołu IP (Internet Protocol), które służy do ograniczenia czasu życia pakietu danych w sieci. TTL definiuje się jako maksymalną liczbę przeskoków, jakie może wykonać pakiet, zanim zostanie odrzucony.
Za każdym razem, gdy pakiet jest wysyłany przez router, router zmniejsza wartość TTL w nagłówku IP o jeden. Jeśli wartość TTL osiągnie zero, pakiet zostanie odrzucony, a do nadawcy zostanie wysłany komunikat o błędzie ICMP (Internet Control Message Protocol) „Przekroczono czas”. Komunikat o błędzie ICMP będzie zawierał informacje o routerze, w którym pakiet został odrzucony, oraz czasie przesyłania pakietu w obie strony.
Główną funkcją TTL jest zapobieganie nieograniczonemu krążeniu pakietów w sieci. Jeśli pakiet ma bardzo wysoki TTL, może krążyć w sieci przez nieokreślony czas, co może powodować przeciążenie sieci i problemy z wydajnością.
Praktyczny przykład działania TTL
Załóżmy, że host A chce wysłać pakiet danych do hosta B, a na ścieżce między A i B znajduje się kilka routerów pośrednich. Host A ustawia początkową wartość TTL w nagłówku IP pakietu, która jest równa podana liczba przeskoków, które pakiet powinien pokonać, zanim dotrze do hosta B.
Kiedy pakiet dociera do pierwszego routera na trasie, router odczytuje wartość TTL z nagłówka IP pakietu i zmniejsza ją o jeden. Jeśli wartość TTL osiągnie zero, router odrzuca pakiet i wysyła komunikat o błędzie ICMP „Time Exceeded” do hosta A. Jeśli wartość TTL jest większa od zera, router przekazuje pakiet do następnego routera w sieci.route.
Proces ten trwa do momentu, gdy pakiet dotrze do hosta B lub do momentu, gdy wartość TTL osiągnie zero. Jeśli pakiet dotrze do hosta B, host B zwróci potwierdzenie do hosta A. Jeśli wartość TTL osiągnie zero, pakiet zostanie odrzucony, a do hosta A zostanie wysłany komunikat o błędzie ICMP „Time Exceeded”.
Przykład polecenia w systemie Linux
W systemach Linux poleceniem dostosowania wartości TTL jest: ttl
. Na przykład, aby wysłać pakiet o wartości TTL wynoszącej 64 z hosta w systemie Linux do hosta z adresem IP 192.168.1.2
, możesz użyć następującego polecenia:
ping -c 1 -t 64 192.168.1.2
W tym poleceniu -c 1
określa, że zostanie wysłany pojedynczy pakiet i -t 64
określa, że wartość TTL będzie wynosić 64. Polecenie ping
wysyła pakiet ICMP (Internet Control Message Protocol) na podany adres IP i czeka na odpowiedź od zdalnego hosta.
Jeśli zdalny host odpowie, zostanie wyświetlony komunikat podobny do tego:
64 bytes from 192.168.1.2: icmp_seq=1 ttl=63 time=1.23 ms
W tej wiadomości ttl=63
wskazuje, że wartość TTL została zmniejszona o jeden na pierwszym routerze na trasie przed dotarciem do zdalnego hosta.
Jeśli wartość TTL jest zbyt niska, na przykład ustawiona na 1, pakiet może nie dotrzeć do zdalnego hosta. Zamiast tego do hosta źródłowego zostanie wysłany komunikat „Przekroczono czas”.
W skrócie polecenie ping
w systemie Linux można go używać do wysyłania pakietów o określonej wartości TTL i śledzenia liczby przeskoków na ścieżce pakietu w sieci. Może to być przydatne przy rozwiązywaniu problemów z siecią i optymalizacji wydajności.
Czy TTL można używać w systemie Windows?
Tak, możesz także dostosować wartość TTL w systemach Windows. Polecenie używane w systemie Windows do regulacji wartości TTL to ping
. Podobnie jak w Linuksie, polecenie ping
służy do wysyłania pakietów do zdalnego hosta i za pomocą tej opcji można dostosować wartość TTL -i
.
Na przykład, aby wysłać pakiet o wartości TTL wynoszącej 64 z hosta w systemie Windows do hosta z adresem IP 192.168.1.2
, możesz użyć następującego polecenia:
ping 192.168.1.2 -i 64
W tym poleceniu -i 64
określa, że wartość TTL będzie wynosić 64. Jeśli zdalny host odpowie, zostanie wyświetlony komunikat podobny do tego:
Reply from 192.168.1.2: bytes=32 time=1ms TTL=63
W tej wiadomości TTL=63
wskazuje, że wartość TTL została zmniejszona o jeden na pierwszym routerze na trasie przed dotarciem do zdalnego hosta.
W skrócie polecenie ping
w systemie Windows można go także używać do wysyłania pakietów o określonej wartości TTL i śledzenia liczby przeskoków na ścieżce pakietu w sieci. Może to być przydatne przy rozwiązywaniu problemów z siecią i optymalizacji wydajności.