Er is geen enkele garantie voor pakketbezorging in het best-effort-netwerkmodel van internet. In plaats daarvan wordt een betrouwbare levering bereikt via verschillende protocollen en mechanismen die de kans op een succesvolle transmissie *vergroten*, maar die geen absolute garanties bieden. Hier is een overzicht:
* TCP (Transmission Control Protocol): TCP is het werkpaard voor betrouwbare gegevensoverdracht. Er worden verschillende technieken gebruikt om een betrouwbare levering te garanderen:
* Volgnummers: Elk pakket is genummerd, zodat de ontvanger ontbrekende of niet in de juiste volgorde staande pakketten kan detecteren.
* Dankbetuigingen (ACK's): De ontvanger stuurt ACK's terug naar de afzender, waarmee de ontvangst van pakketten wordt bevestigd. Als er binnen een time-outperiode geen ACK wordt ontvangen, verzendt de afzender het pakket opnieuw.
* Stroomcontrole: TCP beheert de snelheid van de gegevensoverdracht om te voorkomen dat de zender de ontvanger overweldigt.
* Congestiebeheersing: TCP past de transmissiesnelheid aan op basis van netwerkcongestie om netwerkoverbelasting te voorkomen.
Zelfs met TCP zijn absolute garanties ongrijpbaar. Uiterst zeldzame gebeurtenissen zoals catastrofale netwerkstoringen of langdurige netwerkpartities kunnen nog steeds tot pakketverlies leiden.
* UDP (User Datagram Protocol): UDP is een verbindingsloos protocol dat geen levering garandeert. Het is sneller dan TCP omdat het geen rekening houdt met de overhead van betrouwbaarheidsmechanismen. Toepassingen die enig pakketverlies kunnen tolereren (zoals het streamen van video of online gamen) maken vaak gebruik van UDP. Betrouwbaarheid wordt, indien nodig, geïmplementeerd op applicatieniveau.
* Mechanismen op applicatieniveau: Applicaties kunnen hun eigen betrouwbaarheidsmechanismen bouwen bovenop UDP of zelfs TCP om de betrouwbaarheid verder te verbeteren. Het kan daarbij gaan om zaken als:
* Retransmissieprotocollen: Vergelijkbaar met het hertransmissiemechanisme van TCP, maar beheerd door de applicatie.
* Checksums en foutcorrectiecodes: Deze helpen bij het opsporen en soms corrigeren van fouten in ontvangen pakketten.
Samenvattend:hoewel TCP en verschillende mechanismen op applicatieniveau de kans op pakketbezorging aanzienlijk vergroten, geen enkel netwerkprotocol biedt 100% garantie. Externe factoren zoals netwerkstoringen, apparatuurstoringen en kwaadaardige aanvallen kunnen de overdracht altijd verstoren. Betrouwbaarheid is een kwestie van waarschijnlijkheid en mitigatie, niet van absolute zekerheid. |