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 courrier électronique, d'un serveur FTP et d'un serveur de noms: comment savoir à quel serveur est destinée la connexion TCP?
C'est pour ça que le TCP et l'UDP possèdent le concept de `ports'. Chaque paquet contient un espace mémoire où il stocke son 'port de destination', qui dit à quel service le paquet est adressé. Par exemple, le port TCP 25 est le serveur mail, 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 `/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 distinguer quels paquets TCP sont destinés à un Netscape plutôt qu'à l'autre ?
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.