Les clients eMule et eDonkey sont les principaux clients d'un
seul et même réseau : le réseau eDonkey. De la compréhension du fonctionnement
de ce réseau vient une meilleure utilisation et ainsi de meilleurs
performances.Voici donc les réponses à 7 questions que peut-être certains se
posent concernant les adresses ip, les high id, les ports et les low id.
1. Qu'est ce qu'une adresse ip ?
Une adresse ip est le numéro qui est attribué à ton ordinateur pour qu'il soit
identifié sur le réseau. Chaque machine connecté à Internet à une adresse ip
unique. J'utilise le terme machine car elle s'applique aussi aux routeurs et pas
seulements aux ordinateurs des usagers en bout de ligne.
Cette ip est formé d'une série de 4 nombres qui s'écrit sous la forme a.b.c.d
(par exemple 62.161.204.20). Chacun de ses 4 nombres est compris en 0 (inclu) et
255 (inclu).
Aucun machine ne possède une ip se terminant par zéro. L'ip 62.161.204.0 ne
correspond à aucune machine, mais à un réseau (internet est un réseau de
réseaux), l'ip 62.161.204.20 étant une machine de ce sous réseau.
2. Qu'est ce qu'un high id ?
Django Rainhart et quelques autres mis à part, tous les hommes possèdent 10
doigts. Nous avons donc développé un système de calcul décimal, c'est à dire que
nous avons 10 unités puis on passe aux 10aines, puis les 100aines, etc.
L'ip utilise un système de numération différent : elle à 256 unités (de 0 inclu
à 255 inclu) puis on a 256 256aines (par analogie aux 10aines), puis 256
(256*256)aines et enfin 256 (256*256*256)aines. Petite particularité, dans
a.b.c.d, les unités sont à gauche (a), puis les 256aines (b), puis les
65536aines (c) et enfin les 16777216aines (d). :shock:
Le high id est en fait simplement l'écriture de l'ip sous forme décimale.
On le calcul avec la formule logique (ou magique, au choix) suivante : id = a +
b*256 + c*65536 + d*16777216
Ainsi quiconque connaît ton ip peut calculer ton high id, et surtout très
important en ce qui concerne l'application pratique sur le réseau eDonkey,
quiconque connaît ton high id connaît ton ip et peut donc entrer directement en
contact avec toi.
3. Quelles sont les high id possibles sur le réseau ?
La plus petite ip est 0.0.0.0, mais comme il n'existe pas d'ip se terminant par
zéro, la plus petite ip est en réalité 0.0.0.1
Avec la formule ci-dessus, l'id correspondante est
id = 0 + 0*256 + 0*65536 + 1*16777216 = 16777216
La plus grande ip est 255.255.255.255 ce qui donne (de tête)
id = 255 + 255*256 + 255*65536 + 255*16777216 = 4294967295
Il n'existe donc pas de high id en dehors de l'intervalle [16 777 216
; 4 294 967 295]
Parenthèse : Le réseau ne peux donc pas avoir plus de 4 278 190 080 machines
connectés en même temps (ça nous promet un beau bug de l'an 3000 :wink: )
4. Que sont les ports ?
Les connections entre les machines du réseau se font par ce que l'on appelle des
ports. Pour que tu puisses te connecter sur une machine, il faut qu'un des ses
ports soit ouvert. Si le port de la machine que tu contactes est ouvert, tu peux
établir la connexion. Si son port est fermé, ça ne répond pas.
Les serveurs eDonkey laissent toujours un port ouvert pour que tu puisses les
contacter (par exemple le serveur lugdunum 62.161.204.20:4661 laisse son port
4661 pour que tu puisses t'y connecter). Une fois que la liaison est établie
vous pouvez échangez des données dans les deux sens.
5. Que sont les low id ? Comment les ports en sont responsables ?
Une fois connecté au serveur, ton ordinateur lui envoie ton adresse ip et le
port sur lequel tu souhaites que les autres se connectent à toi (par défaut dans
eMule c'est le 4662). Le serveur va alors essayer d'établir une connection avec
ton ordinateur, sur le port 4662, cette fois à son initiative.
Si il parvient à établir une connection, c'est que ton port 4662 est ouvert.
Le serveur en déduit que n'importe qui connaissant ton ip (ou ton high id c'est
équivalent) et le port que tu utilises pourra se connecter sur toi et y
télécharger. Le serveur donne donc à tous les utilisateurs qui veulent un
fichier que tu partages ton high id (comprise entre 16 777 216 et 4 294
967 295) et ton port. Ces utilisateurs pourront ensuite se connecter sur toi
directement, sans passer par le serveur. C'est du peer to peer (particulier
à particulier).
Si le serveur, lors de son essai, ne parvient pas à se connecter sur toi, c'est
que ton port 4662 est inaccessible (protégé par un firewall, mal redirigé
par un routeur...). Celà signifie que un utilisateur connaissant ton ip et ton
port ne pourra pas se connecter sur toi. Au lieu de donner ton high id et ton
port aux autres utilisateurs qui ne pourront pas établir de connexion sur toi,
le serveur t'attribue un low id. Il s'agit d'un chiffre qui ne correspond
pas à ton ip. Il t'es donné tout simplement par ordre d'arrivé sur le serveur
(exemple : si tu as le low id 83, c'est que tu es le 83ème sur ce serveur).
Les autres utilisateurs sauront alors qu'ils ne peuvent pas établir eux même une
connexion avec toi.
Les low id sont donc compris entre 1 (1ère place sur le serveur) et la dernière
place sur le serveur. Ca dépend des serveurs mais c'est exceptionnellement
au-delà de 100 000 (qui est un très très gros serveur !).
6. Alors si on ne peux pas se connecter sur un low id, les low id ne
partagent pas ?
Si ! La ruse est la suivante. L'utilisateur ne peux pas se connecter chez toi
parce que tu es low id. Mais si lui est high id, ses ports sont ouverts et
toi tu peux te connecter chez lui ! Alors l'utilisateur dit au serveur : je
voudrais bien me connecter sur le type qui est à la place 83 sur le serveur
(toi), mais il est low id. Le serveur te demande alors, via la connexion que
tu as établi avec lui au début, d'effectuer toi-même la connexion entre vous
deux.
On remarque que si deux utilisateurs sont low id, ils ne peuvent se connecter
ensemble car ils refusent tous les deux une connexion extérieur (si aucun de
deux correspondant n'accepte de répondre au téléphone ils ne peuvent pas se
parler).
7. Quels sont les inconvénients des low id ?
D'abord pour l'utilisateur qui a un low id, étant donné qu'il ne peut pas se
connecter sur un autre low id, les seules sources qui lui sont proposés sont les
high id, alors qu'un high id peut se connecter aussi bien chez les high id que
chez les low id (par l'intermédiaire du serveur dans ce dernier cas). Les low
id laissent donc passer des sources sous leur nez.
Mais surtout, les low id surchargent les serveurs, car chaque fois que
quelqu'un veut se connecter sur eux, il doit envoyer un requête au serveur pour
qu'il somme le low id d'établir lui-même la connexion. C'est pour cette raison
que beaucoup de serveurs n'acceptent plus aujourd'hui les low id.