Title: El modelo TCP
1El modelo TCP
RFC 793 STD 7
2Comparación de capas entre los modelos OSI y
TCP/IP
3TCP es un protocolo de nivel 4.Actúa en el
equivalente a la capa de transporte del modelo
OSI.
La RFC 793 determina que el Protocol ID para
TCP es el 6. Cuando un sistema recibe un
datagrama IP que dice contener Protocol 6, éste
debe pasar los contenidos del datagrama a TCP
para su procesamiento.
4Tipo de transmisión y tipo de protocolo
TCP es un protocolo confiable, para ser usado por
aplicaciones orientadas a la transacción. TCP
establece un circuito de comunicaciones
administrado, full-duplex y punto a punto para
ser usado por protocolos de aplicación. Cada vez
que se necesita enviar datos entre dos
aplicaciones basadas en TCP, se establece un
circuito virtual entre los dos proveedores de
TCP, y se realiza un intercambio de datos de
aplicaciones altamente controlado. Una vez que
todos los datos han sido exitosamente enviados y
recibidos, la conexión finaliza.
5Tipo de servicio que da
- El servicio que da TCP está orientado a conexión.
Esto significa que se requiere - Establecer la conexión
- Mantener la conexión
- Liberar la conexión
Los servicios orientados a la conexión garantizan
que los datos lleguen en la secuencia correcta, y
que la conexión es confiable. Es necesario que
TCP sea orientado a la conexión dado que IP (con
el que trabaja estrechamente) no es un protocolo
confiable.
6TCP otorga 5 servicios clave a las capas
superiores
- Circuitos virtuales
- Administración de I/O de aplicaciones
- Administración de I/O de red
- Control de flujo
- Confiabilidad
7- Circuitos virtualesCada vez que dos
aplicaciones necesitan comunicarse vía TCP, se
establece un circuito virtual entre dos endpoints
TCP. El circuito virtual está en el corazón del
diseño de TCP, y provee fiabilidad, control de
flujo y herramientas de administración de I/O que
lo distinguen de otros protocolos, como UDP. -
Administración de I/O de aplicacionesLas
aplicaciones se comunican entre sí enviando datos
al proveedor local de TCP, que luego transmite
los datos a través del circuito virtual a su
destino para ser entregados a la aplicación
correspondiente. TCP provee un buffer de I/O para
uso de las aplicaciones, permitiéndoles enviar y
recibir datos como streams continuos, con TCP
convirtiendo los datos en segmentos individuales
controlados que se envían a través de IP.
8- Administración de I/O de red
- Cuando TCP necesita enviar datos a otro sistema,
usa IP para la entrega. Pero TCP también debe
proveer servicios de administración de I/O de red
a IP, mediante la construcción de segmentos que
puedan viajar en forma efectiva sobre la red IP,
y luego reconvirtiendo los segmentos individuales
en streams de datos apropiados para las
aplicaciones. - Control de flujoLos diferentes hosts de una red
tienen distintas características, y no todos
ellos pueden enviar y recibir los datos con la
misma velocidad es por eso que TCP debe ser
capaz de manejar estas variaciones, de manera tal
que resulten transparentes para las aplicaciones.
9- ConfiabilidadTCP provee un servicio de
transporte confiable mediante el monitoreo de los
datos que envía. TCP usa números de secuencia
para monitorear bytes individuales,
acknowledgment flags (indicadores de
reconocimiento) para determinar si algunos de
esos bytes se perdieron y checksums (sumas de
comprobación) para validar los datos. Todos estos
mecanismos, al trabajar en conjunto, hacen que
TCP sea altamente fiable. - Estos 5 servicios hacen de TCP un protocolo de
transporte muy robusto.
10Métodos de control de flujo
- El sistema emisor ajusta la tasa de transmisión a
la que enviará los datos al sistema receptor. La
variación de esta tasa está ligada, entre otras
cosas, al espacio en buffer del sistema receptor
y a las características de manejo de paquetes en
la red. Es por eso que TCP incorpora varios
mecanismos de control de flujo, permitiéndole al
sistema reaccionar fácilmente ante la necesidad
de estos cambios. - Ventana deslizante
- Esquema de otorgamiento de créditos
11- Ventana deslizante Cuando un emisor manda un
segmento, inicia un reloj. El destino responde
con un segmento que contiene un acuse de recibo
(acknowledgment flag) con un número de acuse
igual al próximo número de secuencia que espera.
Si el reloj termina antes de que llegue el acuse,
el emisor manda el segmento de nuevo (ver
retransmisión). - Sistema de créditos Además de advertirle al
emisor el tamaño de la ventana, el receptor
otorga créditos al emisor para indicarle
cuántos segmentos puede enviarle antes de que los
acuses de recibo de los segmentos enviados
anteriormente lleguen nuevamente al emisor. Esto
le permite a un endpoint enviar datos aunque los
datos precedentes no hayan sido todavía acusados
(acknowledged), confiando que llegará su acuse
antes del tiempo límite establecido.
12Métodos de control de errores
- TCP usa el método de retransmisión para controlar
errores, íntimamente ligado a la ventana
deslizante. Para ello utiliza - Checksums (sumas de comprobación)
- Números de secuencia
- Acknowlegments (acuses de recibo correcto)
- Timers (relojes)
13- ChecksumsTCP usa sumas de comprobación para cada
segmento enviado, permitiendo al destinatario
verificar que los datos del segmento recibido son
válidos. - Números de secuencia
- Cada byte que se envía tiene un número de
secuencia. Este número les permite al emisor y al
receptor referirse explícitamente a un rango de
datos, y hace que el receptor pueda reordenar los
segmentos que lleguen desordenados, así como
eliminar los segmentos duplicados. - AcknowledgementsCada byte enviado debe recibir
su correspondiente acuse de recibo. Esta tarea se
realiza mediante el uso de un número de
acknowledgment, que indica que el destinatario
recibió los datos de un segmento correctamente, y
está listo para recibir más. - TimersDado que TCP usa IP para sus entregas de
datos, algunos segmentos pueden perderse o
corromperse en el camino. Cuando esto sucede, el
emisor no recibe el acknowledgment
correspondiente, con lo cual necesita
retransmitir los datos. Para detectar este error,
TCP incorpora un acknowledgment timer, que
indica cuánto tiempo es necesario esperar el
acknowledment antes de reenviar los datos.
14Manejo de la congestión
El manejo de congestión se realiza mediante -
Tamaño de la ventana de congestión - Slow start-
Congestion avoidance (evitar la congestión)
15- Tamaño de la ventana de congestión
- Para poder manejar la congestión, es necesario
el uso de una ventana de congestión en el
sistema emisor. Esta ventana es conceptualmente
similar a la ventana deslizante que se expande y
se contrae, aunque estas dos acciones se llevan a
cabo en función del estado de la red IP (su
capacidad de manejar los datos a enviar en un
momento dado), y no de la capacidad de
procesamiento de datos del receptor. - Slow startEl emisor debe, antes de comenzar a
enviar datos, verificar el estado de la red IP.
Este es el propósito de la técnica Slow Start
(comienzo lento), que establece el tamaño de la
ventana de congestión en el valor más bajo para
luego ir incrementándolo hasta que la red alcance
su punto de saturación. - Congestion avoidance (evitar la congestión)Cada
vez que se detecta congestión en la red, la
ventana de congestión se reduce a la mitad de su
tamaño. La técnica de Congestion avoidance se
usa para ir gradualmente ensanchando la ventana
de congestión, alcanzando eventualmente su tamaño
máximo. Cuando esta técnica es usada junto con la
de Slow Start, el emisor puede determinar más
fácilmente cuál es la tasa óptima de transmisión
en un circuito virtual dado.
16Direccionamiento
TCP asigna números de puerto únicos a cada
instancia de cada aplicación que usa un circuito
virtual de TCP. Estos números de puertos actúan
como extensiones, permitiendo a TCP encaminar los
datos entrantes directamente a la aplicación de
destino apropiada.
17- Se utiliza el término socket para identificar
el número de puerto y la dirección IP
concatenados. -
- Ejemplo el puerto 80 en la dirección IP
200.62.54.110 puede referirse igualmente como
200.62.54.11080 - Un par de sockets consiste en los dos
endpoints de un circuito virtual (recordemos que
TCP trabaja punto a punto), incluyendo las
direcciones IP y números de puertos de ambas
aplicaciones en ambos sistemas.
18Identificación
- El formato de los paquetes TCP es el siguiente
- Source port (puerto emisor)
- Destination port (puerto receptor)
- Sequence number (número de secuencia)
- Acknowledgement number (número de acuse de
recibo) - Header length (longitud de la cabecera)
- Reserved (campo reservado)
- URG-ACK-PSH-RST-SYN-FIN (flags centinelas)
- Window (ventana)
- Checksum (suma de comprobación)
- Urgent pointer (puntero de urgencia)
- Options (si las hay)
- Datos
19Entrega en orden
- Durante el establecimiento de conexión TCP, los
números iniciales de secuencia son intercambiados
entre las dos entidades TCP. Estos números de
secuencia son usados para identificar los datos
dentro del flujo de bytes, y poder identificar (y
contar) los bytes de los datos de la aplicación.
Siempre hay un par de números de secuencia
incluidos en todo segmento TCP, referidos al
número de secuencia y al número de asentimiento.
Un emisor TCP se refiere a su propio número de
secuencia cuando habla de número de secuencia,
mientras que con el número de asentimiento se
refiere al número de secuencia del receptor.
20Multiplexación
- Está definida por convenciones para compartir
puertos y sockets entre usuarios. - Puede permitir que varios usuarios la utilicen
mediante varios puertos identificados. La
multiplexación se realiza hacia abajo,
estableciendo varios puntos de contacto con la
capa de red para permitir el envío de datos por
varios circuitos virtuales, aumentando el
rendimiento.
21Fragmentación y MTU
- Fragmentación Puede construir un segmento por
cada lote de datos proporcionado por su usuario o
puede esperar a que se acumule una cierta
cantidad de datos antes de construir y enviar el
segmento. - La fragmentación TCP emplea implementaciones
oscuras de escaneo dividiendo el encabezado TCP
en varios fragmentos. Luego el IP reensambla los
fragmentos, lo que puede causar resultados
impredecibles y anormales (los encabezados IP con
datos pueden ser fragmentados).
22Fragmentación y MTU
- El encabezado TCP fragmentado mínimo permisible
debe contener puertos destino y fuente para el
primer paquete (8 octetos 64 bits), típicamente
las marca (flags) inicializadas en el siguiente
permitiendo al host remoto reensamblar el paquete
a su llegada. El reensamblaje actual es
establecido por el IPM (Internet Protocol Module)
que identifica los paquetes fragmentados por los
valores equivalentes en los campos - source
- destination
- protocol
- Identification
- MTU debe ser de 40 bytes
23Priorización de envíos
- La entidad de transporte almacena temporalmente
los datos tanto en la transmisión como en la
recepción. TCP normalmente aplica su propio
criterio para decidir cuando construir un
segmento para transmitirlo y cuando entregar los
datos recibidos al usuario. El indicador Push
(Forzado) se usa para obligar a que los datos
acumulados sean enviados por el transmisor y
entregados al usuario por el receptor. Esto sirve
como una función de fin de bloque.
24QoS
- En la pila de protocolos TCP/IP, TCP es la capa
intermedia entre el protocolo de Internet (IP) y
la aplicación. Habitualmente, las aplicaciones
necesitan que la comunicación sea fiable y, dado
que la capa IP aporta un servicio de datagramas
no fiable (sin confirmación), TCP añade las
funciones necesarias para prestar un servicio que
permita que la comunicación entre dos sistemas se
efectúe - libre de errores.
- en orden.
- sin pérdidas.
- sin duplicaciones.
25Denominación de la PDU
- Segmento Desde un punto de vista lógico se ve
como un flujo de octetos.
26Características
- Está diseñado para proporcionar una comunicación
fiable entre pares de procesos (usuarios TCP) a
través de una gran variedad de redes e
interconexiones fiables y no fiables. TCP
proporciona dos servicios útiles para etiquetar
los datos - Flujo de datos forzado
- Señalización de datos urgentes
27Aspectos de interés
- Protocolo actualmente documentado por IETF RFC
793. - El IETF (Internet Engineering Task Force, en
castellano Grupo de Trabajo en Ingeniería de
Internet) es una organización internacional
abierta de normalización, que tiene como
objetivos el contribuir a la ingeniería de
Internet, actuando en diversas áreas, tales como
transporte, encaminamiento, seguridad. Fue creada
en EE.UU. en 1986. - RFC es el acrónimo inglés de Request For
Comments. Conjunto de notas técnicas y
organizativas donde se describen los estándares o
recomendaciones de Internet (originalmente
ARPANET), comenzado en 1969. - Dirección Web 793 http//www.ietf.org/rfc/rfc793.
txt
28Bibliografía
- Stallings, William Data and computer
communications. Prentice Hall, 2000. - Stallings, Williams Comunicaciones y redes de
computadores. Séptima edición. Pearson Educación
S. A., 2004. - Tanenbaum, Andrew Computer networks. Prentice
Hall, 1996. - Hall, Eric Internet core protocols. OReilly,
2000. - Apuntes de la cátedra.
- Enciclopedia online Wikipedia www.wikipedia.org.