Project:Netwerken/Concepten-brainstorm

Uit Inf2019
Naar navigatie springen Naar zoeken springen
De printervriendelijke versie wordt niet langer ondersteund en kan weergavefouten bevatten. Werk uw browserbladwijzers bij en gebruik de gewone afdrukfunctie van de browser.

Concepten-brainstorm

Dit is een verzamelpagina voor de concepten rond het thema Netwerken en de context Internet of Things. Deze concepten werken we in een later stadium verder uit. Waar mogelijk geven we deze concepten ook weer in de vorm van concept maps.

Communicatie

Communiceren is het overbrengen van een bericht van de zender A naar de ontvanger B, via een (communicatie-)kanaal. Communiceren is één van de fundamentele/basis informatie-processen (naast rekenen en opslaan/terughalen). Communiceren vind je, net als de andere basisprocessen, in alle lagen van informatiesystemen.

  • dit bericht heeft gewoonlijk een bepaalde betekenis: voorlopig laten we die buiten beschouwing; we komen daar later op terug. Voor de communicatie doet deze betekenis er niet toe. Zoals de PTT vroeger zei: "we hebben geen boodschap aan de boodschap".

Communicatie heeft altijd een doel: de "toepassing". En communicatie heeft altijd een fysieke vorm nodig: het bericht moet in een fysieke vorm via een fysiek kanaal overgebracht worden.

  • voorbeelden van fysieke vormen, kanalen P.M.

3 lagen: fysieke laag, logische laag, toepassingenlaag

In de wereld van de ICT zijn de fysieke vorm en de toepassing gescheiden, en in aparte "lagen" ondergebracht. Deze lagen worden gescheiden door de logische laag. Deze logische laag abstraheert aan de ene kant van de toepassingen: alle soorten berichten voor alle soorten toepassingen kunnen we hierin vormgeven (als een reeks bits). Aan de andere kant abstraheert de logische laag van de fysieke vormen: we kunnen deze bits via alle fysieke vormen van communicatie overbrengen.

  • het internet is een universeel netwerk: je hebt geen aparte telefoon-, telex-, televisie-, radio-, enz. netwerken nodig.
  • het gebruik van deze 3 lagen vind je overal in de ICT/informatica: ook bij rekenen en bij de opslag van gegeven. Een computer is daardoor een universeel gereedschap. Dit is een bijzondere eigenschap (die in het verleden niet altijd door iedereen begrepen is: voor sommigen is een smartphone een telefoon met extra's, voor anderen een computer waarmee je ook nog kunt telefoneren).
  • "digitalisatie", het gebruik van digitale vormen in plaats van analoge vormen, alleen is niet voldoende. Denk bijvoorbeeld aan de audio-CD of aan digitale TV: in dat geval is er sprake van een digitale vorm die gespecialiseerd is voor een bepaalde toepassing. Deze is niet voor andere toepassingen geschikt.
  • er zijn ook verfijndere lagenmodellen, zoals het internet lagenmodel of het OSI lagenmodel. We komen later op deze meer gespecialiseerde lagenmodellen terug.

Communicatie speelt zich af op allerlei niveaus, soms gescheiden als "lagen".

  • hoe herken je die niveaus, kun je die onderscheiden?
  • als je een figuur ziet (van een communicatie), weet je dan op welk niveau dit zich afspeelt?
  • vgl. stapelen van protocollen.

1-op-1 communicatie; Shannon-model; eigenschappen

De eenvoudigste vorm van communicatie is tussen twee "agents", in één richting (van zender naar ontvanger).

  • hiervoor kun je bijvoorbeeld een enkele draad gebruiken, zoals tussen de logische onderdelen op een IC.

Eigenschappen van communicatie (kanaal)

  • snelheid: throughput (bitsnelheid), latency
  • betrouwbaarheid, foutkans (voor homogeen verdeelde fouten), foutgedrag
  • veiligheid (tegen afluisteren; tegen manipulatie)

Eisen vanuit de toepassing:

  • snelheid
  • betrouwbaarheid
  • veiligheid

Uni-directionele en bi-directionele communicatie. Verbinding vs. bericht (pakket, datagram).

  • dit vind je ook op meerdere niveaus

Je kunt een betrouwbaar (logisch) kanaal maken op basis van een onbetrouwbaar (fysisch) kanaal - door middel van (kanaal)codering.

Je kunt communiceren onder het S/N-niveau van een fysisch medium - je hebt dan wel een grote bandbreedte nodig. (Zie LoRa, chirp).

schaalbaarheid van communicatie

Er zijn ontzettend veel agents die mogelijk met elkaar willen communiceren: de 1-op-1 communicatie is niet eenvoudig uit te breiden naar al deze mogelijke communicaties.

Deze vorm is niet schaalbaar: je hebt N * (N-1) mogelijke communicaties. Dit loopt ook voor relatief kleine N al snel uit de hand.

Er zijn verschillende oplossingen om communicatie beter schaalbaar te maken:

  • voor kleine N (ten hoogste enkele tientallen): "vergadering", klas, enz. (in combinatie met multicast-karakter).
  • voor grote N vormen netwerken een oplossing: elke agent heeft één verbinding met het netwerk (of een klein aantal). Deze verbinding wordt op verschillende momenten voor verschillende communicaties (met andere partners) gebruikt. ("multiplexing).
  • (het maakt in dit geval niet uit wat je een agent noemt: een computer heeft een verbinding met het netwerk, maar een toepassing in een browser heeft ook een klein aantal verbindingen met het netwerk.)
  • in een netwerk gebruiken we verschillende technieken:
    • multiplexing - bijvoorbeeld in de tijd (met vaste frames of flexibel, in de vorm van pakketten); of in het frequentiedomein (zoals bij radio, verschillende "kanalen")
    • gedeeld medium (andere manier om naar multiplexing te kijken)

Problemen met de schaalbaarheid van communicatie vinden we in de informatica/ICT op verschillende manieren terug:

  • communicatie in team; grootte van het team; manier waarop een team communiceert;
  • communicatie via het internet, om een groot aantal verschillende agents te verbinden.
  • medium:
    • we gebruiken dit in een andere betekenis dan "de media" of "mediawijsheid".
  • communicatie: overbruggen van ruimte en/of tijd, meestel met meerdere personen (agents: kunnen zowel personen, computers, als "dingen" zijn).
  • Shannon communicatiemodel: zender, ontvanger, kanaal, bericht (boodschap), codering, decodering, kanaalcapaciteit, foutkans, (betrouwbaarheid).
  • Compressie in dit model: broncodering, kanaalcodering, doelcodering
  • 1-1 communicatie; 1-N; N-M communicatie (dit is topologie op het niveau van de toepassing)
  • gebruik van een gemeenschappelijk medium (bijv. meerdere personen in een lokaal)
  • communicatie-topologie (fysieke laag?):
    • 1-1 (draad; op hoger niveau noemen we dit een verbinding)
    • N-M (bus; gemeenschappelijk medium) => adressering; collisions/collisionhandling
    • netwerk => adressering en routering
      • we hebben ook te maken met routering als we bijvoorbeeld een verbinding willen maken in een klassiek analoog telefoonnetwerk. (Ook in dat geval hebben we te maken met collisions en collision handling: er kunnen bijvoorbeeld te weinig schakelaars en verbindingen zijn voor alle aanvragen op een bepaald moment.)
  • throughput/latency

Een belangrijke stelling: we kunnen alle informatie representeren door middel van bits. We verliezen geen fundamentele eigenschappen (...zonder verlies van algemeenheid...) als we ons alleen op de communicatie van bits richten (digitale communicatie).

We kunnen eventueel bij deze communicatie onderscheid maken tussen de fysische laag en de toepassingen-laag. In een later stadium kunnen we daar de universele logische laag tussen plaatsen.

Sommige concepten kom je op meerdere terreinen tegen; bijvoorbeeld throughput en latency.

Wat heb je aan deze concepten?

  • welke problemen en oplossingen kun je formuleren in termen van deze concepten/modellen?

Codering, compressie, encryptie

  • codering/decodering
  • kanaalcodering: vergroten van data-betrouwbaarheid
  • broncodering: (lossless) compressie
    • gebruik van de eigenschappen (statistiek) van de bron (zender)
  • doelcodering: (lossy) compressie
    • gebruik van de eigenschappen (o.a. statistiek) van het doel (ontvanger)

Protocollen

"Betrouwbare communicatie over een onbetrouwbaar medium". Betrouwbaarheidsprobleem op meerdere niveaus (vgl. internet).

  • stapeling van protocollen ("protocol stack")
    • vgl. ook stapeling van coderingen
  • protocol op één draad (of ander gemeenschappelijk medium)
    • punt-naar-punt (twee agents);
      • ACK
    • bus (meerdere agents; adressering)
    • vgl. ethernet; WiFi
    • internet simulator: code.org
    • collisions; collision detection, collision avoidance
  • bidirectioneel - bijv. UART (Tx en Rx draden)
  • alternating bit protocol (en sliding window)

Andere aspecten van protocollen/communicatie:

  • veiligheid (o.a. tegen afluisteren, maar ook: man in the middle problemen, e.d.)
  • authenticatie

Netwerken

  • waarom netwerken?
    • 1-op-1 verbindingen niet schaalbaar
    • netwerk met multiplexing van verbindingen
    • verbindingen vs. pakketten
  • nodes, verbindingen
  • netwerk-topologie:
    • ring
    • maas (internet)
    • ster (WiFi; bluetooth)
    • (bus)
  • adressering en routering in netwerken

Internet

  • pakket-communicatie (vs. verbinding)
  • "best effort" (vs. betrouwbare communicatie)
  • end-to-end principe
    • bewerkingen voor toepassing in de eindpunten, niet in het netwerk
    • => universeel netwerk
      • "niet alleen multiplexing van gebruikers, ook van toepassingen"
  • adressering in het internet
    • IPV4
    • IPv6
  • routering
  • speciale onderwerpen
    • lokale netwerken
    • subnetwerken
    • router -
  • IP - UDP/TCP - enz. stack
    • UDP/TCP: naast IP-adres, ook poortnr in adres
  • naamgeving; DNS
    • NB: hiërarchie, in een niet-hiërarchisch netwerk
  • authenticatie; gebruik van certificaten
  • internet op grote schaap: wat zijn de grote spelers
    • o.a. rol van Amsterdam Exchange

Internet en security

  • afluisteren van communicatie
  • manipuleren van communicatie
  • man in the middle aanval
  • authenticatie
  • autorisatie
  • encryptie
  • public key encryptie
  • end-to-end encryptie
    • vgl. discussie met "achterdeur" voor overheidsdiensten
    • encryptie voor bankdiensten enz.
  • TLS (SSL); gebruik van certificaten

Web

Web, als (belangrijke) toepassing van het internet.

  • client-server model
  • HTTP(S) protocol
  • HTML documenten
  • URL
    • web-services (en APIs)
    • statische en dynamische webpagina's
      • client-side scripting (JavaScript)
      • server-side scripting (Python, JavaScript (nodejs), PHP, ...)
    • web-apps
  • Web-API's (REST principes)
    • Resources
    • URLs
    • documenten (representaties)
    • HTTP-opdrachten <-> CRUD
    • idempotente opdrachten (GET, PUT, DELETE)
  • push-protocollen (bijv. websockets)
  • webserver

Distributie

  • taakverdeling tussen client (browser) en server;
  • distributie/samenwerking tussen verschillende servers (en diensten)
  • verstoring van de samenwerking (bijv. door communicatieprobleem)
  • veiligheid van de samenwerking (bijv. voorkomen van cross-domain scripting; gebruik van certificaten door browser, TLS)

Internet (en web) of Things

  • IoT-architectuur
  • sensor-nodes/IoT-nodes
  • Pub/Sub protocollen (e.g., MQTT)
    • ook voor "push" berichten
  • invloed van fysische aspecten op IoT-nodes
  • invloed van fysische aspecten van "things" en hun processen
  • ontkoppelen van sensoren en toepassingen
    • o.a. via Pub/Sub

Wiskunde van netwerken

  • aantal mogelijke 1-1 verbindingen in (verbonden) netwerk: O(N^2)
    • bepaalt waarde van het netwerk
    • resultaat: bijna-monopolie van bestaande, grote netwerken
    • o.a. reden om eerst via gratis model aantal gebruikers te vergroten
  • verschillende soorten netwerken
    • "6 degrees of separation" - small world network
  • groei van netwerken
  • kwetsbaarheid van netwerken
  • basisbegrippen
    • node, verbinding
    • (max.) doorsnede (afstand)
    • in- en uitgraad

Communicatie in de natuur