Protocolo TCP










Ver mi IP  See my IP  

Cargando tu IP...

  

Protocolo TCP

- TCP proporciona una cantidad considerablemente mayor de servicios a las aplicaciones que UDP, notablemente, la recuperaci�n de errores, control de flujo y fiabilidad. Se trata de un protocolo orientado a conexi�n a diferencia de UDP. La mayor�a de los protocolos de aplicaci�n de usuario, como TELNET y FTP, usan TCP.

- El principal prop�sito de TCP es proporcionar una conexi�n l�gica fiable entre parejas procesos. No asume la fiabilidad de los protocolos de niveles inferiores (como IP) por lo que debe ocuparse de garantizarla.

Características TCP

- Transferencia de datos a trav�s de un canal:
Desde el punto de vista de la aplicaci�n, TCP transfiere un flujo continuo de bytes a trav�s de Internet. La aplicaci�n no ha de preocuparse de trocear los datos en bloques o en datagramas. TCP se encarga de esto al agrupar los bytes en segmentos TCP, que se pasan a IP para ser retransmitidos al destino. Adem�s, TCP decide por s� mismo c�mo segmentar los datos y puede enviarlos del modo que m�s le convenga.
A veces, una aplicaci�n necesita estar segura de que todos los datos pasados a TCP han sido transmitidos efectivamente al destino. Por esa raz�n, se define la funci�n "push". Esta funci�n mandar� todos los segmentos que sigan almacenados al host de destino. El cierre normal de la conexi�n tambi�n provoca que se llame a esta funci�n, para evitar que la transmisi�n quede incompleta.

- Fiabilidad:
TCP asigna un n�mero de secuencia a cada byte transmitido, y espera una reconocimiento afirmativo (ACK) del TCP receptor. Si el ACK no se recibe dentro de un intervalo de timeout, los datos se retransmiten. Como los datos se transmiten en bloques (segmentos de TCP), al host de destino s�lo se le env�a el n�mero de secuencia del byte de cada segmento.
El TCP receptor utiliza los n�meros de secuencia para organizar los segmentos cuando llegan fuera de orden, as� como para eliminar segmentos duplicados.

Control de flujo:
El TCP receptor, al enviar un ACK al emisor, indica tambi�n el n�mero de bytes que puede recibir a�n, sin que se produzca sobrecarga y desbordamiento de sus buffers internos. Este valor se env�a en el ACK en la forma del n�mero de secuencia m�s elevado que se puede recibir sin problemas. Este mecanismo se conoce tambi�n como mecanismo de ventanas y se estudiar� posteriormente en este cap�tulo.

- Multiplexaci�n:
Se consigue usando puertos, al igual que en UDP.

- Conexiones l�gicas:
La fiabilidad y el control de flujo descritos m�s arriba requieren que TCP inicialice y mantenga cierta informaci�n de estado para cada canal. La combinaci�n de este estado, incluyendo z�calos, n�meros de secuencia y tama�os de ventanas, se denomina conexi�n l�gica. Cada conexi�n se identifica un�vocamente por el par de z�calos del emisor y el receptor.

- Full Duplex:
TCP garantiza la concurrencia de los flujos de datos en ambos sentidos e la conexi�n.

Pincipio de ventana en TCP

Un simple protocolo de transporte podr�a emplear el siguiente principio: enviar un paquete, y esperar un reconocimiento del receptor antes de enviar el siguiente. Si el ACK no se recibe dentro de cierto l�mite de tiempo, se retransmite.
Aunque este mecanismo asegura fiabilidad, s�lo usa una parte del ancho de banda de la red que est� disponible.

Considerar ahora un protocolo en el que el emisor agrupa los paquetes que va a transmitir y que utilice las siguientes reglas:
- El emisor puede enviar todos los paquetes dentro de la ventana sin recibir un ACK, pero debe disparar un cron�metro para el timeout para cada uno de ellos.
- El receptor debe reconocer cada paquete recibido, indicando el n�mero de secuencia del �ltimo paquete bien recibido.
- El emisor desliza la ventana para cada ACK recibido.

En conclusion, este mecanismo de ventanas asegura:
- Transmisi�n fiable.
- Mejor aprovechamiento del ancho de banda (mejora del flujo).
- Control de flujo, ya que el receptor puede retrasar la respuesta a un paquete con un reconocimiento, conociendo los buffers libres de los que dispone y el tama�o de la ventana de comunicaci�n.

Este mecanismo es el que se utiliza en TCP, pero con unas cuantas diferencias:
- Como TCP proporciona una conexi�n con un flujo de bytes, los n�meros de secuencia se asignan a cada byte del canal. TCP divide el flujo de bytes en segmentos. El principio de la ventana se aplica a nivel de bytes; es decir, los segmentos enviados y los ACKs recibidos llevar�n n�meros de secuencia de forma que el tama�o de la ventana se exprese con un n�mero de bytes, en vez del de paquetes.
- El tama�o de la ventana lo determina el receptor, cuando se establece la conexi�n, y puede variar durante la transmisi�n de datos. Cada ACK incluir� el tama�o de la ventana que acepta el receptor en ese momento.

Segmento TCP

Segmento TCP

- Source Port: El n�mero de puerto de 16 bits del emisor, que el receptor usa para responder.
- Destination Port: El n�mero de puerto de 16 bits del receptor.
- Sequence Number: El n�mero de secuencia del primer byte de datos del segmento. Si el byte de control SYN est� a 1, el n�mero de secuencia es el inicial(n) y el primer byte de datos ser� el n+1.
- Acknowledgment Number: Si el bit de control ACK est� a 1, este campo contiene el valor del siguiente n�mero de secuencia que se espera recibir.
- Data Offset: El n�mero de palabras de 32 bits de la cabecera TCP. Indica d�nde empiezan los datos.
- Reserved: Seis bits reservados para su uso futuro; deben ser cero.
- URG: Indica que el campo "urgent pointer" es significativo en el segmento.
- ACK: Indica que el campo de reconocimiento es significativo en el segmento.
- PSH: Funci�n "Push".
- RST: Resetea la conexi�n.
- SYN: Sincroniza los n�meros de secuencia.
- FIN: No hay m�s datos del emisor.
- Window: Usado en segmentos ACK. Especifica el n�mero de bytes de datos que comienzan con el byte indicado en el campo n�mero de reconocimiento que el receptor esta dispuesto a aceptar.
- Checksum: El complemento a uno de 16 bits de la suma de los complementos a uno de todas las palabras de 16 bits de la pseudocabecera, la cabecera TCP y los datos TCP. Al computar el checksum, el mismo campo checksum se considera cero.
- Urgent Pointer: Apunta al primer octeto de datos que sigue a los datos importantes. S�lo es significativo cuando el bit de control URG est� a uno.
- Options: S�lo para el caso de opciones de datagramas IP, las opciones pueden ser:
  - Un s�lo byte conteniendo el n�mero de opci�n, o
  - Una opci�n de longitud variable
  Actualmente hay definidas tres opciones:
    Tipo Long Significado
    ---- ----     -------
     0    -        Fin e la lista de opciones.
     1    -        No-Operaci�n.
     2    4       Tama�o m�ximo del segmento.
- Padding: Bytes todos a cero para rellenar la cabecera TCP a una longitud total que sea un m�ltiplo de 32 bits.

Reconocimientos y retransmisiones

TCP env�a los datos en segmentos de longitud variable. Los n�meros de secuencia se basan en una cuenta de los bytes. Los reconocimientos especifican el n�mero de secuencia del siguiente byte que el receptor espera recibir.

Ahora suponer que un segmento se pierde o se corrompe. En ese caso, el receptor reconocer� cualquier segmento sucesivo con un reconocimiento referido al primer byte del paquete perdido. Finalmente, se producir� un timeout y el segmento perdido se retransmitir�.

Cada implementaci�n de TCP es libre de reaccionar ante un timeout del modo que deseen los dise�adores. Sea cual sea la elecci�n, el rendimiento m�ximo se pierde. Esto se debe a que el ACK no contiene un segundo n�mero de secuencia indicando la trama actual que se ha recibido.

Cada TCP deber�a implementar un algoritmo para adaptar los tiempos de timeout a usar para el viaje de los segmentos. Para hacerlo, TCP registra el momento de env�o de un segmento, y el de recepci�n del ACK. Se promedia un valor para varios de estos viajes que se emplear� como valor de timeout para el siguiente segmento a enviar.
Esto es una caracter�stica importante, ya que los retardos pueden ser variables en la red, dependiendo de m�ltiples factores, tales como la carga de las redes intermedias de baja velocidad o la saturaci�n de las pasarelas.

API de TCP

La API de TCP no est� definida del todo. S�lo algunas funciones b�sicas que deber�an ser proporcionadas se describen en el RFC 793 - TCP ("Transmission Control Protocol"). Como ocurre con la mayor�a de los RFCs de la pila de protocolos TCP/IP, se deja un elevado grado de libertad a los dise�adores, permitiendo en consecuencia implementaciones �ptimas (dependientes del sistema operativo), lo que resulta en una mayor eficiencia.

Para medir la velocidad de tu conexion TCP puedes utilizar este test de velocidad.
Ver mi IP - Enlaces
Protocolo TCP - Aviso Legal
Ver mi IP en espa�ol See my IP in english Ver mi IP