6. Ethernet


6.1 Inleiding 6.2 Ethernet Header 6.3 Adres omzetting 6.4 Werking van de ethernet driver


Begin van File
6.1 Inleiding

Ethernet is een veel gebruikte standaard voor local area netwerken (LAN) en werkt volgens het principe van CSMA/CD wat staat voor Carrier Sense, Multiple Access met Collision Detection. Dit betekent dat er meerdere aansluitingen op een lijn zitten en die door middel van een carrier kijken of de lijn vrij is voor zenden en mochten er toch twee tegelijk zenden dan is er nog de collision detection . Het ethernet werkt met een verbinding van 10 Mbit/sec en met adressen van 48 bit wat dus verschillend is met de IP adressen die 32 bit groot zijn.

Begin van File
6.2 Ethernet Header

Ook de data die over ethernet gestuurd wordt bevat data die voorzien is van een header. In figuur 6.1 is de opbouw te zien van de ethernet header die ook weer bestaat uit een aantal verschillende velden.

De eerste twee velden bevatten een 6 bytes (48 bit) destination en source adres. Daarna volgt een 2 byte type veld dat aangeeft wat voor type data er volgt (voor IP data is het type veld 0x0800). Hierna volgt het data veld die op zijn minst 46 bytes moet bevatten en zo niet opgevuld moet worden met lege bytes. Het CRC (Cyclic Redundancy Check) veld dient ervoor om errors te detecteren in het complete frame.

Begin van File
6.3 Adres omzetting

Doordat Ethernet met 48 bit adressen werkt en IP met 32 bit adressen moet hiervoor tijdens het communiceren met elkaar een omzetting plaats vinden. Dit omzetten van de 32 bit IP adressen naar 48 bit ethernet adressen kan op 2 manieren gebeuren namelijk:
Doormiddel van een statische lijst waarbij iedere host, een lijst bijhoudt van alle andere aangesloten hosts, met hun IP adres en ethernet adres, of doormiddel van het Address Resolution Protocol (ARP) wat in het volgende hoofdstuk, (hoofdstuk 7) wordt uitgelegd. Dit laatste lijkt de beste oplossing in verband met een betere uitbreidbaarheid van het net.

Begin van File
6.4 Werking van de ethernet driver

In figuur 6.2 wordt een blokschema getoond van de ethernet device driver.

Als er een frame verstuurd wordt naar de ethernet driver dan wordt er eerst een interupt ontvangen op leintr (zie schema). Daarna kijkt leintr naar de hardware of er een frame is ontvangen. En als er een frame ontvangen is roept hij leread op om de frame van de interface naar een ketting van mbufs (buffers) te transporteren waarbij argumenten worden meegegeven zoals van welke interface kaart de frame ontvangen is en het aantal bytes in de frame. Als de hardware een melding geeft dat de frame is ontvangen of dat er een error is geconstateerd dan worden de interface statistieken bijgewerkt en wordt de hardware gereset en wordt lestart aangeroepen die weer een ander frame probeert te transporteren. Alle ethernet drivers leveren hun ontvangen frames af bij ether_input voor verdere processen. Deze ether_input controleert of het een “broadcast adres” is en wat voor type data de frame bevat. Als het geen broadcast adres is dan wordt deze doorgegeven aan de queue die overeenkomt met het datatype. Via deze queue worden weer interrupts gegenereerd en verstuurd naar de data types.

Als er een frame verstuurd moet worden vanaf de hogere lagen via de ethernet driver het net op, dan wordt if_output aangeroepen, waarna ether_output het hardware adres opzoekt, bij het meegegeven IP adres, via ARP. Het ARP protocol kijkt of de adressen in de cache voorkomt of dat er een broadcast moet worden verzonden.Hierna voorziet de ether_output de data van een ethernet header en stuurt deze door naar de ethernet send queue. In deze queue worden de frames gebufferd en weer opgehaald door lestart om te worden verzonden. Door middel van interrupts wordt aangegeven of de frames ontvangen zijn en dat de volgende frame verzonden kan worden.



Vorige hoofdstuk Volgende hoofdstuk
Terug naar Index