jueves, 4 de abril de 2013

Conceptos básicos de una conexión TCP. Parte III

Fin de la conexión

(negociación en cuatro pasos)

La fase de cierre de la conexión lleva a una negociación en cuatro pasos, terminando de manera independiente la conexión en ambas partes.
Cuando una de las partes desea terminar la comunicación envía un paquete con el flag FIN activo y el cual responderá con un ACK. Es posible que en este estado la comunicación por la parte que envió el fin de la comunicación esté terminada, pero queden aun pendientes envíos por parte del receptor, por ello, en este punto, el sistema que envió el paquete FIN deja de poder enviar pero sigue pudiendo recibir, hasta que el otro le envía un segmento de FIN, enviando primero el ACK.

La biblia Hacker
Img 1. Conexión establecida y terminada.
 

Nota: Esta información está extraida del libro La biblia Hacker 2009.

miércoles, 3 de abril de 2013

Conceptos básicos de una conexión TCP. Parte II

Transferencia de datos

Durante la transferencia de los datos hay una serie de campos de la cabecera que nos ayuda a asegurar la robustez de la comunicación.
A lo largo de la transmisión se van a utilizar como números de secuencia los que se han pactado durante el establecimiento de la conexión. En toda la conexión estarían presentes un par de números de secuencia que son los que van a servir para ordenar los paquetes, evitar duplicados y asegurar la recepción del envío, estos son los campos Número de secuencia y Número de confirmación. Con el Número de secuencia el emisor e refiere a su propio número de secuencia y con el Número de confirmación al número de secuencia del receptor.
Otro de los campos que utilizaremos con este propósito es el checksum, la función de este campo es asegurar que los datos recibidos no están corruptos, descartando los que si lo están.
Para el cálculo de este valor se utiliza la totalidad del paquete TCP(sumando el valor de cabecera más el valor de datos), al que además hay que añadir una pseudo cabecera IP, que incluye la dirección IP fuente, la dirección IP destino, el campo de protocolo de cabecera de IP y la longitud del paquete (TCP o UDP). Esta pseudo cabecera proporciona protección adicional contra paquetes recibidos erróneamentepor problemas de enrutado.
El checksum es el complemento a uno de 16 bits de la suma en completo a uno de todas las palabras de 16 bits de la pseudo-cabecera, cabecera y texto del paquete (TCP o UDP). Si el paquete contiene un número impar de octetos, el número octeto del paquete se rellena con ceros por la derecha hasta obtener una palabra de 16 bits con propósito de calcular el chuecksum.

Cabecera TCP
Img 1. Cálculo de checksum en TCP. 
Para asegurar el envío completo de los datos, el protocolo TCP utiliza asentamientos junto con temporizadores, de manera que el emisor está al tanto de los paquetes recibidos por el receptor procediendo a reenviar los que, pasado un cierto tiempo, no ha recibido confirmación. Para la optimización de todo este proceso el protocolo TCP utiliza una serie de mecanismos:

  • Uso de ventana deslizante.
  • Algoritmo de comienzo lento.
  • Algoritmo de control de congestión.
  • Retransmisión rápida.
  • Recuperación rápida.


Nota: Esta información está extraída del libro La biblia Hacker 2009.

lunes, 1 de abril de 2013

Conceptos básicos de una conexión TCP. Parte I

Funcionamiento del protocolo TCP

El protocolo TCP está orientado a la conexión. La vida de una conexión TCP se compone de tres fases:

  • Establecimiento de la conexión (negociación en tres pasos).
  • Transferencia de datos.
  • Negociación de la desconexión (negociación en cuatro pasos).

Para la transferencia de datos el protocolo TCP va utilizar el principio de ventana para el envío de datagramas y la recepción de las confirmaciones de entrega.


Establecimiento de la conexión

(negociación en tres pasos) 

Para poder iniciar una comunicación entre dos máquinas primero tenemos que establecer una conexión, para ello la máquina que va a dar servicio abre un socket pasivo, de manera que el servidor se queda a la escucha en un determinado puerto. Por el lado del cliente, cuando este quiere iniciar una conexión abre un socket activo sobre el puerto del servidor enviando un segmento SYN inicial (flag SYN activo) con su número de secuencia indicando en el campo Número de secuencia de la cabecera TCP.

A esta petición el servidor responderá con un datagrama SYN/ACK, enviando, por un lado su propio número de activación de secuencia en el campo Número de secuencia de la cabecera y activando el flag SYN, y por otro enviando la confirmación marcando el flag ACK y enviando en el campo Número de confirmación el número de secuencia del cliente. cuando el cliente recibe este paquete de confirmación en vía al servidor un tercer segmento confirmando que lo ha recibido incluyendo en el campo Número de confirmación el número de inicio de la secuencia del servidor y con el flag ACK activo. A partir de este momento la conexión queda establecida y comienza la transmisión de datos.


three way handshake
Img.1 Conexión establecida en tres pasos.



Nota: Esta información está extraida del libro La biblia Hacker 2009.