Betrouwbare gegevensoverdracht zorgt ervoor dat gegevens die van een bron naar een bestemming worden verzonden, volledig, nauwkeurig en in de juiste volgorde aankomen. Verschillende principes liggen ten grondslag aan dit proces:
1. Foutdetectie: Dit is cruciaal. Het systeem moet fouten kunnen detecteren die tijdens de verzending worden geïntroduceerd, zoals bitflips als gevolg van ruis of pakketverlies. Veel voorkomende technieken zijn onder meer:
* Checksums: Een eenvoudige berekening uitgevoerd op de gegevens; de ontvanger herberekent en vergelijkt. Discrepanties wijzen op een fout.
* Cyclische redundantiecontroles (CRC): Een meer geavanceerde controlesom die sterkere foutdetectiemogelijkheden biedt.
* Hash-functies (bijvoorbeeld MD5, SHA): Wordt gebruikt voor verificatie van de gegevensintegriteit, om ervoor te zorgen dat er niet met de gegevens is geknoeid.
2. Foutcorrectie: Terwijl foutdetectie de aanwezigheid van fouten identificeert, probeert foutcorrectie deze te herstellen. Dit is vaak complexer en vergt meer middelen dan detectie alleen. Technieken omvatten:
* Voorwaartse foutcorrectie (FEC): Voegt redundante gegevens toe aan het bericht, waardoor de ontvanger de originele gegevens kan reconstrueren, zelfs als sommige delen verloren of beschadigd zijn. Voorbeelden zijn onder meer Reed-Solomon-codes.
* Automatisch herhaalverzoek (ARQ): De ontvanger vraagt om hertransmissie van verloren of beschadigde gegevens. Dit is een gebruikelijke methode in datanetwerken.
3. Sequentie: Om de volgorde van gegevens te behouden, vooral in scenario's met pakketverlies of herschikking, is een sequentiemechanisme van cruciaal belang. Dit houdt doorgaans het volgende in:
* Volgnummers: Aan elk datapakket wordt een uniek volgnummer toegewezen, waardoor de ontvanger de gegevens in de juiste volgorde opnieuw kan samenstellen.
4. Dankbetuigingen (ACK's): De ontvanger verzendt bevestigingen om de ontvangst van datapakketten te bevestigen. Hierdoor kan de afzender weten of de gegevens succesvol zijn ontvangen en kan onnodige hertransmissie of verlies van gegevens worden voorkomen. Verschillende ARQ-protocollen gebruiken ACK's op verschillende manieren (bijv. Go-Back-N ARQ, Selective Repeat ARQ).
5. Heruitzendingen: Als er binnen een time-outperiode geen ACK wordt ontvangen of als er een fout wordt gedetecteerd, verzendt de afzender de betreffende gegevens opnieuw. Dit garandeert de gegevensintegriteit, zelfs in luidruchtige of onbetrouwbare kanalen.
6. Stroomcontrole: Dit voorkomt dat de zender de ontvanger sneller overspoelt met gegevens dan deze kan verwerken. Technieken omvatten:
* Schuifvenster: De ontvanger wijst een "venster" met volgnummers toe die hij wil ontvangen. De afzender verzendt alleen gegevens binnen dat venster.
* Op krediet gebaseerde stroomcontrole: De ontvanger vertelt de afzender hoeveel gegevens hij kan accepteren.
7. Congestiebeheersing: Hiermee wordt de hoeveelheid gegevens beheerd die over een netwerk worden verzonden om congestie te voorkomen en een eerlijke toewijzing van middelen aan meerdere gebruikers te garanderen. Algoritmen zoals het vermijden van congestie door TCP en de langzame start zijn voorbeelden.
Deze principes, afzonderlijk of in combinatie geïmplementeerd, zijn essentieel voor het bouwen van betrouwbare systemen voor gegevensoverdracht. De specifieke technieken die worden gebruikt, zijn afhankelijk van de vereisten van de applicatie, de kenmerken van het communicatiekanaal en de beschikbare bronnen. Real-time toepassingen kunnen bijvoorbeeld prioriteit geven aan een lage latentie boven perfecte betrouwbaarheid, terwijl data-archivering boven alles de nadruk kan leggen op perfecte data-integriteit. |