Está en la página 1de 9

                               LECTURAS

EL PROTOCOLO DE CONTROL DE TRANSFERENCIA (TCP) 

1. INTRODUCCIÓN  
System

Ahora  entraremos  más  en  detalle  respecto  de  la  especificación  de  TCP;  esto  se  hará  por  medio  de  la 
explicación minuciosa de algunas secciones de la RFC 793, donde se establece dicho protocolo. 
University

“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
International

con las siguientes áreas:

Transferencia básica de datos

Fiabilidad

Control de flujo
Whitney

Multiplexamiento

Conexiones

Prioridad y seguridad”
con

Esto  quiere  decir  que  TCP  brinda  un  servicio  que  permite  abstraer  la  interfaz  con  el  protocolo  IP, 
alianza

permitiendo  que  la  aplicación  que  lo  utilice  pueda  establecer  comunicaciones  con  procesos  que  se 
encuentren  en  otras  máquinas  de  manera  sencilla.    Adicionalmente  se  menciona  que  esto  requiere 
especificar  6  aspectos  principalmente  (Transferencia  de  datos,  Fiabilidad,  Control  de  flujo, 
Grancolombiano-en

Multiplexamiento, Conexiones y, por último, prioridad y seguridad).

1.1 Transferencia de datos 

Revisemos algunas partes de la descripción de la transferencia de datos: 

“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.
Politécnico

Para este propósito se define una función 'push' ("enviar


inmediatamente"). Para asegurar que los datos entregados al módulo de
TCP son realmente transmitidos, el usuario emisor debe indicarlo
mediante la función 'push'”.

Como podemos ver TCP ofrece un método para forzar a que la implementación de TCP envíe todos los 
datos que se encuentran almacenados en el buffer, es decir, asegura que todo lo que se ha escrito en el 
socket ha viajado efectivamente por la red. 

 
 

1.2 Fiabilidad 

La fiabilidad o confiabilidad está enfocada a garantizar la entrega de información evitando que esta sea 
System

modificada o alterada de cualquier modo durante su transporte. El método para lograrlo se describe a 
continuación: 

“El módulo de TCP debe poder recuperar los datos que se corrompan,
University

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
International

expiración prefijado, los datos se retransmiten. En el receptor, se


utilizan los números de secuencia para ordenar correctamente los
segmentos que puedan haber llegado desordenados y para eliminar los
duplicados. La corrupción de datos se trata añadiendo un campo de
suma de control ('checksum') a cada segmento transmitido,
comprobándose en el receptor y descartando los segmentos dañados”.
Whitney

Nótese  que  el  riesgo  de  que  la  información  sea  cambiada  en  tránsito  se  mitiga  usando  la  suma  de 
control.  Por  otro  lado,  los  números  de  secuencia  solucionan  múltiples  inconvenientes  tales  como: 
organizar los paquetes en el receptor, confirmarlos de manera única y eliminar los paquetes duplicados. 
con

Y  finalmente  los  ACK  junto  con  el  tiempo  límite  de  expiración  de  un  paquete  permiten  manejar  la 
pérdida de información en la red. 
alianza

1.3 Flujo de control
Grancolombiano-en

“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”.

El  flujo  de  control  implica  “no  ahogar”  al  receptor  con  información,  es  decir,  permitirle  especificar  el 
rango de datos que está dispuesto a recibir en el momento. Como es natural esta ventana se moverá a 
Politécnico

medida que se reciban datos exitosamente. 

 
 

1.4 Multiplexión 
System

“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
University

'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 socket TCP está identificado por el puerto y dirección de red del “host”, asimismo una conexión está 
International

determinada por el socket origen y el socket destino,  es decir por una tupla (IP Origen, Puerto Origen, IP 
Destino,  Puerto  Destino).  Esto  permite  que  el  mismo  socket  se  pueda  utilizar  para  atender  múltiples 
conexiones en el caso del servidor. 

1.5 Manejo de la conexión 

Las conexiones TCP se abren por solicitud de los programas que utilizan el protocolo, para que esto se 
Whitney

haga  de  manera  coherente  y  segura  es  necesario  utilizar  algún  método  que  incluya  números  de 
secuencia. 

“Cuando dos procesos desean comunicarse, sus módulos de TCP deben


con

establecer primero una conexión (inicializar la información de estado


en cada lado).
alianza

[…]

Como las conexiones tienen que establecerse entre 'hosts' no fiables


Grancolombiano-en

y sobre un sistema de comunicación internet no fiable, se utiliza un


mecanismo de acuerdo que usa números de secuencia basados en tiempos
de reloj para evitar una inicialización errónea de las conexiones”.

1.6 Prioridad y seguridad 

“Los usuarios de TCP pueden indicar el nivel de seguridad y prioridad


de su comunicación. Se emplean valores por defecto cuando estas
características no se necesiten”.
Politécnico

Las características de seguridad de TCP están basadas en las ofrecidas por IP, donde se tiene en cuenta 
que opción de seguridad indicaba en un principio el nivel de “confidencialidad” de la información. Esto 
dentro  del  diseño  de  TCP  se  utilizó  para  permitir  a  un  enrutador  militar  decidir  por  dónde  dirigir  el 
paquete  (evitando  el  paso  por  países  considerados  como  “malos”).    Claramente  hoy  en  día  estos 
parámetros  de  seguridad  no  son  suficientes  ni  tampoco  utilizados  ya  que  para  asegurar  la 
confidencialidad de la información se debe recurrir a la criptografía.

 
 

2. ESPECIFICACIÓN FUNCIONAL 
System

En  este  momento  entraremos  en  aspectos  de  la  especificación  funcional  del  protocolo,  lo  que  nos 
permitirá  tener  mayor  claridad  sobre  el  funcionamiento  del  mismo.  Iniciemos  con  los  diferentes 
University

indicadores que se envían en un paquete TCP. 

“  URG: Hace significativo el campo "Puntero urgente" 

ACK: Hace significativo el campo "Número de acuse de recibo"


International

PSH: Función de "Entregar datos inmediatamente" ('push')

RST: Reiniciar ('Reset') la conexión

SYN: Sincronizar ('Synchronize') los números de secuencia

FIN: Últimos datos del “emisor” 


Whitney

Dentro  de  los  indicadores  más  utilizados  encontramos  el  bit  de  ACK,  SYN  y  FIN  ya  que  estos  son 
utilizados en toda conexión TCP. El bit de SYN se envía prendido durante el proceso de sincronización de 
números de secuencia al inicio de la conexión. Por otro lado, el bit ACK indica que se está enviando un 
con

acuse de recibo sobre un número de secuencia específico (el cuál va en el campo de número de acuse de 
recibo) y, por último, se encuentra el bit de finalización de conexión (FIN) el cual puede ser enviado por 
alianza

cualquiera de las dos partes en el momento que se desee finalizar la conexión TCP. 

El indicador  PSH garantiza que la información recibida por la capa de transporte sea enviada por la red 
inmediatamente tal como se ha mencionado anteriormente, siendo esta una opción disponible para el 
Grancolombiano-en

emisor más no el receptor de la información. 

El  indicador  URG  muestra  si  es  necesario  o  no  tener  en  cuenta  el  puntero  urgente,  el  cual  se  toma  a 
relativo a partir del inicio de los datos del paquete. 

El indicador RST muestra que se debe finalizar la conexión sin más interacción entre las partes. Esto se 
debe enviar cuando se encuentren algunos errores. 

Una  vez  aclarados  los  indicadores  que  pueden  ser  enviados  en  los  paquetes  TCP  continuamos  con    el 
análisis los números de secuencia que maneja el protocolo: 
Politécnico

“El hecho de que todo octeto de datos enviado por una conexión de TCP
tenga asociado un número de secuencia constituye una noción
fundamental en el diseño de TCP. Ya que cada octeto se secuencia,
puede realizarse un acuse de recibo de cada uno de ellos. El mecanismo
de acuse de recibo empleado es acumulativo, de tal forma que el acuse
de recibo de un número de secuencia X indica que todos los octetos
hasta, pero no incluyendo, X, han sido recibidos”.

 
 

Vale la pena mencionar que la numeración de octetos se inicia a partir del primer byte que se encuentra 
en la sección de datos, es decir, los bytes de la cabecera TCP no cuentan como números de secuencia. En 
la RFC se menciona que al tener una cantidad finita de números de secuencia (232) la comparación de 
System

estos números se debe hacer modulo  232. 

Verificación de números de secuencia para acuses de recibo entrantes 
University

 A continuación se muestran las verificaciones que deben realizarse sobre los números de secuencia de 
acuses de recibo entrantes, para esto se tiene como parámetro la ventana de envío: 

“Como respuesta a sus envíos de datos, el módulo de TCP recibirá


acuses de recibo. Es necesario realizar las siguientes comparaciones
International

para procesar los acuses de recibo.

SND.UNA = el menor número de secuencia sin acuse de recibo recibido

SND.NXT = número de secuencia del próximo envío

SEG.ACK = acuse de recibo procedente del TCP receptor (próximo número


Whitney

de secuencia esperado por el TCP receptor)

SEG.SEQ = primer número de secuencia de un segmento

SEG.LEN = el número de octetos ocupados por los datos en el segmento


con

(incluyendo SYN y FIN)


alianza

SEG.SEQ+SEG.LEN-1 = último número de secuencia de un segmento

SND.UNA < SEG.ACK =< SND.NXT”.   


Grancolombiano-en

En  este  párrafo  se  presenta  alguna  terminología  y  también  nos  encontramos  con  el  invariante  que  se 
debe  cumplir  en  todo  momento,  el  cual  especifica  simplemente  que  el  elemento  para  el  que  se  está 
recibiendo  confirmación  (SEG.ACK)  se  debe  encontrar  en  la  ventana  de  envío,  es  decir,  debe  ser  un 
número  de  secuencia  posterior  al  mínimo  número  para  el  que  se  espera  acuse  de  recibo  (SND.UNA), 
pero  a  su  vez  debe  ser  menor  al  número  de  secuencia  del  primer  octeto  de  datos  que  aún  no  se  ha 
enviado (SND.NXT). 

“Un segmento ubicado en la cola de retransmisión queda completamente


confirmado por un acuse de recibo si la suma de su número de secuencia
inicial y su longitud es menor o igual que el valor del acuse de
Politécnico

recibo indicado en el segmento entrante”.

Lo que se quiere decir aquí es que al recibir un acuse de recibo que contiene un número de secuencia 
superior  al  último  octeto  del  segmento  de  datos  de  un  paquete,  este  queda  confirmado 
automáticamente inclusive si no se tiene un acuse de recibo específico.  Lo anterior se debe a que los 
acuses de recibo son acumulativos.   

Verificación de números de secuencia para la recepción de datos 

 
 

En caso de querer verificar los números de secuencia para los datos que se reciben es necesario tener en 
cuenta la venta de recepción. 
System

“Es necesario realizar las siguientes comparaciones cuando se reciben


datos.

RCV.NXT = siguiente número de secuencia esperado de los segmentos


University

entrantes, lo que define el borde izquierdo o inferior de la


ventana de recepción

RCV.NXT+RCV.WND-1 = último número de secuencia esperado en un


segmento entrante, lo que define el borde derecho o superior de
International

la ventana de recepción

SEG.SEQ = primer número de secuencia ocupado por el segmento


entrante

SEG.SEQ+SEG.LEN-1 = último número de secuencia ocupado por el


segmento entrante
Whitney

Se considera que un segmento ocupa una porción válida del espacio de


secuencias de recepción si
con

RCV.NXT =< SEG.SEQ < RCV.NXT+RCV.WND


alianza

o si

RCV.NXT =< SEG.SEQ+SEG.LEN-1 < RCV.NXT+RCV.WND


Grancolombiano-en

La primera parte de esta comprobación mira a ver si el comienzo del


segmento cae dentro de la ventana, la segunda parte comprueba si el
final del segmento cae dentro de la ventana; si el segmento pasa
cualquiera de las dos partes de la comprobación, entonces es que
contiene datos dentro de la ventana”.

En el párrafo anterior se explica el escenario en el que se tiene una ventana de al menos un byte y un 
segmento  que  contiene  al  menos  un  byte  también.  A  continuación  se  muestran  los  escenarios 
especiales. 
Politécnico

 
 

“La realidad es algo más compleja que todo esto. Debido a la


existencia de ventanas y segmentos de tamaño cero, tenemos cuatro
posibilidades a considerar a la hora de aceptar un segmento entrante:
System

Longitud Ventana Comprobación

segmento recep.
University

--------- ------- -----------------------------------------

0 0 SEG.SEQ = RCV.NXT

0 >0 RCV.NXT =< SEG.SEQ < RCV.NXT+RCV.WND


International

>0 0 no aceptable

>0 >0 RCV.NXT =< SEG.SEQ < RCV.NXT+RCV.WND

o RCV.NXT =< SEG.SEQ+SEG.LEN-1 <


RCV.NXT+RCV.WND”.
Whitney

   

En  esta  parte  se  tratan  los  casos  en  que  se  tienen  ventanas  de  tamaño  cero  durante  la  recepción  de 
datos en el receptor o cuando lleguen segmentos sin datos.  De esta manera, lo que se indica es: 
con

• En caso de tener un segmento sin datos y una ventana de tamaño cero se debe cumplir que el 
alianza

número de secuencia confirmado sea exactamente igual al número de secuencia que se recibirá 
próximamente.  
• En  caso  de  tener  un  segmento  de  confirmación  sin  datos  con  una  ventana  no  nula,  lo  que  se 
Grancolombiano-en

debe recibir son los números de secuencia que se encuentran dentro de la ventana del receptor. 
• Tratar de tener una ventana de cero octetos y recibir un paquete que tenga al menos un octeto 
es imposible, por esta razón no está permitido. 
• Finalmente,  el  caso  de  tener  un  segmento  con  una  cantidad  de  bytes  mayor  a  cero  y  una 
ventana  de  más  de  cero  bytes  nos  vuelve  a  mostrar  la  verificación  mencionada  en  el  caso 
general. 

“Nótese que cuando el tamaño de la ventana de recepción es cero, no se


Politécnico

debería aceptar ningún segmento excepto los segmentos ACK. Así, es


perfectamente posible para un TCP mantener una ventana de recepción de
tamaño nulo mientras esté transmitiendo datos y recibiendo segmentos
ACK. Sin embargo, incluso cuando la ventana de recepción es cero, un
módulo de TCP debe procesar los campos RST y URG de todos los
segmentos entrantes.

 
 

Se ha aprovechado el esquema de numeración para proteger también


cierta información de control. Esto se consigue incluyendo
implícitamente algunos indicadores de control en el espacio de
System

secuencias de tal forma que puedan ser retransmitidos y confirmados


sin posibilidad de confusión (i.e., se considerará una y sólo una
copia de la información de control).
University

[…]

Para propósitos de numeración de secuencias, se considera que el SYN


ocurre antes que el primer octeto de datos reales del segmento en el
que es transportado, mientras que el FIN se considera que ocurre
International

después del último octeto de datos del segmento que lleva el FIN”.

El  último párrafo indica que el segmento que inicia la comunicación cuenta el indicador de SYN como un 
primer  octeto  en  la  transmisión  a  pesar  de  que  no  se  transmita  ninguna  información.  Asimismo  se 
considera que el paquete que contiene el bit de FIN tiene un byte adicional al final de los datos enviados. 
Whitney

Esto se  hace únicamente con estos dos indicadores y la razón para hacerlo es para poder confirmar, de 
manera inequívoca, la recepción de inicio y finalización de una conexión TCP. 

*Todas  las  citas  textuales  son  extraidas  del  Protocolo  RFC0793‐es.  (1981,  Septiembre).  Transmission 
con

control  protocol  darpa  internet  program,  protocol  specification.  Defense  Advanced  Research  Projects 
Agency. Information Processing Techniques Office 1400 Wilson Boulevard Arlington, Virginia  22209 by 
alianza

Information Sciences Institute, University of Southern California,  4676 Admiralty Way Marina del Rey, 
California  90291. 

   
Grancolombiano-en
Politécnico

 
Politécnico Grancolombiano-en alianza con Whitney International University System

 
 
 
 

RFC0793‐es. (1981, Septiembre). RFC0793‐es. España. 
BIBLIOGRAFÍA 

También podría gustarte