De applicatielaag

Leer hoe de applicatieprotocollen van het internet werken en waarom ze zo zijn ontworpen. Vergelijk client-serverontwerpen en peer-to-peerontwerpen en kies tussen TCP en UDP. Lees HTTP-berichten, leg cookies, caching, HTTP/2 en HTTP/3 over QUIC uit en volg DNS-naamopzoekingen en de aflevering van e-mail. Bereken peer-to-peerdistributietijden, leg adaptieve videostreaming en contentdistributienetwerken uit en schrijf eenvoudige UDP- en TCP-client- en serverprogramma's in Python.

GemiddeldLes 2 van 8 in Cursus Computernetwerken en internetprotocollen

Wat je leert

  1. Vergelijk client-serverontwerpen en peer-to-peerontwerpen, beschrijf hoe applicatieprocessen via sockets berichten uitwisselen en stem de behoeften van een applicatie af op de diensten die TCP en UDP bieden.
    • Vergelijk client-serverarchitecturen en peer-to-peerarchitecturen
      Beschrijf hoe elke architectuur rollen aan hosts toewijst, waarom peer-to-peerontwerpen meegroeien met hun gebruikers en welke uitdagingen elk ontwerp met zich meebrengt.
    • Beschrijf hoe processen communiceren en kies een transportdienst
      Leg sockets en de adressering van processen uit, beschrijf wat een applicatielaagprotocol vastlegt en bepaal of een applicatie over TCP of UDP moet werken.
  2. Lees en beredeneer HTTP-berichten en -verbindingen, leg uit hoe cookies en caches werken en beschrijf wat HTTP/2 en HTTP/3 veranderen aan de manier waarop berichten worden verzonden.
    • Lees HTTP-berichten en vergelijk verbindingstypen
      Interpreteer HTTP-verzoeken en -antwoorden en bereken hoe persistente en niet-persistente verbindingen de laadtijd van een pagina beïnvloeden.
    • Leg uit hoe cookies en webcaches werken
      Beschrijf hoe websites met cookies gebruikers herkennen via toestandsloos HTTP en bereken hoe een cacheproxy en voorwaardelijke verzoeken vertraging en verkeer verminderen.
    • Leg uit hoe HTTP/2 en HTTP/3 met QUIC het web versnellen
      Beschrijf blokkering door het eerste element en leg uit hoe frames in HTTP/2 en HTTP/3 over QUIC vertragingen verminderen terwijl de betekenis van HTTP-berichten gelijk blijft.
  3. Volg een naamopzoeking door de DNS-hiërarchie, lees DNS-records en DNS-berichten en leg uit hoe caching en een gedistribueerd ontwerp DNS snel en veerkrachtig houden.
    • Volg een naamopzoeking door de DNS-hiërarchie
      Beschrijf de diensten van DNS en de rollen van rootservers, topleveldomeinservers, autoritatieve servers en lokale DNS-servers, en volg de verzoeken bij een naamopzoeking stap voor stap.
    • Lees DNS-records en DNS-berichten
      Interpreteer de gebruikelijke typen DNS-records, volg hoe records de niveaus van de hiërarchie verbinden en lees DNS-aanvragen en -antwoorden en hun beveiligingszwakheden.
  4. Volg een bericht van afzender tot ontvanger via SMTP, lees dialogen voor e-mailoverdracht en berichtformaten en leg uit hoe gebruikers met protocollen voor e-mailtoegang hun e-mail lezen.
    • Volg een e-mailbericht tijdens de overdracht met SMTP
      Beschrijf de onderdelen van het e-mailsysteem, volg een SMTP-dialoog tussen mailservers en leg uit hoe e-mail wordt aangeboden en hoe vervalste afzenders worden herkend.
    • Leg berichtformaten en protocollen voor e-mailtoegang uit
      Lees de header en MIME-structuur van een e-mailbericht en vergelijk IMAP, POP3 en webmail als manieren om e-mail te lezen.
  5. Bereken waarom peer-to-peerbestandsdistributie schaalt, leg uit hoe BitTorrent een bestand deelt en beschrijf hoe adaptieve streaming en contentdistributienetwerken video aan miljoenen kijkers leveren.
    • Bereken de P2P-distributietijd en leg BitTorrent uit
      Vergelijk de minimale tijd om een bestand met een server en met peer-to-peer te distribueren en leg uit hoe de bestandsdelen, verzoeken volgens zeldzaamste eerst en wederkerige uitwisseling van BitTorrent werken.
    • Leg adaptieve videostreaming via HTTP uit
      Leg het verband tussen videobitsnelheden en netwerkdoorvoersnelheid en leg uit hoe DASH-clients segmenten kiezen om de weergave vloeiend te houden.
    • Leg uit hoe contentdistributienetwerken content leveren
      Beschrijf waarom contentaanbieders CDN's gebruiken, vergelijk manieren om CDN-servers te plaatsen en volg hoe DNS een verzoek naar een nabijgelegen CDN-server leidt.
  6. Gebruik de socketmodule van Python om UDP- en TCP-clients en -servers te bouwen en leg uit hoe het gedrag van elk programma voortvloeit uit de onderliggende transportdienst.
    • Bouw een UDP-client en een UDP-server
      Schrijf en verklaar een UDP-client en -server in Python, inclusief adressering, codering, time-outs en de beperkingen van datagramaflevering.
    • Bouw een TCP-client en een TCP-server
      Schrijf en verklaar een TCP-client en -server in Python, verwerk de bytestroom van TCP correct en gebruik een socket om handmatig HTTP te spreken.

Applicatielaag: uitleg

6 hoofdstukken

1

Applicatieontwerp en transportdiensten

Netwerkprogramma's hebben een plan nodig voor wie met wie communiceert en een dienst die hun gegevens vervoert. Een browser die een bestand ophaalt en een spel dat positie-updates verzendt, kunnen hetzelfde internet delen en toch verschillende ontwerpkeuzes maken. Volg een uitwisseling vanaf de processen aan beide uiteinden via hun sockets en vergelijk vervolgens wat TCP, UDP en beveiligde transportprotocollen bieden voor betrouwbaarheid, timing, doorvoersnelheid en bescherming.

1.1 Waar applicatieprogramma's draaien

Een netwerkapplicatie bestaat uit programma's die draaien op eindsystemen: telefoons, laptops en servers. Hun processen wisselen berichten uit via het netwerk. Routers en switches sturen de pakketten door; er hoeft geen nieuw applicatieprogramma op te worden geïnstalleerd wanneer iemand een nieuwe dienst maakt.

Twee manieren om het werk te verdelen

Een applicatiearchitectuur beschrijft hoe de applicatie het werk over hosts verdeelt. Die staat los van de gelaagde architectuur van het netwerk. De ontwikkelaar kiest waar programma's draaien en vertrouwt op het bestaande netwerk om ze te verbinden.

In een client-serverontwerp nemen clients contact op met een server die altijd aanstaat op een bekend adres. Een browser vraagt een document op bij een webserver, die het document terugstuurt. Andere browsers hoeven niet online te zijn om die uitwisseling te laten werken. Een populaire dienst kan de serverrol over duizenden machines in datacenters verdelen; één openbare naam kan die groep vertegenwoordigen. Apparatuur, stroom, koeling en internetverbindingen kosten allemaal geld.

Een peer-to-peerontwerp, of P2P-ontwerp, laat apparaten van gebruikers rechtstreeks gegevens uitwisselen. Een peer kan een bestandsdeel opvragen en ook delen uploaden die die al heeft. Peers kunnen de verbinding verbreken of van adres veranderen, dus moet de applicatie beschikbare peers vinden en blijven werken als de samenstelling verandert.

OntwerpWie levert de content?Wat gebeurt er als gebruikers deelnemen?
Client-serverSpecifieke serverhostsMeer verzoeken bereiken de servers van de dienst.
P2PDeelnemende hosts van gebruikersDe vraag groeit en peers dragen uploadcapaciteit bij.
Volg één uitwisseling

Stel dat een onderzoeksgroep een grote dataset distribueert. In een client-serverontwerp downloadt elke onderzoeker een kopie van de server van de groep. Tien nieuwe onderzoekers betekenen tien extra kopieën die die server moet uploaden. In een P2P-ontwerp sturen onderzoekers die al enkele delen hebben, die delen naar nieuwkomers. Elke deelnemende onderzoeker kan naast vraag ook capaciteit toevoegen. Dit is zelfschaling: de middelen van de applicatie groeien mee met de deelname.

Zelfschaling blijft afhankelijk van nuttige bijdragen. Een peer met een trage uploadverbinding voegt minder capaciteit toe dan een peer met een snelle verbinding. Veel verbindingen bij huishoudens zijn asymmetrisch: downloaden gaat sneller dan uploaden. Een peer die de verbinding verbreekt, draagt niets bij zolang die offline is. P2P-software moet deelnemers ook beschermen tegen niet-vertrouwde peers en gebruikers aanmoedigen om te uploaden in plaats van alleen gegevens af te nemen.

Centrale coördinatie en rechtstreekse overdracht

Een hybride ontwerp combineert coördinatie door een server met P2P-gegevensoverdracht. Een BitTorrent-tracker vertelt een peer over andere peers; de tracker hoeft het bestand zelf niet te verzenden. Op dezelfde manier kan een beldienst deelnemers via een server vinden, hun apparaten rechtstreeks media laten uitwisselen en een tussenstation gebruiken wanneer een rechtstreeks pad niet beschikbaar is. Deel het pad waarover de gegevens gaan afzonderlijk in van het pad dat de verbinding opzet.

De woorden client en server beschrijven ook rollen in een afzonderlijke uitwisseling. Als peer Mira een verzoek aan peer Leo initieert, is Mira de client en Leo de server voor die uitwisseling. Even later kunnen ze de rollen omkeren. P2P neemt de afhankelijkheid van specifieke contentservers weg; de initiërende en antwoordende rollen blijven bestaan.

Belangrijkste punten

  • Applicatieprogramma's draaien op eindsystemen; de netwerkkern stuurt hun pakketten door.
  • Client-serverontwerpen plaatsen dienstcapaciteit op specifieke hosts.
  • P2P-deelnemers voegen naast vraag ook uploadcapaciteit toe.
  • Een hybride ontwerp kan een centrale wegwijzer gebruiken terwijl peers de content overdragen.
  • De rollen van client en server hangen af van wie elke uitwisseling initieert.

1.2 Sockets, adressen en transportkeuzes

Een draaiend applicatieprogramma is een proces. Processen op verschillende hosts wisselen berichten uit via sockets, de software-interfaces tussen de applicatielaag en de transportlaag. De applicatiecode bepaalt wat het bericht betekent; de transportdienst vervoert de bytes of datagrammen.

Vind het ontvangende proces

Een IP-adres identificeert een host, maar op die host kunnen veel diensten draaien. Een poortnummer identificeert een transporteindpunt op de host. Om contact te maken met een HTTPS-dienst op 203.0.113.10, richt een client zich normaal op poort 443. Het eigen besturingssysteem wijst meestal een tijdelijke bronpoort toe.

Poorten zijn 16-bitswaarden, van 0 tot en met 65.535. Systeempoorten omvatten 0–1023, geregistreerde poorten 1024–49.151 en dynamische poorten 49.152–65.535. Gebruikelijke dienstpoorten zijn HTTP 80, HTTPS 443, SMTP-overdracht 25 en DNS 53. Een poort maakt deel uit van de adressering en zegt niet of het verkeer versleuteld of betrouwbaar is.

Spreek de berichten af

Een applicatielaagprotocol definieert berichttypen, syntaxis, semantiek en uitwisselingsregels. Typen onderscheiden een verzoek van een antwoord. Syntaxis beschrijft velden en scheidingstekens. Semantiek vertelt elke deelnemer wat die velden betekenen. Uitwisselingsregels bepalen wanneer een proces een bericht verzendt en hoe de ontvanger reageert. Openbare specificaties, vaak RFC's, laten programma's van verschillende ontwikkelaars communiceren.

Een protocol is één onderdeel van een applicatie. Het web heeft ook browsers, servers en documenten nodig. Alleen HTTP definiëren bouwt geen browser en bepaalt niet hoe de interface eruitziet.

Stem de dienst af op de behoefte

Bekijk vier behoeften: correcte aflevering, voldoende doorvoersnelheid, aanvaardbare vertraging en beveiliging. Voor een e-mailbijlage is elke byte nodig. Een spraakgesprek kan enig verlies van media verdragen, maar ondervindt hinder als oude audio te laat aankomt. Opgeslagen video heeft een aanhoudende doorvoersnelheid nodig die dicht bij de gecodeerde bitsnelheid ligt, terwijl een elastische download de beschikbare snelheid kan gebruiken.

DienstWat de applicatie ontvangtWat de applicatie zelf nog moet afhandelen
TCPEen betrouwbare, geordende bytestroom na verbindingsopbouwBerichtafbakening, beveiliging en wisselende vertraging of doorvoersnelheid
UDPAfzonderlijke datagrammen zonder verbindingsopbouwVerlies, duplicatie, volgorde en eventueel vereiste betrouwbaarheid

TCP omvat stroomregeling om de ontvanger te beschermen en congestiebeheersing om overbelasting in het netwerk te verminderen. Het biedt geen minimale bandbreedte of uiterste aflevertijd. UDP zelf voegt geen betrouwbaarheid en geen congestiebeheersing toe. Door UDP te kiezen verdwijnt congestie niet van het pad.

Een spel dat 30 keer per seconde posities verzendt, produceert bijvoorbeeld ongeveer elke 33 ms een nieuwe update. Het kan UDP gebruiken zodat een verloren update door een nieuwere kan worden vervangen zonder op hertransmissie van die update te wachten. De chat van het spel heeft nog steeds betrouwbare aflevering nodig, via TCP of via betrouwbaarheid die het eigen protocol toevoegt.

Voeg beveiliging toe aan de stack

TCP en UDP zonder extra beveiliging versleutelen geen applicatiegegevens. HTTP/1.1 en HTTP/2 gebruiken voor HTTPS meestal TLS over TCP. TLS voegt vertrouwelijkheid, integriteit en serverauthenticatie toe. HTTP/3 gebruikt QUIC over UDP; QUIC biedt betrouwbaarheid, congestiebeheersing en ingebouwde TLS 1.3. Opgeslagen video die via HTTP wordt geleverd, gebruikt daarom TCP of QUIC, terwijl interactieve gesprekken media vaak via UDP vervoeren.

Belangrijkste punten

  • Een IP-adres en poort identificeren waar een proces netwerkverkeer ontvangt.
  • Applicatieprotocollen definiëren typen, syntaxis, semantiek en uitwisselingsregels.
  • TCP levert betrouwbare bytes in volgorde, zonder gegarandeerde snelheid of uiterste aflevertijd.
  • UDP bewaart datagrammen als afzonderlijke berichten, maar laat betrouwbaarheid over aan hogere lagen.
  • TCP en UDP versleutelen zelf geen gegevens.
  • HTTP/3 krijgt betrouwbare, beveiligde streams van QUIC over UDP.
2

Hoe HTTP webcontent levert

Bij het laden van een pagina komen berichtformaten, verbindingsopbouw en verzoeken om meerdere objecten samen. Het verloop hangt ook af van de vraag of de browser een verbinding of antwoord kan hergebruiken en of de site de bezoeker moet herkennen. Lees eerst de zichtbare HTTP-uitwisseling, bereken de belangrijkste vertragingen en volg daarna hoe cookies, caching en nieuwere HTTP-transportprotocollen het werk voor de aflevering van de pagina veranderen.

2.1 HTTP-berichten en verbindingstijden

Een webpagina bestaat meestal uit meerdere objecten, elk met een eigen URL. De basis-HTML verwijst naar afbeeldingen, scripts en andere bestanden. In https://www.example.org/docs/intro.html is https het schema, www.example.org de host en /docs/intro.html het pad.

Lees een verzoek en antwoord

HTTP werkt met verzoek-antwoorduitwisselingen. Een HTTP/1.1-verzoek begint met een methode, pad en versie:

GET /docs/intro.html HTTP/1.1
Host: www.example.org
Connection: close

De verzoekregel en headerregels eindigen met CRLF. Een lege regel sluit de headers af, eventueel gevolgd door een berichtinhoud. Host is verplicht in HTTP/1.1 omdat meerdere sites één serveradres kunnen delen. Connection: close vraagt om sluiting na het antwoord.

GET haalt een object op. HEAD vraagt de antwoordheaders op zonder de berichtinhoud. POST verzendt gegevens in de inhoud van een verzoek; een GET kan ook formulierwaarden in de querystring van de URL meenemen. PUT slaat een object op een opgegeven URL op en DELETE verwijdert een object.

Het antwoord begint met een statusregel zoals HTTP/1.1 200 OK, gevolgd door headers, een lege regel en de berichtinhoud. Content-Type geeft de representatie aan; Content-Length geeft de lengte in bytes. Statusklassen zijn 1xx informatie, 2xx geslaagd, 3xx omleiding, 4xx clientfout en 5xx serverfout. Een 301 verwijst in Location naar een nieuwe URL; 304 staat hergebruik van een kopie uit de cache toe. Een 404 betekent dat de server heeft geantwoord dat het opgevraagde object niet is gevonden, niet dat de server onbereikbaar was. Andere nuttige codes zijn 400, 500 en 505.

HTTP is toestandsloos: elk verzoek kan zonder eerdere verzoeken worden begrepen. Een website kan boven op HTTP toch een inlogstatus of winkelwagentje bijhouden. Een gewoon herhaald GET-verzoek kan het object opnieuw teruggeven, terwijl een voorwaardelijk verzoek een opgeslagen kopie kan valideren.

Tel de rondlooptijden

Reken voor één object over een nieuwe TCP-verbinding één RTT voor de verbindingsopbouw en één voor het verzoek en het begin van het antwoord. Tel daar vervolgens de transmissietijd van het object bij op. Met RTT 30 ms, grootte 500 kB en snelheid 50 Mbps:

Ttransmit=500.000×850.000.000=0,08 s

Het totaal is 60 ms plus 80 ms, ofwel 140 ms. Dit model laat DNS, TLS en verwerkingstijd buiten beschouwing. Een volledige TLS 1.3-handshake over de nieuwe TCP-verbinding voegt nog een RTT toe.

Hergebruik of heropen de verbinding

Een niet-persistente verbinding vervoert één object. Een persistente verbinding kan latere verzoeken vervoeren zonder opnieuw een TCP-verbinding op te zetten. Persistentie is de standaard in HTTP/1.1, al worden ongebruikte verbindingen uiteindelijk gesloten.

Voor één HTML-object en acht kleine afbeeldingen, RTT 20 ms en verwaarloosbare transmissietijden:

OphaalpatroonRondlooptijdenTijd
Nieuwe verbinding voor elk object, na elkaar18360 ms
Eerst HTML, daarna acht nieuwe verbindingen parallel480 ms
Eén persistente verbinding, verzoeken na elkaar10200 ms
Eén persistente verbinding, acht afbeeldingsverzoeken via pipelining360 ms

De afbeeldingsverzoeken zijn afhankelijk van de ontvangst van de HTML. Zelfs bij parallel ophalen kunnen ze niet beginnen voordat hun URL's bekend zijn. Tel die afhankelijke fasen voordat je handshakes telt. HTTP/1.1-browsers gebruiken meestal meerdere verbindingen per host; pipelining is een tijdmodel, geen vereiste voor persistentie.

Belangrijkste punten

  • Bij het laden van een pagina worden de HTML en de objecten waarnaar die verwijst opgehaald.
  • HTTP/1.1 scheidt de beginregel, headers en optionele berichtinhoud met regeleinden en een lege regel.
  • Bij een nieuwe TCP-verbinding kost één object ongeveer twee RTT's plus transmissietijd, zonder de tijd voor TLS.
  • Persistentie bespaart herhaalde verbindingsopbouw.
  • Parallelle verzoeken wachten nog steeds totdat de HTML hun URL's bekendmaakt.
  • Een 404-antwoord laat zien dat een HTTP-server heeft geantwoord.

2.2 Gebruikers herkennen en antwoorden hergebruiken

HTTP-verzoeken staan op zichzelf, maar een winkel kan een winkelwagentje onthouden. Een browser kan ook een afbeelding hergebruiken in plaats van die opnieuw te downloaden. Cookies ondersteunen herkenning over meerdere verzoeken; caches ondersteunen hergebruik van antwoorden.

Volg een cookie

Bij een eerste bezoek maakt shop.example.com een databasevermelding voor een bezoeker en geeft Set-Cookie: id=1678 terug. De browser slaat die waarde op. Latere overeenkomende verzoeken bevatten Cookie: id=1678, zodat de server het winkelwagentje kan opzoeken. De cookie bestaat uit gegevens, niet uit uitvoerbare code, en het winkelwagentje zelf kan in de database van de server blijven staan.

Cookieattributen regelen het gebruik. Expires of Max-Age stelt een levensduur in; een cookie zonder een van beide is een sessiecookie. Domain en Path beperken welke verzoeken overeenkomen. Secure beperkt verzending tot HTTPS, HttpOnly verhindert toegang via paginascripts en SameSite regelt verzending in situaties met verschillende sites. Bij sessieherstel kunnen sessiecookies behouden blijven wanneer een browser een eerdere sessie herstelt.

Directe cookies behoren bij de bezochte site. Een ingebouwde dienst van derden kan cookies op verschillende sites gebruiken om een browser te herkennen. Safari blokkeert cookies van derden standaard; Firefox houdt ze per site gescheiden; Chrome biedt gebruikers instellingen en blokkeert ze in de incognitomodus. Regels van de Europese Unie vereisen toestemming voor cookies die niet strikt noodzakelijk zijn om een gevraagde dienst te leveren.

Volg een verzoek via de cache

Een webcache bewaart HTTP-antwoorden. Een browser heeft een eigen cache. Een cacheproxy staat tussen clients en oorsprongservers: die levert een cachetreffer direct of haalt bij een misser een antwoord op, slaat het op en stuurt het door. De proxy treedt op als server voor de browser en als client voor de oorsprongserver. Een proxy kan ook bestaan zonder te cachen.

Een treffer dichtbij vermindert de vertraging, de belasting van de oorsprongserver en het verkeer op de toegangsverbinding. Bij 90 verzoeken per seconde van gemiddeld 1 Mbit per stuk is het aangeboden verkeer 90 Mbps. Op een toegangsverbinding van 100 Mbps is de verkeersintensiteit 0,9, waarbij wachtrijen groot kunnen worden. Bij een trefferpercentage van 40% gaat nog 60% over de verbinding: 54 Mbps en een intensiteit van 0,54. Als treffers 10 ms en missers 200 ms kosten, is de gemiddelde responstijd:

T=0,4(10)+0,6(200)=124 ms

Deze verkeersberekening gaat uit van dezelfde gemiddelde objectgrootte voor de groep treffers en de groep missers. Een trefferpercentage dat alleen op basis van het aantal verzoeken wordt gemeten, hoeft niet gelijk te zijn aan de fractie bespaarde bytes wanneer objectgroottes verschillen.

Controleer de actualiteit vóór hergebruik

Een voorwaardelijk GET-verzoek stuurt If-Modified-Since met een opgeslagen wijzigingsdatum, of If-None-Match met een opgeslagen ETag. Een ongewijzigd object geeft 304 Not Modified zonder objectinhoud. De cache hergebruikt de kopie. Een gewijzigd object geeft 200 OK met het vervangende object. Validatie bespaart de transmissie van de inhoud, maar vereist nog steeds een rondgang naar de oorsprongserver.

AntwoordrichtlijnBetekenis
max-age=3600Een kopie kan 3.600 seconden actueel blijven.
no-cacheSla het antwoord op als dat mag, maar valideer het vóór hergebruik.
no-storeSla het antwoord niet op.
privateEen privécache mag het antwoord opslaan; gedeelde caches niet.

Een gedeelde proxy kan normaal de inhoud van een HTTPS-verbinding die erdoorheen loopt niet inspecteren. Browsercaches en CDN-servers die namens een site leveren, kunnen cachen bij de eindpunten waar die antwoorden in leesbare vorm beschikbaar zijn.

Belangrijkste punten

  • Cookies laten een server een browser herkennen over onafhankelijke HTTP-verzoeken heen.
  • Cookieattributen regelen levensduur, bereik en toegang.
  • Een cacheproxy heeft zowel een clientrol als een serverrol.
  • Cachetreffers kunnen vertraging en verkeer op de toegangsverbinding verminderen.
  • Een 304-antwoord valideert een opgeslagen object zonder de inhoud opnieuw te verzenden.
  • no-cache vereist validatie; no-store verbiedt opslag.
  • HTTPS beperkt wat een gewone gedeelde proxy kan cachen.

2.3 Frames, streams en HTTP/3

HTTP-versies behouden de betekenis van methoden, statuscodes, velden en URL's. Een 404 betekent nog steeds dat de opgevraagde resource niet is gevonden. Wat verandert, is hoe verzoeken en antwoorden worden vervoerd: HTTP/1.1 gebruikt tekstberichten, terwijl HTTP/2 en HTTP/3 binaire frames gebruiken.

Laat kleine antwoorden voortgang boeken

Op een HTTP/1.1-verbinding kunnen geordende antwoorden een klein object achter een groot object laten wachten. Dit is blokkering door het eerste element op applicatieniveau. Meerdere TCP-verbindingen openen vermindert die wachttijd, maar kost extra verbindingsopbouw en geeft de pagina meerdere concurrerende verbindingen met congestiebeheersing.

HTTP/2 verdeelt berichten in frames en wijst aan elke verzoek-antwoorduitwisseling een stream toe. De zender verzendt frames van verschillende streams door elkaar op één TCP-verbinding. Headercompressie, HPACK genoemd, vermindert herhaalde veldgegevens. Prioriteiten kunnen aangeven welke antwoorden het eerst aandacht krijgen.

Voor een vereenvoudigde vergelijking heeft één groot antwoord 1.000 frames en hebben acht kleine antwoorden elk twee frames. Verzend één frame per tijdslot. Als het grote antwoord eerst wordt verzonden, zijn de kleine antwoorden klaar in tijdslot 1.002 tot en met 1.016, met een gemiddelde van 1.009. Als om beurten één frame van elke onvoltooide stream wordt verzonden, zijn de kleine antwoorden klaar in tijdslot 11 tot en met 18, met een gemiddelde van 14,5. Het grote antwoord is klaar in tijdslot 1.016. Het door elkaar verzenden verandert de voltooiingstijden zonder de transmissiesnelheid van de verbinding te verhogen.

HTTP/2 specificeerde ook server push, waarmee content vóór een verzoek wordt verzonden. Grote browsers hebben dit uitgeschakeld. Een antwoord 103 Early Hints wijst in plaats daarvan op resources zodat de browser die alvast kan opvragen.

Vind het resterende blokkeringspunt

TCP levert één geordende bytestroom. Als bytes ontbreken, wachten latere bytes op herstel, ook als ze frames van een andere HTTP/2-stream bevatten. HTTP/2 neemt blokkering door de antwoordvolgorde weg, maar behoudt deze blokkering op transportniveau.

HTTP/3 zet HTTP over op QUIC, een transportprotocol dat over UDP werkt, en comprimeert headers met QPACK. QUIC biedt betrouwbare streams, stroomregeling, congestiebeheersing en beveiliging met TLS 1.3. Elke stream heeft een eigen aflevervolgorde. Ontbrekende gegevens op één stream verhinderen op zichzelf niet dat al ontvangen gegevens op een andere stream worden afgeleverd. Gedeelde congestiebeheersing en afhankelijkheden binnen de applicatie kunnen nog steeds meerdere streams beïnvloeden.

QUIC gebruikt verbindingsidentificaties zodat een verbinding een wijziging van IP-adres kan overleven, zoals bij de overgang van wifi naar een mobiel netwerk. De implementatie kan met een applicatiebibliotheek worden bijgewerkt, waardoor het trage uitrolproces van wijzigingen aan TCP in besturingssystemen en middleboxes wordt vermeden.

Vergelijk een nieuwe verbinding

Bij RTT 50 ms en zonder tijd voor DNS of verwerking kost TCP plus TLS 1.3 twee RTT's voordat het eerste HTTP/2-verzoek vertrekt. Een eerste antwoord begint na ongeveer 150 ms. QUIC combineert de opbouw van transport en beveiliging in één RTT, zodat een HTTP/3-antwoord na ongeveer 100 ms kan beginnen. Hervatte QUIC-verbindingen kunnen 0-RTT-gegevens gebruiken, maar het risico op herhaling beperkt welke verzoeken veilig vroeg kunnen worden verzonden.

Browsers kunnen HTTP/3 ontdekken via Alt-Svc of DNS-HTTPS-records. Als UDP is geblokkeerd, kunnen ze terugvallen op HTTP over TCP. HTTP/3 blijft betrouwbaar omdat QUIC boven op UDP betrouwbaarheid biedt.

Belangrijkste punten

  • HTTP-versies behouden de gedeelde betekenis van berichten.
  • HTTP/2 verzendt streams door elkaar op één TCP-verbinding.
  • Verlies in TCP kan nog steeds alle HTTP/2-streams op die verbinding blokkeren.
  • QUIC biedt onafhankelijke geordende streams en ingebouwde beveiliging over UDP.
  • QUIC verkort de opbouw van een nieuwe verbinding en ondersteunt adreswijzigingen via verbindingsidentificaties.
3

Hoe DNS diensten vindt

Namen verbergen de veranderende locaties van internetdiensten. Voordat een browser of mailserver contact opneemt met een bestemming, kan DNS een adres, een alias of een mailservernaam leveren. Volg een resolver door de gedistribueerde hiërarchie en bekijk daarna de records en berichtvelden die worden uitgewisseld. Antwoorden in de cache maken dit proces snel, terwijl hun levensduur verklaart waarom het tijd kan kosten voordat een gewijzigd adres elke gebruiker bereikt.

3.1 Een DNS-naamopzoeking van cache tot autoritatieve server

Een naam zoals www.example.org is handig voor mensen. Een verbinding heeft een IP-adres nodig. Het Domain Name System, of DNS, is zowel de gedistribueerde database met naamrecords als het applicatieprotocol waarmee die wordt bevraagd. Het gebruikt normaal poort 53 en werkt afzonderlijk van HTTP.

Verdeel het werk voor naamopzoekingen

Lees www.example.org. van rechts naar links: root, org, example en dan www. De laatste punt staat voor de root en wordt in dagelijks gebruik meestal weggelaten. Een centrale server voor alle namen zou een storingspunt, een verkeersknelpunt en lange paden voor ver verwijderde clients opleveren.

Rootservers verwijzen resolvers naar topleveldomeinservers. TLD-servers verwijzen ze naar de autoritatieve servers voor domeinen onder het TLD. Autoritatieve servers publiceren de eigenlijke records voor een domein. De 13 benoemde serveridentiteiten van de root zijn gerepliceerd over veel fysieke instanties; 13 is niet het aantal machines dat DNS wereldwijd ondersteunt.

De host stuurt zijn vraag normaal naar een lokale resolver, aangeboden door de organisatie, internetprovider of een openbare dienst. Die resolver werkt namens de host. De resolver is geen extra niveau tussen de root en het TLD in de naamhiërarchie.

Volg een naamopzoeking met lege cache

Een laptop op een campus heeft het IPv4-adres van www.example.org nodig:

  1. De laptop vraagt de lokale resolver om het definitieve antwoord.
  2. De resolver vraagt het aan een rootserver en ontvangt een verwijzing naar .org-servers.
  3. De resolver vraagt het aan een .org-server en ontvangt een verwijzing naar de autoritatieve servers voor example.org.
  4. De resolver vraagt het aan een autoritatieve server en ontvangt 203.0.113.25.
  5. De resolver geeft het adres terug aan de laptop.

Er zijn vier aanvraag-antwoordparen, ofwel acht berichten. Het verzoek van de host is recursief: verkrijg het antwoord voor mij. De aanvragen van de resolver zijn iteratief: elke geraadpleegde server antwoordt vanuit eigen kennis of verwijst de resolver verder. De root haalt het adres van de webserver niet namens de laptop op.

Hergebruik antwoorden totdat hun TTL eindigt

Een DNS-record heeft een levensduur, of TTL, gemeten in seconden. Resolvers bewaren herbruikbare records in caches totdat hun toegestane levensduur eindigt. Ze kunnen zowel verwijzingen als definitieve adressen cachen. Dankzij een opgeslagen TLD- of domeindelegatie kan een latere naamopzoeking eerdere stappen overslaan. Besturingssystemen en browsers kunnen ook caches hebben.

Met een RTT van 2 ms tussen host en resolver en een RTT van 30 ms voor elk van drie opeenvolgende aanvragen in de hiërarchie duurt de naamopzoeking met lege cache ongeveer 92 ms. Een adres in de cache van de resolver kost ongeveer 2 ms. De wachttijden worden opgeteld omdat elke verwijzing informatie levert die nodig is voor de volgende aanvraag.

Caching vertraagt ook wijzigingen. Als een resolver vlak voor een update een adres met een TTL van één uur heeft gecachet, kan die het oude adres gedurende de resterende levensduur blijven teruggeven. Door een TTL voorafgaand aan een geplande wijziging te verlagen, beperk je deze overlap; alleen het autoritatieve record wijzigen vervangt niet elke kopie in een cache.

DNS doet meer dan namen omzetten in adressen. Het ondersteunt aliassen, vindt mailservers en verdeelt de belasting door meerdere adressen voor een dienst terug te geven. Die rollen verklaren waarom ook e-mailaflevering en CDN-selectie afhankelijk zijn van DNS.

Belangrijkste punten

  • DNS is een gedistribueerde database en een applicatielaagprotocol voor aanvragen.
  • Rootservers, TLD-servers en autoritatieve servers verdelen de verantwoordelijkheid per naam.
  • Een lokale resolver voert het recursieve verzoek van de host uit met iteratieve aanvragen.
  • Records en verwijzingen in de cache verkorten latere naamopzoekingen.
  • TTL begrenst de bewaartijd in de cache, waardoor adreswijzigingen tijd nodig hebben om zich te verspreiden.

3.2 Records, verwijzingen en DNS-antwoorden

DNS slaat DNS-records op met een naam, waarde, type en TTL. Een type vertelt de resolver hoe die de waarde moet interpreteren. Een adresrecord, een alias en een mailserverrecord beantwoorden verschillende vragen over hetzelfde domein.

Lees het recordtype
TypeWat de waarde levert
AEen IPv4-adres voor een hostnaam
AAAAEen IPv6-adres voor een hostnaam
NSDe naam van een autoritatieve server
CNAMEEen canonieke naam voor een alias
MXEen mailservernaam met een voorkeursnummer
TXTTekst, waaronder informatie voor e-mailauthenticatie
PTREen naam voor een omgekeerde adresopzoeking
SOABeheerinformatie voor een zone
HTTPSDienstinformatie, waaronder ondersteunde HTTP-versies

Zo geeft www.example.org. 3600 IN A 203.0.113.25 de eigenaarnaam, TTL, internetklasse, het type en het adres. Een NS-waarde is een naam, geen adres. Een verwijzing kan een afzonderlijk A-record bevatten dat het adres van de naamserver levert, vaak een glue-record genoemd wanneer het nodig is om de delegatie op te lossen.

Een CNAME zoals media.example.org die naar edge.cdn.example.net verwijst, laat de resolver het adres van het doel opzoeken. Een MX-record stuurt daarentegen de e-mailaflevering. Probeer bij voorkeursnummers 10 en 20 eerst de mailserver met voorkeursnummer 10; een groter nummer betekent geen hogere prioriteit.

Lees het bericht rond de records

Aanvragen en antwoorden delen één formaat. De header van 12 bytes bevat een identificatienummer, vlaggen en aantallen vermeldingen in vier gedeelten. Het antwoord neemt de ID van de aanvraag over zodat de aanvrager de uitwisseling kan koppelen.

Het gedeelte vraag vermeldt wat is opgevraagd. Het gedeelte antwoord bevat overeenkomende records. Het gedeelte autoriteit kan NS-verwijzingen bevatten, terwijl aanvullend nuttige records zoals naamserveradressen levert. In de getoonde uitvoer van dig markeert qr een antwoord, betekent rd dat recursie is gevraagd en betekent ra dat recursie beschikbaar is. NOERROR meldt dat er geen DNS-fout is; NXDOMAIN meldt dat de opgevraagde naam niet bestaat. Een antwoord zonder fout kan nog steeds een record van het gevraagde type missen.

Om een nieuw domein te publiceren, registreert een eigenaar het en geeft informatie over de autoritatieve servers door. De delegatie vanuit het bovenliggende domein leidt aanvragen naar die servers, die de eigen host- en e-mailrecords van het domein publiceren. De naam registreren maakt de registrar niet tot de server die elk record bevat.

Aflevering en bescherming

De meeste kleine DNS-uitwisselingen gebruiken UDP-poort 53. Bij een afgekapt UDP-antwoord is de TC-vlag gezet; de resolver kan het opnieuw proberen via TCP-poort 53. TCP ondersteunt ook zoneoverdrachten. DNS is dus niet beperkt tot UDP.

Klassiek DNS-verkeer laat opgevraagde namen zien aan waarnemers op het pad. DNS over TLS of DNS over HTTPS versleutelt de uitwisseling tussen client en resolver, meestal op respectievelijk poort 853 en 443. Versleuteling van die uitwisseling en authenticiteit van een record zijn afzonderlijke eigenschappen.

Bij cachevergiftiging accepteert een resolver een vervalst antwoord en stuurt die gebruikers later naar het verkeerde adres. Onvoorspelbare ID's en bronpoorten maken het moeilijker om vervalste antwoorden te laten overeenkomen. DNSSEC voegt handtekeningen toe die verificatie van de authenticiteit van records ondersteunen; het verbergt de aanvraag niet. Overstromingsaanvallen kunnen DNS-servers ook onbereikbaar maken. Replicatie en verwijzingen in caches verminderen de afhankelijkheid van de root voor elk verzoek, maar storingen bij een veelgebruikte autoritatieve provider kunnen nog steeds veel sites verstoren.

Belangrijkste punten

  • Recordtypen onderscheiden adressen, delegaties, aliassen en e-mailroutering.
  • Een NS-record noemt een server; een afzonderlijk adresrecord geeft aan waar die te vinden is.
  • MX-records met lagere voorkeursnummers worden eerst geprobeerd.
  • DNS-antwoorden scheiden antwoorden, autoriteitsinformatie en aanvullende records.
  • DNS kan zowel TCP als UDP gebruiken.
  • Versleutelde DNS beschermt een pad; DNSSEC controleert de authenticiteit van ondertekende records.
4

Hoe e-mail wordt vervoerd en beschikbaar blijft

Een e-mail kan aankomen terwijl de telefoon van de ontvanger uitstaat, omdat servers aflevering en opslag onafhankelijk van gebruikersapparaten verzorgen. Volg de overdrachtsdialoog, onderscheid de afleverenvelop van de velden die een lezer ziet en bekijk hoe bijlagen in een bericht passen. Vergelijk daarna de toegangsprotocollen waarmee een laptop, telefoon of browser e-mail kan ophalen en de status van de mailbox kan bijhouden.

4.1 SMTP-aflevering en de e-mailenvelop

Bij e-mail staan het opstellen en het afleveren van een bericht los van elkaar. Een gebruikersagent is de app of webpagina waarmee je e-mail leest en schrijft. Een mailserver slaat inkomende e-mail op in mailboxen en houdt uitgaande berichten in een wachtrij. SMTP draagt berichten over tussen systemen.

Volg de aflevering na aanbieding

Alice biedt een bericht voor Bob aan haar eigen server aan. Die server zoekt de MX-records voor Bobs domein op, zoekt het adres van de gekozen server op en opent een TCP-verbinding met poort 25. De server stuurt het bericht actief naar Bobs server, die het in Bobs mailbox opslaat. De server van Alice is tijdens die overdracht de SMTP-client, ook al bedient die in een andere uitwisseling de gebruikersagent van Alice.

Als de bestemming tijdelijk niet beschikbaar is, bewaart de uitgaande wachtrij het bericht voor nieuwe pogingen. Het apparaat van Alice kan offline gaan terwijl haar server blijft werken. Na herhaaldelijk mislukken kan een melding van niet-aflevering teruggaan naar de afzender in de envelop.

Lees de dialoog

SMTP gebruikt tekstopdrachten en numerieke antwoorden. Hieronder staat een verkorte afleveringsuitwisseling; C: en S: geven de twee gesprekspartners aan en worden niet als onderdeel van elke opdracht verzonden.

S: 220 mail.example.net ready
C: EHLO mail.example.org
S: 250 mail.example.net
C: MAIL FROM:<alice@example.org>
S: 250 OK
C: RCPT TO:<bob@example.net>
S: 250 OK
C: DATA
S: 354 Send message
C: From: Alice <alice@example.org>
C: To: Bob <bob@example.net>
C: Date: Tue, 03 Mar 2026 10:02:44 +0100
C: Subject: Lab report
C:
C: The report is ready.
C: .
S: 250 Message accepted
C: QUIT
S: 221 Closing

Met EHLO stelt de verzendende host zich voor. MAIL FROM stelt de afzender in de envelop in; elke RCPT TO noemt een ontvanger in de envelop. DATA begint het bericht en een regel met alleen een punt sluit het af. Eén verbinding kan meer dan één bericht vervoeren. Antwoordklassen onderscheiden geslaagd (2xx), een verzoek om verdere invoer (3xx), een tijdelijke fout (4xx) en een blijvende fout (5xx). Een 4xx-antwoord vraagt om een nieuwe poging later; een 5xx-fout vraagt om een andere afhandeling, vaak een melding van niet-aflevering.

Houd afleveradressen gescheiden van getoonde velden

De SMTP-envelop regelt de routering. De velden From: en To: binnen het bericht worden aan de lezer getoond. Ze kunnen verschillen van de envelop. Een Bcc-ontvanger kan in RCPT TO staan zonder in de zichtbare berichtheaders te verschijnen. Voor een antwoord op een bericht en een melding van mislukte aflevering hoeft niet hetzelfde adres te worden gebruikt.

Een gebruiker biedt e-mail normaal aan via geauthenticeerde SMTP op poort 587 met STARTTLS, of poort 465 met TLS vanaf het begin. Overdracht tussen servers gebruikt normaal poort 25 en kan STARTTLS overeenkomen. Aanbieding en overdracht hebben verschillende rollen, ook wanneer beide SMTP gebruiken. HTTP haalt doorgaans gevraagde objecten op; SMTP stuurt een voorbereid bericht actief door.

Controleer het domein van de afzender

Een zichtbaar veld From: is eenvoudig te vervalsen. SPF controleert of de verzendende host bevoegd is voor het envelopdomein. DKIM verifieert een berichtondertekening met een publieke sleutel die in DNS is gepubliceerd. DMARC koppelt een geslaagd SPF- of DKIM-resultaat via domeinovereenstemming aan het zichtbare From-domein en publiceert een beleid voor mislukte controles. Een geslaagde SPF-controle voor een niet-gerelateerd envelopdomein alleen valideert de zichtbare afzender niet.

Belangrijkste punten

  • SMTP verzendt berichten actief over TCP tussen mailservers.
  • Dankzij wachtrijen kunnen servers opnieuw proberen terwijl gebruikersapparaten offline zijn.
  • De SMTP-envelop regelt de aflevering; berichtheaders bepalen wat lezers zien.
  • Aanbieding gebruikt meestal geauthenticeerde SMTP op poort 587 of 465.
  • Tijdelijke en blijvende SMTP-fouten vereisen verschillende reacties.
  • DMARC vereist een geslaagde SPF- of DKIM-controle met een overeenkomend domein, niet zomaar een geslaagde SPF-controle.

4.2 Berichtinhoud en een mailbox lezen

E-mailoverdracht, berichtinhoud en mailboxtoegang zijn afzonderlijke onderdelen van e-mail. SMTP brengt een bericht naar een mailserver. Het bericht heeft een eigen formaat met headers en berichtinhoud en een ontvanger krijgt later via een ander protocol toegang tot de opgeslagen mailbox.

Lees het bericht zelf

Een bericht begint met velden zoals From:, To:, Date:, Subject: en Message-ID:. Een lege regel scheidt deze headers van de berichtinhoud. Ze blijven deel uitmaken van het opgeslagen bericht; de SMTP-opdrachten MAIL FROM en RCPT TO worden geen berichtheaders.

Het basisformaat gebruikt tekstregels. MIME, Multipurpose Internet Mail Extensions, beschrijft rijkere inhoud met extra velden. Content-Type: text/plain; charset=UTF-8 beschrijft gewone tekst en de tekencodering. image/jpeg duidt een afbeelding aan. multipart/mixed beschrijft meerdere delen, gescheiden door een grenstekenreeks, zoals een tekstbericht gevolgd door een bijlage. Elk deel kan een eigen inhoudstype en overdrachtscodering hebben.

Content-Transfer-Encoding beschrijft hoe een deel voor overdracht wordt weergegeven. Base64 zet elke groep van drie bytes om in vier ASCII-tekens. Voor een bijlage van 3 MB worden 3.000.000 bytes 4.000.000 tekens, vóór regelafbrekingen en berichtheaders. De codering vergroot de omvang met ongeveer een derde. De totale berichtgroottelimiet van een server kan daarom niet alleen met de ruwe bijlagegrootte worden vergeleken. Quoted-printable is een andere codering die geschikt is voor grotendeels leesbare tekst.

Kies een protocol voor e-mailtoegang

De server van de ontvanger kan e-mail ontvangen terwijl de apparaten van de ontvanger offline zijn. Wanneer de ontvanger terugkomt, kan een client met een protocol voor e-mailtoegang opgeslagen berichten ophalen.

ToegangsmethodeWaar de mailboxstatus staatEffect op verschillende apparaten
IMAPBerichten, mappen en vlaggen blijven op de server.Apparaten kunnen dezelfde indeling en leesstatus delen.
POP3Een client downloadt berichten en kan ze van de server verwijderen.Downloaden en verwijderen kan e-mail voor een ander apparaat onbeschikbaar maken.
WebmailEen browser communiceert met de e-maildienst via HTTPS.De dienst beheert de mailbox achter de webinterface.

IMAP kan de headers of geselecteerde delen van een bericht ophalen zonder elke bijlage te downloaden. Het gebruikt meestal poort 143 met STARTTLS of poort 993 met TLS vanaf het begin. POP3 gebruikt meestal poort 110 of TLS op 995. De verwijderingsmarkeringen worden van kracht wanneer de sessie normaal wordt beëindigd. Downloaden en bewaren laat kopieën op de server staan, maar POP3 biedt niet de servermappen en gedeelde vlaggen van IMAP.

Stel dat Bob zijn e-mail op een laptop bekijkt voordat hij van huis vertrekt en daarna op een telefoon. Als de laptop POP3 met downloaden en verwijderen gebruikt, kan de telefoon een lege servermailbox aantreffen. Als Bob met IMAP een bericht op de laptop als gelezen markeert, verandert de serverstatus die de telefoon ook kan zien. Het verschil zit in de synchronisatie van de mailbox, niet in de SMTP-aflevering.

Volg een webmailbericht voorbij de browser

Een browser biedt e-mail aan of leest die via HTTPS. De webmailprovider gebruikt nog steeds SMTP om e-mail naar de server van een ander domein te brengen. Een volledig pad kan daarom bestaan uit HTTPS van afzender naar provider, SMTP tussen providers en vervolgens IMAP of HTTPS aan de ontvangende kant. De naam webmail beschrijft de gebruikersinterface en browserverbinding van een dienst, niet elk protocol op de route van het bericht.

Belangrijkste punten

  • Berichtheaders behoren tot het bericht en staan los van SMTP-opdrachten.
  • MIME beschrijft inhoudstypen, grenzen tussen berichtdelen en overdrachtscoderingen.
  • Base64 vergroot bijlagegegevens met ongeveer een derde, vóór andere extra gegevens.
  • IMAP synchroniseert berichten, mappen en vlaggen op de server.
  • POP3 met downloaden en verwijderen kan berichten verwijderen voordat een ander apparaat ze leest.
  • Webmail gebruikt HTTPS bij de browser en blijft afhankelijk van SMTP tussen mailservers.
5

Bestanden distribueren en video streamen

Een groot publiek veroorzaakt verschillende knelpunten voor één server, een groep peers en een verspreide verzameling caches. Begin met de upload- en downloadbeperkingen bij bestandsdistributie en bekijk daarna hoe BitTorrent dat werk verdeelt. Leg voor video het verband tussen de gecodeerde snelheid, segmentdownloads en de afspeelbuffer en volg hoe een CDN content plaatst en gebruikers naar servers leidt die die efficiënt kunnen leveren.

5.1 Bestandsdistributie en BitTorrent

Een bestand distribueren betekent dat elke ontvanger een volledige kopie moet verkrijgen. Het knelpunt is niet altijd de server: een trage downloader of onvoldoende totale uploadcapaciteit kan de minimale tijd bepalen. Het standaardmodel gaat ervan uit dat de toegangsverbindingen de knelpunten zijn en de kern voldoende capaciteit heeft.

Vergelijk de ondergrenzen

Laat het bestand F bits bevatten, met N ontvangers. De server uploadt met us; peer i uploadt met ui en downloadt met di. De laagste downloadsnelheid van de peers is dmin. Gebruik bij elkaar passende eenheden, zoals Mbit en Mbps, zodat de deling seconden oplevert.

Bij client-serverdistributie moet de server NF bits verzenden en de langzaamste peer F bits ontvangen:

Dcs≥max⁡{NFus,Fdmin}

Bij P2P moet de server elke bit minstens één keer inbrengen. Peers moeten het bestand nog steeds downloaden en het hele systeem moet voldoende gegevens uploaden voor alle kopieën:

DP2P≥max⁡{Fus,Fdmin,NFus+∑iui}

Neem het maximum, omdat tijdens de distributie aan alle vereisten moet worden voldaan. De termen optellen zou ten onrechte aannemen dat die upload- en downloadactiviteiten na elkaar plaatsvinden. Dit zijn ondergrenzen; protocoloverhead, onbeschikbare peers en andere knelpunten kunnen werkelijke overdrachten vertragen.

Werk een vergelijking uit

Gebruik voor een bestand van 2 Gbit 2.000 Mbit. Stel dat de serverupload 100 Mbps is, de langzaamste download 20 Mbps en elk van 100 peers uploadt met 5 Mbps.

De serverterm voor client-server is 200.000 Mbit gedeeld door 100 Mbps, ofwel 2.000 s. De term voor de langzaamste download is 100 s. De ondergrens is daarom 2.000 s.

Bij P2P duurt het inbrengen van het bestand minstens 20 s. De langzaamste download duurt nog steeds 100 s. De totale uploadcapaciteit is 100 plus 500, ofwel 600 Mbps; het distribueren van 200.000 Mbit duurt minstens ongeveer 333 s. De P2P-ondergrens is ongeveer 333 s. Bij 1.000 peers stijgt de client-serverondergrens naar 20.000 s, terwijl de P2P-ondergrens ongeveer 392 s is. Bij gelijke uploadsnelheden van peers nadert de term voor de totale capaciteit tot de bestandsgrootte gedeeld door de uploadsnelheid van één peer naarmate het aantal peers groot wordt.

Wissel delen uit in BitTorrent

Een torrent is een groep die één bestand deelt. Peers wisselen delen uit, ontdekken buren via een tracker of gedistribueerde hashtabel en kunnen uploaden voordat de download klaar is. Een seeder heeft het volledige bestand en blijft het delen.

Zeldzaamste eerst kiest een benodigd deel dat bij de minste buren aanwezig is en helpt zo delen te bewaren die anders zouden kunnen verdwijnen wanneer een peer vertrekt. Het bepaalt wat wordt opgevraagd. Wederkerigheid stimuleert nuttige uitwisseling door buren te bevoordelen die snel gegevens leveren; het bepaalt naar wie wordt geüpload.

In het oorspronkelijke ontwerp wordt voor vier geïnteresseerde buren tegelijk uploadcapaciteit vrijgegeven, waaronder één keer optimistisch. De gewone keuze wordt ongeveer elke 10 s herzien en de optimistisch gekozen peer ongeveer elke 30 s. Die verkennende plaats geeft nieuwkomers een manier om eerste delen te verkrijgen en helpt betere partners te ontdekken. De tracker coördineert het vinden van peers; die is niet de gegevensbron voor elk deel.

Belangrijkste punten

  • Client-serverdistributie wordt beperkt door de serverupload en de langzaamste download.
  • P2P hangt ook af van het inbrengen van het bestand en de totale uploadcapaciteit van het systeem.
  • Neem het maximum van gelijktijdige beperkingen, niet de som.
  • P2P schaalt omdat nieuwe peers uploadcapaciteit bijdragen.
  • Zeldzaamste eerst selecteert delen; wederkerigheid selecteert uploadpartners.
  • Optimistisch vrijgeven van uploadcapaciteit geeft nieuwe of nog niet verkende peers een kans om uit te wisselen.

5.2 Adaptieve streaming en veranderingen in de buffer

Een video bestaat uit frames die na elkaar worden weergegeven. Compressie verwijdert herhaalde informatie binnen een frame (ruimtelijke redundantie) en tussen frames (temporele redundantie). Het gecodeerde resultaat heeft een bitsnelheid: de hoeveelheid videogegevens die per seconde afspelen nodig is.

Leg het verband tussen snelheid, grootte en afspeeltijd

Een video van twee uur met 5 Mbps bevat 36.000 Mbit, ofwel 4,5 GB. Vermenigvuldig de snelheid met de duur om het aantal bits te verkrijgen en deel daarna door acht voor het aantal bytes. Als de gemiddelde doorvoersnelheid van het pad onder de gekozen videosnelheid ligt, raakt elke eindige buffer bij voortgezet afspelen uiteindelijk leeg.

Een speler kan beginnen voordat de hele video is gedownload. Die slaat komende gegevens op in een buffer, hier gemeten in seconden afspeelbare video. Tijdens het afspelen wordt de buffer verbruikt, terwijl downloads die aanvullen. Een grotere beginbuffer beschermt tegen dalingen in de doorvoersnelheid, maar vergroot de opstartvertraging.

Vraag telkens één segment op

DASH, Dynamic Adaptive Streaming over HTTP, slaat meerdere gecodeerde versies met verschillende snelheden op en verdeelt elke versie in segmenten. Een manifestbestand vermeldt de beschikbare versies en segment-URL's. De client vraagt een segment op met HTTP GET en kiest bij de volgende segmentgrens opnieuw een versie. HLS gebruikt een vergelijkbare aanpak met afspeellijsten.

De speler neemt de aanpassingsbeslissing op basis van de gemeten doorvoersnelheid en de buffervulling. Een hoge recente schatting van de doorvoersnelheid pleit voor een hogere snelheid; een bijna lege buffer vraagt om voorzichtigheid. Als de speler de hoogste snelheid kiest die eenmaal is gemeten, kan een onderbreking ontstaan als de volgende download trager verloopt. Spelers proberen ook afleidende, frequente kwaliteitswisselingen te vermijden.

Bereken een segmentdownload

Bekijk segmenten van 4 s die zijn gecodeerd met 1, 2,5, 5 en 8 Mbps. Bij een gemeten doorvoersnelheid van 6 Mbps bevat het segment van 5 Mbps 20 Mbit. Het downloaden duurt ongeveer 3,33 s en voegt 4 s afspeelbare content toe, terwijl het afspelen ongeveer 3,33 s verbruikt. Als het afspelen doorgaat, groeit de buffer met ongeveer 0,67 s.

Een segment van 8 Mbps bevat 32 Mbit en kost ongeveer 5,33 s, zodat de buffer met ongeveer 1,33 s krimpt. De 6 Mbps van het pad is een overdrachtssnelheid; die verandert een codering van 8 Mbps niet in een codering van 6 Mbps.

Als de doorvoersnelheid daalt naar 3 Mbps, kost hetzelfde segment van 5 Mbps ongeveer 6,67 s. De buffer verliest ongeveer 2,67 s per segment. Overschakelen naar de versie van 2,5 Mbps levert een segment van 10 Mbit op dat ongeveer 3,33 s kost, waardoor de buffer weer kan groeien. Om tijdens een download ononderbroken af te spelen, moet de beginbuffer ook meegaan totdat nieuwe afspeelbare gegevens beschikbaar zijn.

Opgeslagen streams en interactieve gesprekken

Streaming van opgeslagen video gebruikt gewone HTTP-objecten, die browsercaches en CDN-servers kunnen leveren. Die streaming werkt daarom, afhankelijk van de HTTP-versie, over TCP of QUIC. Interactieve gesprekken gebruiken vaak mediatransport op basis van UDP, omdat wachten op oudere media erger kan zijn dan ze verliezen.

Een live-evenement kan ook HTTP-streaming met segmenten gebruiken, maar de speler wacht tot elk segment is geproduceerd en houdt een buffer aan die achterloopt op de livegebeurtenissen. Kortere segmenten kunnen die vertraging verminderen, terwijl het aantal verzoeken toeneemt. Als je naar een niet-gebufferde plek gaat, moet de speler de buffer ook opnieuw vullen, wat de kwaliteit kort kan verlagen.

Belangrijkste punten

  • De gecodeerde bitsnelheid meet hoeveel gegevens per seconde afspelen nodig zijn.
  • De grootte van een segment is de duur maal de gecodeerde snelheid.
  • De verandering van de buffer tijdens ononderbroken afspelen is de segmentduur min de downloadtijd.
  • DASH-clients kiezen versies op basis van geschatte doorvoersnelheid en buffervulling.
  • Opgeslagen HTTP-video gebruikt TCP of QUIC; interactieve gesprekken stellen andere eisen aan timing.

5.3 CDN-plaatsing en routering van verzoeken

Een contentdistributienetwerk, of CDN, levert kopieën van content vanaf veel locaties. Zo hoeft niet elke kijker naar één ver verwijderd datacenter en zijn er minder herhaalde overdrachten over lange afstanden nodig. Het spreiden van de dienstcapaciteit vermindert ook de afhankelijkheid van één locatie.

Plaats content dicht bij gebruikers

Een privé-CDN behoort toe aan één aanbieder; een CDN van derden bedient veel klanten. Beide kunnen naast video ook afbeeldingen, scripts, software en webpagina's leveren. De oorspronkelijke bron van de content is de oorsprongserver. CDN-clusters bewaren kopieën zodat de oorsprongserver niet elk verzoek hoeft af te handelen.

Er zijn twee nuttige plaatsingsstrategieën:

StrategiePlaatsingAfweging
Diep in toegangsnetwerkenVeel kleinere clusters binnen netwerken van toegangsprovidersKorte paden naar gebruikers, maar veel locaties om te onderhouden
Bij internetknooppuntenMinder grote clusters bij internetknooppuntenEenvoudiger beheer, maar langere paden voor sommige gebruikers

De plaatsing en het vullen met content zijn afzonderlijke keuzes. Bij plaatsing op aanvraag haalt een cluster dat een object mist het op bij de oorsprongserver of een ander cluster, slaat het op en levert het. Bij voorafgaande plaatsing stuurt de aanbieder objecten van tevoren, vaak tijdens rustige perioden. Het eerste verzoek om een object dat niet in de cache staat, kan bij een CDN met plaatsing op aanvraag nog steeds afhankelijk zijn van de oorsprongserver.

Volg een overdracht via DNS

Een gebruiker vraagt https://video.stream.example.com/v/6Y7B23V op:

  1. De resolver van de gebruiker vraagt naar video.stream.example.com.
  2. De autoritatieve server van de aanbieder geeft een CNAME terug naar de naamruimte van het CDN, zoals a1105.cdn.example.net.
  3. De resolver volgt die naam naar de autoritatieve DNS-dienst van het CDN.
  4. Het CDN kiest een cluster en geeft een adres terug zoals 198.51.100.17.
  5. De client maakt via HTTPS verbinding met die server en vraagt de content op.

De CNAME verandert waar de naamomzetting verdergaat. DNS geeft naaminformatie terug; de bytes van de video komen daarna via HTTP aan. Als de content is gesegmenteerd, volgen veel gewone segmentverzoeken hetzelfde basispad naar een geselecteerde server.

Kies een bruikbare locatie

Het dichtstbijzijnde cluster op de kaart kan een slecht netwerkpad hebben of overbelast zijn. Een beslissing op basis van DNS kan de locatie van de resolver zien, die ver van de gebruiker kan zijn. Een betere selectie kan gemeten vertraging en verlies, de huidige belasting en soms informatie over het netwerk van de client gebruiken.

IP-anycast biedt een andere route naar een dienst in de buurt: meerdere locaties kondigen hetzelfde IP-adres aan en internetroutering kiest een pad naar een daarvan. De resulterende locatie hangt af van routering, niet alleen van fysieke afstand. Een server dicht bij de kijker kan nog steeds slechte video leveren als de eigen toegangsverbinding van de kijker het knelpunt is.

Open Connect van Netflix plaatst apparaten binnen netwerken van internetproviders en sluit aan op knooppuntlocaties. Content wordt vooraf geplaatst, waardoor tijdens piekuren minder verkeer over de verbindingen naar buiten gaat. De applicatiediensten en de levering van gecodeerde video hoeven niet op dezelfde infrastructuur te draaien. Andere privé-CDN-ontwerpen kunnen caches op aanvraag vullen. In elk geval regelt adaptieve streaming welke snelheid de speler opvraagt, terwijl het CDN helpt bepalen via welk pad en vanaf welke server die verzoeken worden bediend.

Belangrijkste punten

  • Een CDN verspreidt kopieën en leveringscapaciteit over locaties.
  • Bij plaatsing diep in toegangsnetwerken en plaatsing bij internetknooppunten weeg je padlengte af tegen de kosten van locatiebeheer.
  • Plaatsing op aanvraag vult de cache bij een verzoek; voorafgaande plaatsing vult die vóór verzoeken.
  • Een DNS-CNAME kan de naamomzetting aan een CDN overdragen.
  • Clusterselectie hangt naast geografische ligging af van netwerkprestaties en belasting.
  • CDN's en adaptieve streaming pakken verschillende onderdelen van videolevering aan.
6

Programmeren met UDP- en TCP-sockets

Een socketprogramma maakt het gedrag van transport zichtbaar: een datagram komt als één bericht aan, terwijl een TCP-ontvangst de bytes teruggeeft die klaarstaan. Bouw een kleine tekstdienst met elk transportprotocol en volg hoe de server weet waarheen die moet antwoorden. Voeg daarna berichtafbakening toe aan de TCP-versie en verstuur een echt HTTP-verzoek. Zo verbind je de socketaanroepen van Python met de protocoluitwisselingen en foutgevallen erachter.

6.1 Een UDP-dienst in Python

Python-sockets verzenden bytes. Codeer een string voordat je die verzendt en decodeer de ontvangen bytes daarna; de standaardtekencodering is UTF-8. AF_INET selecteert IPv4 en SOCK_DGRAM selecteert UDP. Begin met een lokale dienst zodat beide processen loopbackadres 127.0.0.1 kunnen gebruiken.

Start eerst de ontvanger

Deze server verwerkt korte tekstdatagrammen en antwoordt in hoofdletters:

from socket import socket, AF_INET, SOCK_DGRAM

with socket(AF_INET, SOCK_DGRAM) as server:
    server.bind(("127.0.0.1", 12000))
    while True:
        data, client_addr = server.recvfrom(2048)
        reply = data.decode().upper().encode()
        server.sendto(reply, client_addr)

bind geeft de socket het ontvangstadres en de ontvangstpoort. Binden aan 127.0.0.1 accepteert alleen lokaal verkeer. De lege adresstring "" bindt daarentegen aan alle IPv4-interfaces, waardoor de dienst vanaf andere hosts bereikbaar is als het netwerk dat toestaat. Stop de draaiende server voordat je een ander exemplaar op hetzelfde eindpunt start.

recvfrom blokkeert totdat een datagram aankomt. De aanroep geeft de gegevens en het adres van de zender terug, inclusief de poort van de zender. De server gebruikt dat teruggegeven paar als bestemming van sendto, zodat die kan antwoorden aan clients waarvan de tijdelijke poorten vooraf niet bekend waren.

Verstuur een verzoek en begrens de wachttijd
from socket import socket, AF_INET, SOCK_DGRAM

with socket(AF_INET, SOCK_DGRAM) as client:
    client.settimeout(2.0)
    client.sendto(b"hello network", ("127.0.0.1", 12000))
    try:
        data, server_addr = client.recvfrom(2048)
        print(data.decode())
    except TimeoutError:
        print("No reply within 2 seconds")

Het voorvoegsel b maakt een bytesliteral; "hello network".encode() levert dezelfde bytes op. Het besturingssysteem wijst zo nodig de lokale poort van de client toe. Het verwachte antwoord is HELLO NETWORK. Geen van beide programma's roept listen of accept aan, omdat UDP geen transportverbinding opzet.

Een ontbrekend antwoord vertelt de client niet precies wat er misging. Het verzoek of antwoord kan verloren zijn gegaan, of er luistert geen server. Dankzij de time-out krijgt de applicatie de controle terug. Sommige systemen kunnen een gesloten bestemmingspoort als fout melden; Windows kan tijdens de ontvangst ConnectionResetError geven.

Respecteer datagramgrenzen

Elke ontvangst verwerkt één datagram. Twee datagrammen worden niet tot één bericht samengevoegd. Als de ontvangstbuffer te klein is, wordt het overtollige deel van dat datagram op gebruikelijke Unix-systemen weggegooid; Windows kan in plaats daarvan een fout melden. Een volgende ontvangst haalt het ontbrekende laatste deel niet terug. Kies een buffer die groot genoeg is voor de verwachte berichten van de applicatie.

De limiet voor de nettolading van UDP over IPv4 is 65.507 bytes bij een IPv4-header van minimale grootte. Dat is een protocolmaximum, geen bruikbare streefwaarde voor de gebruikelijke datagramgrootte. Een programma dat verlies moet detecteren, kan berichten nummeren, verzendtijden met time.perf_counter() vastleggen en time-outs tellen. Twee time-outs op tien verzoeken geven een gemeten verliespercentage van 20%. Een verzoek opnieuw proberen kan dubbele verwerking veroorzaken, dus een ontwerp met time-outs en nieuwe pogingen heeft mogelijk ook een manier nodig om herhaalde berichtnummers te herkennen.

Belangrijkste punten

  • SOCK_DGRAM maakt een UDP-socket; coderen en decoderen verbinden bytes met tekst.
  • bind kiest het ontvangende eindpunt; loopback beperkt de toegang tot dezelfde host.
  • recvfrom levert het adres van de zender dat nodig is voor een antwoord.
  • Een time-out begrenst de wachttijd, maar geeft niet de oorzaak van ontbrekende gegevens aan.
  • Een te kleine ontvangstbuffer kan het laatste deel van een UDP-datagram verliezen.

6.2 Een TCP-dienst met volledige berichten

TCP geeft het programma een geordende bytestroom. Het bewaart de grenzen van sendall-aanroepen niet. Een volledige korte test kan in één recv aankomen, maar een correct programma moet ook een verzoek kunnen verwerken dat over meerdere ontvangsten is verdeeld.

Baken één tekstverzoek af

Kies een nieuweregelteken als scheidingsteken. De client verzendt één UTF-8-regel en de server geeft één regel in hoofdletters terug. Deze server leest totdat die het scheidingsteken vindt en decodeert daarna:

from socket import socket, AF_INET, SOCK_STREAM

with socket(AF_INET, SOCK_STREAM) as server:
    server.bind(("127.0.0.1", 12000))
    server.listen(5)
    while True:
        conn, client_addr = server.accept()
        with conn:
            data = b""
            while b"\n" not in data:
                chunk = conn.recv(1024)
                if not chunk:
                    break
                data += chunk
            if b"\n" in data:
                line = data.split(b"\n", 1)[0]
                conn.sendall(line.decode().upper().encode() + b"\n")

listen maakt een luistersocket. accept geeft een nieuwe verbindingssocket en het adres van de client terug. Gebruik conn voor de bytes van deze client; de oorspronkelijke socket blijft beschikbaar om meer verbindingen te accepteren. Hier worden clients één voor één bediend. De wachtrijlimiet van vijf betreft wachtende verbindingen, geen vijf actieve werkthreads.

Voltooi de clientkant
from socket import create_connection

with create_connection(("127.0.0.1", 12000), timeout=2) as client:
    client.sendall(b"hello network\n")
    data = b""
    while b"\n" not in data:
        chunk = client.recv(1024)
        if not chunk:
            raise EOFError("Reply ended before its newline")
        data += chunk
    print(data.split(b"\n", 1)[0].decode())

Het verwachte resultaat is HELLO NETWORK. sendall blijft verzenden totdat alle aangeboden bytes zijn overgedragen of een fout optreedt. Eén send kan slechts een deel verzenden en meldt hoeveel bytes zijn geaccepteerd. Geen van beide aanroepen geeft de ontvanger applicatieberichtgrenzen.

Deze dienst accepteert één regel per verbinding. Een persistente dienst met meerdere berichten zou bytes na het eerste nieuweregelteken bewaren voor het volgende bericht. Een lengte voorop plaatsen en de verzendrichting sluiten zijn andere keuzes voor berichtafbakening. Ontvangst van b"" betekent dat de peer de verzendkant heeft beëindigd; het is geen leeg deel waarvoor je moet blijven proberen.

Verbind de code met echte protocollen

Een HTTP/1.1-verzoek is ook een reeks bytes:

from socket import create_connection

request = ("GET / HTTP/1.1\r\n"
           "Host: example.com\r\n"
           "Connection: close\r\n\r\n")
with create_connection(("example.com", 80), timeout=5) as sock:
    sock.sendall(request.encode("ascii"))
    chunks = []
    while True:
        chunk = sock.recv(4096)
        if not chunk:
            break
        chunks.append(chunk)
print(b"".join(chunks).decode(errors="replace")[:200])

Dit toont het begin van het ruwe antwoord, inclusief de status en headers. Een server kan een fout of omleiding teruggeven; de code gaat niet uit van een specifieke antwoordinhoud. HTTPS op poort 443 vereist een TLS-omhulling met verificatie van certificaat en hostnaam, niet alleen een gewijzigd poortnummer. Zo omhult ssl.create_default_context().wrap_socket(sock, server_hostname="example.com") na import ssl een verbonden socket. Een geweigerde verbinding betekent vaak dat niemand luistert; stilzwijgend verworpen verkeer kan een time-out veroorzaken. Om een server op Unix snel te herstarten, kan SO_REUSEADDR vóór bind instellen hergebruik toestaan terwijl een oude verbinding wordt gesloten; het laat niet toe dat twee actieve luisterprocessen hetzelfde eindpunt bezitten. Servers die gelijktijdig werken gebruiken threads of gebeurtenislussen en onderscheiden verbindingen aan de hand van beide eindpuntparen van adres en poort.

Belangrijkste punten

  • accept geeft een verbindingssocket terug die losstaat van de luistersocket.
  • TCP-berichten hebben berichtafbakening en ontvangstlussen nodig.
  • sendall verwerkt gedeeltelijke verzending; recv kan nog steeds gedeeltelijke gegevens teruggeven.
  • Een lege TCP-ontvangst geeft het einde van de verzendrichting van de peer aan.
  • Een HTTP/1.1-verzoek vereist CRLF-regeleinden en de afsluitende lege regel.
  • HTTPS vereist naast poort 443 ook TLS.
  • Een wachtrijlimiet regelt wachtende verbindingen, niet de gelijktijdige verwerking door de applicatie.

Applicatielaag: voorbeelden

6 Walkthroughs

1

Kies een applicatieontwerp en transportprotocol

9 stappen
Volg een ontwerp voor bestandsdeling van hostrollen tot de transportdienst die de processen nodig hebben.
  1. 1
    IntroductieBegin met de programma's

    Een netwerkdienst is opgebouwd uit programma's aan de uiteinden van het netwerk. Stel je voor dat een onderzoeksdataset onder een groeiende groep wordt verspreid: iemand moet de gegevens vinden, verzenden en ontvangen. Volg die verantwoordelijkheden om client-serverontwerpen en P2P-ontwerpen te vergelijken en bepaal daarna wat de processen van hun transportdienst nodig hebben.

  2. 2
    UitlegPlaats de content op specifieke servers

    In een client-serverontwerp vragen clients gegevens op bij een dienst die altijd aanstaat op een bekend adres. De dienst kan veel machines achter één naam gebruiken, maar de aanbieder levert nog steeds die capaciteit. Als elke onderzoeker een volledige kopie van de dienst downloadt, betekenen meer onderzoekers meer uploadwerk voor de servers. Routers vervoeren de pakketten zonder de applicatie voor bestandsdeling uit te voeren.

  3. 3
    VoorbeeldLaat deelnemers uploadcapaciteit bijdragen

    In een P2P-ontwerp kan een onderzoeker die enkele delen heeft ontvangen die naar een andere onderzoeker sturen voordat het hele bestand binnen is. Een deelnemende peer voegt vraag toe, maar ook potentiële uploadcapaciteit. Daar komt zelfschaling vandaan. Een trage uploadverbinding, een peer zonder verbinding of een peer die niet wil delen, vermindert het voordeel. Daarom zijn het vinden van peers, beschikbaarheid en prikkels van belang.

  4. 4
    UitdagingDeel het pad van het bestand in

    Een wegwijzer vermeldt wie een dataset heeft. Onderzoekers wisselen de delen ervan daarna rechtstreeks uit. Is elke bestandsoverdracht client-server en wie is de client als een peer een deel opvraagt?

    ---reveal---

    Het totale ontwerp is hybride: peers worden via een server gevonden en dragen gegevens onderling over. De peer die het verzoek om een deel initieert, is de client voor die uitwisseling; de antwoordende peer vervult de serverrol.

  5. 5
    UitlegZoek een ontvangend eindpunt

    Een proces gebruikt een socket om toegang te krijgen tot de transportlaag. De bestemming heeft zowel een IP-adres van de host als een poort nodig: het IP-adres bereikt de host en de poort onderscheidt de ontvangende dienst. Voor een HTTPS-dienst op 203.0.113.10 is 443 de gebruikelijke poort. De client kan een door het besturingssysteem toegewezen tijdelijke bronpoort gebruiken, zodat de twee uiteinden niet hetzelfde poortnummer hoeven te gebruiken.

  6. 6
    VoorbeeldKies welke vertraging van belang is

    Een spel verzendt 30 keer per seconde een nieuwe positie, ongeveer elke 33 ms. Herstel van een oude update kan minder nuttig zijn dan reageren op de volgende, dus UDP kan geschikt zijn voor dit verkeer. Een gedownload configuratiebestand moet volledig zijn en heeft daarom betrouwbare aflevering nodig. Deze keuze betreft de betekenis en timing van de gegevens; UDP kiezen neemt op zichzelf geen congestie van het pad weg en reserveert geen bandbreedte.

  7. 7
    VerbandVoeg de ontbrekende diensten toe

    TCP levert betrouwbare, geordende bytes, stroomregeling en congestiebeheersing, maar geen versleuteling of uiterste aflevertijd. TLS kan het verkeer beveiligen. UDP levert datagrammen en bewaart hun grenzen, maar laat verlies en volgorde over aan hogere lagen. HTTP/3 krijgt betrouwbare streams en TLS 1.3 via QUIC over UDP. Bepaal de volledige stack voordat je de dienst beoordeelt op basis van het laagste zichtbare protocol.

  8. 8
    UitdagingOntwerp een beveiligde uitwisseling tussen peers

    Twee peers moeten een volledig vertrouwelijk document uitwisselen. Eén ervan initieert het contact en de overdracht gebruikt UDP zonder aanvullende protocollen. Wat zijn hun rollen in de uitwisseling en welke diensten heeft dit ontwerp nog nodig?

    ---reveal---

    De initiatiefnemer is de client en de beantwoorder is de server voor die uitwisseling. UDP zonder aanvullende protocollen biedt geen volledige aflevering in volgorde of vertrouwelijkheid. Het ontwerp heeft betrouwbaarheid en beveiliging boven UDP nodig, of een transportstack die daarin voorziet.

  9. 9
    SamenvattingVolg de rollen voordat je een transportprotocol kiest

    Volg bij het beoordelen van een ontwerp eerst wie de content verzendt en wie alleen helpt die te vinden. Bepaal daarna het ontvangende eindpunt en de diensten die de content nodig heeft: correcte aflevering, voldoende doorvoersnelheid, tijdige aankomst en bescherming. Die beslissingen verklaren zowel de applicatiearchitectuur als de geschiktheid van een transportstack. Een socket verbindt het proces met die gekozen dienst.

2

Lees en verbeter een HTTP-uitwisseling

15 stappen
Werk vanuit HTTP/1.1-berichten en tijdberekeningen via cachevalidatie naar QUIC-streams.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieVolg het laden van een pagina
  2. 2
    VoorbeeldLees de structuur van het verzoek
  3. 3
    UitlegScheid verbindingsopbouw van transmissie
  4. 4
    VoorbeeldRond de tijdberekening af
  5. 5
    UitdagingTel de afhankelijke fasen
  6. 6
    UitlegHerken een terugkerende browser
  7. 7
    VoorbeeldKies het pad voor een treffer of misser
  8. 8
    UitlegValideer zonder de objectinhoud opnieuw te verzenden
  9. 9
    UitdagingVoorspel het tweede verzoek
  10. 10
    UitlegVerzend antwoordframes door elkaar
  11. 11
    KernpuntLokaliseer blokkering onder HTTP
  12. 12
    VoorbeeldVergelijk nieuwe beveiligde verbindingen
  13. 13
    TipHoud betekenis en transport gescheiden
  14. 14
    UitdagingAnalyseer een HTTP/3-verzoek met een kopie in de cache
  15. 15
    SamenvattingBepaal welke kosten wegvallen
3

Volg en lees een DNS-naamopzoeking

11 stappen
Volg resolveraanvragen, gecachete verwijzingen en de DNS-records in een antwoord.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieVind een dienst voordat je contact maakt
  2. 2
    UitlegBegin bij de lokale resolver
  3. 3
    VoorbeeldVolg elke verwijzing
  4. 4
    VoorbeeldTel de wachttijden op
  5. 5
    UitdagingVoorspel een adreswijziging
  6. 6
    UitlegKies de juiste recordaanvraag
  7. 7
    VoorbeeldLees de antwoordgedeelten
  8. 8
    VerbandHoud beschermingsdoelen gescheiden
  9. 9
    UitdagingInterpreteer een verwijzing voor e-mail
  10. 10
    UitdagingCombineer caching met het juiste record
  11. 11
    SamenvattingControleer wat elke naam identificeert
4

Volg een e-mail van aanbieding tot lezen

11 stappen
Verbind SMTP-enveloppen, MIME-inhoud en mailboxtoegang in één afleveringsverhaal.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieScheid overdracht van lezen
  2. 2
    UitlegGeef het werk aan een uitgaande server
  3. 3
    VoorbeeldGeef SMTP een envelop
  4. 4
    KernpuntOnderscheid de getoonde adressen
  5. 5
    UitdagingLeg de verborgen ontvanger uit
  6. 6
    VerbandAuthenticeer het juiste domein
  7. 7
    UitlegGeef een bijlage weer
  8. 8
    VoorbeeldBewaar de mailboxstatus op de server
  9. 9
    UitdagingKies toegang voor twee apparaten
  10. 10
    UitdagingVolg een webmailbericht van begin tot eind
  11. 11
    SamenvattingKoppel elk verschijnsel aan de juiste fase
5

Redeneer over bestands- en videolevering

16 stappen
Werk distributiegrenzen, bufferberekeningen en CDN-routering van verzoeken uit.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieVind de beperkende capaciteit
  2. 2
    UitlegTel de kopieën die een server uploadt
  3. 3
    UitlegTel de bijdragen van peers mee
  4. 4
    VoorbeeldBereken de beschikbare capaciteit
  5. 5
    VoorbeeldVergelijk alle gelijktijdige beperkingen
  6. 6
    UitdagingNeem het juiste knelpunt weg
  7. 7
    VerbandKies delen en uploadpartners
  8. 8
    UitlegMeet afspeelbare seconden
  9. 9
    VoorbeeldBereken het aantal bits van een segment
  10. 10
    VoorbeeldReageer als de doorvoersnelheid daalt
  11. 11
    UitdagingControleer de buffer vóór aankomst
  12. 12
    UitlegPlaats kopieën langs kortere paden
  13. 13
    VoorbeeldDraag naamomzetting over aan een CDN
  14. 14
    UitdagingKies op basis van prestaties, niet alleen een kaart
  15. 15
    UitdagingCombineer een CDN-treffer met aanpassing
  16. 16
    SamenvattingStem verbeteringen af op hun beperkingen
6

Bouw en debug een socketuitwisseling

14 stappen
Volg UDP-datagrammen, baken TCP-berichten af en verbind de socket-API met HTTP.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieMaak transportgedrag zichtbaar
  2. 2
    VoorbeeldMaak en bind een UDP-socket
  3. 3
    VoorbeeldOntvang een datagram en stuur het terug
  4. 4
    TipBegrens het wachten op een antwoord
  5. 5
    UitdagingVoorspel een ontvangst met te weinig ruimte
  6. 6
    UitlegAccepteer een TCP-verbinding
  7. 7
    VoorbeeldBekijk een gesplitst bericht
  8. 8
    VoorbeeldVerzamel bytes tot en met het scheidingsteken
  9. 9
    UitdagingBewaar bytes die bij het volgende bericht horen
  10. 10
    TipVerzend elke byte van het antwoord
  11. 11
    VerbandSchrijf een HTTP-verzoek als bytes
  12. 12
    UitlegOnderscheid wachtende verbindingen van werkprocessen
  13. 13
    UitdagingAnalyseer twee wachtende programma's
  14. 14
    SamenvattingControleer eindpunten, bytes en voltooiing

Applicatielaag: oefenvragen

50 Oefenvragen in 5 sets

Set 1: Processen, HTTP en keuzes bij naamopzoekingen10 Oefenvragen

Vraag 1 van 10

Een peer die bestanden deelt, initieert een verzoek om een deel bij een andere peer. Welke rol heeft het verzoekende proces in deze uitwisseling?
  1. De serverrol.
  2. De trackerrol.
  3. De clientrol.
  4. De doorstuurrol.
Toon antwoordVerberg antwoord
Antwoord: C
Het proces dat contact initieert, is de client voor die uitwisseling, ook in een P2P-applicatie. Een peer kan later als server optreden wanneer een ander proces een van de delen opvraagt; de architectuur wijst niet aan elke peer één permanente communicatierol toe.

Vraag 2 van 10

Een dienst gebruikt één host om beschikbare deelnemers te vermelden, maar deelnemers sturen bestandsdelen rechtstreeks naar elkaar. Hoe is deze dienst georganiseerd?
  1. Een hybride ontwerp met centraal zoeken en gegevensoverdracht tussen peers.
  2. Een client-serverdienst met centrale levering van bestanden.
  3. Een zuivere P2P-dienst zonder specifieke coördinatiehost.
  4. Een cacheproxydienst die deelnemers via de oorsprongserver zoekt.
Toon antwoordVerberg antwoord
Antwoord: A
De wegwijzer centraliseert het vinden van peers, terwijl bestandsbytes tussen peers worden overgedragen. Die combinatie is een hybride ontwerp. De wegwijzer als bewijs voor centrale bestandslevering zien verwart de server die peers vindt met de hosts die de delen daadwerkelijk uploaden.

Vraag 3 van 10

Op een host draaien meerdere netwerkdiensten. Met welke bestemmingsinformatie kan een zender het bedoelde ontvangende eindpunt bereiken?
  1. Het IP-adres van de host en het bestandspad.
  2. De dienstpoort en het inhoudstype van het object.
  3. De hostnaam en de statuscode van het antwoord.
  4. Het IP-adres van de host en de dienstpoort.
Toon antwoordVerberg antwoord
Antwoord: D
Een IP-adres lokaliseert de host en een poort identificeert het ontvangende transporteindpunt op die host. Een pad helpt een applicatie zoals HTTP een resource te selecteren nadat de verbinding die heeft bereikt; het vervangt niet de poort die nodig is om de dienst te bereiken.

Vraag 4 van 10

Een sensorapp verzendt onafhankelijke updates die snel verouderen, maar configuratiedownloads moeten volledig aankomen. Welk transportontwerp past bij deze twee behoeften?
  1. TCP voor updates en UDP zonder extra bescherming voor configuratie.
  2. UDP voor updates en een betrouwbare dienst voor configuratie.
  3. UDP zonder extra bescherming voor beide, omdat het berichtgrenzen bewaart.
  4. TCP voor beide, omdat het voor elke update een uiterste aflevertijd garandeert.
Toon antwoordVerberg antwoord
Antwoord: B
Nieuwe updates kunnen verloren oude updates vervangen, terwijl voor configuratiegegevens elke byte nodig is. UDP kan geschikt zijn voor de updates, terwijl TCP of een andere betrouwbare dienst de configuratie vervoert. TCP levert betrouwbaar af, maar garandeert geen uiterste aflevertijden voor tijdgevoelige updates.

Vraag 5 van 10

Een HTTP-server geeft 404 Not Found terug voor /handbook.pdf. Wat heeft deze uitwisseling vastgesteld?
  1. De server heeft de transportverbinding nooit geaccepteerd.
  2. Het verzoek is geslaagd, maar de browser heeft het bestand geweigerd.
  3. De server heeft geantwoord, maar die resource is niet gevonden.
  4. De server heeft de resource omgeleid naar een nieuw adres.
Toon antwoordVerberg antwoord
Antwoord: C
Een 404 is een HTTP-antwoord dat meldt dat een opgevraagde resource ontbreekt. Er is dus een HTTP-server bereikt die heeft geantwoord. Een verbindingsfout zou voorkomen dat dit antwoord aankomt. Een permanente omleiding gebruikt daarentegen een status zoals 301 en vermeldt de nieuwe locatie.

Vraag 6 van 10

Een nieuwe TCP-verbinding met gewone HTTP heeft RTT 25 ms. Een object van 300 kB gaat over een pad van 40 Mbps. Wat is ongeveer de ophaaltijd, zonder DNS en verwerking?
  1. 60 ms.
  2. 85 ms.
  3. 160 ms.
  4. 110 ms.
Toon antwoordVerberg antwoord
Antwoord: D
Het object bevat 2,4 Mbit, dus de transmissie duurt 60 ms bij 40 Mbps. Tel één RTT van 25 ms op voor de TCP-verbindingsopbouw en één voor het verzoek en het begin van het antwoord. Dat geeft 110 ms. Het resultaat van 85 ms laat de opbouw van de nieuwe verbinding weg.

Vraag 7 van 10

Wat vereist Cache-Control: no-cache voordat een opgeslagen antwoord wordt hergebruikt?
  1. Valideer het bij de oorsprongserver.
  2. Weiger het helemaal op te slaan.
  3. Hergebruik het tot de browser sluit.
  4. Bewaar het alleen in een gedeelde proxy.
Toon antwoordVerberg antwoord
Antwoord: A
no-cache staat opslag toe, maar vereist succesvolle validatie vóór hergebruik. Je kunt de naam gemakkelijk als een opslagverbod lezen, maar no-store drukt die afzonderlijke regel uit. Een cache kan een no-cache-antwoord dus bewaren en bij het volgende verzoek met een ETag valideren.

Vraag 8 van 10

Een cache heeft een trefferpercentage van 30%. Treffers kosten 8 ms en missers 180 ms. Wat is de gemiddelde responstijd?
  1. 59,6 ms.
  2. 128,4 ms.
  3. 94 ms.
  4. 172 ms.
Toon antwoordVerberg antwoord
Antwoord: B
Weeg elke tijd met de fractie verzoeken die dat pad volgt: 30% van 8 ms plus 70% van 180 ms geeft 128,4 ms. Het resultaat van 59,6 ms draait de gewichten van treffers en missers om. Een gewoon gemiddelde van de twee tijden zou ten onrechte aannemen dat beide paden even vaak voorkomen.

Vraag 9 van 10

Een resolver heeft een geldige gecachete delegatie naar de autoritatieve servers van een domein, maar geen gecachet adres voor de opgevraagde host. Waarheen kan de resolver de volgende aanvraag sturen?
  1. Naar een rootserver om de naamopzoeking opnieuw te starten.
  2. Rechtstreeks naar de opgevraagde webserver.
  3. Naar een van die autoritatieve servers.
  4. Naar de browsercache voor de delegatie.
Toon antwoordVerberg antwoord
Antwoord: C
De gecachete delegatie identificeert al servers die verantwoordelijk zijn voor dat domein, zodat de resolver rechtstreeks een autoritatieve server kan bevragen. Opnieuw bij de root beginnen herhaalt werk dat de cache heeft bespaard. Een delegatie geeft aan waar je kunt vragen; die is zelf niet het antwoord met het hostadres.

Vraag 10 van 10

Een pagina heeft één zeer klein HTML-object en zes zeer kleine afbeeldingen. De RTT is 15 ms. Vergelijk sequentiële niet-persistente gewone HTTP met niet-persistent ophalen in groepen van drie parallelle afbeeldingsverbindingen na de HTML. Laat transmissie, DNS en verwerking buiten beschouwing. Hoeveel tijd bespaart deze groepsgewijze aanpak?
  1. 120 ms.
  2. 90 ms.
  3. 150 ms.
  4. 165 ms.
Toon antwoordVerberg antwoord
Antwoord: A
Zeven objecten na elkaar hebben elk twee RTT's nodig, in totaal 210 ms. Groepsgewijs ophalen kost 30 ms voor de HTML en twee groepen afbeeldingen van 30 ms, in totaal 90 ms. Dat bespaart 120 ms. Alle zes afbeeldingen in één groep tellen zou de toegestane paralleliteit overschatten en een besparing van 150 ms opleveren.
Set 2: DNS-records en de reis van een e-mail10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Wat levert een autoritatieve DNS-server voor een domein dat die bedient?
  1. Recursieve naamomzetting voor hosts.
  2. De gepubliceerde DNS-records van het domein.
  3. De webobjecten waarnaar de URL's van het domein verwijzen.
  4. Een bronpoort voor elke browserverbinding.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Een DNS-antwoord bevat assets.example.net CNAME edge.cdn.example.org. De resolver heeft geen adres voor het doel. Welke informatie moet de resolver verkrijgen voordat de client via IPv4 verbinding kan maken?
  1. Een MX-record voor assets.example.net.
  2. Een NS-record met als waarde het IP-adres van de CDN-server.
  3. Een PTR-record met als waarde het pad van het HTTP-object.
  4. Een A-record voor edge.cdn.example.org.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Een domein heeft MX-vermeldingen met voorkeuren 15 en 35. Welke server moet een zender normaal eerst proberen?
  1. De server met voorkeur 15.
  2. De server met voorkeur 35.
  3. De server in de CNAME van de webhost.
  4. De server met de langere DNS-TTL.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een resolver cacht een adres met TTL 900 s. Het autoritatieve adres verandert 240 s later. Hoelang mag de resolver het oude gecachete antwoord nog gebruiken?
  1. 240 s.
  2. 900 s.
  3. 660 s.
  4. 1.140 s.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Een UDP-DNS-antwoord komt aan met de TC-vlag gezet en bevat niet het volledige antwoord. Hoe moet een resolver bij de gebruikelijke terugval het volledige antwoord verkrijgen?
  1. Probeer de aanvraag opnieuw via TCP-poort 53.
  2. Probeer de aanvraag opnieuw via UDP-poort 80.
  3. Behandel de ontbrekende records als NXDOMAIN.
  4. Open een TCP-verbinding op poort 25.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Wat moet een verzendende mailserver normaal doen na een tijdelijke SMTP-weigering met 4xx?
  1. Markeer het bericht als afgeleverd en verwijder het uit de wachtrij.
  2. Bewaar het bericht in de wachtrij voor een latere poging.
  3. Behandel de mailbox als blijvend niet-bestaand.
  4. Schakel voor de aflevering van SMTP over op IMAP.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Een bericht wordt geaccepteerd voor RCPT TO:<archive@example.net>, maar het zichtbare veld To: noemt team@example.net. Welk adres bepaalt deze geaccepteerde aflevering?
  1. team@example.net in de zichtbare berichtheader.
  2. Het afzenderadres dat in MAIL FROM staat.
  3. De hostnaam die de opdracht EHLO opgeeft.
  4. archive@example.net in de SMTP-envelop.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Een telefoon moet mappen en leesvlaggen zien die op een laptop zijn gewijzigd. Welke toegangsmethode ondersteunt die mailboxstatus op de server rechtstreeks?
  1. POP3 met downloaden en verwijderen per apparaat.
  2. SMTP-overdracht tussen de apparaten.
  3. IMAP-toegang tot de gedeelde mailbox.
  4. POP3 met downloaden en bewaren op beide apparaten.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een bericht toont From: help@example.org, gebruikt een afzender in de envelop op mailer.example.net, slaagt voor SPF voor example.net en heeft geen geldige DKIM-handtekening. Waarom levert het geslaagde SPF-resultaat geen geslaagde DMARC-controle op voor het getoonde domein?
  1. De geslaagde SPF-controle moet het domein van de ontvanger gebruiken.
  2. Het geslaagde SPF-domein komt niet overeen met het From-domein.
  3. Het geslaagde SPF-resultaat vereist een MX-voorkeur lager dan 10.
  4. Het geslaagde SPF-resultaat is alleen geldig als SMTP poort 465 gebruikt.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een server staat berichten van maximaal 8 MB toe. Een afzender voegt twee binaire bestanden van 3 MB toe die in Base64 worden gecodeerd. Wat volgt daaruit voor de vraag of het volledige bericht past?
  1. Het overschrijdt de limiet zodra de extra berichtgegevens worden meegeteld.
  2. Het past met 2 MB beschikbaar voor headers en tekst.
  3. Het past precies omdat alle extra berichtgegevens al zijn meegeteld.
  4. Het overschrijdt de limiet alleen als de twee bestanden verschillende typen hebben.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 3: Contentlevering en socketgedrag10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Een BitTorrent-peer heeft meerdere delen nodig. Welk deel krijgt voorrang bij de selectie zeldzaamste eerst?
  1. Het benodigde deel dat de minste buren hebben.
  2. Het benodigde deel van de snelste buur.
  3. Het benodigde deel dat het eerst in het bestand staat.
  4. Het benodigde deel dat andere peers het meest opvragen.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Welke informatie geeft een DASH-manifestbestand de speler om segmenten te kiezen en op te vragen?
  1. De huidige doorvoersnelheid van het pad, buffervulling en volgende gekozen snelheid.
  2. De beschikbare gecodeerde versies, bitsnelheden en segment-URL's.
  3. Eén vaste codering en één download-URL voor de volledige video.
  4. De beschikbare serverlocaties zonder informatie over gecodeerde versies.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Een server uploadt met 60 Mbps naar 12 clients, die elk met 15 Mbps downloaden. Wat is de ondergrens voor de client-serverdistributietijd van een bestand van 900 Mbit?
  1. 15 s.
  2. 60 s.
  3. 240 s.
  4. 180 s.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een videosegment van 5 s is gecodeerd met 3 Mbps en wordt tijdens ononderbroken afspelen gedownload met 6 Mbps. Hoe verandert de buffer nadat het volledige segment zonder onderbreking is aangekomen?
  1. Die krimpt met 2,5 s.
  2. Die groeit met 2,5 s.
  3. Die groeit met 5 s.
  4. Die blijft onveranderd.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Een CDN-server heeft geen kopie van een opgevraagde afbeelding, haalt die op bij de oorsprongserver en bewaart die daarna voor latere verzoeken. Welk plaatsingsgedrag is dit?
  1. Vullen op aanvraag bij een cachemisser.
  2. Vooraf vullen vóór verzoeken.
  3. Doorsturen vanaf de oorsprongserver zonder lokale kopie.
  4. Levering door peers vanaf andere kijkers.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Een UDP-server ontvangt gegevens van (192.0.2.44, 53018). Waarheen moet die het antwoord op dat verzoek sturen?
  1. Naar 192.0.2.44 op de serverpoort.
  2. Naar het eigen IP-adres op poort 53018.
  3. Naar 192.0.2.44 op poort 53018.
  4. Naar 192.0.2.44 op een ongebruikte poort.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Een TCP-server ontvangt b"part" bij de eerste recv(1024) van een verzoek dat eindigt met een nieuweregelteken. Wat moet de server doen voordat die het verzoek als volledig behandelt?
  1. De vier bytes nu als het volledige verzoek behandelen.
  2. Blijven ontvangen tot het nieuweregelteken of het einde van de stroom.
  3. Opnieuw accept aanroepen om de rest van het verzoek te krijgen.
  4. De luisterwachtrijlimiet verhogen om de overige bytes te krijgen.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Voor een bestand van 1.200 Mbit uploaden 30 peers elk met 2 Mbps en downloadt de langzaamste met 12 Mbps. De server uploadt met 60 Mbps. Met hoeveel verlaagt P2P de ondergrens vergeleken met client-server, als alleen toegangsverbindingen knelpunten zijn?
  1. 100 s.
  2. 500 s.
  3. 580 s.
  4. 300 s.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een speler heeft 3 s gebufferd en vraagt volledige segmenten van 4 s op met 2 of 4 Mbps. De doorvoersnelheid blijft 3 Mbps; alleen volledige segmenten kunnen worden afgespeeld. Welke keuze voorkomt een onderbreking bij de volgende download en vergroot de buffer?
  1. De versie van 4 Mbps.
  2. Beide versies, omdat beide segmenten 4 s duren.
  3. De versie van 2 Mbps.
  4. Geen van beide versies, omdat de buffer korter is dan een segment.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

De openbare DNS-resolver van een kijker staat ver weg. CDN-cluster A ligt het dichtst bij die resolver maar heeft een overbelast pad naar de kijker; cluster B heeft een gemeten sneller pad naar de kijker. Welke wijziging in de selectie pakt dit probleem aan?
  1. Kies alleen op basis van fysieke afstand tot de openbare resolver.
  2. Verhoog de DNS-TTL zodat de resolver cluster A langer bewaart.
  3. Gebruik een hogere gecodeerde snelheid wanneer de resolver ver weg staat.
  4. Gebruik gegevens over de prestaties naar het clientnetwerk bij de clusterselectie.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 4: Volg fouten en verbeter je redenering over protocollen10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Wat geeft accept() van Python terug aan een luisterende TCP-server?
  1. Het volledige volgende verzoek en de lengte ervan in bytes.
  2. De oorspronkelijke luistersocket en een nieuw serverpoortnummer.
  3. Een UDP-datagram en het berichtnummer van de zender.
  4. Een nieuwe verbindingssocket en het clientadres.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Een verzoek bevat If-None-Match: "r9" en de oorsprongserver geeft 304 Not Modified terug. Hoe moet een cache aan het verzoek voldoen?
  1. Vervang de opgeslagen representatie door de lege antwoordinhoud.
  2. Hergebruik de opgeslagen representatie die door dat antwoord is gevalideerd.
  3. Herhaal een onvoorwaardelijke GET omdat elke 304 een fout is.
  4. Verwijder de opgeslagen representatie omdat de ETag ongeldig is.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Meerdere HTTP/2-streams delen één verbinding. Een verloren TCP-segment verhindert dat latere bytes worden afgeleverd. Waarom kan een antwoord waarvan de eigen bytes zijn aangekomen toch wachten?
  1. TCP levert de bytes van de verbinding in één gezamenlijke volgorde af.
  2. HTTP/2 vereist dat elke antwoordinhoud in verzoekvolgorde klaar is.
  3. Elke HTTP/2-stream opent na elk verlies een nieuwe TCP-verbinding.
  4. HPACK vereist dat elk verloren inhoudsframe opnieuw wordt gecomprimeerd.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Op een Unix-host gebruikt een UDP-ontvanger een buffer van 500 bytes voor een aankomend datagram van 700 bytes. Wat gebeurt er met het ongelezen laatste deel?
  1. Het laatste deel van 200 bytes wordt hierna gelezen.
  2. Het datagram blijft volledig in de wachtrij staan.
  3. Het laatste deel van 200 bytes wordt weggegooid.
  4. De zender verzendt de 200 bytes opnieuw.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Een gebruiker stuurt via webmail een bericht naar een andere provider. Welke protocolcombinatie beschrijft de browserverbinding en de gebruikelijke overdracht tussen servers?
  1. SMTP bij de browser; HTTPS tussen mailservers.
  2. IMAP bij de browser; POP3 tussen mailservers.
  3. HTTPS bij de browser; IMAP tussen mailservers.
  4. HTTPS bij de browser; SMTP tussen mailservers.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Een torrent heeft veel peers die downloaden maar vrijwel geen uploadcapaciteit bijdragen. Waarom levert het toevoegen van deze peers waarschijnlijk niet het gebruikelijke voordeel van zelfschaling op?
  1. Hun downloadverbindingen nemen de noodzaak van serverupload weg.
  2. Hun aanwezigheid verandert elk bestaand deel in een volledig bestand.
  3. Ze voegen vraag toe zonder veel bruikbare distributiecapaciteit.
  4. Hun trackeraanvragen tellen als gelijkwaardige uploadcapaciteit voor bestanden.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Een DNS-naamopzoeking met lege cache heeft een RTT van 4 ms tussen host en resolver, 12 ms naar de rootserver, 18 ms naar de TLD-server en 26 ms naar de autoritatieve server. Een latere naamopzoeking gebruikt gecachete verwijzingen van de rootserver en TLD-server, maar heeft geen definitief antwoord in de cache. Hoeveel sneller is de latere naamopzoeking, zonder verwerking mee te rekenen?
  1. 30 ms sneller.
  2. 26 ms sneller.
  3. 34 ms sneller.
  4. 56 ms sneller.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Een persistent protocol met nieuweregeltekens ontvangt b"red\nblu" en daarna b"e\n". Welke afhandeling van verzoeken bewaart beide berichten correct?
  1. Verwerk red, gooi blu weg en verwerk daarna e als tweede verzoek.
  2. Verwerk red, bewaar blu, voeg daarna e toe en verwerk blue.
  3. Wacht op sluiting en verwerk red plus blue als één verzoek.
  4. Verwerk red en blu direct en verwerk daarna e afzonderlijk.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een zeer kleine pagina heeft één HTML-object en vier afbeeldingen. De RTT is 20 ms. Vergelijk één persistente HTTPS-verbinding met sequentiële verzoeken met sequentiële nieuwe HTTPS-verbindingen voor alle objecten. Elke nieuwe verbinding gebruikt één RTT voor TCP-opbouw en één voor TLS 1.3-opbouw. Laat andere kosten buiten beschouwing. Hoeveel tijd bespaart hergebruik?
  1. 160 ms.
  2. 80 ms.
  3. 120 ms.
  4. 200 ms.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een speler begint met 7 s in de buffer. De speler downloadt drie volledige segmenten van 3 s die met 4 Mbps zijn gecodeerd over een stabiel pad van 3 Mbps, met ononderbroken afspelen en zonder overlap tussen downloads. Hoeveel buffer blijft over en ontstaat tijdens deze downloads een onderbreking?
  1. Er blijft 4 s over, met een onderbreking bij de laatste download.
  2. Er blijft 4 s over, zonder onderbreking.
  3. Er blijft 7 s over, zonder onderbreking.
  4. Er blijft 10 s over, zonder onderbreking.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 5: Knelpunten, afhankelijkheden en ontwerpkeuzes10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Welk transportprotocol biedt de betrouwbare streams die HTTP/3 gebruikt?
  1. TLS over UDP zonder aanvullende protocollen.
  2. QUIC over UDP.
  3. TCP over QUIC.
  4. HTTP/2 over TCP.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Een app schakelt voor bestandsoverdracht over van TCP op UDP zonder aanvullende protocollen, maar vereist nog steeds elke byte in volgorde. Welke functionaliteit moet het ontwerp nu boven UDP bieden?
  1. Alleen een bestemmingspoort, omdat UDP de volgorde garandeert.
  2. Alleen berichtlengtes, omdat UDP aankomsten al ordent.
  3. Herstel van verlies en ordening van de overgedragen gegevens.
  4. Alleen versleuteling, omdat UDP ontbrekende gegevens al herstelt.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Een kijker speelt een video van 6 Mbps af vanuit een CDN-cache. De toegangsverbinding van de kijker kan 4 Mbps vervoeren, terwijl het cluster capaciteit over heeft. Waarom kan het verplaatsen van de gecachete kopie naar een nog dichterbij gelegen CDN-locatie de onderbrekingen mogelijk niet wegnemen?
  1. De toegangsverbinding van de kijker kan het beperkende knelpunt blijven.
  2. De oorsprongserver moet elk segment goedkeuren voordat een cache het levert.
  3. De gekozen videocodering bepaalt de capaciteit van de toegangsverbinding.
  4. Een cachetreffer bespaart werk voor de oorsprongserver maar verhoogt altijd de videobitsnelheid.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een UDP-client krijgt een time-out na het verzenden van een verzoek. Waarom kan de client niet concluderen dat het serverprogramma is gestopt?
  1. Een time-out bevestigt dat de server de syntaxis heeft geweigerd.
  2. Time-outs ontstaan alleen als geen proces de poort heeft gebonden.
  3. Een time-out bevestigt dat de server het adres heeft gewijzigd.
  4. Het verzoek of het antwoord kan verloren zijn gegaan.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Een toegangsverbinding is 50 Mbps. Er komen 50 verzoeken per seconde aan, elk voor een object van 1 Mbit. Cachetreffers kosten 4 ms en missers 100 ms. Welk minimaal trefferpercentage maakt de gemiddelde responstijd hoogstens 40 ms en welke verbindingsintensiteit blijft dan over? Neem aan dat de vertragingen op beide paden gelijk blijven.
  1. 60% treffers en intensiteit 0,4.
  2. 37,5% treffers en intensiteit 0,625.
  3. 62,5% treffers en intensiteit 0,625.
  4. 62,5% treffers en intensiteit 0,375.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Een bestand van 600 Mbit gaat naar 20 peers die elk met 5 Mbps uploaden. De serverupload is 100 Mbps. De langzaamste peer downloadt met 2 Mbps; alle andere downloads zijn sneller. Zou een verdubbeling van de serverupload de P2P-ondergrens verlagen als alleen toegangsverbindingen knelpunten zijn?
  1. Nee; de term van 300 s voor de langzaamste download blijft doorslaggevend.
  2. Ja; de grens daalt van 120 s naar 60 s.
  3. Ja; de grens daalt van 300 s naar 150 s.
  4. Nee; de term van 120 s voor de serverkopie blijft doorslaggevend.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Een resolver ontvangt example.org NS ns.example.org en een aanvullend A-record dat die naamserver lokaliseert, maar geen A-record voor lab.example.org. Wat moet de resolver doen om de labhost te vinden, en waarom?
  1. Maak verbinding met het toegevoegde adres als labhost; aanvullende A-records beantwoorden alle subdomeinen.
  2. Vraag de genoemde server om het NS-record van lab; de waarde levert het opgevraagde hostadres.
  3. Vraag de genoemde server om het A-record van lab; het toegevoegde adres lokaliseert de DNS-server.
  4. Geef NXDOMAIN terug voor de labhost; een verwijzing zonder A-record bewijst afwezigheid.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Een bericht wordt aan een server aangeboden, waarna de afzender de laptop sluit. Het ontvangende domein heeft MX-voorkeuren 12 en 28. Server 12 geeft een tijdelijke fout terug; server 28 is niet bereikbaar. De ontvanger gebruikt IMAP. Wat moet er nu gebeuren en waar moet de ontvanger het bericht op dit moment verwachten?
  1. Verwijder het als blijvende fout; IMAP kan het van de laptop van de afzender ophalen.
  2. Bewaar het in de wachtrij van de verzendende server; het staat nog niet in de mailbox van de ontvanger.
  3. Markeer het als afgeleverd via server 12; een tijdelijk antwoord plaatst het in IMAP-opslag.
  4. Verplaats het naar de IMAP-mailbox van de afzender; die mailbox handelt nu nieuwe afleverpogingen af.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een telefoon schakelt van wifi over op een mobiel netwerk en verandert daarbij van IP-adres tijdens het downloaden van twee HTTP/3-objecten. Een pakket met alleen bytes voor stream X gaat verloren; alle gegevens van Y komen aan zonder dat de applicatie Y afhankelijk maakt van X. Wat kan er met de verbinding en de twee streams gebeuren?
  1. De verbinding kan blijven bestaan; X wacht op herstel terwijl de ontvangen gegevens van Y kunnen worden afgeleverd.
  2. De verbinding kan blijven bestaan; beide streams moeten wachten tot de ontbrekende bytes van X zijn hersteld.
  3. De verbinding moet opnieuw worden gestart; beide objecten moeten ondanks de ontvangen gegevens van Y opnieuw worden opgevraagd.
  4. De verbinding kan blijven bestaan; Y gaat alleen verder als X betrouwbare aflevering in volgorde opgeeft.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een TCP-client verzendt één verzoek dat eindigt met een nieuweregelteken met sendall en wacht daarna op een antwoord terwijl de verbinding openblijft. De server wacht op EOF voordat die antwoordt. Waarom kunnen beide programma's onbeperkt wachten en welke passende wijziging lost dit op?
  1. De client gebruikte sendall; vervanging door één send garandeert voltooiing.
  2. De serverwachtrij is vol; die verhogen laat dit verzoek EOF bereiken.
  3. De server wacht op sluiting; die moet het nieuweregelteken van het verzoek herkennen.
  4. TCP verloor de berichtgrens; een grotere recv garandeert de grens van de aanroep van de zender.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Kom je niet uit je eigen opgave? Huiswerkhulp

Kernbegrippen

88 Kernbegrippen, elk met een definitie

A

A-record
Een A-record koppelt een DNS-hostnaam aan een IPv4-adres, zodat een client die host op een IPv4-netwerk kan vinden.
Een A-record voor www.example.org kan in een uitgewerkte naamopzoeking het documentatieadres 203.0.113.25 teruggeven.
AAAA-record
Een AAAA-record koppelt een DNS-hostnaam aan een IPv6-adres en biedt zo een IPv6-alternatief voor IPv4-adresrecords.
Een AAAA-record kan bij een illustratieve IPv6-naamopzoeking 2001:db8::25 voor een host teruggeven.
Afspeelbuffer
Een afspeelbuffer bevat ontvangen content die op weergave wacht en biedt een reserve aan afspeelbare tijd tijdens tragere downloads.
Een afspeelbuffer met nog enkele seconden kan een korte daling van de doorvoersnelheid opvangen zonder onmiddellijke onderbreking.
Applicatielaagprotocol
Een applicatielaagprotocol definieert berichttypen, veldsyntaxis, betekenis en de regels voor uitwisselingen tussen processen.
HTTP is een applicatielaagprotocol waarmee afzonderlijk geschreven browsers en servers objecten kunnen uitwisselen.
Autoritatieve server
Een autoritatieve server publiceert DNS-records voor de namen binnen de zones die die bedient en levert antwoorden vanuit die autoriteit.
De autoritatieve server voor een domein geeft het gepubliceerde adresrecord voor de webhost terug.

B

Base64
Base64 codeert groepen van drie bytes als vier ASCII-tekens en vergroot de gegevens daarmee met ongeveer een derde vóór extra berichtgegevens.
Een bijlage van 3 MB wordt 4 miljoen Base64-tekens voordat de regelafbrekingen en headers worden toegevoegd.
Berichtafbakening
Berichtafbakening bepaalt hoe een ontvanger volledige applicatieberichten in een bytestroom herkent, met behulp van lengtes of scheidingstekens.
Berichtafbakening op basis van nieuweregeltekens laat de ontvanger meerdere TCP-leesacties verzamelen totdat één volledige regel aankomt.
Binden
Binden is de socketbewerking die een lokaal adres en een poort aan een eindpunt toewijst en zo bepaalt waar het verkeer ontvangt.
Een UDP-server die bind aanroept met 127.0.0.1 en poort 12000 ontvangt lokale verzoeken op dat adres en die poort.
Bitsnelheid
Een bitsnelheid is een hoeveelheid gegevens per tijdseenheid; voor gecodeerde video meet die hoeveel bits voor elke seconde afspelen nodig zijn.
Een videobitsnelheid van 5 Mbps levert 20 Mbit gecodeerde gegevens op voor een segment van vier seconden met constante snelheid.
Blokkering door het eerste element
Blokkering door het eerste element is wachttijd die ontstaat wanneer eerder werk of ontbrekende gegevens de voortgang van latere beschikbare gegevens verhinderen.
Een verloren TCP-segment veroorzaakt blokkering door het eerste element voor latere bytes van meerdere HTTP/2-streams.

C

Cache-Control
Cache-Control is een HTTP-veld met cacherichtlijnen die de opslag, geldigheid en validatie van een antwoord regelen.
Cache-Control met no-store verhindert opslag; no-cache vereist daarentegen controle vóór hergebruik.
Cacheproxy
Een cacheproxy is een tussenstation dat verzoeken doorstuurt naar oorsprongservers en daarvoor in aanmerking komende verzoeken kan beantwoorden met opgeslagen antwoorden.
De cacheproxy levert een lokale treffer, maar treedt op als client wanneer die een ontbrekend object bij de oorsprongserver ophaalt.
Cachetreffer
Een cachetreffer ontstaat wanneer een opgevraagd antwoord in een cache aanwezig en bruikbaar is, zodat het gewone pad om het bij de oorsprongserver op te halen wordt vermeden.
De instelling krijgt een cachetreffer voor een populaire afbeelding die al in de cacheproxy is opgeslagen.
Cachevergiftiging
Cachevergiftiging is het invoegen van valse gegevens in de cache van een resolver, waardoor latere aanvragen de vervalste informatie van de aanvaller hergebruiken.
Een vervalst adres dat bij cachevergiftiging is geaccepteerd, kan latere bezoekers naar de host van een aanvaller leiden.
Client-serverarchitectuur
Een client-serverarchitectuur wijst verzoeken toe aan clients en het werk om diensten te leveren aan specifieke, bereikbare serverhosts.
In een client-serverarchitectuur downloadt een onderzoeker een dataset van de server van de uitgever.
CNAME-record
Een CNAME-record maakt van een eigenaarnaam een alias voor een canonieke doelnaam, zodat de naamomzetting via dat doel kan doorgaan.
Een CNAME-record verwijst media.example.org naar een CDN-naamruimte voordat de resolver een adres verkrijgt.
Contentdistributienetwerk (CDN)
Een contentdistributienetwerk (CDN) verspreidt leveringscapaciteit en contentkopieën over locaties om objecten efficiënt te leveren en de belasting van de oorsprongserver te verminderen.
Een CDN-cluster dicht bij de kijker levert populaire videosegmenten zonder elk verzoek naar de oorsprongserver te sturen.
Cookie
Een cookie is een waarde die een browser opslaat en bij overeenkomende verzoeken terugstuurt, zodat een site status over verzoeken heen kan herkennen.
De webwinkel zoekt een opgeslagen winkelwagentje op wanneer de browser de sessiecookie terugstuurt.

D

DASH
DASH is adaptieve streaming over HTTP waarbij een client opeenvolgende videosegmenten kiest uit versies met verschillende gecodeerde snelheden.
DASH laat een speler overschakelen naar een versie met lagere snelheid nadat de doorvoersnelheid daalt en de buffer begint te krimpen.
Datagram
Een datagram is een afzonderlijk geadresseerd bericht dat door een verbindingsloos transportprotocol wordt vervoerd en waarvan de grens bij ontvangst behouden blijft.
Twee afzonderlijk verzonden UDP-datagrammen blijven afzonderlijke berichten, ook als ze kort na elkaar aankomen.
Distributietijd
De distributietijd is de verstreken tijd die nodig is om één volledige kopie van een bestand aan elke beoogde ontvanger te leveren.
Een snelle eerste download bepaalt de distributietijd niet als de langzaamste peer nog bezig is een kopie te ontvangen.
DKIM
DKIM authenticeert ondertekende berichtgegevens met een digitale handtekening van een domein en een verificatiesleutel die via DNS is gepubliceerd.
Een ontvanger controleert een DKIM-handtekening met de publieke sleutel van het ondertekenende domein van het bericht.
DMARC
DMARC koppelt een geslaagd SPF- of DKIM-resultaat via domeinovereenstemming aan het zichtbare From-domein en publiceert beleid voor mislukte controles.
Een DMARC-controle kan niet steunen op een geslaagde SPF-controle voor een niet-gerelateerd domein wanneer geen DKIM-resultaat met een overeenkomend domein slaagt.
DNS
DNS is een gedistribueerde naamdatabase en een applicatieprotocol voor het opvragen van records zoals hostadressen en e-mailbestemmingen.
Voordat de browser contact opneemt met een webhost, vraagt die DNS om adresinformatie die bij de naam hoort.
DNS-record
Een DNS-record is een DNS-vermelding met een type die een eigenaarnaam koppelt aan gegevens en een cachelevensduur voor die informatie.
Eén DNS-record koppelt de webhost aan IPv4, terwijl een ander de mailserver van het domein noemt.
DNSSEC
DNSSEC voegt digitale handtekeningen toe aan DNS-gegevens zodat validerende resolvers de authenticiteit en integriteit van ondertekende records kunnen controleren.
DNSSEC helpt een resolver vervalste ondertekende gegevens te detecteren, terwijl versleutelde DNS de privacy van aanvragen beschermt.

E

E-mailwachtrij
Een e-mailwachtrij bewaart berichten die op overdracht wachten, zodat een server na tijdelijke bestemmings- of netwerkfouten opnieuw kan proberen af te leveren.
De uitgaande e-mailwachtrij bewaart een bericht terwijl de bestemmingsserver tijdelijk niet beschikbaar is.
Eindsysteem
Een eindsysteem is een host aan de netwerkrand die applicatieprocessen uitvoert, zoals een telefoon, laptop of server.
Een browser en webserver draaien op eindsystemen, terwijl routers de pakketten daartussen doorsturen.
Elastische applicatie
Een elastische applicatie kan de op dat moment beschikbare doorvoersnelheid gebruiken zonder één vaste minimale snelheid nodig te hebben voor de basiswerking.
Het downloaden van een e-mailbijlage is een elastische applicatie, ook al heeft de gebruiker liever dat dit snel klaar is.
ETag
Een ETag is een identificatie die aan een representatie van een resource wordt toegewezen en wordt gebruikt in voorwaarden die een opgeslagen versie met de huidige vergelijken.
De cache stuurt de opgeslagen ETag in If-None-Match voordat die beslist of de opgeslagen inhoud moet worden vervangen.

F

Frame
Een frame is een gestructureerde eenheid die binnen HTTP/2 of HTTP/3 een deel van een bericht of besturingsinformatie vervoert.
De zender plant een dataframe van een kort antwoord tussen frames die bij een groot antwoord horen.

G

Gedeeltelijke verzending
Een gedeeltelijke verzending ontstaat wanneer één send-aanroep minder bytes accepteert dan aangeboden, zodat de resterende bytes later moeten worden verzonden.
Met sendall voorkom je dat een gedeeltelijke verzending onvoltooid blijft wanneer het programma een antwoordbuffer verzendt.

H

HTTP-methode
Een HTTP-methode geeft de gevraagde bewerking voor een resource aan, zoals ophalen met GET of headers ophalen met HEAD.
De browser gebruikt de HTTP-methode GET wanneer die een gekoppeld document van de site ophaalt.
HTTP-object
Een HTTP-object is een afzonderlijk adresseerbare representatie van een resource, zoals een HTML-document, afbeelding of script, die via HTTP wordt opgehaald.
De basis-HTML noemt meerdere afbeeldingen, dus vraagt de browser meer dan één HTTP-object voor de pagina op.
HTTP/2
HTTP/2 vervoert HTTP-berichten als door elkaar verzonden binaire frames van meerdere streams over één TCP-verbinding en comprimeert headers.
HTTP/2 kan een kleine afbeelding voltooien terwijl frames van een veel groter antwoord nog worden verzonden.
HTTP/3
HTTP/3 koppelt de gedeelde betekenis van HTTP-berichten aan QUIC-streams en binaire frames en gebruikt de geïntegreerde transportbeveiliging van QUIC.
HTTP/3 levert dezelfde resource-URL terwijl het transport verschilt van dat van TCP-gebaseerde HTTP-versies.
HttpOnly
HttpOnly is een cookieattribuut dat voorkomt dat paginascripts de cookie lezen, terwijl verzending met daarvoor in aanmerking komende HTTP-verzoeken mogelijk blijft.
Een inlogcookie met HttpOnly kan nog steeds met een overeenkomend verzoek meegaan, ook al kan een script die niet lezen.
Hybride architectuur
Een hybride architectuur combineert specifieke serverfuncties met rechtstreekse communicatie tussen peers binnen dezelfde applicatie.
Een dienst voor bestandsdeling met een tracker heeft een hybride architectuur wanneer peers het bestand zelf overdragen.

I

IMAP
IMAP is een protocol voor e-mailtoegang dat berichten, mappen en vlaggen op de server bewaart en clients geselecteerde inhoud laat ophalen.
IMAP laat een telefoon de leesvlag en mapwijziging zien die eerder vanaf een laptop zijn aangebracht.
IP-anycast
IP-anycast kondigt hetzelfde IP-adres vanaf meerdere locaties aan, zodat netwerkroutering een pad naar een van die locaties kan kiezen.
IP-anycast kan een client naar een CDN-locatie routeren zonder die locatie een uniek adres voor clients toe te wijzen.

L

Levensduur (TTL)
De levensduur (TTL) is de waarde in een DNS-record die begrenst hoeveel seconden een gecachete kopie herbruikbaar blijft.
Door een adreswijziging kan een oud gecachet antwoord bruikbaar blijven totdat de resterende TTL nul bereikt.
Loopbackadres
Een loopbackadres routeert verkeer binnen dezelfde host, zodat lokale processen kunnen communiceren zonder contact met een andere machine.
Een server die aan loopbackadres 127.0.0.1 is gebonden, kan worden getest door een client op dezelfde computer.
Luistersocket
Een luistersocket wacht op inkomende TCP-verbindingsverzoeken en accepteert die in afzonderlijke sockets voor gegevensuitwisseling.
De luistersocket blijft open terwijl de geaccepteerde verbindingssocket het verzoek van één client vervoert.

M

Manifestbestand
Een manifestbestand beschrijft de beschikbare versies en segmentlocaties die een adaptieve speler gebruikt om videocontent op te vragen.
De speler leest het manifestbestand voordat die de volgende segment-URL en de gecodeerde versie kiest.
MIME
MIME breidt het e-mailformaat uit met inhoudstypen, een meerdelige structuur en overdrachtscoderingen die rijkere tekst en bijlagen ondersteunen.
MIME laat één bericht een gewone tekstnotitie en een afzonderlijke afbeeldingsbijlage met een eigen type bevatten.
MX-record
Een MX-record identificeert een e-mailbestemming van een domein met een servernaam en voorkeur, waarbij lagere voorkeurswaarden eerst worden geprobeerd.
Het MX-record met voorkeur 10 wordt normaal geprobeerd vóór de vermelding van hetzelfde domein met voorkeur 20.

N

NS-record
Een NS-record noemt een autoritatieve DNS-server voor een domein of zone; de waarde is een hostnaam, niet het IP-adres van die server.
Het NS-record verwijst naar ns1.example.org en aanvullende adresgegevens laten de resolver contact opnemen met die server.

O

Ondergrens
Een ondergrens is een grens waaronder voltooiing binnen de beperkingen van een model niet kan plaatsvinden, zelfs niet bij ideale planning.
De download van de langzaamste peer legt een ondergrens op die extra uploadcapaciteit elders niet kan wegnemen.
Oorsprongserver
Een oorsprongserver is de bronserver die verantwoordelijk is voor een representatie en waarvan tussenstations contentkopieën kunnen verkrijgen.
Een CDN met plaatsing op aanvraag haalt een niet-gecachete afbeelding op bij de oorsprongserver voordat het een lokale kopie bewaart.
Opnieuw bufferen
Opnieuw bufferen is een onderbreking van het afspelen doordat afspeelbare gegevens opraken en de speler op meer content moet wachten.
De speler verlaagt de opgevraagde snelheid na opnieuw bufferen om de kans op nog een zichtbare pauze te verkleinen.
Optimistisch vrijgeven van uploadcapaciteit
Optimistisch vrijgeven van uploadcapaciteit geeft een geïnteresseerde peer uploadcapaciteit zonder een grote huidige bijdrage te vereisen, zodat mogelijke partners kunnen worden verkend.
Optimistisch vrijgeven van uploadcapaciteit laat een nieuwkomer eerste delen verkrijgen voordat die een nuttige uitwisselingspartner wordt.

P

Peer-to-peerarchitectuur
Een peer-to-peerarchitectuur laat deelnemende hosts rechtstreeks gegevens uitwisselen en zowel verzoeken als leveringscapaciteit bijdragen.
Een peer-to-peerarchitectuur laat een nieuwe downloader delen van meerdere andere deelnemers ontvangen.
Persistente verbinding
Een persistente verbinding blijft na een antwoord beschikbaar voor latere verzoeken en bespaart herhaalde transportopbouw.
Een persistente verbinding vervoert een HTML-antwoord en latere afbeeldingsantwoorden zonder nieuwe TCP-handshakes.
Plaatsing bij internetknooppunten
Plaatsing bij internetknooppunten is een CDN-plaatsingsstrategie met minder, grotere clusters bij knooppunten waar veel netwerken met elkaar verbonden zijn.
Plaatsing bij internetknooppunten vereenvoudigt het beheer vergeleken met het onderhouden van veel kleine clusters binnen toegangsnetwerken.
Plaatsing diep in toegangsnetwerken
Plaatsing diep in toegangsnetwerken is een CDN-plaatsingsstrategie met veel kleinere clusters binnen netwerken van toegangsproviders om paden naar gebruikers te verkorten.
Plaatsing diep in toegangsnetwerken brengt content dicht bij abonnees, maar laat de beheerder veel locaties onderhouden.
Plaatsing op aanvraag
Plaatsing op aanvraag vult een CDN-cache als reactie op een verzoek om content die het lokale cluster nog niet heeft.
Door plaatsing op aanvraag is het eerste verzoek om een niet-gecachet object afhankelijk van het ophalen bij een bovenliggende bron.
Poortnummer
Een poortnummer is een 16-bitswaarde die samen met een IP-adres wordt gebruikt om een ontvangend transporteindpunt op een host te identificeren.
De client neemt contact op met dezelfde host via poortnummer 443 voor HTTPS en 25 voor overdracht tussen mailservers.
POP3
POP3 is een protocol voor e-mailtoegang om opgeslagen berichten te downloaden, met optionele verwijdering van de server na een voltooide sessie.
POP3 met downloaden en verwijderen op een laptop kan ervoor zorgen dat een telefoon hetzelfde bericht later niet kan ophalen.
Proces
Een proces is een draaiend exemplaar van een programma; netwerkprocessen wisselen applicatieberichten uit via transporteindpunten.
Een mailserverproces kan één bericht verzenden terwijl een ander proces op de host webverzoeken afhandelt.

Q

QUIC
QUIC is een beveiligd transportprotocol over UDP dat betrouwbare streams, congestiebeheersing, snelle verbindingsopbouw en verbindingsmigratie biedt.
QUIC kan ontvangen gegevens op één stream afleveren terwijl een afzonderlijke stream ontbrekende bytes herstelt.

R

Resolver
Een resolver verkrijgt DNS-informatie voor een aanvrager en raadpleegt caches en andere servers wanneer dat nodig is om een naamopzoeking te voltooien.
De resolver van de campus volgt verwijzingen terwijl de laptop op het resultaat van de recursieve naamopzoeking wacht.
Rondlooptijd
De rondlooptijd is de tijd die een klein pakket nodig heeft om naar een bestemming te reizen en een antwoord om terug te keren.
Een rondlooptijd van 30 ms telt tweemaal mee voor het eerste object dat via gewone HTTP over een nieuwe TCP-verbinding wordt opgehaald.
Rootserver
Een rootserver bedient de top van de DNS-hiërarchie en verwijst resolvers normaal naar de juiste topleveldomeinservers.
De resolver vraagt een rootserver waar een naamopzoeking met lege cache voor een org-domein kan doorgaan.

S

Seeder
Een seeder is een BitTorrent-peer die de volledige content heeft en beschikbaar blijft om die naar andere deelnemers te uploaden.
Een seeder blijft na voltooiing van de download online zodat nieuwe peers alle benodigde delen kunnen verkrijgen.
Segment
Een segment is een kort, afzonderlijk opvraagbaar tijdsinterval van gecodeerde video, waarvan versies op verschillende kwaliteitsniveaus beschikbaar zijn.
Een segment dat vier seconden afspelen vertegenwoordigt, kan op een traag pad meer dan vier seconden nodig hebben om te downloaden.
SMTP
SMTP is het applicatieprotocol waarmee e-mail wordt aangeboden en overgedragen via opdracht-antwoorduitwisselingen over TCP-verbindingen.
SMTP stuurt een bericht uit de wachtrij actief van de mailserver van de afzender naar de server van het ontvangende domein.
SMTP-envelop
Een SMTP-envelop is de afleverinformatie van SMTP, waaronder de afzender in MAIL FROM en de ontvangers in RCPT TO, afzonderlijk van de berichtheaders.
Een verborgen ontvanger staat in de SMTP-envelop, ook als geen zichtbare To-header die ontvanger noemt.
Socket
Een socket is de software-interface waarmee een applicatieproces toegang krijgt tot transportdiensten om gegevens te verzenden of ontvangen.
Een netwerkspel schrijft positie-updates via een socket en leest inkomende updates via de socket-API.
SPF
SPF laat een domein publiceren welke hosts namens dat domein e-mail mogen verzenden en controleert de verzendende host aan de hand van een identiteit in de SMTP-envelop.
SPF kan slagen voor een envelopdomein dat door een aanvaller wordt beheerd zonder een ander zichtbaar From-domein te valideren.
STARTTLS
STARTTLS is een protocolopdracht die een bestaande onversleutelde verbinding opwaardeert naar TLS vóór latere beveiligde uitwisselingen.
Geauthenticeerde SMTP-aanbieding op poort 587 gebruikt meestal STARTTLS voordat beveiligde inhoud wordt verzonden.
Statuscode
Een statuscode is een antwoordwaarde van drie cijfers die de uitkomst van een HTTP-verzoek meldt, zoals succes, omleiding of een fout.
De statuscode 404 laat zien dat een HTTP-server heeft geantwoord maar de opgevraagde resource niet heeft gevonden.
Stream
Een stream is een logische reeks gegevens binnen een verbinding; HTTP-multiplexing gebruikt streams om gelijktijdige uitwisselingen te onderscheiden.
Een stream die één pagina-afbeelding vervoert, kan voortgang boeken naast een stream die een stylesheet vervoert.

T

TCP
TCP is een verbindingsgericht transportprotocol dat betrouwbare, geordende bytes levert met stroomregeling en congestiebeheersing.
Een TCP-verbinding levert het volledige bestand in volgorde af, terwijl de applicatie de berichtgrenzen bepaalt.
Time-out
Een time-out is een grens aan hoelang een bewerking wacht voordat die de controle teruggeeft met de melding dat voltooiing binnen die tijd is mislukt.
Een ontvangsttime-out laat de UDP-client een ontbrekend antwoord melden in plaats van onbeperkt te blokkeren.
TLD-server
Een TLD-server bedient een topleveldomein en levert delegaties die autoritatieve servers voor onderliggende domeinen identificeren.
Een TLD-server voor org geeft de delegatie terug die nodig is om verder te gaan naar de records van example.org.
TLS
TLS is een beveiligingsprotocol dat vertrouwelijkheid, integriteit en authenticatie van de andere partij toevoegt aan een transportuitwisseling van een applicatie.
Een browser gebruikt TLS over TCP om een HTTPS-uitwisseling met een HTTP/2-server te beschermen.
Toestandsloosheid
Toestandsloosheid betekent dat een HTTP-verzoek onafhankelijk kan worden begrepen, zonder dat het protocol vereist dat eerdere clientverzoeken worden onthouden.
De toestandsloosheid van HTTP laat een webwinkel nog steeds toe om met een cookie in elk verzoek winkelwagengegevens op te zoeken.
Torrent
Een torrent is de groep peers die via BitTorrent deelneemt aan de distributie van een bepaald bestand of een bepaalde verzameling content.
Peers nemen deel aan een torrent en wisselen delen uit met buren die ze via een tracker of gedistribueerde opzoeking vinden.

U

UDP
UDP is een verbindingsloos transportprotocol dat afzonderlijke datagrammen vervoert zonder verliesherstel, ordening of congestiebeheersing te bieden.
Een kleine DNS-aanvraag kan UDP gebruiken, waarbij een resolver opnieuw probeert als vóór de time-out geen antwoord aankomt.
UTF-8
UTF-8 is een bytecodering voor Unicode-tekst die wordt gebruikt door de standaardbewerkingen encode voor strings en decode voor bytes in Python.
Een server die ontvangen tekst in hoofdletters omzet, decodeert eerst de inkomende UTF-8-bytes en codeert daarna het antwoord.

V

Verbindingssocket
Een verbindingssocket is een transporteindpunt voor één gevestigde TCP-verbinding, waarmee de bytes van die verbinding worden verzonden en ontvangen.
De server roept recv aan op de verbindingssocket die accept teruggeeft, niet op de luistersocket.
Voorwaardelijk GET-verzoek
Een voorwaardelijk GET-verzoek vraagt een representatie onder een voorwaarde op en valideert vaak een gecachete datum of ETag vóór overdracht van de inhoud.
Een voorwaardelijk GET-verzoek ontvangt 304 wanneer de opgeslagen ETag nog steeds de huidige representatie identificeert.

W

Wachtrijlimiet voor verbindingsverzoeken
Een wachtrijlimiet voor verbindingsverzoeken is de toegestane wachtrijruimte voor verbindingsverzoeken die wachten op acceptatie door een luisterende serversocket.
De wachtrijlimiet voor verbindingsverzoeken verhogen laat een server die verzoeken één voor één afhandelt niet gelijktijdig werken.
Webcache
Een webcache bewaart HTTP-antwoorden voor hergebruik en vermindert herhaalde overdrachten wanneer de regels voor geldigheid en validatie dat toestaan.
De webcache van de browser levert een ongewijzigde afbeelding zonder nog een volledige kopie op te halen.
Webmail
Webmail is toegang tot een mailbox via een browser met HTTP, normaal HTTPS, terwijl e-mailaflevering tussen providers nog steeds SMTP gebruikt.
De browser gebruikt webmail via HTTPS om een bericht te lezen dat via SMTP bij de provider is aangekomen.

Z

Zeldzaamste eerst
Zeldzaamste eerst is een selectieregel voor delen die benodigde delen opvraagt die bij de minste buren aanwezig zijn en zo de beschikbaarheid helpt behouden.
Zeldzaamste eerst kiest een schaars benodigd deel vóór een ander benodigd deel dat al bij veel buren beschikbaar is.
Zelfschaling
Zelfschaling is groei van de dienstcapaciteit naast de vraag, doordat deelnemende gebruikers middelen zoals uploadbandbreedte bijdragen.
P2P-bestandsdeling krijgt zelfschaling wanneer nieuwe downloaders ook delen uploaden die ze hebben ontvangen.

#

0-RTT-gegevens
0-RTT-gegevens zijn applicatiegegevens die tijdens de opbouw van een hervatte verbinding worden verzonden voordat een nieuwe rondgang is voltooid, met beperkingen vanwege het risico op herhaling.
Een hervatte QUIC-verbinding kan daarvoor geschikte 0-RTT-gegevens verzenden voordat op de nieuwe uitwisseling met de server wordt gewacht.

Over deze les

Door StudeliFout melden

Maak je eigen Studiemateriaal

Maak van je aantekeningen, slides en documenten Leermodules, Oefenvragen, Flashcards en 6 andere tools.

Aan de slag