Network Time Protocol (NTP) has a hierarchical client-server model. They have different layers and each layers is synchronized with upper layer. e.g. Layer 0 is synchronized with layer 1 and Layer is synchronized with layer 2 and so on.
In the top of this hierarchy there are a small number of machines known as reference clocks.
A reference clock is known as Layer 0 and is typically a Global Positioning System (GPS) that receives time from satellites. These satellites in turn have a cesium clock that is periodically corrected to provide maximum accuracy.
NTP servers belongs to layer 1.
Both the layers should be very accurate, well-maintained, accurate and calibrated because only these layers are responsible for reliability of time services.
Now coming to the point. Its all about packet exchange, kind of request and reply. So before they start doing their actual work they have to be synchronized with each other. All other layers will be synchronized except the layer 0 and layer 1. Our system has to synchronize with the NTP server. They know the processing time and the delay to process the message also. So these offsets helps the Servers to give the accurate time as much as they can.
NTP servers has some conditions to be satisfied to get attached with client. If they delay and processing is tolerable it will allow you and will give the time stamps.
OS can change the NTP server based on their geographical conditions or what is configured. For instance if you are using UBUNTU so ubuntu users will use the ntp.ubuntu.com server. Like this.
for more details there is an official website for NTP. will help you.