PDF de programación - TCP Transporte fiable en Internet

<<>>
Imágen de pdf TCP Transporte fiable en Internet

TCP Transporte fiable en Internetgráfica de visualizaciones

Publicado el 2 de Junio del 2017
390 visualizaciones desde el 2 de Junio del 2017
508,2 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


S
E
D
E
R

e
d



a
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


S
E
D
E
R

e
d



a
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
  • Links de descarga
http://lwp-l.com/pdf3999

Comentarios de: TCP Transporte fiable en Internet (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad