Betrouwbare communicatie over onbetrouwbare verbindingen: TCP

Op deze pagina leer je over het systeem dat zorgt voor betrouwbare communicatie op het internet.

Computer, servers en routers zijn vrij betrouwbaar, maar soms raakt een datapakketje tijdens het transport verloren. Zulke fouten moet het internet aankunnen. Een manier om fouten te tolereren is je er niks van aan te trekken. Als je één frame in een video kwijtraakt, maakt dat bijvoorbeeld meestal niet veel uit voor een kijker. Een andere manier is om pakketjes te blijven versturen totdat aangegeven wordt dat ze ontvangen zijn. TCP is zo'n manier. TCP of voluit: Transmission Control Protocol, garandeert betrouwbare dataverzending door bij te houden welke pakketjes succesvol ontvangen zijn. Een verloren of beschadigd pakketje wordt opnieuw verstuurd. Daarnaast wordt ook aangegeven wat de volgorde van de datapakketjes is, om ze weer in de goede volgorde in elkaar te zetten bij de ontvanger.


Geen Afbeelding

Het end-to-endprincipe van TCP en IP is een abstractie:

De routers weten niks over de berichten die ze doorsturen. De computers die de berichten verzenden en ontvangen zijn de enigen die geïnteresseerd zijn in de betekenis van de berichten.


Het Transmission Control Protocol (TCP) is een betrouwbaar verbindingenprotocol. Het is een verbinding tussen twee computers. ‘Het pakket komt over, want er ligt een directe link’.

Het internetprotocol (IP) is een best-effort-packet-protocol. Er is geen garantie dat het pakket aankomt. ‘We doen ons best, maar het kan misgaan’.

TCP en IP zijn twee netwerkprotocollen die voor abstractie zorgen.


  1. Geen Afbeelding

    Dit project geeft een simulatie van onbetrouwbare data-transmissie door het internetprotocol.
    In deze simulatie is het hele bericht een stuk tekst dat verdeeld wordt in pakketjes van één letter. In het echt zijn pakketjes niet per se zo klein en zijn berichten vaak veel groter.
    • Klik op de groene vlag om de inkomende verzending variabelen voor elk experiment te initialiseren.
    • Klik op ieder personage om een bericht in voeren en het naar de ander te sturen.

  2. Geen Afbeelding

  3. Geen Afbeelding Vergelijk het resultaat met wat je hebt verzonden. Welke problemen zie je?


TCP voegt extra informatie toe aan ieder pakketje zodat de ontvanger (1) kan bijhouden hoeveel pakketjes er al ontvangen zijn, (2) missende pakketjes opnieuw kan aanvragen en (3) de pakketjes in de goeie volgorde kan zetten na ontvanst. In de simulatie hierboven arriveert een pakket correct (niet per se in de goede volgorde) of het arriveert nooit. Dus als we een 'B' versturen komt er óf een 'B' aan of niks, het is niet mogelijk dat er een 'C' arriveert. Maar op het internet is zoiets wel mogelijk. Het kan zo maar zijn dat een pakket arriveert met fouten in de data, dus het TCP moet controleren of er fouten in het pakket zitten en vragen of het pakketje opnieuw verzonden kan worden.


  1. Lees Blown to Bits pagina's 306-309.
Geen Afbeelding
  1. Bouw een simpele versie van TCP na. Los de onbetrouwbaarheid op zodat berichten betrouwbaar ontvangen worden, ondanks de beperkingen van IP-pakketjes. Je moet de volgende blokken aanpassen:
    • Geen Afbeelding
    • Geen Afbeelding

    Pas niet Geen Afbeelding aan. Dat blok simuleert het onbetrouwbare netwerk. Je zou het probleem wel kunnen oplossen door dit blok te herschrijven om een perfect netwerk te simuleren, maar dan mis je het punt van deze opdracht.

    Om dit probleem aan te pakken heb je een manier nodig om de volgorde van de gegevens bij te houden en een manier om ontbrekende pakketjes opnieuw aan te vragen.
    • Los eerst het probleem op van pakketjes die in de verkeerde volgorde arriveren. Je kan extra informatie meegeven bij de data van het pakket om de ontvanger te helpen het originele bericht te reconstrueren. Dit vergt samenwerking van de zender en de ontvanger, dus je moet allebei de grijze blokken aanpassen.
    • Los daarna het probleem op van pakketjes die überhaupt niet arriveren. Dit wil zeggen: maak de verzending betrouwbaar, ook al is IP alleen niet betrouwbaar. Hiervoor moet je ook allebei de grijze blokken aanpassen.

Terug Volgende