Ethernet

in Arbeit


zurück zu Interfaces , Elektronik , Homepage


 
Einleitung

Kabel und Pegel

Physical / Data Link Layer

Network Layer Protocol : Internet Protocol (IP)

Transport Layer Protocol : Transmission Control Protocol (TCP) / User Datagram Protocol (UDP)

Application Layer Protocols : Hyper Text Transfer Protocol (HTTP) / Telnet


Eigenständige Ethernet Controller Chips und das Ethernet-Modul im PIC-Microcontroller  

zurück



Einleitung

Das Ethernet ist das Standardinterface zur Computer-Vernetzung. Es ist eine serielle Verbindung, die es in verschiedenen Auslegungen gibt. Früher dominierte das Koaxialkabel, und ab und zu trifft man auf optische Verbindungen. In den allermeisten Fällen werden aber einfache Kabel (mit und ohne Schirmung) mit mindestens 4 Drähten verwendet. (twistet pair).
Ich beschränke mich hier auf die letztere Variante.

nach oben

Kabel und Pegel

Der typische Ethernetanschluss verwendet 4 Drähte, die zwei Drahtpaare bilden. Ein Paar dient dem Senden von Daten und das zweite Paar dient dem Datenempfang. Die beiden Leitungen eines Paares führen genau entgegengesetzte Pegel, das heist, dass die zweite Leitung eines Paares immer die invertierten Signale der ersten Leitung  führt. Das nennt sich dann differenzielles Signal und dient der Störsicherheit. Koppelt ein Störsignal von Außerhalb auf ein Ethernetkabel ein, dann "empfangen" beide Leidungen eines Paares das identische Störsignal, und es wird am Empfänger (der die Differenz der beiden Leitungspegel empfängt) unterdrückt. Damit das gut funktioniert, sind beide Adern eines Paares eng verdrillt.

Typisches Netzwerkkabel enthält 4 Adernpaare, von denen aber nur zwei Paare verwendet werden. Einfaches Netzwerkkabel (CAT-5) ist ungeschirmt und nennt sich Unshielded Twisted Pair (UTP). Bessere Kabel enthalten eine Schirmung (CAT-6) oder sogar zusätzliche Schirmungen um jedes Adernpaar (CAT-7).

"Haushaltsüblich" sind heutzutage drei Ethernet-Geschwindigkeiten
Diese können in einem Netzwerk gemischt verwendet werden. Die Standardgeschwindigkeit bei PCs ist inzwischen 1GB/s, für Bastler sind aber vor allem 10 Mb/s und 100 Mb/s interessant, da Eigenbaugeräte dieser Geschwindigkeiten durchaus selbst gebaut werden können, und sich in das Heimnetz problemlos integrieren lassen.  Ich beziehe mich im Weiteren auf 10 Mb/s.

Ein Ethernet-Sender gibt einen Pegel von ca. 3,3V aus, und ist zur galvanischen Trennung über einen Koppeltrafo mit dem Netzwerkkabel verbunden. Auch der Empfänger ist vom Netzwerkkabel mit einem Koppeltrafo galvanisch getrennt, und erwartet Spannungspegel von 0,35 V bis 3,1 V.  Praktischerweise gibt es Netzwerkbuchsen mit integrierten Koppeltrafos , die sich direkt mit dem Ethernet-Chip verbinden lassen. Dies sogenannten MagJacks reduzieren die nötigen externen Bauelemente auf ein Minimum.

Da Koppeltrafos keine Gleichspannung übertragen können, muss dafür gesorgt werden, dass auch in einer langen Folge gleicher Bits (z.B. 00000000000000) regelmäßige Pegelwechsel vorkommen. Bei 10 Mb/s verwendet man dafür die gute alte Manchestercodierung, bei 100 Mb/s die NRZI- und MLT3 -Codierung zusammen mit 4B/5B-Codierung. Diese Kodierung (und auf der Empfangsseite die Decodierung) erledigt der Ethernet-Chip selbstständig. Als Nutzer muss man sich darum also nicht kümmern.

nach oben

Physical / Data Link Layer (OSI 1&2) : Ethernet Protokoll

Jedes am Ethernet angeschlossene Endgerät (also z.B. Computer) hat eine Adresse. Diese ist 6 Byte lang und nennt sich MAC (Medium Access Controller).
Der Datentransfer von einem Endgerät (im weiteren Node genannt) zu einem anderen erfolgt in Datenpaketen (Frames) mit einer Länge von 64 bis zu maximal 1518 Bytes. Größere Datenmengen muss man folglich auf der Senderseite zerstückeln, und im Empfänger wieder zusammensetzen.

Damit die Daten auch zum richtigen Node gelangen und dort der richtigen Quelle zugeordnet werden können, wird jeder Datenschnipsel mit der Zieladresse (die 6 Byte lange MAC des Zielrechners) und der Absendeadresse (die 6 Byte lange MAC des Senders) versehen. Da es Datenschnipsel unterschiedlicher Größe gibt, ist auch noch eine 2 Byte lange Typ- oder Längenangabe nötig. Für die eigentlichen Nutzdaten bleiben deshalb nur noch 46 bis 1500 Bytes übrig.
Will man weniger als 46 Bytes übertragen, dann muss man die Nutzdaten mit einigen zusätzlichen Füllbytes (z.B. Nullen) auf eine Länge von wenigstens 46 Bytes auffüllen. Dieser Nonsense-Bereich nennt sich Padding.

Wir haben nun einen Frame von 60 Byte bis 1514 Byte Länge zusammen, und übergeben diesen dem Ethernetcontroller-Chip. Diese Controller ergänzt den Frame um eine 4 Byte lange CRC-Prüfsumme zur Fehlererkennung (nun haben wir maximal 1518 Bytes) sowie einer 8 Byte langen Startsequenz. Das ganze wird nun z.B. Manchestercodiert und auf die Sendeleitung gegeben.

Der Ethernetcontroller-Chip im Empfänger wird später alles empfangen, anhand der 4 Byte langen Prüfsumme die Unversehrtheit der Daten verifizieren, die Startsequenz wegwerfen und den Rest an den Nutzer übergeben.


nach oben

Network Layer Protocol (OSI 3) : Internet Protocol (IP)

Die oben beschriebenen Ethernet Protokoll ist in der Regel durch die Hardware des Ethernet-Controllers realisiert. Allerdings in kann man damit noch nicht viel anfangen. Wie soll man damit z.B. ein mehrere Kilobyte großes Bild  übertragen? Für solche Aufgaben bedarf es übergeordneter "Protokollebenen", die in Software realisiert sind.

Der oben beschriebene Datalink-Layer (Ethernet) wird vom IP-Layer mit Datenframes versorgt. Er selbst bekommt vom ihm übergeordneten Protokollayer (z.B. TCP, siehe unten) ein Datenpaket (Datagramm) und hat die Aufgabe es mit Hilfe des Ethernets zum Ziel zu transferieren. Da niemand weiß, ob das Ziel wirklich empfangsbereit ist oder überhaupt existiert, muss erst mal Vorsorge dafür geschaffen werden, dass ein Datenpaket, das dem Ethernet übergeben wird, nicht endlos durch das Netz läuft, ohne jemals ein Ziel zu erreichen. Dafür legt man eine maximale Lebensdauer (normalerweise 32 Sekunden) fest bevor man die Daten dem Ethernet übergibt. Während dann die Daten von Router zu Router durch das Netz transferiert werden, schaut sich jeder Router das Alter der Daten an. Hat eine Datenpaket seine maximale Lebensdauer erreicht, dann wird es verworfen. Nun haben Router keine hochpräziesen Uhren integriert, deshalb zieht jeder Router einfach von der Restlebenszeit eines Datenpaketes pauschal eine Sekunde ab, bevor er das Paket zum nächsten Router weiterreicht. Ein Datenpaket schafft es also maximal durch 32 Router. Hat es bis dahin sein Ziel nicht erreicht, dann wird es verworfen.

Nun kann ein Datenpaket natürlich viel größer sein, als ein Ethernet-Frame. In diesem Fall muss es in viele Frames zerstückelt werden. Jedes Stück (also Frame) bekommt dabei auch Informationen darüber integriert, wie es am Ziel wieder zum großen Datenpaket zusammengesetzt werden muss.
Das Zerlegen und Zusammensetzen erfolgt nicht nur beim Sender und im Empfänger. Praktisch jeder Router baut das Datenpaket aus den Frames zusammen und zerstückelt es erneut. Zum einen kann er nur dadurch die Restlebenszeit des Datenpaketes korrekt verwalten und außerdem erfordern unterschiedliche Abschnitte des Netzes unterschiedliche Framegrößen. Aus diesem Grunde entstehen in Routern recht große Verzögerungen im Datentransport.

Die Addressierung von Sender und Empfänger erfolgt im IP-Protokoll nicht anhand der MAC-Adressen, sondern anhand der IP-Adressen. Diese sind 4 Byte lang, und jedem ein Begriff, der sein Netzwerk schon mal manuell eingerichtet hat.
Der Vorteil der IP-Adressen ist es, dass man Subnetze einrichten kann. Dazu vergibt man an alle Nodes, die zu einem Subnetz (z.B. einem Haushalt oder einer Firmenabteilung) gehören sollen, IP-Adressen mit identischem Anfang (oft sind die ersten 3 Bytes identisch). Das Einrichten von Subnetzen erhöht Komfort und Sicherheit, da man Nodes des gleichen Subnetzes einen Vertrauensvorschuss einräumen kann.
MAC-Adressen sind dagegen nahezu zufällig und lassen sich nicht so einfach hierarchisch verwalten.
Der IP-Layer bekommt also die zu sendenden Datenframes mit IP-Adressen (für Empfänger und Sender) die er durch die richtigen MAC ersetzen muss.

nach oben

Transport Layer Protocol (OSI 4) : Transmission Control Protocol (TCP) / User Datagram Protocol (UDP)

Eine Anwendung wird kaum direkt mit dem IP kommunizieren. Vielmehr beauftragen Anwendungen TCP oder UDP die Verbindung mit einem anderen Rechner herzustellen und zu diesem Daten zu übertragen. Die Anwendung sendet die zu übertragenden Daten als Bytestrom zum TCP (ähnlich wie in eine serielle Schnittstelle). TCP fasst die empfangenen Daten zu Datenpaketen zusammen, ergänzt sie um die korrekte IP-Adresse des Ziels und übergibt sie dann IP zur weiteren Bearbeitung.

Die Anwendung, die sich TCP oder UDP bedient, benötigt die IP-Adresse oder URL des Ziels nur zum Verbindungsaufbau. Im allgemeinen wird auf dieser Ebene mit Portnummern gearbeitet. Die Anwendung übergibt dem TCP einen Datenstrom mit einer Portnummer als Adresse, und am Empfangsort übergibt das dortige TCP den empfangenen Datenstrom über diese Portnummer an eine Anwendung. Das ermöglicht es, dass viele verschiedene Anwendungen parallel das Netzwerk verwenden. Jede Anwendung benutzt einfach eine festgelegte Portnummer und bekommt damit nur Daten zu sehen, die auch zu dieser Anwendung gehören.

TCP garantiert die fehlerfreie Übertragung eines Datenpaketes zum Empfänger. Jedes Datensegment wird mit einer Prüfsumme versehen und abgeschickt. Der Empfänger muss die Korrektheit der Daten anhand der Prüfsumme testen und meldet den korrekten Empfang an den Versender. Bekommt der Sender innerhalb einer bestimmten Zeit keine Bestätigung der Korrektheit vom Empfänger, dann sendet er die Daten erneut.



nach oben

Application Layer Protocols : Hyper Text Transfer Protocol (HTTP) / Telnet

Uxxxxxxxxxxxxxxxxxxxxxxer).

nach oben

Eigenständige Ethernet Controller Chips und das Ethernet-Modul in PIC-Microcontrollern

Für einen Bastler gibt es mehrere Möglichkeiten, ein netzwerkfähiges Gerät zu bauen:
Miniserver
Im einfachsten Fall lötet man einen kompletten Webserver auf seine Platine. Die wohl populärsten Minirechner dieser Art sind die XPort von Lantronix. Sie sehen aus wie verlängerte Netzwerkbuchsen (knapp 3,5 cm lang) und werden über einer RS232-Schnittstelle mit dem Rest der Schaltung verbunden. Mit >50 Euro sind sie nicht die billigste Lösung, sie machen aber das Leben einfacher.

Ethernet-Controller
Für ca. 5 Euro bekommt man einen Ethernet-Controller-Chip ENC28J60
(10-Base-T) und einen MagJack (Netzwerkbuchse mit Koppeltrafos). Beides zusammen bildet einen kleinen Ethernet-Adapter, den man mittels SPI-Bus mit der restlichen Schaltung verbindet. Diese restliche Schaltung muss dann aber noch die Aufgaben des IP sowie des TCP bzw. UDP erledingen. Dafür ist also in jedem Fall noch ein Microcontroller und ein Berg Software nötig. Für den ENC28J60 liefert Microchip diese Software: den sogenannten TCP/IP-Stack.

PIC mit integriertem Ethernet-Controller
Einige PIC-Microcontroller (z.B. PIC18F66J60) haben einen integrierten Ethernet-Controller für 10 Mb/s (10-Base-T), und benötigen als einzige externe Hardware noch einen MagJack, um an das Netzwerk angeschlossen zu werden. Wenn man ohnehin einen PIC mit mindestens 64 Pins verbauen wollte, dann bildet diese Kombination den preiswertesten Einstieg in das Netzwerk.


nach oben



weiter zu Ethernet mit PIC-Microcontroller

nach oben

zurück zu Interfaces , Elektronik , Homepage

Autor: sprut
erstellt: xx.03.2012
letzte Änderung: xx.03.2012
 
Quelle: Microchip Application Note AN1120