Protocol stack
Van Wikipedia
Een protocol stack (stapel van protocollen oftewel protocollenhoop ) is een bepaalde implementatie van software in een verzameling van protocollen (suite) van computernetwerken. De termen wordt vaak uitwisselbaar gebruikt. Strikt gesproken is de suite de definitie van de protocollen en is de 'stack' de software-implementatie ervan.
Individuele protocollen binnen een suite zijn vaak met één enkel doel ontworpen. Deze modularisatie vergemakkelijkt ontwerp en beoordeling. Omdat ieder protocol-module gewoonlijk communiceert met 2 anderen, worden zij voorgesteld als lagen in een stapel van protocollen. Het laagste protocol handelt altijd fysieke interactie op laag-niveau van de hardware af. Iedere hogere laag voegt meer mogelijkheden toe. Gebruikerapplicaties handelen uit gewoonte enkel de bovenste lagen af (zie ook OSI-model).
Protocol stacks worden veelal, tijdens een praktische implementatie, verdeel in drie voornamelijke secties voor media, transport en applicaties. Een bepaald besturingssyteem of platform zal vaak in het bezit zijn van twee goed gedefiniëerde software interfaces: één tussen de media- en transportlagen en één tussen de lagen van transport en applicaties.
De 'media-naar-transport'-interface defeniëert hoe software voor het transport-protocol gebruikmaakt van bepaale media en typen hardware ("card drivers"). Dit interfaceniveau zou bijvoorbeeld omschrijven hoe TCP/IP-transportsoftware zou spreken met Ethernet-hardware. Voorbeelden van deze interfaces bevatten de ODI specificatie en NDIS in de wereld van Microsoft Windows en MS-DOS.
De 'applicatie-naar-transport'-interface definëert hoe applicatie-programma's gebruik maken van de transportlagen. Bijvoorbeel het interfaceniveau zou definieren hoe een programma van de webbrowser zou spreken met TCP/IP-transport-software. Voorbeelden van deze interfaces zijn sockets van Berkely en System V-stromen in de Unix-wereld en Winsock in de Microsoft-wereld.
Omschrijving van algemene protocol suite:
T ~ ~ ~ T [A] [B]_____[C]
Stel drie computers voor:A, B en C. A en B hebben beide radio-apparatuur en kunnen middels luchtgolven communiceren door gebruik te maken van een geschikt netwerkprotocol (zoals IEEE 802.11). B en C zijn met elkaar door een kabel verbonden, die zij gebruiken om gegevens uit te wisselen (weer met behulp van een protocol, bijvoorbeeld Ethernet). Geen van deze protocollen echter zullen in staat zijn om informatie te transporteren van A naar C, omdat deze computers zich volgens concept op verschillende netwerken zich bevinden. Men heeft hiervoor een inter-netwerkprotocol nodig om ze te 'verbinden'.
Men zou de twee protocollen kunnen combineren om een krachtige derde te vormen, die zowel meester is over de kabel als de draadloze transmissie, maar een ander super-protocol zou dan nodig zijn voor iedere mogelijke combinatie van protocollen. Het is makkelijker de basisprotocollen met rust te laten en een protocol te ontwerpen dat bovenop ieder van de overige kan werken ( het Internetprotocol is een voorbeeld hiervan). Dit worden dan gezamenlijk twee stapels van elk twee protocollen. Het inter-netwerkprotocol zal communiceren met ieder basisprotocol in de simpelere taal van deze; de basisprotocollen zullen elkaar niet direct aanspreken.
Een verzoek van computer A om een gegevensstuk naar C te sturen, wordt opgepakt door het bovenste protocol, die (hoe dan ook) weet dat C bereikbaar is via B. Daarom draagt het het draadloze protocol op om het gegevenspakket te verzenden naar B. Op deze computer zullen de afhandelaars van de laagste laag het pakket doorgeven aan het inter-netwerkprotocol, dat, herkennend dat B niet de eindbestemming is, nog een keer functies op het laag-niveau in werking zal zetten. Nu wordt het protocol van de kabel gebruikt om de gegevens naar C te zenden. Hier wordt het ontvangen pakket weer doorgegeven aan het bovenste protocol, die ( met C als einddoel) het zal doorgeven aan een hoger protocol of applicatie op C. Vaak zit er een nog protocol van nog hoger niveau er bovenop die verdere verwerking inluid.
Een normale stapel van protocollen ziet er zo uit:
+- - - - - -+ | HTTP | +- - - - - -+ | TCP | +- - - - - -+ | IP | +- - - - - -+ | Ethernet | +- - - - - -+