In een netwerklaag die zowel onbetrouwbaar als verbindingsloos is (zoals het internetprotocol, IP), is er geen inherent mechanisme voor het automatisch opnieuw verzenden van verloren gegevens. De verantwoordelijkheid voor het garanderen van betrouwbare gegevenslevering ligt bij hogere lagen van de protocolstapel, doorgaans de transportlaag (bijvoorbeeld TCP) of zelfs toepassingen op een hoger niveau. Hier ziet u hoe het wordt bereikt:
1. Transportlaagprotocollen (zoals TCP):
* Verbinding tot stand gebracht: TCP brengt vóór de gegevensoverdracht een verbinding tot stand, waardoor een dialoog tussen zender en ontvanger mogelijk is. Dit omvat een handshake in drie richtingen om de levensvatbaarheid van de verbinding te bevestigen.
* Volgorde: Elk datapakket is opeenvolgend genummerd. Hierdoor kan de ontvanger ontbrekende pakketten detecteren en opnieuw verzenden aanvragen.
* Erkenning (ACK): De ontvanger stuurt ACK-pakketten terug naar de afzender, waarmee de ontvangst van de gegevens wordt bevestigd. Als er binnen een time-outperiode geen ACK wordt ontvangen, verzendt de afzender het niet-bevestigde pakket opnieuw.
* Time-out en opnieuw verzenden: De afzender houdt timers bij voor elk verzonden pakket. Als een timer afloopt voordat een ACK is ontvangen, wordt het pakket opnieuw verzonden.
* Foutdetectie: Checksums of andere foutdetectiemechanismen worden gebruikt om beschadigde pakketten te detecteren. Beschadigde pakketten worden verwijderd en er wordt om hertransmissie verzocht.
2. Applicatielaagmechanismen (bij gebruik van UDP of een vergelijkbaar verbindingsloos protocol):
Omdat de netwerklaag geen ingebouwde betrouwbaarheid biedt, moeten applicaties die UDP of andere verbindingsloze protocollen gebruiken hun eigen mechanismen implementeren voor betrouwbare gegevensoverdracht:
* Sequencing en ACK's: De applicatie zelf moet pakketten nummeren en bevestigings- en hertransmissiestrategieën implementeren, waarbij de functionaliteit van TCP wordt nagebootst.
* Time-out voor opnieuw verzenden: Net als bij TCP stelt de applicatie time-outs in voor elk pakket. Als een time-out zonder bevestiging verloopt, verzendt de toepassing het pakket opnieuw.
* Positieve bevestiging met hertransmissie (PAR): De ontvanger bevestigt ontvangen pakketten en de afzender verzendt ontbrekende pakketten opnieuw op basis van deze bevestigingen.
* Go-Back-N ARQ: De afzender verzendt alle pakketten opnieuw, te beginnen met het niet-bevestigde pakket.
* Selectieve herhaling ARQ: De afzender verzendt alleen de ontbrekende pakketten opnieuw.
In het kort: Hoewel de onbetrouwbare en verbindingsloze aard van de netwerklaag geen ingebouwd gegevensherstel biedt, zijn protocollen op een hoger niveau en logica op applicatieniveau verantwoordelijk voor het implementeren van de noodzakelijke mechanismen om verloren gegevens te detecteren en te herstellen. Dit voegt overhead toe, maar maakt betrouwbare communicatie mogelijk via een inherent onbetrouwbare infrastructuur. |