• 6 hours
  • Hard

Free online content available in this course.

course.header.alt.is_certifying

Got it!

Last updated on 2/6/20

Quelques notions de réseaux

Log in or subscribe for free to enjoy all this course has to offer!

Avant de vous lancer dans la programmation d'applications utilisant le réseau, il va de soi que devrez comprendre au moins les bases de fonctionnement des réseaux.
Ceci vous permettra de bien choisir le protocole que votre application devra utiliser, le port à réserver etc.

Pardon ? Qu'est-ce que c'est que ce charabia !

Ne vous inquiétez pas, ce chapitre est là pour vous déchiffrer tout ça, alors allons-y.

Quelques notions de réseau

Comme beaucoup d'entre vous doivent déjà le savoir, un réseau permet de relier des terminaux entre eux afin qu'ils puissent s'échanger des informations : en bref, communiquer. Le plus connu des réseaux est Internet qui est une toile immense au niveau mondial.
Mais un réseau peu très bien être beaucoup plus petit, par exemple, chez vous, si vous avez une box ADSL et un ordinateur relié par un câble Ethernet ou en Wifi à cette box, ceci constitue un réseau. :)

En fait, dites vous qu'un réseau est très souvent constitué de réseaux plus petits : Internet est un réseau constitué de sous-réseaux.
Voici un schéma résumant ceci :

Réseau communal composé de plusieurs sous-réseaux (un par bâtiment)
Réseau communal composé de plusieurs sous-réseaux (un par bâtiment)

Ici, nous avons plusieurs sous-réseaux : un réseau par bâtiment et tous ces réseaux sont connectés entre eux. Imaginons que ces bâtiments forment une commune. L’ensemble de ces sous-réseaux correspond alors à un réseau communal. Ce réseau communal peut, lui aussi, être considéré comme un sous-réseau d'un réseau encore plus grand, comme ceci :

Réseau composé de plusieurs sous-réseaux communaux
Réseau composé de plusieurs sous-réseaux communaux

Ici, chaque commune qui a son réseau est reliée à un réseau encore plus grand, au niveau départemental par exemple. Et ceci se répète jusqu'à arriver à une gigantesque structure composée de nombreux réseaux. Si vous voulez voir à quoi ressemble la structure des réseaux connectés à Internet, jetez un œil à ces cartes.

Mais comment toutes ces machines arrivent-elles à communiquer entre elles ?

C'est une très bonne question.
En fait, il faut un certain nombre de choses pour que deux terminaux puissent communiquer entre eux. Ils ont besoin au minimum des trois éléments suivants :

  • Une adresse IP ;

  • Un port libre et ouvert ;

  • Un protocole de communication commun.

Ne prenez pas peur tout de suite, je vais vous expliquer à quoi tous ces termes correspondent. D'ailleurs, nous allons voir tout de suite que sont exactement ces adresses IP.

Une histoire d'adresse

Avant de parler des adresses de vos postes, il faut un élément primordial à toute connexion. Vous ne voyez pas ?
Il faut que vos équipements soient reliés l'un à l'autre et, déjà là, vous avez plusieurs possibilités :

  • Liaison par modem (réseau téléphonique) ;

  • Liaison sans fil courte distance (Bluetooth), moyenne distance (Wi-Fi) ou longue distance (MMDS, SMDS…) ;

  • Liaison câblée (Ethernet…) ;

  • Liaison par fibre optique.

Ensuite, à chacune de ces types de liaison aussi appelées connectiques, votre terminal devra avoir un accessoire qui permet de récupérer les signaux et de les interpréter : une carte réseau, une carte Wi-Fi etc. Une carte Wi-Fi ne sait pas interpréter des signaux provenant d'un câble Ethernet et une carte réseau Ethernet ne sait pas interpréter les signaux Wi-Fi.

Maintenant que vos terminaux sont prêts d'un point de vue matériel, ils vont encore avoir besoin de quelques éléments primordiaux : des adresses.

Des adresses ? Tu veux dire qu'ils en ont plusieurs ?

Oui. chaque poste possède plusieurs adresses de types différents.

  • Une adresse physique : l'adresse MAC qui est une adresse unique au niveau mondial. Elle est présente sur votre carte réseau et est représentée par une suite de 6 chiffres en notation hexadécimale, comme ceci : 0A:1F:25:BC:8D:89.

  • Une (ou plusieurs) adresse(s) logique(s) : adresse(s) IP qui sert à donner une adresse à votre machine entre différents réseaux. Elle est le plus souvent représentée par une suite de quatre chiffres comme 192.168.1.10 pour une adresse IP version 4 ou comme ceci 2001:0b5c:1245:bc48:1234:4567:ab15:bc95 pour une adresse IP version 6.

Ce sont grâce à ces adresses que les terminaux arrivent à se retrouver. L'adresse MAC sert essentiellement dans les réseaux locaux et les adresses IP servent pour communiquer avec des réseaux extérieurs. Pour bien comprendre, voici un petit schéma :

Réseau local et étendu
Réseau local et étendu

Ici, si Machine-A souhaite communiquer avec Machine-B, le réseau local va se servir des adresses MAC des équipements pour pouvoir se retrouver car le routeur a connaissance de toutes les adresses MAC de son réseau.
Par contre, si Machine-A souhaite aller sur le www.siteduzero.com, ce sera l'adresse IP qui sera alors utilisée pour la communication entre les deux intervenants car le routeur de la maison ne connaît pas l'adresse MAC du serveur www.siteduzero.com.

Et comment les données arrivent-elles à destination ?

Oulla ! Je ne vais pas vous faire un cours sur le réseau… Le routage est une chose complexe et vous n'en aurez pas besoin.
Par contre, savez-vous comment récupérer votre adresse IP ? Non ?

Alors, pour les Windowsiens, il suffit d'ouvrir une invite de commande en Windows + R et en tapant "cmd" puis Entrée :

Image utilisateur

Puis, dans l'invite de commande, tapez ipconfig, ce qui devrait vous donner quelquechose comme ça :

Adresse IP dans un terminal sous Windows
Adresse IP dans un terminal sous Windows

Pour ceux utilisant Linux ou Mac, il vous faut toujours ouvrir une invite de commande via un terminal, mais cette fois la commande sera : ifconfig.

Adresse IP dans un terminal sous Linux
Adresse IP dans un terminal sous Linux

Sous Mac, vous obtiendrez un résultat ressemblant, avec l'adresse IP indiquée dans un champ inet (pour plus d'infos, c'est par ici !).

Autre précision concernant les adresses IP en version 4 : je vous disais plus tôt que celles-ci étaient constituées d'une suite de 4 chiffres. Il y a tout de même une limite car, pour être tout à fait exact, il s'agit d'une adresse composée de 4 octets, donc de 4 fois 8 bits.
Je ne sais pas si vous vous en rappelez mais un octet non signé (donc sans nombre négatif) peut contenir des valeurs entre 0 et 255, de ce fait, les adresses IP V4 sont comprises entre 0.0.0.0 et 255.255.255.255.

Vous devez savoir encore une chose importante sur les adresses IP : il existe des adresses IP privées et publiques. Les adresses IP privées sont dédiées à des réseaux locaux (chez vous, au sein d'une entreprise, etc.) tandis que les adresses IP publiques sont des adresses accessibles par tout réseau connecté à Internet. Les adresses IP privées se présentent sous l'une des formes suivantes :

  • de  10.0.0.0 à 10.255.255.255

  • de 172.16.0.0 à 172.31.255.255

  • de 192.168.1.0 à 192.168.255.255

Maintenant que vous savez ce qu'est une adresse IP et à quoi elle sert, nous allons tout de suite voir ce qu'est un port.

On entre par quelle porte ?

Tu t'es trompé, ce n'est pas "porte", mais "port"…

^^
Je le sais très bien. Mais ceci est une petite image afin que vous compreniez bien à quoi servent les ports.
Imaginez-vous à la place de votre ordinateur. En même temps, vous pouvez avoir plusieurs logiciels d'ouverts qui communiquent sur le réseau :

  • Un navigateur Internet ;

  • Un client de messagerie ;

  • Un client FTP ;

Comment feriez-vous pour savoir que telles données sont pour le navigateur, ou pour le client de messagerie ?
Votre ordinateur sait cela grâce aux ports. Chaque port correspond à une application ou un service. C'est comme si vous aviez plusieurs portes à votre maison et que le facteur entre toujours par la même porte, l'électricien par une autre porte et idem pour le boulanger, comme ceci :

Image utilisateur

Les numéros de portes ont leur importance car ce sont ces numéros qui seront utilisés dans les communications.

Il existe beaucoup de ports alors ?

Il en existe exactement 65 536 mais certains sont déjà réservés, en fait les 1 024 premiers ne doivent pas être utilisés.
Voici quelques ports connus et réservés :

Image utilisateur

Il va donc nous falloir un port libre, donc inutilisé mais aussi et surtout, il faut qu'il soit ouvert !
En fait, toutes les 65 536 portes de votre ordinateur ne sont pas ouvertes et heureusement, sinon vous seriez inondés de communications. Pour éviter ça, vous pouvez utiliser un firewall qui se charge de bloquer les ports qu'il juge à risque et de n'autoriser que certains ports sûrs, comme le 80, le 21, etc. Windows PC possède ainsi un firewall intégré. Des firewall sont également disponibles sous Linux ou Mac.

Voilà, nous savons maintenant ce qu'est un port, il ne reste plus qu'à voir cette histoire de protocole.

Dans quelle langue ?

Tout comme nous, êtres humains, les ordinateurs ont besoin de règles pour communiquer entre eux.

Si vous souhaitez parler avec un Anglais, vous allez utiliser tous deux la langue anglaise et vous pourrez converser sans problème car vous respecterez les règles de grammaire, de conjugaison etc.

En informatique, ce qui définit la langue de communication s'appelle un protocole. Il en existe de nombreux mais, nous nous intéresserons seulement aux protocoles TCP et UDP.

Ce sont tous les deux des protocoles de transport, ils définissent donc comment les données seront acheminées vers le destinataire. Ils ont tous les deux le même but dans la vie : livrer les données au destinataire ; mais ils n'ont pas la même façon de travailler.

Le protocole UDP envoie les données vers le destinataire mais sans se soucier si tout est reçu (des données peuvent se perdre en chemin), et si les données sont arrivées dans le bon ordre car, selon les chemins empruntés par les données sur le réseau, certaines infos peuvent arriver avant d'autres, donc dans le désordre. On dit aussi que c'est un protocole non connecté car il ne demande aucune connexion au préalable, l'émetteur envoie des données au destinataire sans le prévenir.

Voici comment se passe les choses avec UDP :

Communication avec UDP
Communication avec UDP

Le protocole TCP, lui, garanti tout ce que UDP ne garantit pas. Il assure donc que toutes les données envoyées ont bien été reçues et il garantit également qu'elles seront reçues dans le bon ordre en indiquant comment reconstituer le message original grâce une numérotation des envois.

Communication avec TCP
Communication avec TCP

De ce fait, nous pouvons en conclure deux choses évidentes :

  • TCP est plus sécurisé que UDP ;

  • UDP est plus rapide que TCP.

Voilà, nous avons toutes les informations nécessaires au développement réseau en Java.
Avant de rentrer dans le vif du sujet, voyons comment Java se positionne dans tout ce micmac.

Et Java dans tout ça ?

Nous avons vu pas mal de choses mais je vais tout de même en rajouter encore un peu.
Tout ce que nous avons vu jusqu'ici fait partie d'une norme internationale de communication réseau : le modèle OSI. Celui-ci définit tout ce qu'il faut pour qu'une communication réseau s'établisse et ceci via un modèle en 7 couches.

Voici un tableau présentant ce modèle, tiré de Wikipedia :

Le modèle OSI
Les 7 couches du modèle OSI

Ne prenez pas peur, ceci schématise seulement ce qu'il faut pour une communication réseau et ça dit qu'il faut :

  1. Couche 1 (physique) : du matériel de support de transmission (câbles etc.) ;

  2. Couche 2 (liaison de données) : de quoi connecter les machines entres elles (switch, carte réseau...) ;

  3. Couche 3 (réseau) : de quoi connecter les réseaux entre eux ;

  4. Couche 4 (transport) : de quoi définir les identifiant de ports et de protocole ;

  5. Couche 5 (session) : aucune importance, existence théorique ;

  6. Couche 6 (présentation) : aucune importance, existence théorique ;

  7. Couche 7 (application) : l'application initiatrice de la communication (navigateur, client mail…).

En fait, beaucoup de logiciels reposent sur un autre standard, le modèle TCP/IP, qui ressemble à ceci :

Le modèle TCP/IP
Le modèle TCP/IP

Java va donc se placer dans la parti application et l'API java.net va nous permettre de mettre en œuvre des communications réseau.
Cette présentation étant terminée, je vous propose de passer à la pratique.

Vous voyez, il n'y a rien de très sorcier.
Vous avez appris comment fonctionnent les réseaux, dans les grandes lignes hein… Les réseaux utilisent des concepts bien plus complexes que cela, mais l'intérêt pour vous, simple développeur, est assez limité : sauf si vous voulez commencer à pirater. :pirate:

Maintenant que vous êtes à l'aise avec ces concepts de bases, nous allons poursuivre avec un chapitre qui vous présentera les objets vitaux pour une communication réseau : des objets permettant de manipuler des adresses !

Example of certificate of achievement
Example of certificate of achievement