Dans l'exemple précédent, nous avons vu comment Netscape envoie une requête TCP à un serveur Web tournant sur un autre noeud. Mais imaginez que le noeud qui fait tourner un serveur Web dispose aussi d'un serveur de messagerie, d'un serveur FTP et d'un serveur de noms : comment savoir à quel serveur est destinée la connexion TCP ?
C'est pour cela que les protocoles TCP et UDP possèdent un concept de `ports'. Chaque paquet contient une zone où il stocke son `port de destination', qui dit à quel service le paquet est adressé. Par exemple, le port TCP 25 est le serveur de courrier, et le port TCP 80 le serveur Web (bien qu'on puisse parfois trouver des serveurs Web sur des ports différents). Une liste de ports peut être trouvée dans le fichier `/etc/services'.
De même, lorsque deux fenêtres Netscape accèdent chacune à une partie différente d'un même site Web, comment fait la machine Linux pour trier les paquets TCP provenant du serveur Web ?
C'est ici que le `port source' entre en jeu : chaque nouvelle connexion TCP reçoit un port source différent, pour que chacune puisse être différenciée, même si elles sont dirigées vers la même adresse IP et le même port de destination. Habituellement, le premier port source donné sera le port 1024 et sera incrémenté au fur et à mesure des connexions.