J. Postel (University of Southern California/Information Sciences Institute)May19832007-12-07
Heureuse époque où un RFC pouvait tenir sur
une seule page. Celui-ci normalise le protocole
echo, utile surtout pour le débogage.
echo sert à déboguer des serveurs
réseaux. Son principe est de renvoyer les données transmises par le
client en TCP ou en
UDP. Les requêtes ICMP du même nom ne
suffisent pas car, sur une machine Unix, elles
sont typiquement traitées par le noyau et une
machine peut donc répondre à ping et être
néanmoins incapable de faire fonctionner des applications, par exemple
parce qu'elle swappe
trop. Un protocole de test de la couche 7 était
donc nécessaire.
Du côté du serveur, echo est typiquement mis en œuvre par
inetd mais on peut aussi en
trouver une curieuse
implémentation dans Emacs ou bien mon implémentation en Python, pour ceux qui veulent voir
un exemple d'utilisation de la bibliothèque SocketServer.
Une autre implémentation, en Go, illustrant bien les
possibilités de ce langage, est NoNewContent.
Comme echo est un protocole très simple, les programmes de test
réseau l'utilisent souvent. Par exemple, GnuTLS
affiche un sample TLS 1.0 echo server dans sa documentation.
Du côté du client, echo se retrouve par exemple dans echoping, à qui il doit
son nom (echo était le premier protocole utilisé par echoping).
Le protocole echo est en général désactivé depuis une alerte
de sécurité. Il est à noter que echo n'est dangereux qu'en UDP
(et encore, il ne permet pas d'amplification de l'attaque) ou bien
combiné avec d'autres protocoles comme chargen (). Mais le résultat de
cette alerte a été la désactivation quasi-systématique de cet utile
protocole (à une époque, il était activé par défaut sur toute machine
Unix et sur les routeurs Cisco).