next up previous contents
Next: Referenzen Up: Netzwerkkommunikation Previous: IP   Contents

Netzwerkgeräte

Da unterschiedliche Hardware zur Vernetzung von Rechnern eingesetzt werden kann, gibt es in Linux eine abstrakte Schnittstelle zur Netzwerkhardware. Dadurch können die oberen Netzwerkschichten unabhängig von der eingesetzten Hardware implementiert werden. Die Datenstruktr struct net_device verwaltet solch ein abstraktes Netzwerkgerät [include/linux/netdevice.h]. Diese Datenstruktur enthält neben dem Namen (z.B. eth0) und Angaben zur Ansteuerung wie IRQ und IO-Adresse, auch Adressen wie die Broadcast-Adresse, Hardware-Adresse (MAC-Adresse bei Ethernet-Karten) und Multicast-MAC-Adressen sowie etliche statistische Angaben (Anzahl empfangender/gesandter Pakete).

struct net_device enthält weiterhin Pointer auf die Funktionen mit denen man das Gerät ansprechen kann. Die wichtigsten sind:

int (*init)(struct net_device *dev);
Initialisiert der Netzwerkgerät. Setzt z.B. die Adressen.

int (*open)(struct net_device *dev);
Öffnet das Netzwerkgrät, so dass Pakete übertragen werden können

int (*stop)(struct net_device *dev);
Beendet die Übertragung von Paketen. Setzt alle Adressen auf NULL.

int (*hard_start_xmit) (struct sk_buff *skb, struct net_device *dev);
Hardwareabhänige Funktion zum senden eines Pakets.

Diese Funktionen werden von den hardwareunabhägingen API Funktionen in [net/core/dev.c] benutzt. Zum Beispiel die Funktion void dev_queue_xmit(struct sk_buff *skb, struct net_device *dev) überprüft ob das Netzwerkgerät gerade beschäftigt ist und überträgt das Paket dann entweder sofort per hard_start_xmit() oder trägt es in eine Liste der noch zu sendenden Pakete innerhalb des struct net_device ein.


next up previous contents
Next: Referenzen Up: Netzwerkkommunikation Previous: IP   Contents
2002-02-17