A finales de los años 60 y principios de los 70, las redes no estaban diseñadas
de forma que fuera posible compartir recursos entre redes diferentes.
Desde entonces se ha hecho cada vez más necesario que las aplicaciones de
usuario compartan recursos. Pero para que puedan hacerlo, los administradores de
las redes deben acordar primero un conjunto de tecnologías y normas comunes
para que las redes puedan comunicarse.Es por eso que las aplicaciones como la
transferencia de archivos y el correo electrónico se deberían estandarizar
también para permitir la interacción entre aplicaciones de usuario.
El Protocolo de Control de Transmisión se desarrolló con esos objetivos.
El propósito primordial de TCP es proporcionar circuitos lógicos confiables o
servicios de conexión entre parejas de procesos. Esto no implica confiabilidad
desde protocolos de más bajo nivel (como IP) así que TCP debe garantizar esto
por sí mismo.
2. Protocolo de Control de Transmisión (TCP)
TCP reside en el nivel de transporte del modelo de niveles convencional. Está
situado entre IP y los niveles superiores. TCP no está cargado en las
pasarelas. Está diseñado para residir en los computadores o en las máquinas
que se ocupan de conservar la integridad de la transferencia de datos entre
extremos. Lo más común es que TCP resida en los computadores de usuario.
Como IP es una red no orientada a conexión, es TCP quien se debe encargar de
las tareas de fiabilidad, control de flujo, secuenciamiento, aperturas y
cierres. Aunque TCP e IP estén tan relacionados que incluso se les denomine
juntos "TCP/IP", TCP puede soportar otros protocolos. Por ejemplo,
otro protocolo no orientado a conexión como el ISO 8473 (Protocolo de Redes No
Orientado a Conexión o CNLP) podría funcionar con TCP (si se realizan algunos
ajustes de los interfaces entre módulos). Además, los protocolos de aplicación,
como el Protocolo de Transferencia de Correo Simple (de siglas en inglés, SMTP)
se apoyan en muchos servicios que proporciona TCP.
3. Principales características de TCP
TCP suministra una serie de servicios a los niveles superiores. Esta sección
presenta brevemente esos servicios.
TCP es un protocolo orientado a conexión. Esto quiere decir que TCP mantiene
información del estado de cada cadena de datos de usuario que circula por él.
El término utilizado en este contexto significa también que TCP es responsable
de la transferencia de datos entre extremos por la red o redes hasta la aplicación
de usuario receptora (o el protocolo de nivel superior). TCP debe asegurar que
los datos se transmiten y reciben correctamente por los computadores atravesando
las correspondientes redes.
Como TCP es un protocolo orientado a conexión, es responsable de la
transferencia fiable de cada uno de los caracteres (bytes u octetos) que reciben
del nivel superior correspondiente. En consecuencia, utiliza números de
secuencia y aceptaciones/rechazos.
El término asociado con estos aspectos de los protocolos orientados a conexión
es el de circuito virtual.
Cada octeto transmitido lleva asignado un número de secuencia. El módulo TCP
receptor utiliza una rutina de checksum para comprobar la posible existencia de
daños en los datos producidos en el proceso de transmisión. Si los datos son
aceptables, TCP envía una acepción positiva (ACK) al módulo TCP remitente. Si
los datos han resultado dañados, el TCP receptor los descarta y utiliza un número
de secuencia para informar al TCP remitente del problema. Como muchos otros
protocolos orientados a conexión, TCP emplea temporizadores para garantizar que
no transcurre un lapso de tiempo demasiado grande antes de la transmisión de
aceptaciones desde el nodo receptor y/o de la transmisión de datos desde el
nodo transmisor.
TCP recibe datos de un protocolo de nivel superior de forma orientada a cadenas.
Esto es diferente a muchos otros protocolos empleados en la industria. Los
protocolos orientados a cadenas se diseñan para enviar caracteres separados y
no bloques, tramas, datagramas, etc. Los datos son enviados por un protocolo de
nivel superior en forma de cadenas, byte a byte. Cuando llegan al nivel TCP, los
bytes son agrupados para formar segmentos TCP. Dichos segmentos se transfieren a
IP (o a otro protocolo de nivel inferior) para su transmisión al siguiente
destino. La longitud de los segmentos de la determina TCP, aunque el realizador
de un determinado sistema puede determinar la forma en que TCP toma su decisión.Los
realizadores de TCP que han trabajado con sistemas orientados a bloques, como
los sistemas operativos de IBM, puede que tengas que modificar ligeramente su
forma de pensar acerca de las prestaciones de TCP. TCP admite el uso de
segmentos de longitud variable, debido a su diseño orientado a cadenas. Por
tanto, las aplicaciones que trabajan normalmente con bloques de datos de
longitud fija (una aplicación de gestión de personal que envíe registros de
empleados de longitud fija o una aplicación de gestión de nóminas con
registros de pago también longitud fija) no pueden utilizar TCP para transmitir
bloques fijos al receptor. El nivel de aplicación debe ocuparse de configurar
los bloques dentro de las cadenas de TCP.
TCP comprueba también la duplicidad de los datos. En el caso de que el TCP
remitente decida retransmitir los datos, el TCP descarta los datos redundantes.
Estos datos redundantes podrían aparecer en la interred, por ejemplo cuando el
TCP receptor no acepta el tráfico de manera temporizada, en cuyo caso el TCP
remitente decidirá retransmitir los datos.
Además de la capacidad de transmisión de cadenas, TCP soporta también el
concepto de función push. Esta función se utiliza
cuando una aplicación desea asegurarse de que todos los datos que han pasado al
nivel inferior se han transmitido. Para hacer eso, gobierna la gestión del
buffer de TCP. Para obtener esta función, el protocolo de nivel superior envía
una orden a TCP con un identificador de parámetro de push a 1. Esta operación
implica que TCP envía todo el tráfico almacenado en forma de segmento o
segmentos hacia su destino.
Además de utilizar los números de secuencia para aceptaciones, TCP los utiliza
para la reordenación de los segmentos que llegan a su destino fuera de orden.
Como TCP descansa sobre un protocolo no orientado a conexión, es bastante
posible que en la interred se creen datagramas duplicados. TCP también elimina
los segmentos duplicados.
TCP emplea un esquema de aceptación inclusiva. El número de aceptación acepta
todos los octetos hasta (e incluyendo) el del número de aceptación menos uno.
Este esquema es un método muy sencillo y eficiente de aceptar tráfico, pero
presenta una desventaja. Por ejemplo, supongamos que se han transmitido diez
segmentos y debido a las operaciones realizadas durante el proceso de
encaminamiento llegan desordenados. TCP está obligado aceptar sólo el mayor número
de bytes contiguos recibidos sin error. No está permitido aceptar el byte de
mayor número recibido hasta que hayan llegado todos los bytes intermedios. Por
tanto, como en cualquier otro protocolo orientado a conexión, podría
transcurrir el periodo de temporización de aceptaciones y TCP transmisora
retransmitiría el tráfico no aceptado todavía. Esas retransmisiones podrían
introducir una considerable sobrecarga en la red.
El módulo TCP receptor se ocupa también de controlar el flujo de los datos del
transmisor, lo que es muy útil para evitar el desbordamiento de los
dispositivos de almacenamiento y la saturación de la máquina receptora. La
idea que utiliza TCP es algo poco usual en protocolos de comunicación. Se basa
en enviar el dispositivo transmisor un valor de "ventana". Se permite
que el transmisor envíe un número máximo de bytes igual al valor de su
ventana. Cuando se ha llegado a ese valor, la ventana se cierra y el transmisor
debe interrumpir el envío de datos.
Además, TCP posee una facilidad muy útil que permite multiplexar varias
sesiones de usuario en un mismo computador. Esta operación se realiza
definiendo algunas convenciones para compartir puertos y sockets entre usuarios.
TCP proporciona transmisión en modo dúplex integral entre las entidades que se
comunican. De esta forma, la transmisión se puede efectuar en ambos sentidos
sin necesidad de esperar a la señal de indicación de cambio de sentido,
necesaria en las transmisiones semidúplex. Además, TCP permite a los usuarios
especificar niveles de seguridad y prioridades de las conexiones. Aunque esas
opciones no están incluidas en todos los protocolos TCP, están definidas en el
estándar TCP.
TCP proporciona el cierre seguro de los circuitos virtuales (la conexión lógica
entre dos usuarios). El cierre seguro se ocupa de que todo el tráfico sea
reconocido antes de la desactivación del circuito virtual.
4. Aperturas activa y pasiva
Los puertos TCP pueden establecer dos tipos de conexiones. El modo de
apertura pasiva permite que el protocolo de nivel superior (por ejemplo, un
servidor) indique al TCP y al sistema operativo del computador que va a esperar
la llegada de solicitudes de conexión procedentes del sistema remoto, en lugar
de enviar una apertura activa. Tras recibir esta solicitud, el sistema operativo
asigna un número de puerto a este extremo. Esta utilidad se puede usar para
realizar comunicaciones con usuarios remotos sin tener el retardo de la apertura
activa.
Los procesos de aplicaciones que solicitan la apertura pasiva pueden aceptar una
solicitud de cualquier usuario (supuesto que se cumplen algunos requisitos de
compatibilidad). Si se puede aceptar cualquier llamada (sin requisitos de
compatibilidad) el número de socket exterior se pone a ceros. Los números de
socket exterior no especificados sólo se permiten en aperturas pasivas.
La segunda forma de establecimiento de conexión es el modo de apertura activa.
En esta situación, el protocolo de nivel superior designa específicamente otro
socket por el que establecer la conexión. Típicamente, se envía la apertura
activa a un puerto con apertura pasiva para establecer un circuito virtual.
TCP admite un escenario en el que se envían dos aperturas activas de un sistema
a otro a la vez. TCP realizará la conexión. Esta característica permite que
las aplicaciones envíen una apertura en cualquier momento, sin preocuparse de
si la otra aplicación ha enviado otra apertura o no.
TCP establece convenciones estrictas sobre cómo se deben utilizar conjuntamente
las aperturas activas y pasivas. En primer lugar, una apertura activa identifica
un socket específico, así como sus niveles de prioridad y de seguridad. TCP
garantiza una apertura si el socket remoto tiene una apertura pasiva compatible,
o si ha enviado una apertura activa compatible.
5. El Bloque de Control de Transmisión (TCB)
Como TCP debe recordar varias cosas de cada conexión virtual, almacena esa
información en un Bloque de Control de Transmisión (TCB). Entre la información
que se almacena en la TCB destacamos los números de socket local y remoto, los
punteros a los buffers de transmisión y recepción, los punteros a la cola de
retransmisión, los valores de seguridad y prioridad de la conexión y el
segmento en curso. La TCB también contiene varias variables asociadas a los números
de secuencia de envío y recepción.
El segmento TCP
Las PDU que se intercambian entre dos módulos TCP se denominan segmentos. El
segmento se divide en dos partes, la parte de cabecera y la parte de datos. La
parte de datos sigue a la parte de cabecera. Los primeros dos campos del
segmento se denominan puerto de fuente y puerto de destino. Esos campos de 16
bits identifican a los programas de aplicación de nivel superior que utilizan
la conexión TCP.
El siguiente campo se denomina número de secuencia. Este campo contiene el número
de secuencia del primer octeto del campo de datos de usuario. Su valore
especifica la posición de la cadena de bits del módulo transmisor. Dentro del
segmento especifica el primer octeto de datos de usuario.
El número de secuencia se utiliza también durante la operación de gestión de
la conexión. Si dos entidades TCP utilizan el segmento de solicitud de conexión,
entonces el número de secuencia especifica el número de secuencia de envío
inicial (ISS) que se utilizará para la numeración subsiguiente de los datos de
usuario.
El valor del número de aceptación permite aceptar los datos previamente
recibidos. Este campo contiene el valor del número de secuencia del siguiente
octeto que se espera recibir del transmisor. Con esa definición permite la
aceptación inclusiva, en el sentido de que permite la aceptación de todos los
octetos hasta, e incluyendo, el valor de este número menos 1.
El campo de desplazamiento de datos especifica el número de palabras alineadas
de 32 bits de que consta la cabecera de TCP. Este campo se utiliza para
determinar dónde comienza el campo de datos.
Como puede esperarse, el campo reservado está reservado. Consta de 6 bits que
deben valer cero. Estos bits están reservados para usos futuros.
Los seis bits siguientes se denominan indicadores (flags). Son bits de control
de TCP y se utilizan para especificar ciertos servicios o utilidades que se
pueden emplear durante la sesión. El valor de algunos de esos bits indica cómo
interpretar otros campos de la cabecera. Los seis bits mencionados llevan la
siguiente información.
- URG indica que el campo de puntero de urgencia es significativo.
- ACK indica si el campo de aceptación es significativo.
- PSH significa que el módulo va a utilizar la función push.
- RST indica que la conexión se va a inicializar.
- SYN indica que se van a sincronizar los números de secuencia; se utiliza
en los segmentos de establecimiento de conexión como indicación de que se
van a realizar algunas operaciones de preparación.
- FIN indica que el remitente no tiene más datos para enviar. Es comparable
a la señal de fin de transmisión (EOT) en otros protocolos.
El campo siguiente, denominado ventana, se pone a un valor que indica cuántos
octetos desea aceptar el receptor. Este valor se establece teniendo en cuenta el
valor del campo de aceptación (número de aceptación). La ventana se establece
sumando los valores del campo de ventana y del campo de número de aceptación.
El campo de checksum contiene el complemento de 1 a 16 bits del complemento a 1
de la suma de todas las palabras de 16 bits del segmento, incluyendo la cabecera
del texto. El propósito de este cálculo es determinar si el segmento
procedente del transmisor ha llegado libre de errores.
El siguiente campo del segmento, denominado puntero de urgente, se utiliza sólo
si el indicador de URG está a 1. El objeto de este puntero es identificar el
octeto de datos al que siguen datos urgentes. Los datos urgentes se denominan
datos fuera de bada. TCP no dice lo que hay que hacer con los datos urgentes.
Depende de la implementación. Dicho de otro modo, sólo se indica el lugar
donde empiezan los datos urgentes, no lo que hay que hacer con ellos. El valor
de este campo es un desplazamiento del número de secuencia y apunta al octeto a
partir de cual siguen los datos urgentes.El campo de opciones está concebido
para posibilitar futuras mejoras de TCP. Está diseñado de forma semejante al
campo de opción de los datagramas de IP, en el sentido de que cada opción se
especifica mediante un byte que especifica el número de opción, un campo que
contiene la longitud de la opción y finalmente, los valores de la opción
propiamente dichos.
Actualmente el campo de opción tiene un uso bastante limitado, y el estándar
TCP sólo especifica tres opciones:
0 : fin de lista de opciones
1 : no operación
2 : tamaño máximo de segmento
Finalmente, el campo de relleno asegura que la cabecera TCP ocupa un múltiplo
par de 32 bits. Finalmente, como se muestra en la figura, siguen los datos de
usuario.
7. Conclusión
Los protocolos de Internet se han convertido en una de las familias de
protocolos más ampliamente utilizada en el mundo. Están diseñados para
facilitar la intercomunicación de redes de computadores.
Los protocolos Internet constan de muchos protocolos diseñados para dar soporte
a las operaciones de comunicación entre redes..
Además, los protocolos interred contienen una gran cantidad de protocolos de
nivel de aplicación, como TELNET, el protocolo de transferencia de archivos
(FTP) y el protocolo simple de transferencia de correo (SMTP)
8. Bibliografía
Redes de computadores. Protocolos, normas e interfaces.
2.ª Edición.
Autor: Uyless Black
Ed. Alfaomega
Trabajo enviado por:
Leopoldo de la Fuente Silva