# 10. Arquitectura y servicios TCP/IP Propósito del apartado Detallar los servicios que ofrece la pila TCP/IP, con foco en los protocolos de transporte (TCP y UDP), su operación, mecanismos de fiabilidad, y la interfaz de programación de sockets que permiten construir aplicaciones de red. Pila TCP/IP en la práctica - Capa de aplicación: protocolos (HTTP, SMTP, DNS, SSH) que crean la carga útil. - Capa de transporte: TCP y UDP gestionan comunicación de extremo a extremo. - Capa de Internet: IP proporciona direccionamiento y encaminamiento. - Capa de enlace/física: entrega de tramas sobre el medio. TCP: características y mecanismos - Orientado a conexión: establecimiento (three-way handshake: SYN, SYN-ACK, ACK) y cierre (FIN/ACK). - Fiabilidad: confirmaciones (ACKs), retransmisiones, temporizadores RTO y control de congestión (slow start, congestion avoidance). - Control de flujo: ventana deslizante que limita el volumen de datos no confirmados. - Segmentación y reensamblado: fragmentación en segmentos y ordenamiento en destino. UDP: características y usos - No orientado a conexión, sin garantías de entrega ni orden; baja latencia y overhead. - Útil para DNS, VoIP, streaming y servicios donde la retransmisión sería contraproducente. Sockets y APIs de programación - Sockets TCP (stream) y UDP (datagram) como abstracción para construir aplicaciones. - Parámetros básicos: dirección, puerto, familia de direcciones (IPv4/IPv6), opciones de socket (timeouts, reuseaddr). Consideraciones de rendimiento - Tamaño de ventana TCP, escalado de ventana y ajuste del RTO. - Impacto de la latencia y la pérdida en throughput (modelos como la ecuación de throughput de TCP). Seguridad y limitaciones - TCP está sujeto a ataques (SYN flood, hijacking); técnicas de mitigación: SYN cookies, filtros. - UDP facilita spoofing y amplificación (DDoS); buenas prácticas: filtrado, rate-limit. Puntos de estudio - Entender en detalle el handshake TCP, el control de congestión y cómo afectan a la transferencia de datos. - Saber cuando usar UDP vs TCP en aplicaciones reales. - Conocer la estructura de cabeceras TCP/UDP y campos relevantes (puertos, flags, secuencia, ACK). Lecturas internas recomendadas - RFC 793 (TCP) y RFC 768 (UDP) para referencia, y documentación sobre programación de sockets.