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
Citez vos applis préférées
Parfois même sans s’en rendre compte
Services clefs en main, sans véritable moyen d’action
Vers un profil “utilisateur averti”, à minima (avant d’être un ingénieur)
Liaison
Équipements
Machines
Protocoles
Adresses
Normes
Inter-net: inter networking
Différents niveaux organisation
Vocabulaire
Exécute du code, sur quelles machines ?
Où dans le réseau ?
Qui fait tourner (responsable) ces applications ?
Comment on programme une application communicante ?
II – Architecture d’Internet
a) Les acteurs
b) L’interconnexion
Fournisseurs de contenus
Fournisseur d’accès Internet
Acteurs endossant plusieurs rôles
Opérateurs cœur de réseau
Organismes de normalisations et standardisation
Gestion et coordination (et pas décideurs…) ICANN IANA
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
Décide avec qui il s’interconnecte
Peering
Transit
Hiérarchie des AS
III – Fonctionnement d’internet
a) Paquets
b) Protocoles
c) Couches réseau
d) Adresses
e) Routage
f) Transport
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
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
« 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:
Sur la liaison, dans les fils
Passer d’une liaison à une autre au travers d’un nœud intermédiaire
Différents niveaux de services
Différentes applications et usages
Machines terminales
Machines intermédiaires
routeurs: réseau
switch: liaison
hub: physique
AP Wifi: liaison (ou +)
proxy: application
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
Taille: 32 bits
Classes avec masques standards (legacy)
Diffusion multicast, à un n° groupe
Diffusion broadcast, à tout le réseau local
Configuration
à la main…
dynamiquement auprès d’un serveur DHCP
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
Taille: 128 bits
Préfix en notation CIDR
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
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
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
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
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
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
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>
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
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:
Serveurs
faisant autorité (possèdent l’info, resp. du domaine)
résolveurs (cherchent l’info, fonction cache)
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
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
Choix d’architecture des communications
Impact sur les types de relations
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
API
socket
middleware
Codage des données, sérialisation
Sécurité
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
Terminaison
Données informatiques
types simples (nombre, texte, booléen)
types complexes structurées (tableaux, dictionnaires)
Codage textuel
p = new Point(800, 600);
Machine A
{ "x": 800, "y": 600 }
Réseau
p = new Point(800, 600);
Machine B
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