Network Time Protocol is an application layer protocol used for clock synchronization between hosts on a TCP/IP network. The goal of NTP is to ensure that all computers on a network agree on the time, since even a small difference can create problems. For example, if there is more than 5 minutes difference on your host and the Active Directory domain controller, you will not be able to login into your AD domain.
Network Time Protocol uses a hierarchical system of time sources. At the top of the structure are highly accurate time sources – typically atomic or GPS clocks. These clocks are known as stratum 0 servers. Stratum 1 servers are directly linked to stratum 0 servers and computers run NTP servers that deliver the time to stratum 2 servers, and so on (image source: Wikipedia):
Network Time Protocol uses a client-server architecture; one host is configured as the NTP server and all other hosts on the network are configured as NTP clients. Consider the following example:
Host A is configured to use a public NTP server uk.pool.ntp.org. Host A will periodically send an NTP request to the server. The server will also provide the accurate data and time. This helps Host A to synchronize its clock.
Network Time Protocol uses a well-known UDP port 123. The current version is NTPv4, and it is also backward compatible with NTPv3.