Nível de Transporte Portas, Protocolos UDP e TCP · 2017. 11. 28. · Profa. Débora C. Muchaluat...

15
Profa. Débora C. Muchaluat Saade 1 Departamento de Ciência da Computação - UFF Nível de Transporte Portas, Protocolos UDP e TCP Profa. Débora Christina Muchaluat Saade [email protected] Disciplina : Redes de Computadores 3 Redes de Computadores Nível de Transporte 5 Redes de Computadores Camada de Transporte Aplicação Apresentação Sessão Transporte Rede Enlace Físico Rede Enlace Físico Rede Enlace Físico Aplicação Apresentação Sessão Transporte Rede Enlace Físico Host B Aplicação Apresentação Sessão Transporte Rede Enlace Físico Host A comunicação fim-a-fim 6 Redes de Computadores Camada de Transporte § Fornece meios para estabelecer, manter e liberar conexões de transporte no serviço orientado à conexão § Transporte de unidades de dados do serviço de transporte (SDUs ou mensagens) § Segmentação e blocagem § Detecção e correção de erros fim a fim § Sequenciação § Controle do fluxo de dados nas conexões de transporte § Multiplexação ou splitting Aplicação Apresentação Sessão Transporte Rede Enlace Físico 7 Redes de Computadores Services Provided to the Upper Layers The network, transport, and application layers. 8 Redes de Computadores Transport Service Primitives (2) The nesting of TPDUs, packets, and frames.

Transcript of Nível de Transporte Portas, Protocolos UDP e TCP · 2017. 11. 28. · Profa. Débora C. Muchaluat...

Page 1: Nível de Transporte Portas, Protocolos UDP e TCP · 2017. 11. 28. · Profa. Débora C. Muchaluat Saade 3 32 Redes de Computadores Nível de Transporte na Arquitetura TCP/IP Portas

Profa. Débora C. Muchaluat Saade 1

Departamento de Ciência da Computação - UFF

Nível de Transporte Portas, Protocolos UDP e TCP

Profa. Débora Christina Muchaluat Saade

[email protected]

Disciplina: Redes de Computadores

3

Redes de Computadores

Nível de Transporte

5

Redes de Computadores

Camada de Transporte

Aplicação

Apresentação

Sessão

Transporte

Rede

Enlace

Físico

Rede

Enlace

Físico

Rede

Enlace

Físico

Aplicação

Apresentação

Sessão

Transporte

Rede

Enlace

Físico

Host B Aplicação

Apresentação

Sessão

Transporte

Rede

Enlace

Físico

Host A

comunicação fim-a-fim

6

Redes de Computadores

Camada de Transporte

§  Fornece meios para estabelecer, manter e liberar conexões de transporte no serviço orientado à conexão

§  Transporte de unidades de dados do serviço de transporte (SDUs ou mensagens)

§  Segmentação e blocagem §  Detecção e correção de erros fim a fim §  Sequenciação §  Controle do fluxo de dados nas conexões de

transporte §  Multiplexação ou splitting

Aplicação

Apresentação

Sessão

Transporte

Rede

Enlace

Físico

7

Redes de Computadores

Services Provided to the Upper Layers

The network, transport, and application layers.

8

Redes de Computadores

Transport Service Primitives (2)

The nesting of TPDUs, packets, and frames.

Page 2: Nível de Transporte Portas, Protocolos UDP e TCP · 2017. 11. 28. · Profa. Débora C. Muchaluat Saade 3 32 Redes de Computadores Nível de Transporte na Arquitetura TCP/IP Portas

Profa. Débora C. Muchaluat Saade 2

10

Redes de Computadores

Addressing

TSAPs, NSAPs and transport connections.

11

Redes de Computadores

Endereçamento

§  Associação do T-SAP ao SAP de rede •  endereço hierárquico

– O endereço do SAP de rede pode ser um campo do endereço do SAP de transporte

• Endereço horizontal – Servidor de nomes

17

Redes de Computadores

Estabelecimento de Conexão Indevida

E1 E2

PC(1)

PC(2)

PC(2)

CC(2) CC(2)

D(1)

D(2) D(2)

PC(1)

CC(1) CC(1)

D(1)

PC - Pedido de Conexão CC - Confirmação da Conexão D - Dados

Timeout

18

Redes de Computadores

Estabelecimento de Conexões Utilizando Three-way Handshake

E1 E2

PC(a)

PC(a)

CC(b,a) CC(b,a)

D(a,b) D(a,b)

PC(i) = Pedido de conexão (seq=i) CC(j,i) = Confirmação de conexão (seq=j, ack=i) D(i,j) = Dados (seq=i, ack=j)

19

Redes de Computadores

R(j) = Rejeita conexão (ack=j) E1 E2

PC(a)

PC(b)

PC(b)

CC(c,b) CC(c,b)

D(b,c)

D(b,c) D(b,c)

PC(a)

CC(k,a) CC(k,a)

D(b,c) R(k)

R(k)

Timeout

Estabelecimento de Conexões Utilizando Three-way Handshake

22

Redes de Computadores

Protocolos de Transporte

§  Mesmas técnicas do nível de enlace agora aplicadas fim-a-fim

§  Controle de Fluxo

•  Stop-and-Wait •  Sliding Windows

§  Controle de Erro

•  ARQ Automatic Repeat Request •  Selective Repeat •  Go Back N

Page 3: Nível de Transporte Portas, Protocolos UDP e TCP · 2017. 11. 28. · Profa. Débora C. Muchaluat Saade 3 32 Redes de Computadores Nível de Transporte na Arquitetura TCP/IP Portas

Profa. Débora C. Muchaluat Saade 3

32

Redes de Computadores

Nível de Transporte na Arquitetura TCP/IP

Portas

33

Redes de Computadores

Inter-rede

Intra-rede Int. de adaptação

Dados encapsulados pelo datagrama IP

AP2 AP1

•  Em geral, uma aplicação é o destinatário

final de uma mensagem

Identificação do destinatário final

§  Protocolo IP não possui um mecanismo próprio para endereçar mais de uma aplicação destino na mesma máquina •  IP oferece um único SAP de rede •  Solução: uma aplicação só acessa a rede via

camada de transporte

35

Redes de Computadores

Transporte TCP UDP

Inter-rede

Aplicação

Camada de Transporte

Função básica: multiplexação/ demultiplexação

36

Redes de Computadores

Multiplexação e Demultiplexação

Aplicação 1

IP

Aplicação 2

Porta 34 Porta 22

TCP/UDP Porta 126

37

Redes de Computadores

Identificação do destinatário final

§  Utilizar um esquema próprio para a camada de transporte e independente dos SOs •  Camada de transporte fornece às aplicações um

conjunto de portas que dão acesso ao SC provido pelo IP

•  Aplicação origem deve conhecer end. IP do host onde está a aplicação destino e porta a qual a aplicação está ligada

–  (End. IP, Porta) em TCP/IP ⇔ T-SAP no OSI

38

Redes de Computadores

apl

apl

apl

apl

apl apl

apl

apl

apl

Aplicações Distribuídas

Endereçamento hierárquico em TCP/IP

G

Inter-rede

Rede B

Rede C

Rede A

H

H

H

H

H H

H

H

Page 4: Nível de Transporte Portas, Protocolos UDP e TCP · 2017. 11. 28. · Profa. Débora C. Muchaluat Saade 3 32 Redes de Computadores Nível de Transporte na Arquitetura TCP/IP Portas

Profa. Débora C. Muchaluat Saade 4

39

Redes de Computadores

Portas

§  Identificadores numéricos de 16 bits (0 a 65535) §  Antes de utilizar o UDP ou TCP, a aplicação deve

se associar a um número de porta (bind) •  Identificação (End. IP, Porta) é comumente

chamada de socket •  Berkeley sockets (Unix) e Winsock (Windows):

APIs que possibilitam a criação e uso de sockets em uma aplicação

UDP ou TCP 5 10 11 25 221 2430

40

Redes de Computadores

Protocolos de Transporte

§  Serviço sem conexão não confiável • Protocolo UDP

§  Serviço orientado a conexão confiável • Protocolo TCP

41

Redes de Computadores

Protocolo UDP

42

Redes de Computadores

Protocolo UDP (User Datagram Protocol)

§  Fornece serviço sem conexão fim-a-fim não confiável utilizando os serviços do protocolo IP diretamente

§  Permite a multiplexação/demultiplexação do SAP IP entre várias aplicações por meio de portas

§  Ideal para aplicações que não precisam de conexão • Menor tráfego e mais eficiência

43

Redes de Computadores

Formato da mensagem UDP

0 7 15 23 31

Octeto 1 Octeto 2 Octeto 3 Octeto 4

UDP SOURCE PORT UDP DESTINATION PORT UDP MESSAGE LENGTH UDP CHECKSUM

DATA . . .

46

Redes de Computadores

Porta 34 Porta 22

UDP Porta 126

Aplicação 1

IP

Aplicação 2

Multiplexação e demultiplexação UDP

§  Em um mesmo host, duas aplicações distintas podem usar a mesma porta (em tempos diferentes) •  Portas UDP ⇔ Filas de

mensagens

§  Se a fila correspondente à porta estiver cheia, a mensagem UDP é descartada

§  Se uma mensagem UDP for endereçada a uma porta não utilizada no momento, a mesma é descartada e é gerada uma mensagem ICMP Port Unreachable

Page 5: Nível de Transporte Portas, Protocolos UDP e TCP · 2017. 11. 28. · Profa. Débora C. Muchaluat Saade 3 32 Redes de Computadores Nível de Transporte na Arquitetura TCP/IP Portas

Profa. Débora C. Muchaluat Saade 5

47

Redes de Computadores

Uso de portas UDP

§  Aplicações devem entrar em acordo quanto às portas a serem utilizadas

§  Abordagem 1: •  Números bem-conhecidos para serviços, atribuídos pela IANA

–  Portas < 1024 (Well-Known Ports - WKPs)

•  Geralmente utilizada por servidores – Exemplos:

53 DNS Server 69 TFTP 67/68 DHCP Server/Client

§  Abordagem 2: •  Alocação dinâmica de portas (em geral, controlada de forma

aleatória pelo SO)

48

Redes de Computadores

Protocolo TCP

50

Redes de Computadores

Protocolo TCP (Transmission Control Protocol)

§  Multiplexação do SAP IP por meio de portas §  Serviço orientado a conexão (circuito virtual) e confiável

•  Sequenciação •  Controle de fluxo e erro fim-a-fim

§  Transmissão de fluxos de bits •  Menor unidade de transmissão: octeto

§  Desassociação da qtd. de dados enviados pela aplicação •  Segmentação e blocagem

§  Conexão full-duplex •  Fluxos independentes nas duas direções

52

Redes de Computadores

Conexão =

(139.82.17.10,22) + (139.82.55.3,2340) TCP

IP

TCP

IP

Porta 22 Porta 2340

Host 139.82.17.10 Host 139.82.55.3 Inter-rede

Multiplexação e demultiplexação TCP

§  Para o TCP, não basta associar uma porta a uma aplicação. É necessário o estabelecimento de uma conexão entre a aplicação origem e a aplicação destino •  Uma conexão é identificada por um par de sockets •  Uma porta pode ser compartilhada entre várias conexões em

um mesmo host simultaneamente

53

Redes de Computadores

Espera conexão (passiva) Estabelece conexão (ativa)

Requisição de estabelecimento

Resposta de requisição Bin

d c/

po

rta

OR

IG

Bind c/

porta DEST

Após o estabelecimento da conexão, as aplicações podem transmitir fluxos de dados entre si,

independentemente da passividade ou atividade das mesmas durante o estabelecimento

Estabelecimento de conexões

§  Quem inicia o estabelecimento da conexão? •  Aplicação ativa X Aplicação passiva

54

Redes de Computadores

Uso de portas TCP

§  Bind da aplicação ativa: alocação dinâmica de portas

§  Bind da aplicação passiva: Well-Known Ports – Exemplos:

20 FTP-DATA 79 Finger 21 FTP Control 80 HTTP 23 Telnet 110 POP3 25 SMTP 161 SNMP 53 DNS Server 443 HTTPS

Page 6: Nível de Transporte Portas, Protocolos UDP e TCP · 2017. 11. 28. · Profa. Débora C. Muchaluat Saade 3 32 Redes de Computadores Nível de Transporte na Arquitetura TCP/IP Portas

Profa. Débora C. Muchaluat Saade 6

55

Redes de Computadores

Aplicação Transmissora

IP

Porta 126

TCP Em geral, o tamanho máx. de um segmento

TCP corresponde a um datagrama IP que não sofra fragmentação na origem. Isso não

significa que os segmentos relativos a uma conexão precisem ter sempre o mesmo

tamanho.

Fluxo de bits original

Segmentação e blocagem no transmissor

Segmentos TCP enviados Padrão gerado pela escrita

da aplicação

56

Redes de Computadores

Aplicação Receptora

IP

Porta 126

TCP

Segmentação e blocagem no receptor

Fluxo de bits original

Segmentos TCP recebidos Padrão gerado pela leitura

da aplicação

Aplicação receptora recebe os bits do fluxo original na mesma ordem em que

foram enviados pela aplicação transmissora

58

Redes de Computadores

Formato do segmento TCP

Octeto 1 Octeto 2 Octeto 3 Octeto 4 0 7 15 23 31

TCP DESTINATION PORT TCP SOURCE PORT

DATA (IF ANY) ...

WINDOW HLEN

SEQUENCE NUMBER

RESERVED CODE BITS

ACKNOWLEDGEMENT NUMBER

URGENT POINTER CHECKSUM

PADDING OPTIONS (IF ANY)

60

Redes de Computadores

Sequenciação, controle de erro e de fluxo

§  Controle de segmentos perdidos, recebidos fora de ordem ou duplicados •  Cada segmento possui um número de seqüência

§  Detecção de erros •  Checksum (em caso de erro, segmento é descartado) •  Reconhecimento de segmentos

§  Correção de erros (por perda ou descarte) •  Retransmissão de segmentos não reconhecidos

§  Controle de fluxo •  Mecanismo de janelas deslizantes (Sliding Windows)

61

Redes de Computadores

Janelas deslizantes no TCP

§  Atuam no controle de fluxo E no controle de erro •  Controle de fluxo

– Restringem a velocidade do transmissor caso o receptor não tenha buffer suficiente para receber mais dados

•  Controle de erro –  Permitem identificar os segmentos já reconhecidos

§  Quatro janelas por conexão •  Tamanho das janelas é variável

§  Janelas operam sobre octetos, não sobre segmentos

62

Redes de Computadores

Janelas deslizantes no TCP

Janela de transmissão (Octetos)

... ... ...

segmentos

Transmitidos e reconhecidos

Em processo de transmissão Ainda a serem transmitidos

Janela de recepção (Octetos)

...

Buffer livre para recepção

...

Buffer ocupado com octetos não lidos

pela aplicação receptora

... ...

Page 7: Nível de Transporte Portas, Protocolos UDP e TCP · 2017. 11. 28. · Profa. Débora C. Muchaluat Saade 3 32 Redes de Computadores Nível de Transporte na Arquitetura TCP/IP Portas

Profa. Débora C. Muchaluat Saade 7

63

Redes de Computadores

Janelas deslizantes no TCP

Janela de transmissão (Octetos)

... ... ...

Janela de recepção (Octetos)

... ...

... ...

SEQ (X octetos) Necessário para o controle

de retransmissões

64

Redes de Computadores

Janelas deslizantes no TCP

Janela de transmissão (Octetos)

... ... ...

Janela de recepção (Octetos)

... ...

... ...

SEQ (X octetos)

...

65

Redes de Computadores

Janelas deslizantes no TCP

Janela de transmissão (Octetos)

... ... ...

Janela de recepção (Octetos)

... ...

ACK (reconhecimento)

... ...

...

Reconhecimentos são sempre cumulativos, isto é, especificam o número de sequência do

próximo OCTETO que o receptor espera receber.

66

Redes de Computadores

Janelas deslizantes no TCP

Janela de transmissão (Octetos)

... ... ...

Janela de recepção (Octetos)

... ...

... ...

...

67

Redes de Computadores

Janelas deslizantes no TCP

Janela de transmissão (Octetos)

... ... ...

Janela de recepção (Octetos)

... ...

Aplicação receptora lê

Y octetos

... ...

...

68

Redes de Computadores

Janelas deslizantes no TCP

Janela de transmissão (Octetos)

... ... ...

Janela de recepção (Octetos)

... ...

WIN (atualização de janela)

... ...

...

Page 8: Nível de Transporte Portas, Protocolos UDP e TCP · 2017. 11. 28. · Profa. Débora C. Muchaluat Saade 3 32 Redes de Computadores Nível de Transporte na Arquitetura TCP/IP Portas

Profa. Débora C. Muchaluat Saade 8

69

Redes de Computadores

Janelas deslizantes no TCP

Janela de transmissão (Octetos)

... ... ...

... ...

... ...

Janela de recepção (Octetos)

Bufferização e temporização são fundamentais para controle de erro e fluxo em TCP

70

Redes de Computadores

Octeto 1 Octeto 2 Octeto 3 Octeto 4 0 7 15 23

TCP DESTINATION PORT TCP SOURCE PORT

DATA (IF ANY) ...

WINDOW HLEN

SEQUENCE NUMBER

RESERVED CODE BITS ACKNOWLEDGEMENT NUMBER

URGENT POINTER CHECKSUM PADDING OPTIONS (IF ANY)

Segmento TCP

Identifica a posição, relativa ao fluxo de bits do

transmissor deste segmento, dos dados

carregados pelo mesmo. OBS: posição informada

em octetos

Informa ao receptor deste segmento a quantidade

máxima de octetos que o transmissor deste

segmento pode aceitar no momento

Informa ao receptor deste segmento o próximo

número de sequência que o transmissor deste

segmento espera receber no próximo

segmento

ACK NUMBER e WINDOW são carregados no segmento do sentido oposto (piggybacking)

31

A B

Buffer de Rx de A

2500 octetos

... Buffer de Tx de A

1052 1053 ... 3050 3051 1051 3052 ... 1054 1055 3048 3049

Suposições no exemplo: - buffer de Rx de A vazio neste instante

- buffers de Tx de A e B infinitamente cheios

... Buffer de Tx de A

1052 1053 ... 3050 3051 1051 3052 ... 1054 1055 3048 3049

A B

502 ... 2000 2001 2002 2598 2599 ... janela de Rx: tamanho 2100 octetos

2000 WIN

1052 101 SEQ ACK

...

Dados 400 octetos

501 2600

buffer livre

500 ... 499 101

segmento recém-recebido Buffer de Rx de A

2500 octetos

Podemos inferir o novo estado do buffer de Rx de A ?

TCP em B “resolve” transmitir 400 octetos.

... Buffer de Tx de A

1052 1053 ... 3050 3051 1051 3052 ... 1054 1055 3048 3049

A B

502 ... 2000 2001 2002 2598 2599 ... janela de Rx: tamanho 2100 octetos

2000 WIN

1052 101 SEQ ACK

...

Dados 400 octetos

501 2600

buffer livre

500 ... 499 101

segmento recém-recebido Buffer de Rx de A

2500 octetos

E o estado do buffer de Tx de A ?

A B

502 ... 2000 2001 2002 2598 2599 ... janela de Rx: tamanho 2100 octetos

2000 WIN

1052 101 SEQ ACK

...

Dados 400 octetos

Buffer de Rx de A

2500 octetos 500 ... 499 101

segmento recém-recebido

501 2600

buffer livre

... Buffer de Tx de A

1052 1053 ... 2050 2051 2052 3050 3051 1051 ... 3052

janela de Tx: tamanho 2000 octetos

...

Page 9: Nível de Transporte Portas, Protocolos UDP e TCP · 2017. 11. 28. · Profa. Débora C. Muchaluat Saade 3 32 Redes de Computadores Nível de Transporte na Arquitetura TCP/IP Portas

Profa. Débora C. Muchaluat Saade 9

A B

502 ... 2000 2001 2002 2598 2599 ... janela de Rx: tamanho 2100 octetos

2000 WIN

1052 101 SEQ ACK

...

Dados 400 octetos

Buffer de Rx de A

2500 octetos 500 ... 499 101

segmento recém-recebido

501 2600

buffer livre

... Buffer de Tx de A

1052 1053 ... 2050 2051 2052 3050 3051 1051 ... 3052

janela de Tx: tamanho 2000 octetos

...

TCP em A “resolve” transmitir 1000 octetos

... Buffer de Tx de A

1052 1053 ... 2050 2051 2052 3050 3051 1051 ... 3052

janela de Tx: tamanho 2000 octetos

... segmento a ser transmitido

A B

502 ... 2000 2001 2002 2598 2599 ... janela de Rx: tamanho 2100 octetos

2000 WIN

1052 101 SEQ ACK

...

Dados 400 octetos

Buffer de Rx de A

2500 octetos 500 ... 499 101

segmento recém-recebido

501 2600

buffer livre

1052 501 SEQ ACK

2100 WIN

...

Dados 1000 octetos

A B 1052 501 SEQ ACK

2100 WIN

...

Dados 1000 octetos

2052 501 SEQ ACK

2100 WIN

...

Dados 500 octetos

Podem ser enviados vários segmentos

antes de algum reconhecimento

(respeitando a janela de Tx)

502 ... 2000 2001 2002 2598 2599 ... janela de Rx: tamanho 2100 octetos

Buffer de Rx de A

2500 octetos 500 ... 499 101 501 2600

... Buffer de Tx de A

1052 ... 2051 2052 2551 2552 3051 1051 ... 3052

janela de Tx: tamanho 2000 octetos

...

segmento recém-transmitido

segmento a ser transmitido

TCP em A “resolve” transmitir mais 500 octetos

A B

Buffer de Rx de A

2500 octetos

2052 501 SEQ ACK

2100 WIN

...

Dados 500 octetos

Aplicação em A leu 300 octetos

502 ... 2000 2001 2002 2598 2599 ... janela de Rx: tamanho 2100 octetos

500 ... 499 101 501 2600

A B

Buffer de Rx de A

2500 octetos 501 502 2000 2001 2002 2898 2899 ...

2052 501 SEQ ACK

2100 WIN

...

Dados 500 octetos

... 500 ... 499 2900 401 502 ... 2000 2001 2002 2898 2899 ... janela de Rx: tamanho 2400 octetos

2552 501 SEQ ACK

2400 WIN

Segmento carregando somente atualização de janela

A B

Buffer de Rx de A

2500 octetos 501 502 2000 2001 2002 2898 2899 ...

2052 501 SEQ ACK

2100 WIN

...

Dados 500 octetos

... 500 ... 499 2900 401 502 ... 2000 2001 2002 2898 2899 ... janela de Rx: tamanho 2400 octetos

TCP em B “resolve” transmitir 1500 octetos

Page 10: Nível de Transporte Portas, Protocolos UDP e TCP · 2017. 11. 28. · Profa. Débora C. Muchaluat Saade 3 32 Redes de Computadores Nível de Transporte na Arquitetura TCP/IP Portas

Profa. Débora C. Muchaluat Saade 10

A B

Buffer de Rx de A

2500 octetos 501 502 2000 2001 2002 2898 2899 ...

janela de Rx: tamanho 900 octetos

2052 501 SEQ ACK

2100 WIN

...

Dados 500 octetos

501 2552 SEQ ACK

4000 WIN

...

Dados 1500 octetos

... 500 ... 499 ... 500 ... 499 2900 401

segmento recém-recebido

Buffer de Tx de A

... 3000 3001 3002 6550 6551 ... 6552

janela de Tx: tamanho 4000 octetos

... ... 2552 2553 2551

A B

Buffer de Rx de A

2500 octetos 501 502 2000 2001 2002 2898 2899 ...

janela de Rx: tamanho 900 octetos

2052 501 SEQ ACK

2100 WIN

...

Dados 500 octetos

501 2552 SEQ ACK

4000 WIN

...

Dados 1500 octetos

... 500 ... 499 ... 500 ... 499 2900 401

A B

Buffer de Rx de A

2500 octetos 501 502 2000 2001 2002 2898 2899 ...

janela de Rx: tamanho 900 octetos

2052 501 SEQ ACK

2100 WIN

...

Dados 500 octetos

501 2552 SEQ ACK

4000 WIN

...

Dados 1500 octetos

... 500 ... 499 ... 500 ... 499 2900 401

Buffer de Tx de A

... 3000 3001 3002 6550 6551 ... 6552

janela de Tx: tamanho 4000 octetos

... ... 2552 2553 2551

TCP em A “resolve” transmitir 450 octetos

A B

Buffer de Tx de A

Buffer de Rx de A

2400 octetos

... 6550 6551 ... 6552

janela de Tx: tamanho 4000 octetos

... ...

501 502 ... 2000 2001 2002 2898 2899 500 ... 2900 ... janela de Rx: tamanho 900 octetos

499 401

501 2552 SEQ ACK

4000 WIN

...

Dados 1500 octetos

2552 2553 2551

2552 2001 SEQ ACK

900 WIN

...

Dados 450 octetos

3000 3001 3002

segmento a ser transmitido

A B

Buffer de Tx de A

Buffer de Rx de A

2400 octetos

... 6550 6551 ... 6552

janela de Tx: tamanho 4000 octetos

... ...

501 502 ... 2000 2001 2002 2898 2899 500 ... 2900 ... janela de Rx: tamanho 900 octetos

499 401

501 2552 SEQ ACK

4000 WIN

...

Dados 1500 octetos

2552 2553 2551

2552 2001 SEQ ACK

900 WIN

...

Dados 450 octetos

3000 3001 3002

segmento a ser transmitido

TCP em B “resolve” reconhecer 450 octetos (por exemplo, já se passaram 0.2 seg desde o último reconhecimento)

A B

Buffer de Tx de A

Buffer de Rx de A

2400 octetos

... 6550 6551 ... 6552

janela de Tx: tamanho 3550 octetos

... ...

501 502 ... 2000 2001 2002 2898 2899 500 ... 2900 ... janela de Rx: tamanho 900 octetos

499 401

2001 3002 SEQ ACK

3550 WIN

2552 2553 2551

2552 2001 SEQ ACK

900 WIN

...

Dados 450 octetos

3000 3001 3002

Segmento carregando somente

reconhecimento

Page 11: Nível de Transporte Portas, Protocolos UDP e TCP · 2017. 11. 28. · Profa. Débora C. Muchaluat Saade 3 32 Redes de Computadores Nível de Transporte na Arquitetura TCP/IP Portas

Profa. Débora C. Muchaluat Saade 11

A B

Buffer de Rx de A

2400 octetos 501 502 ... 2000 2001 2002 2898 2899 500 ... 2900 ...

janela de Rx: tamanho 900 octetos

499 401

2552 2001 SEQ ACK

900 WIN

...

Dados 450 octetos

Buffer de Tx de A

... 6550 6551 ... 6552

janela de Tx: tamanho 4000 octetos

... ... 2552 2553 2551 4050 4051 4052

E se o reconhecimento não chegar antes do timeout?

segmento a ser transmitido

2552 2001 SEQ ACK

900 WIN

...

Dados 1500 octetos

timeo

ut

Retransmissão

91

Redes de Computadores

Considerações a respeito da retransmissão

§  Novamente: reconhecimento especifica próximo OCTETO esperado pelo receptor • TCP não é obrigado a retransmitir o segmento

original. Ele pode transmitir um segmento resultante da união de dois ou mais segmentos consecutivos (repacketization), respeitando o tamanho máximo que um segmento pode ter

§  Configuração do timeout de retransmissão • Timeout pequeno: retransmissões desnecessárias • Timeout grande: baixo throughput

92

Redes de Computadores

Timeout e Retransmissão

§  Para acomodar as variações de atrasos que acontecem em um ambiente inter-rede, o TCP usa um algoritmo adaptativo de retransmissão que monitora os atrasos em cada conexão e ajusta seu parâmetro de timeout de acordo.

§  Variável básica para cálculo do timeout medida dinamicamente: •  round trip time - tempo entre cada segmento

enviado e seu respectivo reconhecimento

93

Redes de Computadores

Definição do timeout de retransmissão

§  Variável básica: round-trip time (tempo entre cada segmento enviado e seu respectivo reconhecimento)

§  Exemplo de fórmula para cálculo adaptativo do RTT •  RTT = (a * OLD_RTT) + ((1-a) * NEW_RTT_SAMPLE) •  RTT inicial = 0 (RFC 1122)

§  Exemplo de fórmula para definição do timeout em função de RTT •  Timeout = b x RTT

–  b pode ser estático (2) ou obtido por outro algoritmo •  Timeout inicial = 3 segundos •  Timeout máximo = 240 segundos

§  Algoritmo de Jacobson (melhor resposta a altas variações de RTT) – usado pela maioria das implementações atuais do TCP •  D = variância de RTT •  D = yD + (1-y) | RTT – NEW_RTT_SAMPLE | •  Timeout = RTT + 4D

94

Redes de Computadores

Cálculo do timeout

SEQ = 100

SEQ = 200

ACK = 300

SEQ = 300

SEQ = 400

Timeout = 3000 ms

NEW_RTT_SMP = 1000ms RTT = 500 ms

α = 0.5, β = 2 Tamanho dos segmentos = 100

Timeout = 1000 ms

ACK = 500 SEQ = 300

NEW_RTT_SMP = ?

Timeout esgotado

Ambiguidade de reconhecimento

95

Redes de Computadores

Ambiguidade de reconhecimento

§  Caso o reconhecimento do segmento chegue após a retransmissão do mesmo, como saber se o reconhecimento se refere ao segmento original ou a retransmissão para calcular o round trip time? •  Solução: não considerar RTT de segmentos retransmitidos

– RTT pode permanecer indefinidamente inadequado

§  Algoritmo de Karn •  Timer Backoff: toda vez que um segmento é retransmitido,

timeout é multiplicado por N (normalmente 2) •  Quando é recebido o reconhecimento correspondente a um

segmento não retransmitido, RTT e Timeout são recalculados com base nos valores anteriores aos Backoffs

Page 12: Nível de Transporte Portas, Protocolos UDP e TCP · 2017. 11. 28. · Profa. Débora C. Muchaluat Saade 3 32 Redes de Computadores Nível de Transporte na Arquitetura TCP/IP Portas

Profa. Débora C. Muchaluat Saade 12

96

Redes de Computadores

Algoritmo de Karn

SEQ = 100

SEQ = 200

ACK = 300

SEQ = 300

SEQ = 400

NEW_RTT_SMP = 1000ms RTT = 500 ms

SEQ = 500

ACK = 600

Timeout = 1000 ms

ACK = 500 SEQ = 300 Timeout = 2000 ms

Karn

NEW_RTT_SMP = 800 ms RTT = 650 ms

Timeout = 1300 ms

Timeout = 2000 ms

α = 0.5, β = 2 Tamanho dos segmentos = 100

97

Redes de Computadores

Considerações a respeito do controle de fluxo

§  Receptor informa WINDOW = 0 quando não consegue mais receber

§  Quando espaço é liberado, receptor envia atualização de janela com WINDOW > 0 •  E se a atualização de janela for perdida ?

– Transmissor envia segmentos de um único octeto periodicamente (window probes) para testar tamanho da janela de recepção do receptor

•  E se a aplicação receptora estiver lendo do buffer blocos de dados muito pequenos, em comparação com a taxa de envio do módulo TCP no transmissor ?

98

Redes de Computadores

Controle de fluxo

SEQ = 100

SEQ = 200

ACK = 300 WIN = 299

Apl. lê um octeto SEQ = 300

SEQ = 400

ACK = 500 WIN = 100

SEQ = 500

Tam

anho

dos

se

gmen

tos

= 10

0

... ACK = 600

WIN = 0

ACK = 300 WIN = 300

99

Redes de Computadores

Controle de fluxo (continuação)

SEQ = 500

Apl. lê um octeto

SEQ = 600

SEQ = 601

ACK = 601 WIN = 0

Apl. lê um octeto

ACK = 602 WIN = 0 ...

...

Tam

anho

dos

se

gmen

tos

= 1

Silly Window Syndrome

ACK = 600 WIN = 1

ACK = 600 WIN = 0

ACK = 601 WIN = 1

101

Redes de Computadores

Silly Window Syndrome

§  Solução no transmissor: algoritmo de Nagle •  Quando uma aplicação gera novos dados a serem enviados em

uma conexão na qual dados anteriores foram transmitidos mas não reconhecidos, os novos dados são bufferizados, só sendo enviados quando:

–  for possível completar um segmento de tamanho máximo OU

–  os dados anteriores forem reconhecidos

103

Redes de Computadores

Silly Window Syndrome

§  Solução no receptor: solução de Clark •  Só enviar uma atualização de janela informando WINDOW > 0

posteriormente a uma atualização de janela informando WINDOW = 0 quando buffer de recepção estiver com espaço livre igual a:

–  pelo menos 50% do buffer OU

–  espaço correspondente a um segmento de tamanho máximo

Page 13: Nível de Transporte Portas, Protocolos UDP e TCP · 2017. 11. 28. · Profa. Débora C. Muchaluat Saade 3 32 Redes de Computadores Nível de Transporte na Arquitetura TCP/IP Portas

Profa. Débora C. Muchaluat Saade 13

104

Redes de Computadores

Colapso de congestionamento

Controle de congestionamento

§  Controle de fluxo do TCP é fim-a-fim, mas pode ocorrer congestionamento em qualquer roteador

§  Sliding Window não garante que o TCP contribua no controle de congestionamento •  Roteadores na iminência de congestionamento •  Aumento do RTT •  Retransmissões devido a reconhecimentos atrasados •  Aumento da carga nos roteadores congestionados

– Descarte de datagramas (dados e ACKs) em roteadores congestionados

105

Redes de Computadores

Colapso de congestionamento

§  Solução: TCP assume que grande parte das perdas de segmentos se deve a congestionamento

§  É associado ao transmissor uma janela de congestionamento, que limita a transmissão de segmentos •  Janela de congestionamento inicial: 1 segmento •  Vazão da conexão cresce com o aumento da janela de

congestionamento, que em condições normais mantém seu tamanho igual ao da janela de recepção do receptor

§  Em caso de retransmissão, a janela de congestionamento é reduzida ao seu tamanho inicial •  Algoritmo de Karn é utilizado exponencialmente

106

Redes de Computadores

Como aumentar a vazão da conexão ?

§  Algoritmo de Slow Start •  Para cada reconhecimento recebido (de um segmento não

retransmitido), a janela de congestionamento é aumentada de um segmento (de tamanho máximo)

§  Em condições “ideais”, o algoritmo de Slow Start pode levar a um crescimento exponencial da janela de congestionamento •  Sobrecarga na rede pode reiniciar congestionamento •  Solução: técnica de prevenção contra congestionamento

– Quando a janela de congestionamento atinge metade de seu tamanho anterior à última retransmissão, o TCP passa a aumentar a janela de congestionamento somente quando TODOS os segmentos internos à janela forem reconhecidos

107

Redes de Computadores

Slow Start

Tamanho dos segmentos = 1Kb Janela de Recepção = 64 Kb

0

8

16

24

32

40 1 3 5 7 9 11

13

15

17

19

21

23

25

Número da transmissão

Jane

la d

e co

nges

tiona

men

to

(Kby

tes)

108

Redes de Computadores

Slow Start

§  Algoritmo de Slow Start reduz drasticamente a vazão de uma conexão TCP

§  Melhoria: técnica de decréscimo multiplicativo •  Em caso de retransmissão, a janela de congestionamento é

reduzida pela metade, até o mínimo de um segmento de tamanho máximo

109

Redes de Computadores

Slow Start + Decréscimo Multiplicativo

Tamanho dos segmentos = 1Kb Janela de Recepção = 64 Kb

0

8

16

24

32

40

1 3 5 7 9 11

13

15

17

19

21

23

25

Número da transmissão

Jane

la d

e co

nges

tiona

men

to

(Kby

tes)

Page 14: Nível de Transporte Portas, Protocolos UDP e TCP · 2017. 11. 28. · Profa. Débora C. Muchaluat Saade 3 32 Redes de Computadores Nível de Transporte na Arquitetura TCP/IP Portas

Profa. Débora C. Muchaluat Saade 14

110

Redes de Computadores

•  Após estouro de temporizador–  CongWin é reduzida a 1 MSS; –  Janela cresce exponencialmente: volta à partida lenta

–  Até um limiar (ssthresh), depois cresce linearmente•  Após 3 ACKs duplicados: duas possibilidades

–  Similar quando há estouro do temporizador ou corta CongWin pela metade, se implementa a recuperação rápida

–  A janela depois cresce linearmente

1.  3 ACKs duplicados indica que a rede é capaz de entregar alguns segmentos

2.  Estouro de temporizador antes de 3 ACKs duplicados é mais “alarmante”

Controle de Congestionamento do TCP - Adaptações

111

Redes de Computadores

•  Quando a CongWin está abaixo do limiar ssthresh–  Transmissor está na fase de partida lenta–  Janela cresce exponencialmente

•  Quando a CongWin está acima do limiar ssthresh–  Transmissor está na fase de prevenção de congestionamento–  Janela cresce linearmente

•  Quando chegam três ACKs duplicados–  Limiar passa a ser CongWin/2 e CongWin = valor do limiar–  Recuperação rápida

•  Quando estoura o temporizador–  Limiar é ajustado para CongWin/2 e CongWin = 1 MSS

Controle de Congestionamento do TCP - Resumo

112

Redes de Computadores

•  Tahoe –  Original (slow start, congestion avoidance, fast retransmit)

•  Reno (aditive increase, multiplicative decrease) •  Vegas •  SACK •  NewReno (RFC 2582)

–  Usado no Windows Vista •  Bic

–  Usado pelo Debian (/proc/sys/net/ipv4/tcp_congestion_control)

•  etc.

Implementações do TCP

114

Redes de Computadores

Octeto 1 Octeto 2 Octeto 3 Octeto 4 0 7 15 23 31

TCP DESTINATION PORT TCP SOURCE PORT

DATA ...

WINDOW HLEN

SEQUENCE NUMBER

RESERVED CODE BITS ACKNOWLEDGEMENT NUMBER

URGENT POINTER CHECKSUM PADDING OPTIONS (IF ANY)

URG ACK PSH RST SYN FIN Urgent Pointer válido

Campo ACK válido Requisição de PUSH Reinicializa conexão

Sincroniza números de sequência Transmissor atingiu fim do stream

Segmento TCP

CODE BITS (6 bits)

Uma vez que uma conexão tenha sido estabelecida, este flag permanece sempre setado

115

Redes de Computadores

Conexões TCP

§  Estabelecimento de Conexões TCP • Flag SYN=1 (code bits) •  Implementa three-way handshake

§  Conexão full-duplex §  Encerramento de Conexões

• Flag FIN=1 (code bits) •  fluxos são encerrados de modo independente • na prática, o encerramento dos fluxos costuma

ocorrer consecutivamente

116

Redes de Computadores

Apl. ativa Apl. passiva

Caso trivial do algoritmo 3-way handshake

isnA - SEQ ACK

x octetos (x=0, geralmente)

Flag SYN = 1 Flag ACK = 0

isnA+x+1 isnB+y+1 SEQ ACK Flag SYN = 0

Flag ACK = 1

isnB isnA+x+1 SEQ ACK

y octetos (y=0, geralmente)

Flag SYN = 1 Flag ACK = 1

Estabelecimento de conexões

§  SEQ carrega número de sequência inicial (ISN, incr. a cada 4µs) que cada módulo TCP vai utilizar para sequenciar segmentos TCP

§  ACK permite que dados do usuário sejam enviados junto ao pedido de estabelecimento (reconhecimento na confirmação da conexão)

Page 15: Nível de Transporte Portas, Protocolos UDP e TCP · 2017. 11. 28. · Profa. Débora C. Muchaluat Saade 3 32 Redes de Computadores Nível de Transporte na Arquitetura TCP/IP Portas

Profa. Débora C. Muchaluat Saade 15

118

Redes de Computadores

Encerramento de conexões

§  Conexão full-duplex: fluxos são encerrados de modo independente §  Na prática, o encerramento dos fluxos costuma ocorrer

consecutivamente

apl. fecha conexão

informa apl.

x SEQ

apl. fecha conexão

Flag FIN = 1

x+1 ACK

y SEQ Flag FIN = 0

y x+1 SEQ ACK Flag FIN = 1

y+1 ACK

x+1 SEQ Flag FIN = 0