home       basis       routing       switching       advanced       security       overig       testen      

TCP (4): Sliding Window Mechanisme

  
Het sliding window mechanisme is een cruciaal onderdeel van TCP (Transmission Control Protocol).
Het maakt het mogelijk om meerdere pakketten te verzenden vooralleer er een bevestiging nodig is van het laatst aangekomen pakket.
Bij de session setup wordt aan beide kant (client / server) een venstergrootte vastgesteld waarbinnen een aantal pakketten kunnen worden verzonden zonder dat er na elk pakket een ACK moet worden teruggestuurd. Op die manier kun je STREAMEN zonder onderbreking.
 

  1. definities:
     
    WINDOW SIZE: De venstergrootte is het maksimaal aantal bytes die kunnen worden verzonden, voordat er een ACK van de ontvanger nodig is.
    Zowel de verzender als de ontvanger onderhouden een venster. Het venster van de verzender geeft aan hoeveel gegevens er kunnen worden verzonden,
    terwijl het venster van de ontvanger aangeeft hoeveel gegevens er maksimaal kunnen worden ontvangen (gebufferd).
     
    SLIDING window: Als pakketten worden bevestigd, "schuift" het venster naar voren,
    waardoor de verzender weer meer pakketten kan verzenden.
     
  2. componenten van de sliding window(s):
     
    verzendvenster:
    In het verzendvenster kunnen zich de volgende ata bevinden:
     
    verzonden en bevestigd: Gegevens die zijn verzonden en bevestigd.
    verzonden maar niet bevestigd: Gegevens die zijn verzonden maar nog niet bevestigd.
    niet verzonden maar toegestaan: Gegevens die binnen de venstergrootte vallen maar nog niet zijn verzonden.
    niet toegestaan: Gegevens buiten de huidige venstergrootte.
     
    ontvangstvenster:
    Dit heeft een vergelijkbare structuur als het verzendvenster,
    dit venster houdt bij welke gegevens zijn ontvangen,
    welke gegevens zijn bevestigd,
    en de beschikbare ruimte voor nieuwe gegevens.
     
  3. werking van het schuifvenster:
     
    begin status:
    Zender en ontvanger komen een begin venstergrootte overeen.
    Zender begint met het verzenden van gegevens tot maksimaal de volledige grootte van het venster.
     
    gegevensoverdracht:
    Zender verzendt een reeks gegevenspakketten tot de limiet van de venstergrootte.
    Elk pakket wordt geïdentificeerd door een volgnummer.
     
    bevestiging:
    De ontvanger bevestigt ontvangen pakketten door een ACK te verzenden met het volgende verwachte volgnummer.
    De ACK's zijn cumulatief, wat betekent dat een ACK voor volgnummer X
    impliceert dat alle bytes tot X-1 correct zijn ontvangen.
     
    vooruit schuiven:
    Na ontvangst van een ACK schuift de verzender het venster naar voren,
    waardoor er weer meer gegevens kunnen worden verzonden.
    De venstergrootte kan dynamisch worden aangepast op basis van
    netwerkomstandigheden en de bufferbeschikbaarheid van zender<>ontvanger.
     
    dynamische aanpassingen:
    Tijdens de transfert is het mogelijk dat de venstergrootte wordt aangepast.
     
    watch -- >>
    http://netwerk800.be/basis/tcp-ip/tcp-yt-animaties/TCP_flow-control-n-window-size.mp4
    http://netwerk800.be/basis/tcp-ip/tcp-yt-animaties/TCP_sliding_window.mp4
    http://netwerk800.be/basis/tcp-ip/tcp-yt-animaties/TCP_packet-loss-n-retransmission.mp4
    http://netwerk800.be/basis/tcp-ip/tcp-yt-animaties/TCP_selective_acks.mp4