tcp/ip-stack vorgehensweise bei konfiguration

OP #684478
Lesenswert?

Hallo,

nach welcher groben verfahrensweise schreibt man einen tcp/ip-stack?

1. socket installieren
2. IP konfigurieren
3. ARP und ICMP
4. ... weitere protokolle

und wenn das alles installiert worden ist nach der reihe geht man dann 
einfach in die while(1) schleife der main-routine und wartet bis ein 
entsprechender interrupt auftritt?

Ich hab mir schon ein paar stacks angeschaut - jedoch werden oft 
unterschiedliche verfahren durchgeführt...

Vll. kann mir jmd sagen, was am anfang alles installiert werden muss und 
wo der interrupt beginnen muss, wenn ein neues ip-paket ankommt oder 
gesendet werden soll?

Bernd
#684569
Lesenswert?

Von unten nach oben, würde ich sagen. TCP/IP ist in mehreren Layern 
aufgeteilt. Ich würde mit der untersten Schicht anfangen.

Ich würde erstmal versuchen auf unterster Ebene ICMP-Nachrichten zu 
verschicken, zu empfangen und auszuwerten. Zum Beispiel einer 
Sync-Nachricht an eine IP-Adresse, die der Router nicht kennt und mit 
einer Unreachable-Nachricht beantworten müsste....

Da du offensichtlich mit Begriffen wie "Interrupts" noch nichts 
anzufangen weisst, würde ich erstmal ganz einfaches Polling vorschlagen.
OP #684596
Lesenswert?

doch mit interrupts kann ich schon was anfangen und hab ich auch schon 
programmiert... und "von unten nach oben" ist mir auch klar...

nur die art wie man das programmiert, ist mir nicht ganz klar... sind 
das wirklich einzelne Funktionen, die nach einander aufgerufen werden zu 
beginn bis alles initialisiert worden ist?

Und während das programm in der while(1) schleife läuft im 
main-programm, werden neue pakete durch interrupts erkannt und dann die 
entsprechenden funktionen aufgerufen? Normalerweise soll ja ein solcher 
interrupt sehr kurz gehalten werden, aber wenn ein interrupt dann daraus 
besteht, dass erst erkannt werden muss ob das paket auch wirklich für 
einen ist, das paket bis zur eigentlich information entpackt werden muss 
- dauert das doch schon etwas länger....

wie man das richtig effektiv programmiert, hab ich noch nicht ganz 
verstanden...

Bernd
Gast #684626
Lesenswert?

Hallo Bernd,

wahrscheinlich würde ich ein Multitasking-Betriebssystem dazu einsetzen.

Die Interruptroutine nimmt nur das Paket entgegen, aktiviert die 
Netzwerktask und ist dann schon fertig.

Die Netzwerktask kümmert sich um das Paket, nimmt es auseinander und 
baut eine passende Antwort zusammen. Die Antwortpakete werden in eine 
Warteschlange gelegt und nach und nach von einer anderen 
Interruptroutine verschickt.
Main() kann in der Zeit weiter warten und vielleicht auf bestimmte 
Ergebnisse aus der Kommunikation reagieren.

Gruß,
Martin
#684635
Lesenswert?

Für mich macht es den anschein, als wenn hier ziemlich wenig 
Programmiererfahrung vorhanden ist. Macht es sinn gleich mit der 
implementierung eines TCP/IP-Stacks anzufangen? Meiner Meinung nach 
nicht.

Meine persönliche Herrangehensweise ist immer Stückchen für Stückchen 
und irgendwann setzt sich das Puzzle automatisch zusammen. Die Frage 
nach Reihenfolge, wie man was initialisiert und aktiviert stellt sich am 
Anfang einfach nicht. Ausserdem ist sie abhängig von der eingesetzten 
Hardware.

Überlicherweise funktionieren Interrupt-gesteuerte Kommunikation über 
sog. Ringbuffer: Eine Interruptroutine schreibt die empfangenen Daten in 
einem Buffer und signalisiert dem vordergrundprozess, daß es etwas zu 
tun gibt..
OP #684645
Lesenswert?

>Die Interruptroutine nimmt nur das Paket entgegen, aktiviert die
>Netzwerktask und ist dann schon fertig. Die Netzwerktask kümmert sich um >das 
Paket, nimmt es auseinander und baut eine passende Antwort zusammen.

d.h. der erste interrupt macht seine tasks - paket entgegennehmen und im 
speicher sichern -  und ruft zum schluss in form eines weiteren 
interrupts  -  xyz Bit setzen die nächste task auf und wird danach 
beendet?

Diese Task nimmt dann das Paket auseinander und jedes Protokol holt sich 
seinen teil über einen pointer ab. Antworten werden generiert und durch 
Interrupt angezeigt, dass diese versendet werden können.


>Die Reihenfolge, wie man was initialisiert und aktiviert stellt sich am
>Anfang einfach nicht.

versteh ich leider nicht? Man macht sich doch zuvor gedanken wie man was 
aufbauen möchte und arbeitet sich dann step by step durch?

Bernd
#684712
Lesenswert?

Bernd Schuster wrote:

>>Die Reihenfolge, wie man was initialisiert und aktiviert stellt sich am
>>Anfang einfach nicht.
>
> versteh ich leider nicht? Man macht sich doch zuvor gedanken wie man was
> aufbauen möchte und arbeitet sich dann step by step durch?

Wenn man noch nicht mal nen Plan hat, wie die Kommunikation 
funktioniert, finde ich es absolut unsinnig sich zu diesem Zeitpunkt 
Gedanken zu einer Funktionaltät zu machen, der in astrologisch weiter 
Ferne liegt....
OP #685225
Lesenswert?

was genau ist eine EMAC Hash Address 64Bit groß und wozu benötigt man 
diese? Wird hierdurch die MAC Adresse geschützt / verschlüsselt 
übertragen?


Des Weiteren kann mein µController bis zu vier verschiedene MAC Adressen 
in den folgenden REgistern speichern.

EMAC specific Address 1 Low, First 4 Bytes
EMAC specific Address 1 High, Last 2 Bytes
EMAC specific Address 2 Low, First 4 Bytes
EMAC specific Address 2 High, Last 2 Bytes
EMAC specific Address 3 Low, First 4 Bytes
EMAC specific Address 3 High, Last 2 Bytes
EMAC specific Address 4 Low, First 4 Bytes
EMAC specific Address 4 High, Last 2 Bytes

Ich hab mal von einem Verfahren gelesen, welches sich dann stets die 
passende MAC raussucht oder nach einer gewissen zeit diese ändert, wegen 
Angriffen etc. Und von irgendwo holt sich das Gerät die neuen MAC 
adressen ab und löscht gleichzeitig die älteste aus dem system.

Weiß da jmd noch mehr zu diesem Thema?

Bernd
#685230
Lesenswert?

EMAC? Vieleicht solltest du mal deine Quellen offenlegen.....

Die Mac-Adresse kann man in der Regel ganz normal aus dem Speicher des 
Kontrollers auslesen. Wie und Wo die zu lesen ist hängt von der 
eingesetzen Hardware ab...

Das mit den sich wechselnden MacAdressen sind Sicherheitsthemen die dich 
am Anfang nicht ablenken dürfen und erstmal bei Seite packen solltest..
OP #685233
Lesenswert?

AT91RM9200 verwende ich als 
http://www.atmel.com/dyn/products/product_card.asp?part_id=2983

EMAC bedeutet nur ethernet mac interface oder so ähnlich also nichts 
spezielles...

>Die Mac-Adresse kann man in der Regel ganz normal aus dem Speicher des
>Kontrollers auslesen. Wie und Wo die zu lesen ist hängt von der
>eingesetzen Hardware ab...

hmmm hab ich jetzt beim durchlesen des Ethernet Teils nichts gelesen, 
dass irgendwo die mac adresse hinterlegt sei...

Berndd

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren