Welcome to pong tool. It lives here. Pong simulates ping using the DOM provided XMLHttpRequest object. The trick is to send the request to an UNBOUND socket on the remote end. This will hopefully generate a single TCP SYN (from the client) and an ICMP "dest host unreachable" (or TCP RST) response packet. This single packet RTT is measurable using a negative acknowledgement by Pong that the request was unsuccessful:
unsuccessful request == measureable ping
See the code for more detailed info.
What pong can do:
What pong can't do:
Anyway - it was fun to make. Enjoy.
Ohhhh... yeah, pong has been tested successfully on FF4, Chrome 11, and Safari 5. I know for a fact pong is broken on Opera due to lack of CORS support. IE 8 is never going to work - the XDomainRequest objects doesn't provide useful erroring/progress callbacks.
Another heads up... Windows firewall blocks all inbound ICMP requests by default - you'll need to add an exception or disable the firewall for this to work.