Principes des réseaux et d’Internet

Bloc Réseaux – Session 1

  • Qu'est-ce qu'Internet, différents points de vue
    Utilisateur - Technique - Application

  • Architecture d'Internet
    Les acteurs - L'interconnexion

  • Fonctionnement d'internet
    Paquets - Protocoles - Couches réseau - Adresses - Routage

  • Application
    Exemples - DNS - Programmation

  • I – Qu’est-ce qu’Internet ?

    • a) Point de vue de l’utilisateur

    • b) Point de vue technique

    • c) Point de vue services & applications

I – Qu’est-ce qu’Internet ?

a) Point de vue de l’utilisateur final – «Happy Eyeballs» – 1/2

Foultitude d’usages au quotidien


  • Citez vos applis préférées

    • Messagerie, divertissement, agenda, information, …
    • Ces applis ont besoin du réseau ?
  • Parfois même sans s’en rendre compte

    • Savez-vous où sont stockées vos photos (local vs. cloud) ? pour chaque appli ?
    • Et vos messages privés, ils passent par où, entre les mains de qui, relayés ou stockés sur des serveurs ?
    • Et le bon vieux téléphone ? ça vous parle: SIP VoIP VoLTE RCS…?

I – Qu’est-ce qu’Internet ?

a) Point de vue de l’utilisateur final – «Happy Eyeballs» – 2/2

Du «bloatware cloud», pour votre bien…


  • Services clefs en main, sans véritable moyen d’action

    • Appli pré-installées, pour améliorer l’expérience utilisateur, que l’on utilise tel-quel
    • Vos applis ne feraient-elles pas d’autres choses ?
      est-ce qu’elles ne communiqueraient pas avec d’autres ? et quoi ? (cf. Exodus Privacy)
  • Vers un profil “utilisateur averti”, à minima (avant d’être un ingénieur)

    • Savez-vous configurer vos applis pour accéder à votre agenda CalDAV, vos emails IMAP/SMTP ?
    • Que se passe-t-il lorsque vous faites un partage de connexion ?
    • Avez-vous le réflexe de vous documenter ?

I – Qu’est-ce qu’Internet ?

b) Point de vue technique – 1/3

Du matériel physique

  • Liaison

    • câbles radio fibre
  • Équipements

    • switchs routeurs
  • Machines

    • terminales, serveurs
    • “there is no cloud, just someone else computer” 😉

I – Qu’est-ce qu’Internet ?

b) Point de vue technique – 2/3

Des spécifications

  • Protocoles

    • trouver des façons de résoudre les problèmes, parler le même langage, se comprendre
  • Adresses

    • retrouver l’autre, désigner son correspondant de manière non ambigüe
  • Normes

    • écrire tout ça noir sur blanc, aussi précisément que possible

I – Qu’est-ce qu’Internet ?

b) Point de vue technique – 3/3

Principe d’interconnexion

  • Inter-net: inter networking

    • interconnexion de plusieurs réseaux
    • on se met d’accord sur les mêmes protocoles, l’espace d’adressage, les normes
  • Différents niveaux organisation

    • réseau d’entreprise, d’opérateurs, nationaux, internationaux, particuliers
  • Vocabulaire

    • “internet” = le protocole, “Internet” = le réseau mondial
    • (et Internet ≠ Web, cf. chapitre sur les applications)

I – Qu’est-ce qu’Internet ?

c) Point de vue services & applications

Du code !

  • Exécute du code, sur quelles machines ?

    • sur des serveurs, sur les terminaux des utilisateurs
  • Où dans le réseau ?

    • en bordure, dans votre poche, dans des datacenters
    • pas dans le cœur du réseau! ( ≠ ☎ )
  • Qui fait tourner (responsable) ces applications ?

    • le prestataire qui a loué un serveur dans un datacenter
    • l’utilisateur qui lance l’application (ou qui s’exécute d’elle-même en arrière-plan)
  • Comment on programme une application communicante ?

    • en utilisant des API de programmation…
  • II – Architecture d’Internet

    • a) Les acteurs

    • b) L’interconnexion

II – Architecture d’Internet

a) Des acteurs multiples – 1/2

Connus du grand public…

  • Fournisseurs de contenus

    • Produire collecter fournir des contenus, des services, applications métiers
    • Infrastructures: datacenters, CDN
    • Les GAFAM, entre autres
  • Fournisseur d’accès Internet

    • Aux particuliers, aux entreprises
  • Acteurs endossant plusieurs rôles

    • Contenus + datacenters + réseau + énergie
    • Amazon Google Akamai Orange …

II – Architecture d’Internet

a) Des acteurs multiples – 2/2

… et les autres

  • Opérateurs cœur de réseau

    • Tirent des câbles
    • Métropolitains, régionaux, nationaux, intercontinentaux
    • Interconnectés entre eux
  • Organismes de normalisations et standardisation

    • IEEE: consortium d’industriels, électronique
    • IETF: groupes de travail, protocoles, ouverts, RFC
  • Gestion et coordination (et pas décideurs…) ICANN IANA

    • Noms de domaines, racine, top levels, délège (eg. afnic)
    • Blocs d’adresses IP, numéros AS, délège RIRs
    • Registres divers pour des protocoles (unicité de n°)

II – Architecture d’Internet

b) S’interconnecter – 1/2

Un «Autonomous System»

  • Organisation qui gère son propre réseau de manière autonome

  • Possède un numéro d’AS et un bloc d’adresses IP obtenu auprès d’un RIR

    • Regional Internet Registry, délégation de l’IANA
    • Sur chaque continent: AfriNIC APNIC ARIN LACNIC RIPE-NCC
    • Tient à jour des registres de ressources (adresses, numéro d’AS), ou délègue à des LIR
  • Décide avec qui il s’interconnecte

    • Annonce aux autres AS les routes vers les réseaux et utilisateurs qu’il dessert
    • Note: Particuliers et entreprises ne sont pas des AS (en général), mais s’y interconnectent

Internet = AS

II – Architecture d’Internet

b) S’interconnecter – 2/2

Interconnexion entre AS

  • Peering

    • Raccordement en direct entre AS
    • Dans les locaux techniques de l’un ou l’autre
    • Dans les locaux d’un tiers (p.ex. datacenter, ou un Internet Exchange Point)
  • Transit

    • Prestation d’un opérateur pour acheminer le trafic entre deux autres
  • Hiérarchie des AS

    • Tier-1: que du peering entre eux
    • Tier-2: peering + transit
    • Tier-3: que du transit, plutôt avec Tier-2
  • III – Fonctionnement d’internet

    • a) Paquets

    • b) Protocoles

    • c) Couches réseau

    • d) Adresses

    • e) Routage

    • f) Transport

III – Fonctionnement d’internet

a) Des paquets – 1/2

Commutation circuits   (pour mémoire)

  • Comme le bon vieux téléphone

  • Construction préalable d’un chemin dans le réseau

  • Les commutateurs doivent connaître tout le réseau (presque)

  • Terminaux simples

  • Long à construire, mais délais courts et stables à utiliser

  • En cas de coupure, tout recommencer

III – Fonctionnement d’internet

a) Des paquets – 2/2

Commutation paquets

  • Comme les lettres à la poste, comme internet

  • Information découpée en petits bouts: paquets

  • Paquets munis d’une étiquette (adresses de destination, et source)

  • Chaque routeur regarde l’étiquette et prend sa décision

  • Les routeurs ne connaissent que leurs voisins (simples)

  • Les terminaux embarquent la complexité

  • Délais variables, désordonnancement possible

  • En cas de problème, reroutage naturel, plusieurs chemins

  • Les terminaux peuvent avoir plusieurs conversations à la fois

III – Fonctionnement d’internet

b) Des protocoles – 1/2

Notion de protocole

« ensemble de règles et conventions qui facilitent une communication ou des interactions sans faire directement partie du sujet de la communication elle-même » Wikipedia

  • Se mettre d’accord sur une façon de résoudre des problèmes

  • P.ex.: coder les données, détecter les erreurs, gérer les pertes, le désordonnancement, la congestion, établir une connexion, etc.

  • Implique:

    • de l’information en plus transportée dans les messages
    • de l’information à mémoriser chez les participants
    • des (re)actions en fonction des événements

III – Fonctionnement d’internet

b) Des protocoles – 2/2

Différents niveaux de problèmes

  • Sur la liaison, dans les fils

    • Coder des bits (courant fréquence couleur etc.), accès multiples au medium, détecter les erreurs
  • Passer d’une liaison à une autre au travers d’un nœud intermédiaire

    • Des adresses globales, répéter les paquets de l’autre côté
  • Différents niveaux de services

    • Avec ou sans connexion, retransmissions…
  • Différentes applications et usages

    • Fichiers, messages, voix, vidéo…

🤔 Séparer les problèmes ! 😏👆

III – Fonctionnement d’internet

c) Organisation en couches - 1/5

Modèle conceptuel OSI (Open Systems Interconnection)


  • Abstraction en couches – chacune:

    • résout des problèmes à son niveau – protocoles
    • offre des services à la couche N+1
    • utilise des services de la couche N-1
    • parle à son homologue distant
  • Définit 7 couches avec des rôles précis

    • physique, liaison, réseau, transport, session, présentation, application

III – Fonctionnement d’internet

c) Organisation en couches - 2/5

Les 7 couches du modèle OSI

  • 7 – application: usage
    • HTTP IMAP SMTP DNS SSH NFS XMPP
  • 6 – présentation: mise en forme, codage des données
    • Json XML CBOR ASN.1 texte
  • 5 – session: transaction, synchronisation, authentification
    • BEEP SIP cookies web
  • 4 – transport: contrôle de bout en bout
    • TCP UDP, QUIC MPTCP DCCP SCTP
  • 3 – réseau: d’un fil à l’autre, nœuds intermédiaires
    • IP, compléments (ICMP), protocoles de routage (OSPF BGP)
  • 2 – liaison: entre voisins sur le fil
    • Ethernet WiFi FTTH
  • 1 – physique: bits “sur les fils”
    • électrique radio fibre

III – Fonctionnement d’internet

c) Organisation en couches - 3/5

Principe d’encapsulation

  • Chaque couche

    • ajoute des données de contrôle
    • … aux données utiles
    • c’est l’entête

  • Cet entête est nécessaire

    • on peut difficilement faire sans…

      • tentatives de ‘‘cross-layer’’
      • ou de compression d’entêtes
      • mais pour des contextes très particuliers

III – Fonctionnement d’internet

c) Organisation en couches - 4/5

Où sont les couches OSI ?

  • Machines terminales

    • les 7 couches
  • Machines intermédiaires

    • routeurs: réseau

    • switch: liaison

    • hub: physique

    • AP Wifi: liaison (ou +)

    • proxy: application

III – Fonctionnement d’internet

c) Organisation en couches - 5/5

Modèle OSI et TCP/IP

  • OSI

    • Modèle théorique

    • Aide à la compréhension, à la conception

  • TCP/IP

    • Modèle concret

    • Agrège les couches hautes: application

    • Agrège les couches physique et liaison

    • Respecte ‘‘presque’’ la séparation des couches

III – Fonctionnement d’internet

d) Les adresses – 1/5

Principes généraux

  • Adresse d’un hôte: désigner son correspondant

    • Unicité (cf. registres RIR)

    • Numéro, dans les paquets, consulté par les routeurs

  • Adresse d’un réseau: groupe d’hôtes au même “endroit”

    • Repérer ses voisins sur le fil (envoyer directement)

    • Nécessaire pour des règles de routage

    • Solution:

      • distinguer dans l’adresse partie réseau et partie hôte

      • masque binaire (obsolète) eg. IP 128.11.3.31 mask 255.255.255.0

      • préfix CIDR (nombre de bits de poids fort) eg. 128.11.3.31/24

III – Fonctionnement d’internet

d) Les adresses – 2/5

IPv4    1983  …

  • Taille: 32 bits

    • Notation décimale pointée
      eg. 128.11.3.31
  • Classes avec masques standards (legacy)

    • Classe A /8 – Classe B /16 – Classe C /24
  • Diffusion multicast, à un n° groupe

    • Classe D – 224.0.0.0 à 239.255.255.255
  • Diffusion broadcast, à tout le réseau local

    • 255.255.255.255, ou suffix à 255
      eg.128.11.3.255
  • Configuration

    • à la main…

    • dynamiquement auprès d’un serveur DHCP

III – Fonctionnement d’internet

d) Les adresses – 3/5

… IPv4

  • Addresse spéciale localhost, soi-même

    • Interface virtuelle loopback

    • 127.0.0.1

  • Addresses privées

    • Classe A: 10.0.0.0 à 10.255.255.255
      Classe B: 172.16.0.0 à 172.16.255.255
      Classe C: 192.168.0.0 à 192.168.255.255

    • Non routées dans Internet
      sauf Network Address Translation

  • Pénurie en février 2011 (IANA & RIR)

    • Récupération de blocs alloués mais inutilisés

    • Revente

    • NAT, Carrier Grade NAT

    • … IPv6 !

III – Fonctionnement d’internet

d) Les adresses – 4/5

IPv6    1995  …

  • Taille: 128 bits

    • Notation hexa
      2001:DB8:0:0:8:800:200C:417A
      2001:DB8::8:800:200C:417A
  • Préfix en notation CIDR

    • 2001:0DB8:0:CD30::/60
  • Diffusion multicast

    • FF00::/8

    • plus de broadcast (ouf!)

  • Configuration

    • à la main: heu… non merci

    • après l’annonce du préfix par le routeur

    • auprès d’un serveur DHCPv6

III – Fonctionnement d’internet

d) Les adresses – 5/5

… IPv6

  • Adresse localhost

    • ::1/128
  • Scope des adresses (portée)

    • toute interface a au moins 2 adresses

    • link-local: uniquement avec les voisins

      • FE80::/10
      • auto configuration
    • global: sur Internet

  • Adresses privées: non

    • Chacun est joignable, enfin !
      (sauf firewall, évidemment)

III – Fonctionnement d’internet

e) Le routage des paquets – 1/2

Routage IP
→ couche 3 réseau

  • Passer d’une liaison à une autre

  • Traverser un routeur

  • Des adresses globales
    de la couche réseau

  • Principe de routage par saut
    hop-by-hop

  • Tout le monde de couche 3 route
    routeurs, et machines terminales


III – Fonctionnement d’internet

e) Le routage des paquets – 2/2

Routeurs


  • Calculent des chemins – routing

    • configuration par l’administrateur

    • connaissent leurs propres liaisons et voisins

    • discutent entre eux

      • entre AS: protocole BGP

      • à l’intérieur d’un AS: OSPF iBGP …

    • se construisent des tables de routage

      • destination - gateway - poids

      • dynamiquement

    • essaient d’agréger si possible

  • Renvoie les paquets reçus – fowarding

    • vers le bon routeur suivant

    • d’après l’adresse de destination du paquet

    • en appliquant les tables de routage

      • choisit le préfixe le plus long (précis)

      • si correspondance de destination,
        renvoie à la gateway indiquée

III – Fonctionnement d’internet

f) Le transport de l’information – 1/3

Transport → couche 4

  • Contrôle de bout en bout, entre machines terminales

  • La dernière des couches basses

    • Interface avec les applications

    • Offre une abstraction du réseau

  • Différents niveaux de services

    • Flux d’octets vs. Messages

    • Connecté (☏) vs. Non-connecté (🖂 )

    • Fiabilité, retransmission sur erreur ou non

    • Contrôle de flux, de congestion, ou non

    • Multi-canaux, multi-chemins …

  • Les grands classiques

    • TCP: flux d’octets, connecté, fiabilité, ordonnancement

    • UDP: datagramme (message), checksum optionnel

  • Intermédiaires entre TCP et UDP

    • SCTP: comme TCP, mais flux de messages et multi-canaux

    • DCCP: comme UDP mais connecté, contrôle de congestion

  • Les nouveaux

    • MPTCP: le TCP mais en multi-chemins

    • QUIC: comme TCP mais sécurisé et multi-canaux

III – Fonctionnement d’internet

f) Le transport de l’information – 2/3

TCP – Transmission Control Protocol

  • Flux d’octets bidirectionnel

    • sait quand ça commence, pas quand ça finit

    • pas de synchro du récepteur sur l’émetteur

  • Connexion: sait qu’il y a quelqu’un en face

  • Fiabilité: retransmission en cas d’erreur; des acquittements

  • Ordonnancement: remet les paquets dans l’ordre

  • Contrôle de flux: ralentit si le récepteur sature

  • Contrôle de congestion: ralentit si détecte un chemin encombré

  • Numéro de Port: lien avec l’application


III – Fonctionnement d’internet

f) Le transport de l’information – 3/3

UDP – User Datagram Protocol

  • Orienté Messages

    • avec début et fin

    • synchronisation du récepteur sur l’émetteur

    • adapté au multicast

  • Pas de contrôle d’aucune sorte

    • Sans connexion: peu importe si mauvais destinataire, envoie immédiat

    • Sans fiabilité: peu importe s’il y a quelques pertes, n’attend pas les retransmissions

    • Sans ordonnancement: peu importe si arrive dans le désordre, n’attend pas le bon numéro

    • Pas de contrôle de flux ni de congestion

    • stateless: pas d’automate ni d’état à gérer, léger

  • IV – Faire des applications communicantes

    • a) Quelques exemples

    • b) Le service DNS

    • c) Concevoir, programmer

IV – Applications

a) Quelques exemples – 1/2

Web – HTTP 1.x

  • Transport: TCP, port 80 (HTTPS 443)

  • Présentation: texte

  • Mode client-serveur, requête-réponse

GET /ueinfo-fise1a/ HTTP/1.1
Host: hub.imt-atlantique.fr
User-Agent: Mozilla/5.0 Gecko/20100101 Firefox/128.0
Accept: text/html,image/webp,image/png,image/svg+xml,*/*;q=0.8
Accept-Language: fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br, zstd
DNT: 1
Connection: keep-alive
Cookie: _wayfIMT_saml_sp=S0lULUVUMDE%3D
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Priority: u=0, i
HTTP/1.1 200 OK
Date: Fri, 01 Nov 2024 16:36:44 GMT
Server: Apache/2.4.61 (Debian)
Last-Modified: Fri, 25 Oct 2024 11:43:03 GMT
ETag: "b1ab-6254b9f245fc0-gzip"
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 6342
Content-Type: text/html
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    ../..
    </head>
  <body lang="en" dir="ltr" itemscope itemtype="http://schema.org/Article">

  ../..

  </body>
</html>

IV – Applications

a) Quelques exemples – 2/2

Envoie d’email – SMTP

  • Transport: TCP, port 25 (SMTPS 587)

  • Présentation: texte

  • Mode client-serveur, dialogue

←  220 serveur.domain.tld ESMTP Sendmail
 → EHLO client.domain.tld
←  250-serveur.domain.tld Hello client.domain.tld, pleased to meet you
←  250-ENHANCEDSTATUSCODES
←  250-PIPELINING
←  250-EXPN
←  250-VERB
←  250-8BITMIME
←  250-SIZE
←  250-DSN
←  250-ETRN
←  250-AUTH DIGEST-MD5 CRAM-MD5
←  250-DELIVERBY
←  250 HELP
 → MAIL FROM: user1@domain.tld
←  250 2.1.0 user1@domain.tld... Sender ok
 → RCPT TO: user2@domain.tld
←  250 2.1.5 user2@domain.tld... Recipient ok
 → DATA
←  354 Enter mail, end with "." on a line by itself.
 → From: user1@un-endroit.fr
 → To: user2@ailleur.eu
 → Subject: Sujet du message
 → 
 → Corps du message...
 → .
←  250 2.0.0 k1QGh9xB020668 Message accepted for delivery
 → QUIT

IV – Applications

b) Le service DNS, bien pratique – 1/3

Domain Name System

  • Traduction de nom en adresse

  • Réciproquement (résolution inverse)

  • Et bien d’autres choses

  • Point de départ de beaucoup d’applications

    • Indispensable config réseau de base:

      • adresse + gateway + serveur DNS
  • Serveurs

    • faisant autorité (possèdent l’info, resp. du domaine)

    • résolveurs (cherchent l’info, fonction cache)


IV – Applications

b) Le service DNS, bien pratique – 2/3

DNS – Annuaire hiérarchique

  • La racine ‘.’ et les Top Level Domains (TLD)

    • Generic TLD   .com .net .org …

    • Country code TLD   .fr .us …

    • Domaine ARPA, résolutions inverses et +

    • Servi par 13 serveurs racine

      • bien connu de tous les autres serveurs

      • sous la responsabilité de l’ICANN

      • mais gérés par des consortiums délégués


  • Arborescence

    • Registre des TLD maintenu par l’IANA

    • Puis délégations par sous-domaines

    • Arbre DNS sans rapport avec la topologie du réseau

IV – Applications

b) Le service DNS, bien pratique – 3/3

… DNS

  • Responsable d’un domaine:

    • Fait confiance au domaine parent

    • Gère les noms de son domaine

    • Met en place un serveur DNS

      • faisant autorité dans son domaine

      • a les informations effectives

      • connu du parent et référencé

  • Sécurité DNSSEC

    • signe les données, garantie l’origine

    • clef publique dans le DNS

IV – Applications

c) Concevoir, programmer – 1/4

Concevoir des applications communicantes

Chouches basses déjà gérées...

  • Choix d’architecture des communications

    • clients-serveur   pair-à-pair   bus
  • Impact sur les types de relations

    • one-to-one   many-to-one   many-to-many
  • Différents paradigmes de comportement

    • Message Passing: j’envoie un message, l’autre en fait ce qu’il veut, il renverra un message plus tard, ou pas

    • Control Command: je surveille ce que l’autre fait et je lui donne des commandes, il obéit

    • Remote Procedure Call: j’invoque une procédure à distance en passant des paramètres et j’attends la réponse

IV – Applications

c) Concevoir, programmer – 2/4

Programmer des applications communicantes

  • API

    • socket

      • invoque des services de l’OS
    • middleware

      • librairies utilisateur
      • implémente des paradigmes de communication
  • Codage des données, sérialisation

    • text, binaire, structuré (XML Json CBOR …)

  • Sécurité

    • TLS, une autre histoire…

IV – Applications

c) Concevoir, programmer – 3/4

Focus API Socket

  • Création

    • IPv4 IPv6

    • Protocole TCP UDP autre + port

  • Si mode connecté

    • Côté serveur: attend, puis accepte les connexions

    • Côté client: initie la connexion

  • Utilisation

    • Lectures / Ecritures
  • Terminaison

IV – Applications

c) Concevoir, programmer – 4/4

Focus sérialisation Json

  • Données informatiques

    • types simples (nombre, texte, booléen)

    • types complexes structurées (tableaux, dictionnaires)

  • Codage textuel

    • sur les fils: suite de caractères
p = new Point(800, 600);

Machine A

{ "x": 800, "y": 600 }

Réseau

p = new Point(800, 600);

Machine B

À retenir

  • Commutation de paquets

  • Notion de protocole

  • Les 7 couches OSI

  • Encapsulation

  • Addresses IPv4 IPv6

  • Routage hop-by-hop

  • Transport TCP UDP …

  • DNS

  • Clients-serveur …

  • API Socket

  • Sérialisation