Hfd 2 Flashcards
Can you write application software for network-core devices?
Nee, want in de core worden alleen devices gebruikt die op de netwerklaag of lager werken
Application architecture
Gemaakt door de applicatie ontwerper. Dicteert hoe de app gestructureerd is over de verschillende end-systems.
Netwerk architecture
Geeft een fixed en specifieke set van services aan applicaties
Client-server architecture
Een altijd aanstaande host met een IP adres (de server) die aanvragen dient van vele andere hosts (de clients). Zoals op het Web en e-mail.
Data center
Huist een grote hoeveelheid hosts.
Peer2Peer architecture
Wanneer je data uitwisselt zonder (of minimaal) gebruik te maken van servers in data centers. Directe link tussen ononderbroken verbonden hosts. De downloading peer is de client en de uploading peer is de server.
Self-scalibility
Voordeel van peer2peer-architecture. Naast het creeren van workload, door een file op te vragen, ook toevoegen aan de service capaciteit, door het distributeren van files naar andere peers.
Processes
De programma’s die draaien op een end-system. Processes communiceren, in operating system terms, door het sturen van messages. T proces dat de communicatie initieert is de client (vraagt iets van de ander) en de ander is de server.
Socket
De software interface van een netwerk, waar gestuurde messages doorheen moeten. Als het proces een huis is, is de socket de deur, buiten de deur is dan het transportation proces tussen de 2 processen en dus ook sockets.
API
Application Programming Interface aka socket. De interface tussen applicatie laag en transport laag.
IP adres
Het adres van een host in 32-bit.
Port number
Een uniek nr gekoppeld aan een applicatie, zodat de ontvangende socket weet voor welk applicatie op t IP adres de data bedoeld is. IP adres = straatnaam. Port nr = huisadres.
Web server = port 80
SMTP = port 25
Services transport-layer
Wanneer je een applicatie maakt kies je ook welk transportprotocol je wilt gaan gebruiken. Er kan tussen de protocollen verschil zitten in reliable data transfer, throughput, timing en security.
Reliable data transfer
Hoe zeker het is dat er geen data verloren gaat tijdens het versturen. Bijvoorbeeld belangrijk bij bank transacties, mails en remote host access.
Loss-tolerant applications
Apps die het wel kunnen hebben als er een beetje data verloren gaat, zoals multimedia apps met conversatie audio/video
Guaranteed throughput
1 vd services die de transport-laag kan bieden is gegarandeerde throughput op een bepaalde snelheid. Throughput snelheid wisselt door het delen van kabels/verbindingen met andere data.
Bandwidth-sensitive applications
Apps die vereisten hebben aan de throughput. Oa internet telefonie die bijvoorbeeld stemmen codeert op 32 kbps, lagere throughput zal de ontvangen data verstoren.
Elastic applications
Apps die met alle hoeveelheden throughput om kan gaan. Oa mail en file transfers.
Timing guarantees
Als er een afspraak is over hoeveel tijd een bit heeft om aan de andere kant weer ontvangen te worden. Met name belangrijk voor real time applicaties.
TCP
Een connectie-georiënteerde service (een soort handshake tussen de 2 transportlagen, voor de applicatielagen beginnen met zenden, na applicatielagen klaar zijn wordt de verbinding verbroken) en een betrouwbare data transfer service (erop kunnen vertrouwen dat alle data verzonden wordt en in de juiste volgorde). TCP bezit ook een congestion-control mechanisme, service to the whole internet.
UDP
Een lichte, minimale service. Connectieloos, onbetrouwbare data transfer (geen garantie dat alles aankomt of in de juiste volgorde), geen congestion system.
Application-layer protocol
Hoe applicatie processen, op andere hosts, met elkaar communiceren. Definieert
- type berichten (request, response)
- de syntax ervan (de velden in de berichten en hoe ze zijn afgebakent)
- de semantics van de velden (betekenis van de berichten in de velden)
- regels voor wanneer en hoe een bericht versturen en ontvangen
HTTP
HyperText Transfer Protocol. Web applicatie protocol (in een RFC en dus publiek domein). Gebruikt TCP als onderliggend protocol, zodat t niet bezig hoeft te zijn met data loss. Is een stateless protocol. Alleen communicatie protocol, geen invloed op hoe de info geïnterpreteerd wordt, dit doet de browser
Verschil netwerk applicaties en applicatie-laag protocollen
De protocollen zijn slechts een deel van de netwerkapplicatie. Zoals bij http en het Web
Webpage
Document bestaande uit objecten
Objects
Een bestand (html, css, jpeg, javascript, etc)
Stateless protocol
Een protocol dat geen informatie behoudt van een gebruiker.
Non-persistent connections
Wanneer voor ieder request/response paar een aparte TCP link wordt gebruikt. Dus na ieder object wordt de TCP link verbroken, om vervolgens voor het volgende bestand weer een nieuwe op te zetten.
Nadelen; elke keer weer moeten toewijzen van TCP buffers en het bewaren van variabelen (zowel bij client als server) belast een webpage zwaar. Kost meer tijd, vanwege telkens weer handshake voor TCP connectie.
Persistent connections
Wanneer alle requests met hun responses over dezelfde TCP link worden gestuurd. Standaard voor http, maar kan aangepast naar non-persistent
RRT
Round-trip time. De tijd die nodig is om een kleine packet van client naar server te sturen en terug.
Total response time
Hoelang het in totaal duurt om een HTML file te vragen en ontvangen. 2 RTT’s (1 voor eerste 2 stappen van de 3way handshake - 2 voor het derde deel van de handshake, het aanvragen van een file en het terug sturen ervan) & de transmissie tijd nodig bij de server om de HTML file in een link te stoppen.
Pipelining
Het doen van rug-aan-rug verzoeken in een openstaande, persistent TCP-connectie.
HTTP Request message
1e regel is de request lijn (bestaande uit de methode, URL en de HTTP versie). De rest zijn header lines (regels om mee te geven met de data, als ‘sluit na deze request je persistent TCP connectie’ of ‘de host waar de bestanden vandaan moeten komen’. Kunnen 0 tot veeeele regels zijn.) De entitybody kan nog ingevuld worden, dit gebeurt bij een POST methode wanneer een gebruiker een form invult (ook voor zoeken in zoekmachine).
5 methoden HTTP request
GET wanneer browser een object opvraagt of ook korte zoek in een zoekmachine
POST bij het invullen van een formulier of zoeken in zoekmachine
HEAD haalt een antwoordt in HTTP vorm terug ipv een object zelf
DELETE voor het verwijderen van een object op een webserver
PUT het uploaden van een bestand in een specifiek path
HTTP response method
1e regel is statuslijn, daarna headerlines en als laatst de entity body.
In de entity body bevind zich de data.
De statuslijn bevat een protocol versie, een status code en een status message.
Header lines zijn alle extra informatie, als ‘connection: close’ voor de TCP verbinding en datum
Cookies
Om te zorgen dat, binnen de stateless HTTP server, een website gebruikers kan identificeren. Bijvoorbeeld omdat de server gelimiteerd gebruik wil voor bepaalde gebruikers.
Bestaat uit 4 componenten
- een cookie header line in response message
- een cookie header line in de request message
- een cookie file, bewaart op de gebruikers end system en gemanaged door browser
- een back-end database op een website
Web cache
Ook wel een proxy server.
Is een externe plek waar je als gebruiker al een aantal requested objects opslaat. Als je dan een HTTP request doet, wordt er eerst een TCP connectie gemaakt met de web cache om te kijken of het object daar al opgeslagen ligt. Als dit niet zo is doet de cache een HTTP request naar de originele server, slaat het object op en stuurt het terug.
CDN
Content Distribution Network. Een bedrijf dat vele geografisch verdeelde caches installeert, waardoor veel van het dataverkeer gelokaliseerd wordt.
The conditional GET
Het introduceren van cache levert wel ook een nieuw probleem op, hoe weet je nou of een object niet een verouderde versie is. Dit kan dmv de conditional GET. Een HTTP request is een conditional GET als (1) GET wordt gebruikt en (2) een if-modified-since: headerline bevat.
HTTP/2
Eerste nieuwe HTTP versie sinds HTTP/1.1. Gestandaardiseerd in 2015. Van non-persistent naar persistent TCP verbindingen. Doel; om merkbare vertraging te reduceren, request prioritering en server push toestaan & voorzien van header field compression
HOL blocking
Head of Line blocking. Als een groot object een connectie blokkeert voor kleinere objecten die er makkelijk door hadden gepast.
Oplossing door HTTP/1.1 - meerdere TCP connections openen en paralel langs elkaar objects versturen. Zwaar voor t internet
Oplossing HTTP/2 - alle objecten opdelen in frames van dezelfde lengte, vervolgens van ieder object 1e frame versturen, vervolgens 2e, etc. Waardoor sommige objecten veel eerder binnen zijn en de delay niet zo voelbaar is
Framing
HTTP/2 oplossing voor HOL-blocking
Server push
In plaats van te wachten op HTTP requests die binnenkomen kan de server zelf de webpagina uitlezen om te zien welke objecten gestuurd moeten. Dit haalt de vertraging door t wachten op requests eruit.
User agents
De interface van emails.
Mail server
Ontvangt verzonden email, zet deze in de uitgaande rij. Zodra ontvangende partij de email opvraagt wordt deze uit de rij naar de mail server van de ontvanger gestuurd. Daar haalt zijn user agent de mail dan weer uit.
Deze zit er tussen, anders zou de local host altijd aan moeten staan om berichten in mailbox te ontvangen
SMTP
Simple mail transfer protocol. Het applicatie-laag protocol voor emails. Zorgt voor versturen mails tussen servers.
Push protocol
IMAP
Internet Mail Access Protocol. Pull protocol. Om je email op te halen uit je mailserver. Gebruikt door mailclients die niet web based zijn. Zij gebruiken HTTP.
IP adres
Naast de hostnaam een soort bsn nummer voor je naam. Bestaat uit 4 bytes gescheiden door een punt en uitgeschreven in numeriek systeem
DNS
Domain Name System. Map om vast te leggen welke hostnaam bij welk IPadres hoort.
Kan 2 dingen zijn;
1. Een distributed database (niet in applicatielaag) geïmplementeerd in een hierarchie van DNS servers
2 een applicatielaag protocol die hosts kan helpen op te vragen uit die database
Unix machines running BerkeleyInternetNameDomain software. Runs over UDP en gebruikt poort 53.
Canonical hostname
Het officiele of standaarddomein dat wordt gebruikt voor een specifieke webserver of host
Alias hostnames
Zijn de ‘bijnamen’ die een host of site kan hebben
Load distribution
DNS kan ook zorgen voor de verdeling van lading voor een drukke site (zoals cnn.com). Er lopen dan meerdere kopieen gemaakt op verschillende servers, deze hebben allemaal een ander IPadres maar zijn wel opgeslagen als een set in de DNS door dezelfde alias hostname.
Wanneer opgevraagd, komt de set IP adressen terug die de DNS dan rouleert om te zorgen dat de druk verdeeld wordt
3 DNS servers (+1)
Root DNS / geven IP adressen van TLD servers
Top-level domain DNS / een server of cluster servers voor iedere top-level domain (com org edu nl fr uk….) geeft IP van authoritative server
Authoritative DNS / de DNS records die voor het top-level domain deel staan in een hostname (webservers, mailservers..)
+1 - local DNS server / de DNS server die je als eerst tegenkomt als je t web op gaat om een IP adres te zoeken. Werkt als een proxy. Slaat eerder gebruikte combinaties op (of iig de weg er naartoe) dit wel voor een paar dagen maar. Hierdoor voor grotendeel van de DNS queries geen root server meer nodig
RR’s
Resource records. Opgeslagen records in DNS servers. Deel van de berichten die ze versturen om te helpen IPadressen zoeken.
(Name, Value, Type, TTL(time to live))
DNS messages
Eerste 12 bytes - header section (identificatie, query/reply, number of: questions, authoritive RR’s, answer RR’s, additional RR’s)
1 byte - questions (name & type query)
1 byte - answer RR’s (RR’s in response to query)
1 byte - authoritive RR’s (records for authoritive servers)
1 byte - additional RR’s (additional helpful info)
Registrar
Commercial entity die kijkt of je domeinnaam uniek is en zet deze vervolgens in de DNS database.