Title: Tema 6 El Nivel de Transporte en Internet
1Tema 6El Nivel de Transporte en Internet
2Sumario
- 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
3Funciones 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)
4Equivalencia Internet OSI
5TSAP
- 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
6TSAP 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
7Sumario
- 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
8TCP (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.
9Servicio 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.
10Funciones 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
11La 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
12La 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
13Sumario
- 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
14Multiplexació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
15Multiplexació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
16Dos 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
17Dos 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
18Conexiones 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 .
19Sumario
- 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
20Primitivas 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
21Evolució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
22Conexió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.
23Procedimiento 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.
24Establecimiento 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
25Conexió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
26Conexió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
27Conexió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.
28Conexió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.
29Desconexió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.
30Desconexión asimétrica
Host 1
Host 2
DATOS
Conectado
DATOS
Conectado
? Tiempo
DR
DATOS
No Conectado
Datos perdidos
No Conectado
DR Disconnect Request
31Mensaje 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.
32El problema de los dos ejércitos
33Desconexió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.
34Desconexió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
35Desconexió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)
36Otras 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)
38Nú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
39Sumario
- 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
40Intercambio 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.
41Intercambio 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.
42Intercambio 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)
43Intercambio 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)
44Gestió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.
45Gestió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
46Gestió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
47ReenvÃ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
48Control 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
49Pé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
50Pé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
51Intercambio 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
52Timer 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.
53Timer 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)
54Mensaje 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
55Mensajes 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)
56Cabeceras TCP del inicio de una conexión Telnet
57Intercambio 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
58Cliente
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
59Cliente
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
60Sumario
- 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
61Baja 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.
62Algoritmo 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
63SÃ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
64SÃ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
65Solució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
66Sumario
- 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
67Control 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.
68Control de flujo
Control de congestión
69Control 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.
70Slow 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
71Funcionamiento 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
72Slow 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
73Funcionamiento 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
74Evolució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
75Timer 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.
76Timer 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
77Dispersión del timer de retransmisión
78(No Transcript)
79Evolución de MRTT, D y timeout de retransmisión
en función del valor de RTT
80Netstat -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
81Opciones 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)
82Sumario
- 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
83Protocolo 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
84Protocolo 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
85La 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
86Cabeceras IP y UDP en una petición/respuesta SNMP
87Comparación Protocolos de transporte de Internet
() Obligatorio en IPv6
88Ejercicios
89Ejercicio 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.
90Ejercicio 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.
91Ejercicio 7
Red interna
Internet
Router filtro
Se quiere poner en el router una regla que impida
el establecimiento de conexiones TCP desde fuera
92Ejercicio 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.
93Ejercicio 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
94Ejercicio 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
95Ejercicio 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
96Ejercicio 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
97Ejercicio 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
98Evolución de la ventana de congestión de TCP
99Proceso 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
100Broadcast 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