En el ejemplo anterior, mostramos a Netscape enviando una consulta TCP a un servidor web ejecutándose en otro nodo. Pero imagine que el nodo del servidor web también está ejecutando un servidor de correo electrónico, otro de FTP y un servidor de nombres: ¿cómo sabe a qué servidor va dirigido cada conexión TCP?
Es por esto que TCP y UDP tienen un concepto de «puertos». Cada paquete
tiene espacio para un «puerto de destino», que indica para qué servicio es
el paquete. Por ejemplo, el puerto 25 de TCP es el servidor de corre, y el
puerto 80 TCP es el servidor web (aunque a veces encuentre servidores web
en puertos diferentes). Puede encontrar una lista de puertos en
/etc/services
.
Además, si dos ventanas de netscape acceden a la vez a diferentes partes del servidor web, ¿cómo sabe la máquina con el Linux ejecutando Netscape repartir correctamente los paquetes TCP con las respuestas del servidor web?
Aquí es donde entra el «puerto de origen»: cada nueva conexión TCP toma un puerto diferente, de manera que todo el mundo pueden diferenciarlas, incluso si van dirigidas a los mismos IP y puerto de destino. Normalmente, el primer puerto disponible será el 1024, e irá incrementándose con el tiempo y el uso.