La couche transport offre des services relatifs au transport en :
- Divisant en segments les données reçues d'une application ;
- Ajoutant un en-tête pour identifier et gérer chaque segment ;
- Utilisant les informations de l'en-tête pour réassembler les segments en données d'application ;
- Transférant les données assemblées à l'application adéquate.
Les protocoles UDP et TCP sont couramment utilisés en tant que protocoles de couche transport.
Les datagrammes UDP et les segments TCP ajoutent aux données des en-têtes contenant un numéro de port source et un numéro de port de destination. Ces numéros de port permettent d'orienter les données vers l'application correcte s'exécutant sur l'ordinateur de destination.
Le protocole TCP ne transmet aucune donnée au réseau tant qu'il n'a pas la confirmation que la destination est prête à les recevoir. Le protocole TCP gère alors le flux de données et renvoie tout segment de données pour lequel la destination n'a pas envoyé d'accusé de réception. Le protocole TCP utilise des mécanismes de connexion, des compteurs, des messages d'accusé de réception et le fenêtrage dynamique pour assurer la fiabilité. Le processus de fiabilité, cependant, impose une surcharge au réseau en raison des en-têtes de segment plus importants et de l'augmentation du trafic réseau entre la source et la destination.
Si les données d'application doivent être rapidement acheminées sur le réseau, ou si la bande passante du réseau ne peut pas prendre en charge la surcharge que représentent les messages de contrôle échangés entre les systèmes source et de destination, les développeurs préfèrent recourir au protocole UDP pour la couche transport. Cela s'explique par le fait que le protocole UDP n'effectue pas de suivi et n'accuse pas réception des datagrammes parvenus à destination. Il se contente de transmettre les datagrammes reçus à la couche application dans l'ordre de leur arrivée et il ne réexpédie pas les datagrammes perdus. Cela n'implique pourtant pas nécessairement que la communication elle-même n'est pas fiable car les protocoles et services de la couche application peuvent comporter des mécanismes permettant de traiter les datagrammes perdus ou retardés si l'application l'exige.
Le développeur d'applications décide du protocole de couche transport répondant le mieux aux exigences de l'application. Il est important de retenir que les autres couches jouent toutes un rôle dans les communications du réseau de données et influencent les performances du réseau.