Dans le modèle client-serveur, le périphérique qui demande les informations est appelé « client » et celui qui répond à la requête est appelé « serveur ». Les processus client et serveur sont considérés comme faisant partie de la couche application. Le client commence l'échange en demandant des données au serveur, qui répond en envoyant un ou plusieurs flux de données au client. Les protocoles de couche application décrivent le format des requêtes et des réponses entre clients et serveurs. Outre le transfert de données proprement dit, cet échange peut également nécessiter l'authentification de l'utilisateur et l'identification des fichiers de données à transférer.
Les services de messagerie électronique des FAI qui permettent d'envoyer, de recevoir et de stocker les e-mails sont des exemples de réseau client-serveur. Le client de messagerie sur un ordinateur domestique envoie une requête au serveur de messagerie du FAI pour tout e-mail non lu. Le serveur répond en renvoyant au client les e-mails demandés.
Bien que les données soient généralement décrites comme étant transmises du serveur au client, certaines données sont toujours transmises du client au serveur. Le flux de données peut être égal dans les deux sens ou même plus important dans le sens client vers serveur. Par exemple, un client peut transférer un fichier vers le serveur à des fins de stockage. Comme le montre la figure, le téléchargement de données d'un client vers un serveur est dit « ascendant » et le téléchargement de données d'un serveur vers un client est dit « descendant ».