Tema 6 El Nivel de Transporte en Internet - PowerPoint PPT Presentation

1 / 100
About This Presentation
Title:

Tema 6 El Nivel de Transporte en Internet

Description:

Al inicio de la conexi n se negocia el MSS (Maximum Segment Size) ... Transfer Unit) para ajustar el MSS al tama o ptimo para esa comunicaci n. ... – PowerPoint PPT presentation

Number of Views:174
Avg rating:3.0/5.0
Slides: 101
Provided by: RogelioM1
Category:

less

Transcript and Presenter's Notes

Title: Tema 6 El Nivel de Transporte en Internet


1
Tema 6El Nivel de Transporte en Internet
2
Sumario
  • Aspectos generales del nivel de transporte
  • Protocolo TCP
  • Multiplexación
  • Conexión/Desconexión
  • Intercambio de datos y control de flujo
  • Casos de baja eficiencia en TCP
  • Control de congestión
  • Protocolo UDP

3
Funciones del Nivel de Transporte
  • Se encarga del transporte de los datos extremo a
    extremo (host a host).
  • Realiza la comunicación de forma transparente al
    medio físico. Usa los servicios del nivel de red
  • Multiplexa tráfico de diversas instancias
    (procesos) del nivel de aplicación
  • La unidad de transferencia de información a nivel
    de transporte es la TPDU (Transport Protocol Data
    Unit)
  • Generalmente las aplicaciones requieren un
    servicio fiable, sin pérdidas ni datos
    duplicados. Para ello se utiliza un servicio
    orientado a conexión (CONS). Ej. TCP, TP4 (OSI)
  • A otras aplicaciones les basta con un servicio no
    fiable, no orientado a conexión (CLNS). Ej. UDP,
    TP0 (OSI)

4
Equivalencia Internet OSI
5
TSAP
  • El TSAP (Transport Service Access Point) es el
    punto donde el nivel de aplicación accede al
    servicio del nivel de transporte.
  • Por ejemplo en Internet el TSAP se especifica
    por
  • Dirección IP
  • Campo Protocolo en cabecera IP (6 para TCP, 17
    para UDP)
  • Puerto en la cabecera TCP/UDP
  • El puerto permite multiplexar en una sola
    instancia del nivel de transporte múltiples
    instancias del nivel de aplicación
  • Normalmente los servidores utilizan puertos bien
    conocidos

6
TSAP y NSAP de una conexión
Host 1
Host 2
Aplicación Transporte Red Enlace Física
Cliente
Servidor
147.156.1.1180 (TCP)
147.156.135.228000 (TCP)
TSAP
TSAP
147.156.1.11
147.156.135.22
NSAP
NSAP
7
Sumario
  • Aspectos generales del nivel de transporte
  • Protocolo TCP
  • Multiplexación
  • Conexión/Desconexión
  • Intercambio de datos y control de flujo
  • Casos de baja eficiencia en TCP
  • Control de congestión
  • Protocolo UDP

8
TCP (Transmission Control Protocol)
  • El protocolo TCP ofrece el servicio de transporte
    orientado a conexión (CONS) en Internet.
  • Está diseñado para ofrecer un transporte fiable
    sobre un servicio no fiable del nivel de red (el
    que le suministra IP).
  • Las TPDUs de TCP se llaman segmentos.
  • El TCP actual se especificó en 1981 en el RFC 793
    y sigue plenamente vigente.

9
Servicio orientado a conexión
  • Los servicios orientados a conexión requieren un
    procedimiento explícito de establecimiento y
    terminación de la comunicación.
  • Durante la conexión las entidades participantes
    mantienen en memoria una información relativa a
    dicha conexión (contadores de bytes, etc.). Dicha
    información se conoce como información de estado.
  • Para describir los servicios orientados a
    conexión se suele utilizar un modelo basado en
    dos protagonistas
  • Cliente el que inicia la conexión
  • Servidor el que es invitado a conectar
  • Una conexión puede terminarse tanto por
    iniciativa del cliente como del servidor.

10
Funciones de TCP
  • Establecer y terminar conexiones
  • Gestionar los buffers y ejercer control de flujo
    de forma eficiente
  • Multiplexar el nivel de aplicación (port) e
    intercambiar datos con las aplicaciones
  • Controlar errores, retransmitir segmentos
    perdidos o erróneos y eliminar duplicados
  • Efectuar control de congestión

11
La cabecera TCP
32 bits
Puerto de destino
Puerto de origen
Número de secuencia
Número de acuse de recibo
20 bytes
Reserv. 4 bits
Lon. Cab
Flags 8 bits
Tamaño ventana
Puntero datos urgentes
Checksum
Relleno
Opciones
Flags CWR Congestion Window Reduced ECE ECN
Echo (ECNExplicit Congestion Notification)
URG el segmento contiene datos
urgentes ACK el campo número de acuse de recibo
tiene sentido PSH el segmento contiene datos
Pushed RST ha habido algún error y la
conexión debe cerrarse SYN indica el inicio de
una conexión FIN indica el final de una conexión
12
La pseudocabecera TCP
32 bits
Se añade al principio del segmento para el
cálculo del checksum. Permite a TCP comprobar
que IP no se ha equivocado en la entrega del
datagrama. El valor 1102 610 indica que el
protocolo de transporte es TCP
13
Sumario
  • Aspectos generales del nivel de transporte
  • Protocolo TCP
  • Multiplexación
  • Conexión/Desconexión
  • Intercambio de datos y control de flujo
  • Casos de baja eficiencia en TCP
  • Control de congestión
  • Protocolo UDP

14
Multiplexación
  • La multiplexación se realiza mediante el puerto
    (origen o destino) que puede valer de 0 a 65535.
  • Los puertos 0 a 1023 están reservados para
    servidores bien conocidos (well known ports)
  • La combinación de dirección IP y puerto
    identifica el socket
  • Una conexión TCP queda especificada por los dos
    sockets que se comunican

15
Multiplexación
Nivel de aplicación
SMTP (Puerto 25)
Telnet (Puerto 23)
FTP (Puerto 21)
Nivel de transporte
Cabecera TCP
Nivel de red
Cabecera IP
Nivel de enlace
Cabecera MAC Ethernet
16
Dos conexiones TCP de clientes con diferentes
direcciones IP
Port 1038
Conexión TCP
Cliente IP 147.156.1.202
Port 23
Socket 147.156.1.202.1038
Conexión TCP
Servidor IP 147.156.1.25
Port 1038
Socket 147.156.1.25.23
Cliente IP 158.42.3.47
Socket 158.42.3.47.1038
17
Dos conexiones TCP de clientes con la misma IP
Socket 147.156.1.202.1038
Port 1038
Port 23
Port 1039
Cliente IP 147.156.1.202
Servidor IP 147.156.1.25
Socket 147.156.1.25.23
Socket 147.156.1.202.1039
18
Conexiones TCP del host UNIX 147.156.1.25
(conectado por telnet desde 147.156.1.219)
Netstat -an Active Internet connections
(including servers) Proto Recv-Q Send-Q Local
Address Foreign Address
(state) tcp 0 0 147.156.1.25.2480
147.156.1.1.143 ESTABLISHED tcp
0 0 147.156.1.25.23
147.156.96.8.1034 ESTABLISHED tcp 0
240 147.156.1.25.23 147.156.1.219.1036
ESTABLISHED tcp 0 0
147.156.1.25.513 147.156.1.3.1018
ESTABLISHED tcp 0 0 147.156.1.25.513
147.156.1.3.1019 ESTABLISHED tcp
0 0 147.156.1.25.2429
147.156.1.15.6000 ESTABLISHED tCP 0
0 147.156.1.25.2428 147.156.1.15.6000
ESTABLISHED tcp 0 0
147.156.1.25.1022 147.156.1.3.1002
ESTABLISHED tcp 0 0 147.156.1.25.514
147.156.1.3.1004 CLOSE_WAIT tcp
0 0 147.156.1.25.1023
147.156.1.3.1005 ESTABLISHED tcp 0
0 147.156.1.25.514 147.156.1.3.1007
CLOSE_WAIT tcp 0 0
147.156.1.25.139 147.156.1.219.1029
ESTABLISHED tcp 0 0 .143
. LISTEN tcp
0 0 .144 .
LISTEN tcp 0 0
147.156.1.25.23 147.156.3.12.1945
ESTABLISHED tcp 0 0 .139
. LISTEN tcp
0 0 .5000 .
LISTEN tcp 0 0 .25
. LISTEN tcp
0 0 .19 .
LISTEN tcp 0 0 .9
. LISTEN udp
0 0 .16522 . udp
0 0 .16520 . udp
0 0 147.156.1.25.123 . udp 0
0 127.0.0.1.123 . udp 0
0 .123 .
19
Sumario
  • Aspectos generales del nivel de transporte
  • Protocolo TCP
  • Multiplexación
  • Conexión/Desconexión
  • Intercambio de datos y control de flujo
  • Casos de baja eficiencia en TCP
  • Control de congestión
  • Protocolo UDP

20
Primitivas básicas de conexión/desconexión
Cliente
Servidor
Listen (bloqueado) Receive Send
(bloqueado) Receive Send
(bloqueado) ... Receive Disconnect
(libera conexión) Listen (bloqueado)

Connect (bloqueado) Receive Send (bloqueado)
Receive ... Disconnect (libera conexión)
Petición conexión
Conexión aceptada
Datos
Datos
Petición desconexión
Petición desconexión
21
Evolución de estados en una conexión/desconexión
SERVIDOR
CLIENTE
INACTIVO
TPDU de conexión recibida
Primitiva Connect ejecutada
PENDIENTE CONEXIÓN PASIVA
PENDIENTE CONEXIÓN ACTIVA
TPDU de conexión recibida
Primitiva Connect ejecutada
CONEXIÓN ESTABLECIDA
Primitiva Disconnect ejecutada
TPDU de desconexión recibida
PENDIENTE DESCONEXIÓN PASIVA
PENDIENTE DESCONEXIÓN ACTIVA
Primitiva Disconnect ejecutada
TPDU de desconexión recibida
INACTIVO
22
Conexión por Saludo a tres vías
  • En TCP pueden llegar segmentos duplicados (ej. Se
    pierde la confirmación de un segmento con lo que
    el emisor lo reenvía)
  • Con un procedimiento de conexión simple los
    segmentos duplicados podrían causar problemas,
    como que una sesión entera se duplique.
  • Para evitarlo se utiliza el saludo a tres vías,
    un procedimiento de conexión más elaborado que
    evita los problemas debidos a duplicados
  • Para ello se identifica cada intento de conexión
    mediante un número diferente. El cliente elige un
    número a modo de clave para la comunicación en
    sentido de ida y el servidor otro para el sentido
    de vuelta.
  • Estos dos números actúan como PINs que
    identifican cada intento de conexión y lo
    protegen de segmentos retrasados que pudieran
    aparecer fruto de conexiones anteriores.

23
Procedimiento del saludo a tres vías
  • El cliente elige para cada intento de conexión un
    número único. El número elegido lo incluye en la
    petición de conexión que envía al servidor.
  • El servidor, cuando recibe la petición, elige
    otro número único y envía una respuesta al
    cliente indicándoselo.
  • El cliente al recibir la respuesta considera
    establecida la conexión. A continuación envía un
    tercer mensaje en el que acusa recibo del
    anterior. El servidor considera establecida la
    conexión cuando el recibe este tercer mensaje.

24
Establecimiento de una conexión TCP por saludo a
tres vías
TCP A
TCP B
CLOSED
LISTEN
seq100, SYN
SYN-SENT (ISN 100)
SYN-RECEIVED (ISN 300)
seq300, ack101, SYN, ACK
ESTABLISHED
? Tiempo
seq101, ack301, ACK
ESTABLISHED
25
Conexión saludo a tres vías, conexión simultánea
TCP A
TCP B
CLOSED
CLOSED
seq100, SYN
seq300, SYN
SYN-SENT (ISN 100)
SYN-SENT (ISN 300)
SYN-RECEIVED
SYN-RECEIVED
seq300,ack101, SYN, ACK
seq100, ack301, SYN,ACK
? Tiempo
ESTABLISHED
ESTABLISHED
26
Conexión con SYN duplicado
TCP A
TCP B
seq90, SYN
SYN-SENT (ISN 90)
LISTEN
SYN 90
(timeout)
CLOSED
seq100, SYN
SYN-SENT (ISN 100)
SYN 100
SYN 90
seq90, SYN
SYN-RECEIVED (ISN 300)
? Tiempo
seq300, ack91, SYN, ACK
seq91, RST
LISTEN
SYN 100
seq100, SYN
SYN-RECEIVED (ISN 400)
seq400, ack101, SYN, ACK
ESTABLISHED
seq101, ack401, ACK
ESTABLISHED
27
Conexión en TCP
  • Los dos primeros segmentos de la conexión se
    identifican con el flag SYN.
  • El número de secuencia es un campo de 32 bits que
    cuenta bytes en módulo 232 (el contador se da la
    vuelta cuando llega al valor máximo).
  • El número de secuencia no empieza normalmente en
    0, sino en un valor denominado ISN (Initial
    Sequence Number) elegido al azar el ISN sirve de
    PIN en el saludo a tres vías para asegurar la
    autenticidad de la comunicación.
  • Una vez establecida la comunicación el seq y el
    ack sirven para contar los bytes transmitidos y
    recibidos.

28
Conexión en TCP
  • El ISN es elegido por el sistema (cliente o
    servidor). El estándar sugiere utilizar un
    contador entero incrementado en 1 cada 4 ?s
    aproximadamente. En este caso el contador se da
    la vuelta (y el ISN reaparece) al cabo de 4 horas
    46 min.
  • El MSL (Maximum Segment Lifetime) típico es de
    unos 2 minutos, con lo que la probabilidad de que
    dos ISN coincidan es despreciable.
  • El mecanismo de selección de los ISN es
    suficientemente fiable para proteger de
    coincidencias debidas al azar, pero no es un
    mecanismo de protección frente a sabotajes. Es
    muy fácil averiguar el ISN de una conexión e
    interceptarla suplantando a alguno de los dos
    participantes.

29
Desconexión
  • Puede ser de dos tipos
  • Simétrica la conexión se considera formada por
    dos circuitos simplex y cada host solo puede
    cortar uno (aquel en el que él emite datos). El
    cierre de un sentido se interpreta como una
    invitación a cerrar el otro.
  • Asimétrica desconexión unilateral (un host la
    termina en ambos sentidos sin esperar a recibir
    confirmación del otro). Puede provocar pérdida de
    información.

30
Desconexión asimétrica
Host 1
Host 2
DATOS
Conectado
DATOS
Conectado
? Tiempo
DR
DATOS
No Conectado
Datos perdidos
No Conectado
DR Disconnect Request
31
Mensaje de Desconexión
  • EL mensaje solicitando la desconexión se puede
    perder. Por eso se pide una confirmación (ACK).
  • Pero la confirmación también podría perderse, por
    lo que habría que enviar una reconfirmacion, y
    así sucesivamente.
  • Este problema no tiene solución infalible, pues
    estamos usando un canal no fiable para asegurar
    un envío de información. Es lo que se conoce como
    el problema de los dos ejércitos.

32
El problema de los dos ejércitos
33
Desconexión por saludo a tres vías
  • Se trata de una desconexión simétrica en la que
    se tiene una seguridad razonable de que no se
    pierden datos.
  • Supone el intercambio de tres mensajes, de forma
    análoga a la conexión, de ahí su nombre.
  • En caso de que alguno de los mensajes de
    desconexión se pierda una vez iniciado el proceso
    la conexión se termina por timeout.

34
Desconexión en TCP
  • Se utiliza el saludo a tres vías invitando a la
    otra parte a cerrar.
  • Para indicar el cierre se utiliza el flag FIN
  • La desconexión puede inciarla el cliente o el
    servidor.
  • Una vez efectuada la desconexión el host que
    inició el proceso está un cierto tiempo a la
    espera por si aparecen segmentos retrasados

35
Desconexión a tres vías, caso normal
TCP A
TCP B
ESTABLISHED
ESTABLISHED
seq 100, ack300, FIN, ACK
FIN-WAIT-1
CLOSE-WAIT
seq300, ack101 ACK
FIN-WAIT-2
LAST-ACK
seq300, ack101, FIN, ACK
TIME-WAIT
2 MSL
seq101, ack301, ACK
CLOSED
CLOSED
MSL Maximum Segment Lifetime (normalmente 2
minutos)
36
Otras formas de terminar una conexión TCP
Host 1
Host 2
Host 1
Host 2
FIN
Envía FIN y arranca timer
FIN
Envía FIN y arranca timer
Envía FIN y arranca timer
FIN
Envía FIN y arranca timer
FIN
Libera conexión
(Timeout) envía FIN y arranca timer
FIN
Envía FIN y arranca timer
FIN
Envía ACK
ACK
(Timeout) libera conexión
Libera conexión
Libera conexión
ACK
Envía ACK
Pérdida de ACK final
Pérdida de respuesta FIN
Host 1
Host 2
Host 1
Host 2
FIN
FIN
Envía FIN y arranca timer
Envía FIN y arranca timer
Envía FIN y arranca timer
Conectado
FIN
(timeout) envía FIN y arranca timer
(timeout) envía FIN y arranca timer
FIN
FIN
(Timeout) libera conexión
(N timeouts) Libera conexión
(N timeouts) Libera conexión
Conectado
Pérdida de todos los FIN de host 1
Pérdida de todo menos primer FIN
37
(No Transcript)
38
Números de secuencia y flags
  • El número de secuencia es el que corresponde al
    primer byte enviado en ese segmento.
  • TCP incrementa el número de secuencia de cada
    segmento según los bytes que tenía el segmento
    anterior, con una sola excepción
  • Los flags SYN y FIN, cuando están puestos,
    incrementan en 1 el número de secuencia.
  • Esto permite que se pueda acusar recibo de un
    segmento SYN o FIN sin ambigüedad.
  • Podemos considerar que los segmentos que tienen
    puesto el flag SYN o FIN lleva un byte de datos
    virtual
  • La presencia del flag ACK no incrementa el número
    de secuencia

39
Sumario
  • Aspectos generales del nivel de transporte
  • Protocolo TCP
  • Multiplexación
  • Conexión/Desconexión
  • Intercambio de datos y control de flujo
  • Casos de baja eficiencia en TCP
  • Control de congestión
  • Protocolo UDP

40
Intercambio de datos TCP ? aplicación
  • Aplicación ? TCP la aplicación envía los datos a
    TCP cuando quiere (siempre y cuando TCP tenga
    espacio libre en el buffer de emisión)
  • TCP ? Aplicación la aplicación lee del buffer de
    recepción de TCP cuando quiere y cuanto quiere.
    Excepción datos urgentes
  • Para TCP los datos de la aplicación son un flujo
    continuo de bytes, independientemente de la
    separación que pueda tener la aplicación
    (registros, etc.). Es responsabilidad de la
    aplicación asegurarse que esa separación (si
    existe) se mantendrá después de transmitir los
    datos.

41
Intercambio de datos TCP ? TCP
  • El TCP emisor manda los datos cuando quiere.
    Excepción datos Pushed
  • El TCP emisor decide el tamaño de segmento según
    sus preferencias. Al inicio de la conexión se
    negocia el MSS (Maximum Segment Size)
  • Cada segmento ha de viajar en un datagrama
  • Normalmente TCP intenta agrupar los datos para
    que los segmentos tengan la longitud máxima,
    reduciendo así el overhead debido a cabeceras y
    proceso de segmentos.
  • El TCP emisor puede aplicar la técnica de
    descubrimiento de la MTU del trayecto (Path MTU
    Discovery, MTU Maximum Transfer Unit) para
    ajustar el MSS al tamaño óptimo para esa
    comunicación.

42
Intercambio de datos TCP ? Aplicación y TCP ? TCP
Aplicación origen
Aplicación destino
A criterio de la aplicación (sujeto a
disponibilidad de buffer en TCP emisor)
A criterio de la aplicación
Estira
Empuja
TCP receptor
TCP emisor
Buffer
Buffer
Empuja
A criterio del TCP emisor (sujeto a
disponibilidad de buffer en TCP receptor y no
congestión de la red)
43
Intercambio de datos TCP ? Aplicación y TCP ? TCP
Aplicación origen
Aplicación destino
1024 Bytes
Lee
Escribe
2048 Bytes
1024 Bytes
Envía
TCP receptor
TCP emisor
Buffer
Buffer
512 B
512 B
512 B
512 B
(MSS 512 Bytes)
44
Gestión de buffers y Control de Flujo
  • El TCP receptor informa en cada segmento al
    emisor del espacio que le queda libre en el
    buffer para esa comunicación. Para ello usa el
    campo tamaño de ventana.
  • Anunciando una ventana cero el receptor puede
    bloquear al emisor, y ejercer así control de
    flujo.
  • La ventana anunciada es un espacio que el TCP
    receptor reserva para esa comunicación en su
    buffer.
  • Tanto los números de secuencia como los tamaños
    de ventana cuentan bytes.

45
Gestión de buffers y Control de flujo
Buffer
Emisor
Receptor
0
4K
La aplicación escribe 2 KB
Vacío
Seq 0
2 KB
Ack 2048, Win 2048
La aplicación escribe 3 KB
Seq 2048
Lleno
Emisor Bloqueado
Ack 4096, Win 0
La aplicación lee 2 KB
Ack 4096, Win 2048
El emisor puede enviar hasta 2 KB
Seq 4096
3 KB
46
Gestión de buffers y Control de Flujo
  • El TCP receptor nunca debería retirar el espacio
    en buffer que ya ha anunciado al emisor.
  • Sin embargo TCP debe estar preparado por si el
    del otro lado lo hace (esto se denomina contraer
    la ventana).
  • Recordemos la norma básica de Internet
  • Sé estricto al enviar y tolerante al recibir

47
Reenvío de segmentos
  • En caso de pérdida de un paquete en la red el
    segmento TCP no llegará a su destino
  • Cada TCP cuando envía un segmento espera recibir
    el ACK si este no llega dentro de un tiempo
    razonable reenvía el segmento.
  • Si se enviaron varios segmentos y se pierde uno
    se puede hacer dos cosas
  • Enviar solo ese segmento (repetición selectiva)
  • Enviar todos los segmentos a partir de ese
    (retroceso n)
  • Lo normal es utilizar retroceso n

48
Control de flujo y números de secuencia Caso
normal, sin pédidas
Host 1
Host 2
Seq1000, Win4000
SYN
Seq1500, Ack1001, Win4000
SYN
Seq1001, Ack1501, Win4000
1000 bytes
Seq1501, Ack2001, Win3000
1000 bytes
Seq2001, Ack2501, Win3000
1000 bytes
Seq3001, Ack2501, Win3000
1000 bytes
Seq4001, Ack2501, Win3000
1000 bytes
Seq2501, Ack5001, Win0
Aplicación lee 2000 bytes
Bloqueado
Seq2501, Ack5001, Win2000
Seq5001, Ack2501, Win3000
1000 bytes
Seq2501, Ack6001, Win3000
49
Pérdida de un paquete Retransmisión con retroceso
n
Host 1
Host 2
Seq1000, Win4000
SYN
Seq1500, Ack1001, Win4000
SYN
Seq1001, Ack1501, Win4000
1000 bytes
Seq1501, Ack2001, Win3000
1000 bytes
Seq2001, Ack2501, Win3000
1000 bytes
Seq3001, Ack2501, Win3000
1000 bytes
Seq4001, Ack2501, Win3000
1000 bytes
Ignorado
Timeout
Seq2501, Ack3001, Win2000
Bloqueado
Timeout
Seq3001, Ack2501, Win3000
1000 bytes
Seq4001, Ack2501, Win3000
1000 bytes
Aplicación lee 2000 bytes
Seq2501, Ack5001, Win0
Seq2501, Ack5001, Win2000
Seq5001, Ack2501, Win3000
1000 bytes
Seq2501, Ack6001, Win3000
50
Pérdida de un paquete Retransmisión con
repetición selectiva
Host 1
Host 2
Seq1000, Win4000
SYN
Seq1500, Ack1001, Win4000
SYN
Seq1001, Ack1501, Win4000
1000 bytes
Seq1501, Ack2001, Win3000
1000 bytes
Seq2001, Ack2501, Win3000
1000 bytes
Seq3001, Ack2501, Win3000
1000 bytes
Seq4001, Ack2501, Win3000
1000 bytes
Timeout
Seq2501, Ack3001, Win2000
Bloqueado
Seq3001, Ack2501, Win3000
1000 bytes
Seq2501, Ack5001, Win0
Aplicación lee 2000 bytes
Seq2501, Ack5001, Win2000
Seq5001, Ack2501, Win3000
1000 bytes
Seq2501, Ack6001, Win3000
51
Intercambio de datos casos excepcionales
  • Datos Pushed (bit PSH)
  • La aplicación pide al TCP emisor que envíe esos
    datos lo antes posible. El TCP receptor los
    pondrá a disposición de la aplicación de
    inmediato, para cuando ésta le pida datos.
    Ejemplo telnet.
  • Datos Urgentes (bit URG y Urgent Offset)
  • Los datos se quieren entregar a la aplicación
    remota sin esperar a que esta los pida. Ejemplo
    abortar un programa con CTRL-C en una sesión
    telnet

52
Timer de Persistencia
  • Mientras la ventana está cerrada el TCP emisor
    puede enviar de vez en cuando un segmento con un
    byte de datos esto provoca el envío de un ACK
    por parte del receptor y evita el bloqueo que se
    podría producir en caso de pérdida de un segmento
    anunciando una ventana mayor que cero
  • La frecuencia con que el TCP emisor envía los
    reintentos se fija en el Timer de Persistencia.

53
Timer de persistencia
TCP A
TCP B
100 bytes (501-600)
(seq501)(ack401)(ctlACK)(datos)
? Tiempo
Buffer lleno
(seq401)(ack601)(ctlACK)(W0)
Datos leídos por la aplicación
(seq401)(ack601)(ctlACK)(W400)
Timer de Persistencia
Bloqueado
(seq601)(ack401)(ctlACK)(datos)
1 byte (601)
Datos puestos en buffer para la aplicación
(seq401)(ack602)(ctlACK)(W(399)
54
Mensaje y timer de keepalive
  • Evita que se queden conexiones medio abiertas
  • Se implementa reenviando el último byte
    transmitido en un segmento el receptor descarta
    el dato pero devuelve un ACK
  • Si se envían varios mensajes de keepalive sin
    respuesta se considera que se trata de una
    conexión medio abierta y se cierra.
  • Para declarar una conexión medio abierta se
    espera a veces hasta 2 horas.
  • El tiempo de envío de los mensajes se regula con
    el timer de keepalive.
  • El keepalive no requiere modificaciones en el TCP
    receptor

55
Mensajes de keepalive
TCP Servidor
TCP Cliente
(seq501)(ack401)(ctlACK)(datos)
100 bytes (501-600)
Datos puestos en buffer para la aplicación
? Tiempo
(seq401)(ack601)(ctlACK)
Timer Keepalive
(seq600)(ack401)(ctlACK)(datos)
1 byte (600)
Datos duplicados descartados
(seq401)(ack601)(ctlACK)
56
Cabeceras TCP del inicio de una conexión Telnet
57
Intercambio de segmentos del caso anterior
Cliente
Servidor
SEQ16421121, SYN
SEQ390272001, ACK16421122, SYN
TCP Conectado
SEQ16421122, ACK390272002
TCP Conectado
El servidor envía la secuencia UNIX Login
SEQ390272002, ACK16421122
58
Cliente
Servidor
El usuario teclea una C
SEQ92, ACK109, Datos C
El servidor telnet procesa el mensaje y
devuelve una C como la respuesta llega con
rapidez en el mismo segmento se envían los
datos de vuelta y el ACK
SEQ109, ACK93, Datos C
El TCP envía un ACK del segmento recibido
SEQ93, ACK110
Funcionamiento de TCP en Telnet con eco
remoto cuando el host responde rápidamente a los
mensajes
59
Cliente
Servidor
El TCP receptor, al ver que no se produce
respuesta en un tiempo razonable, genera un
mensaje de ACK
El usuario teclea una C
SEQ92, ACK109, Datos C
SEQ109, ACK93
Cuando el servidor telnet ha procesado el
mensaje devuelve otro segmento con el carácter
C
SEQ109, ACK93, DatosC
El TCP envía un ACK del segmento recibido
SEQ93, ACK110
Funcionamiento de TCP en Telnet con eco
remoto cuando el host responde con lentitud a los
mensajes
60
Sumario
  • Aspectos generales del nivel de transporte
  • Protocolo TCP
  • Multiplexación
  • Conexión/Desconexión
  • Intercambio de datos y control de flujo
  • Casos de baja eficiencia en TCP
  • Control de congestión
  • Protocolo UDP

61
Baja eficiencia en TCP
  • El funcionamiento eficiente de TCP aconseja
    enviar segmentos del tamaño máximo permitido
  • Cuando la aplicación emisora genera los datos en
    pequeñas dosis (telnet con eco remoto por
    ejemplo) se da un problema de eficiencia que se
    resuelve con el algoritmo de Nagle.
  • Si la aplicación receptora los recoge byte a byte
    también se puede dar una baja eficiencia esto se
    conoce como síndrome de la ventana tonta y se
    resuelve con la Solución de Clark.

62
Algoritmo de Nagle
  • Cuando la aplicación envía datos en pequeños
    grupos TCP envía el primero y retiene los demás
    hasta recibir el ACK por cada ACK recibido envía
    un segmento con los bytes que hubiera pendientes,
    y así sucesivamente.
  • También se envía un segmento cuando los datos
    acumulados igualan o superan el MSS (tamaño
    máximo de un segmento), o la mitad de la ventana.
  • El mecanismo es autoadaptativo, pues cuanto más
    cargada esté la red mas tardarán los ACK y mas
    agrupados irán los datos
  • Se puede aplicar a datos pushed en caso necesario

63
Síndrome de la ventana tonta
  • La aplicación que envía datos los genera
    rápidamente
  • La aplicación receptora los recupera lentamente,
    un byte cada vez
  • El buffer del TCP receptor se llena
  • El TCP receptor notifica al emisor que su ventana
    está cerrada
  • La aplicación receptora lee un byte
  • EL TCP receptor envía un ACK al emisor para
    anunciarle que dispone de un byte libre
  • El TCP emisor envía un segmento con un byte de
    datos
  • Volvemos al punto 3

64
Síndrome de la ventana tonta
Buffer receptor lleno
La aplicación lee un byte
Un byte libre
Se envía segmento de actualización de ventana
Cabecera IP-TCP
40 Bytes
Se recibe segmento con un byte de datos
Cabecera IP-TCP
40 Bytes
Buffer receptor lleno
1 Byte
65
Solución de Clark (RFC 813)
  • El TCP receptor solo debe notificar una nueva
    ventana cuando tenga una cantidad razonable de
    espacio libre. Razonable significa
  • Un MSS (segmento del tamaño máximo), o
  • La mitad del espacio disponible en el buffer

66
Sumario
  • Aspectos generales del nivel de transporte
  • Protocolo TCP
  • Multiplexación
  • Conexión/Desconexión
  • Intercambio de datos y control de flujo
  • Casos de baja eficiencia en TCP
  • Control de congestión
  • Protocolo UDP

67
Control de congestión
  • Por medio del tamaño de ventana el receptor puede
    dosificar al emisor en función del buffer
    disponible. Esto es control de flujo.
  • Pero puede que el receptor tenga espacio de sobra
    pero la red esté congestionada. En este caso el
    TCP debe regularse para no inyectar demasiado
    tráfico, a pesar de que la ventana disponible sea
    muy grande. Esto es control de congestión.
  • Normalmente en TCP se utiliza control de
    congestión implícito. Ahora se está empezando a
    experimentar en Internet con el control de
    congestión explícito.

68
Control de flujo
Control de congestión
69
Control de congestión en TCP
  • Cuando hay congestión TCP ha de reducir el flujo
  • El mecanismo para detectarla es implícito, por la
    pérdida de segmentos. Cuando ocurre TCP baja el
    ritmo.
  • Se presupone que la red es altamente fiable a
    nivel físico y que las pérdidas se deben a
    congestión únicamente. Cuando no es así (redes
    con errores) bajar el ritmo es contraproducente.
  • Además de la ventana de control de flujo (dictada
    por el receptor y transmitida en la cabecera TCP)
    el emisor tiene una ventana de control de
    congestión, que ajusta a partir de los segmentos
    perdidos. En cada momento se usa la más pequeña
    de ambas.
  • El mecanismo de control de congestión de TCP se
    denomina slow-start (arranque lento) y fue
    diseñado por Van Jacobson en los años 80.

70
Slow Start (primera fase)
  • Inicialmente la ventana de congestión tiene el
    tamaño de un MSS (Maximum Segment Size)
  • Por cada segmento enviado con éxito la ventana se
    amplía en un MSS
  • En la práctica esto supone un crecimiento
    exponencial (en potencias de dos)
  • Si la ventana de congestión supera a la de
    control de flujo se aplica ésta con lo cual
    aquella deja de crecer

71
Funcionamiento de slow start, fase 1
Emisor
Receptor
Ventana
1 MSS
Con MSS 1KB en 7 iteraciones se llega a 64 KB,
tamaño máximo de la ventana
2 MSS
4 MSS
8 MSS
72
Slow start (segunda fase)
  • Cuando se pierde un segmento
  • La ventana de congestión vuelve a su valor
    inicial
  • Se fija un umbral de peligro en un valor igual
    a la mitad de la ventana que había cuando se
    produjo la pérdida.
  • La ventana de congestión crece como antes hasta
    el umbral de peligro a partir de ahí crece en
    sólo un segmento cada vez

73
Funcionamiento de slow start, fase 2
Emisor
Receptor
Ventana
1 MSS
ACK del segmento 15 perdido y retransmitido
SEG 15
ACK 15
2 MSS
SEG 16
ACK 16
SEG 17
ACK 17
SEG 18
4 MSS
ACK 18
SEG 19
ACK 19
SEG 20
ACK 20
SEG 21
ACK 21
SEG 22
ACK 22
5 MSS
SEG 23
ACK 23
SEG 24
ACK 24
SEG 25
ACK 25
SEG 26
ACK 26
SEG 27
6 MSS
ACK 27
SEG 28
ACK 28
SEG 29
ACK 29
SEG 30
ACK 30
SEG 31
ACK 31
SEG 32
ACK 32
74
Evolución de la ventana de congestión
44
Un segmento perdido (40 KB)
40
36
Umbral (32 KB)
32
28
24
Ventana de congestión (KiloBytes)
Umbral (20 KB)
20
16
12
8
4
0
0
2
4
6
8
10
12
14
16
18
20
22
24
Número del envío
75
Timer de retransmisión
  • Debe ser adecuado para la comunicación
  • Si es excesivo se esperará innecesariamente
  • Si es muy corto se harán reenvíos innecesarios
  • Como la fluctuación es muy grande se utilizan
    mecanismos autoadaptativos. A partir de los ACK
    se mide el tiempo de ida y vuelta o Round Trip
    Time (RTT)
  • La estimación de este timer es crucial para el
    correcto funcionamiento del slow-start.

76
Timer de retransmisión
  • El valor medio de RTT (MRTT) se calcula por la
    fórmula
  • MRTTn ? MRTTn-1 (1 - ?) RTT
  • donde RTT Valor más reciente medido de RTT
  • ? Factor de amortiguación. Normalmente 7/8
  • Para deducir el timeout a partir de MRTT tenemos
    que tener una idea de la dispersión de los
    valores. Para eso calculamos la desviación
    estándar como
  • Dn ? Dn-1 (1 - ?) MRTTn-1 RTT
  • donde ? suele valer 3/4.
  • El timeout se calcula normalmente como MRTT 4D

77
Dispersión del timer de retransmisión
78
(No Transcript)
79
Evolución de MRTT, D y timeout de retransmisión
en función del valor de RTT
80
Netstat -p tcp tcp 978740 packets sent
949215 data packets (1306073886 bytes) 544
data packets (329353 bytes) retransmitted
10186 ack-only packets (8786 delayed) 0 URG
only packets 188 window probe packets
17669 window update packets 938 control
packets 432947 packets received 251266 acks
(for 863756680 bytes) 1294 duplicate acks
0 acks for unsent data 76150 packets
(68148251 bytes) received in-sequence) 174
completely duplicated packets (57347 bytes)
15 packets with some dup. data (34 bytes duped)
341 out-of-order packets (4224 bytes) 23
packets (0 bytes) of data after window 0
window probes 23158 window update packets
1 packet received after close 0 discarded for
bad checksums 0 discarded for bad header
offset fields 0 discarded because packet too
short 397 connection requests 414 connection
accepts 629 connections established (including
accepts) 848 connections closed (including 38
drops) 179 embryonic connections dropped 313267
segments updated rtt (of 314002 attempts) 347
retransmit timeouts 2 connections dropped by
rexmit timeout 190 persist timeouts 54 keepalive
timeouts 53 keepalive probes sent 1
connection dropped by keepalive
81
Opciones y extensiones de TCP
  • Intercambio de valores de MSS entre los dos
    comunicantes. Es la más habitual
  • Otras opciones son
  • Factor de escala, para ventanas de hasta 1 GB
    (RFC 1323). Mejora la eficiencia en redes LFN
    (Long, Fat pipe Network) con elevado valor de
    BWRTT
  • Repetición selectiva y acuse de recibo negativo
    (NAK) (RFC 1106). También especialmente útil en
    LFNs.
  • Se suelen negociar en el segmento de inicio de la
    conexión (el que lleva el bit SYN puesto)

82
Sumario
  • Aspectos generales del nivel de transporte
  • Protocolo TCP
  • Multiplexación
  • Conexión/Desconexión
  • Intercambio de datos y control de flujo
  • Casos de baja eficiencia en TCP
  • Control de congestión
  • Protocolo UDP

83
Protocolo UDP
  • Servicio sencillo, CLNS, no fiable
  • Se utiliza en los siguientes entornos
  • El intercambio de mensajes es muy escaso,
    ej.consultas al DNS (servidor de nombres)
  • La aplicación es en tiempo real y no puede
    esperar los ACKs. Ej. videoconferencia, voz
    sobre IP.
  • Los mensajes se producen regularmente y no
    importa si se pierde alguno. Ej NTP, SNMP
  • El medio de transmisión es altamente fiable y sin
    congestion (LANs). Ej NFS
  • Se envía tráfico broadcast/multicast

84
Protocolo UDP
  • Las TPDUs de UDP se denominan mensajes o
    datagramas UDP
  • UDP multiplexa los datos de las aplicaciones y
    efectúa opcionalmente una comprobación de
    errores, pero no realiza
  • Control de flujo
  • Control de congestión
  • Retransmisión de datos perdidos
  • Conexión/desconexión

85
La cabecera de UDP con la pseudocabecera
32 bits
Pseudocabecera
Cabecera
La pseudocabecera se añade al principio del
datagrama para el cálculo del checksum. Permite
a UDP comprobar que IP no se ha equivocado en la
entrega del datagrama. El valor 100012 1710
indica que el protocolo de transporte es UDP
86
Cabeceras IP y UDP en una petición/respuesta SNMP
87
Comparación Protocolos de transporte de Internet
() Obligatorio en IPv6
88
Ejercicios
89
Ejercicio 4
  • P El tamaño máximo de un segmento TCP es 65.515
    bytes. Podría explicar de donde viene ese valor?

R La longitud máxima de un datagrama se
especifica en un campo de 16 bits, por lo que es
65535 bytes. De estos al menos 20 bytes son la
cabecera IP, con lo que quedan 65515 bytes para
el segmento TCP.
90
Ejercicio 6
  • Debe TCP preocuparse de reordenar los fragmentos
    de un datagrama?
  • NO. El nivel IP reconstruye el datagrama original
    en orden antes de entregar el segmento a TCP
    para ello usa los campos identificación, fragment
    offset y MF. TCP no puede reordenar los
    fragmentos puesto que normalmente solo el primero
    tiene cabecera TCP.

91
Ejercicio 7
Red interna
Internet
Router filtro
Se quiere poner en el router una regla que impida
el establecimiento de conexiones TCP desde fuera
92
Ejercicio 7
  • Solución
  • Filtrar los datagramas que entren por la
    interfaz serie y que cumplan simultáneamente
  • Tener el valor 6 en el campo protocolo (TCP)
  • Tener a 1 el bit SYN y a 0 el ACK en la cabecera
    TCP.

93
Ejercicio 8
  • Aplicación genera mensaje de 1540 bytes.
  • MTU del trayecto 800 bytes
  • Indique cuantos datagramas y bytes recibe el
    nivel de red en el host de destino

94
Ejercicio 8 solución
  • Aplicación 1540 bytes
  • TCP 1540 20 1560
  • IP 1560 20 1580
  • MTU 800 bytes

Múltiplo de 8 bytes
756
20
20
776
20
20
8
95
Ejercicio 9
  • P Sesión TCP con 100 Mb/s de BW y 20 ms de RTT.
    Calcular caudal máximo aprovechable.

R De la fórmula Ventana BW RTT obtenemos BW
Ventana / RTT SustituyendoBW 655358 / 0,02
26,2 Mb/s
96
Ejercicio 9
Cálculo detallado (con segmentos de 1 Kbyte por
ejemplo) 0 ms TCP emisor empieza a enviar 1er
segmento 0,08 ms TCP emisor empieza a enviar 2º
segmento 0,16 ms TCP emisor empieza a enviar 3er
segmento ... ... 5,16 ms TCP emisor empieza a
enviar segmento 64 5,24 ms TCP emisor queda a la
espera 10 ms TCP receptor empieza a recibir 1er
segmento 10,08 ms TCP receptor devuelve primer
ACK 20,08 ms TCP emisor recibe primer ACK y
empieza a transmitir segmento 65 Eficiencia
5,24/20,08 0,261 26,1 Mb/s
97
Ejercicio 12
  • Una conexión TCP sobre medio físico poco fiable
    pierde una trama de cada 10. El nivel de enlace
    (PPP) descarta las tramas erróneas sin pedir
    reenvío. Preguntas
  • Como evolucionará la ventana de congestión en el
    TCP emisor (retransmisión selectiva)
  • Que merma cualitativa cabe esperar por la tasa de
    error
  • Menor del 10
  • Alrededor del 10
  • Mayor del 10
  • Como influiría el RTT en el rendimiento

98
Evolución de la ventana de congestión de TCP
99
Proceso de una trama Ethernet TCP/IP recibida por
un host
Depositar contenido en buffer para proceso en
puerto destino y devolver ACK (TCP)
No
Sí
Descartar y devolver ACK
Datos duplicados (TCP)?
Sí
Descartar y devolver ICMP destino inacc.
No
Proceso TCP/UDP
Puerto destino reconocido?
Sí
No
CPU
Descartar
Checksum TCP/UDP correcto?
Sí
Descartar y devolver ICMP destino inacc.
No
Protocolo reconocido?
Sí
No
Proceso IP
Descartar
IP destino reconocida?
Sí
No
Descartar
Checksum IP correcto?
Sí
No
Descartar
MAC destino reconocida?
Driver Tarjeta
Sí
No
Descartar
CRC correcto?
Tarjeta red
Sí
No
Tarjeta de red
Descartar
Trama long. entera ? 64 ? 1518?
Trama recibida
100
Broadcast en IP
ping 147.156.1.255
C recibe un ICMP echo reply (de X)
Internet
ping 147.156.1.255
A
C
A recibe 199 ICMP echo reply
147.156.2.2/24
147.156.1.2/24
D
Y
147.156.1.1/24
ping 147.156.2.255
147.156.1.3/24

D recibe un ICMP echo reply (de Y)
no ip directed-broadcast
X
ping 147.156.255.255
D recibe un ICMP echo reply (de X)
ping 147.156.1.255
B
B recibe un ICMP echo reply (de X)
147.156.1.200/24
147.156.255.2/24
Write a Comment
User Comments (0)
About PowerShow.com