REDES E SISTEMAS
INTERNET
Camada de Transporte
Roteiro
•
Introdução
•
Serviços
•
Conceitos de protocolos de transporte
•
UDP
•
TCP
•
Resumo
Protocolo da camada 5
Protocolo da camada 4 Protocolo da
camada 3 Protocolo da
camada 2
Introdução
•
Quais são as unidades em cada camada?
• Física: bits
• Enlace: quadros • Rede: pacotes
• Transporte: segmentos
• O livro texto do Tanenbaum chama de TPDU
• Fornecer uma abstração de comunicação fim a fim sem erros para a camada de aplicação
• Fornecer serviço confiável, eficiente e econômico
•
Também trabalha com serviços orientados a conexão e
sem conexões!
• Conexões: estabelecimento, transferência e encerramento
• Sem conexões: semelhante ao serviço sem conexões da camada de rede
Serviços para a Camada de Aplicação
29/05/2015 Camada de Transporte - Danilo R. B. de Araújo 6
As camadas de rede, de transporte e de aplicação
Interface aplicação-transporte
Interface transporte-rede
Camada de
Aplicação Camada de Aplicação
máquinas dos usuários
não depende dos ISPs
•
Blindagem contra problemas na camada de rede
•
Independência das características das redes
físicas
•
Conceito importante:
•
Camadas abaixo da camada de transporte: relacionadas aos
provedores de serviços para os usuários
Conceitos de Protocolos de Transporte
29/05/2015 Camada de Transporte - Danilo R. B. de Araújo 8
Aninhamento de TPDUs, pacotes e quadros
Cabeçalho de Transporte Cabeçalho de
Pacote Cabeçalho de
Quadro
Área de dados de transporte
Área de dados do pacote Área de dados do
Primitiva Pacote enviado Significado
LISTEN nenhum Bloquear ate que algum processo tente se
conectar
CONNECT CONNECTION REQ. Tentar ativamente estabelecer uma conexão
SEND DATA Enviar informações
RECEIVE nenhum Bloquear ate chegar um pacote DATA
Conceitos de Protocolos de Transporte
•
O que encontramos tipicamente em protocolos de
transporte?
•
Comparação transporte
x enlace de dados…
29/05/2015 Camada de Transporte - Danilo R. B. de Araújo 10
(a) Ambiente da camada de enlace de dados. (b) Ambiente da camada de transporte.
Canal de
comunicação físico
conexão
•
Em (b) há capacidade de armazenamento na sub-rede
•
Estabelecer conexão em (a) é simples
(a) Ambiente da camada de enlace de dados. (b) Ambiente da camada de transporte.
Canal de
comunicação físico
Conceitos de Protocolos de Transporte
•
Endereçamento:
• Quando um processo de aplicação quer se comunicar com processo remoto precisamos de um endereço...
• Endereços de transporte:
•
Os protocolos usados na Internet (TCP e UDP) usam
números de portas!
• Reflita sobre a entrega de cartas:
•
Qual a informação fornecida por um CEP e número da
rua?
•
Qual a informação que fornece o número do APTO?
IPs, portas e conexões de transporte.
Processo
aplicação AplicaçãoCamada
Camada Transporte Camada Rede Enlace dados Camada Física IP do TX
Conceitos de Protocolos de Transporte
•
Endereçamento:
1. Um servidor de “hora do dia” no host 2 se associa à porta 1522 para aguardar a chegada de uma chamada
2. Um processo de aplicação no host 1 deseja descobrir a hora do dia e chama CONNECT especificando a porta 1208 como
origem e a porta 1522 como destino
3. O processo de aplicação envia então uma solicitação para saber a hora
4. O processo servidor de hora responde com a hora atual 5. A conexão de transporte é então encerrada (liberada)
•
Como o cliente sabia que 1522 era um servidor de
timer
?
•
As portas são conhecidas?
•
Na Internet (protocolo TCP e UDP):
• Portas são números de 16 bits 65536 portas
• Portas reservadas: 1 – 1024
• Exemplos: HTTP – 80 ou 8080; FTP – 21
Prática:: O que é um soquete?
•
Um socket ou soquete é uma abstração computacional
para representar uma comunicação no nível de transporte
•
Em RFCs, um soquete de computador é simplesmente o
conjunto formado por:
• Endereço IP • Um protocolo
• Um número de porta de transporte
•
Normalmente as linguagens de programação oferecem
APIs que facilitam a programação no nível de soquetes
de rede
• Passo 1 – o servidor está listen em uma porta conhecida/divulgada entre os clientes e um cliente solicita uma conexão
• Passo 2 - o servidor aceita a conexão e é atribuída uma nova porta para transferência de dados entre servidor e cliente
Prática:: Exemplo
•
Um servidor de um jogo multiplayer modela a
comunicação entre os jogadores por meio de soquetes
de rede usando o protocolo de transporte TCP
•
Um soquete será definido como cada conexão entre
um jogador e o servidor do jogo
29/05/2015 Sockets TCP/IP - Danilo R. B. de Araújo 18
Servidor
Viciado 1 Viciado 3
novos jogadores em uma porta conhecida, digamos 5540
•
Cada jogador se conecta ao servidor do jogo na porta 5540
•
O servidor do jogo cria um novo soquete para tratar futuras
comunicações entre o servidor e este jogador (5541, 5542,
etc)
Servidor
Listen no soquete
(187.45.241.241, TCP, 5540)
Viciado 1 Viciado 3
Viciado 2 Viciado 4
Porta 5541
Porta 5542
Porta 5543
Porta 5544 Porta 6001
Porta 6001 Porta 6001
Prática:: API de sockets para Java
•
Sockets em Java:
•Pacote java.net
•
Classes Socket e ServerSocket
•
Soquetes oferecem implementação de comunicação no
nível de transporte
• Baixo nível de abstração elevado desempenho contudo programação mais difícil
• Se for desejável comunicação em nível de abstração mais
elevado, existem outras classes na API (URL, URLConnection, URLEncoder)
serverSocket = new ServerSocket(4444);
} catch (IOException e) {
System.err.println("Não foi possível escutar na porta 4444.");
System.exit(1);
}
Socket clientSocket = null;
try {
clientSocket = serverSocket.accept(); } catch (IOException e) {
System.err.println("Falha no accept.");
System.exit(1);
}
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
out.println("Teste...");
out.close();
clientSocket.close(); serverSocket.close();
Prática:: API de sockets para Java
29/05/2015 Sockets TCP/IP - Danilo R. B. de Araújo 22
try {
kkSocket = new Socket("taranis", 4444);
out = new PrintWriter(kkSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(kkSocket.getInputStream()));
} catch (UnknownHostException e) {
System.err.println("O host taranis não foi encontrado.");
System.exit(1);
} catch (IOException e) {
System.err.println("Erro de IO com taranis.");
System.exit(1);
}
hora com o fuso horário de uma hora a mais
•
Exemplo:
• Servidor fica escutando na porta 3535
• O cliente faz uma requisição TCP ao servidor nesta porta em
“14/01/14 20:10”
Prática 2 (para o Lar)
•
Crie um chat simples para 2 clientes
conversarem usando os exemplos fornecidos em
Java
•
Use os comandos para entrada e saída de texto
que você esteja acostumado
•
Exemplos: Scanner, System.out.print, métodos Swing...
• O problema das duplicatas atrasadas...
Três cenários de protocolos para o estabelecimento de uma conexão com o uso de um handshake de três vias. CR denota CONNECTION REQUEST. (a)
Operação normal. (b) Duplicata antiga de CONNECTION REQUEST que surge repentinamente. (c) CONNECTION REQUEST e ACK duplicadas.
z != y
Conceitos de Protocolos de Transporte
•
Encerramento de conexões:
• Simétrico: exige que cada um interrompa a conexão separadamente
• Assimétrico: sistema telefônico
29/05/2015 Camada de Transporte - Danilo R. B. de Araújo 26
Desconexão abrupta com perda de dados.
• Há um exército azul dividido em dois agrupamentos e um exército branco no meio
• O exército branco é maior do que cada agrupamento azul individualmente
• É preciso combinar um horário de ataque para vencer! • Qual o protocolo de envio de mensageiros que funciona?
Exército branco Exército
Azul #1
Conceitos de Protocolos de Transporte
•
Analise o problema dos 2 exércitos:
• Troque a pergunta “Quando atacar?” por “Quando desconectar?” e perceba que o problema de desconexão é complexo!
• Na prática os protocolos usam three way handshake em conjunto
com timers para desconexão
• Não garante 100% mas é plausível...
29/05/2015 Camada de Transporte - Danilo R. B. de Araújo 28
Exército branco Exército
Azul #1
• Uso de buffers no transmissor e receptor
• Monitoramento buffer no receptor x monitoramento da capacidade da rede
• No transmissor evitar que haja muitos pacotes de transporte não confirmados
•
Monitoramento da capacidade da rede
c
pacotes/s
•
Tempo de um ciclo
r
(transmissão, propagação,
Conceitos de Protocolos de Transporte
•
Multiplexação:
• Quando multiplexação pode ser útil na camada de transporte? •
Apenas um endereço de rede e várias conexões de
transporte
multiplexação ascendente
29/05/2015 Camada de Transporte - Danilo R. B. de Araújo 30
• UDP (User Datagram Protocol) • Sem conexões
• RFC 768
• Não há controle de fluxo, nem retransmissão!
• TCP (Transmission Control Protocol) • Orientado a conexões
• RFC 793 (original), 1122 e 1323 (correções/extensões)
UDP
•
Características:
• É um protocolo sem garantia de entrega • Não orientado à conexão
• A função é basicamente oferecer multiplexação (várias aplicações poderem coexistir em um servidor com um mesmo IP)
• Cabeçalho possui 8 bytes (64 bits)
29/05/2015 Camada de Transporte - Danilo R. B. de Araújo 32
Porta de origem Porta de destino
Comprimento UDP Checksum UDP
• Aplicações cliente/servidor
• Um cliente envia uma requisição por meio de UDP
• O servidor responde a requisição com outro segmento UDP
• Se depois de um tempo o cliente não receber resposta, a camada de aplicação gera um novo segmento
• Aplicações multimídia em tempo real
• Multiplexação de diversos fluxos de dados de tempo real em um único fluxo de pacotes UDP
TCP
29/05/2015 Camada de Transporte - Danilo R. B. de Araújo 34
•
Cabeçalho de 20 bytes e payload variável
Porta de origem Porta de destino
Número de sequência
Tamanho da janela
32 bits
Tamanho Cabeçalho
Número de confirmação (ACK)
UAPRSF RCSSYI GKHTNN
Checksum Ponteiro urgente
• 3-way handshake:
• TX envia SYN = 1 e ACK = 0
• RX envia de volta SYN = 1 e ACK = 1
• Se a conexão for rejeitada é enviado RST = 1
• O TX em seguida envia os números de sequência com dados
•
Desconexão:
• É simétrica cada lado envia FIN • 4 mensagens no total 2 FIN e 2 ACK
TCP
•
Confiabilidade:
• Como a confiabilidade é obtida?
• Conjunto de técnicas dentre elas retransmissão! • Envia um pacote e espera uma confirmação
• Após o tempo de “espera” , se não chegar confirmação, retransmite!
Procedimento de retransmissão de pacotes TCP.
Host 1 Host 2
Enviar mensagem 1
Enviar mensagem 2
Reenvia mensagem 2 Recebe ACK 1
Recebe ACK 2 Timer expira
Recebe mensagem 1
Recebe mensagem 2 Envia ACK 1
TCP
•
A retransmissão do TCP é adaptativa:
• Monitoramento dos tempos de ida e volta
• Criação de estatística dos tempos de ida e volta • Uso da variância
• A variância ajuda a adaptação em rajadas o timer é aumentado para um valor acima da média
Retransmissão adaptativa do TCP.
t1
Timeout Perda de
pacote
t2
t1
Timeout
Perda de pacote
TCP
•
Retransmissão adaptativa:
• Algoritmo de Jacobson (1988):
RTT =
⋅
RTT + (1−
)M
D =
D + (1 -
) | RTT
–
M |
Timeout = RTT + 4 x D
Onde:
• D é o desvio médio
• é um fator de suavização (usual = 7/8)
• RTT é a melhor estimativa sobre o tempo de ida e volta
• M é a medida do tempo obtido quando é recebida uma confirmação
• Buffer no transmissor e receptor
• As informações de tamanho disponível nos buffers são trocadas para alcançar controle de fluxo
• É usado algoritmo de janela deslizante
TCP
•
Controle de Fluxo:
29/05/2015 Camada de Transporte - Danilo R. B. de Araújo 42
Enviar 1-1000
Recebe ACK para 1000
Aplicativo lê 2000 bytes Anuncia janela = 2500
Enviar 1001-2000 Enviar 2001-2500
Recebe ACK para 2000 Recebe ACK para 2500
Enviar 2501-3500
Recebe ACK para 3500
ACK até 3500, janela = 1000 ACK até 1000, janela = 1500 ACK até 2000, janela = 500 ACK até 2500, janela = 0
• Monitoramento das retransmissões (feedback implícito) e diminuição do tráfego
• Começa com poucos segmentos (usualmente 4)
• Vai aumentando de forma exponencial até alcançar a metade da janela do receptor, depois aumenta linearmente
• Esse algoritmo é conhecido como partida lenta
Atividade
•
A melhor estimativa atual para o tempo de ida e volta em
uma conexão fim a fim é RTT = 32 ms e o desvio é 2 ms
•
Suponha que chegam novas estimativas de tempos de
ida e volta iguais a 34, 52 e 32 ms
•
Qual será a nova estimativa de RTT após a chegadas
destas 3 novas estimativas?
•