Forum: Mikrocontroller und Digitale Elektronik Ethernet / TCP Protokollaufbau Verständnis


von Matthias K. (matthiask)


Lesenswert?

Ich habe mich erstmalig mit Ethernet beschäftigt. Ein kleiner Webserver 
mit STM32 und ENC28J60 läuft, es waren aber nur paar spezifische 
µC-Anpassungen zu machen. Nun versuche ich das Protokoll vom Grundsatz 
zu verstehen.

Im Ethernetprotokoll werden nur die MAC Adressen für Absender und 
Empfänger verwendet. (http://de.wikipedia.org/wiki/Ethernet)
Wie kommen da die IP-Adressen ins Spiel? Ich habe was von APR gelesen, 
aber nicht wirklich verstanden. Das dies über die 7 Schichten des TCP/IP 
Protokolls funktioniert ist mir klar, aber ich verstehe es nicht.

Kann mir jemand den Ablauf einer Übertragung genauer erklären oder eine 
Seite/Literatur (deutsch!) empfehlen. Google findet zwar einiges, meist 
irgendwelche Präsentationen oder Ausarbeitungen, alles zu theoretisch, 
und einige der Autoren dürften selber nicht verstanden haben, was sie 
dort schreiben.

von (prx) A. K. (prx)


Lesenswert?

Matthias K. schrieb:

> Wie kommen da die IP-Adressen ins Spiel? Ich habe was von APR gelesen,

Unter ARP findest du mehr. Läuft so:
- Rechner A will einen TCP/IP Frame an 1.2.3.4 zustellen.
- Ruft ins Netz "An Alle: Ich suche jemand mit IP Adresse 1.2.3.4".
- Gerät B mit 1.2.3.4 meldet sich "hier bin ich, MAC-Adresse ..."
- A merkt sich dies ein Weilchen und adressiert an diese MAC-Adresse.
- 15min später oder so schlägt Alzheimer zu und er vergisst das.
- Nochmal das Ganze vor vorne.

von Christian B. (casandro)


Lesenswert?

Besorg Dir Wireshark, damit kannst Du realen Netzwerkverkehr 
analysieren. Das Programm ist sehr komfortabel.

Die Schichten kannst Du da aufklappen, und Du siehst sogar welche Bytes 
sich wohin gehören.

von Roland H. (batchman)


Lesenswert?

> Besorg Dir Wireshark, damit kannst Du realen Netzwerkverkehr
> analysieren. Das Programm ist sehr komfortabel.

Dieser Empfehlung schließe ich mich an.

Insbesondere zeigt Wireshark auch jeden Fehler in kaputten Frames. Das 
ist dann sehr hilfreich, wenn man z. B. ein IP-Paket "manuell" erstellt 
und auf die Reise schickt. Wireshark war mein "Debugger" beim Entwickeln 
eines IP-Stacks.

von Purzel H. (hacky)


Lesenswert?

Es gibt einen Dreibaender : "TCP/IP und ich"" oder aehnlich. Fuer je um 
die 100 Euronen.
Das unterste Protokoll ist IP, mit den Diensten ARP, BootP, ICMP, ...

von Matthias K. (matthiask)


Lesenswert?

Christian Berger schrieb:
> Besorg Dir Wireshark, damit kannst Du realen Netzwerkverkehr
> analysieren. Das Programm ist sehr komfortabel.

Das werde ich tun.

A. K. schrieb:
> Unter ARP findest du mehr. Läuft so:
> - Rechner A will einen TCP/IP Frame an 1.2.3.4 zustellen.

Wo steht die IP 1.2.3.4 im Ethernet-Frame, siehe link, wenn Rechner A 
loslegt?
http://upload.wikimedia.org/wikipedia/de/a/aa/Ethernetpaket.svg


> - Ruft ins Netz "An Alle: Ich suche jemand mit IP Adresse 1.2.3.4".
> - Gerät B mit 1.2.3.4 meldet sich "hier bin ich, MAC-Adresse ..."
> - A merkt sich dies ein Weilchen und adressiert an diese MAC-Adresse.
> - 15min später oder so schlägt Alzheimer zu und er vergisst das.
> - Nochmal das Ganze vor vorne.

von g457 (Gast)


Lesenswert?

> Wo steht die IP 1.2.3.4 im Ethernet-Frame, siehe link, wenn Rechner A
> loslegt?

Von der IP-Adresse weiss das Ethernet-Frame gar nix. Schau dir mal das 
ISO-OSI-Modell [1] an, dann sollte der Aufbau klar sein.

HTH

[1] http://de.wikipedia.org/wiki/OSI-Modell

von Matthias K. (matthiask)


Lesenswert?

g457 schrieb:
> Von der IP-Adresse weiss das Ethernet-Frame gar nix. Schau dir mal das
> ISO-OSI-Modell [1] an, dann sollte der Aufbau klar sein.

Leider nicht, irgendwie Denkblockade...- Ich sehe nicht den Zusammenhang 
zum Ethernetframe. Spielt sich das alles in den max. 1500 Byte Nutzdaten 
ab?

von g457 (Gast)


Lesenswert?

> Spielt sich das alles in den max. 1500 Byte Nutzdaten ab?

Ja. In der Payload vom Ethernetframe ist die nächsthöhere 
Protokollschicht zu finden, hier IP. Im Header von IP steht dann (u.a.) 
"die" IP-Adresse. In der Payload vom IP-Frame ist wieder das 
nächsthöhere Protokoll zu finden, hier TCP usw. Schön verkapselt das 
alles.

Die Details zu den einzelnen Protokollen (darunter auch die zugehörigen 
Header) finden sich in den einschlägigen RFCs und IEEEs - oder hypscher 
aufbereitet z.B. in der Wikipedia.

HTH

von Klatsch (Gast)


Lesenswert?

Douglas E.Comer

The principials of tcpip.......

Die Bibel der 70' er

von (prx) A. K. (prx)


Lesenswert?

Beispielhaft für UDP:
http://en.wikipedia.org/wiki/File:UDP_encapsulation.svg
Der Link-Level entspricht hier dem Ethernet-Frame.

Die Wikipedia ist hier leider wenig geeignet als Einstiegshilfe für 
komplette Anfänger. Die Artikel sind dafür zu unsystematisch und 
heterogen.

von Matthias K. (matthiask)


Lesenswert?

A. K. schrieb:
> Die Wikipedia ist hier leider wenig geeignet als Einstiegshilfe für
> komplette Anfänger. Die Artikel sind dafür zu unsystematisch und
> heterogen.

Zustimmung

A. K. schrieb:
> Beispielhaft für UDP:
> http://en.wikipedia.org/wiki/File:UDP_encapsulation.svg
> Der Link-Level entspricht hier dem Ethernet-Frame.

Danke.

Das verstehe ich. Hast Du dazu noch mehr Links, für HTTP und über den 
exakten Aufbau. Am besten komme ich mit Beispielen klar, Bytefolgen etc. 
wie oben im ersten Beitrag der Link.

von (prx) A. K. (prx)


Lesenswert?

Matthias K. schrieb:

> Das verstehe ich. Hast Du dazu noch mehr Links, für HTTP und über den
> exakten Aufbau. Am besten komme ich mit Beispielen klar, Bytefolgen etc.
> wie oben im ersten Beitrag der Link.

Mir scheint, das wäre eine Gelegenheit, einer Fachbibliothek oder 
-buchhandlung mal einen Besuch abzustatten. Gibt darin was ganz 
unmodernes, aus abgeholzten Wäldern produziert, das aber mitunter 
hilfreicher ist als haufenweise Stückwerk elektronisch. Das jedenfalls 
ist die Ansicht eines Menschen aus jener grauen Vorzeit, in der man 
keine Alternative hatte.

von g457 (Gast)


Lesenswert?

Also ich finde die Wikipedia-Artikel recht passend gerade als Einstieg 
(liegt aber vielleicht auch daran dass ich einen Schwerpunkt auf 
Netzwerktechnik hatte im Studium :-), z.B. [0, 1, 2, 3, 4, 5]. Da steht 
alles Wesentliche drin was man braucht, damit man ∗nicht∗ den selben 
Fehler macht wie z.B. der TO (bzw. der Autor des zugehörigen Stacks) in 
[6]: Byte-Offsets als vom-Himmel-gefallen-fix-annehmen.

Alternativ gibts das ganze latürnich auch auf abgeholztem Urwald, dazu 
wurden ja schon einige Titel genannt. Oder als IEEE oder RFC.

Wenn man dann das theoretisch erlernte wissen praktisch testen will 
wirft man Wireshark an, schneidet ein paar Sitzungen mit und schaut ob 
selbiger die Datenpakete genauso interpretiert wie man selbst (implizite 
Interpretationsreihenfolge beachten!). Dann kann man Wireshark auf seine 
eigenen Pakete loslassen und überprüfen, ob er das selbe ausspuckt wie 
man denkt, dass man auf den Weg geschickt hat.

Viel Spaß beim Basteln!

[..zum 'Spamschutz' bitteschön an die folgenden Links je ein http:// 
vorandenken.. und ja ich bin wirklich zu faul jetzt meine Zugangsdaten 
hervorzukramen]
[0] en.wikipedia.org/wiki/OSI_model
[1] en.wikipedia.org/wiki/TCP/IP_model
[2] en.wikipedia.org/wiki/Ethernet_frame
[3] en.wikipedia.org/wiki/IPv4
[4] en.wikipedia.org/wiki/Transmission_Control_Protocol
[5] en.wikipedia.org/wiki/Hypertext_Transfer_Protocol
[6] www.mikrocontroller.net/topic/228782

von (prx) A. K. (prx)


Lesenswert?

g457 schrieb:

> Also ich finde die Wikipedia-Artikel recht passend gerade als Einstieg
> (liegt aber vielleicht auch daran dass ich einen Schwerpunkt auf
> Netzwerktechnik hatte im Studium :-)

Ein Problem an den Artikeln ist die sehr heterogene Mischung aus 
Grundlagenbeschreibung und dafür völlig überflüssigen Randdetails, nicht 
selten kunterbunt durcheinander. Das zu filtern und zu sortieren 
funktioniert prima, wenn man TCP/IP schon kennt. Und dürfte reichlich 
irritieren wenn nicht.

von Matthias K. (matthiask)


Lesenswert?

Ich habe hier eine ganz gute Abarbeitung zum Einstieg gefunden:
http://www.elektronik-kompendium.de/sites/net/0606251.htm

von Simon K. (simon) Benutzerseite


Lesenswert?

Das Problem ist ganz einfach, dass TCP/IP so komplex ist (das wurde 
immerhin über Jahrzehnte weiterentwickelt), dass man das weder in einem 
Thread, noch in ein "Tutorial" erläutern könnte. Dazu braucht man harte 
und trockene und vor allem viel Lektüre, die eben aufbereitet ist.

von Andreas (Gast)


Lesenswert?

Matthias K. schrieb:
> Hast Du dazu noch mehr Links, für HTTP und über den
> exakten Aufbau.

Alle Links, die Du jemals benötigst, findest Du hier: 
http://www.faqs.org/rfcs/rfc5000.html
Alle Fragen werden in den dort referenzierten Dokumenten beantwortet. ;)

von Alf (Gast)


Lesenswert?

Andreas schrieb:
> Alle Links, die Du jemals benötigst, findest Du hier:
> http://www.faqs.org/rfcs/rfc5000.html

Da hast Du bestimmt Recht, aber:

Matthias K. schrieb:
> (deutsch!)

er wolte es in Deutsch! Und wie soll ein Einsteiger damit zurecht 
kommen?

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.