camada de transporte camada de transporte · – probabilidade de falha no estabelecimento de...
TRANSCRIPT
Camada de Transporte
d Pág 6.1
© 1997–2000 Paulo Lício de Geus
Camada de transporte
às vezes uma camada de rede provê um serviço com conexão, mas não confiável; ter opção na camada de transporte é vantajoso…
além disso, o modelo Internet prefere datagramas por baixo (para maior robustez) e escolha, na camada de transporte, do mecanismo apropri-ado (não confiável e rápido, ou confi-ável e lento)
• serviços providos a camadas superiores
estouro na temporização por conges-tionamento, falta de espaço em buffers ou tabelas etc
i.e. a taxa de erros que sobra após o serviço da camada de transporte, normalmente bem baixa…
em caso de congestionamento, cone-xões de maior prioridade são atendi-das primeiro…
Re
•
•
es de Computadores versão 1.1 – 21.Sep.02
– orientado à conexão
– sem conexão
qualidade de serviço
– camada de transporte supre falta das inferiores
parâmetros-alvo (opções a negociar)
– atraso no estabelecimento de conexões
– probabilidade de falha no estabelecimento de conexão
– desempenho
– atraso de trânsito (propagação entre pares transporte)
– taxa de erro residual
– proteção contra leitura ou modificações dos dados
– prioridade ➔ atendimento privilegiado
– capacidade de recuperação» camada de transporte terminar conexão por decisão própria
» recuperação após detecção de problemas/congestionamento
Camada de Transporte
d Pág 6.2
© 1997–2000 Paulo Lício de Geus
Funcionamento básico
TPDU = Transport Protocol Data Unit, unidade de dados do protocolo de transporteunidade de dados de enlace ➔ qua-drounidade de dados de rede ➔ pacoteunidade de dados de transporte ➔ sem nome específico…
exemplo de encapsulamento de uni-dades de dados: aplicação ftp, usando protocolo TCP (conexão con-fiável), levado por IP (datagrama), fisicamente levado por Ethernet (datagrama)
• primitivas de serviço
oo
I
TP
Re
•
D
es de Computadores versão 1.1 – 21.Sep.02
– serviço de datagramas não confiável
– conexão confiável ➔ seqüência de bits livre de erros
exemplo de um serviço simples primitiva TPDU enviada significadoLISTEN (nenhuma) bloqueia até um processo tentar conexã
CONNECT CONNECT REQ tenta ativamente estabelecer uma conexãSEND DATA envia informação
RECEIVE (nenhuma) bloqueia até chegar uma TPDU DATASCONNECT DISCONNECT REQ este lado quer liberar a conexão
Ethernet
IPTCP
F
Camada de Transporte
d Pág 6.3
© 1997–2000 Paulo Lício de Geus
Encapsulamento de pacotes
s
tocolo
stinobulo
ismo)
em
tecçã
o erro
(C
RC)
+
Ethernet
a
46s µs (12B)
n
dado
s
P
dado
s
sum
)
n
≤ 9,6 m 1500≤ ≤
40
Re
t
I
T
es de Computadores versão 1.1 – 21.Sep.02
apon
t. ur
gênc
ia
porta
des
tino
dado
s
porta
orig
em
end.
des
tino
janela
detec
ção
erro
(c
heck
sum
)
núm
ero
se
qüên
cia
offse
t dad
os +
fla
gs co
ntro
le
8 6 6 2 m 4
tipo p
ro
end.
de
preâ
m(si
ncron
end.
orig
dedado
s
linha ociosaenvelope do pacote de dadosdados do pacotepacote de dados
manhos dos campos em bytes
2 2
versã
o +
com
pr.
ca
beça
lho
1 1
tipo
serv
içoco
mpr
imen
to
flags
+ e
xtras
iden
tifica
ção
1 1 1 1de
sloca
men
totem
po d
e vid
apr
otoc
olo
2 4 4 x
x
detec
ção
erro
(ch
ecks
um)
end.
orig
emen
d. d
estin
oop
ciona
is
4 4 n2 2 2 2 2 2
CP
porta
des
tino
detec
ção
erro
(c
heck
porta
orig
em
com
prim
ento
2 2 2 2
UDP
s
≤
Camada de Transporte
d Pág 6.4
© 1997–2000 Paulo Lício de Geus
Berkeley sockets
procedimento do servidor:• SOCKET ➔ retorna um descritor de arquivo• BIND ➔ socket recebe um nº de porta para ser conhecido de fora• LISTEN ➔ aloca espaço para enfi-leirar pedidos simultâneos de clientes• ACCEPT ➔ fica aguardando pedi-dos de conexãoprocedimento do cliente:• SOCKET ➔ retorna um descritor de arquivo• CONNECT ➔ bloqueia cliente enquanto conexão é estabelecidauso da conexão:• SEND e RECEIVE conforme neces-sário, por ambos os ladosliberação da conexão:• CLOSE (ambos os lados)
• primitivas para os Berkeley sockets
serviço pode ser TCP ou UDP
p
R
Re
•
C
es de Computadores versão 1.1 – 21.Sep.02
endereçamento
– caracterização de um par na communicação
– em IP ➔ tripla (endereço IP, serviço, nº de porta)
– porta de um serviço» mapeada a uma determinada aplicação ou processo
rimitiva significado
SOCKET cria um novo terminal de comunicação
BIND atribui um endereço local a um socket
LISTEN anuncia disposição p/ aceitar conexões; dá tamanho da fila
ACCEPT bloqueia o servidor até chegar uma tentativa de conexão
ONNECT tenta ativamente estabelecer uma conexão
SEND envia dados usando a conexão
ECEIVE recebe dados da conexão
CLOSE libera a conexão
Camada de Transporte
d Pág 6.5
© 1997–2000 Paulo Lício de Geus
Estab. e liberação de conexão
• decisões básicas na concepção do mecanismo
nº inicial de seqüência para cada conexão vai aumentando no decorrer do tempo, até rodar ao final da conta-gem
DR = Disconnect Request
Re
•
es de Computadores versão 1.1 – 21.Sep.02
– garantir tempo de vida finito aos pacotes» contador de “pulos” em cada pacote
» carimbo de tempo em cada pacote
– grande espaço de nºs de seqüência» re-uso de nºs após rodar no final da contagem
» TPDU antigo com mesma contagem da rodada anterior➔ nenhum pode estar “vivendo” ainda!
– implementação do carimbo de tempo» nº inicial de seqüência depende do tempo de contagem
liberação
– ambas as entidades enviam pedido (DR)
Camada de Transporte
d Pág 6.6
© 1997–2000 Paulo Lício de Geus
Three-way handshake
• procedimento correto máq. 1 máq. 2CR (seq = x)
ACK (seq = y, ack = x)
DATA (seq = x, ack = y)
. 1 máq. 2CR (seq = x)
ACK (seq = y, ack = x)
REJECT (ack = y)
. 1 máq. 2
ACK (seq = y, ack = x)
REJECT (ack = y)
CR (seq = x)
DATA (seq=x, ack=z)
Re
•
•
es de Computadores versão 1.1 – 21.Sep.02
» máq. 1 gera x
» máq. 2 gera y
» x e y vão sendo incrementados
» cada TPDU incluindo k bytes➔ faz nº de seq incrementar de k
duplicata antiga de CR
– máq. 2 responde normalmente» máq. 2 pensa que máq. 1 realmente quer conexão agora
» não é sua atribuição policiar os nºs “seq” dos outros…
– lembrar que máq. 2 já deve ter respondido antes…» usando ack = z, com z < y (quase sempre)
– máq. 1 já está na fase de dados» conclui que era uma resposta a uma duplicata e rejeita
» máq. 2 recebe a rejeição e também joga fora…
duplicata antiga de CR e do primeiro DATA» máq. 2 vai sendo enganada
porém máq. 1 está na mesma situação anterior e rejeita
» máq. 2 é obrigada a jogar fora a “nova conexão”…te
mpo
máq
tem
po
máq
tem
po
Camada de Transporte
d Pág 6.7
© 1997–2000 Paulo Lício de Geus
Controle de fluxo e buferização
• semelhanças e diferenças com camada de enlace
normalmente uma só…
muitos processos na mesma máquina utilizando uma série de serviços de outras máquinas, além de atender requisitantes de fora…
devido ao montante necessário…
reduz bastante as necessidades de buffers
ex: telnet (terminal remoto)
ex: ftp (transferência de arquivos)
i.e. tamanho de janela variável
não obrigar o uso de “carona” em tráfego reverso
desse modo pode-se garantir o uso completo da banda disponível e da capacidade do receptor…
Re
•
•
es de Computadores versão 1.1 – 21.Sep.02
– necessidade de janela deslizante ou similar
– enlace ➔ máquina tem poucas linhas de saída
– transporte ➔ máquina pode ter inúmeras conexões
política de uso/alocação de buffers
– buffers por conexão ➔ quase impraticáveis
– coleção de buffers compartilhada por todas as conexões
– eventualmente buffers dedicados são requisitados
– melhor solução ➔ alocação conforme a aplicação» tráfego de rajada ➔ alocação dinâmica
» tráfego de banda larga ➔ buffers dedicados
controle de fluxo, alternativas:
– dependente da alocação de buffers» usar TPDU’s independentes para informação de buferização
» retransmissões periódicas delas para evitar deadlock
– dependente da capacidade efetiva da sub-rede» heurística computa tamanho da janela no transmissor
Camada de Transporte
d Pág 6.8
© 1997–2000 Paulo Lício de Geus
Camada de transporte na Internet
TCP = Transmission Control Proto-colUDP é na prática o próprio data-grama IP em funcionamento; apenas isola o programador de detalhes da camada de rede
• TCP
WKP = Well-Known Ports; portas bem conhecidas…
não há como saber em quantos peda-ços a msg foi quebrada na transmis-são; a entrega é feita da maneira que a camada TCP achar melhor, i.e. os pedaços de envio podem ser maiores ou menores do que aqueles usados no repasse à camada (como o pro-grama escreveu na camada TCP: pedaços de 1K, 2K, etc)
Re
•
es de Computadores versão 1.1 – 21.Sep.02
– projetado e refinado para robustez (falhas variadas)
– aceita como entrada seqüências de dados» quebra-as em pedaços < 64 KB (mas normalmente < 1500 B)
– cada pedaço enviado em datagrama IP separado» temporizações, retransmissões e ordenação a cargo do TCP
características do serviço TCP
– sockets ➔ pontos de acesso de cada lado/máquina
– WKP ➔ portas de nº < 256» 23 ➔ TELNET, 21 ➔ FTP, 20 ➔ dados de FTP, 25 ➔ SMTP,
111 ➔ RPC da Sun, 119 ➔ NNTP, 123 ➔ NTP, 79 ➔ Finger
– conexão TCP» full-duplex, ponto-a-ponto, fronteira msgs não preservadas
– TCP aguarda mais dados antes de enviar TPDU» para otimizar o uso de TPDU’s (tráfego)
– urgent data
» flag que força TCP a enviar tudo na fila (ex: control-C)
» receptor é avisado da chegada urgente e atende logo…
Camada de Transporte
d Pág 6.9
© 1997–2000 Paulo Lício de Geus
TCP
• nº de reconehcimento especifica próximo byte esperado• tamanho do cabeçalho do TCP ➔ em palavras de 32 bits, necessário devido ao campo de opções (4 bits)• flag URG ➔ indica urgência de dados, os quais serão encontrados deslocados de “apontador_urgente” bytes a partir do nº de seqüência cor-rente• flag ACK ➔ indica a presença de um nº de reconhecimento válido• flag PSH ➔ método obsoleto de indicar urgência de dados• flag RST ➔ indica “morte” decre-tada de conexão em andamento ou rejeição de requisição de conexão• flag SYN ➔ início de conexãorequisição: fase 1 ➔ SYN=1, ACK=0resposta: fase 2 ➔ SYN=1, ACK=1confirmação: fase 3 ➔ SYN=0,ACK=1• flag FIN ➔ fim normal de conexão• tamanho de janela ➔ receptor pode regular fluxo do transmissor• checagem ➔ soma das palavras de 16 bits em complemento de 1 e com-plemento de 1 da soma• opções ➔ permite acordo sobre tamanho máximo da carga útil do TCP
• cabeçalho do protocolo TCP
tcl
Re
es de Computadores versão 1.1 – 21.Sep.02porta de destino
tamanho da janela
número de reconhecimento
apontador urgente
opções (0 ou mais palavras de 32 bits)
32 bits
dados (opcional)
checagem
URG
ACK
PSH
RST
SYN
FIN
amanho abeça-ho TCP
porta de origemnúmero de seqüência
Camada de Transporte
d Pág 6.10
© 1997–2000 Paulo Lício de Geus
TCP
• estabelecimento de
os estados mencionados englobam tanto o servidor quanto o cliente
máq. 1 máq. 2
Re
•
es de Computadores versão 1.1 – 21.Sep.02
conexão
estados da máquina TCPte
mpo
SYN (seq = x)
SYN/ACK (seq = y, ack = x+1)
ACK (seq = x+1, ack = y+1)
estado descriçãoCLOSED nenhuma conexão ativa ou pendenteLISTEN servidor aguarda uma chamada
SYN RCVD um pedido de conexão chegouSYN SENT aplicação começou a abrir uma conexão
ESTABLISHED estado normal de transferência de dadosFIN WAIT 1 aplicação disse que terminouFIN WAIT 2 o outro lado concordou em liberarTIMED WAIT aguarde todos os pacotes “morrerem” (temporização)
CLOSING ambos os lados tentaram fechar simultaneamenteCLOSE WAIT o outro lado iniciou a liberaçãoLAST ACK aguarde todos os pacotes “morrerem” (temporização)
Camada de Transporte
d Pág 6.11
© 1997–2000 Paulo Lício de Geus
TCP
• controle de congestionamento
problemas de receptor lento são resolvidos por ela
Re
•
es de Computadores versão 1.1 – 21.Sep.02
– suposições válidas hoje» perda de pacotes por ruído é raro
» perdas devem ser atribuídas a congestionamento
– possibilidades de perdas de pacotes» receptor é lento (receptor descarta)
» rede é lenta (algum roteador intermediário descarta)
controle via janelas de transmissão e recepção
– janela concedida pelo receptor
– janela preventiva mantida pelo transmissor
Camada de Transporte
d Pág 6.12
© 1997–2000 Paulo Lício de Geus
TCP
• construção da janela preventiva (slow start)
notar que esse ajuste, além de expo-nencial (rapidamente alcança regime), é dinâmico: deve também satisfazer a janela do receptor, quando ela diminuiaté threshold crescimento é exponen-cial, depois disso passa a linear
Re
es de Computadores versão 1.1 – 21.Sep.02– janela transmissão inicia igual ao máx. segmento em uso
– janela transmissão vai dobrando tamanho até que» ocorram temporizações, ou:
» alcance a janela concedida pelo receptor
– limitante adicional ➔ threshold (limiar, inicialmente 64K)
– após janela de transmissão alcançar threshold» janela de transmissão aumenta linearmente
» acréscimo do tamanho do máximo segmento
– se ocorrer temporização» threshold cai à metade do valor corrente da janela
» janela transmissão retorna ao tamanho do máximo segmento
» slow start é recomeçado
0 KB
10 KB
20 KB
30 KB
40 KB
50 KB