TCP - PowerPoint PPT Presentation

1 / 62
About This Presentation
Title:

TCP

Description:

No Slide Title ... tcp – PowerPoint PPT presentation

Number of Views:139
Avg rating:3.0/5.0
Slides: 63
Provided by: uba51
Category:
Tags: tcp | passive | sampler

less

Transcript and Presenter's Notes

Title: TCP


1
TCP
2
Referencias
  • Cerf, V., and R. Kahn, "A Protocol for Packet
    Network Intercommunication", IEEE Transactions on
    Communications, Vol. COM-22, No. 5, pp 637-648,
    May 1974.
  • J. Postel, RFC-793 "Transmission Control
    Protocol" September 1981.
  • ( Various errors and inconsistencies were
    detected)
  • Clarifications and bug fixes in RFC 1122 October
    1989
  • Extensions in RFC 1323
  • Peterson and Davie , pp 378-405

3
Agenda
  • Revisión Nivel de Transporte
  • El Protocolo TCP
  • Características
  • TCP Connection setup
  • Segmentos TCP
  • Números de Secuencia TCP
  • TCP Sliding Window
  • Control de Flujo
  • Timeouts y Retransmisiones (RTX)

4
Recordar los modelos de capas.
  • 1 Parte de la clase

5
Nivel Transporte
stone.ac.upc.es
milagros.dc.uba.ar
Enri
Lean
6
Modelo OSI
layer-to-layer communication
Application
Application
7
7
Presentation
Presentation
6
6
Session
Session
5
5
Peer-layer communication
Transport
Transport
Router
Router
4
4
Network
Network
Network
Network
3
3
Link
Link
Link
Link
2
2
Physical
Physical
Physical
Physical
1
1
7
TCP Características
  • TCP es orientado a conexion
  • Manejo de la conexión 3-way handshake usado
    para setup y 2-2 o 4 way handshake para la
    liberación
  • TCP provee un servicio de flujo de bytes
    (stream-of-bytes )
  • TCP es confiable ( estableciendo una suerte de
    conexión lógica entre los sockets)
  • Acknowledgements ACKs
  • Checksums
  • Números de secuencia para detectar datos perdidos
    o desordenados
  • Datos perdidos o corruptos se RTX después de un
    timeout.
  • Datos desordenados se podrían reordenar.
  • Control de Flujo evita inundar al receptor .
  • TCP implementa mecanismos de control de
    congestión ( se le dedica una clase la semana
    próxima ).

8
TCP orientado a conexión
(Activo) Cliente
(Pasivo) Server
Syn
Syn Ack
Ack
3-way handshake
Caso ideal , en el RFC 793 Se plantean varios
escenarios
9
TCP soporta un stream de bytes
Host A
Byte 0
Byte 1
Byte 2
Byte 3
Byte 80
Host B
Byte 0
Byte 1
Byte 2
Byte 3
Byte 80
10
dicho servicio se emula usando segmentos TCP
Host A
Byte 0
Byte 1
Byte 2
Byte 3
Byte 80
  • Un segmento se envía cuando
  • Segmento full (MSS bytes),
  • No esta full , pero sucede time out,
  • Pushed por la aplicación.

TCP Data
TCP Data
Host B
Byte 0
Byte 1
Byte 2
Byte 3
Byte 80
11
Formato del Segmento TCP
IP Data
IP Hdr
TCP Hdr
TCP Data
0
15
31
Src port
Dst port
Sequence
Los números de port Src/dst y la direcciones
identifican unívocamente un socket
Ack Sequence
TCP Header y Data dirección IP
Flags
Window Size
HLEN 4
RSVD 6
URG
ACK
PSH
RST
SYN
FIN
Checksum
Urg Pointer
(TCP Options)
Veremos concepto de pseudo header
TCP Data
12
Números de Secuencia
Host A
ISN (initial sequence number)
Seq_Num 1er byte
TCP HDR
TCP Data
ACK Seq_Num Próximo byte esperado
TCP HDR
TCP Data
Host B
13
Initial Sequence Numbers
(Active) Client
(Passive) Server
Syn ISNA
Syn Ack ISNB
Ack
Connection Setup 3-way handshake
14
TCP Sliding Window
  • How much data can a TCP sender have outstanding
    in the network?
  • How much data should TCP retransmit when an error
    occurs? Just selectively repeat the missing data?
  • How does the TCP sender avoid over-running the
    receivers buffers?

15
TCP Sliding Window
Window Size
Outstanding Un-ackd data
Data OK to send
Data not OK to send yet
Data ACKd
  • Retransmission policy is Go Back N.
  • Current window size is advertised by receiver
  • (usually 4k 8k Bytes when connection set-up).

16
TCP Sliding Window
Round-trip time
Window Size
Host A
Host B
ACK
ACK
(1) RTT gt Window size
17
Jacobson ( 1988)
18
TCP Retransmission and Timeouts
Round-trip time (RTT)
Retransmission TimeOut (RTO)
Guard Band
Host A
Estimated RTT
Data1
Data2
ACK
ACK
Host B
TCP uses an adaptive retransmission timeout
value Congestion Changes in Routing
RTT changes frequently
19
TCP Retransmission and Timeouts
  • Picking the RTO is important
  • Pick a values thats too big and it will wait too
    long to retransmit a packet,
  • Pick a value too small, and it will unnecessarily
    retransmit packets.
  • The original algorithm for picking RTO
  • EstimatedRTT ? EstimatedRTT (1 - ?)
    SampleRTT
  • RTO 2 EstimatedRTT
  • Characteristics of the original algorithm
  • Variance is assumed to be fixed.
  • But in practice, variance increases as congestion
    increases.

20
TCP Timer Management
Of the several timers TCP maintains the most
important is the retransmission timer RTO, (also
called timeout) . After each segment is sent,
TCP starts a retransmission timer, if ACK arrives
before timer expires, cancel timer. If timer
expires first, consider segment lost. How long
should RTO be ? Typically some small multiple of
RTT. So how to measure RTT ? Measure time
between segment sent and ACK receiver. Unfortuna
tely, in the Internet RTT are not constant, they
a vary a lot.
21
TCP Timer Management
  • (a) Probability density of ACK arrival times in
    the data link layer.
  • (b) Probability density of ACK arrival times for
    TCP.

22
Retransmisión Adaptiva (Algoritmo Original)
  • Mide SampleRTT para cada par segmento/ ACK
  • Calcula el promedio ponderado de RTT
  • EstimatedRTT a x EstimatedRTT b x SampleRTT
  • donde a b 1
  • 0.8 lt a lt 0.9
  • 0.1 lt b lt 0.2
  • Fijar timeout basado en EstimatedRTT
  • TimeOut 2 x EstimatedRTT

23
Algoritmo de Karn/Partridge
Sender
Receiver
Sender
Receiver
Original transmission
Original transmission
TT
TT
ACK
Retransmission
SampleR
SampleR
Retransmission
ACK
  • No considerar RTT cuando se retransmite
  • Duplicar timeout luego de cada retransmisión

24
Algoritmo de Jacobson/ Karels
  • Nueva forma de calcular el promedio de RTT
  • Diff sampleRTT - EstRTT
  • EstRTT EstRTT ( ? x Diff)
  • Dev Dev ? ( Diff - Dev)
  • donde ? es un factor entre 0 y 1 (Por ejemplo
    1/8)
  • Considerar varianza cuando fijamos el timeout
  • TimeOut m x EstRTT f x Dev
  • donde m 1 y f 4
  • Notas
  • Los algoritmos son tan buenos/malos como la
    granularidad del reloj (500ms en Unix)
  • Un preciso mecanismo de timeout es importante
    para controlar la congestión (más adelante)
  • Además de controlar congestión, la idea es no
    retransmitir cuando no es necesario.

25
RTO ( Ret. Timeout) exceptions
Assume a segment times out and is then
retransmitted. An ACK for the segment
arrives. So for purposes for calculating M how
do we decide if the ack is for the first send or
the retransmission ? We cannot. It might be
for the first, but very delayed, or might be for
the second. So we cannot use ACKs of
retransmitted segments for calculating M (or
updating RTT). Rule Don't use acks of
retransmitted segments to update RTT. Instead, if
segment times out, simply double RTO. This is
called the Karn's algorithm.
26
Ejemplo de estimación de RTT
27
TCP
  • 2 parte

28
TCP
  • Repaso ( basado en el Peterson)

29
Protocolos End-to-End
  • Se apoyan en la capa Red, la cual es de mejor
    esfuerzo (best-effort)
  • descarta mensajes
  • re-ordena mensajes
  • puede entregar múltiples copias de un mensaje
    dado
  • limita los mensajes a algún tamaño finito
  • entrega mensajes después de un tiempo
    arbitrariamente largo
  • Servicios comunes ofrecidos/deseados end-to-end
  • garantía de entrega de mensajes
  • entrega de mensajes en el mismo orden que son
    enviados
  • entrega de a lo más una copia de cada mensaje
  • soporte para mensajes arbitrariamente largos
    mensajes
  • soporte de sincronización
  • permitir al receptor controlar el flujo de datos
    del transmisor
  • soportar múltiples procesos de nivel aplicación
    en cada máquina

30
Demultiplexor Simple (UDP User Datagram
Protocol)
  • Servicio de entrega no confiable y no ordenado de
    datagramas
  • Agrega multiplexión
  • No hay control de flujo
  • Hay puertos definidos en cada extremo
  • servidor posee un puerto bien conocido
  • ver /etc/services en Unix (o Linux)
  • Formato de encabezado
  • Chequeo se suma opcional
  • psuedo header(IP) UDP header data

31
Contexto para encabezado UDP
IP
Pseudo encabezado
UDP
Largo de encabezado datos
32
TCP Generalidades
  • Orientado a conexión
  • flujo de byte
  • app escriben bytes
  • TCP envía segmentos
  • app lee bytes
  • Full duplex
  • Control de flujo evita que el Tx rebalse al
    receptor
  • Control de congestión evita que el Tx
    sobrecargue la red

33
Enlace de Datos Versus Transporte
  • Potencialmente conecta muchas máquinas diferentes
  • requiere de establecimiento y término de conexión
    explícitos
  • Potencialmente diferentes RTT
  • requiere mecanismos adaptivos para timeout
  • Potencialmente largos retardos en la red
  • requiere estar preparado par el arribo de
    paquetes muy antiguos
  • Potencialmente diferente capacidad en destino
  • requiere acomodar diferentes capacidades de nodos
  • Potencialmente diferente capacidad de red
  • requiere estar preparado para congestión en la red

34
Contexto Formato de Segmento
IP
Pseudo encabezado
TCP
URGACKPSHRSTSYNFIN
35
Formato de Segmento
36
Formato de Segmento (cont)
  • Cada conexión es identificada por la 4-tupla
  • (SrcPort, SrcIPAddr, DsrPort, DstIPAddr)
  • Ventana deslizante control de flujo
  • acknowledgment, SequenceNum, AdvertisedWinow
  • Flags
  • SYN, FIN, RESET, PUSH, URG, ACK
  • Checksum
  • pseudo header(IP) TCP header data

37
Establecimiento y Término de Conexión
Active participant
Passive participant
(client)
(server)
SYN, SequenceNum
x
,
y
1

SYN ACK, SequenceNum
x
Acknowledgment
ACK, Acknowledgment
y

1
38
Diagrama de Estado de Transmisión
39
Revisión de Ventana Deslizante
  • Lado Receptor
  • LastByteRead lt NextByteExpected
  • NextByteExpected lt LastByteRcvd 1
  • Se tiene en buffer los bytes entre NextByteRead y
    LastByteRcvd
  • Lado Transmisor
  • LastByteAcked lt LastByteSent
  • LastByteSent lt LastByteWritten
  • Se tiene en buffer los bytes entre LastByteAcked
    y LastByteWritten

LastByteRead1
40
Control de Flujo
  • Tamaño del buffer de envío MaxSendBuffer
  • Tamaño del buffer de recepción MaxRcvBuffer
  • Lado receptor
  • LastByteRcvd - LastByteRead lt MaxRcvBuffer
  • AdvertisedWindow MaxRcvBuffer - (LastByteRcvd -
    NextByteRead)
  • Lado Transmisor
  • LastByteSent - LastByteAcked lt AdvertisedWindow
  • EffectiveWindow AdvertisedWindow -
    (LastByteSent - LastByteAcked)
  • LastByteWritten - LastByteAcked lt MaxSendBuffer
  • Bloquear Tx si (LastByteWritten - LastByteAcked)
    y gt MaxSenderBuffer, y bytes que se desean
    escribir.
  • Siempre enviar ACK en respuesta a la llegada de
    segmentos de datos
  • Tx persiste enviando 1 byte cuando
    AdvertisedWindow 0

41
Síndrome de Ventana estúpida (Silly)
  • Qué tan agresivamente el Tx explota la apertura
    de ventana?
  • Soluciones en lado Receptor
  • Retardar los acuses de recibo

42
Silly Window Syndrome
43
Algoritmo de Nagle
  • Qué tanto tiempo el Tx retarda la transmisión de
    datos?
  • Demasiado largo afecta aplicaciones interactivas
  • Demasiado corto Utilización de la red es pobre
  • Estrategias Basadas en timers v/s auto relojes
  • Cuando la aplicación genera datos adicionales
  • Si se llena un segmento (y la ventana está
    abierta) enviar
  • Sino
  • Si hay datos sin ack en Tx dejar en buffer hasta
    llegada de ack
  • sino enviar datos

44
Nagle's algorithm
Purpose is to allow the sender TCP to make
efficient use of the network, while still being
responsive to the sender applications. Idea If
application data comes in byte by byte, send
first byte only. Then buffer all application data
till until ACK for first byte comes in. If
network is slow and application is fast, the
second segment will contain a lot of data. Send
second segment and buffer all data till ACK for
second segment comes in. This way the algorithm
is clocking the sends to speed of the network and
simultaneously preventing sending several one
byte segments back to back. An exception to this
rule is to always send (not wait for ACK) if
enough data for half the receiver window or MSS.
45
Protección contra reapariciones de igual número
de secuencia
  • SequenceNum de 32 bits
  • Bandwidth Tiempo hasta tener problema
  • T1 (1.5 Mbps) 6.4 hours
  • Ethernet (10 Mbps) 57 minutes
  • T3 (45 Mbps) 13 minutes
  • FDDI (100 Mbps) 6 minutes
  • STS-3 (155 Mbps) 4 minutes
  • STS-12 (622 Mbps) 55 seconds
  • STS-24 (1.2 Gbps) 28 seconds

46
Mantención de la tubería llena
  • AdvertisedWindow de 16 bits
  • Bandwidth Delay x Bandwidth Product
  • T1 (1.5 Mbps) 18KB
  • Ethernet (10 Mbps) 122KB
  • T3 (45 Mbps) 549KB
  • FDDI (100 Mbps) 1.2MB
  • STS-3 (155 Mbps) 1.8MB
  • STS-12 (622 Mbps) 7.4MB
  • STS-24 (1.2 Gbps) 14.8MB
  • Asumiendo RTT de 100 ms

64 KB
47
Extensiones de TCP
  • Son implementadas como opciones del encabezado
  • Almacenar marcas de tiempo en segmentos de salida
  • Extender espacio de secuencia con marca de tiempo
    de 32-bit (PAWS)
  • Desplazar (escalar) ventana avisada. La idea es
    medir la ventana en unidades de 2, 4, 8 bytes.

48
TCP Options
Some TCP options are Maximum segment size
(MSS) Specified what is the payload the sender
is able to receive. (Default MSS 536 bytes,
i.e., Segment size MSS 20). SMSS/RMSS is
Sender/Receiver MSS. Window scale The window
size field allows for upto 216 bytes of data.
But this might be inefficient for high bw x delay
situations. This options TCP indicate a scaling
factor. Negative acknowledgement Lets receiver
user NAKs to get realize selective repeat rather
than the normal go-back-N TCP behaviour.
49
Recordemos MSS
Application Message
MSS
TCP Segment
TCP data
TCP hdr
IP Packet
20 bytes
IP data
IP hdr
20 bytes
Ethernet Frame
Ethernet data
Ethernet
4 bytes
MTU 1500 bytes
14 bytes
50
Checksum
  • Se calcula entre el TCP Header , Data y el pseudo
    header

51
Window Management
52
Initial Sequence Number
  • Select initial sequence numbers (ISN) to protect
    against segments from prior connections (that may
    circulate in the network and arrive at a much
    later time)
  • Select ISN to avoid overlap with sequence numbers
    of prior connections
  • Use local clock to select ISN sequence number
  • Time for clock to go through a full cycle should
    be greater than the maximum lifetime of a segment
    (MSL) Typically MSL120 seconds

53
TCP Connection Establishment
6-31
  • (a) TCP connection establishment in the normal
    case.
  • (b) Call collision.

Initial sequence numbers are not 0. TCP uses a
clock tick counter (at 4 usecs rate) to setup the
initial sequence numbers. This scheme prevents
delayed duplicates.
54
Connection Establishment (cont)
Active participant
Passive participant
(client)
(server)
SYN, SequenceNum
x
SYNACK, SequenceNumy,
Acknowledgment x1
ACK, Acknowledgment y1
55
TCP Connection Release
  • Graceful release
  • Each side of the connection released
    independently.
  • Either side send TCP segment with FIN1.
  • When FIN acknowledged, that direction is shut
    down for data.
  • Connection released when both sides shut down.
  • 4 segments 1 FIN and 1 ACK for each direction
    1st. ACK2nd. FIN combined.
  • Two-army problem , Timers , 2 MSL

56
TCP Connection Management Modeling
TCP connection management finite state machine.
The heavy solid line is the normal path for a
client. The heavy dashed line is the normal path
for a server. The light lines are unusual
events. Each transition is labeled by the event
causing it and the action resulting from it,
separated by a slash.
57
TCP Connection Management Modeling
  • The states used in the TCP connection management
    finite state machine.

58
Maximum Segment Size
  • Maximum Segment Size
  • largest block of data that TCP sends to other end
  • Each end can announce its MSS during connection
    establishment
  • Default is 576 bytes including 20 bytes for IP
    header and 20 bytes for TCP header
  • Ethernet implies MSS of 1460 bytes
  • IEEE 802.3 implies 1452

59
Tear-down Packet Exchange
Sender
Receiver
FIN
FIN-ACK
Data write
Data ack
FIN
FIN-ACK
60
Connection Tear-down
61
Detecting Half-open Connections
62
TIME-WAIT Assassination
Write a Comment
User Comments (0)
About PowerShow.com