SIP: Session Initiation Protocol
pour applications VoIP (Voice over IP) et sharing
SIP
Root » Serveurs » Index » Mail » SIP
Le protocole internet SIP est utilisé par bon nombre d'applications. C'est un protocole assez spécial parce que la notion de "serveur" et "client" disparait.

Le protocole internet SIP (Session Initiation Protocol) est utilisé par un nombre croissant d'applications. Si certaines applications (comme msn) disparaissent, d'autres prennet la relève:
  • MSN (MicroSoft Network): une messagerie online très utilisée avant l'avènement de facebook. En 2005, tout le monde était sur msn comme maintenant on est sur facebook. Comme les temps changent!
  • VoIP (Voice over IP): le téléphone via l'internet gagne en importance, maintenant qu'on peut téléphoner gratuitement à la famille en vacances aux Etats Unis.
  • Toutes les applications de sharing utilisent le même protocole.

La base

Une des caractéristiques de ce protocole est qu'il n'y a plus de communication entre le serveur et l'utilisateur une fois que la communication a été établie. C'est une notion très importante, car elle indique que les serveurs ne sont que rarement surchargés: en effet, la communication (texto, vocale, vidéo ou échange de fichiers) s'effectue uniquement entre les deux destinataires. Le nom du protocole dit d'ailleurs très bien de quoi il s'agit: l'initiation d'une session. Une fois que la session est établie, le serveur n'intervient plus.

C'est pour cela que Skype peut offrir des communications téléphoniques gratuites: une fois la communication établie, il n'y a plus rien qui passe par leurs serveurs (sauf pour les communications vers le réseau non-internet, mais ces communications sont facturées à l'utilisateur).

C'est aussi pour cela qu'il y a tant d'applications d'échange de fichiers: l'investissement de base est minimal, car il ne faut pas d'infrastructure très puissante.

Le serveur SIP maintient uniquement une liste d'abonnés. Une des caractéristiques est le programme qui tourne sur le client et qui transmet l'adresse et le statut de l'utilisateur (pas "en couple" ou "c'est compliqué" comme sur facebook, mais la disponibilité). Quand un utilisateur veut entrer en communication avec un autre utilisateur, il contacte le serveur pour connaitre son adresse IP et son statut. Le serveur facilite l'établissement de la communication, mais une fois que celle-ci est établie, il ne participe plus à l'échange.

Messageries

Nous avons affaire ici aussi bien aux messageries texte (comme MSN) que les messageries vocales (Skype) et même vidéo.


Identification Connection (SIP) Communication (RTP)

Commençons par un service simple, comme la messagerie de microsoft (msn). Notre réseau a 3 utilisateurs, alfa, bravo et charlie. Delta est offline (pas connecté).

  • Identification
    Quand un ordinateur se connecte à l'internet, le module msn de l'utilisateur va envoyer un status update au serveur de microsoft. Le serveur de microsoft écoute sur le port 5060, mais en principe tous les ports peuvent être utilisés. Le client indique le port sur lequel il écoute, et son statut ("online", "occupé", "absent",...), en fait n'importe quoi qui puisse être interprété par le serveur. Le port d'écoute se situe dans la gamme 16384-32767 pour les applications SIP classiques, mais en fait tous les ports peuvent être utilisés. Le serveur tente d'établir une communication via le port indiqué par le client. Si cela réussit, le client est repris dans la base de données comme étant accessible.

  • Connection (SIP)
    Quand alfa veut parler à bravo, il en fait la demande au serveur SIP. Le serveur transmet tous les paramètres à alfa, qui peut ainsi se connecter à bravo. C'est un peu plus compliqué en pratique, mais n'entrons pas dans les détails.

  • Communication (RTP)
    Une fois que la ligne de communication est établie entre les deux utilisateurs, le serveur n'intervient plus. Il ne voit même pas ce qui se passe entre les deux utilisateurs (sauf s'il y a un module "espion" actif). La communication est totalement indépendante de la connection et un protocole totalement différent est même utilisé. La communication utilise le protocole RTP (Real-time Transport Protocol) [Le real time est important en communication vocale!].
En plus de ces fonctions de base, le module qui assure le service de messagerie dispose de fonctionalités étendues. Lors de la connection au serveur msn, le service local met à jour la liste des abonnés disponibles. Il est ainsi toujours possible de se connecter à quelqu'un, même si la personne en question utilise un autre ordinateur.

Ubuntu dispose également d'une application de messagerie: Empathy. Contrairement à microsoft, la messagerie ne démarre pas automatiquement.

File sharing

Une application de file sharing ou P2P (Peer-to-Peer) n'est pas vraiment différente d'une application de messagerie. Le serveur établit ici une liste de tout ce que les utilisateurs mettent en disponibilité.

Supposons que l'utilisateur alfa mette le film "lord of the rings" en disponibilité. Cela se fait en plaçant le fichier correspondant dans un répertoire spécifique. Quand alfa se met en ligne, la liste des fichiers disponibles est envoyé au serveur (au lieu d'une indication de statut).


Identification: tous les utilisateurs en ligne (n'est pas indiqué sur la figure)
Demande du client au serveur, qui répond par une liste d'utilisateurs disponibles
Upload des utilisateurs et download vers le demandeur

Si bravo veut télécharger un film, il en fait la demande au serveur. Le film est généralement disponible chez différents utilisateurs. Le demandeur reçoit une liste d'utilisateurs qui mettent le film en disponibilité.

Le demandeur va maintenant se connecter à plusieurs fournisseurs. La vitesse de l'upload d'un utilisateur individuel est généralement très limitée et le but n'est pas qu'un utilisateur n'ait plus de bande passante pour lui-même si le film mis en disponibilité est envoyé à un autre utilisateur. Le module P2P limite le débit en sortie pour éviter la congestion de la connection à l'internet.

Le demandeur recoit plusieurs segments du film à basse vitesse, par exemple 10 feeds de 20kB, ce qui fait malgré tout une vitesse de 200kB.

Il est à noter que les fichiers restent toujours chez l'utilisateur qui les met à disponibilité. Il y a seulement un répertoire centralisé des fichiers mis à disponibilité. Si un autre utilisateur demande le même film, il sera également commandé chez les 10 fournisseurs, mais la vitesse sera plus faible, puisque la vitesse d'upload de chaque fournisseur est limitée, et qu'il y a maintenant deux demandeurs au lieu d'un seul.

Il n'y a pas de multicast non plus: chaque communication est individuelle et transmet une petite partie du fichier. S'il y a beaucoup de demandes et peu d'offres (nouveau film), le débit chez le demandeur sera très bas. S'il y a peu de demandes et beaucoup d'ordinateurs qui ont le fichier en disponibilité, le transfert se fera rapidement.

Les fichiers "illégaux" et autres ne sont jamais stockés sur le réseau du fournisseur de service P2P et ne passent même pas par ses serveurs. C'st ainsi qu'ils peuvent parer les critiques de piratage: ils ne sont pas des pirates au sens litéral, puisqu'ils ne mettent pas le fichier à la disponibilité des internautes: ce sont les internautes eux-même qui ont le fichier. Le service P2P est même moins qu'un intermédiaire, puisque jamais les fichiers ne passent par leurs serveurs.

Links to relevant pages - Liens vers d'autres pages au contenu similaire - Links naar gelijkaardige pagina's