Un servidor de ressò (en anglès, echo server) és un servei de xarxa que retorna al client exactament les mateixes dades que aquest li ha enviat, sense modificar-les. S'utilitza principalment per verificar que una connexió funciona correctament d'extrem a extrem, i és un dels exemples més senzills i coneguts en l'aprenentatge de la programació de xarxa.

Funcionament El servidor escolta en un port determinat, accepta connexions entrants i, per cada missatge rebut, l'envia de tornada pel mateix canal. Habitualment opera sobre TCP, tot i que també es pot fer servir amb UDP per a casos en què no cal garantir el lliurament dels paquets.

El comportament d'aquest servei va quedar descrit formalment al protocol Echo, definit a la RFC 862, que li assigna el port 7. Avui dia aquest port rarament és actiu en sistemes en producció: a banda de les raons de seguretat habituals, el protocol Echo sobre UDP ha estat explotat històricament en atacs d'amplificació, en què un atacant falsifica l'adreça d'origen per fer que el servidor inundi una víctima amb respostes. Per aquest motiu, la majoria de sistemes operatius actuals el desactiven per defecte.

La seqüència d'operacions bàsica és sempre la mateixa: crear un sòcol, associar-lo a una adreça i un port, posar-se a l'escolta, acceptar una connexió, llegir les dades rebudes i escriure-les de tornada. Aquesta simplicitat és el que fa del servidor de ressò un punt de partida habitual per aprendre a programar amb sòcols: conté tots els elements essencials d'un servidor sense cap lògica addicional que pugui distreure.

Usos El servidor de ressò s'utilitza per mesurar la latència d'una xarxa, calculant el temps de volta d'un missatge (round-trip time). A diferència del ping, que opera a la capa de xarxa, un servidor de ressò sobre TCP permet verificar que tota la pila de comunicació, fins a la capa d'aplicació, funciona correctament. Això el fa útil per detectar problemes que el ping no detectaria, com ara tallafocs que bloquegen ports específics o configuracions incorrectes del servidor.

A més del diagnòstic, és un recurs molt comú en tutorials i llibres de programació de xarxa perquè permet explicar conceptes com l'acceptació de connexions, la lectura i escriptura de dades i el tancament correcte de les connexions sense haver d'implementar cap protocol complex.

En programació asíncrona En el context de la programació asíncrona, el servidor de ressò apareix sovint com a primer exemple per mostrar com es gestionen múltiples clients de manera concurrent. Amb sòcols no bloquejants i un bucle d'esdeveniments, un sol procés pot atendre moltes connexions alhora sense crear un fil per a cadascuna.

Biblioteques com asyncio de Python ofereixen abstraccions anomenades fluxos (streams) que simplifiquen la implementació: en lloc de gestionar directament els sòcols, el programador treballa amb funcions d'alt nivell per llegir i escriure dades. Això permet centrar-se en la lògica de l'aplicació i facilita també la gestió d'errors i el tancament correcte de les connexions quan el client es desconnecta de manera inesperada.

Vegeu també Socket d'Internet Protocol de control de transmissió Programació asíncrona Latència

Referències

Categoria:Protocols de xarxa Categoria:Programació