Redes de Computadores Prof. Marcelo Gonçalves Rubinstein Programa de Pós-Graduação em Engenharia Eletrônica Faculdade de Engenharia Universidade do Estado do Rio de Janeiro
Ementa Introdução a Redes de Computadores A Camada Aplicação A Camada Transporte A Camada Rede A Camada Enlace A Camada Física
Camada transporte Protocolos de transporte Fornecem comunicação entre processos de aplicação que rodam em hospedeiros diferentes Implementados nos sistemas finais Protocolos de rede Fornecem comunicação entre hospedeiros diferentes
Camada transporte Diversos protocolos UDP RTP/RTCP TCP
Camada transporte PDUs possuem diferentes nomes Segmento (TCP e geral) Datagrama (UDP) TPDU (geral) Pacote (geral)
Camada transporte Serviços Multiplexação/demultiplexação Transferência de dados (confiável ou não) Controle de fluxo Controle de congestionamento Serviços serão apresentados intercalados com protocolos que usam esses serviços
Multiplexação/demultiplexação Utilizam o conceito de portas (sockets) Multiplexação Reunir porções de dados de diferentes portas, criar segmentos e passar para a camada rede Demultiplexação Entregar os dados de um segmento à porta correta
Multiplexação/demultiplexação Exemplo de multiplexação/demultiplexação (fonte: Kurose)
Multiplexação/demultiplexação Formato geral de um segmento de transporte (fonte: Kurose)
UDP Protocolo de datagrama do usuário (User Datagram Protocol) Definido na RFC 768 Serviços Transferência de dados não confiável Multiplexação/demultiplexação Detecção de erros Não orientado a conexão Sem controle de congestionamento Sem controle de fluxo Não tem segmentação
UDP Principais características Melhor controle no nível da aplicação sobre quais dados são enviados e quando Não possui controle de congestionamento Não há estabelecimento de conexão Não introduz atraso dessa fase Não há estados de conexão Pode ter um número maior de clientes ativos Pequena sobrecarga de cabeçalho de pacote
UDP - transferência não confiável Transferência confiável pode ser implementada na camada aplicação Ex.: Uso de mecanismos de reconhecimento e retransmissão Dessa forma a aplicação não fica sujeita a um controle de congestionamento do transporte Bom para aplicações multimídias
UDP - multiplexação/demultiplexação Socket UDP é identificado por somente Endereço IP de destino Número de porta de destino
Multiplexação/demultiplexação no UDP (fonte: Kurose) DatagramSocket serversocket = new DatagramSocket(6428); P2 P3 P1P1 SP: 6428 DP: 9157 SP: 6428 DP: 5775 SP: 9157 SP: 5775 cliente IP: A DP: 6428 servidor IP: C DP: 6428 cliente IP:B SP fornece o endereço de retorno
UDP - detecção de erros Usada pois Nem sempre a camada de enlace utiliza verificação de erros Pode haver erros binários quando um datagrama é armazenado na memória de um roteador Realiza a detecção através de uma soma de verificação (checksum) de 16 bits Na fonte Complemento a 1 da soma (em complemento a 1) de todas as palavras de 16 bits Soma em complemento a 1 leva em conta o vai um do bit mais significativo
UDP - detecção de erros No destino Complemento a 1 da soma (em complemento a 1) de todas as palavras de 16 bits (inclui a soma de verificação) Se um ou mais bits do resultado forem 1 erro Ver exemplo do Kurose na pag. 153 Em função da implementação, datagrama com erro pode ser Descartado Passado para a aplicação (junto com um aviso)
UDP - formato do datagrama Formato do datagrama UDP (adaptado de Tanenbaum) Data
UDP - formato do datagrama Porta de origem (16 bits) Porta de destino (16 bits) Comprimento (16 bits) Datagrama completo Tamanho máximo é função do tamanho máximo do IP (65535 octetos)
UDP - formato do datagrama Soma de verificação (16 bits) Feita no datagrama UDP junto com um pseudo cabeçalho (não transmitido) Para fazer uma verificação adicional e uma confirmação de que o datagrama chegou ao destino correto Pseudo cabeçalho (12 octetos) contém Endereços IP da fonte e do destino Enchimento Usado no cálculo da soma de verificação Campo protocolo (valor 17) Comprimento UDP
UDP - formato do datagrama Soma de verificação (cont.) Opcional Se os bits são iguais a 0 não é usada (para diminuir a sobrecarga) Se o cálculo de uma soma de verificação resulta em 16 bits iguais a 0, estes são trocados para 16 bits iguais a 1 (o número 0 possui duas representações em complemento a 1)
RTP Protocolo de transporte em tempo-real (Real- Time Transport Protocol) Definido na RFC 3350 Normalmente usado sobre o UDP Serviços Identificação do tipo de carga útil (mídia) Números de sequência Estampa de tempo
RTP Não possui Controle de fluxo Controle de erros Confirmação Mecanismo de solicitação de retransmissões
RTP Posição do RTP na pilha de protocolos (fonte: Tanenbaum)
RTP - formato do cabeçalho Formato do cabeçalho RTP (fonte: Tanenbaum)
RTP - principais campos Tipo de carga útil (payload type) (7 bits) Indica o algoritmo de codificação usado Número de sequência (16 bits) UDP não possui Usado para detectar pacotes perdidos Aplicação pode usar interpolação Estampa de tempo (32 bits) Indica o instante da amostragem do primeiro octeto no pacote
RTP - principais campos Identificador de sincronização da fonte (32 bits) Informa a que fluxo o pacote pertence Usado para multiplexar e demultiplexar vários fluxos de dados em um único fluxo de datagramas UDP
RTCP Protocolo de controle de transporte em temporeal (Real-Time Transport Control Protocol) Também definido na RFC 3350 Pacotes RTCP enviados em multicast contém relatórios de remetente e/ou receptor com dados estatísticos Remetente pode mudar a taxa de transmissão Destinatário pode sincronizar diferentes fluxos de mídias em uma sessão RTP
RTCP Possui um problema potencial de escalabilidade Exemplo Sessão RTP com um remetente e vários receptores em multicast Total de tráfego RTP não muda se o número de receptores aumenta Total de tráfego RTCP aumenta linearmente com o número de receptores Por causa dos relatórios periódicos dos receptores Solução cada participante reduz o tráfego RTCP à medida que o número de participantes da conferência aumenta
Princípios da transferência confiável Válidos para as camadas aplicação, transporte e enlace Principais mecanismos Soma de verificação Temporizador Número de sequência Reconhecimento positivo (ACK) Reconhecimento negativo (NACK) Janela, paralelismo
Soma de verificação Usada para detectar erros de bits de um pacote transmitido
Temporizador Usado para controlar a temporização/retransmitir um pacote, possivelmente porque o pacote (ou seu ACK) foi perdido Como pode ocorrer esgotamento de temporização quando um pacote está atrasado, mas não perdido (esgotamento prematuro), ou quando um pacote foi recebido pelo destinatário mas o ACK remetente-destinatário foi perdido, um destinatário pode receber cópias duplicadas de um pacote
Número de sequência Usado para numeração sequencial de pacotes que transitam do remetente para o destinatário Lacunas nos números de sequência de pacotes recebidos permitem que o destinatário detecte um pacote perdido Pacotes com números de sequência duplicados permitem que o destinatário detecte cópias duplicadas de um pacote
Reconhecimento Usado pelo destinatário para avisar ao remetente que um pacote ou conjunto de pacotes foi recebido corretamente Reconhecimentos normalmente portam o número de sequência do pacote, ou pacotes, que estão sendo reconhecidos
Reconhecimento negativo Usado pelo destinatário para avisar ao remetente que um pacote não foi recebido corretamente Reconhecimentos negativos normalmente portam o número de sequência do pacote que não foi recebido corretamente
Janela, paralelismo O remetente pode ficar restrito a enviar somente pacotes com números de sequência que caiam dentro de uma determinada faixa Permitindo que vários pacotes sejam transmitidos, ainda que não reconhecidos, a utilização do remetente pode ser aumentada em relação ao modo de operação para e espera O tamanho da janela pode ser estabelecido com base na Capacidade do destinatário receber e fazer buffer de mensagens Nível de congestionamento na rede
TCP Protocolo de controle de transmissão (Transmission Control Protocol) Definido em diversas RFCs (793, 1122, 1323, 2018 e 2581) Diversos flavors (tipos) Serviços Multiplexação/demultiplexação Detecção de erros Transferência de dados confiável Controle de fluxo Orientado a conexão Controle de congestionamento
TCP - multiplexação/demultiplexação Socket TCP é identificado por Endereço IP de fonte Número de porta de fonte Endereço IP de destino Número de porta de destino
Multiplexação/demultiplexação no TCP (fonte: Kurose) P1 P4 P5 P6 P2 P1P3 SP: 5775 DP: 80 S-IP: B D-IP:C SP: 9157 SP: 9157 cliente IP: A DP: 80 S-IP: A D-IP:C servidor IP: C DP: 80 S-IP: B D-IP:C cliente IP:B
TCP - detecção de erros Análoga ao UDP Pseudocabeçalho do TCP (fonte: Tanenbaum)
TCP - envio de dados Uso de buffers alocados no estabelecimento de conexão TCP deve enviar dados no buffer segundo a sua conveniência Dados gerados e recebidos pela aplicação são vistos como uma sequência de octetos e não como uma sequência de pacotes
TCP - envio de dados Buffers do TCP (fonte: Kurose)
TCP - envio de dados Tamanho máximo do segmento (Maximum Segment Size - MSS) Quantidade máxima de dados da camada de aplicação no segmento Máximo de 64kB menos os cabeçalhos TCP e IP TCP faz a divisão em partes do fluxo de dados do usuário Normalmente estabelecido em função da unidade máxima de transmissão (Maximum Transmission Unit MTU) do hospedeiro fonte local RFC 1191 descobre a MTU do caminho da fonte ao destino Valores comuns de MSS: 1460, 536 e 512 octetos
TCP - envio de dados Aplicações interativas normalmente transmitem segmentos menores Ex.: Telnet