Protocolo TCP
Protocolo TCP
MECANICA Y ELECTRICA
” INGENIERÍA EN COMUNICACIONES Y
ELECTRÓNICA”
PROTOCOLO TCP
RFC-793
Contenido:
Funcionamiento
El protocolo de control de transmisión permite la transmisión de información en ambas
direcciones. Por lo tanto, los sistemas informáticos que se comunican mediante TCP pueden
enviar y recibir datos de forma simultánea, como si se tratase de una llamada telefónica. En
este contexto, las unidades de transmisión básicas de las que echa mano el protocolo son
segmentos (paquetes) que, aparte de los datos de uso, también pueden contener información
de control y están limitados a un tamaño de 1500 bytes.
El software TCP se activa mediante distintas aplicaciones de red, como los navegadores de
red o los servidores, a través de interfaces específicas. Cada conexión se debe identificar
siempre claramente mediante dos puntos terminales definidos (cliente y servidor). En este
contexto, qué lado desempeña el papel de cliente y cuál el de servidor es indiferente. Lo que
importa es que el software TCP cuente con una pareja ordenada de dirección IP y puerto
(también denominada socket) en cada punto terminal.
Operación
Como se ha hecho notar más arriba, el propósito principal de TCP consiste en proporcionar
un servicio de conexión o circuito lógico fiable y seguro entre pares de procesos. Para
proporcionar este servicio encima de un entorno de internet menos fiable, el sistema de
comunicación requiere de mecanismos relacionados con las siguientes áreas:
La operación básica de TCP en cada uno de estas áreas se describe en los siguientes párrafos:
TCP es capaz de transferir un flujo continuo de octetos en cada sentido entre sus usuarios
empaquetando un cierto número de octetos en segmentos para su transmisión a través del
sistema de internet. En general, los módulos de TCP deciden cuándo bloquear y enviar
datos según su propia conveniencia.
Algunas veces los usuarios necesitan estar seguros de que todos los datos que habían
entregado al módulo de TCP han sido transmitidos.
Para este propósito se define una función 'push' ("enviar inmediatamente").
▪ Fiabilidad:
El módulo de TCP debe poder recuperar los datos que se corrompan, pierdan, dupliquen o se
entreguen desordenados por el sistema de comunicación del entorno de internet. Esto se
consigue asignando un número de secuencia a cada octeto transmitido, y exigiendo un acuse
de recibo (ACK, N.T.:del inglés 'acknowledgment') del módulo de TCP receptor. Si no se
recibe un ACK dentro de un cierto plazo de expiración prefijado, los datos se retransmiten.
▪ Flujo de control:
TCP proporciona al receptor un medio para controlar la cantidad de datos enviados por el
emisor. Esto se consigue devolviendo una "ventana" con cada ACK, indicando el rango de
números de secuencia aceptables más allá del último segmento recibido con éxito. La
ventana indica el número de octetos que se permite que el emisor transmita antes de que
reciba el siguiente permiso.
▪ Multiplexamiento:
Para permitir que muchos procesos dentro de un único 'host' utilicen simultáneamente las
posibilidades de comunicación de TCP, el módulo de TCP proporciona una serie de
direcciones o puertos dentro de cada 'host'. Concatenadas con las direcciones de red y de
'host' de la capa de comunicación internet conforman lo que se denomina una dirección de
conector ('socket'). Un par de direcciones de conector identifica de forma única la conexión.
Es decir, un conector puede utilizarse simultáneamente en múltiples conexiones.
La asignación de puertos a los procesos se gestiona de forma independiente en cada 'host'.
▪ Conexiones
La fiabilidad y los mecanismos de control de flujo descritos más arriba exigen que los
módulos de TCP inicialicen y mantengan una información de estado para cada flujo de datos.
La combinación de esta información, incluyendo las direcciones de los conectores, los
números de secuencia y los tamaños de las ventanas, se denomina una conexión. Cada
conexión queda especificada de forma única por un par de conectores que corresponden con
sus dos extremos.
Cuando dos procesos desean comunicarse, sus módulos de TCP deben establecer primero
una conexión (inicializar la información de estado en cada lado). Cuando la comunicación se
ha completado, la conexión se termina o cierra con la intención de liberar recursos
para otros usos.
▪ Prioridad y seguridad:
Formato de la cabecera
Los segmentos de TCP se envían como datagramas de internet. La cabecera del protocolo de
internet transporta varios campos de información, entre los que se incluyen las direcciones
de los 'host’ de origen y de destino. Una cabecera de TCP sigue a la cabecera de internet,
aportando información específica del protocolo de TCP. Esta división permite la existencia
de otros protocolos de la capa de ‘host' distintos de 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 acuse de recibo |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Posic | |U|A|P|R|S|F| |
| de los| Reservado |R|C|S|S|Y|I| Ventana |
| datos | |G|K|H|T|N|N| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Suma de control | Puntero urgente |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Opciones | Relleno |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Datos |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
El número de secuencia del primer octeto de datos de este segmento (excepto cuando el
indicador SYN esté puesto a uno). Si SYN está puesto a uno es el número de secuencia
original (ISN: 'initial sequence number') y, entonces, el primer octeto de datos es ISN+1.
Si el bit de control ACK está puesto a uno, este campo contiene el valor del siguiente número
de secuencia que el emisor del segmento espera recibir. Una vez que una conexión queda
establecida, este número se envía siempre.
El número de palabras de 32 bits que ocupa la cabecera de TCP. Este número indica dónde
comienzan los datos. La cabecera de TCP (incluso una que lleve opciones) es siempre un
número entero de palabras de 32 bits.
o Reservado: 6 bits
o Ventana: 16 bits
El número de octetos de datos, a contar a partir del número indicado en el campo de "Número
de acuse de recibo", que el emisor de este segmento está dispuesto a aceptar.
Este campo indica el valor actual del puntero urgente como un desplazamiento positivo desde
el número de secuencia de este segmento. El puntero urgente apunta al número de secuencia
del octeto al que seguirán los datos urgentes. Este campo es interpretado únicamente si el bit
de control URG está establecido a uno.
o Opciones: variable
Los campos de opciones pueden ocupar un cierto espacio al final de la cabecera de TCP, pero
siempre de una longitud múltiplo de 8 bits.
En el cálculo de la suma de control, se incluyen todas las opciones. Una opción puede
empezar en cualquier posición múltiplo de ocho.
Transferencia de datos
El tamaño de la ventana de recepción TCP es la cantidad de datos recibidos (en bytes) que
pueden ser metidos en el buffer de recepción durante la conexión. La entidad emisora
puede enviar una cantidad determinada de datos, pero antes debe esperar un asentimiento
con la actualización del tamaño de ventana por parte del receptor.
Fin de la conexión
Una conexión puede estar "medio abierta" en el caso de que uno de los lados la finalice, pero
el otro no. El lado que ha dado por finalizada la conexión no puede enviar más datos, pero la
otra parte si podrá.
Puertos TCP
El protocolo TCP utiliza la noción de números de acceso para identificar enviar y la recepción
de límites del uso en un anfitrión, o Zócalos del Internet.
Cada lado de una conexión TCP tiene un número de acceso sin firmar asociado de 16 bits (1-
65535) reservado por el uso que envía o de recepción. Los paquetes de datos que llegan son
identificados mediante una conexión TCP específica, que consta de una combinación de la
dirección IP y número de puerto, tanto del host origen como del host destino.
Esto significa que un servidor puede proveer de varios clientes varios servicios a la vez,
mientras el cliente toma cuidado de iniciar cualquier conexión simultánea con números de
puerto diversos.
Los números de acceso se recaen en tres categorías básicas: puertos bien conocidos,
registrados, y dinámicos/privados.
• Puertos bien conocidos (números del 0 al 1023): estos números se reservan para
servicios y aplicaciones. Se utilizan comúnmente para aplicaciones como HTTP
(servidor Web), protocolo de acceso a mensajes de Internet (IMAP) o protocolo simple
de transferencia de correo (SMTP) (servidor de correo electrónico) y Telnet. Al definir
estos puertos bien conocidos para las aplicaciones de los servidores, las aplicaciones
cliente se pueden programar para solicitar una conexión a ese puerto en particular y el
servicio relacionado.
• Puertos registrados (números del 1024 al 49151): estos números de puerto se asignan
a procesos o aplicaciones del usuario. Principalmente, estos procesos son aplicaciones
individuales que el usuario elige instalar en lugar de aplicaciones comunes que recibiría
un número de puerto bien conocido. Cuando no se utilizan para un recurso del servidor,
un cliente puede seleccionar estos puertos de forma dinámica como su puerto de origen.
• Puertos dinámicos o privados (números 49152 a 65535): también conocidos como
puertos efímeros, generalmente se los asigna de forma dinámica a las aplicaciones
cliente cuando el cliente inicia una conexión a un servicio. El puerto dinámico suele
utilizarse para identificar la aplicación cliente durante la comunicación, mientras que el
cliente utiliza el puerto bien conocido para identificar el servicio que se solicita en el
servidor y conectarse a dicho servicio. No es común que un cliente se conecte a un
servicio mediante un puerto dinámico o privado (aunque algunos programas de
intercambio de archivos punto a punto lo hacen).
El protocolo TCP es adecuado para utilizarse en redes pequeñas y grandes debido a que tiene
un alto grado de fiabilidad, sin embargo, resulta algo lento en redes con tráfico mediano,
debido a que su diseño le obliga a constatar que los datos transmitidos realmente hayan sido
recibidos en tiempo y con integridad.
Conclusiones:
Este protocolo tiene aspectos positivos como la transferencia de datos de manera simultánea
asi como la fiabilidad de que los datos lleguen en orden y sin errores, su desventaja es que
puede resultar lento debido a que su diseño le obliga a constatar que los datos transmitidos
realmente hayan sido recibidos en tiempo, con integridad y sin errores.
Bibliografía:
https://www.rfc-es.org/rfc/rfc0793-es.txt
http://itroque.edu.mx/cisco/cisco1/course/module7/7.1.2.8/7.1.2.8.html
https://www.ionos.es/digitalguide/servidores/know-how/que-es-tcp-transport-control-
protocol/
Andrew S. Tanenbaum. Redes de computadoras. 3ª edición, Prentice Hall, pag 521 – 542.