Hallo,
ich besitze ein Evaluationsboard von Hitex (STR9 COM Stick). Nun bin ich
dabei einen reinen Ethernet Frame zusenden und mit WIreshark möchte ich
diesen Ethernt Frame empfangen und analysieren. Was müsste ich genau
tun, damit ich auf der Mikrocontrollerseite einen Ethernet Frame senden
kann bzw. was müsste ich auf der PC Seite genau tun, damit ich mit
Wireshark Ethernet Frames sehen kann?
Im Prinzip läuft die Ethernetkommunikation bei mir in einer while(1)
Schleife in der uIPMain Funktion ab. Hier müsste ich quasi die Funktion
TransmitPacket() permanent aufrufen. Leider sehe ich in Wireshark nichts
sinnvolles.
Kann mir jemand bei meinem Problem helfen ?
Wie ist denn dein µC mit dem PC verbunden? Wenn da z.B. ein Switch
dazwischen hängt, wird der das wahrscheinlich nur dann weiterleiten,
wenn die Ziel-MAC-Adresse die des Rechners oder die Broadcast-Adresse
ist.
Moeglicherweise nicht. Moeglicherweise sendet der PC nichts ohne
vorherige Verbindungsaufnahme. Verbind doch mal den PC mit dem LAN und
horch diese Kommunikation ab.
Oktav Oschi schrieb:> Moeglicherweise nicht. Moeglicherweise sendet der PC nichts ohne> vorherige Verbindungsaufnahme
Ein Verbindungsaufbau wie bei TCP sind auch Packete, die ich sehen kann.
Wenn ich, mit welchem Programm auch immer, ein UDP Packet losschicke,
und die Route zeigt auf das richtige Interface, geht das Packet raus.
Und alles, was an diesem Interface ankommt, wird von wireshark
angezeigt, solange es auch nur einigermassen ethernetkonform ist.
Wichtig ist, das wireshark auch am richtigen Interface lauscht.
MfG Klaus
Vielen Dank für eure Unterstützung. Ich möchte eigentlich nur ein reines
Ethernet Packet (ohne TCP oder UDP) via Crossoverkabel vom
Mikrocontroller an den PC senden. Reciht es da eigentlich, nur die
Funktion "TransmitPacket()" auszuführen ?
Ich kann doch in der TransmitPacket Funktion statt dem Puffer
"uip_appdata" auch direkt einen Wert übergeben. Dies habe ich auch
gemacht, leider kann ich auf der PC Seite aus mit WIreshark keine
plausiblen Daten sehen. Ich sehe irgendwelche anderen Packete mit
Wireshark.
Leo schrieb:> Leider sehe ich in Wireshark nichts> sinnvolles.
- Richtiges Interface ausgewählt und promiscuous mode ist aktiviert?
(http://www.wireshark.org/faq.html#q7.6)
- Bevor Du rumzuhacken versuchst, probier einfach ein Beispielcode aus
um richtige Ergebnisse zu bekommen. Danach arbeite weiter an dein
Vorhaben.
Leo schrieb:> Reciht es da eigentlich, nur die> Funktion "TransmitPacket()" auszuführen ?
- Vllt./vllt. auch nicht. Zu wenig Code um das zu beurteilen
Wo wird im Code oben überhaupt ein UDP Frame erzeugt? Ausser der uIP
Standardschleife sehe ich oben nichts und die tut nur was man ihr sagt.
Wenn das "nichts" ist, dann tut sie genau das und Wireshark zeigt genau
das an.
Ich möchte zunächst nur ein Ethernet Frame versenden. Da habe ich noch
so meine Schwierigkeiten. Ich suche jetzt zunächst im Code wo man die
Ziel MAC Adresse einstellt.
Mit diesem Code nimmst du einen leeren unbeschrifteten Briefumschlag,
steckst ihn so wie er ist in den Briefkasten und wunderst dich, warum
die Post ihn wegwirft statt ihn deiner Oma zuzustellen. Kein MAC-Header,
kein IP-Header, kein UDP-Header, kein garnix. Nur Nullen.
Vorausgesetzt natürlich, das TransmitPacket ist nicht auch noch
auskommentiert, wie im Paket grad eben.
Die Ethernet FCS macht der Adapter/Controller üblicherweise selbst.
In uIP gibt es UDP Support. Zwar nicht unbedingt in der Doku, aber im
uip.h steht dazu was drin und die Beisiele für DHCP und DNS verwenden
UDP.
Im Blindflug ganz ohne jede Ahnung von Ethernet/IP/UDP wirds nicht
gehen. Gibt genug Literatur dazu. Im Netz und auf toten Bäumen.
Was meinst du damit ?
>>Im Blindflug ganz ohne jede Ahnung von Ethernet/IP/UDP wirds nicht>>gehen. Gibt genug Literatur dazu. Im Netz und auf toten Bäumen.
Leo schrieb:> Was meinst du damit ?
Dass der bisherige Thread und deine Frage über "Type" usw völlige
Unkenntnis über die erwähnten Protokolle nahelegt. Löcher, die man per
Literatur stopfen kann.
Ich weiss schon was mit dem Type gemeint ist. Zum Beispiel für
Internetworking Protocol (IP) setzt man Type auf 0x0800. Über diesen
Type kann der Empfänger entscheiden, um was für ein Frame es sich
handelt.
Jetzt zum UIP Stack. Der UIP Stack ist irgendwie schwer verständlich.
Ein UDP Telegramm zu erzeugen und diesen zu senden, ist für mich nicht
einleuchtend, wie man da genau vorgehen muss.
Leo schrieb:> Ich weiss schon was mit dem Type gemeint ist. Zum Beispiel für> Internetworking Protocol (IP) setzt man Type auf 0x0800.
Weshalb dann ausgerechnet Novell?
> Jetzt zum UIP Stack. Der UIP Stack ist irgendwie schwer verständlich.> Ein UDP Telegramm zu erzeugen und diesen zu senden, ist für mich nicht> einleuchtend, wie man da genau vorgehen muss.
Ich habs nur als Server verwendet und das ist es einfacher, weil alles
schon drinsteht, nur in verkehrter Reihenfolge.
Deshalb der Tipp mit dem DHCP/DNS-Code. Da ist UDP als Initiator drin.
Da es offenbar immer noch nicht deutlich genug rüber kam: Ich werde hier
keine Schulung über die dir fehlenden Grundlagen der Netzwerkprotokolle
abhalten.
Ich fange bei so was umgekehrt an. Ich lass mir vom PC einen Frame
schicken. Da kann man sich leicht einen gültigen Frame erzeugen lassen,
z.B. mit Ping oder auch direkt mit C, Perl, VB .. . Und Wenn die Routes
stimmen (oder Broadcast Ping nehmen) kann man auf dem µC den Frame
empfangen. Dann hat man schon mal ein Muster für einen gültigen Frame.
Erster Versuch ist dann, ihn erstmal zurück schicken. Dann sieht man
schon mal im Wireshark was falsch ist. Daran kann man sich dann
abarbeiten zusammen mit den entsprechenden RFCs. Und die Network Byte
Order nicht vergessen, wenns um Werte mit mehr als 8 Bit geht.
MfG Klaus
Ich aknn nun Ethernet Frames vom Mikrocontroller versenden und auch
empfangen. Das Senden vom PC mache ich über WinPcap. Das funktioniert
super.
Jetzt ist es so, dass ich den uip Stack nun einsetzen möchte. Wie kann
ich nun ein UDP Frame vom Mikrocontroller an den PC versenden ? Für mein
Evaluationboard habe ich bereits ein lauffähige Webserverapllikation.
Nach langen Suchen ist mir noch nicht klar wie man mit dem uip Stack UDP
Frames erteugen und versenden kann. Gibt es hier jemand der sowas
schonmal gemacht hat ?