1 / 54

REDES DE COMPUTADORES

REDES DE COMPUTADORES. Camada de Transporte Professor: M.Sc . Carlos Oberdan Rolim.

dillan
Télécharger la présentation

REDES DE COMPUTADORES

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. REDES DE COMPUTADORES Camada de Transporte Professor: M.Sc. Carlos Oberdan Rolim

  2. O nível de transporte é o coração da pilha de protocolos. Sua tarefa é prover transporte confiável e eficiente de dados de uma máquina origem para uma máquina destino, independente da (ou das) rede física existente. • Torna a complexidade dos níveis mais baixos transparente para os processos • Comunicação fim-a-fim • O hardware e software no nível de transporte que desempenha essa função é chamado de entidade de transporte, podendo se localizar no núcleo do sistema operacional, em um processo separado ou mesmo na placa de interface de rede.

  3. O nível de transporte, de modo semelhante ao nível de rede, oferece o serviço com conexão e sem conexão. Por esse fato, levanta-se a questão: Por que existir o nível de transporte? • A resposta é sutil, mas crucial. O nível de rede é parte da subrede de comunicação e é implementado (pelo menos em MANs e WANs) pelas operadoras de telecomunicação. O que ocorre se o nível de rede oferece serviço orientado à conexão, mas não confiável? Se ele perde pacotes com freqüência? Se os roteadores envolvidos entram em pane com alguma freqüência? • Problemas ocorrem na subrede de comunicação, sobre a qual os usuários finais não têm controle total. A solução do problema é colocar mais um nível sobre o nível de rede (o nível de transporte!) para melhorar a qualidade do serviço (Quality of Service – QoS). • QoS de transporte pode permitir ao usuário especificar valores desejáveis, aceitáveis e mínimos para vários parâmetros na hora da abertura de uma conexão (quando se usa o serviço com conexão).

  4. Primitivas de Transporte • Fundamentalmente, o nível de transporte (nas várias arquiteturasde rede) oferece as primitivas mostradas na tabela a seguir.

  5. Para se ter uma idéia de funcionamento, considere uma aplicação de rede com um programa servidor e vários programas clientes (p.ex., o IRC). As primitivas usadas por cada elemento envolvido na comunicação seriam: • De início, o servidor executa um LISTEN (chamando uma rotina de biblioteca que faz uma chamada ao sistema operacional que bloqueia o programa servidor) para ficar aguardando solicitações de abertura de conexão feitas por clientes; • Um cliente, desejando "falar" com o servidor, executa um CONNECT, sendo bloqueado até obter uma resposta do servidor (ou até esgotar um temporizador); • O servidor recebe o pedido de abertura de conexão, responde confirmando, e libera o fluxo de comunicação com o cliente; • Cliente e servidor trocam dados entre si com chamadas a SEND e RECEIVE; • O cliente encerra a conexão com DISCONNECT; • O servidor aceita a desconexão e continua a aguardar pedidos de abertura de conexão.

  6. Elementos de Protocolos de Transporte • A camada de transporte guarda algumas semelhanças com a camada de enlace de dados: • Controle de erro; • Controle de sequenciamento; • Controle de fluxo. • Apresenta, porém, algumas diferenças importantes: • Endereçamento de aplicação (processos) no emissor e receptor; • Abertura/ Encerramento de conexão mais elaborado com tratamento de dados "em trânsito" na subrede; • Armazenamento temporário de segmentos no emissor e receptor; • Grande quantidade de conexões simultâneas, necessitando de maior controle de fluxo.

  7. Endereçamento de aplicação ao nível de transporte • Como um programa cliente que deseja abrir uma conexão com um programa servidor identifica de forma única o servidor? Como o próprio cliente se identifica para o servidor? • Normalmente são usados endereços de transporte, a partir dos quais os servidores ficam aguardando ("escutando") pedidos de abertura de conexão. • Esses endereços são chamados de portas • As portas são números inteiros (padronizados em uma dada arquitetura) que identificam programas servidores e programas clientes em máquinas da rede.

  8. Endereçamento de aplicação ao nível de transporte • De modo menos informal um endereço é definido como uma dupla composta por um endereço do nível de rede (endereço IP por exemplo) e uma porta 10.10.10.200:45000 10.10.10.1 : 80  Comunicação envolve porta+endereço local e porta+endereço remoto Endereço local IP : Porta Endereço remoto IP : Porta

  9. Endereçamento de aplicação ao nível de transporte • Números de portas abaixo de 1024 são chamadas de portas “bem-conhecidas”  precisam de permissão de super usuário • 21: ftp • 23: telnet • 25: smtp • 80: http • 443 : https • Outros: RFC 1700 • Acima de 1024 qualquer processo pode abrir uma porta

  10. Broadcast, multicast, unicast • Ao endereçar uma comunicação cliente tem opção de fazer broadcast, multicast, unicast Unicast Broadcast Multicast

  11. Estabelecimento de Conexão • Teoricamente simples: • Origem envia solicitação de abertura de conexão (CONNECT REQUEST - CR) • Destino recebe CR e envia resposta favorável (ACCEPT ACK) ou desfavorável (REJECT) • Origem inicia transmissão se recebe ACCEPT ACK • O problema é que solicitações ou respostas podem se perder (ou serem duplicadas) no caminho: • Pode haver duplicação de solicitação quando uma confirmação demora muito a chegar • A subrede pode reter um pacote por um tempo relativamente longo, gerando instabilidades • Como resolver o problema? • Usando um mecanismo Conhecido por ThreewayHandshake(ou Aperto de mão em três vias)

  12. Cliente Servidor Envia SYN (Seq x, ACK = 0) SYN, 100 SYN + ACK 101, 200 Envia SYN + ACK (ACK = x + 1, Seq y) Envia ACK (ACK = y + 1, Seq x + 1) ACK 101, 201 Theeway Handshake --- Conexão estabelecida --- 1.Cliente: Servidor, estou enviando a mensagem 100 (Número de sequência do cliente). Dá pra sincronizar (SYN)?2. Servidor: Claro, sincroniza a mensagem 200 (Número de sequência do servidor) que estou enviando (SYN). Prossiga com a mensagem 101 (ACK).3. Cliente: Ok, estou enviando a mensagem 101. Prossiga com a mensagem 201 (ACK). URI - Santo Ângelo - DECC

  13. Encerramento de Conexão • Não é tão simples quanto possa parecer. Pode ser: • Assimétrico, quando emissor ou receptor fecha a conexão e a comunicação física é interrompida (como no sistema telefônico) • Simétrico, quando a comunicação é vista como duas conexões unidirecionais e o emissor e o receptor devem ser liberados separadamente. • Problema dos dois exércitos • Como sincronizar os ataques da tropa A com a tropa B, para vencer a tropa C, sendo que A e B juntas vencem a tropa C, mas A e B isoladas perdem da tropa C?

  14. Problema dos dois exércitos • Se cada tropa esperar a confirmação do parceiro, nunca se fará nada! • Com rede é bem mais fácil, usando-se técnicas de retransmissão temporizada e desconexão temporizada, como mostrado nas figuras a seguir.

  15. Encerramento normal de conexão

  16. Encerramento de conexão com perda de ACK

  17. Encerramento de conexão com perda de resposta

  18. Encerramento de conexão com perda de resposta e DR seguintes

  19. Controle de Fluxo e Armazenamento Temporário • Controle de fluxo é facilmente resolvido com o uso de protocolos de janela deslizante (slide window), como visto na camada de enlace. • Quando um emissor não pode (ou não quer) receber mais segmentos do receptor, envia para o mesmo uma mensagem definindo tamanho 0 (zero) para a janela deslizante de recepção • Posteriormente, envia mensagem de controle indicando um novo N para o reinicio da transmissão emissor → receptor

  20. Armazenamento temporário é necessário porque durante a transmissão de uma mensagem dividida em vários segmentos, a camada de transporte guarda os segmentos enviados e ainda não confirmados (ACK) pelo receptor, para poder fazer eventuais retransmissões. • É preciso haver área de armazenamento temporários para diversos segmentos de diversas conexões em andamento. • A gerência dessa área de armazenamento pode ser feita de várias formas, sendo bastante comum a utilização de listas encadeadas com elementos de tamanho fixo ou variável e listas circulares • Esse armazenamento temporário é necessário para o emissor e para o receptor (que deve armazenar segmentos até poder recompor a mensagem original e entrega-lá para as camadas superiores).

  21. Gerência de armazenamento temporário

  22. A necessidade por um serviço de transporte confiável • Aplicações em qualquer sistema de computação assumem que a transferência de dados é confiável, ou seja, o sistema garante que os dados não serão: • perdidos, • duplicados, e • entregues fora de ordem • Uma internet deve prover um serviço idêntico a um sistema convencional

  23. Protocolo TCP • Principal protocolo de transporte da arquitetura TCP/IP • Existem outros como o UDP, RTP e RTCP

  24. Protocolo TCP • Provê um serviço (missão) impossível? • Usa um serviço datagrama não confiável para prover um serviço de entrega de dados confiável para as aplicações • Deve ser capaz de compensar perdas e atrasos na sub-rede de comunicação de tal forma a prover o transporte de dados fim-a-fim de forma eficiente • Deve ser capaz de executar essas tarefas sem sobrecarregar a sub-rede de comunicação e os roteadores

  25. Protocolo TCP • De todos os protocolos de transporte propostos talvez o TCP seja o protocolo que executa essas funções da melhor forma possível • Certamente existem outras propostas melhores quando outros ambientes são considerados, como redes de alta velocidade • Atualmente, a maior parte das aplicações na Internet são baseadas no TCP

  26. Formato do segmento TCP • TCP usa o termo segmento para fazer referência a uma mensagem

  27. Serviços que o TCP provê para as aplicações • Conexão • Serviço baseado em três fases: • Estabelecimento da conexão • Transferência de dados • Término da conexão

  28. Serviços que o TCP provê para as aplicações • Comunicação ponto-a-ponto • Cada conexão TCP tem dois endpoints • Confiabilidade • TCP garante que os dados serão entregues da forma que foram enviados

  29. Serviços que o TCP provê para as aplicações • Comunicação full-duplex • TCP permite que dados sejam enviados em qualquer instante e em qualquer direção • TCP pode armazenar dados de entrada e saída • Libera a aplicação para continuar processando

  30. Serviços que o TCP provê para as aplicações • Interface do serviço é uma seqüência de bytes • TCP não identifica estruturas lógicas nos dados transmitidos • Dados transmitidos são vistos como uma seqüência de bytes

  31. Serviços que o TCP provê para as aplicações • Inicialização confiável da conexão • TCP requer que as aplicações reconheçam uma nova conexão toda vez que uma for criada • Pacotes de conexões anteriores não podem aparecer como válidos • Término correto da conexão • TCP garante a entrega de todos os dados antes de fechar uma conexão a pedido de uma aplicação

  32. Serviço fim-a-afim e datagramas • Protocolos de transporte são chamados de protocolos fim-a-fim • Provêem uma conexão entre duas aplicações em computadores distintos • Conexões são virtuais • Implementadas de software já que o sub-sistema de comunicação não provê nenhuma facilidade

  33. Serviço fim-a-afim e datagramas • Mensagens TCP são encapsuladas em datagramas (pacotes) IPs • Pacotes são encapsulados em quadros • Quadros são transmitidos como uma sequência de bits

  34. Serviço fim-a-afim e datagramas

  35. Dois cenários que afetam a confiabilidade • Serviço não confiável do sub-sistema de comunicação • No sub-sistema de comunicação, mensagens de uma conexão podem ser: • Perdidas • Duplicadas • Atrasadas • Entregues fora de ordem e aparecerem em outra conexão

  36. Dois cenários que afetam a confiabilidade • Conexões devem ser identificadas de forma única • Solução: um número de 32 bits é gerado por cada entidade toda vez que uma conexão é criada

  37. Dois cenários que afetam a confiabilidade • Reinicialização de um computador após uma conexão ter sido estabelecida • Computador que não reinicializou não sabe do problema e considera a conexão válida • Computador que reinicializou não sabe da existência da conexão e deve rejeitar esses pacotes • Problema que não é simples de ser resolvido

  38. Como alcançar a confiabilidade? • Através de uma série de técnicas que tratam partes do problema • Princípio básico para cada mensagem: • Transmissão • Temporização ou confirmação (positiva ou negativa) • Retransmissão, se for o caso • Repetição do processo um número finito de vezes

  39. Como alcançar a confiabilidade?

  40. Como alcançar a confiabilidade? • Problema decorrente: • Como configurar temporizadores para comunicações em LANs e WANs? • LANs: deve-se esperar pouco • WANs: deve-se esperar mais

  41. Como alcançar a confiabilidade? • Problema relacionado com a eficiência: • Rajadas de datagramas podem causar congestionamento • Tempo para enviar, receber e confirmar uma mensagem pode variar uma ordem de magnitude em poucos ms • TCP deve adaptar-se a diferentes condições de tráfego que podem causar diferentes atrasos num pequeno intervalo de tempo

  42. Retransmissão adaptativa • Protocolos de transporte anteriores ao TCP usavam um valor fixo de espera de confirmação para efeito de retransmissão

  43. Retransmissão adaptativa • No TCP esse tempo é variável • TCP monitora o atraso em cada conexão e modifica o temporizador de retransmissão para acompanhar mudanças • Mudança é feita em função de uma análise estatística das mensagens transmitidas • Na prática, retransmissão adaptativa funciona bem

  44. Retransmissão adaptativa

  45. Controle de Fluxo • Baseado em um mecanismo de janela • No momento do estabelecimento da conexão, um buffer de recepção é alocado e seu tamanho é informado para a entidade par

  46. Controle de Fluxo • Em toda confirmação é enviado o espaço disponível nesse buffer • Esse espaço é chamado de janela • A notificação que contém o valor desse espaço é chamado de anúncio da janela (window advertisement)

  47. Controle de Fluxo Tamanho máximo do segmento para o exemplo: 1000 bytes

  48. Gerenciamento de conexões • É feito usando 3-way handshake (três mensagens são trocadas) • TCP usa os campos: • Campo de sincronização (SYN) • Campo de término (FIN) • Campo de reset ( RST) • Campo de reconhecimento (ACK)  todos pacotes após estabelecimento de conexão precisam estar com ele setado • Combinação entre eles: ACK/FIN

  49. Controle de congestionamento • Congestionamento da rede pode ser piorado se a camada de transporte retransmite pacotes que não foram perdidos • Esse problema pode causar até um colapso da rede

  50. Controle de congestionamento • TCP usa a quantidade de pacotes perdidos como uma medida de congestionamento • Reduz a taxa de retransmissão a medida que esse valor aumenta • A transmissão de mensagens é feita de forma exponencial até atingir um dado valor, quando passa a aumentar mais lentamente

More Related