14. Simple Network Time Protocol (SNTP)
Primary servers and clients complying with a subset of NTP, called
the Simple Network Time Protocol (SNTPv4) [RFC4330], do not need to
implement the mitigation algorithms described in Section 9 and following
sections. SNTP is intended for primary servers equipped with a single
reference clock, as well as for clients with a single upstream server
and no dependent clients. The fully developed NTPv4 implementation is
intended for secondary servers with multiple upstream servers and multiple
downstream servers or clients. Other than these considerations, NTP and
SNTP servers and clients are completely interoperable and can be intermixed
in NTP subnets.
Usually an SNTP client will add the latency/2 to get the correct time - I.E. if a packet takes 350 msec to return, then you'll want to add 175 msec from the wall-clock-time in the packet to get the "current wall clock time".
There is a way to do the xxd step using original netcat.
Included with nc was a short program called nc-data.
It converts from btoa and atob for shoveling data to nc.
Slower than xxd but still useful. It also shows octal, decimal and byte number.
Another exercise might be a one-liner for the TAICLOCK protocol: http://cr.yp.to/proto/taiclock.txt (Alternative to SNTP with smaller packets and support for leap seconds.)
Less than well known: you can also use the timestamp of an ICMP packet to set your clock. The "clockdiff" command, for example, can be used to find the difference.