Ethernet
in Arbeit
zurück
zu
Interfaces , Elektronik , Homepage
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.
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.
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.
- 6 Byte
Zieladresse
- 6 Byte
Absenderadresse
- 2 Byte
Type
/ Länge
- 46 ...
1500 Daten
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.
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.
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.
Application
Layer
Protocols : Hyper Text Transfer Protocol (HTTP) / Telnet
Uxxxxxxxxxxxxxxxxxxxxxxer).
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
- Ethernet-Controller
- PIC mit integriertem
Ethernet-Controller
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.
weiter zu Ethernet mit PIC-Microcontroller
zurück
zu Interfaces , Elektronik
, Homepage
Autor: sprut
erstellt: xx.03.2012
letzte Änderung: xx.03.2012
Quelle: Microchip Application Note AN1120