Betrouwbare communicatie over onbetrouwbare verbindingen: TCP

Op deze pagina, ga je leren over het systeem dat zorgt voor betrouwbare communicatie op het internet.

Computer, servers en routers zijn vrij betrouwbaar, maar soms raakt een pakket verloren. Zulke fouten moet het internet aankunnen. Een manier om fouten aan te pakken is om er niks om te geven. (Als je één frame van een video kwijtraakt, maakt het bijvoorbeeld niet heel veel uit.) Een andere manier (TCP genaamd) is om pakketjes te blijven versturen totdat aangegeven wordt dat ze ontvangen zijn. TCP (Transmission Control Protocol in het Nederlands, Verzendingcontroleprotocol) garandeert betrouwbare dataverzending door bij te houden welke pakketjes succesvol ontvangen zijn, een verloren of beschadigd pakkeetje wordt opnieuw verstuurd. Daarnaast wordt ook aangegeven wat de volgorde van de data is om het weer in de goede volgorde elkaar te zetten bij de ontvanger.

TCP en IP zijn een paar protocollen die voor abstractie zorgen. Met IP doet je computer alsof het een directe verbinding heeft met een andere computer. Met TCP doet je computer alsof het een betrouwbare verbinding heeft met een andere computer.


Geen Afbeelding
Als je geen verbinding kan maken met YouTube, kijk de video dan hier..

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 sturen en ontvangen zijn de enige die geïnteresseerd zijn in wat de berichten betekenen.

  1. Geen Afbeelding
    Dit project geeft een simulatie van onbetrouwbare data-transmissie door het internetprotocol.
    • Klik op de groene vlag om de inkomende verzending variabelen te initialiseren voor het experiment.
    • Klik op ieder personage om een bericht in te typen om te sturen naar het andere personage.
  2. 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.
    Geen Afbeelding
  3. Geen Afbeelding Vergelijk het resultaat met wat je verzond. Welke problemen zie je?

TCP voegt extra informatie toe aan ieder pakketje zodat de ontvanger kan bijhouden hoeveel pakketjes er al ontvangen zijn, missende pakketjes opnieuw kan aanvragen en de pakketjes in de goeie volgorde kan terugzetten. 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 kan het probleem "oplossen" door dit blok te herschrijven om een perfect netwerk te maken, maar dan mis je het punt van deze opdracht.
    Om dit probleem op te lossen heb je een manier nodig om de volgorde van de gegevens bij te houden en een manier om missende 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 maken. 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 maak verzending betrouwbaar, ook al is IP alleen niet betrouwbaar. Hiervoor moet je ook allebei de grijze blokken aanpassen.
Terug Volgende