Net::NTP - Antwortpakete eines NTP-Servers einfach dekodieren
Veröffentlicht von Thomas Fahle am (Permalink)
"Das Network Time Protocol (NTP) ist ein Standard zur Synchronisierung von Uhren in Computersystemen über paketbasierte Kommunikationsnetze. NTP verwendet das verbindungslose Transportprotokoll UDP. NTP wurde speziell entwickelt, um eine zuverlässige Zeitgabe über Netzwerke mit variabler Paketlaufzeit zu ermöglichen." Quelle: Wikipedia: Network Time Protocol.
NTP-Server versenden Antworten im NTP Message Format, die sich mit Net::NTP - Perl extension for decoding NTP server responses von Ask Bjørn Hansen einfach dekodieren lassen.
Beispiel:
Net::NTP exportiert eine einzige Funktion, get_ntp_response(), die als optionalen Parameter auch die Adresse eines NTP-Server annimmt und liefert einen Hash zurück, dessen Schlüssel die einzelnen Abschnitte des NTP Antwort Pakets enthält.
#!/usr/bin/perl use strict; use warnings; use Net::NTP qw(get_ntp_response); my $ntp_server = shift || 'ptbtime1.ptb.de'; my %response = get_ntp_response( $ntp_server ); my @response_keys = sort keys %response; foreach my $response_key ( @response_keys ) { print "$response_key: $response{ $response_key }\n"; }
Das Programm liefert folgende Ausgabe:
Leap Indicator: 0 Mode: 4 Originate Timestamp: 1332443226.50195 Poll Interval: 0.0000 Precision: -21 Receive Timestamp: 1332443226.90883 Reference Clock Identifier: PTB Reference Timestamp: 1332443217.35515 Root Delay: 0 Root Dispersion: 0.0000 Stratum: 1 Transmit Timestamp: 1332443226.90883 Version Number: 3
Die Schlüssel des %response ensprechen den einzelnen Feldern des NTP Antwortpakets:
1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |LI | VN |Mode | Stratum | Poll | Precision | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Root Delay | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Root Dispersion | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reference Identifier | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Reference Timestamp (64) | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Originate Timestamp (64) | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Receive Timestamp (64) | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Transmit Timestamp (64) | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Key Identifier (optional) (32) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | | | Message Digest (optional) (128) | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Quelle: RFC 2030
Siehe auch
- CPAN: Net::NTP - Perl extension for decoding NTP server responses
- CPAN: POE::Component::Client::NTP - A POE Component to query NTP servers
- NTP: The Network Time Protocol
- PTB: Zeitsynchronisation von Rechnern mit Hilfe des "Network Time Protocol" (NTP)
- Germany - de.pool.ntp.org
- RFC 1305
- RFC 2030
- Wikipedia: Zeitserver
- Wikipedia: Network Time Protocol