Saltar al contenido

TCP, UDP y puertos

Qué es un puerto y qué es un socket, en qué se diferencian TCP y UDP, cómo se abre una conexión TCP y cuáles son los puertos bien conocidos que hay que llevar sabidos al examen.

Puertos, sockets y unidades de datos

La capa de red deja el paquete en la máquina correcta, pero dentro de esa máquina puede haber veinte programas esperando información. Distinguirlos es el trabajo de la capa de transporte, que para ello no se vale de direcciones, sino de puertos. Un puerto es un número de 16 bits, de 0 a 65.535, que señala a qué programa de la máquina van dirigidos los datos.

La pareja formada por una dirección IP y un puerto se llama socket, y es lo que identifica sin ambigüedad un extremo de la conversación. Una conexión completa queda definida por los dos sockets, el de origen y el de destino: por eso un mismo servidor web puede atender a cientos de clientes por el puerto 80 sin mezclarlos, porque el otro extremo de cada conversación es distinto.

RangoNombreQuién los usa
0 a 1023Puertos bien conocidos o de sistemaServicios estándar. Los asigna IANA
1024 a 49151Puertos registrados o de usuarioAplicaciones concretas que han pedido su número
49152 a 65535Puertos dinámicos o privadosLos que el sistema operativo asigna al vuelo al cliente que abre una conexión

La unidad de datos de esta capa recibe dos nombres según el protocolo, y es una pregunta habitual: en TCP se llama segmento y en UDP se llama datagrama, igual que en la capa de red.

Los tres cortes: 1023, 49151 y 65535. Y socket igual a dirección IP más puerto.

Para el examen

  • Socket: dirección IP más puerto

  • Bien conocidos: 0 a 1023

  • Registrados: 1024 a 49151

  • Dinámicos: 49152 a 65535

TCP: qué significa que sea garantista

TCP, protocolo de control de transmisión, es el transporte fiable de la pila. Está definido en la RFC 793 y su cabecera mide de 20 a 60 bytes. Se dice de él que es garantista, y esa palabra resume cinco compromisos concretos que conviene saber desglosar.

  • Orientado a conexión: antes de mandar nada, los dos extremos acuerdan que van a hablar y con qué números de secuencia.
  • Entrega ordenada: cada segmento lleva un número de secuencia, así que el receptor recompone el orden aunque lleguen desordenados.
  • Acuse de recibo: el receptor confirma lo que le va llegando, y lo que no se confirma se vuelve a enviar.
  • Control de flujo: el receptor anuncia cuánto puede admitir, para que el emisor no lo ahogue.
  • Control de congestión: el emisor baja el ritmo cuando detecta pérdidas, para no hundir la red.

Todo eso tiene un precio: más cabecera, más mensajes de ida y vuelta y más retardo. Por eso TCP es el transporte de lo que no puede llegar mal, como una página web, un correo o una transferencia de ficheros, y no el de lo que no puede llegar tarde.

Fiable no significa rápido. TCP garantiza que llega y que llega en orden, no que llegue pronto.

Para el examen

  • Qué garantiza: conexión, confirmaciones, reordenación y retransmisión

  • Qué controla: flujo y congestión

  • Su precio: más cabecera y más retardo

UDP: el transporte que no promete nada

UDP, protocolo de datagramas de usuario, es lo contrario. No establece conexión, no numera lo que envía, no confirma nada y no retransmite lo perdido: coge los datos, les pone una cabecera de 8 bytes con los dos puertos, la longitud y una suma de comprobación, y los suelta a la red.

Eso no lo convierte en un protocolo defectuoso, sino en uno con otro propósito. Al no llevar acuses ni control de flujo, su sobrecoste es mínimo y su retardo también, así que es más rápido. Si la aplicación necesita fiabilidad, se la monta ella por su cuenta: en UDP la garantía, si la hay, la pone el nivel de aplicación.

Encaja cuando llegar tarde es peor que no llegar. En una llamada de voz, repetir un fragmento perdido de hace dos segundos no sirve de nada; en una consulta breve, montar una conexión entera para dos mensajes sale caro. De ahí que trabajen sobre UDP la voz y el vídeo en directo, las consultas de nombres, la sincronización de hora o el reparto de direcciones.

La cabecera de UDP son 8 bytes fijos y solo tiene cuatro campos. La de TCP va de 20 a 60.

Para el examen

  • Lo que no hace: ni conexión, ni confirmación, ni reordenación

  • Tamaño de su cabecera: 8 bytes

  • Para qué sirve: voz, vídeo, DNS y juegos

TCP frente a UDP

CriterioTCPUDP
ConexiónOrientado a conexiónSin conexión
FiabilidadGarantiza la entregaNo la garantiza
OrdenEntrega ordenadaNo respeta el orden
Acuse de reciboSí, y retransmite lo no confirmadoNo
Control de flujo y congestiónNo
CabeceraDe 20 a 60 bytes8 bytes fijos
Unidad de datosSegmentoDatagrama
Velocidad y sobrecosteMás lento, más sobrecosteMás rápido, menos sobrecoste
Difusión y multidifusiónNo las admiteSí las admite
Usos típicosWeb, correo, transferencia de ficheros, sesiones remotasVoz y vídeo en directo, consultas de nombres, hora, reparto de direcciones

Un matiz que se pregunta con trampa: los dos son protocolos de la capa 4 y los dos usan puertos, y ninguno de los dos entiende de direcciones IP. La diferencia no está en a quién llegan, sino en qué prometen por el camino.

Para el examen

  • Cabeceras: 20 bytes en TCP y 8 en UDP

  • Si el enunciado habla de tiempo real: la respuesta es UDP

  • Si habla de fiabilidad: la respuesta es TCP

Los puertos bien conocidos que hay que llevar sabidos

Esta tabla es de las que se preguntan tal cual, sin razonamiento posible. Merece la pena repasarla el día antes.

PuertoServicioTransporte
20FTP, canal de datosTCP
21FTP, canal de controlTCP
22SSH, y con él SFTP y SCPTCP
23TelnetTCP
25SMTP, entrega de correo entre servidoresTCP
53DNSUDP para consultas y TCP para transferencias de zona
67 y 68DHCP, servidor y clienteUDP
80HTTPTCP
110POP3TCP
143IMAPTCP
443HTTPSTCP
465SMTP sobre TLS implícitoTCP
587SMTP de envío desde el cliente, con STARTTLSTCP
993IMAP sobre TLSTCP
995POP3 sobre TLSTCP

Los del correo son los que más se confunden y se ordenan mejor por parejas: el que recoge dejando el mensaje en el servidor es IMAP, 143 en claro y 993 cifrado; el que se lo descarga es POP3, 110 en claro y 995 cifrado; y el que envía es SMTP, 25 entre servidores, 587 desde el programa del usuario y 465 en su variante cifrada desde el principio.

DNS aparece aquí solo por su puerto, el 53. Su arquitectura, sus tipos de registro y su funcionamiento se estudian en el tema dedicado a los servicios de nombres.

Regla para el correo cifrado: 993 es IMAP, 995 es POP3 y 465 es SMTP. Las tres acaban en 5 salvo la primera, y van en el mismo orden que sus versiones en claro, 143, 110 y 25.

Para el examen

  • 20 y 21, 22 y 23: FTP, SSH y Telnet

  • 25, 53, 67 y 68: SMTP, DNS y DHCP

  • 80 y 443: HTTP y HTTPS

  • 110, 143 y 161: POP3, IMAP y SNMP

  • 389: LDAP

FTP: dos canales y dos modos

FTP merece un apartado propio porque es el único servicio que usa dos puertos a la vez, y eso es exactamente lo que se pregunta de él. Una transferencia se hace en dos fases: primero se establece la conexión de control, por la que viajan los comandos, y después se abre una segunda conexión, la de datos, por la que viajan los ficheros.

ModoComando que lo activaQuién abre la conexión de datos
ActivoPORTEl servidor hacia el cliente
PasivoPASVEl cliente hacia el servidor

En los dos casos es el cliente quien inicia la conexión de control contra el puerto 21 del servidor. La diferencia está en la segunda conexión: en modo activo el servidor toma la iniciativa y llama al cliente desde su puerto 20, y en modo pasivo es el cliente quien vuelve a llamar al servidor.

Esa diferencia tiene una consecuencia práctica muy conocida: el modo activo suele fallar cuando el cliente está detrás de un cortafuegos o de una traducción de direcciones, porque el servidor no puede iniciar una conexión hacia dentro. Por eso el modo pasivo es el que se usa hoy casi siempre.

Control en el 21 y datos en el 20. Activo lo abre el servidor, pasivo lo abre el cliente.

Para el examen

  • Puerto de control: 21

  • Puerto de datos: 20

  • Modo activo: el servidor abre la conexión de datos; choca con el cortafuegos del cliente

  • Modo pasivo: la abre el cliente

El segmento TCP y el saludo de tres vías

La cabecera de un segmento TCP ocupa 20 bytes en su forma mínima y llega a 60 con opciones. Sus campos explican por sí solos de dónde salen las garantías del protocolo.

CampoTamañoPara qué sirve
Puerto de origen2 bytesQué aplicación envía
Puerto de destino2 bytesQué aplicación recibe
Número de secuencia4 bytesPosición de estos datos dentro del flujo; es lo que permite reordenar
Número de acuse de recibo4 bytesQué se ha recibido ya correctamente y por dónde debe seguir el otro extremo
Desplazamiento de datos4 bitsDónde acaba la cabecera y empiezan los datos
Indicadores de controlUnos pocos bitsMarcan qué clase de segmento es: apertura, cierre, confirmación
Tamaño de ventana2 bytesCuántos datos admite el receptor sin confirmar; es el control de flujo
Suma de comprobación2 bytesDetección de errores
Puntero de urgencia2 bytesSeñala datos que deben tratarse antes
Opciones0 a 40 bytesExtensiones acordadas al abrir la conexión

Antes de enviar un solo byte de datos, los dos extremos abren la conexión con un intercambio de tres mensajes, el saludo de tres vías. Lo que se acuerda ahí son los números de secuencia iniciales que va a usar cada uno, y de paso los parámetros de la sesión.

  1. El cliente envía un segmento SYN con su número de secuencia inicial y pasa a esperar respuesta.
  2. El servidor contesta con un segmento que hace dos cosas a la vez: confirma el del cliente y anuncia su propio número de secuencia inicial.
  3. El cliente confirma el del servidor, y a partir de ese momento la conexión está establecida por los dos lados.

Son tres mensajes, no cuatro, porque el segundo confirma y pregunta en el mismo segmento.

SYN →

El cliente propone conexión y manda su número de secuencia inicial.

← SYN + ACK

El servidor acepta, confirma el del cliente y manda el suyo.

ACK →

El cliente confirma. A partir de aquí la conexión está establecida.

Cierre en cuatro pasos

FIN y ACK en cada sentido: cada extremo cierra el suyo por separado.

Para el examen

  • Saludo de tres vías: SYN, SYN-ACK y ACK

  • Cierre ordenado: cuatro pasos, con FIN y ACK en cada sentido