TCP (Transmission Control Protocol)

Redes y comunicaciones de datos. Protocolo de Control de Transmisión. Segmentos. Push. Puertos de aplicación. Formato de una cabecera. Solicitud y respuesta de conexión. Transferencia de datos. Control de flujo. Rendimiento. Estados. Errores

  • Enviado por: Luis Conde García
  • Idioma: castellano
  • País: España España
  • 27 páginas
publicidad

Protocolo de Control de Transmisión (TCP)

TCP es un protocolo de transporte orientado a conexión. Esto hace que los datos se entreguen sin errores, sin omisión y en secuencia.

Tiene las siguientes características:

  • Protocolo orientado a conexión. Es decir, las aplicaciones solicitan la conexión al destino y luego usan están conexión para entregar los datos, garantizando que estos serán entregados sin problemas.

  • Punto a punto. Una conexión TCP tiene dos extremos, emisor y receptor.

  • Confiabilidad. TCP garantiza que los datos transferidos serán entregados sin ninguna perdida, duplicación o errores de transmisión.

  • Full duplex. Los extremos que participan en una conexión TCP pueden intercambiar datos en ambas direcciones simultáneamente.

  • Conexión de inicio confiable. El uso de three-way handshake garantiza una conexión de inicio confiable y sincronizada entre los dos extremos de la conexión.

  • Conexión de finalización aceptable. TCP garantiza la entrega de todos los datos antes de la finalización de la conexión.

TCP es un protocolo de nivel 4 (transporte) en la capa del OSI, por eso necesita valerse de IP para el envío de sus segmentos o mensajes. De esta manera IP trata el mensaje TCP como la información que debe entregar y en ningún momento intenta interpretar su contenido, como generalmente se hace al pasar un mensaje de una capa inferior a otra. Por eso un router o cualquier dispositivo de nivel 3 del OSI solo puede observar los encabezados IP para el reenvío de los datagramas. El encargado de interpretar los mensajes TCP, después de recibirlos de la capa de red, es el TCP de la maquina de destino.

TCP es un protocolo de tamaño considerable, que cumple con una gran número de funciones:

  • Asociar puertos con conexiones.

  • Establecer conexiones usando un acuerdo en tres pasos.

  • Realizar un arranque lento para evitar sobrecargas.

  • Dividir los datos en segmentos para su transmisión.

  • Numerar los datos.

  • Manejar los segmentos entrantes duplicados.

  • Calcular las sumas de control.

  • Regular el flujo de datos usando las ventanas de envío y recepción.

  • Terminar las conexiones de manera ordenada.

  • Abortar conexiones.

  • Marcar datos urgentes.

  • Confirmación positiva de retransmisión.

  • Calculo de los plazos de retransmisión.

  • Reducir el trafico cuando la red se congestiona

  • Indicar los segmentos que llegan en desorden.

  • Comprobar si las ventanas de recepción están cerradas.

El modelo conceptual de una conexión es que una aplicación envía un flujo de datos a otra aplicación pareja. Al mismo tiempo, recibe un flujo de datos de la otra. TCP proporciona un servicio dúplex que maneja simultáneamente los dos flujos de datos.

TCP debe convertir los flujos de datos salientes de una aplicación de forma que se puedan entregar como datagramas.

La aplicación traslada los datos a TCP y este los sitúa en un búfer de envío. Toma un trozo de los datos, le añade una cabecera, creando un segmento.

Búfer de envío.

Extrae un trozo de datos y se añade una cabecera.

Segmento

TCP traslada el segmento a IP para que lo entregue como un único datagrama. El empaquetado de datos en trozos del tamaña adecuado permite usar de manera más eficiente los servicios de transmisión, por lo que TCP debería esperar a recoger una cantidad razonable de datos antes de crear un segmento.

En algunas ocasiones el programa cliente necesita que TCP entregue a la aplicación del servidor remoto unos datos lo antes posible, para esto utiliza una la función {push}. Imaginemos que un programa cliente ha iniciado una sesión interactiva con un servidor remoto y el usuario ha tecleado un comando y pulsado retorno de carro. El programa cliente usara esta función para decir a TCP que entregue lo antes posible dichos datos.

El interfaz que esta entre TCP y el proceso local se llama puerto. Para que una aplicación pueda acceder a la red y pueda enviar datos a través de ella lo debe hacer a través de un puerto. La aplicación utiliza un número de puerto para enviar el flujo de datos y el otro extremo de la conexión los recibe a través de otro número de puerto.

Los puertos se identifican mediante un número decimal que va desde el 0 hasta el 65.535, tanto en TCP como en UDP. Los fabricantes que implementan TCP disponen de una gran libertad para asignar números de puertos a los procesos, aunque la Autoridad de Números Asignados de Internet (IANA) ha dedicado un rango que va desde el 0 al 1.023 a una serie de procesos comunes (RFC 1700) como telnet, ftp, pop3, smtp, etc.

Cada vez que un cliente quiere una conexión pide al sistema operativo que le asigne un número de puerto en desuso, sin reservar. Al finalizar la conexión, el cliente devuelve el puerto al sistema y lo puede utilizar otro cliente.

Puerto

Aplicación

Descripción

9

Discard

Descartar todos los datos entrantes

19

Chargen

Intercambiar flujos de caracteres

20

FTP-Data

Puerto de transferencia de datos para la transferencia de archivos

21

FTP

Puerto de dialogo para la transferencia de datos

23

Telnet

Puerto de conexión remota mediante Telnet

25

SMTP

Puerto del Protocolo simple de transferencia de correo

110

POP3

Servicio de recuperación de correo electrónico

119

NNTP

Servicio de publicación de noticias de red

Listado de puertos TCP estandarizados.

Para especificar plenamente una conexión, la dirección IP del host se añade al número de puerto. Esta combinación se denomina socket (enchufe). Por tanto, un número de socket es único en toda la interred. Una conexión entre dos host queda totalmente descrita por los sockets asignados a cada Terminal de la conexión. La conexión entre dos sockets proporciona una ruta de comunicación bidireccional (duplex total) entre los dos procesos.

TCP utiliza dos tipos de sockets:

  • Sockets de corriente. Se utilizan con TCP para lograr un intercambio de datos fiable, secuencial y bidireccional.

  • Sockets de datagrama. Se utilizan con UDP para lograr transferencias de datos no fiables y bidireccionales.

Los sockets constituyen una interfaz de programa de aplicación (API) entre TCP, los procesos y las aplicaciones. Esta API permite a los programadores que sus aplicaciones accedan a TCP.

0 1 2 3


0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

Puerto de origen

Puerto de destino

Número de secuencia

Número de confirmación o acuse de recibo

Tamaño cabecera

Reservado

Bits de control

Ventana

Suma de control

Puntero urgente

Opción/es