Forum: Mikrocontroller und Digitale Elektronik HILFE Problem mit Ethernet UDP Verständnis PROBLEM


von Sebastian Sobierajski (Gast)


Lesenswert?

Hallo Zusammen,
Ich brauche Hilfe bei der Entscheidung wie ich ein MC mit einem PC via
Ethernet verbinde. Basierent auf UDP/IP

Wenn ich mir das Schichten Modell (ISO/OSI-Referenzmodell) anschaue

Mit:
1. Schicht 1: Bitübertragungsschicht (physical layer)
Hier wird die physikalische Übertragung (elektrisch sowie mechanisch)
definiert: das Medium (Kabel, Funk, Infrarot), die gesendeten Signale,
... OK CAT5...

2. Schicht 2: Sicherungsschicht (data link layer)
(auch Verbindungsschicht oder MAC-Layer) Hier werden die Daten in
einzelne Rahmen aufgeteilt und gesichert übertragen. Beispiele für
diese Schicht sind PPP, SLIP und HDLC.

SCHICKT 2 : PPP ODER DAS ist meine FRAGE soll ich hier an dieser stelle
PPP benutzen?


3. Schicht 3: Netzwerkschicht (network layer)
(auch Vermittlungsschicht) Zentrale Aufgabe ist bie Bestimmung eines
optimalen Weges durch ein Netzwerk. Ein wichtiges Protokoll auf dieser
Ebene ist IP (siehe Abschnitt 4).
AUCH OK

4. Schicht 4: Transportschicht (transport layer)
Diese Schicht stellt einen gesicherten Kanal zwischen zwei Stationen
her, so daß die Daten einfach seriell geschrieben bzw. gelesen werden
können. Auf dieser Ebene ist das TCP (siehe Abschnitt 5) zu finden.
HIER HALT UDP

DER VOLLSTÄNDIGKEIT ZU LIEBE DIE LETZTEN ZWEI SCHICHTEN:

5. Schicht 5: Sitzungsschicht (session layer)
(auch Kommunikationssteuerungsschicht) Diese Schicht synchronisiert das
Zusammenspiel mehrerer Stationen. Es wird beispielsweise festgelegt, wie
eine Sitzung zeitlich abzulaufen hat (Aufforderung zum Senden eines
Passwortes, Senden des Passwortes, Bestätigung des Passwortes, ...).


6. Schicht 6: Darstellungsschicht (presentation layer)
Hier werden die Daten auf in ein einheitliches Format transformiert,
zum Beispiel durch Alphabetumwandlungen oder Datenkompression. An
dieser Stelle gehen oft die Umlaute verloren (8 bit -> 7 bit).

7. Schicht 7: Anwendungsschicht (application layer)
Diese Schicht beschreibt die Schnittstelle, über die Anwendungen auf
Dienste eines anderen Systems zugreifen können.


Ich muss Daten von einem MC an ein Rechner schicken. Basierend auf
UDP/IP. ICh weis nicht was ablaufen muss wenn der MC über Ethernet an
die Netzwerkkarte des PCs angeschlossen wird.....Welche Schicht die
Adressvergabe UND UND ....Brauch ich überhaupt sowas wie Adressvergab?


Kann es sein das Das Ethernet - Protokoll mit ARP bzw. RARP die
Bekanntmachung der beiden (MC und PC) übernimmt.

Will nur sicher gehen.

BIN DANKBAR FÜR JEDE ART VON HILFE

Sebastian

von Peter Mahler (Gast)


Lesenswert?

Hallo,


ARP : Adress-Resolution Protcol übernimmt die Auflösung einer
IP-Adresse auf die MAC-Addresse(6-Bytes) des jeweiligen Ethernet-Chip.
Dazu wird bei der Verbindungsaufnahme ein Arp-Frame
(Who-has......tell....) ins das Ethernet als Broadcast versendet. Der
entsprechende Empfänger antwortet dann mit seiner IP-Addresse.
I.d.Regel puffern die Teilnehmer die MAC-Adressen. Die restliche
Kommunikation läuft dann über IP-/UDP-/TCP-Frames, bei denen jedoch
immer die MAC-Addresse zur bestimmung des Ziels (Ethernet-Karte)
verwendet wird.  ARP- stellt somit die Verbindung zwischen Schicht 2
und 3 her.

Du musst nicht zwingend ein ARP implementieren um mit UDP zu
kommunizieren. Sind die MAC-Adressen bekannt könntest du darauf
verzichten. Dein Programm wird jedoch dann immer nur mit der einen
Gegenstelle komunizieren können.

Bei der Implemeniertung von UDP stellt sich die Frage ob man einen
kompletten TCP-Stack implementiert/kauft oder lediglich einen minimalen
UDP-Teil selbst schreibt. UDP lässt sich relativ überschaubar mit
vertretbarem Aufwand selbst programmieren, dabei hast du noch den
Vorteil, dass dein Laufzeitverhalten überschubar bleibt. Bei TCP würde
ich mir das nicht antun. Falls der  MC lediglich mit UDP kommunizieren
muss und ein TCP unwahrscheinlich ist würde ich den UDP-Stack selbst
runtertippen. Soll irgendwann auf TCP umgestellt werden können bist du
mit einem fertigen TCP-Stack schneller am Ziel.

Zu beachten ist auch dass UDP verbindungslos ist, der Sender erfährt
nicht, dass das Paket angekommen ist (Es sei den dass Protokoll/Schicht
7) sieht diese vor. TCP hingegen ist verbindungsorientiert, Der Sender
weiss schon in der Schicht 3/4, dass die Daten angekommen sind. Der
grosse Nachteil von TCP ist dass die Datenübertragung nicht mehr
deterministisch sein kann, weder auf dem Sender nocht auf dem
Empfänger.

Mit dem Packet-Sniffer Ethereal www.ethereal.com kannst du dir die
Komunikation auf PC schön anschauen und die Datenpakete analysieren.


Gruss,

Peter

von Sebastian Sobierajski (Gast)


Lesenswert?

Hallo,

das leuchtet ein.

Um etwas genauer auf das Problem bzw. meine Aufgabenstellung zu kommen.


Der MC bekommt Daten (Messages )aus 2 unterschiedlichen Schaltungen.
Diese werden solange gepuffert bis eine Message komplette aufgzeichnet
wurde.

Dann werden diese Daten an den Rechner via Ethernet übertragen.

Soweit ist ja alles Klar.

Mir Fehlt das Verständnis bei der Initilisierung d.h. des
physikalischen Verbindungsaufbaus zwischen PC Netzwerkkarte und MC mit
Ethernet anschluss.
Ich möchte ja das der MC sich beim PC bekannt macht.

Also Sobald PC und MC Verbunden sind sendet der PC einen ARP REQUEST
mit MC IPloss (Vorbedingung IP von MC ist bekannt bzw Fest).
MC Antwortet dem PC mit IP und MAC.

Könnte das ja so funktionieren? Ist das so richtig?

Sebastian

von JOE (Gast)


Lesenswert?

Hi,

Also prinzipiell funktioniert das ganze so. Ganz am Anfang steht das
ARP Protokoll das sich auf der selben Ebene wie das IP Protokoll
befindet.
Wenn dein µC intialisiert ist, dann solltest du als erstes einen ARP
Request ins Netz schicken.
Das ist eigentlich nur ein Broadcast auf MAC Adressen ebene, also eine
FF:FF:FF:FF:FF:FF Adresse (6 Byte für Ethernet) und wenn du die IP
Adresse mit der du Kommunizieren willst shcon weißt, dan schreibst die
auch rein, ansonsten machst auch da einen Broadcast mit
255.255.255.255

So nach der Aktion weißt du mal die MAC Adresse/n deines
Kommunikationspartners. IP Adresse wirst ja nehm ich mal an auch schon
wissen, also kannst eigentlich schon fleißig UDP Pakete an dein Ziel
schicken.
Ja ist vom logischen Aufbau ja nicht so schwierig. Aba
Programmtechnisch sicher eine schöne Herausforderung!
Ich würd dir raten, das du es schrittweise durchgehst, also zuerst mal
ARP richtig implementieren und dann mit einem Sniffer wie zB. Ethereal
überprüfen und dann erst die höheren Protokolle implementieren.

hoff das hat dir weiter geholfen.

lg. Joe

von Sebastian Sobierajski (Gast)


Lesenswert?

OK Hab verstanden. Danke nochmals An ALLE :-)

Werde mich bestimmt nochmal melden :-)

von Peter Mahler (Gast)


Lesenswert?

Hallo,

bei jeder IP-Kommunikation wird derjenige, der die Verbindung zum
ersten mal aufbaut einen ARP-Request mit der
Target-MAC-Adresse 00:00:00:00:00:00 (Broadcast) und seiner eignen
uC-MAC-Addrese machen. Als Parameter sind noch die eigentlichen
IP-Adressen enthalten.
Der Befehl lautet im Klartext "Who has [DST-IP-Addresse] tell
[SRC-IP-Adresse]".
Dein uC führt also den ARP-Request zuerst aus. Der PC erkennt den
Broadcast, vergleicht die in den Parametern erhaltene (DST)IP-Addresse
mit seiner eigenen IP-Addresse und schickt ein ARP-Reply an die
uC-MAC-Addresse, dieser enthält als Parameter auch wieder die
IP-Adressen der beiden Teilnehmer.
Damit sind beiden Rechnern die IP-Addresse und die zugehörige
MAC-Addresse begannt. Ab jetzt kann die eigentliche Komunikation
loslegen. Diese ARP-Funktionalität ist immer Basis-Bestandteils des
TCP/IP-Stacks und sollte immer vorhanden sein. Du kannst auch nicht
sicher sein, dass der PC nicht mal zwischendurch selbst einen
ARP-Request anstösst, und damit überprüft ob deine IP-Addresse noch
gültig ist.


Gruss,

Peter

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.