Publicado el 2 de Junio del 2017
713 visualizaciones desde el 2 de Junio del 2017
422,5 KB
42 paginas
REDES
Área de Ingeniería Telemática
TCP
Transporte fiable en Internet
Area de Ingeniería Telemática
http://www.tlm.unavarra.es
Redes
4º Ingeniería Informática
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
S
E
D
E
R
e
d
a
e
r
Á
Hoy...
1. Introducción a las redes
2. Tecnologías para redes de área local
3. Conmutación de circuitos
4. Tecnologías para redes de área extensa y última milla
5. Encaminamiento
6. Arquitectura de conmutadores de paquetes
7. Control de acceso al medio
8. Transporte extremo a extremo
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
e
d
a
e
r
Á
S
E
D
E
R
TCP
• Protocolo de transporte de Internet
(RFC 793)
• Transporte fiable
– Entrega garantizada
– Entrega en orden
• Orientado a conexión
– Stream bidireccional (como si fuera un
fichero) entre los dos extremos
– No mantiene las fronteras de los mensajes
• Con control de flujo y congestión
3
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
S
E
D
E
R
e
d
a
e
r
Á
TCP
•
Interfaz con el nivel de aplicación
– Tras establecer una conexión proporciona un stream bidireccional
entre sockets
– Sin fronteras entre mensajes
– 2 buffers por conexión
• Escribir en el socket pone los datos en buffer de envio
• Buffer de recepción para esperar el read()
TCP
connexión
connexión
connexión
TCP
connexión
connexión
connexión
IP
IP
IP
IP
4
• Demultiplexación de datos que llegan a TCP:
TCP
– Se identifica al socket destino por la tupla
( IP origen, puerto origen, IP destino, puerto destino )
– La tabla de tuplas (ip,puerto,ip,puerto) con sus sockets de un nivel
TCP es la tabla de conexiónes.
• La conexión sólo existe en los extremos TCP
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
S
E
D
E
R
e
d
a
e
r
Á
write(datos)
puertos A1 A2 A3
TCP
connexión
connexión
connexión
IPB, puertoB1, IPA, puertoA1 : cnx1
IPB, puertoB3, IPA, puertoA2 : cnx2
IPX, puertoP , IPA, puertoA3 : cnx3
host IPA
Tabla de
conexiones
Paquete a IPB
puertoB3
read(datos)
puertos B1 B3
TCP
connexión
connexión
IPA, puertoA1, IPB, puertoB1 : cnx1
IPA, puertoA2, IPB, puertoB3 : cnx2
...
recibido paquete
host IPB
5
TCP
• Los buffers aislan a TCP de las operaciónes
del usuario.
– TCP hará lo posible por enviar los datos cuando
pueda
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
S
E
D
E
R
e
d
a
e
r
Á
– TCP colocara los datos en el buffer de recepción
cuando lleguen
• Para realizar esto TCP necesitara un
conjunto de mensajes para comunicarse con
el TCP del otro lado
– Mensajes de establecimiento y cierre de conexión
– Mensajes de datos
– Mensajes con ACKs
• Veamos los mensajes del protocolo TCP
6
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
S
E
D
E
R
e
d
a
e
r
Á
• Segmento TCP
• C a b e c e r a d e
tamaño variable
– 2 0 h a s t a 6 0
bytes según las
opciones
• Datos del nivel
de aplicación
TCP
s
o
i
r
o
t
a
g
i
l
b
o
P
C
T
a
r
e
c
e
b
a
C
s
e
t
y
b
0
2
32 bits
Cabecera IP
...
puerto origen
puerto destino
numero secuencia
HL nada
checksum
numero ack
flags
ventena recep.
urgent data ptr
opciones
Datos aplicación
7
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
e
d
a
e
r
Á
S
E
D
E
R
TCP
d e
Contenido
• D a t o s
multiplexación
– Puerto origen
– Puerto destino
Cabecera IP
...
puerto origen
puerto destino
numero secuencia
HL nada
checksum
numero ack
flags
ventena recep.
urgent data ptr
opciones
Datos aplicación
8
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
S
E
D
E
R
e
d
a
e
r
Á
TCP
Contenido
• Datos para transporte fiable
– Número de secuencia
– Número de ACK
– Checksum
C a b e c e r a + d a t o s d e
applicación + algunos datos
de IP (pseudo cabecera como
en UDP)
• E n u n m i s m o p a q u e t e
podemos mandar datos y
confirmar datos del sentido
contrario
Cabecera IP
...
puerto origen
puerto destino
numero secuencia
HL nada
checksum
numero ack
flags
ventena recep.
urgent data ptr
opciones
Datos aplicación
9
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
e
d
a
e
r
Á
S
E
D
E
R
TCP
Contenido
• FLAGs: diferentes tipos
de paquetes del protocolo
– URG urgente
– ACK acknowledgement
– PSH push
– RST reset
– SYN syn
– FIN fin
Cabecera IP
...
puerto origen
puerto destino
numero secuencia
HL nada
checksum
numero ack
flags
ventena recep.
urgent data ptr
opciones
Datos aplicación
10
TCP: conexiones
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
e
d
a
e
r
Á
S
E
D
E
R
• TCP es orientado a conexión
• Previamente a comunicarse datos entre un emisor
y un receptor deben negociar un establecimiento de
conexión.
– TCP inicializa sus variables para la conexión y crea los
buffers
– Esto se hace mediante los paquetes que utilizan los
flags SYN, FIN y RST
– Protocolo para establecer la conexión
– Protocolo para liberar la conexión
11
TCP: establecimiento de conexión
a
c
i
t
• Mecanismo: Three way handshake
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
S
E
D
E
R
e
d
a
e
r
Á
SYN
ACK+SYN
ACK
12
– Lado cliente (socket que hace connect)
– envía un paquete sin datos con el flag SYN
– Establece el numero de secuencia inicial
– Lado servidor (socket que hace accept)
–
responde con un paquete sin datos con ACK y
SYN
– Establece el numero de secuencia inicial
– Lado cliente confirma este paquete con un
– Este paquete ya puede llevar datos
– Al recibir el ACK el servidor puede enviar ya
ACK
datos
– Los SYNs gastan un número de secuencia
para poder confirmarse con ACKs
a Cierre de la conexión
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
S
E
D
E
R
e
d
a
e
r
Á
• Cualquiera de los dos
e x t r e m o s p u e d e
iniciarlo
– Envía un paquete sin
datos con el flag FIN.
Consume también un
número de secuencia
– El otro extremo, confirma
enviando un ACK e
indica que cierra también
c o n o t r o F I N . E s t e
segundo FIN puede ir en
el mismo paquete o en
otro.
– E l e x t r e m o o r i g i n a l
confirma con un ACK
FIN
ACK+FIN
ACK
FIN
ACK
FIN
ACK
13
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
e
d
a
e
r
Á
S
E
D
E
R
TCP
Contenido
• Datos para transporte fiable
– Número de secuencia
– Número de ACK
– Checksum
C a b e c e r a + d a t o s d e
applicación + algunos datos
de IP (pseudo cabecera como
en UDP)
• E n u n m i s m o p a q u e t e
podemos mandar datos y
confirmar datos del sentido
contrario
Cabecera IP
...
puerto origen
puerto destino
numero secuencia
HL nada
checksum
numero ack
flags
ventena recep.
urgent data ptr
opciones
Datos aplicación
14
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
e
d
a
e
r
Á
S
E
D
E
R
TCP
Contenido
• Ventana de recepción
• Datos urgentes
• HL (header length)
– Tamaño de la cabecera (en
palabras de 4 bytes)
– 4 bits de de 5 a 15
palabras
de 20 a 60 bytes
• Opciones extras
Cabecera IP
...
puerto origen
puerto destino
numero secuencia
HL nada
checksum
numero ack
flags
ventena recep.
urgent data ptr
opciones
Datos aplicación
15
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
e
d
a
e
r
Á
S
E
D
E
R
Datos urgentes
• Si URG está activado.
– E l p a q u e t e l l e v a d a t o s
urgentes.
Canal de datos Out-of-band
– El puntero urgente indica
donde acaban los datos
urgentes
– Los datos normales se
entregan normalmente en el
buffer para la aplicación
Cabecera IP
...
puerto origen
puerto destino
numero secuencia
HL nada
checksum
numero ack
flags
ventena recep.
urgent data ptr
– L o s d a t o s u r g e n t e s s e
entregan aparte
• No se usa mucho
opciones
Datos urgentes
Datos normales
16
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
e
d
a
e
r
Á
S
E
D
E
R
TCP: envío de datos
•
Los bytes a enviar se colocan en el buffer y forman una corriente de
bytes sin fronteras de paquetes
• TCP envia los datos en paquetes de un tamaño determinado por la
variable MSS (Maximum Segment Size) que se negocia en el
establecimiento de conexión
• El número de secuencia (y el numero de ACK) hacen referencia al
primer byte del paquete en la secuencia global
0
Datos de aplicacion a enviar al otro extremo... y no tienen fronteras de mensajes...
17
51
Buffer
seq # =17
on a enviar al otro extremo... y n
Segmentos TCP
seq # =51
o tienen fronteras de mensajes
17
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
e
d
a
e
r
Á
S
E
D
E
R
TCP: envío de datos
• Secuencia y ACK: campos de 32 bits
– 4 GB de datos antes de dar la vuelta
– La secuencia no empieza de 0 sino que se genera
al azar al principio de cada conexión y para cada
sentido
• El campo ACK
– es valido si esta activado el flag ACK
– indica la próxima secuencia que el receptor
espera recibir
cumulative ACK: tipo Go back N a nivel de byte
• Si una conexión está transmitiendo en ambos
sentidos los ACKs de un sentido van en los
paquetes de datos del opuesto piggyback
18
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
e
d
a
e
r
Á
S
E
D
E
R
Ejemplo
• Paquetes de un telnet desde 10.1.1.253 a
10.1.1.22
Cliente
el usuario
pulsa la letra ‘c’
conexión establecida
seq=6 ack=16 datos=’c’
seq=16 ack=7 datos=’c’
Servidor
el servidor recibe la
letra ‘c’ y se la envia al
usuario para que
aparezca en pantalla
el cliente del usuario
confirma la recepción
seq=7 ack=17 nodatos
19
Ejemplo
• Paquetes de un telnet desde 10.1.1.253 a 10.1.1.22
• Usando tcpdump para ver los paquetes
Tiempo
secuencia
ack
paquete
sin datos
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
S
E
D
E
R
e
d
a
e
r
Á
1124031783.543465 10.1.1.253.48129 > 10.1.1.22.23: P 6:7(1) ack 16 win 1460
1124031783.544283 10.1.1.22.23 > 10.1.1.253.48129: P 16:17(1) ack 7 win 5792
1124031783.544303 10.1.1.253.48129 > 10.1.1.22.23: . ack
Comentarios de: TCP Transporte fiable en Internet (0)
No hay comentarios