Kapittel 2 · Applikasjonslaget

Applikasjonslaget

Hvordan programmer på to vidt forskjellige maskiner — en mobil i Trondheim og en tjener i California — klarer å snakke sammen, sende websider, dele filer og strømme video. En reise gjennom prinsipper, protokoller og smarte triks.

Overblikk

Det store bildet

Applikasjonslaget er der all den nyttige kommunikasjonen faktisk skjer — resten av nettverksstakken eksisterer bare for å støtte det.

Tenk deg at du og en venn i et annet land snakker i telefon. Dere trenger ikke å vite noe om hvordan telefonnettverket fungerer — kobberkabler, sentraler, optiske fibrer — dere trenger bare å snakke samme språk. Applikasjonslaget er nettopp det: språkene datamaskiner snakker med hverandre. HTTP er språket for websider, SMTP er språket for e-post, og DNS er telefonkatalogen som lar deg slå opp hvem du vil snakke med. Under alt dette ligger transport-, nettverks- og linklaget — infrastrukturen — men applikasjonene dine trenger aldri å bry seg om detaljene der nede.

KLIENT Applikasjonslaget nettleser · e-postklient transport (TCP/UDP) network · link · physical styres av OS TJENER Applikasjonslaget webserver · mailserver transport (TCP/UDP) network · link · physical styres av OS nettskyen HTTP SMTP DNS-server «telefonkatalogen» Applikasjonslaget bryr seg ikke om hva som skjer inne i nettskyen — bare at meldinger kommer frem.
Applikasjonslagsprotokoller (HTTP, SMTP, DNS) kjører på endesystemene. Nettverksinfrastrukturen under er usynlig for applikasjonene.

Det er lett å tenke at Internett er én ting, men i virkeligheten er det en hel familie av protokoller som samarbeider. Når du skriver ntnu.no i nettleseren din, skjer det minst tre applikasjonslagsprotokoller: DNS finner IP-adressen til tjeneren, TCP oppretter en pålitelig forbindelse, og HTTP henter nettsiden. Alt dette skjer på under et sekund.

Kapittelets kjerneidé

Applikasjonsutviklere skriver bare kode for endesystemene — klienten og tjeneren. Ruterne i kjernen av nettverket kjører ingen brukerapplikasjoner; de bare videresender pakker. Det er derfor en student kan oppfinne en helt ny nettjeneste i kveld og rulle den ut over hele kloden i morgen, uten å endre noe som helst i nettverksinfrastrukturen.

I dette kapittelet ser vi på de viktigste mønstrene: klient–server vs. peer-to-peer (to helt forskjellige måter å organisere kommunikasjon på), protokollene HTTP, SMTP og DNS (som dekker web, e-post og navneoppslag), og til slutt socket-programmering — der du selv får skrive kode som snakker over nettverket.

Test deg selv

Sjekk om du har forstått de viktigste konseptene fra dette kapittelet.

Spørsmål 1 · Lett
Hva beskriver best klient–server-arkitektur?
Riktig. Klient–server samler tjenestelogikk i alltid-tilgjengelige servere som betjener mange klienter.
Spørsmål 2 · Middels
Hvilken påstand er mest korrekt om selv-skalering i P2P i praksis?
Riktig. I P2P bidrar hver ny peer med både etterspørsel og opplastingskapasitet.
Spørsmål 3 · Vanskelig
I et større nettverk, hvilken vurdering om socketens rolle i applikasjonslaget er faglig best?
Riktig. Socketen er API-et mellom applikasjon og transportlag for sending/mottak av data.
Spørsmål 4 · Middels
Hvilken påstand er mest korrekt om hva TCP tilbyr applikasjoner i praksis?
Riktig. TCP tilbyr pålitelig, ordnet byte-strøm med flyt- og køkontroll, men med mer overhead.
Spørsmål 5 · Lett
Hva beskriver best hva UDP tilbyr applikasjoner?
Riktig. UDP tilbyr lav latenst og enkel datagramtransport uten leveringsgarantier.
Spørsmål 6 · Vanskelig
I et større nettverk, hvilken vurdering om HTTP request–response-modellen er faglig best?
Riktig. I HTTP initierer klienten forespørselen, og serveren svarer med statuslinje, headere og eventuelt innhold.
Spørsmål 7 · Middels
Hvilken påstand er mest korrekt om hva det betyr at HTTP er stateless i praksis?
Riktig. HTTP-serveren behandler hver forespørsel uavhengig av tidligere forespørsler.
Spørsmål 8 · Vanskelig
I et større nettverk, hvilken vurdering om cookies i webapplikasjoner er faglig best?
Riktig. Cookies legger en klient-ID i forespørsler slik at serveren kan knytte handlinger til en sesjon.
Spørsmål 9 · Lett
Hva beskriver best persistent HTTP-forbindelser?
Riktig. Persistent HTTP reduserer antall TCP-oppsett og RTT-kostnad ved flere objekter.
Spørsmål 10 · Vanskelig
I et større nettverk, hvilken vurdering om betinget GET og 304 Not Modified er faglig best?
Riktig. Betinget GET sparer båndbredde ved å hente objektet kun når det faktisk er endret.
Spørsmål 11 · Middels
Hvilken påstand er mest korrekt om webcache/proxy i praksis?
Riktig. En webcache kan svare lokalt på populære objekter og redusere både forsinkelse og backbone-trafikk.
Spørsmål 12 · Vanskelig
I et større nettverk, hvilken vurdering om CDN-strategi er faglig best?
Riktig. CDN-er flytter innhold nær brukeren med edge-servere for lavere latenstid og høyere skalerbarhet.
Spørsmål 13 · Lett
Hva beskriver best DASH-adaptiv strømming?
Riktig. I DASH velger klienten bitrate per segment basert på målt throughput og bufferstatus.
Spørsmål 14 · Middels
Hvilken påstand er mest korrekt om segmentering av videostrøm i praksis?
Riktig. Video deles i korte segmenter i flere kvaliteter for dynamisk tilpasning under avspilling.
Spørsmål 15 · Vanskelig
I et større nettverk, hvilken vurdering om SMTP som push-protokoll er faglig best?
Riktig. SMTP dytter e-post mellom servere og bruker kølagring når mottakerserver ikke er umiddelbart tilgjengelig.
Spørsmål 16 · Middels
Hvilken påstand er mest korrekt om IMAP i moderne e-post i praksis?
Riktig. IMAP lar klienter synkronisere mapper og meldingsstatus mens e-posten forblir på serveren.
Spørsmål 17 · Lett
Hva beskriver best DNS sin kjernefunksjon?
Riktig. DNS oversetter domenenavn til IP-adresser slik at applikasjoner kan kontakte riktig vert.
Spørsmål 18 · Vanskelig
I et større nettverk, hvilken vurdering om DNS-hierarkiet er faglig best?
Riktig. DNS er hierarkisk med root-, TLD- og autoritative navneservere for skalerbar navneoppløsning.
Spørsmål 19 · Middels
Hvilken påstand er mest korrekt om iterativ DNS-oppslag i praksis?
Riktig. I iterativ oppslag gir hver server henvisning videre i stedet for å fullføre hele oppslaget selv.
Spørsmål 20 · Vanskelig
I et større nettverk, hvilken vurdering om DNS-caching og TTL er faglig best?
Riktig. Caching reduserer oppslagstid og belastning, mens TTL begrenser hvor lenge et svar kan gjenbrukes.
Spørsmål 21 · Middels
Hvilken påstand er mest korrekt om MX-poster i DNS i praksis?
Riktig. MX-poster peker til hvilke mailservere som mottar e-post for et domene.
Spørsmål 22 · Vanskelig
I et større nettverk, hvilken vurdering om TCP-serverens velkomstsokkel er faglig best?
Riktig. Velkomstsokkelen aksepterer nye forbindelser, og OS oppretter en egen forbindelsessokkel per klient.
Spørsmål 23 · Lett
Hva beskriver best hvorfor UDP-servere ofte bruker én sokkel?
Riktig. UDP har ikke forbindelser; samme sokkel håndterer datagrammer fra mange klienter.
Spørsmål 24 · Middels
Hvilken påstand er mest korrekt om HTTP-metoder i REST-lignende API-er i praksis?
Riktig. GET leser ressurser, POST oppretter/trigger handlinger, og PUT/PATCH brukes for oppdatering.
Spørsmål 25 · Vanskelig
I et større nettverk, hvilken vurdering om HTTPS i praksis er faglig best?
Riktig. HTTPS er HTTP over TLS og gir konfidensialitet, integritet og serverautentisering.