Andrea Planet
Home Page

True Ping

AUP Monitor

Benvenuti alla Web Page 
del programma

TRUE PING
(click here for english version)
Questo programma permette di effettuare dei Ping con tempi non approsimati come purtroppo avviene con i programmi standard su piattaforma Windows. Il programma e' molto semplice e usa gli stessi parametri del programma Ping.exe standard.

Dettagli Tecnici

Arrotondamento nel calcolo della temporizzazione:
 
il programma Ping di Win2K arrotonda come gli pare. O meglio, utilizza la funzione GetTickCount() che restituisce i millisecondi trascorsi dall'accensione del computer. L'orologio non e' proprio preciso per cui a secondo delle situazioni ti trovi dei scarti in piu' o in meno. 
Con un tping invece su Win2K l'output e' ad esempio questo: 

Reply from 194.177.103.3: bytes=32 time 30.72 ms (30 ms) TTL=194 
Reply from 194.177.103.3: bytes=32 time 26.82 ms (20 ms) TTL=194 
Reply from 194.177.103.3: bytes=32 time 25.46 ms (20 ms) TTL=194 
Reply from 194.177.103.3: bytes=32 time 25.47 ms (20 ms) TTL=194 
Reply from 194.177.103.3: bytes=32 time 25.66 ms (20 ms) TTL=194 

Tra parentesi i valori calcolati utilizzando GetTickCount() che corrispondono perfettamente al ping, infatti: 

M:\>ping maya.ngi.it 

Pinging maya.ngi.it [194.177.103.3] with 32 bytes of data: 

Reply from 194.177.103.3: bytes=32 time=30ms TTL=253 
Reply from 194.177.103.3: bytes=32 time=20ms TTL=253 
Reply from 194.177.103.3: bytes=32 time=20ms TTL=253 
Reply from 194.177.103.3: bytes=32 time=20ms TTL=253 

Ping statistics for 194.177.103.3: 
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), 
Approximate round trip times in milli-seconds: 
Minimum = 20ms, Maximum = 30ms, Average = 22ms 

Il primo ping di 30 ms, con un ritardo di 5 ms puo' essere dovuto a vari fattori, tra cui la la gestione processi del sistema operativo. Per default viene usato infatti un thread secondario. 

Utilizzo della compressione in tempo reale:
Alcune connessioni permettono la compressione in tempo reale dei dati, e dato che il ping standard utilizza un buffer costante del tipo 'abcdefghijklmnopqrstuvw' succede che la compressione in tempo reale ottimizza i tempi di esecuzione riportando un ping non realistico. Il programma tping invece utilizza per default un buffer casuale che cambia ad ogni ping (la compressione viene utilizzata anche con un buffer casuale viene utilizzato piu' volte (nei pacchetti successivi al primo).

Esempio di ping utilizzando il buffer standard del ping:

C:\>tping maya.ngi.it -c

Pinging maya.ngi.it [194.177.103.3] with 32 bytes of data:

Reply from 194.177.103.3: bytes=32 time 31.91 ms (30 ms), TTL=253
Reply from 194.177.103.3: bytes=32 time 24.15 ms (20 ms), TTL=253
Reply from 194.177.103.3: bytes=32 time 26.52 ms (20 ms), TTL=253
Reply from 194.177.103.3: bytes=32 time 24.49 ms (20 ms), TTL=253
Reply from 194.177.103.3: bytes=32 time 24.26 ms (20 ms), TTL=253

Ping statistics for 194.177.103.3
Packets: Sent = 5, Received = 5, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 24.15ms, Maximum = 31.91ms, Average = 26.27ms


Esempio di ping utilizzando un buffer casuale ad ogni ping (default):

C:\>tping maya.ngi.it

Pinging maya.ngi.it [194.177.103.3] with 32 bytes of data:

Reply from 194.177.103.3: bytes=32 time 32.91 ms (30 ms), TTL=253
Reply from 194.177.103.3: bytes=32 time 33.93 ms (30 ms), TTL=253
Reply from 194.177.103.3: bytes=32 time 32.00 ms (30 ms), TTL=253
Reply from 194.177.103.3: bytes=32 time 32.65 ms (30 ms), TTL=253
Reply from 194.177.103.3: bytes=32 time 32.45 ms (30 ms), TTL=253

Ping statistics for 194.177.103.3
Packets: Sent = 5, Received = 5, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 32.00ms, Maximum = 33.93ms, Average = 32.79ms

Come si puo' notare c'e' una differenza sui ping successivi di oltre 7 ms dovuti al buffer casuale che non puo' essere compresso. E' stata utilizzata una linea ISDN compressione attiva e multilink su singolo canale e Firewall software ZoneAlarm (aumenta il ping). Disattivando la compressione i due ping risultano uguali.

Utilizzo di un secondo thread (processo) per la ricezione dei dati:
In un ambiente realistico la ricezione dei dati avviene attraverso un processo/thread specifico di ascolto e non all'interno dello stesso thread che invia i dati. Per default il tping utilizza questo meccanismo ma e' possibile utilizzare un unico thread specificando il parametro -p. 
In condizioni normali sulla rete internet dove i ritardi sono elevati non ci sono molte differenze tra i due metodi, ma su una rete locale dove i tempi di risposta sono estremamente bassi (intorno al millisecondo) le differenze si fanno notare.

Scheduling dei processi sotto Windows:
In condizioni normali sulla rete internet dove i ritardi sono elevati i ritardi dovuti allo scheduling dei processi sotto Windows non hanno praticamente influenza sui tempi di risposta, ma su una rete locale, dove i ritardi sono molto bassi, i ritardi dovuti alla gestione dei processi del sistema operativo influenzano notevolmente i valori restituiti. In altre parole diventa elevato il tempo necessario per "risvegliare" il processo che attende la risposta del ping dalla rete. Utilizzando il parametro -d 0 in cui non introduciamo alcun ritardo tra la ricezione e il successivo invio e quindi il programma tping non passa praticamente mai in una fase di attesa abbiamo dei tempi molto piu' bassi.

C:\>tping localhost

Pinging 127.0.0.1 with 32 bytes of data:

Reply from 127.0.0.1: bytes=32 time 0.21 ms (0 ms), TTL=128
Reply from 127.0.0.1: bytes=32 time 0.12 ms (0 ms), TTL=128
Reply from 127.0.0.1: bytes=32 time 0.13 ms (0 ms), TTL=128
Reply from 127.0.0.1: bytes=32 time 0.14 ms (0 ms), TTL=128
Reply from 127.0.0.1: bytes=32 time 0.16 ms (0 ms), TTL=128

C:\>tping localhost -d 0

Pinging 127.0.0.1 with 32 bytes of data:

Reply from 127.0.0.1: bytes=32 time 0.21 ms (0 ms), TTL=128
Reply from 127.0.0.1: bytes=32 time 0.04 ms (0 ms), TTL=128
Reply from 127.0.0.1: bytes=32 time 0.04 ms (0 ms), TTL=128
Reply from 127.0.0.1: bytes=32 time 0.04 ms (0 ms), TTL=128
Reply from 127.0.0.1: bytes=32 time 0.03 ms (0 ms), TTL=128

In questo caso per avere il massimo numero di ping possibili in un intervallo temporale utilizzare un file temporaneo per l'output:

tping hostSuReteLocale -d 0 -n 1000 > out.txt

 

Download
Contattare l'autore per segnalare eventuali problemi o suggerimenti.

Il Programma Principale

tping1.13.zip
(28 KByte)

True Ping 1.13
Il piccolo programmino. Copiarlo nella cartella di Windows per maggiore comodita'.
tping-source 1.13.zip
(74 KByte)
Sorgenti di True Ping 1.13 - C++ su Visual Studio 6.0.
Licenza Open-Source - GNU General Public License version 2
True Ping si trova anche su http://sourceforge.net/projects/tping/

 

Schermata

Storia delle Versioni

Release 1.13 - 16 September 2006:
News: Added Realtime Jitter calculation as described in RFC 1889.
News: Added Timestamp option printed at every received packet.
BugFix: Fixed bug in Jitter calculation.

18 July 2006 - Release 1.12:
News: Added Jitter calculation on the first 100 received packets.
News: Added Set Don't Fragment Flag in Packet.
Update: Changed Banner.

15 December 2004 - Release 1.11:
News: Implemented option -a for reverse hostname resolving.
News: Implemented option -z count that skips the first count received packets in the
statistic calculation. Useful if the first packets are slower than the average.

Release 1.10:
News: Implemented option -v for Type of Service.
News: Implemented return value of the program.
if ERRORLEVEL 1 THEN the remote server replied successfully.
Useful for batch calls to check if the server is available.

Release
1.09 - Update: Added correct HOP calculation if starting TTL=31 on remote server
Bug fix: some messages was fixed (grammatically)
Bug fix: the Average is calculated correctly now, in case of Packet Loss.

1.08 - Bug fix: il parametro -t non veniva piu' gestito nella precedente versione. 
Bug fix: il parametro -j faceva partire TTL da 2 e non da 1, quindi salta il primo hop

1.07 - Nuova opzione -j che effettua un piccolo trace route (un solo ping per ogni hop)
1.06 - Viene visualizzato ora anche il numero di Hop (ovvero router tra il tuo computer e quello che stai pingando) basato sul valore TTL.
1.05 - Aggiunta opzione per l'intervallo di attesa tra un ping e il successivo. Messaggio di errore se un parametro e' errato.
1.04 - Aggiunta opzione per buffer standard come nel ping (per default il buffer casuale e' differente ad ogni invio).
1.03 - Aggiunta la visualizzazione delle statistiche, opzione per thread, i dati nel buffer non sono casuali (come nel ping che abbassa i tempi in modo non realistico con la compressione ISDN attiva) e qualche aggiornamento.
1.02 - Corretto un errore di Creazione Thread su Windows 9x
1.01 - Il valore TTL viene letto correttamente
1.00 - Prima versione

Copyright © 2001-2004 Andrea Denzler - denzler(at)usa.net