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
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
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
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
OK Hab verstanden. Danke nochmals An ALLE :-) Werde mich bestimmt nochmal melden :-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.