Cuando un programador crea aplicaciones que se comunican a través de la red, debe especificar detalles como:
Sintaxis y semántica de los mensajes que pueden intercambiarse.
Si el cliente o el servidor inicia la interacción.
Las acciones a realizar si surge un error.
Cómo saben los dos lados cuándo terminar la comunicación.