Baixe o app para aproveitar ainda mais
Prévia do material em texto
Módulo 4: CAMADA DE REDE Funções da camada de rede A camada de rede é responsável pelo transporte do segmento do host emissor pro host receptor. Existem protocolos da camada de rede em todos os hosts e roteadores. ➢ No lado emissor, ela recebe segmentos da camada de transporte e encapsula eles em datagramas. ➢ No lado receptor, ele desencapsula os datagramas em segmentos e entrega eles pra camada de transporte. ➢ O roteador recebe o datagrama, examina o cabeçalho e decide pra onde vai encaminhar ele. Existem duas funções principais da camada de rede: 1. Forwarding/Encaminhamento: O roteador recebe um pacote e encaminha ele pra saída correta (analogia: processo de fazer escalas em uma viagem). 2. Roteamento: Determina a rota a ser tomada pelo pacote, da origem ao destino, através de algoritmos de roteamento (analogia: planejar uma viagem da origem ao destino). Cada roteador tem uma tabela de encaminhamento local (construída a partir do algoritmo de roteamento) que tem os valores dos enlaces de saída dos datagramas, dependendo do endereço de destino do cabeçalho do pacote. No nosso caso, vamos trabalhar com endereçamento IP (mais à frente). Estabelecimento de conexão A depender da arquitetura de rede, a camada de rede pode oferecer uma conexão virtual. Do mesmo jeito que o TCP abre uma conexão para fazer troca de pacotes, essa mesma ideia pode ser aplicada à camada de rede (porém, quando é na internet isso não acontece). Antes de enviar o fluxo de datagramas, os dois hosts precisam estabelecer uma conexão virtual com a ajuda dos roteadores no caminho. Assim, enquanto a camada de transporte estabelece conexão entre dois processos, a camada de rede estabelece conexão entre dois hosts. Modelos de serviços de rede Modelos de serviço de rede ofertados para transporte de datagramas individuais: ➢ Serviço com entrega garantida. ➢ Serviço com entrega garantida e com menos de 40ms de atraso. Modelos de serviço de rede ofertados para transporte de fluxo de datagramas: ➢ Serviço com entrega na ordem correta. ➢ Serviço com banda passante mínima. ➢ Serviço com restrições sobre mudanças de espaçamento entre pacotes sucessivos (restrições sobre jitter). E o que é isso? À medida que os pacotes vão passando pelos roteadores, o espaçamento de tempo entre eles pode mudar. O jitter é a variação desse tempo, e é um tópico importante quando se fala sobre tráfego de voz, pois não se pode ter jitter muito alto (limite: 400ms). Os modelos de serviço de rede para internet são os de best effort: não tem nenhuma garantia de banda, perda, ordenação ou atraso, nem tem feedback sobre congestionamento. Já para as arquiteturas de rede ATM, existem algumas garantias, vistas na tabela abaixo: Como se garante que NÃO vai haver congestionamento, como nos casos do CBR e VBR? Fazendo controle de admissão, no qual vai ser determinado um caminho para o pacote e um algoritmo vai determinar se a entrada desse pacote no enlace vai provocar algum congestionamento. Assim, se for, a entrada do pacote no enlace não é permitida. -> pra caso de circuitos virtuais, é mais possível de fazer porque se tem uma quantidade de banda passante definida que será garantida / pra rede de datagrama não é possível fazer isso Redes de circuitos virtuais e de datagramas Existem dois tipos de serviços de rede: circuitos virtuais (VC) e redes de datagramas. ➢ Redes de circuitos virtuais provêm serviços orientados à conexão. ➢ Redes de datagramas não provêm serviços orientados à conexão. Eles são análogos aos serviços da camada de transporte no que diz respeito a conexões, mas têm 3 principais diferenças: ➢ São serviços de host pra host, ao invés de processo pra processo. ➢ O usuário não tem escolha se vai ter conexão na camada de rede, pois dependendo da arquitetura a rede provê um serviço ou o outro. ➢ A implementação pode ser toda no núcleo da rede (no caso do VC), o que é ruim pelo tempo, pois os roteadores têm que processar mais e acabam demorando mais para fazer os encaminhamentos de pacotes. Circuitos virtuais (VC) Circuito virtual é o caminho da fonte para o destino que se comporta de forma semelhante ao circuito da linha telefônica (das antigas). Ele dá garantias de desempenho (performance-wise) e a rede faz ações ao longo do caminho por meio dos roteadores. Ele estabelece conexão e cada pacote carrega um identificador de circuito virtual (número de VC). Os roteadores precisam guardar o estado de cada conexão passando, assim eles podem alocar recursos para o circuito virtual. Implementação do VC O número de VC que cada pacote carrega corresponde ao número do enlace. A cada roteador que ele chega, ele passa pela tabela de encaminhamento e o número de VC é atualizado. Quando um pacote entra no roteador, ele verifica qual sua porta e número de VC de entrada. Com esses valores, ele verifica na tabela de encaminhamento qual a porta de saída e qual o número do VC de saída. Os circuitos virtuais têm protocolos de sinalização, que são usados pra estabelecer, manter e encerrar a conexão. A camada de transporte do host de origem contata a camada de rede e especifica o endereço de destino. A camada de rede, então, determina o caminho até o destino e atualiza as tabelas de encaminhamento em cada roteador. Ela define também os números de VC de cada enlace e pode reservar recursos como banda passante. Quando a rede estabelece o VC, a transferência de dados inicia e, no fim, um dos hosts informa à camada de rede que deseja encerrar a conexão, atualizando as tabelas nos roteadores para indicar o fim do VC. Redes de datagramas Não estabelecem conexão, logo os roteadores não guardam seus estados. Os pacotes são enviados com base no endereço de destino, então eles podem pegar caminhos diferentes (fica a cabo do roteador decidir o caminho de cada um, o que vai depender de filas, congestionamento etc). Funcionamento da tabela de encaminhamento Os endereços de destino normalmente tem 32 bits, então é inviável colocar na tabela todas as possibilidades de endereço. Assim, se usa uma faixa de endereços na tabela, de forma que fica: do endereço de número X até o endereço de número Y, o datagrama é enviado para a interface de enlace Z. Também pode ser usada a regra do prefixo mais longo: A tabela não usa faixas, mas usa prefixos dos endereços. Quando ela recebe um endereço de 32 bits, vai comparar seu valor com os prefixos da tabela. O prefixo mais longo que bater com o endereço vai determinar a interface de destino do datagrama Comparações entre VCs e datagramas Internet (rede de datagrama): 1. O serviço é elástico, ou seja, ele usa a banda passante que tem disponível. Logo, não consegue definir prazo de entrega. 2. Os sistemas finais são inteligentes (computadores): podem se adaptar, realizar controle e recuperação de erros. A rede é simples, mas os serviços nos sistemas finais são mais complexos. 3. Tem diferentes tipos de enlaces, dependendo do provedor. Assim, o serviço não consegue ser uniformizado. ATM (VC): 1. A arquitetura de rede é uma evolução da do telefone. 2. Dá garantias que a rede telefônica dava: tempo estrito e confiabilidade (não perde pacotes). 3. Os sistemas finais são burros: são telefones, então a complexidade é toda dentro da rede. Arquitetura de um roteador O roteador tem duas funções principais: 1. Executar algoritmos e protocolos de roteamento. 2. Encaminhar datagramas do enlace de entrada para o enlace de saída. Entre as portas de entrada e de saída tem um elemento de comutação (ou switching fabric) e um processador de roteamento, que vai receber das portas de entrada os pacotes de controle que carregam informações do protocolo de roteamento. Porta de entrada 1. A primeira caixinha é a terminação de linha, onde se faz a recepção de bits. 2. A segunda desencapsula o datagrama. 3. A terceira usa a tabela de encaminhamento para determinar a porta de saída. Ela tem uma fila para caso os datagramas cheguem mais rápido do que o elemento de comutação pode aguentar. Elemento de comutação Ele faz oencaminhamento dos pacotes para as interfaces de saída, que pode ser feito de 3 formas: 1. Comutação via memória: faz uma cópia de memória do pacote e encaminha pra porta de saída. Usado em roteadores de 1º geração e tem um problema: a velocidade é limitada pela banda passante da memória. 2. Comutação via barramento (bus): escreve o pacote no barramento e endereça ele à fila de saída. É mais vantajoso que o de memória pois os barramentos podem ter taxa de transferência alta, de até 1Gbps. 3. Comutação via rede de interconexão (crossbar): Usadas para evitar essa limitação de banda passante dos barramentos. As portas de entradas são ligadas às de saída por fios, que possuem conexões elétricas. As conexões ligadas representam o caminho que está sendo usado. Inspirada nas Redes Banyan, redes de interconexão desenvolvidas para conectar processadores de sistemas multiprocessadores. Ela também faz fragmentação de datagramas em tamanhos fixos. Porta de saída 1. A primeira caixinha tem uma fila, pois a taxa do elemento de comutação pode ser maior que a taxa do processamento de enlace. Pode acontecer também de virem muitos datagramas de diferentes entradas para a mesma saída, e só se pode processar um por vez, precisando assim da fila. 2. A segunda faz o processamento de enlace, recebendo um datagrama que é encapsulado num quadro do enlace. 3. A terceira é a terminação de linha, que escreve os bits no enlace de comunicação. obs: A gente assume, para questões de cálculo, que o roteador tem uma única fila, mas na prática ele tem uma fila pra cada interface de entrada e de saída. Precisa ter um algoritmo de escalonamento pra atender cada uma das filas das portas de entrada, estabelecendo alguma prioridade. Tem elementos de comutação que encaminham pacotes de entradas diferentes simultaneamente, contanto que vão pra saídas diferentes. Mas isso pode gerar o bloqueio de cabeça de fila (head-of-the-line blocking - HOL), no qual o primeiro datagrama da fila bloqueia os de trás, mesmo que eles vão pra saídas que estejam livres. Esse enfileiramento causa atraso e pode haver overflow, com perda de pacotes. Camada de rede da internet Possui dois protocolos: IP e ICMP. Formato do datagrama IPv4 Pontos importantes do cabeçalho: ➢ Offset de fragmentação: digamos que foi gerado um datagrama que é maior que o enlace de comunicação, você vai fragmentar o datagrama em datagramas menores. ➢ Tempo de vida: guarda o número máximo de saltos (é decrementado a cada roteador - se tiver um problema de loop na rede, quando o contador chega a zero o pacote é descartado). Também é usado no traceroute. obs: À medida que o pacote vai descendo de camadas (aplicação, transporte e rede), vão sendo adicionados cabeçalhos. Isso tem impacto com relação à taxa máxima de transmissão do enlace, que não é diretamente revertida em dados úteis da aplicação. Por isso, pode haver overhead (sobrecarga). Assim, o cabeçalho deve ser sempre o menor possível. Fragmentação Na versão IPv4 do protocolo IP, os roteadores quebram datagramas que são grandes demais para um enlace (ultrapassam o MTU - maximum transmission unit) e, no destino final, esses datagramas são remontados. Diferentes tipos de enlaces têm diferentes MTUs. Fazer fragmentação significa que o roteador vai precisar ter um processamento adicional, causando mais atrasos para a aplicação. Como acontece essa fragmentação? A única parte fragmentada é a parte de dados. Já o cabeçalho dos datagramas fragmentados vai ter o mesmo tamanho do cabeçalho do datagrama original, mas algumas informações vão ser diferentes. Cálculo da quantidade de fragmentos: A divisão entre o tamanho de dados do datagrama original e o tamanho de dados do fragmento resulta na quantidade de fragmentos necessários (deve ser arredondado para o inteiro superior). No exemplo acima, o datagrama terá 2 fragmentos com tamanho de dados máximo e um fragmento menor. Campos do cabeçalho importantes na fragmentação: ➢ Comprimento do datagrama: Ele é calculado pela soma do tamanho do cabeçalho e o tamanho dos dados. ➢ Identificador de 16 bits: o dos fragmentos permanece igual ao do original, para que o destino final consiga identificar todos os fragmentos que pertencem àquele datagrama específico. ➢ Flag de fragmentação: Quando é 1, quer dizer que é um fragmento (que não seja o último). Quando é zero, seu significado depende do offset (deslocamento): Se o datagrama for o original, o offset é zero e, se for o último fragmento, seu offset é diferente de zero. ➢ Offset é um deslocamento que mostra a posição dos fragmentos no datagrama original. Essa posição corresponde a blocos de 8 bits, então ele é calculado pela soma dos tamanhos dos dados dos fragmentos anteriores dividido por 8. No caso do primeiro fragmento, o offset vai ser sempre 0. Assim, no destino, o datagrama vai ser remontado tomando como referência esses campos no cabeçalho: ID, flag e offset. O que acontece se um fragmento for perdido? O host de destino não pode mandar pra camada de cima, pois ele não tem como remontar o datagrama. Assim, se o protocolo de transporte for um TCP, o host de origem vai identificar a perda em algum momento e reenviar o datagrama. Se tiver usando UDP, não tem como detectar a perda e fica por isso mesmo. Endereçamento com IPv4 Os identificadores são de 32 bits e precisam ser atribuídos para cada interface do host/roteador. A interface é a conexão entre host/roteador e enlace físico, então, se tiver mais de uma, cada uma vai ter um IP. Normalmente se trabalha com números de 0 a 255. Hierarquia de endereçamento IP: 1. Prefixo: bits mais significativos, que determinam em qual rede o computador está acoplado. 2. Sufixo: bits menos significativos, que identificam o computador acoplado na rede. Subredes A parte da subrede no endereço IP corresponde ao prefixo, enquanto a parte do host corresponde ao sufixo. Uma subrede é o conjunto de interfaces de dispositivos com a mesma parte de subrede do endereço IP. Esses dispositivos podem mandar pacotes entre si sem passar pelo roteador. Máscara de rede: Quantidade de bits que é usada para identificar a subrede. A máscara pode ter duas notações: ➢ 223.1.1.0/24 (significa que a parte da subrede são os primeiros 24 bits desse número - cada ponto separa números de 8 bits) ➢ 223.1.1.0/255.255.255.0 (como 225 é o valor máximo - 11111111 - está setando os 24 primeiros bits para 1, representando a subrede. Essa representação equivale à de cima) Antigamente existiam 3 classes de endereçamento IP: ➢ Classe A: 8 bits para a subrede ➢ Classe B: 16 bits para a subrede ➢ Classe C: 24 bits para a subrede Através dessas classes, existe uma forma de calcular a quantidade de hosts disponível por interface para aquela subrede, elevando 2 à quantidade de bits do sufixo do endereço e diminuindo por 2 (pois o primeiro endereço é usado para roteamento e o último é usado para broadcasting). Assim, para as 3 classes, fica o seguinte: ➢ Classe A: 2^24 - 2 = 16777214 ➢ Classe B: 2^16 - 2 = 65534 ➢ Classe C: 2^8 - 2 = 254 O problema disso é que para organizações que precisam de uma subrede com até 2000 hosts é necessário alocar um endereço de rede na classe B, desperdiçando mais de 63000 endereços. Assim, com várias subredes sendo usadas e endereços desperdiçados, os IPs estavam se esgotando. Como foi que resolveram isso? Criaram o CIDR (classless interdomain routing), um método que abandona essas classes definidas e permite que a parte da subrede tenha tamanho arbitrário. Assim, as subredes agora são representadas por faixas de endereços IP, como: 1. 192.168.0.0/24 Esse número representa os 256 endereços IPv4 de 192.168.0.0 até 192.168.0.255 (equivalente a classe C, mas incluindo os de roteamento e de broadcasting). 2. 192.168.0.0/22 Representa 1024 endereços IPv4 de 192.168.0.0 até 192.168.3.255 Obtendo o endereço IP Antigamente, os hosts obtinham um endereço IP colocando ele em um arquivo de configuração, enquanto hoje eles usam o protocolo DHCP (dynamic host configuration protocol),no qual, através de um servidor, eles obtêm o endereço dinamicamente. Sempre que o host se conectar, ele pode receber o mesmo endereço IP ou um endereço temporário de maneira automática. Por conta dessa automatização, ele é considerado um protocolo plug and play. A rede obtém a parte de subrede do endereço IP pelo endereço do seu ISP, pegando o prefixo do endereço dele. Logo, se 8 organizações vão pegar faixas de IPs de um mesmo ISP, eles adicionam 3 bits ao prefixo para identificar as 8 diferentes organizações. Já o ISP consegue um bloco de endereços através do órgão ICANN (internet corporation for assigned names and numbers), que aloca endereços, gerencia DNS, atribui nomes de domínios e resolve disputas. Os roteadores precisam informar a outros roteadores, como da internet, por exemplo, qual a faixa de endereços IP que eles enxergam. Isso é o endereçamento hierárquico, no qual os roteadores aprendem quem enxerga quem e por qual direção um pacote vai tomar pra chegar no destino, permitindo uma divulgação de informações de roteamento mais eficiente. Quando um roteador executa o protocolo de roteamento, ele basicamente diz pros seus vizinhos: envie-me tudo a partir do endereço de IP X. E o que acontece se uma organização sair de um ISP e for pra outro? O ISP que ela tava anteriormente mantém a mesma faixa de endereços, enquanto o novo ISP vai falar: envie-me tudo a partir de Y ou Z (sendo Y sua faixa original e Z o endereço da organização que mudou). Já o roteador da internet vai saber pra qual interface mandar um pacote pela regra do prefixo mais longo nas tabelas de encaminhamento dos roteadores. O prefixo mais longo que bate com o endereço está na interface nova, então é pra ela que vai ser mandado o pacote. broadcasting -> se mandar algo pra ele, ele manda pra todos os pcs da subrede multicast -> não manda pra todo mundo, mas pra um grupo NAT: Network Address Translation NAT é uma abordagem de tradução de endereços de rede que garante maior segurança através de IPs não rastreáveis para a internet. Dentro de uma rede local, os computadores possuem endereços IP privados. Esses endereços não podem ser usados para se comunicar com a internet fora dessa rede local. Por isso, o roteador da rede local possui um endereço IP público que vai servir para todos os hosts dentro daquela rede, sendo diferenciados por portas. Esse endereço público é alocado no roteador pelo provedor de acesso à internet com o uso do DHCP. Assim, quando é enviado um datagrama, o host de origem coloca seu IP privado no cabeçalho, junto com um número de porta. Quando o datagrama chega no roteador, ele converte esses valores no IP público e em outro número de porta, através de uma tabela de conversão. Se chegar uma resposta, o roteador converte de volta esses valores externos pra os valores internos, reescrevendo o cabeçalho do pacote. Vantagens do uso do NAT: ➢ Independente da quantidade de computadores na rede local, o provedor só precisa alocar um único endereço IP público pra falar com o mundo externo. ➢ Se quiser mudar os endereços IP internos da rede, não precisa alterar o IP público. ➢ Se chegar um pacote no roteador que não tem mapeamento na tabela, o roteador descarta ele, fornecendo mais segurança para os hosts internos da rede. ➢ Como o número de porta tem 16 bits, então é possível ter 2^16 conexões simultâneas suportadas num único endereço IP público. Por esses motivos, os roteadores precisam ter um processamento maior e maior capacidade de memória, o que nem todos os roteadores possuem. Algumas pessoas têm grandes restrições com relação ao uso do NAT, porque ele viola alguns princípios estabelecidos sobre redes de computadores. As principais controvérsias incluem: ➢ Os números de porta devem endereçar somente processos e não hospedeiros. ➢ Os roteadores devem processar somente até a camada de rede (camada 3), e como o NAT tem que reescrever o cabeçalho, ele precisa acessar a camada de transporte. ➢ O NAT viola o argumento fim a fim, que diz que os hosts devem falar diretamente uns com os outros, sem a interferência de nós que mudem os endereços IP e números de porta. ➢ Para conexões P2P, antigamente, o usuário precisava abrir portas no computador e no roteador. Hoje, tem o protocolo UPnP que abre as portas necessárias automaticamente, já que o NAT por si só não abre portas para comunicação de hosts numa rede privada e outro fora dela que não tem mapeamento. Assim, a escassez dos endereços IP deve ser resolvida com uma nova versão do protocolo IP (IPv6) e não com uma solução temporária como a NAT. ICMP e Traceroute Esse protocolo (Internet Control Message Protocol) é usado tanto por hosts quanto por roteadores pra comunicar acontecimentos no nível de rede, como erros relacionados a um host, rede, porta ou protocolo inalcançável. As mensagens do tipo echo request e echo reply são usadas pelo ping para testar a conexão entre dispositivos. Uma mensagem ICMP carrega o tipo, código e os 8 primeiros bits do datagrama IP referente à resposta. A mensagem é encapsulada dentro do datagrama IP, por isso o protocolo ICMP está acima do IP, mas ainda dentro da camada de rede. obs: código 11 0 TTL expirado: Mensagem que indica que o tempo de vida (time to live) expirou. O código de TTL expirado é bastante usado no Traceroute. O protocolo ICMP é quem vai mandar a resposta pra origem quando cada probe chega num roteador. Então, se um host especifica o TTL máximo de 10, por exemplo, ele faz o seguinte para calcular o RTT de cada roteador: 1. Manda o primeiro probe com TTL = 1. Quando ele chegar no primeiro roteador o TTL vai pra 0 e o ICMP manda a mensagem de TTL expirado. Assim que a origem receber a resposta, ela calcula o RTT para o primeiro salto. 2. Depois, manda o segundo probe com TTL = 2 e, quando ele chegar no segundo roteador, seu TTL vai pra 0 e a mensagem de expirado é mandada pra origem. Quando ela chegar, o RTT é calculado e o processo se repete, até os pacotes chegarem no destino ou o TTL máximo expirar. Se o datagrama chegar no host de destino, retorna a mensagem ICMP de host inalcançável. IPv6 A motivação principal para a criação do protocolo IPv6 foi a de aumentar a faixa de endereçamento do IPv4, pois os endereços estavam se esgotando. Algumas motivações adicionais: ➢ Permitir que a rede forneça serviços diferentes para tipos de pacotes diferentes, por exemplo: usar filas normais e prioritárias no roteador, para que pacotes marcados no cabeçalho como prioritários tenham menor atraso. Esse tipo de diferenciação de serviços na rede não é permitida no IPv4. ➢ Colocar um tamanho fixo no cabeçalho de 40 bytes, pois o do IPv4 tem 20 bytes fixos + o campo de opções, o que não ajuda no processamento nos roteadores. Isso demanda um aumento da banda passante, pois a sobrecarga cresce com o aumento do tamanho do cabeçalho. ➢ Não fazer fragmentação, pra dar menos trabalho pro roteador. Alguns campos importantes do cabeçalho do IPv6: ➢ Campo prioridade, que determina se o datagrama tem prioridade em filas de roteadores. ➢ Flow label, que identifica fluxos de datagramas. ➢ Payload length, que é o tamanho da parte de dados. ➢ Next header, que identifica o protocolo da camada superior e se tem um campo opções na parte de dados. ➢ Hop limit, que é equivalente ao Tempo de Vida (TTL). ➢ Endereços de origem e destino tem agora 128 bits cada. obs: IPv6 não tem checksum, com o objetivo de reduzir o tempo de processamento em cada salto. Como hoje os equipamentos de cabeamento são melhores, então são menos suscetíveis a erros de bits. Os erros que ocasionalmente surgirem, o trabalho de detecção fica pras outras camadas, como a de transporte. O protocolo do ICMP também precisou ser atualizado pra ICMPv6. Algumas mudanças foram: ➢ Tipos adicionais de mensagens, como a de “pacote muito grande”, já que agora não tem mais fragmentação nos roteadores. Com essa mensagem, a fonte que se vire pra enviar um pacote no tamanho correto. ➢ Funções de gerenciamento de grupos multicast. Endereçamentocom IPv6 Cada endereço é formado por 8 grupos com 4 dígitos hexadecimais, mas algumas substituições podem ser feitas pra simplificar. Se um grupo tem 4 zeros, ele pode ser omitido e substituído por :: ou por um único 0. Se tiver mais de um grupo com 4 zeros, o :: pode substituir todos ou apenas alguns. Um zero à esquerda dos números de um grupo também pode ser tirado. Já sobre a notação CIDR, usa a mesma representação do IPv4 de /número de bits da subrede. Então a seguinte faixa de endereços: 2001:0db8:1234::/48 vai de 2001:0db8:1234:0000:0000:0000:0000:0000 até 2001:0db8:1234:FFFF:FFFF:FFFF:FFFF:FFFF Atualizações do IPv4 pro IPv6 Os roteadores não podem ser atualizados todos de uma vez, logo a rede tem que operar com roteadores IPv4 e IPv6. ➢ Estratégia da pilha dupla: equipamentos suportam os dois protocolos. ➢ Estratégia do tunelamento: Pacotes IPv6 são encapsulados na parte de dados dos datagramas IPv4. Assim, quando for necessário usar o IPv6 em algum dispositivo, ele é desencapsulado e usado, e depois encapsulado de novo. Quando passa por roteadores que não suportam o IPv6, é como se passasse por um túnel.
Compartilhar