conceptes generals
El TTL (Time To Live) és un camp a la capçalera IP (Internet Protocol) que s'utilitza per limitar el temps de vida d'un paquet de dades en una xarxa. El TTL es defineix com el nombre màxim de salts que pot fer un paquet abans que es descarti.
Cada vegada que un paquet s'envia a través d'un router, el router disminueix en un el valor del TTL a la capçalera IP. Si el valor del TTL arriba a zero, el paquet es descarta i s'envia un missatge d'error ICMP (Internet Control Message Protocol) de Temps Excedit al remitent. El missatge derror ICMP inclourà informació sobre el router on es va descartar el paquet i el temps danada i tornada del paquet.
La funció principal del TTL és evitar que els paquets circulin indefinidament en una xarxa. Si un paquet té un TTL molt alt, podria continuar circulant per la xarxa durant un temps indefinit, cosa que podria causar congestió de xarxa i problemes de rendiment.
Exemple pràctic del funcionament del TTL
Suposem que un host A vol enviar un paquet de dades a un host B, i que hi ha diversos routers intermedis a la ruta entre A i B. El host A estableix un valor TTL inicial a la capçalera IP del paquet, que és igual a un nombre determinat de salts que espera que el paquet travessi abans d'arribar al host B.
Quan el paquet arriba al primer router a la ruta, el router llegeix el valor del TTL a la capçalera IP del paquet i el decrementa en un. Si el valor del TTL arriba a zero, el router descarta el paquet i envia un missatge d'error ICMP de “Temps Excedit” al host A. Si el valor del TTL és més gran que zero, el router reenvia el paquet al següent router a la ruta.
Aquest procés continua fins que el paquet arriba al host B o fins que el valor del TTL arriba a zero. Si el paquet arriba al host B, el host B torna una confirmació al host A. Si el valor del TTL arriba a zero, es descarta el paquet i s'envia un missatge d'error ICMP de “Temps Excedit” al host A.
Exemple de l'ordre a Linux
En sistemes Linux, la comanda per ajustar el valor TTL és ttl
. Per exemple, per enviar un paquet amb un valor TTL de 64 des d'un host a Linux al host amb adreça IP 192.168.1.2
, es pot utilitzar la següent ordre:
ping -c 1 -t 64 192.168.1.2
En aquesta comanda, -c 1
especifica que s'enviarà un sol paquet i -t 64
especifica que el valor del TTL serà de 64. L'ordre ping
envia un paquet ICMP (Internet Control Message Protocol) a l'adreça IP especificada i espera una resposta de l'amfitrió remot.
Si el host remot respon, es mostrarà un missatge similar a aquest:
64 bytes from 192.168.1.2: icmp_seq=1 ttl=63 time=1.23 ms
En aquest missatge, ttl=63
indica que el valor del TTL es va reduir en un al primer router de la ruta abans d'arribar al host remot.
Si el valor del TTL és massa baix, per exemple, si s'estableix a 1, el paquet podria no arribar a l'amfitrió remot. En canvi, s'enviarà un missatge de “Temps Excedit” al host origen.
En resum, l'ordre ping
a Linux es pot utilitzar per enviar paquets amb un valor TTL especificat i rastrejar el nombre de salts a la ruta d'un paquet a una xarxa. Això pot ser útil per resoldre problemes de xarxa i optimitzar el rendiment.
Es pot fer servir el TTL a Windows?
Sí, també es pot ajustar el valor TTL als sistemes Windows. La comanda utilitzada en Windows per ajustar el valor TTL és ping
. Igual que a Linux, l'ordre ping
s'utilitza per enviar paquets a un amfitrió remot i es pot ajustar el valor del TTL utilitzant l'opció -i
.
Per exemple, per enviar un paquet amb un valor TTL de 64 des d'un host a Windows al host amb adreça IP 192.168.1.2
, es pot utilitzar la següent ordre:
ping 192.168.1.2 -i 64
En aquesta comanda, -i 64
especifica que el valor del TTL serà de 64. Si el host remot respon, es mostrarà un missatge similar a aquest:
Reply from 192.168.1.2: bytes=32 time=1ms TTL=63
En aquest missatge, TTL=63
indica que el valor del TTL es va reduir en un al primer router de la ruta abans d'arribar al host remot.
En resum, l'ordre ping
a Windows també es pot utilitzar per enviar paquets amb un valor TTL especificat i rastrejar el nombre de salts a la ruta d'un paquet a una xarxa. Això pot ser útil per resoldre problemes de xarxa i optimitzar el rendiment.