ul rc_cap7_el nivel de transporte en internet_
Post on 28-Jul-2015
1.518 Views
Preview:
TRANSCRIPT
1341: Redes de Computadoras
Facultad de Ingeniería de Sistemas
Sesión: 7
Ing. José C. Benítez P.
El Nivel de Transporte en Internet
Redes de Computadoras 2
Sesión 7. Temas
El Nivel de Transporte en Internet
� Aspectos generales del nivel de transporte
� Protocolo UDP
� 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
� Redes LFN, factor de escala y opciones de TCP
3
Introducción
Redes de Computadoras
Modelos OSI, TCP/IP e Hibrido:
Aplicación
Presentación
Sesión
Transporte
Red
Enlace
Física
Aplicación
Transporte
Internet
Host-red
L5: Aplicación
L4: Transporte
L3: Red
L2: Enlace
LLC
MAC
L1: Física
WAN LAN
Hardware
Firmware Software
Sist. Operativo
Progr. de usuario
4
Funciones del Nivel de Transporte
Redes de Computadoras
� 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.
� El nivel de transporte (como el de red) tiene una sola instancia en el host.
5
Funciones del Nivel de Transporte
Redes de Computadoras
� El servicio que ofrece puede ser de dos tipos:
� Orientado a conexión:
� garantiza la entrega de los datos; sin pérdidas ni duplicados.
� Ej.: TCP (Internet), TP4 (OSI)
� No orientado a conexión:
• equivale al servicio que ofrece IP, pero a nivel de transporte.
• Ej.: UDP (Internet), TP0 (OSI)
6
Tráfico TCP vs UDP en Internet
Redes de Computadoras
TCP: 80%UDP: 10%
Otros: 10%
7
Especificación del protocolo de transporte
Redes de Computadoras
32 bits
Versión Lon. Cab. DS (DiffServ) Longitud Total
Identificación Res. DF MF Desplazam. de Fragmento
Tiempo de vida (TTL) Protocolo Checksum
Dirección de origen
Dirección de destino
Opciones (de 0 a 40 octetos)
Valor Protocolo
1 ICMP
4 IP
6 TCP
17 UDP
89 OSPF
Esto son solo algunos ejemplos de los valores que puede tener el campo protocolo
IP v4Header
8
Protocolo UDP (User Datagram Protocol)
Redes de Computadoras
� 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 confirmaciones. 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 congestión (LANs). Ej: NFS.
� Se envía tráfico broadcast/multicast.
9
Protocolo UDP
Redes de Computadoras
� 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
10
La cabecera UDP
Redes de Computadoras
32 bits
Dirección IP de origen
Dirección IP de destino
00000000 00010001 Long. Datagrama UDP
Puerto de origen Puerto de destino
Longitud datagrama UDP Checksum
Pseudo cabecera
Cabecera
La pseudo cabecera:• se añade al principio del datagrama para el cálculo del checksum,
pero no se envía. • permite a UDP comprobar que IP no se ha equivocado (ni le ha
engañado) en la entrega del datagrama.
El valor 100012 = 1710 indica que el protocolo de transporte es UDP
32 bits
11
Multiplexación
Redes de Computadoras
� 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 una dirección IP y un puerto identifica un ‘socket’ (origen o destino de los datagramas UDP): 147.156.135.22.1038
Dirección IP Puerto
Socket
12
Multiplexación
Redes de Computadoras
Ethertype 0800 DATAGRAMA IP CRC
Nivel de enlace
Nivel de red
Nivel de transporte
Nivel de aplicación
Prot. 17 DATAGRAMA UDP
P. dest. 13 DATOS APLICACIÓN
NTP(Puerto 123)
DNS(Puerto 53)
Daytime(Puerto 13)
Cabecera MAC Ethernet
Cabecera IP
Cabecera UDP
Checksum
Checksum
CRC
Múltiples instancias (una por interfaz)
Una instancia IP (puede haber otros
protocolos)
Dos instancias(TCP y UDP)
Múltiples instancias (una o varias por
protocolo)
13
Conexión UDP de un cliente contra un servidor
Redes de Computadoras
Cliente IP 10.0.1.50
Servidor DaytimeIP 10.0.1.25
Port13
Port 1038
Socket: 10.0.1.25.13
Mensaje UDPp.o. 1038, p.d. 13
Mensaje UDPp.o. 13, p.d. 1038
Socket: 10.0.1.50.1038
14
Cabeceras IP y Datagrama UDP en una petición/respuesta SNMP
Redes de Computadoras
IP: ----- IP Header -----
IP:
IP: Version=4, header length=20 bytes
IP: DiffServ = 00
IP: Total length = 131 bytes
IP: Identification = 21066
IP: DF = 0, MF = 0
IP: Fragment offset = 0 bytes
IP: Time to live = 60 seconds/hops
IP: Protocol = 17 (UDP)
IP: Header checksum = 2A13 (correct)
IP: Source address = [128.1.1.1]
IP: Destination address = [128.1.1.10]
IP: No options
IP:
UDP: ----- UDP Header -----
UDP:
UDP: Source Port = 1227
UDP: Destination port = 161 (SNMP)
UDP: Length = 111
UDP: No checksum
UDP:
IP: ----- IP Header -----
IP:
IP: Version=4, header length=20 bytes
IP: DiffServ = 00
IP: Total length = 160 bytes
IP: Identification = 2015
IP: DF = 0, MF = 0
IP: Fragment offset = 0 bytes
IP: Time to live = 64 seconds/hops
IP: Protocol = 17 (UDP)
IP: Header checksum = 7061 (correct)
IP: Source address = [128.1.1.10]
IP: Destination address = [128.1.1.1]
IP: No options
IP:
UDP: ----- UDP Header -----
UDP:
UDP: Source Port = 161 (SNMP)
UDP: Destination port = 1227
UDP: Length = 140
UDP: Checksum = 4D4F (correct)
UDP:
15
TCP (Transmission Control Protocol)
Redes de Computadoras
� El protocolo TCP ofrece el servicio de transporte orientado a conexión (CONS) en Internet.
� Está diseñado para ofrecer un transportefiable 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 el RFC 793 en 1981 y sigue plenamente vigente.
16
Servicio orientado a conexión
Redes de Computadoras
� Los SOC 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, espacio libre en buffers, etc.). Dicha información se conoce como información de estado.
� Para describir los SOC se suele utilizar un modelo cliente servidor, basado en dos protagonistas:
� Cliente: el que inicia la conexión
� Servidor: el que está a la espera de recibir peticiones de conexión
� Una conexión puede terminarse tanto por iniciativa del cliente como del servidor.
� También hay aplicaciones que utilizan el modelo igual a igual (peer-to-peer) como Emule, Edonkey, etc.
17
Funciones de TCP
Redes de Computadoras
� Multiplexar el nivel de aplicación (port).
� Controlar errores;
• Retransmitiendo segmentos perdidos o erróneos.
• Eliminando duplicados.
� Establecer y terminar conexiones.
� Gestionar los buffers y ejercer control de flujo de forma eficiente.
� Gestionar el intercambio de datos con las aplicaciones.
� Efectuar control de congestión.
18
La cabecera TCP
Redes de Computadoras
Flags: CWR: Congestion Window ReducedECE: ECN Echo (ECN=Explicit Congestion Notification) URG: el segmento contiene datos urgentesACK: el campo número de acuse de recibo tiene sentidoPSH: el segmento contiene datos ‘Pushed’RST: ha habido algún error y la conexión debe cerrarseSYN: indica el inicio de una conexiónFIN: indica el final de una conexión
Relleno
Flags(8 bits)
Resv.(4 bits)
Puntero datos urgentes
Tamaño ventana
Puerto de destino
Opciones
Checksum
L. Cab.(4 bits)
Número de acuse de recibo
Número de secuencia
Puerto de origen
32 bits
20bytes
19
La pseudocabecera TCP
Redes de Computadoras
� Se añade al principio del segmento solo para el cálculo del Checksum, no se envía.
� Permite a TCP comprobar que IP no se ha equivocado (ni le ha engañado) en la entrega del segmento.
El valor 1102 = 610 indica que el protocolo de transporte es TCP
Dirección IP de origen
Dirección IP de destino
00000000 00000110 Long. Segmento TCP
32 bits
20
Multiplexación
Redes de Computadoras
� Se utiliza el número de puerto (origen o destino) como en UDP. Puede valer de 0 a 65535.
� Como en UDP los puertos 0 a 1023 están reservados para servidores ‘bien conocidos’
� Como en UDP 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 (IP origen-puerto origen, IP destino-puerto destino)
21
Algunos servicios ‘bien conocidos’
Redes de Computadoras
Servicio Puerto TCP UDP
DayTime 13 X X
FTP 21 X
SSH 22 X
TelNet 23 X
SMTP 25 X
Domain (DNS) 53 X X
BOOTP 67 X
TFTP 69 X
HTTP 80 X
POP3 110 X
NTP 123 X
SNMP 161 X
LDAP 389 X
HTTPS 443 X
22
Multiplexación
Redes de Computadoras
Nivel de enlace
Nivel de red
Nivel de transporte
Nivel de aplicación
Ethertype (0800) DATAGRAMA IP CRC
Prot. (6) SEGMENTO TCP
P. dest. (23) DATOS APLICACIÓN
SMTP(Puerto 25)
Telnet(Puerto 23)
FTP(Puerto 21)
Cabecera MAC Ethernet
Cabecera IP
Cabecera TCP
Checksum
Checksum
HTTP(Puerto 80)
HTTP(Puerto 400)
Múltiples instancias (una por interfaz)
Dos instancias(TCP y UDP)
Múltiples instancias (una o varias por
protocolo)
Una instancia IP (puede haber otros
protocolos)
23
Conexión de un cliente a un servidor web
Redes de Computadoras
Conexión TCP10.0.1.25.80-10.0.2.47.1038 Puerto
1038El computador
ejecuta el programa Explorer:
www.web.com
Socket: 10.0.2.47.1038
IP 10.0.2.47IP 10.0.1.25
Puerto 80
Socket 10.0.1.25.80
(rojo = ‘LISTEN’)
Servidor Web
24
Conexión simultánea de un computador a dos servidores web
Redes de Computadoras
Servidor Web 2 IP 10.0.3.47
Puerto 1038
El computador ejecuta Explorer hacia
10.0.1.25
Socket 10.0.3.47.80
Socket: 10.0.2.47.1038
Puerto 1039
Socket: 10.0.2.47.1039
IP 10.0.2.47
Servidor Web 1 IP 10.0.1.25
Puerto 80
Puerto 80
Socket 10.0.1.25.80
El computador ejecuta otro Explorer
hacia 10.0.3.47
25
Conexión desde dos computadores a un mismo servidor web
Redes de Computadoras
IP 10.0.1.50
Servidor Web IP 10.0.1.25
Puerto80
Puerto 1038
Puerto 1038
IP 10.0.2.47
Este socket tiene dos conexiones simultáneas
Socket 10.0.1.25.80
Socket: 10.0.2.47.1038
Socket: 10.0.2.47.1038
Computador ejecuta Explorerhacia 10.0.1.25
Computador ejecuta Explorerhacia 10.0.1.25
Las dos conexiones son diferentes porque
difieren en la dirección IP del
cliente
26
Dos conexiones desde un computador a un servidor web y uno POP3, ambos en el mismo host
Redes de Computadoras
Conexión TCP10.0.1.25.80-10.0.2.47.1038 Puerto
1038
Computador ejecuta Explorerhacia 10.0.1.25
Socket: 10.0.2.47.1038
IP 10.0.2.47
IP 10.0.1.25
Puerto 80
Socket 10.0.1.25.80
Servidor Web y POP3
Puerto 1039
Puerto 110
Conexión TCP10.0.1.25.110-10.0.2.47.1039
Socket: 10.0.2.47.1039
Socket 10.0.1.25.110
Computador ejecuta Outlookhacia 10.0.1.25
27
Dos conexiones diferentes del mismo computador al mismo servidor web
Redes de Computadoras
Conexión TCP10.0.1.25.80-10.0.2.47.1038 Puerto
1038
Computador ejecuta Explorerhacia 10.0.1.25
Socket: 10.0.2.47.1038
IP 10.0.2.47
IP 10.0.1.25
Puerto 80
Socket 10.0.1.25.80
Servidor Web
Puerto 1039
Conexión TCP10.0.1.25.80-10.0.2.47.1039
Socket: 10.0.2.47.1039
Computador ejecuta un
segundo Explorerhacia 10.0.1.25Las dos conexiones
son diferentes porque difieren en el número de puerto del cliente
28
Comando netstat
Redes de Computadoras
� El comando netstat nos permite saber que conexiones TCP tenemos establecidas y que sockets la forman en el extremo local y el remoto.
� En los servidores también nos permite averiguar que puertos están en modo ‘LISTEN’, es decir que puertos tenemos abiertos.
� Una de las formas típicas de protección de los cortafuegos (firewall) es bloquear puertos innecesarios, es decir no dejar pasar paquetes cuyo número de puerto de destino no sea alguno de los servicios abiertos.
29
Comando netstat en un host
Redes de Computadoras
C:C:C:C:\\\\>netstat>netstat>netstat>netstat
Conexiones activasConexiones activasConexiones activasConexiones activas
Proto Dirección local Dirección remota Proto Dirección local Dirección remota Proto Dirección local Dirección remota Proto Dirección local Dirección remota EstadoEstadoEstadoEstado
TCP rogelio:3719 ftp.uv.es:ftp ESTABLISHEDTCP rogelio:3719 ftp.uv.es:ftp ESTABLISHEDTCP rogelio:3719 ftp.uv.es:ftp ESTABLISHEDTCP rogelio:3719 ftp.uv.es:ftp ESTABLISHED
TCP rogelio:4111 cuervo.ci.uv.es:pop3 TIME_WAITTCP rogelio:4111 cuervo.ci.uv.es:pop3 TIME_WAITTCP rogelio:4111 cuervo.ci.uv.es:pop3 TIME_WAITTCP rogelio:4111 cuervo.ci.uv.es:pop3 TIME_WAIT
TCP rogelio:4113 cuervo.ci.uv.es:pop3 TIME_WAITTCP rogelio:4113 cuervo.ci.uv.es:pop3 TIME_WAITTCP rogelio:4113 cuervo.ci.uv.es:pop3 TIME_WAITTCP rogelio:4113 cuervo.ci.uv.es:pop3 TIME_WAIT
TCP rogelio:http miro.uv.es:1056 ESTABLISHEDTCP rogelio:http miro.uv.es:1056 ESTABLISHEDTCP rogelio:http miro.uv.es:1056 ESTABLISHEDTCP rogelio:http miro.uv.es:1056 ESTABLISHED
TCP rogelio:http hal9.uv.es:2312 ESTABLISHEDTCP rogelio:http hal9.uv.es:2312 ESTABLISHEDTCP rogelio:http hal9.uv.es:2312 ESTABLISHEDTCP rogelio:http hal9.uv.es:2312 ESTABLISHED
TCP rogelio:http *:* LISTENTCP rogelio:http *:* LISTENTCP rogelio:http *:* LISTENTCP rogelio:http *:* LISTEN
C:C:C:C:\\\\>>>>
Nombre de host local
Nombre de host remotoPuerto local
Puerto remoto
Servidor web a la escucha en este host.
Conexión de clientes (miro.uv.es y hal9.uv.es) con el servidor web de este host.
Sesión pendiente de cerrar de un cliente de correo de este host con ‘cuervo.ci.uv.es’
Conexión de un cliente ftp de este host con ftp.uv.es.
El programa netstat intenta convertir las direcciones IP y los números de puerto a nombres siempre que puede (por ejemplo pone ‘pop3’ en vez de 110).
30
Comando netstat en un host
Redes de Computadoras
31
Un diálogo TCP típico
Redes de Computadoras
TCP Cliente TCP Servidor←← ←←
Tie
mp
o
CLOSED
SYN-SENT
LISTEN
SYN-RECEIVED
ESTABLISHED
ESTABLISHED
FIN-WAIT-1
FIN-WAIT-2
TIME-WAIT
CLOSED
CLOSE-WAIT
LAST-ACK
LISTEN2-4 min.
Conexión
Desconexión
Intercambio de datos
32
Conexión por Saludo a tres vías
Redes de Computadoras
• Los segmentos pueden llegar duplicados (p. 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. Una sesión entera podría duplicarse.
• Para evitar los problemas debidos a duplicados se utiliza un procedimiento de conexión más elaborado denominado saludo a tres vías.
• El saludo a tres vías se basa en la elección de un número que identifica de forma única cada intento de conexión y que actúa como PIN. De este modo se evita el riesgo de aceptar como válidos segmentos retrasados que pudieran aparecer fruto de conexiones anteriores.
33
Procedimiento del saludo a tres vías
Redes de Computadoras
1. 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.
2. El servidor, cuando recibe la petición, elige otro número único y envía una respuesta al cliente indicándoselo.
3. 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 recibe este tercer mensaje.
34
Establecimiento de una conexión TCP por saludo a tres vías
Redes de Computadoras
TCP A(cliente)
TCP B(servidor)
←← ←←T
iem
po
CLOSED
SYN-SENT(ISN 100)
LISTEN
SYN-RECEIVED
(ISN 300)
ESTABLISHED
ESTABLISHED
35
Saludo a tres vías, conexión simultánea
Redes de Computadoras
TCP A TCP B
←← ←←T
iem
po
CLOSED
SYN-SENT(ISN 100)
CLOSED
SYN-RECEIVED
ESTABLISHED ESTABLISHED
SYN-SENT(ISN 300)
SYN-RECEIVED
36
Conexión con SYN duplicado
Redes de Computadoras
TCP A TCP B←← ←←
Tie
mp
o
CLOSED
SYN-SENT(ISN 100)
LISTEN
SYN-RECEIVED(ISN 300)
LISTEN
SYN-RECEIVED(ISN 400)
ESTABLISHED
ESTABLISHED
SYN90
SYN-SENT(ISN 90)
(timeout)
SYN90
SYN100
SYN100
37
Conexión en TCP
Redes de Computadoras
• 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 SequenceNumber) 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.
38
Conexión en TCP
Redes de Computadoras
• 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.
39
Desconexión
Redes de Computadoras
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.
40
Desconexión simétrica
Redes de Computadoras
Host 1 Host 2←← ←←
Tie
mp
o
DR: Disconnect Request
Conectado
Conectado
NoConectado No
Conectado
41
Desconexión asimétrica
Redes de Computadoras
Host 1 Host 2←← ←←
Tie
mp
o
DR: Disconnect Request
Conectado
Conectado
NoConectado
NoConectadoDatos perdidos
42
Mensaje de Desconexión
Redes de Computadoras
• 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 reconfirmación, 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.
43
El problema de los dos ejércitos
Redes de Computadoras
44
Desconexión por saludo a tres vías
Redes de Computadoras
• 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.
45
Desconexión en TCP
Redes de Computadoras
• 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 iniciarla cualquiera de los dos TCP (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.
46
Desconexión a tres vías, caso normal
Redes de Computadoras
TCP A TCP B
ESTABLISHED
FIN-WAIT-1
ESTABLISHED
CLOSE-WAIT
FIN-WAIT-2LAST-ACK
TIME-WAIT
CLOSEDCLOSED
2MSL
MSL: Maximum Segment Lifetime (normalmente 2 minutos)
47
Conexión completa TCP por saludo a tres vías
Redes de Computadoras
TCP A (cliente) TCP B (servidor)←← ←←
Tie
mp
o
CLOSED
SYN-SENT(ISN 100)
LISTEN
SYN-RECEIVED(ISN 300)
ESTABLISHED
ESTABLISHEDFIN-WAIT-1
CLOSE-WAIT
FIN-WAIT-2 LAST-ACK
TIME-WAIT
CLOSEDCLOSED
2MSL
LISTEN
48
Captura de una conexión TCP con Wireshark
Redes de Computadoras - Prof. Ing. Jose C. Benitez P.
Conexión al servidor web147.156.1.4 desde 147.156.135.22
Conexión
Desconexión
Conexión
49
Desconexión a tres vías, casos anormales
Redes de Computadoras
Libera conexión
Envía ACK
Host 1
(Timeout)libera
conexión
Host 2 Host 1
Libera conexión
Host 2
Envía FIN y arranca timer
(Timeout)envía FIN y
arranca timer
Envía FIN y arranca timer
Envía FIN y arranca timer
Envía FIN y arranca timer
Envía FIN y arranca timer
Libera conexión
Envía ACK
Host 1 Host 2
(timeout)envía FIN y
arranca timer
Envía FIN y arranca timer
(N timeouts)Libera
conexión Conectado
Pérdida de ACK final Pérdida de respuesta FIN
Pérdida de todos los FIN de host 1
Host 1 Host 2
(timeout)envía FIN y
arranca timer
Envía FIN y arranca timer
Envía FIN y arranca timer
(N timeouts)Libera
conexión
(Timeout)libera
conexión
Pérdida de todo menos primer FIN
Conectado
50
Diagrama TCP
Redes de Computadoras - Prof. Ing. Jose C. Benitez P.
51
Números de secuencia y flags
Redes de Computadoras
� 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
52
Intercambio de datos TCP ↔ aplicación
Redes de Computadoras
� 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.
53
Intercambio de datos TCP ↔ TCP
Redes de Computadoras
� 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.
54
Intercambio de datos
TCP ↔ Aplicación y TCP ↔ TCP
Redes de Computadoras
Aplicación
origen
TCP
receptor
TCP
emisor
Aplicación
destino
A criterio de la aplicación(sujeto a disponibilidad de buffer en TCP emisor)
A criterio dela aplicación
A criterio del TCP emisor(sujeto a disponibilidadde buffer en TCP receptory no congestión de la red)
Empuja
Empuja
Estira
Buffer Buffer
55
Intercambio de datos
TCP ↔ Aplicación y TCP ↔ TCP
Redes de Computadoras
Aplicación
origen
TCP
receptor
TCP
emisor
Aplicación
destino
Buffer Buffer
Escribe
Envía
Lee2048 Bytes
1024 Bytes
1024 Bytes
512 B 512 B512 B 512 B
(MSS 512 Bytes)
56
Gestión de buffers y Control de Flujo
Redes de Computadoras
� 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.
57
Gestión de buffers y Control de flujo
Redes de Computadoras
Emisor Receptor
Emisor
Bloqueado
Buffer
La aplicación
escribe 2 KB
La aplicación
escribe 3 KB
El emisor
puede enviar
hasta 2 KB
Vacío
Lleno
2 KB
2 KB
0 4K
La aplicación
lee 2 KB
3 KB
58
Gestión de buffers y Control de Flujo
Redes de Computadoras
� 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 Ley de Postel):
‘Sé estricto al enviar y tolerante al recibir’
59
Reenvío de segmentos
Redes de Computadoras
� 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
60
Control de flujo y números de secuenciaCaso normal, sin pérdidas
Redes de Computadoras
Host 1 Host 2Seq=1000, Win=4000
Seq=1500, Ack=1001, Win=4000
Seq=1001, Ack=1501, Win=40001000 bytes
Seq=1501, Ack=2001, Win=3000 1000 bytes
Seq=2001, Ack=2501, Win=3000
Seq=3001, Ack=2501, Win=3000
Seq=4001, Ack=2501, Win=3000
1000 bytes
1000 bytes
1000 bytes
Bloqueado
Seq=2501, Ack=5001, Win=2000
Seq=5001, Ack=2501, Win=3000
Seq=2501, Ack=6001, Win=30001000 bytes
Seq=2501, Ack=5001, Win=0Aplicación lee2000 bytes
SYN
SYN
61
Pérdida de un paqueteRetransmisión con repetición selectiva
Redes de Computadoras
Host 1 Host 2Seq=1000, Win=4000
Seq=1500, Ack=1001, Win=4000
Seq=1001, Ack=1501, Win=40001000 bytes
Seq=1501, Ack=2001, Win=30001000 bytes
Seq=2001, Ack=2501, Win=3000
Seq=3001, Ack=2501, Win=3000
Seq=4001, Ack=2501, Win=3000
1000 bytes
1000 bytes
1000 bytes
Bloqueado
Seq=2501, Ack=5001, Win=2000
Seq=5001, Ack=2501, Win=3000
Seq=2501, Ack=6001, Win=30001000 bytes
Seq=2501, Ack=3001, Win=1000
Seq=3001, Ack=2501, Win=3000
Timeout
1000 bytesAplicación lee2000 bytes
SYN
SYN
Seq=2501, Ack=5001, Win=0
62
Intercambio de datos: casos excepcionales
Redes de Computadoras
� 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
63
Timer de Persistencia
Redes de Computadoras
� 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.
64
Timer de persistencia
Redes de Computadoras
TCP A TCP B←← ←←
Tie
mp
o
Timer de Persistencia
100 bytes(501-600)
Buffer lleno
Datos leídos por la aplicación
Datos puestos en buffer para la aplicación
1 byte (601)
Bloqueado
65
Mensaje y timer de keepalive
Redes de Computadoras
� 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
66
Mensajes de keepalive
Redes de Computadoras
TCP Servidor TCP Cliente←← ←←
Tie
mp
o
Timer Keepalive
100 bytes (501-600)
1 byte (600)
Datos puestos en buffer para la aplicación
Datos duplicados descartados
67
Cabeceras TCP del inicio de una conexión Telnet
Redes de Computadoras
1. SYNTCP: --- TCP header ---
TCP:
TCP: Source port = 2345
TCP: Dest port = 23 (Telnet)
TCP: Initial seq. Number = 16421121
TCP: Data offset = 24 bytes
TCP: Flags = 02 (SYN)
TCP: Window = 2048
TCP: Checksum = F2DA (correct)
TCP:
TCP: Options follow
TCP: Max segment size = 1460
2. SYNTCP: --- TCP header --
TCP:
TCP: Source port = 23 (Telnet)
TCP: Dest port = 2345
TCP: Initial seq. Number = 390272001
TCP: Acknowledgment Number = 16421122
TCP: Data offset = 24 bytes
TCP: Flags = 12 (ACK,SYN)
TCP: Window = 4096
TCP: Checksum = C13A (correct)
TCP:
TCP: Options follow
TCP: Max segment size = 1024
3. ACKTCP: --- TCP header ---
TCP:
TCP: Source port = 2345
TCP: Dest port = 23 (Telnet)
TCP: Seq. Number = 16421122
TCP: Acknowledgment Number = 390272002
TCP: Data offset = 20 bytes
TCP: Flags = 10 (ACK)
TCP: Window = 2048
TCP: Checksum = DF43 (correct)
TCP: No TCP options
4. DATATCP: --- TCP header ---
TCP:
TCP: Source port = 23 (Telnet)
TCP: Dest port = 2345
TCP: Seq. Number = 390272002
TCP: Acknowledgment Number = 16421122
TCP: Data offset = 20 bytes
TCP: Flags = 18 (ACK,PSH)
TCP: Window = 4096
TCP: Checksum = 9FEF (correct)
TCP: No TCP options
TCP: [12 byte(s) of data]
68
Intercambio de segmentos del caso anterior
Redes de Computadoras
Cliente Servidor
El servidor envía la
secuencia:
UNIX
Login:
TCP Conectado
TCP Conectado
69
Referencias QoS
� Proyecto Quantum: www.dante.net/quantum
Redes de Computadoras
Redes de Computadoras - Prof. Ing. Jose C. Benitez P. 70
Sesión 7. El Nivel de Transporte en Internet
Redes de Computadoras
top related