Documente Academic
Documente Profesional
Documente Cultură
Alexandre Fonte
(adf@est.ipcb.pt)
1
Nota Prévia
Este material é uma versão actualizada e adaptada à presente
unidade curricular, baseada nas versões criadas pelo Professor
Doutor Osvaldo Santos, o Lic. Vasco Soares e por mim próprio
para utilização durante anos lectivos anteriores em Unidades
Curriculares, com tópicos relacionados, de cursos ministrados no
Departamento de Engenharia Informática, ESTCB-IPCB.
Camada de Transporte TCP/IP
Sumário
Serviços e Protocolos de Transporte
Objectivos dos Protocolos de Transporte
Transporte não orientado à ligação: Protocolo UDP
Características do UDP
Porquê usar UDP? vantagens UDP
Estrutura do Segmento UDP
Transporte Orientado à ligação: Protocolo TCP
Características do TCP
Estrutura do Segmento TCP
Gestão de ligações TCP
Transmissão de Dados
Controlo de fluxo TCP
Controlo de Congestão TCP
Serviços e Protocolos de Transporte
Oferecer um comunicação lógica entre
processos aplicacionais (e.g., Cliente- applicatio
n
Servidor) em execução em diferente transport
hosts. network network
data link data link
physical network physical
data link
Os protocolos de transporte são physical
executados nos sistemas finais network
data link
Lado Emissor: divide as mensagens physical network
das aplicações em segmentos e data link
physical
passa-os a camada de rede (i.e.,
ao IP) network
data link
Lado receptor: reassembla os physical
segmentos nas mensagens e
applicatio
passa-as à camada da aplicação. n
transport
network
data link
Na Internet estão disponíveis às physical
aplicações dois protocolos de
transporte:
O TCP (Transmission Control Protocol e
o UDP (User Datagram Protocol)
Camada de Rede vs Camada de Transporte
6
Camada de Transporte: Mecanismos de recuperação de
Recuperação de Pacotes Fora de Ordem
Emissor Receptor
7168 7168
6144
7 6144
7
5120
6 2 1 5120
6
4096
5 5 4096
5
4 3 4
3072 6 3072
3 7 4 3
2048 2048
2 2
1024 Rota 1024
0
1
0
1
7
Camada de Transporte: Mecanismos de
recuperação de erros e perdas
Exemplo:
stop-and-wait
RTO
9
Camada de Transporte: Mecanismos de
recuperação de erros e perdas
Príncipios Janela deslizante
No exmplo, anterior apesar de garantir
fiabilidade não garante uma boa utilização da
largura de banda disponível
Solução: utilização de uma janela deslizante!
Podem ser enviado n pacotes até à dimensão
da janela
Um RTO timer é associado a cada pacote
enviado
O emissor desliza a janela após a recepção de
um ACK
Janela de tamanho 7
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2
P1 P4 P5 P2 P1P3
110 25 80
PF: 5775
PD: 80
IP-F: B
IP-D:C
14
Porquê usar UDP? vantagens UDP
Não existe o estabelecimento de ligação lógica entre processos (a
qual introduz atrasos)
Simples: não necessita de guardar o estado das ligações em ambos
os lados.
O segmento UDP possui um cabeçalho de tamanho reduzido
(menores tempos de processamento do cabeçalho).
Sem mecanismos de controlo de fluxo.
Sem controlo de congestão: o UDP pode transmitir tão rápido o
emissor desejar.
Frequentemente usado por aplicações streaming multimedia:
Tolerantes a perdas
SNMP
Datagrama/Segmento UDP
Bit: 0 16 31
Port de origem Port de destino
(16 bit) (16 bit)
17
TCP – Transmission Control Protocol
TCP (Cap. 17 do Livro TCP/IP Illustrated)
Gestão das Ligações TCP (Cap. 18 do Livro TCP/IP Illustrated)
Transmissão de Dados (Cap. 19 e 20 do Livro TCP/IP
Illustrated)
Controlo de Fluxo e Controlo de Congestão (Cap. 20 e 21 do
Livro TCP/IP Illustrated)
RTT e Timeout (Cap. 21 do Livro TCP/IP Illustrated)
TCP – Transmission Control Protocol (1)
Estabelecimento de ligação - canais virtuais (modo circuito).
Protocolo complexo, orientado à ligação:
Estabelecimento da ligação;
Transferência de dados;
Fecho da ligação.
Fornece serviço fiável end-to-end:
Mecanismo de Numeração (Usa números de Sequência)
Mecanismo de controlo de erros (checksum e acknowledge);
Um timer para cada segmento (retransmissão implícita);
20
Funcionamento Básico TCP
& Buffers de Emissão e Recepção
Processo Processo
emissor 1 - Estabelecimento de ligação Recepção
2 - Transmissão de dados
(full duplex)
3 - Fecho de ligação
Segmentos TCP
Formato do Segmento TCP
Bit: 0 16 31
Port de origem Port de destino
(16 bit) (16 bit)
Número de sequência
(32 bit)
Número de confirmação
(32 bit)
U A P R S F
Header len Reservado Tamanho da janela Recepção
R C S S Y I
(4 bit) (6 bit) (16 bit)
G K H T N N Máximo
Checksum Ponteiro urgente
(16 bit) (16 bit) 65515
Opções (se existirem)
bytes
(32 bit)
Dados
(variável)
22
Significado dos Campos do Cabeçalho TCP
Port de origem: identifica a aplicação que transmitiu este segmento.
Port de destino: identifica a aplicação a que se destina este segmento.
Número de sequência: identifica a posição do primeiro byte de dados
deste segmento no fluxo de dados.
Número de confirmação (ACK): identifica a posição do byte que o
emissor deste segmento está à espera de receber.
Header length: número de blocos de 32 bit do cabeçalho (tamanho).
Flags: várias flags que determinam várias acções especiais.
Tamanho da janela (W): tamanho da janela de recepção.
Checksum: usado para detecção de erros no cabeçalho TCP e dados.
Ponteiro urgente: aponta para uma posição no campo de dados que
contém informação urgente; só é válido activando a flag URG.
Dados: dados transmitidos entre as duas aplicações.
23
Números de Sequência & ACKs
Os bytes de Dados a serem transferidos em cada ligação são numerados
pelo TCP. A numeração começa com um número gerado aleatoriamente (ou
mais simplesmente por 0).
32 bits
0 ≤ SN ≤ 232-1
Utilizador
escrever
‘C’
host B confirma
a recepção de ‘C’,
envia o echo ’C’ a A
host A
recebe e
confirma o
echo ‘C’
tempo
Uma simples sessão telnet
Números de Sequência & ACKs
Solução :
Segmento 1 – Nr. de Sêquencia: 10,001 (gama: 10,001 a 11,000)
Segmento 2 – Nr. de Sêquencia: 11,001 (gama: 11,001 a 12,000)
Segmento 3 – Nr. de Sêquencia: 12,001 (gama: 12,001 a 13,000)
Segmento 4 – Nr. de Sêquencia: 13,001 (gama: 13,001 a 14,000)
Segmento 5 – Nr. de Sêquencia: 14,001 (gama: 14,001 a 15,000)
Significado das flags do Campo Controlo
PSH (PUSH): significa que o receptor deve passar estes dados à aplicação
o mais rapidamente possível.
FIN: indica que o emissor não tem mais dados para enviar ao receptor.
27
Exemplos de Portos TCP Reservados (WKP)
28
Exemplos de Portos TCP Reservados (WKP)
29
Gestão de Ligações TCP (1)
Estabelecimento de uma ligação TCP: É usado um Three
way handshake (aperto de mão triplo)
Passo 1: O Cliente TCP envia um segmento TCP SYN
ao servidor:
Cliente Servidor
Especifica o número de sequência inicial SN=# e o porto do
servidor ao qual se pretende ligar.
Um segmento SYN não transporta dados, mas consome um
número de sequência.
30
Gestão de Ligações TCP (2)
Anúncio do MSS (Maximum Segment Size)
É o tamanho máximo do campo de dados de um
segmento TCP
Quando a ligação é estabelecida, cada extremo
anuncia o seu MSS. Cliente Servidor
As estações usam a opção MSS
A opção MSS apenas aparece pode aparecer nos
segmentos SYN
Se o MSS não for anunciado, o outro extremo
assume MSS=536byte (pois o tamanho de defeito
de um pacote IP é 576bytes)
Na Ethernet, o MSS é 1460bytes pois o
MTU=1500bytes
31
Gestão de Ligações TCP (3)
32
Gestão de Ligações TCP (4)
Recusa de uma Ligação TCP
Gestão de Ligações TCP (5)
Abortar uma Ligação TCP (Reset)
Cenário comum
Transmissão de Dados
36
TCP – Fluxo de dados Interactivos
Exemplo Clássico: rlogin
Por exemplo, na aplicação rlogin, é gerado tráfego interactivo. Por
cada tecla premida podem ser gerados quatro (!) segmentos TCP.
Este tipo de tráfego apresenta um overhead considerável, uma vez
que para transmitir um único caracter, são necessários 41 octetos em
cada segmento (20 do header IP + 20 do header TCP + 1 dados) e
um total de 4 segmentos.
Cliente Servidor
Tecla premida
Visualização do caracter
37
TCP – Fluxo de dados Interactivos
Cliente Servidor
Período de atraso,
tipicamente 200 ms
(Ack atrasado)
38
TCP – Fluxo de dados Interactivos
Algoritmo de Nagle
Determina que só se deve enviar um segmento após a recepção da confirmação do anterior.
Permite juntar vários blocos de dados num único segmento, diminuindo o overhead na rede à custa
do aumento do atraso de entrega dos dados. Isto poderá ser limitado pelo MTU e pela dimensão da
TCP window.
Quanto mais rápido chegam os ACKS mais rápido são enviados os dados. Um ACK poderá confirmar
n bytes.
Ajusta-se automaticamente à rede. Se a rede possuir um atraso baixo (caso de uma LAN) as
confirmações chegam rapidamente e este algoritmo não produz nenhum efeito. No caso das WAN,
mais congestionadas, poucos segmentos são gerados.
Cliente Servidor
39
Fluxo de Dados NÃO
Interactivos Cliente Servidor
determinada posição.
Segmento de controlo
Controlo de Fluxo TCP (2)
Controlo de Fluxo
O Receptor de uma ligação O emissor TCP tenta não
TCP aloca à ligação um esgotar o buffer
buffer de recepção: (overflow) do receptor
Rcvwindow tentando não transmitir
Processo pacotes em excesso, i.e.,
Dados Receptor demasiado depressa
do IP Espaço livre Dados (lê do buffer)
no
no buffer Buffer
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2
No exemplo
Bytes enviados Bytes não enviados, mas window=7 <=Rcvwindow
que podem ser enviados
e confirmados A janela deslizante é usada para
tornar a transmissão mais eficiente e
para controlo do fluxo de dados de
Bytes enviados mas não modo a que o receptor não fique
confirmados sobrecarregado com dados.
UAR USE
Controlo de Fluxo TCP (6)
Exercício 1: Qual é o valor da janela de recepção (rcvwindow) enviada
para o emissor, computador A, se o receptor, computador B, tem um
buffer de 4000 bytes e 1000 bytes dos dados recebidos ainda não foram
processados?
Dados Processo
do IP Espaço livre Dados
no
no buffer Buffer
RcvBuffer=4000 bytes
A rcvwindow é = 4000 − 1000 = 3000 bytes. Significa que o Computador B
pode receber apenas 3000 bytes de dados antes do seu buffer sobrecarregar.
O computador B anuncia este valor no próximo segmento para B.
Controlo de Congestão TCP
Noção de Congestão:
É um fenómeno inevitável
Informalmente definida: “demasiadas fontes TCP enviando demasiados dados
demasiado depressa para a rede manipular” (e.g., surge nas ligações entre
LAN-WAN)
Efeitos da Congestão da Rede:
Perdas de pacotes (devido a buffer overflow nos routers)
Longos RTTs (Round-Trip Times) (devido aos atrasos nas filas dos routers)
H1 A1(t)
10Mb/s
D(t)
R1 1.5Mb/s H3
H2 A2(t)
100Mb/s
A1(t)
D(t)
X(t)
A2(t)
Controlo de Congestão TCP
49
Controlo de Congestão TCP
É do tipo end-end control (sem assistencia Como é que uma fonte TCP
da rede) percebe a congestão?
Uma fonte TCP mantém uma variável Evento perda de pacote =
Congestion Window = Cwnd com o timeout ou 3 acks duplicados
valor da janela de congestão Uma fonte TCP reduz o rate
O emissor limita a transmissão: (CongWin) após a detecção de
LastByteSent-LastByteAcked<= um evento de perda
CongWin
AIMD (Congestion
CongWin é dinâmica, função da congestão Avoidance)
da rede
Controlo de Congestão TCP
As fontes TCP alteram a taxa de transmissão modificando o tamanho
da janela de transmissão (i.e., da slidding window):
Pacotes
1 2 3 4 5 6 7
Acknowledgements
1 2 3 3 3 3
RTT e Timeout (1)
Q: Como definir o valor de Q: Como estimamos o RTT?
RTO? AmostraRTT: tempo medido
Deve ser maior que o RTT desde da transmissão até à
Mas o RTT é variável
recepção do ACK
Demasiado pequeno:
A amostraRTT varia, deseja-
Reacção rápida
se uma estimativa “suavizada”
Conduz a retransmissões
E.g., usa-se a média de
desnecessárias várias amostras, e não
Demasiado longo: apenas a única amostra
Reacção lenta às perdas de
segmentos
RTT e Timeout (2)
350
300
RTT (milliseconds)
250
200
150
100
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
β)*DevRTT +
DevRTT = (1-β
β*|AmostraRTT-EstimativaRTT|
(tipicamente, β = 0.25)
Timeout:
RTO = EstimativaRTT + 4*DevRTT
Controlo de Congestão TCP
Solução
O tamanho da janela é o valor mínimo entre rwnd e cwnd, o qual é 3000
bytes.
Controlo de Congestão TCP
Exercício 3: Imagine que uma fonte TCP pretende transmitir 1000bytes,
tendo já enviado 202 bytes. Considerando que o receptor já enviou um
segmento ack=200, com uma rwnd de 9 bytes. Determine:
a) Qual o valor da janela assumindo que a cwnd actual é de 20bytes?
b) Os bytes desde o byte 200 ao 202 já foram confirmados?
c) Quantos bytes pode a fonte enviar a mais sem se preocupar com a
confirmação?
d) A partir de que byte a fonte não pode transmitir mais?
e) Desenhe um diagrama com a posição actual da janela
59
Controlo de Congestão TCP:
Mecanismo Slow Start (3)
Cwnd
16
15
14
13
12
11
10
9
8
Cwnd
7
6
5
4
3
2
1
0
0 1 2 3 4
RTT
Controlo de Congestão TCP:
Congestion Avoidance
if cwnd<ssthresh do slow
start
Designa-se esta
acção como Fast
Recovery
Ilustração Slow Start + AIMD
Ocorrência
de congestão
Resumo: Controlo de Congestão TCP
66