Betrouwbaar transport van pakketten

Zoals gezegd biedt het IP-protocol een best-effort pakketcommunicatie:
er kunnen pakketten verloren raken of de pakketten kunnen in een andere volgorde aankomen dan ze verzonden zijn.

Soms kan de ontvanger concluderen dat er iets mis is gegaan, namelijk doordat een beschadigd pakket afgeleverd wordt.
De ontvanger kan dit herkennen aan de checksum die door de zender berekend en met het pakket meegestuurd is.
De ontvanger berekent de checksum over de data in het pakket en vergelijkt deze met de meegestuurde checksum.
Als deze niet gelijk zijn, concludeert de ontvanger dat het pakket beschadigd is.
Als de berekende en meegestuurde checksum gelijk zijn, is er slechts een zeer kleine kans dat het pakket beschadigd is.
Deze kans is zo klein dat we deze in de praktijk verwaarlozen.

Een beschadigd pakket wordt beschouwd als een pakket dat niet aangekomen is.
Eenzelfde soort beschadiging kan onderweg plaatsvinden, in de fysieke laag.
Daar wordt meestal dezelfde methode gebruikt.
Beschadigde pakketten worden gewoon weggegooid.

In andere gevallen, waarbij er niets aankomt, kan de ontvanger niet eenvoudig concluderen dat er iets mis is.
Hij weet niet of er iets verzonden is. Alleen de zender kan uiteindelijk deze conclusie trekken. Hij weet wat er verzonden is.
Hij heeft alleen nog informatie nodig over wat ontvangen is.
Het mechanisme dat we hiervoor gebruiken is dat van de ontvangstbevestiging met time-out, en hertransmissie:
de ontvanger verstuurt zodra deze een pakket ontvangen heeft een ontvangstbevestiging naar de afzender.
Als deze laatste niet binnen een bepaalde tijd, de "time-out", na het verzenden van een pakket een ontvangstbevestiging gekregen heeft, dan stuurt deze het pakket nogmaals.

Pakketcommunicatie met ontvangstbevestiging.
De ontvangstbevestiging komt binnen de time-out periode bij de ontvanger.

 

Pakketcommunicatie met ontvangstbevestiging.
De ontvangstbevestiging komt na de time-out periode bij de zender en deze heeft het pakket al opnieuw verzonden.

Voor de zender is het op het moment van de time-out niet mogelijk onderscheid te maken tussen een ontvangstbevestiging die te laat aankomt, en een die niet aankomt, omdat het oorspronkelijke pakket of de ontvangstbevestiging verdwenen zijn.


De keuze van deze time-out periode is nogal kritisch.
Als we deze te kort kiezen, dan wordt een pakket mogelijk te vaak verstuurd, als we deze te lang kiezen, vertraagt dit de communicatie tussen zender en ontvanger.
Verdwenen of beschadigde pakketten worden dan sterk vertraagd opnieuw verzonden.

Als er meerdere pakketten van zender naar ontvanger onderweg zijn, moet elk pakket een identificatie hebben, bijvoorbeeld in de vorm van een volgnummer.
Aan de hand van de ontvangstbevestiging in combinatie met deze identificatie kan de zender dan nagaan welk pakket aangekomen is en, op grond van de time-out, welke mogelijk niet.

De zender zal na een time-out het pakket opnieuw versturen.
Maar een time-out hoeft niet te betekenen dat de ontvanger het oorspronkelijke pakket niet gekregen heeft.
Het kan zijn dat de ontvangstbevestiging te lang onderweg is of dat deze bevestiging verloren is geraakt.
Hierdoor kan een pakket mogelijk dubbel bij de ontvanger aankomen.