Forum: Mikrocontroller und Digitale Elektronik AVR-Webserver von U. Radig um NTP-Server erweitern


von Kricke (Gast)


Lesenswert?

Hallo,

fuer ein Projekt wuerde ich gerne einen eigenstaendigen Webserver bauen, 
der ueber NTP andere Computer im Netz synchronisieren kann. Die 
entsprechenden DCF77-Funktionen habe ich, nur fehlt mir noch die 
NTP-Server-Implementation. Momentan arbeite ich mit dem AVR-NET-Board 
von Pollin, auf dem U. Radigs Webserver einandfrei laeuft. Kann jemand 
das abschaetzen, wieviel Aufwand das waere, neben der bereits 
bestehenden Client-Funktionalitaet noch die fuer den Server zu 
implementieren?

Gruss

Kricke

von Nico (Gast)


Lesenswert?

NTP ist serverseitig eigentlich sehr trivial, da muss du nur ein paar 
Felder ausfüllen.

von Kricke (Gast)


Lesenswert?

Was meinst du mit Felder ausfuellen?

Ich fange gerade erst an, mich in die Materie einzulesen und den Stack 
von U. Radig zu verstehen, daher bin ich fuer etwaige Hinweise sehr 
dankbar.

von laias (Gast)


Lesenswert?

Sowas habe ich später auch vor für meinen eigenen kleinen Server...

Ich würde es so angehen:
Erstmal Dokumentationen vom NTP-Protokoll anschauen und etwas 
studieren(http://www.ntp.org/);
Danach die einzelnen Befehle von NTP selbst schreiben.

Als Tipp:
Würde mir mal den C Sourcecode von OpenSource NTP Servern anschauen. 
Hatte mal welche gefunden, finde aber jetzt keine mehr.

Hoffe ich konnte etwas helfen.

mfg

Laias

P.S.: Werd in zirka einem viertel bis halbem Jahr versuchen selber einen 
NTP Server zu schreiben. Kann mich ja dann noch mal melden.

von Nico (Gast)


Lesenswert?

openntp.org ist momentan wohl einer der meist genutzten ntpds, der ist 
vom sourcecode her auch noch verständlich.

Die RFC (zu SNTP, was aber auch ok ist) findest du hier: 
http://tools.ietf.org/html/rfc4330

Zum "Felder ausfüllen":

Du kriegst vom Client ein Paket mit definierter Grösse (minimum 48 
byte)in dem er selbst ein paar Sachen eingetragen hat und du noch ein 
paar Sachen vervollständigen musst. Die ersten 16 byte sind dabei 
effektiv statisch. Aus der RFC kannst du entnehmen was da rein 
muss/sollte. Die nächsten 8 byte kopierst du aus dem Paket was vom 
Client kommt. Danach trägst du die zeit beim Empfang des Client Pakets 
ein und dahinter die Zeit beim senden deiner Antwort.

Was mir grad noch einfällt. Ich kenne zwar den Webserver von U.R. nicht 
wirklich, aber u.U. musst du noch UDP implementieren. Das ist aber für 
sich gesehen auch kein grosser Aufwand und Teile kann man sich da sicher 
aus dem TCP-Zeug zusammensuchen.

von Oliver P. (atmega32user)


Angehängte Dateien:

Lesenswert?

Hi Kricke,


im Anhang findest Du Includes fürs NTP.
Code ist von (C) 2006 Ingo Busker http://www.mikrocontroller.com
Viel Spass beim anpassen!


Grüße OLLI

von Jacob R. (jaykopf)


Lesenswert?

Wenn es nicht unbedingt der Webserver von Radig sein muss und auch ein 
Linux zum compieleren, dann könntest Du Ethersex [1] nehmen, da ist der 
NTP-Server schon dabei. Ich weiß jetzt nicht genau ob da auch nen Modul 
für DCF77 dabei ist, aber ich meine da mal was gesehen zu haben.

[1] http://www.ethersex.de

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.