NET :
Réseaux

Sommaire

  1. Histoires de réseau
  2. Brève histoire de l'informatique
  3. Pré-requis
  4. Le modèle OSI
  5. Couche Physique
  6. Couche Liaison
  7. Couche Réseau
  8. Couche Transport
  9. Couche Application
  10. Plus de questions ?

Il y a bien longtemps …

Communiquer

Les hommes ont dominé le règne animal par leur adaptivité mais aussi par leur faculté de communiquer.

Localement de pair à pair

Nos braves hommes des cavernes se sont réunis en petits groupes où ils communiquaient entre eux pour organiser leur survie.

Les communautés se sont agregées

Ils ont formé de nombreux villages éparses et autonomes.

De la division à l'union

De l'avantage de la collaboration

Le commerce et l'argent ont été inventés afin d'améliorer le confort et d'améliorer la vie du village par le biais de commerçants itinérants entre les villages.

À sa nécessité

Les villages se transforment en villes ce qui induit de nouveaux besoins sanitaires, alimentaires, militaires … Une ville ne peut plus être autonome désormais. Les échanges internes sont plus complexes et élaborés, la politique est inventée, l'écriture se démocratise auprès de l'élite, de nombreuses formes d'art sont inventées.

Mais la communication entre les villes suit le même chemin. On trouve des messagers pour la haute société et l'administration mais les commerçants ont également un rôle identique.

Le nerf de la guerre

La vie se déroule désormais à une échelle régionale voire nationale. Les guerres et les alliances se jouent à grande échelle et nécessitent plus que jamais de pouvoir communiquer plus vite et de façon plus fiable.

Les seigneurs de guerre possèdent des pigeons voyageurs permettant de parcourir de longues distances en peu de temps et discrètement. Les messages sont scellés pour attester de l'identité de l'émetteur.

De l'union à la diffusion

Les religions gagnent en influence par la diffusion de leur message d'abord par les lieux de cultes puis progressivement par la transcription écrite démultipliée par l'invention de l'imprimerie.

Un pouvoir grandissant

L'imprimerie a permis d'industrialiser la connaissance. C'est devenu une arme redoutable et redoutée. Tout le monde communique continuellement désormais. L'éducation a également joué un grand rôle en permettant à tout un chacun de pouvoir lire/écrire afin de communiquer.

Et les réseaux ?

C'est à peu près la même voie qui a été suivie. Une ou deux machines ont été mises en réseau local. Il a ensuite été nécessaire de les relier entres elles par des liaisons ponctuelles. Puis les réseaux locaux sont devenus plus efficaces et permanents. Les liaisons inter-réseaux également. Et nous voilà maintenant avec un Internet omniprésent et omnipotent.

Une histoire plus orientée télécommunications

Les télécommunications ont commencé avec les télégraphes qui permettent de transmettre du texte à distance. À partir du 18e siècle, les premiers systèmes étaient très rudimentaires.

Il s'agit de systèmes optiques. Les postes sont donc situés sur des hauteurs et bougent des panneaux de bois ou des drapeaux qu'un autre poste observe par le biais d'une lunette.

C'était des initiatives isolées par-ci par-là encore à cette époque. Ce n'étaient pas des réseaux à proprement parler.

Le télégraphe de Claude Chappe

Lors de la Révolution Française, l'État Français déploie un réseau national de ce système.

C'est le premier réseau de télécommunication de cette envergure.

Il se composera de plusieurs lignes à travers la France.

Photo par Spiterman

Un réseau national

Il a été déployé et utilisé pendant environ un demi siècle à partir de la Révolution Française. À son apogée, le réseau parcourait jusqu'à 5000 km. Les tours étaient éloignées d'une vingtaine de kilomètres.

Elles étaient équipées de jumelles, d'un local de manipulation et d'un mât. Celui-ci composé de trois parties : le régulateur ( la partie horizontale ) et deux indicateurs ( aux extrémités du régulateur ).

Et même un peu plus

Le réseau sera même prolongé jusqu'à Amsterdam, Bruxelles et Venise.

Une influence encore perceptible

Bien qu'à première vue archaïque le système possédait des mécanismes que l'on retrouve encore aujourd'hui :

Headers et Flags

Le système distinguait les informations propres au fonctionnement ( la destination, l'urgence du message, l'indisponibilité de la tour, …) du message utile.

Un log

Les messages étaient consignés par écrit lors de leur réception. On peut assimiler ça aux logs modernes.

Un codage

Il faut bien évidemment donner un sens au mât. C'est un problème récurrent de la communication de trouver un langage commun et convoyable.

Un système efficace mais pas trop

Le système fonctionne plutôt bien en étant près de deux fois plus rapide qu'une transmission par cheval. Cependant il est très dépendant des conditions climatiques et ne fonctionne que de jour.

Les besoins en main d'œuvre sont colossaux également. Et sa mise en place très longue et chère.

Une fée pour le mettre au placard

Les nombreux progrès dans le domaine de l'électricité vont permettre la création de nouveaux systèmes de télégraphies plus ou moins évolués. Le grand gagnant sera Samuel Morse.

Télégraphe électrique

Samuel Morse obtiendra un brevet en 1840 pour son système télégraphique célèbre encore aujourd'hui pour son codage à base de points et traits transposables en impulsions électriques courtes ou longues.

Ce sera une adoption internationale avec des réseaux de plus en plus grands.

Au-delà des mers et océans

Alors que Wermer von Siemens met au point un procédé pour isoler des câbles électriques avec de la gutta-percha, la première liaison transmanche sera créée en 18O1 et la première liaison transatlantique permanente le sera en 1866.

Le réseau devient mondial, et l'on créé donc l'UTI ( l'union télégraphique Internationale ) qui deviendra l'UIT ( l'union internationale des télécommunications ).

Manipulateur morse - photo par gynti_46

Fonctionnement

Le principe est simple puisqu'il s'agit d'ouvrir et fermer un circuit électrique d'un côté et de regarder l'état du circuit électrique de l'autre.

Les opérateurs actionnent donc un manipulateur et écoutent le signal reçu.

C'est un signal binaire ouvert ou fermé. Le rapport signal/bruit est donc très élevé ce qui permet de le transporter sur de longues distances sans trop de soucis.

Codes

Des codes ont été créés afin d'accélérer les communications mais également pour uniformiser les conversations les plus usuelles.

Ça permet en seulement 3 lettres d'envoyer des phrases courantes (généralement des questions). Il existe le code Q pour les transmissions civiles et le code Z pour les transmissions militaires.

Une évolution perpétuelle

La radiotransmission

Le télégraphe électrique s'est très vite adapté à la radio transmission en devenant le mode de transport privilégié du télégraphe.

Une couche d'automatisation

Grâce aux progrès de l'électromécanique, les télégraphes s'équipent de téléscripteurs (ou tty) qui permettent d'écrire et de recevoir des messages de manière automatisée.

Puis vint le télex

À la croisée entre le téléphone et le télégraphe il y a le télex. Ce dernier utilise le réseau téléphonique et les techniques des télégraphes pour transmettre du texte à la vitesse de 45 bit/s , ce qui, à son lancement en Allemagne dans les années 30 est extraordinaire.

Il survit encore aujourd'hui dans certaines administrations et dans le secteur militaire du fait de sa fiabilité et de son coût réduit mais ses jours sont comptés.

Le téléphone

Il n'a pas d'inventeur précis mais plutôt une foule d'inventeurs gravitant autour du sujet. Il s'agit d'une des premières guerres concernant les brevets.

Toujours est-il que son lancement commercial a lieu en 1877 aux États-Unis et en 1879 en France.

Pour fonctionner il a fallu construire un réseau reliant chaque abonné. Pour chaque ligne téléphonique il faut une paire de fils de cuivre torsadée entre la prise et le NRA.

Les demoiselles du téléphone

Les premiers téléphones n'avaient pas de touches. Il fallait donc décrocher le téléphone ce qui envoie un signal à l'opératrice qui se trouve dans le central. On demande donc à cette dernière de nous mettre en relation avec son correspondant.

Si le destinataire est dans le même central, l'opératrice effectue un branchement direct.

Sinon elle contacte une opératrice du central de destination.

Et la seconde opératrice met en relation le destinataire.

L'autocommutateur public

Les commutateurs automatiques seront installés réellement en France à partir des années 20. Cependant on trouvera des opératrices jusque dans les années 70 dans certains centraux de campagnes.

Numérisation du réseau

À la fin des années 70, on note l'arrivée progressive de la téléphonie numérique avec la création du RNIS ( ou ISDN ). Il s'agit de ligne entièrement numérique de bout-en-bout. Elle utilise les mêmes lignes téléphonique que la téléphonie analogique ( RTC ) mais permet des services supplémentaires.

Le minitel

Cet ovni français débarque dans les années 80 pour apporter la modernité dans tous les foyers français. Il permettra d'accéder à des services divers via un terminal "bête" sur une ligne analogique. Il sera une réussite uniquement en France où il fonctionnera jusqu'en 2012.

C'était un service gratuit où le terminal était fourni gracieusement. Derrière tout cela, la durée de connexion était payante et variait en fonction des services consultés.

Le minitel reposait sur le réseau de Transpac, une filiale de France Télécom chargée de mettre en place un réseau X25.

Démo Minitel 5

X25

Il s'agit de l'un des plus anciens protocoles de commutation de paquet. Son fonctionnement est complexe. Il correspond plus ou moins aux trois premières couches du modèle OSI.

Il a été supplanté par IP pour plusieurs raisons. Il était trop complexe, et sous l'égide d'un seul opérateur. IP lui est ouvert et plus simple donc moins cher.

Il est encore utilisé dans de vieux systèmes bancaires ou téléphoniques puisqu'il peut être encapsulé dans de l'IP.

Création d'un standard

Avant de parler d'IP réellement je vais aborder la normalisation d'un protocole.

L'UIT

Historiquement l'UIT se réunissait tous les quatres ans pour débattre des nouveaux protocoles et les définir clairement. En résultait une Recommandation. Aux constructeurs ensuite de s'y plier.

Accélération

Les progrès des constructeurs étant de plus en plus rapides ceux-ci développaient de nouvelles méthodes non standardisées plus vite que ce que peut traiter l'UIT. Il en résulte des incompatibilités. Des organisations se sont créées afin d'établir de nouveaux standards de manières plus rapides.

I.E.T.F.

L'Internet Engineering Task Force naît en 1986 et a pour but de normaliser les protocoles de l'Internet. Il est désormais l'éditeur des RFC ( normes de l'Internet ). Il s'agit d'un groupe ouvert international de chercheurs. Tout le monde peut y poster une RFC.

R.F.C.

Il s'agit des normes de l'Internet. Elles font foi pour l'implémentation de protocoles. Contrairement à ce que l'on pourrait penser les RFC sont figées, cependant une nouvelle RFC peut déprécier une précédente. À un certain niveau c'est un bon endroit pour trouver de la doc en cas de RTFM.

Pourquoi cet intermède ?

Parceque.

Les télécommunications ont été jusqu'à présent influencées par l'UIT ou des initiatives gouvernementales. Alors que maintenant il s'agit de consortiums non gouvernementaux qui standardisent et établissent les nouvelles normes modernes.
L'IETF est désormais l'organisme ayant autorité pour l'Internet et ses protocoles.

Internet Protocol

IPv4

Je n'aborderai pas les trois premières versions du protocole. IPv4 est donc une RFC postée par l'IETF. RFC 791.

Plus de détails ?

C'est dur mais je n'aborderai pas IP dès maintenant mais plus tard. Retenez que ça s'est fait en 1981.

Pause

Photo par Martin Deutsch

Tant qu'à digresser : digressons !

Faisons un ptit tour sur l'histoire non plus des télécoms mais de l'informatique.

De la grosse mécanique

L'informatique a commencé à exister avec la mécanographie. Des rouages, des engrenages et des cartes perforées formaient de très complexes machines permettant d'effectuer des calculs rudimentaires. C'est donc peu avant le début du vingtième siècle que l'informatique va commencer ses débuts. C'est d'ailleurs là que débutera IBM ainsi que BULL.

IBM a d'ailleurs collaboré avec les nazis pour le recensements des « peuples impurs ».

Il n'existe quasiment plus de machines de cette époque malheureusement.

Le transistor

Inventé en 1947 aux Bell Labs, c'est ce composant qui sera à l'origine de l'informatique moderne. Il remplace les tubes à vide. Il est beaucoup plus petit, rapide et fiable que ces derniers. Il sera miniaturisé au fil des décennies pour atteindre les 22nm.

Ce composant est l'élément de base pour créer les portes logiques nécessaires au fonctionnement de l'informatique.

En le miniaturisant, on peut en mettre de plus en plus dans un espace de plus en plus réduit tout en consommant moins.

L'ordinateur institutionnel

195*

Les ordinateurs étaient gigantesques, ils occupaient une pièce entière et nécessitaient tout un personnel qualifié pour fonctionner. Ils n'étaient pas programmables comme actuellement : pour leur faire éxécuter un autre programme, il fallait les recâbler.

Le papier était la principale interface via les cartes perforées. Il n'y avait pas de clavier/souris/écran. Ça n'a pas beaucoup de rapport avec l'informatique telle qu'on la connait.

Le FORTRAN est inventé à cette époque.

L'ordinateur est donc une machine de calcul de traitement par lot. On lui engouffre des cartes perforées, on croise les doigts et il pond des cartes perforées.

ENIAC - Photo par Revolweb

L'ordinateur interactif

Il faudra attendre 1959 pour que le premier ordinateur interactif soit inventé par Digital, le PDP-1. C'est sur cet ordinateur que le premier jeu vidéo ( Space War ) fût créé.
La même année la première machine multi-tâche est créée. Et enfin deux ans plus tard la machine multi-utilisateurs.

Naissance de l'informatique en France

Le mot informatique est inventé par Philippe Dreyfuss en 1962.

Il s'agit toujours d'ordinateurs massifs coûtant des fortunes.

Le milieu des années 60

Le premier modem a vu le jour en 1959 mais il faudra attendre le milieu des années 60 pour que le principe de commutation de paquet commence à voir le jour.

C'est aussi le moment d'une alliance entre les Bell labs, du MIT et de General Electric dans le but de créer une machine capable de tourner 24h/24 gérant de multiples utilisateurs et pouvant effectuer des tâches de fond. Cela aboutira à MULTICS.

En 1965 est créé le premier mini-ordinateur le PDP-8. Celui-ci est donc bien plus petit que les mainframes et également bien moins cher.

La loi de Moore est énoncée en 1965.

ARPANET

Il s'agit du nom de ce qui va se transformer en Internet. Un réseau d'ordinateurs sur tout le territoire américain utilisant la commutation de paquet.

Le but premier était de permettre à l'armée américaine de pouvoir continuer à fonctionner suite à une attaque nucléaire.

Ce réseau est donc opérationnel le 20 Septembre 1969. Ne reliant que des univesités et des bases militaires il grandira petit à petit.

Il utilise le protocole NCP pour fonctionner.

Mother of all demos

Il s'agira d'une présentation de concepts inédits à l'époque tel que la souris, l'interface graphique, le courrier électronique et l'hypertexte.

MULTICS est mort, vive UNIX

On est en 1969, le projet MULTICS prenant trop de temps à aboutir, le Bell Labs se désengage du projet. Dennis Ritchie et Ken Thomson récupère un PDP7 (1964) et décide de créer un système d'exploitation reprenant les concept de multics. Un système de fichiers sous forme d'arboressence. Des processus, la ligne de commande, … Ils adoptèrent toutefois un principe novateur : un écosystème d'outils simples interopérables. Chaque outil ne faisant qu'une tâche simple.

Ce projet se nommera UNIX.

UNIX sera par la suite adapté au PDP11 en 1970. Sur cette machine sera inventé le langage C. Ce dernier servira désormais pour les prochaines versions d'UNIX.

L'email

On est désormais en présence du premier réseau national d'ordinateurs.

En 1972 l'ARPANET va voir arriver l'email. Il deviendra rapidement l'utilisation principale du réseau. Les mailing lists sont inventées peu de temps après. L'archivage, la récupération, le transfert de mails également.

Arpanet commençant à grandir et à monter en charge, de nouvelles problèmatiques de fiabilité se sont posées. Vint Cerf crée alors en 1973 le protocole TCP/IP qui sera alors utilisé encore aujourd'hui.

Le réseau sera scindé en deux en 1980 le milnet d'un côté pour les militaires et le nsfnet de l'autre.

Les internets seront tout d'abords juste des interconnexions de réseaux avant de devenir l'Internet.

Après le mini, le micro

En 1973 le Micral est mis en vente. Il s'agit du premier micro ordinateur.

Photo par Rama - http://en.wikipedia.org/wiki/File:Micral_MGR_Lyon-IMG_9895.JPG

Traf-O-Data → Micro-soft

Bill Gates et Paul Allen changent le nom de leur entreprise en 1975.

Pomme Ordinateurs

Steve Wozniak et Steve Jobs fondent Apple Computers en 1976 et vendent un micro ordinateur qu'ils construisent eux-même.

Unix 6

Unix 6 est vendu à faible prix aux universités pour les mini-ordinateurs. Il est fourni avec son code source.

Informatique personnelle

On est donc maintenant au début de l'informatique personnelle. Les ordinateurs deviennent abordables. Apple, Atari, Commodore, Sinclair et bien d'autres constructeurs vendent des ordinateurs au grand public.

Le grand public commence à s'approprier également le réseau avec la création d'USENET ( User Network ) en 1979. Aussi connu sous le nom de newsgroups, il s'agit de forums sous forme de mails. Propulsé initialement par UUCP ( Unix to Unix Copy Protocol ) sur des stations unix puis plus récemment par NNTP ( Network News Transport Protocol ).

Internet grandissant

En 1984 sera inventé le DNS ( Domain Name Service ). Un an plus tard on estime à 2000 le nombre de machines connectées à Internet et près du triple un an plus tard.

Quelle est la différence entre le Web et Internet ?

Le web, une application de l'Internet

En 1990 sera codé le premier serveur web, ainsi que le premier client web.

En 1992 apparaissent NCSA Mosaic et NCSA httpd. Ces deux logiciels au cours de leur vie deviendront Firefox et Apache.

En 1993 le CERN ( où tout a débuté ), transfère tout dans le domaine public ce qui permettra l'émancipation du web.

logo www
Photo par erisfree

Vous connaissez la suite…

Vraiment ?

La suite

Internet s'est ouvert au grand public à la moitié des années 90, d'abord en connexion RTC jusqu'à 56K.

Puis l'ADSL vers la fin des années 90. On passe à des débits radicalement plus élevés. Internet voit son nombre d'internautes atteindre des sommets. Le web devient incontournables tout comme les emails. C'est toute une nouvelle économie qui émerge avec les fameuses startups.

Dans les années 2000, Internet devient capital pour l'économie mais également pour les États qui se sentent dépassés par le wild wild web, le P2P décolle.

Au début des années 2010, les lois liberticides se suivent alors que la fibre optique autrefois réservé au backbone s'invite chez l'utilisateur final. On atteint des débits proche de ce que l'on retrouvait sur le LAN auparavant. Le cloud, le mobile et les réseaux sociaux deviennent un symbole indispensable pour toute entreprise dans le vent.

Qu'est-ce qu'Internet ?

C'est une interconnexion de réseaux fonctionnant sous le protocole IP et utilisant des applications sur IP. Chacun des réseaux est constitués d'un certains nombres de pairs de natures différentes ( il peut s'agir de station de travail, d'ordinateurs portables, de serveurs, de routeurs, de téléphone portables … ).

Il n'y a pas de notion de hiérarchie entre les pairs d'internet puisque l'identifiant est une adresse IP et que celle-ci peut ne pas être fixée et donc risque d'être partagée. C'est pour cela que l'on parle de Best Effort. Chacun fait de son mieux pour fonctionner.

Chacun peut être client et serveur.

Malheureusement les fournisseurs d'accès Internet ne sont pas tous de cet avis : CGN sans ipv6, CGU abusive, accès/utilisations bridées.

Toutes les routes mènent à Internet

Internet est une interconnexion de réseaux. Il s'agit plus précisément d'une interconnexion de réseaux autonomes ( AS ).

Quand une entreprise devient très grande ou quand celle-ci est opérateur, elle doit disposer d'un numéro d'AS, ainsi que d'un bloc d'IP. Pour communiquer avec le reste du monde elle doit annoncer ses routes ( et donc ses IP ) aux routeurs avec qui elle est interconnectée. Pour cela, on utilise BGP qui est un protocole de routage dynamique.

BGP permet de diffuser les routes de son réseau aux routeurs alentours. On se retrouve donc avec un maillage important. Actuellement le nombre de routes pour joindre tout l'Internet est proche des 500 000.

Bouée de sauvetage

Les unités

1 octet mesure combien de byte ?

Combien de bits dans un octet ?

Qu'est-ce que les bps ?

Qu'est-ce que les Bdps ?

Combien de bps dans un Bdps ?

Les généralités

Qu'est-ce que le débit ?

Qu'est-ce que la latence ?

Qu'est-ce qu'un pair ?

Qu'est-ce que le multiplexage ?

Théorie de réseau

Objectifs de la mise en réseau

Classification des réseaux

Par taille

PAN, LAN, MAN, WAN

Par support

cuivre, fibre optique, wifi, hertzien

Par architecture

Bus, étoile, arbre, maillage, anneau

Les constituants d'un réseau

Les supports

Câble cuivre, Fibre optique, Ondes

Les interconnexions

Hub, switchs, routeurs, AP, multiplexeurs

Les terminaux

Stations de travail, Serveurs, imprimantes, set-top-box

Après le matériel le logiciel

Bon maintenant qu'on sait que pour faire communiquer des ordinateurs il nous faut des terminaux, des interconnexions et des supports. Et que tout cela doit être rangé selon une architecture précise, il nous faut maintenant du logiciel.

C'est là que le gros du boulot commence.

La gestion d'erreurs

Malgré toute la bonne volonté du monde, lorsqu'on transmet des informations il y a toujours des erreurs qui apparaissent dans le signal à un moment ou un autre. Certains média sont plus sensibles que d'autres.

Le taux d'erreur augmente généralement avec la vitesse et la distance pour des raisons électriques : affaiblissement du signal à cause de la résistances, parasitage par induction, …

Il faut donc être capable de détecter ces erreurs. Pour cela on utilise généralement des CRC ou checksums.

En cas d'erreur on peut soit corriger soit réemettre l'information. C'est plus la seconde option qui est privilégiée. Pour éviter de ré-émettre toute l'information, on fractionne l'information en plusieurs morceaux plus petits afin de ne retransmettre que le morceau concerné. Il faut donc adapter la taille des fragments d'information en fonction du taux d'erreurs.

La commutation

De circuit

C'est utilisé en téléphonie et ça l'était aux débuts pour l'informatique.

Il s'agit d'établir un circuit entre les deux pairs communicants au début de la session.

Il est ensuite fixe durant toute la session.

Si le message n'est pas continu en permanence, l'utilisation du réseau est tout de même monopolisé.

Avant de pouvoir émettre des données, il faut attendre que tout le circuit soit établi.

La commutation

De paquet

Les informations à transmettre seront divisées en petits paquets. On envoi ensuite ces différents paquets dans le réseau.

Tous les paquets d'un même message ne sont pas assuré d'emprunter le même chemin sur le réseau.

De ce fait on arrive à se retrouver avec des problèmatiques de pertes de certains paquets ainsi que d'ordonnancements des paquets. Ces problèmatiques sont donc gérées par les éléments du réseau.

De nœud en nœud

En commutation de paquet, s'il l'on doit passer à travers plusieurs nœud, il y a plusieurs méthodes possibles de commuter.

Store & Forward

Chaque nœud attend de recevoir le message complet avant de réemettre les paquets dans la bonne direction.

Il faut donc garder en mémoire les paquets et attendre un certains temps avant que ça ne continu son chemin.

Une érreur de transmission est donc vite repérée au prix d'une latence accrue.

Fragment Free

Le nœud attend de recevoir les 64 premiers octets du messages avant de le renvoyer au nœud suivant.

Cette méthode était utilisé dans le cas de possibilité de collision au niveau de l'entrée du commutateur.

De nœud en nœud

Cut-through

Dans ce mode le nœud renvoi les paquets dès leur réception.

Ce mode est donc plus rapide, nécessite moins de mémoire mais les erreurs ne sont pas détectées.

C'est le mode privilégié actuellement.

Mültiplex

Il s'agit d'un principe important dans les réseaux.

Il s'agit de faire passer plusieurs flux simultannément au même endroit.

On le retrouve à toutes les couches.

Pour cela on utilise des adresses et/ou des identifiants différents pour chaque flux.

Client/Serveur

Découper le problème

Pour mettre en relation deux programmes d'ordinateurs il est nécessaire de répondre à un grand nombre d'éxigences. Afin de simplifier le problème il a été décidé de couper ce travail en plusieurs sous-parties.

Un des découpages les plus connus est le modèle OSI.

La solution sera établie en 7 couches successives.

Ce n'est bien sûr pas immuable mais ce sont des directives plutôt efficaces qui ont fait leurs preuves.

Le modèle OSI

Photo par Da3dalus

Modèle OSI

  1. Physique
  2. Liaison
  3. Réseau
  4. Transport
  5. Session
  6. Présentation
  7. Application

Il est généralement représenté dans l'autre sens.

But et intérets de ce modèle

Il a été pondu en 1984 dans le but de formaliser les réseaux.

Il modularise le réseau en rendant les couches indépendantes afin de permettre une compatibilité et surtout une évolution des réseaux.

Le changement de technologie d'une des couches n'affectent pas les autres couches.

1 — Couche physique

Il s'agit de la couche la plus basse. Elle envoie le signal sur le support.

Il s'agit de modem. Il existe plusieurs protocoles pour assurer le rôle de cette couche :

Il convertit des signaux électriques en informations. C'est donc la partie matérielle de la machine qui gère cela.

2 — Couche Liaison

Cette seconde couche gère la communication entre deux machines reliées directement.

Elle est souvent découpée en deux sous-couches : LLC ( logical link control ) et MAC ( Medium Access Control ).

Les protocoles les plus connus de cette couches sont :

Ce rôle est joué par le driver de la carte réseau.

3 — Couche Réseau

Cette couche établit la connexion de bout-en-bout. ( La couche précédente n'établi une connexion que vers les machines directement reliées ).

Cette couche gère donc le routage mais peut également influer sur la congestion du réseau.

Les protocoles les plus connus de cette couche sont :

Pour cela, c'est l'OS qui entre en jeu.

4 — Transport

Il s'agit de la dernière couche réellement intéressante dans le modèle OSI.

Celle-ci gère l'ordre des fragments de message, la correction des erreurs et enfin la déduplication.

Il existe plusieurs protocoles pour cette couche mais la grande majorité du boulot sera fait en :

Cette partie est gérée par l'OS mais manipulable par les applications.

5 — Session

On atteint là les limites du modèle OSI.

Le modèle est surtout théorique. Cette couche est initialement prévue pour la synchronisation des échanges lors d'une communication d'un pair vers plusieurs pairs. En pratique ce n'est pas utilisé. Le trafic est toujours de pair à pair sauf dans le cas particulier du multicast d'UDP.

En pratique on peut toutefois considérer certains protocoles comme étant de cette couche.

6 — Présentation

Que dire sur cette couche si ce n'est qu'on est dans le monde du virtuel ?

Cette couche avait pour but initial de définir le format des données comme l'encodage de l'information. Elle pouvait aussi gérer la compression et/ou le chiffrement des données.

7 — Application

Il s'agit enfin de l'information. La sacro sainte donnée. Celle que tout le monde veut et doit s'échanger !

Il y a des centaines de protocoles.

Un petit vrac pour vous faire plaisir :
DNS, HTTP, SSH, IRC, FTP, IMAP, SMTP, XMPP, NNTP, SIP

Du couche-à-couche

Donc chaque couche est indépendante et le protocole associé est interchangeable.

Chaque couche ne peut parler qu'avec la couche inférieure et la couche supérieure.

Une couche de niveau X envoi ses données D à la couche de niveau X-1.

La couche X-1 reçoit les données, joue son rôle et rajoute ses données C à D qui devient D+1. X-1 envoi D+1 à la couche X-2.

Et ainsi de suite.

Dans notre exemple, la donnée D dans la couche X-1 est appelé SDU ( Service Data Unit ) et à cette même couche, D+1 est apelé PDU ( Protocol Data Unit ) et les données additionnelles C sont les PCI ( Protocol Control Information ).

Pour résumer, dans une couche, la SDU + la PCI = PDU

Tout est bien clair ?

Transition du modèle OSI vers Internet

Le modèle OSI était un modèle théorique. Il a vite montré ses limites.

Le monde réel quant à lui, utilise le modèle Internet ( ou TCP/IP ).

Celui-ci est plus simple et plus proche de ce que l'on retrouve dans la réalité.

On est donc toujours sur un système de couches indépendantes offrant un service à la couche supérieure. Il y a en par contre beaucoup moins.

Modèle Internet

  1. Liaison
  2. Internet
  3. Transport
  4. Application

Plus simple, non ?

Photos par Annie Guilloret

Matriochkas

Pour faire son boulot, chaque couche va rajouter des informations à nos données.

On appelle cela l'encapsulation.

On adjoint à nos données des informations de la couche actuelle. On les ajoute généralement avant nos données. On apelle donc cela le Header ou entête.

La couche du dessous reçoit donc nos données plus le header du dessus. Cependant cette nouvelle couche ne regardera pas ces données. Pour elle il s'agira juste de données utiles ou payload. Elle va y ajouter son header et passer ça à la couche du dessous.

Header Header Header

Les protocoles ont besoin pour fonctionner de transmettre des méta-données. Celles-ci sont à destination de la couche idoine du destinataire.

Ces informations sont normalisées.

Elles sont ajoutées lorsque le message est émis et retirées quand le message est reçu.

Généralement il s'agit d'informations concernant l'émetteur, le destinataire, la façon de communiquer et le contenu des données.

Exemple en tableau

Couche
ApplicationDonnées
TransportHeader transportDonnées
InternetHeader InternetHeader transportDonnées
LiaisonHeader LiaisonHeader InternetHeader transportDonnées

Plus on traverse de couches plus on trimballe d'infos.

Une requête HTTP sur un réseau IP relié en Ethernet

Couche
ApplicationGET /
TransportHeader TCPGET /
InternetHeader IPHeader TCPGET /
LiaisonHeader EthernetHeader IPHeader TCPGET /

Capture de trame d'une requête HTTP et sa réponse.

De l'entête au pied

Les entêtes sont propres à chaque protocole.

Dans la définition d'un protocole se trouve la description de son entête.

Les entêtes sont lus et traités à hautes vitesses par les équippements du réseau.


Ils sont constitués de champs aussi apelés flags. Ces derniers peuvent être optionnels.


Quelques exemples seront abordés dans la suite.

Étudions donc toutes les couches traversées

La couche physique

Cette couche est différente selon le médium de transmission.

Il y a trois cas majoritaires :

Pour chaque médium le matériel nécessaire sera différent.

Il faut commencer par choisir son médium.

L'air

Je ne parle pas du gaz !

Dans le cas d'onde radio il n'y a pas grand chose à faire : par chance l'air est présent partout.

Il faut tout de fois penser au fait que l'air est un médium très particulier parcequ'il est partagé avec globalement tout le monde.

L'utilisation des ondes radio est règlementée dans chaque pays. On ne peut qu'utiliser certaines bandes de fréquences. C'est d'ailleurs un enjeu crucial pour de nombreux constructeurs et opérateurs de se voir attribuer des fréquences privées pour la téléphonie mobile.

Il faut donc prendre en compte que le signal que l'on transmet se retrouve dans une bande de fréquence qu'il faut donc partager ce qui entraîne très souvent une dégradation conséquente du signal.

Le cuivre

Dans le cas d'une connexion cuivre il faut sélectionner les câbles qui répondront aux cahiers des charges de notre réseau.

Torsadons

On utilise quasi-exclusivement des câbles comprenant 4 paires de cuivres torsadées se terminant par un connecteur RJ45.

Chaque fil est isolé des autres par une gaine. Chaque paire est torsadée afin de limiter les effets d'induction.

Blindons

Afin de rendre le câble insensibles aux perturbations extérieures, ceux-ci sont blindés.

Il existe plusieurs façon de blinder un câble mais on abordera ça plus tard.

Photo par Johnny Briggs

Plus tard

C'est parti pour de jolis dessins !

La première partie correspond au blindage de la gaine et la seconde partie au blindage des paires.

U : unshielded, F : foiled, S : shielded

Connecteurs RJ45

Les paires torsadées ont un ordre à respecter lorsqu'on enfiche le connecteur.

Deux normes de câblages existent la T568A et la T568B ( généralement surnommées A et B ).

Et après il existe deux type de câblage : croisé ou droit.

On a donc 4 ordonnancements des paires possible. Toutefois la grande majorité des appareils modernes est capable de croiser ou non le câble ( de manière logicielle ).

Les connecteurs entrent en jeu dans la catégorie d'un câble.

Photo par jeremiah-roth

Il n'y a pas que l'Ethernet dans la vie

J'ai surtout abordé le support pour de l'Ethernet dans le cas de réseaux locaux mais ce n'est pas tout.

Dans le cas de réseaux utilisant RTC ( V90 ) ou bien DSL, on n'a besoin que d'une ligne téléphonique classique. C'est à dire une paire de cuivre torsadée.


Dessin sur le fonctionnement du RTC et de l'ADSL ( voir moi au tableau ).

Et la lumière fût

Le dernier médium que j'aborde est donc la lumière ( enfin pas vraiment mais c'est classe à dire ). Il s'agit en vrai plutôt de fibre optique.

Une fibre optique de par sa conception permet de déplacer la lumière d'une extrémité à l'autre.

Il existe encore une fois de très nombreuses fibres optiques.

Pour simplifier on différencie les fibres selon leur fonctionnement : mono-mode ou multi-mode.

La seconde caractèristique est la taille physique du cœur de la fibre ainsi que sa gaine

Et le dernier point important est l'embout : ST ( rond à vis ), SC ( carré à clips ), LC ( carré à clips ), MTRJ ( petit carré à clips ).

Small Form-Factor Plug - SFP

Les fibres optiques ne sont pratiquement jamais raccordées directement sur les équipements actifs d'un réseau.

Il faut un appareil faisant la conversion optique/électrique.

Par chance les constructeurs se sont entendu et ont pondu le SFP !

Aussi apelé mini-gbic, il s'agit d'un connecteur dans lequel on enfiche la/les fibres d'un côté et de l'autre on le connecte à un port SFP.

En cas de changement de fibre optique, on ne change que le SFP au lieu de changer l'équipement actif.

Une histoire de modulation

Quelque soit le médium, il va falloir transmettre des informations. C'est quand même le but de l'opération.

Donc il va faloir coder les informations sur le support. Et pour faire cela il existe des dizaines de codages différents.

Ce serait idéal pour un module dédié. De la physique appliquée aux petits oignons.

Fin de la couche physique

Début de la couche Liaison

Une couche de proximité

Cette couche traite des trames.

Elle n'a qu'un rôle local. Elle reste dans un LAN ou uniquement entre deux machines adjacentes.

Cette couche est géré par le driver de la carte réseau/firmware.

2 sous-couches pour un meilleur résultat

Éthernet

Éthernet se nomme en réalité 802.3

Dans le meilleur des cas, on envoi 1538 octets contenant 1500 octets utiles.

Les délimiteurs servent à savoir quand commence et quand fini la trame.

Le champs VLAN est donc le numéro identifiant le VLAN. Il n'est donc présent que dans le cas où l'on s'en sert. Le VLAN se nomme également 802.1q

Le protocole indique ce qu'est transporté par la couche supérieure.

Le FCS est le contrôle d'erreur. Il s'agit d'un CRC de 32bits.

Entête Ethernet

Le chiffre indique le nombre d'octet du champs.

8 - Délimiteur de début de trame

6 - @MAC destination

6 - @MAC source

4 - VLAN ( optionnel )

2 - Protocole ( ou taille pour l'ancienne version )

46→1500 - Payload

4 - FCS ( frame check sequence )

12 - délimiteur de fin de trame

Deep impact

Comment faire pour éviter les collisions ?

Que font deux personnes qui marche face à face l'une vers l'autre ?

Elles attendent un temps aléatoire avant de se déporter.

Pour Ethernet c'est pareil : si une machine a besoin d'envoyer une trame et que le médium est déjà utilisé, la machine attend un temps aléatoire.

Puis elle retente


Ce mécanisme s'apelle CSMA/CD : Carrier Sense Multiple Access / Colision Detection

La terreur des boucles

À ce niveau ce que l'on redoute le plus sont les boucles réseaux.

Si vous câblez plusieurs switchs entre eux, vous risquez à un moment ou à un autre de créer une boucle physique.

À ce moment là les switchs vont rapidement s'écrouler en annonçant des adresses MAC dans toutes les directions.

Pour éviter ce soucis le Spanning Tree Protocol permet de détecter les boucles et de désactiver l'interface réseau fautive ouvrant donc la boucle.

Ce protocole nécessite toutefois un temps d'apprentissage de quelques secondes en cas de changement du réseau.

Ce protocole est désormais présent dans tous les switchs ethernet.

Où est-ce qu'il a appris à négocier ?

Ethernet a pas mal évolué depuis sa création passant sa vitesse de 10Mbps à 10Gbps.

Lorsque l'on branche deux appareils Ethernet l'un à l'autre ils doivent se mettre d'accord afin de choisir la vitesse ainsi que le mode de la liaison ( simplex, half-duplex ou full-duplex ).

Pour cela les machines envoient des impulsions électriques. Leur fréquence indique la vitesse capable ainsi que le mode de communication.

Désencapsulation puis Réencapsulation

La trame Ethernet est créée puis détruite en entrant puis sortant du segment de réseau et subit le même sort au prochain segment réseau.

Chaque appareil ethernet du réseau va donc ouvrir la trame pour lire l'entête, décider où acheminer les données. Il récupère le payload Ethernet et recréer un entête en changeant les adresse MAC source et destination.


Chaque nœud du réseau ne connait donc les adresses MAC que des appareils directement adjacents.

Quand vous voyez sur le web qu'il faut se protéger pour pas que de sombres inconnus vous volent votre adresse MAC, vous avez ordre de troller les incultes.

L'adresse MAC

Elle est unique et rattachée au matériel. Une carte réseau possède une adresse MAC propre à elle.

L'adresse MAC est donc attribuée par le constructeur. Le constructeur possède un ( ou plusieurs ) préfixes attribués par l'IEEE.

L'adresse MAC a une longueur de 6 octets soit combien de bits ?

48 bits

Parlons wifi

Ce protocole a le cul entre deux chaises. Il est à la fois un protocole de couche physique et à la fois un protocole de couche liaison.

Le wifi couramment apelé 802.11 ... non mais en fait je sais que vous avez un module dédié donc vous prendrez votre mal en patience.

Juste en deux mots : c'est proche de l'ethernet mais adapté au sans-fil. Donc de la crypto et un contrôle du medium un peu plus poussé ( on remplace le CSMA/CD par du CSMA/CA ( il s'agit d'une demande de prise de parole indiquant la taille des données à transmettre et la vitesse ) ).

ATM

Il s'agit d'un protocole asynchrone de commutation de cellules.

Les paquets ont une longueur variable contrairement aux cellules dont la taille est fixe et très petite.

L'entête fait 5 octets et la payload 48.

Comme sa taille est fixe, elle n'a pas besoin de délimiteur.

Ce protocole nécessite néanmoins l'utilisation d'AAL pour fragmenter en payload de 48 octets.

Plusieures versions de cette sous-couche existe. Celles-ci varient en fonction du type de payload. Pour du réseau de donnée ce sera de l'AAL5.

AAL5

AAL5 reçoit donc les données de la couche supérieure.

AAL5 découpe ces données en blocs de 40 octets puis rajoute un enqueue de 8 octets.

Ensuite c'est au tour d'ATM de faire sa tambouille.

Couche Réseau

De bout-en-bout

On arrive enfin sur la couche qui permet de communiquer à son destinataire.

Cette couche traite des paquets.

On retrouve X25, IPX mais surtout ARP, ICMP et IP.

Cette couche a donc pour rôle d'acheminer les paquets d'un réseau d'une machine à une autre.

Elle doit donc trouver la route.

Elle assure aussi un rôle de QOS.

Cette couche est géré par l'OS.

ARP

Ce protocole a le cul entre deux couches.

Il sert à la couche réseau de faire le lien avec la couche liaison.

Typiquement il fait le lien entre une adresse IP et une adresse MAC.

Il envoi donc en broadcast sur le lien local et reçoit une réponse en unicast de la part de la bonne machine :

Dialogue ARP

À qui appartient 10.0.0.3 ?

Alice s'adressant à tout le LAN

À moi ! 00:12:34.56:78:90

Bob chuchotant à Alice

C'est moi, Spartacus

Le slide précédent ne vous fait pas un peu peur ?

Une machine envoie une requête sur le LAN à qui veux bien l'entendre…

… et une réponse arrive.

N'importe qui répond et devient de fait « la bonne personne ».

Il n'y a pas de moyen infaillible pour lutter contre cela. Le mieux étant de fixer la table ARP pour les machines critique et de coupler cela avec un IDS ( voir cours de sécurité ).

ICMP

Internet Control Message Protocol n'est pas un protocole pour transporter les messages d'une couche supérieure. Son taff est de s'assurer que la couche réseau fonctionne. Il est indispensable au boulot d'IP.

Encore plus étrange qu'ARP, ICMP possède un entête IP.

Oui c'est un poil tordu, en gros IP transporte les données et ICMP s'occupe de tout le reste du travail.

Il est très léger et convoi quasiment que des messages d'erreurs.

C'est lui qui est utilisé par quelques outils réseau tels que ping et traceroute.

Un paquet ICMP contient donc un entête ICMP de 8octets et en payload l'entête du paquet IP en cause.

Liste des erreurs

  • 0 - Echo Reply
  • 3 - Destination Unreachable
  • 4 - Source Quench ( congestion )
  • 5 - Redirect Message
  • 8 - Echo Request
  • 9 - Router Advertisement
  • 10 - Router Solicitation
  • 11 - Time Exceeded
  • 12 - Bad IP Header
  • 13 - Timestamp
  • 14 - Timestamp Reply
  • 15 - Information Request
  • 16 - Information Reply
  • 17 - Address Mask Request
  • 18 - Address Mask Reply
  • 30 - Traceroute

IGMP

Internet Group Management Protocol est un protocole de gestion multicast.

Il sert à abonner/désabonner des machines à un routeur multicast.

Il est parfois utilisé par les FAI pour les services hébergés de TVoIP.

IP

Et le voilà enfin.

Donc si on résume pour fonctionner il a besoin d'ARP pour être en accord avec la couche d'en dessous.

Et il y a besoin d'ICMP pour l'encadrer quand il fait des conneries.

Donc lui bosse avec ce que l'on apelle des datagrammes ou bien des paquets.

Quand on parle de lui on parle généralement d'IPv4 mais son successeur IPv6 veut prendre l'héritage.

Il est à noter qu'IP n'est pas un protocole connecté.

Pour les détails vous aurez droit à un ou deux modules séparés.

Léger aperçu d'IP

IP a la lourde tâche de router les paquets, pour cela il lui faut trouver les routes. Ce boulot ne lui appartient pas directement. D'autres protocoles bossent à trouver des routes en fonctions de critères techniques ( le moins de saut possibles, emprunter uniquement les chemins les plus rapides, … ) ou bien plus économiques ( passer par ce fournisseur revient moins cher que par celui-ci, … ).

IP va également créer pas mal de problèmes du fait de son adressage.

En IPv4, les adresses sont codées sur 4 octets. À sa création cela paraissait large cependant on a vite dépassé le nombre maximum d'adresse réseau disponible.

IPv6 a été créé pour pallier ce problème, mais également de nombreuses techniques de NAT.

Local/distant ?

Comment fait IP pour déterminer si une IP fait partie du réseau local ou non ?

Avec un peu de magie binaire.
Une interface réseau se voit attribuer une adresse IP mais également un masque.
Le masque est soit sous la forme d'une adresse IP ( 4 nombres de 0 à 255 séparés par un point ), soit sous la forme d'un slash ( / ) suivi d'un nombre de 0 à 32 ( notation CIDR ).
Il s'agit en fait d'un délimiteur entre la partie réseau et la partie hôte.

Explication au tableau →→

Le réseau local

On distingue les adresses IP en deux catégories : Les IP locales ( ou privées ) et les IP publiques.

Certaines adresses sont réservées :

Routage IP

On est ici dans la couche qui distingue les réseaux locaux des réseaux distants. On travaille à interconnecter différents réseaux locaux entre eux. Il nous faut donc des appareils pour aiguiller/transférer/router les données vers leur réseau de destination.

Routeur

Le routeur est donc un appareil avec au moins deux interfaces réseaux ( ou patte ) chacune dans un réseau différent.

Il peut s'agir d'un appareil dédié ou bien d'un ordinateur plus classique.

On peut transformer n'importe quel ordinateur sous GNU/Linux en routeur en passant la valeur de /proc/sys/net/ipv4/ip_forward ou /proc/sys/net/ipv6/conf/all/forwarding à 1.

Bâtissons des routes !

Un routeur peut avoir plusieurs pattes sur plusieurs réseaux différents.

Il lui faut donc savoir par quel chemin passer pour atteindre sa destination. Ceci est déterminé par des routes.

Elles peuvent être statiques ou bien dynamiquement établies par le biais de différents algorithmes/protocoles.

Dans le cas d'un LAN, les ordinateurs disposent d'une route par défaut ( ou passerelle ), il s'agit du routeur qui devra router tous les paquets ( non destinés aux machines du LAN ) émis par l'ordinateur.

Les routes possèdent une priorité défini selon des critères économiques ou techniques.

Couche Transport

Le haut de la pile

On atteind enfin la dernière couche avant le sommet.

On tripotte enfin de la donnée utile dans la payload.

Cette couche est la dernière à pouvoir fournir des services réseaux.

Elle peut donc fournir une connexion, faire de la gestion de flux ( congestion, QOS ), du contrôle d'erreur et du multiplexage.

Cette couche est gérée par l'OS mais manipulée par les applications.

Le mode connecté

Je vous ai parlé plusieurs fois de la connexion.

Un protocole dit connecté doit envoyer des accusés de connexion pour attester que tout est ok.

Un protocole connecté se doit donc de fiabiliser la connexion en vérifiant que les données sont bien reçues.

Fiabilité

En cas de congestion réseau ou tout simplement de perte de paquets, il va falloir réemmettre. Ça peut s'effectuer à cette couche.

Il faut aussi s'assurer que le paquet reçu est bien le même que le paquet émis.

Prévention de congestion

Afin d'éviter des problèmes de congestion ou pour éviter les erreurs de transmissions, la couche transport peut adapter le débit d'envoi des données.

Multiplexage applicatif

Pour qu'un ordinateur puisse faire tourner plus qu'une application réseau à la fois, on gère le multiplexage à ce niveau.

On utilise un adressage à ce niveau encore une fois.

On est au dessus de la couche réseau, donc les données présentes à ce niveau ont un rapport avec la machine : on est soit son émetteur soit son destinataire. On utilise donc un adressage local relatif : le numéro de port.

Une hégémonie de deux géants

Cette couche est dominée par deux protocoles majeurs : TCP et UDP.

Il en existe d'autres mais leur utilisation est minoritaire actuellement car à eux deux ils couvrent quasiment tous les cas de figure.

Le choix de l'un ou de l'autre se basera sur le compromis vitesse/fiabilité.

TCP est un protocole connecté et donc fiable. Mais pour atteindre cet objectif, de nombreux échanges sont nécessaires, ce qui réduit le débit et la latence disponible pour les données utiles.

UDP quant à lui est non connecté, il faut faire confiance aux couches inférieures. On a du coup que des échanges de données utiles ce qui minimise la latence et maximise le débit.

UDP

Pour le décrire, le mieux est de regarder son entête :

2 octets de port source

2 octets de port de destination

2 octets pour la longueur

2 octets de checksum

Conclusion ?

Ce protocole n'assure que l'intégrité du paquet via le checksum et un multiplexage des données via les ports.

Ce n'est pas quelqu'un de fiable !

Effectivement rien n'assure que ce que l'on envoi sera reçu.

Rien n'assure non plus que ce que est arrivé provient bien de la personne que l'on pense puisque nous sommes pas dans un mode connecté.

Rien ne garantie que les paquets reçus dans un ordre donné aient été envoyés dans ce même ordre.

Ce protocole est donc privilégié pour les transmissions très courtes ( DHCP, DNS, … ) ou bien pour les transmissions où la perte d'une partie des informations n'est pas handicapante ( streaming audio ou vidéo ).

On peut toutefois combler certains manques de ce protocole au niveau applicatif comme le fait par exemple bittorent.

TCP

En plus de tranporter des infos délivre pas mal de services.

Première des choses il s'assure que tout ce qui est envoyé est reçu et dans le bon ordre s'il vous plait !

Il tente de détecter les erreurs.

Il fait du contrôle de flux.

Il évite la congestion réseau.

Et il multiplexe les infos.

Serrons-nous la main !

TCP se devant être le plus fiable possible, avant de commencer à transmettre des informations à l'autre pair, il va établir la connexion. Cette étape est appelé l'établissement de connexion ou le Three-way-handshake.

  1. L'émetteur va envoyer un paquet au destinataire avec le flag SYN et un numéro de séquence X.
  2. Le destinataire renvoi un paquet avec les flags SYN et ACK avec un numéro de séquence Y, et un numéro d'acquittement de X.
  3. L'émetteur renvoi un paquet avec le flag ACK avec le numéro de séquence X+1 et le numéro d'acquittement Y.

← Petit schéma parlant

On a donc transmis aucune donnée qu'on a déjà trois paquets qui se sont balladés.

Do you copy ?

Tous les paquets transmis sont numérotés et doivent être acquittés par le destinataires.

Le destinataires renvoi donc des numéros d'acquittements pour chaque paquet reçu.

Il se sert aussi du numéro de séquence pour remettre dans l'ordre des paquets reçu dans le désordre.

Si l'émetteur ne reçoit pas d'acquittement dans un certain délai, il va ré-émettre les paquets manquants.

Ce délai est calculé en permanence. Il est légèrement supérieur au RTT moyen.

Qu'est-ce que le RTT ?

Il s'agit du temps que met un paquet pour faire l'aller-retour.

Le contrôle de flux

TCP étant en dessous de la couche application celle-ci peut demander à ralentir la cadence de son flux réseau. C'est utile dans des cas de traitements effectués au fil de l'eau, si l'application n'a pas le temps de traiter les données suffisamment vite.

Le contrôle de congestion

Cette technologie a pour but de ralentir la transmission non pas pour épargner la couche applicative mais pour épargner la couche réseau.

Lorsque le réseau se retrouve avec plus de trafic qu'il ne peut écouler, les performances du réseau s'écroule.

Pour éviter cela, TCP diminue son débit.

Deviner la vitesse maximale.

TCP ne peut pas connaitre la vitesse du réseau sur lequel il bosse. Qui plus est cette vitesse peut varier puisqu'IP ne garantie pas que tous les paquets empruntent le même chemin.

Il faut donc que TCP devine à quelle vitesse il peut transmettre des paquets sans rencontrer de pertes.

Slow Start

Plusieurs algorithmes servent donc à trouver cette vitesse en utilisant une technique de slow-start.

TCP commence donc la connexion à faible vitesse puis augmente progressivement.

Lorsqu'il rencontre des erreurs, il diminue se cale à cette vitesse.

Adaptation de la vitesse

On a maintenant déterminé la vitesse de croisière du réseau à un instant T, on va donc devoir maintenant adapter la vitesse pour utiliser au mieux le réseau tout en évitant la congestion.

Encore une fois plusieurs méthodes existent.

En cas de congestion, le nombre de paquet à retransmettre augmente ce qui amplifie d'autant plus la congestion, il est donc nécessaire de réagir lorsque le nombre de ré-émission augmente.

Pour jouer avec tout cela, la couche transport modifie ce qu'on appelle la fenêtre TCP.

Entête TCP

Bon si je résume, on a parlé de ça :

Donc on va retrouver tous ces champs plus un champs d'options facultatives de taille variable. Un champs d'urgence pour les messages importants. Et comme l'entête est de taille variable à cause des options, un champs indiquant où commence les données utiles.

L'entête peut varier de 20 à 60 octets selon les options.

    0                   1                   2                   3   
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Source Port          |       Destination Port        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        Sequence Number                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Acknowledgment Number                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Data |           |U|A|P|R|S|F|                               |
   | Offset| Reserved  |R|C|S|S|Y|I|            Window             |
   |       |           |G|K|H|T|N|N|                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           Checksum            |         Urgent Pointer        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Options                    |    Padding    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                             data                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	                TCP Header Format - RFC 793

Un protocole non figé

TCP est un vieu protocole qui a fait ses débuts sur ARPANET.

Il existe un grand nombre de RFC traitant de TCP.

675, 793, 1122, 1948, 2001, 2414, 2581, 3390, 5681, 6093, 6298, 6528, …

Il connait des rajouts et des évolutions donc assez souvent. Une des plus importantes récemment est le MP-TCP pour MultiPath TCP.

Cette évolution permet d'utiliser plusieures piles IP différentes pour un seul flux TCP. Cela permet donc d'utiliser plusieures interfaces réseaux simultannément ou bien de passer de l'une à l'autre de manière transparente pour la couche applicative.

MP-TCP n'est pour l'instant implémenté que sous forme de patchs pour le noyau linux et également sur iOS7.

Fin de la couche transport

Photo par Jeff Attaway

Couche application

Pléthore

On a enfin réussi à remonter toutes les couches. On accumule pas loin de 100 octets d'entête divers et variés, il va falloir les rentabiliser maintenant !

On ne peut pas aborder tous les protocoles existants. J'aborderai les plus connus/utiles/pratiques/simples. Mais d'abord une petite liste en vrac.

DHCP, DNS, HTTP, FTP, SSH, X11, IRC, IMAP, SNMP, NTP, XMPP, NNTP, NFS, SMTP, 9P, RIP, SIP, SMB, …

Dynamic Host Configuration Protocol

DHCP a pour but de fournir une configuration IP lorsqu'un appareil le demande.

Il utilise l'UDP sur le port 67.

Une machine envoi un message de requête DHCP en broadcast.
Le serveur répond une adresse IP, un masque réseau, et la passerelle par défaut et également des options.
Le client répond au serveur qu'il est d'accord.
Le serveur répond par un acquittement.

Il n'y a aucune sécurité ni pour le client ni pour le serveur.

Ce protocole est extensible via les options.

Plusieurs serveurs peuvent se trouver sur un même réseau tout comme un serveur peut se trouver sur plusieurs réseaux via des relay.

Domain Name Service

Il s'agit du pilier de l'Internet.

Il sert à mettre en relation un nom avec une adresse IP.

Au début d'Internet, il existait une liste des machines avec leur adresse IP ( une sorte d'annuaire téléphonique ). Il fallait se distribuer cette liste et la mettre à jour constamment. Ce fichier existe encore ( /etc/hosts ).

Maintenant on gère cela via des noms de domaine et tout une administration pour gérer cela.

Il faut savoir qu'on achète pas un nom de domaine. On achète un droit temporaire d'autorité sur un nom de domaine.

Rien ne vous empêche de créer/revendre des sous-domaine de votre domaine chèrement acheté.

Le service le plus critique d'Internet

Tout le monde se base sur ce service pour fonctionner.

Ce service est la clé de voute de la quasi totalité des applications sur le réseau.

Il est souvent la cible d'attaque massives pour couper du monde une partie des DNS.

Il existe 13 serveurs racines ( en fait ils s'agit de grappes de serveurs ) répartis dans le monde.

Ils sont gérés par des organisations différentes.

L'attribution des noms de domaine se fait auprès d'un registrar et la création de nouvelles extensions est soumis à l'autorité de l'ICANN.

Vous aurez un module dédié à ce protocole.

Hyper Text Transport Protocol

Photo par Jonathan Harford

Le protocole à tout faire

Il s'agit d'Internet pour 99% de la population mais il n'est que l'une de ses utilisations.

Ce protocole sert initialement à transporter les pages webs donc des fichiers textes puis s'est rajouté des images puis tout type de fichier puis du streaming de vidéo, puis à peu près tout et n'importe quoi.

C'est un protocole textuel. Il est donc simple à écouter/parler même pour un humain.

Il doit sa popularité à la création du web, l'emploi des URL ( Uniform Resource Locator ) ainsi qu'à son utilisation de MIME ( Multipurpose Internet Mail Extensions ).

Il utilise quasi exclusivement TCP mais on trouve des utilisations par dessus UDP.

Démo connexion HTTP

Vous la faites vous même sur chacun de vos ordinateurs :

  1. Créez un fichier texte
  2. GET / HTTP/1.1
    Host: arnauda.eu
  3. Sauvegarder votre fichier, quittez l'éditeur de texte
  4. cat votre_fichier_texte | nc arnauda.eu 80
  5. Admirez le résultat

Questions Réponses

Donc on est face à un protocole où le serveur attend des requêtes et renvoi des réponses aux clients.

Les requêtes ont différents types possibles ( ou ordre ):

GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT, PATCH

Et les réponses possibles sont toutes numérotées :

200, 301, 400, 403, 404, 418, 500, 502, 503, 504, …

C'est la fin \o/

Avez-vous des questions ?

Générique final

Slides réalisés sous vim et rendus avec deck.js

/

#