mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik IP-Stack und DNS auf ARM


Autor: Werner B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe mir ein Mikrocontrollerboard gebaut mit einem LPC2378. Das 
Board möchte ich nun mit dem Ethernet verbinden (PHY und so weiter ist 
natürlich drauf).
Ich habe hier bereits gelesen, dass ich dazu einen IP-Stack benötige 
(?).
Diese möchte ich natürlich selber programmieren; meine Frage hierzu: wo 
soll ich anfangen? Ich möchte, dass mein Controller Interruptgesteuert 
Pakete empfangen kann, und diese dann richtig verarbeitet.
So, und noch gleich eine Frage: ich möchte die Software auf dem Board so 
bauen, dass ich das Board aus dem LAN über einen Hostnamen, und nicht 
über die IP ansprechen kann. Die IP weiss ich ja nicht, da das Board 
natürlich DHCP verwenden wird. So, um jetzt Hostnamen in IP-Adressen 
auflösen zu können, muss ich DNS implementieren. Aber, was kommt denn 
bei meinem Board an, wenn ich auf dem PC eingebe "ping test" ? kommt da 
ein DNS-Paket an, oder wie oder was. Und was steht da drin, und wie muss 
ich es beantworten?
Dazu habe ich nichts schlaues gefunden; Wikipedia ist da ein bisschen 
kryptisch....

Autor: Benjamin S. (recycler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1. IP-Stacks sind nicht ganz trivial. wenn dann schau dir den von urlich 
radig mal für den atmel an.

2. das mit dem dhcp und ip läuft ein wenig anders.
dein board hat immer eine ip. den namen weiß der dns server, den du 
anfragen kannst vom pc aus. soll das dynamisch gehen, muss der dhcp 
server dem dns server mitteilen, dass der name test.lan auf 192.168.0.42 
zeigt. das hat mit deinem board so nicht zu tun.
dns musst du in dem sinn nur implementieren, wenn du auf einen anderen 
host zugreifen willst bzw deine ip erfahren, die du aber sowieso weißt. 
wenn dann brauchst du dns auf dem anderen ende der kommunikation zb wenn 
du mit einem pc auf dein board zugreifen willst. das ganze wird dann 
umgewandelt in eine ip und mit der läuft die kommunikation.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das Board möchte ich nun mit dem Ethernet verbinden
> (PHY und so weiter ist natürlich drauf).

> Ich habe hier bereits gelesen, dass ich dazu einen IP-Stack
> benötige (?).

Im Prinzip nein, aber ...

Um über Ethernet mit einem Gerät zu kommunizieren, bedarf es keines 
IP-Stacks, man kann auch direkt Ethernet-Pakete versenden und empfangen.

Auf dieser Ebene wird die sogenannte MAC-Adresse Deines Boards 
verwendet.

TCP/IP ist ein Protokoll, das (unter anderem) auf Ethernet verwendet 
werden kann und viel vom Verwaltungsaufwand einspart.
Um das nutzen zu können, benötigtst Du einen IP-Stack.

> Diese möchte ich natürlich selber programmieren;
> meine Frage hierzu: wo soll ich anfangen?

Indem Du es sein lässt und einen verfügbaren IP-Stack verwendest. Ein 
IP-Stack ist alles andere als trivial, so etwas programmiert man sich 
nicht mal eben selbst, vor allem, wenn man mit der Materie noch nie 
vorher zu tun hatte.

Damit Dein Board eine IP-Adresse automatisch zugewiesen bekommen kann, 
musst Du zusätzlich zum IP-Stack einen DHCP-Client implementieren.

Dieser fordert beim DHCP-Server (den es irgendwo in Deinem Netzwerk 
geben muss) eine IP-Adresse an.

In Heimnetzwerken ist das oft eine vom Router übernommene Funktion.

Für die Namensauflösung wird ein Protokoll namens DNS verwendet. Im o.g. 
Heimnetzwerkfall wird das üblicherweise ebenfalls vom Router übernommen, 
der bei Namensanfragen in der von ihm verwalteten Liste lokaler Geräte 
nachsieht und bei Nicht-Auffinden des Namens den übergeordneten 
DNS-Server des Providers kontaktiert.

Im von Dir beschriebenen Modell (PC will Dein Board unter dem Namen 
"test" ansprechen) ist es ganz und gar nicht erforderlich, daß Dein 
Board etwas von DNS versteht, das müsste es nur, wenn es im Gegenzug 
Deinen PC über seinen Namen ansprechen wollte.

Du musst nur dafür sorgen, daß Dein Board per DHCP-Request eine 
IP-Adresse reserviert und dabei seinen Namen bekanntgibt.

Als ersten Schritt aber würde ich eine statische IP-Adresse verwenden 
und diese als statische DHCP-Lease in Deinem Router eintragen (sofern 
der das zulässt). Dann kann Dein PC nach wie vor nach "test" fragen, 
aber Du musst noch nicht gleich einen DHCP-Client implementieren.

Auch einen DCHP-Client solltest Du nicht selberprogrammieren, sondern 
auf eine der unzähligen fertig verfügbaren freien Lösungen 
zurückgreifen.

Das reduziert die Fehlermöglichkeiten ganz drastisch.

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst aber auch einen fertig in Hardware gegossenen TCP/IP Stack 
verwenden.

Schau mal auf der Seite von Wiznet. Da gibt es ein paar Ethernet TCP/IP 
Controller die den ganzen TCP Stack schon implementiert haben.

Gruss Helmi

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.