Network Time Protocol (NTP) is a TCP/IP protocol developed when the internet was in its infancy. It was developed by David Mills of the University of Delaware who was trying to synchronise computers across a network with a degree of precision.
NTP is a UNIX based protocol but it has been ported to operate just as effectively on PCs and a version has been included with operating systems since Windows 2000 (including Windows 7, Vista and XP).
NTP, and the daemon (application) that controls it, is not just a method of passing the time around. Any system running the NTP daemon can act as a client by querying the reference time from other servers or it can make its own time available for other devices to use which in effect turns it into a time server itself. It can also act as a peer by collaborating with other peers to find the most stable and accurate time source to use.
One of the most flexible aspects of NTP is its hierarchical nature. NTP divides devices into strata, each stratum level is defined by its proximity to the reference clock (atomic clock). The atomic clock itself is a stratum 0 device, the closest device to it (often a dedicated NTP time server) is a stratum 1 device whilst other devices that connect to that become stratum 2. NTP can maintain accuracy to within 16 stratum levels.
Any network that needs to be synchronised, has to first identify and locate a time source for NTP to distribute. Internet sources of time are available but thee are often taken from stratum 2 devices that operate through the firewall. The only way NTP can peer the time is if the TCP/IP port is left open to allow the traffic through. This could lead to security issues as malicious users can take advantage of this firewall hole.
Dedicated NTP time servers find a source of time via GPS or radio signals and so don’t leave a network vulnerable to attack. By attaching a NTP time server to a router and entire network of hundreds and even thousands of devices can be synchronised thanks to NTP’s hierarchical structure.