El fin de TCP es proveer un flujo de bytes confiable de extremo a extremo
sobre una internet no confiable. TCP puede adaptarse dinámicamente
a las propiedades de la internet y manejar fallas de muchas clases. Los números de puerta bajo 256 son puertas bien conocidas para
servicios comunes (como FTP). |
![]() |
Implementación del protocolo Cada byte en una conexión de TCP tiene su propio número de secuencia de 32 bits. En TCP se mandan datos en segmentos. Un segmento tiene un encabezamiento de 20 bytes (más opciones) y datos de cero o más bytes. Hay dos límites en el tamaño de segmentos: el tamaño máximo de un paquete de IP (64K bytes) y la unidad de transferencia máxima (MTU, maximum transfer unit) de cada red. Si un segmento es demasiado grande para una red, los ruteadores lo puede dividir en segmentos nuevos (cada segmento nuevo añade un overhead de 40 bytes). TCP usa un protocolo de ventana deslizante. Cuando un emisor manda un segmento, inicia un reloj. El destino responde con un segmento que contiene un acuse de recibo con un número de acuse igual al próximo número de secuencia que espera. Si el reloj termina antes de que llegue el acuse, el emisor manda el segmento de nuevo. Problemas: Se puede generar un acuse para un fragmento de un segmento, pero se puede perder el resto. Los segmentos pueden llegar fuera de orden. Con fragmentación y retransmisión, es posible que fragmentos de una transmisión y una retransmisión lleguen a la vez. La red puede tener congestión. |
Los flags: ·URG. Indica que el segmento contiene datos urgentes. El puntero urgente punta al desplazamiento del número de secuencia corriente donde están los datos urgentes. ·ACK. Indica que hay un número de acuse en el campo de acuse. ·PSH (Push). El recibidor no debiera almacenar los datos antes de entregarlos. ·RST (Reset). Hay un problema en la conexión. ·SYN. Se usa para establecer las conexiones. Una solicitud de conexión tiene SYN = 1 y ACK = 0, mientras que la aceptación de una conexión tiene SYN = 1 y ACK = 1. ·FIN. Indica que el emisor no tiene más datos a mandar. La desconexión es simétrica. |
Las opciones permiten que los hosts puedan especificar el segmento máximo que están listos para aceptar (tienen que poder recibir segmentos de 556 bytes), usar una ventana mayor que 64K bytes, y usar repetir selectivamente en vez de repetir n. |
El puntero urgente sirve para indicar un desplazamiento en bytes a partir del número actual de secuencia en el que se encuentra datos urgentes. |
Los campos de puerto de origen y puerto destino identifican los puntos terminales locales de la conexión. La dirección de un puerto más la IP de su host forman un TSAP único de 48 bits. Los números de sockets identifican la conexión. |
Sirve para el control de flujo en TCP, indica la cantidad de bytes que pueden enviarse comenzando por el byte que se ya se ha enviado acuse de recibo. |