Feliz 2008

Quando comecei este blog não imaginei que duraria tanto, e em alguns momentos até pensei realmente em parar, mas volta e meia eu encontrava comentários aqui e ali de gente falando bem do que escrevo, e isso sempre me dava ganas de continuar.

2008 trará novos desafios para minha vida e graças a eles estou reorganizando minhas rotinas e meus estudos, e isto inclui a área de redes. Uma das minhas metas para este ano é manter um ritmo de estudos ainda maior, e por isso acredito que os posts aqui no blog se tornar mais freqüentes, batendo uma mínimo de 11 por mês.

Agradeço a todas pela atenção e pela audiência, e espero ter correspondido às suas expectativas.

Neste 31 de dezembro deixo aqui no Vovó Viu a Rede meu desejo de que todas as minhas leitoras tenham um 2008 de muitas realizações. Que o Senhor as abençoe durante todos os próximos 366 dias.

Protocolos CSMA livres de colisão

Já vimos no último artigo como funcionam os protocolos CSMA que permitem colisões de pacotes, e desta vez veremos outros que impedem que elas aconteçam. Continuaremos aqui com a metáfora da rodoviária.

Só para refrescar a sua memória, lembro que a metáfora é a seguinte: uma rodoviária que tinha caixas de som usadas para anunciar os ônibus que estavam saindo e chegando. Só que, ao invés de ter apenas uma pessoa responsável pelos anúncios, cada uma das 20 empresas tinha a sua própria mocinha com voz de veludo. Claro que elas não podiam falar ao mesmo tempo, para que os passageiros não se confundissem, e por isso adotaram um método de trabalho.

Depois de tentar três métodos, vistos no outro artigo, a administração da rodoviária tentou novos meios, que impediam que duas ou mais moças falassem ao mesmo tempo.

***


Na primeira tentativa, as cabines das 20 moças foram colocadas em um grande salão, uma ao lado da outra, formando uma fila. Além disso, o tempo de trabalho delas foi dividido em duas etapas, que se alternavam o dia inteiro: uma etapa de disputa e uma etapa de anúncios. Por fim, neste salão trabalhava com elas um sujeito que era o dono do microfone.

Na etapa de disputa, o sujeito ia de cabine em cabine, na ordem da fila, perguntando se as moças tinham algum anúncio a fazer. Se tinham, ele ia colocando uma bandeirola vermelha em frente à cabine. Depois de perguntar a todas as moças se elas tinham um anúncio a fazer, ele voltava ao início da fila de cabines e ia em cada uma daquelas que tinha um anúncio a fazer, na ordem da fila. Elas faziam o anúncio e ele retirava a bandeirola.

É um serviço um pouco burro, eu sei, mas pelo menos acabou com o problema de duas moças falarem ao mesmo tempo.

***


Infelizmente, este método trouxe a reclamação de algumas empresas. O que aconteceu é que enquanto algumas empresas tinham apenas poucos ônibus circulando, e por isso faziam poucos anúncios durante o dia, mesmo em momentos de alto movimento, outras tinham um número muito grande de ônibus circulando, e o tempo que se perdia nas etapas de disputa era para elas um grande desperdício.

Elas não estavam muito erradas, vejam só: das 20 empresas, cinco tinham um movimento intenso de ônibus, dez um movimento médio e outras cinco um movimento baixo. Daí que às vezes apenas as cinco com mais movimento tinham algo a dizer, e tinham que esperar as outras quinze se manifestarem, dizendo que não tinham nada a transmitir, para que finalmente pudessem dar o seu recado.

Por isso, foi adotado novo método: a fila foi reorganizada, colocando as moças na ordem das que mais tinham coisas a falar para as que menos tinham. Depois disso feito, o sujeito do microfone passou a trabalhar de um jeito diferente: ele ia ao início da fila e começava a perguntar a cada uma das moças se elas tinham algo a dizer. Assim que encontrava uma que tinha um anúncio a fazer ele liberava o microfone para ela. Terminado o recado ele voltava ao início da fila.

Fica claro que as primeiras da fila, que sempre tinham algo a dizer, se beneficiaram com isso, só que isso prejudicou, e muito, as últimas, que por muitas vezes esperavam muito tempo por uma oportunidade de fazer o seu anúncio. Era preciso que nenhuma das primeiras tivesse algo a dizer para que o microfone pudesse chegar até elas. Imagine o sofrimento da última da fila!

***


Como, então, dar espaço às moças que tinham poucos anúncios a fazer?

Foi adotado então um rodízio e a fila deixou de ser fixa: assim que uma moça terminava de falar, ela ia para o fim da fila e as que estavam atrás dela ganhavam uma posição. Graças a isso, as cabines passaram a ter um painel eletrônico que mostrava a sua posição na fila.

Ademais, o sujeito do microfone deixou de ir de cabine em cabine perguntando se as moças queriam falar algo. No lugar disso, as que tinham um anúncio para fazer apertavam um botão que fazia acender uma luz no painel de sua cabine. Havendo mais de uma querendo fazer o anúncio, a prioridade era dada àquela que estava mais na frente na fila.

Isso dava mais oportunidades às moças que falavam pouco: já que as que falavam mais ficavam sempre nos últimos lugares da fila, as mais caladas tinham sempre a maior prioridade na hora de dar o seu recado. Ao mesmo tempo, este método de trabalho não causava desperdício de tempo com disputas, já que o sujeito do microfone não tinha mais que ficar indo de cabine em cabine o tempo todo.

***


Se a leitora entendeu os meus exemplos, já entendeu por tabela os protocolos CSMA livres de colisão:

O primeiro é o mapa de bits: na etapa de disputa, cada uma dos equipamentos da rede informa que quer transmitir alguma coisa e em seguida, cada um por vez, transmite o seu pacote. Daí o processo recomeça com uma nova etapa de disputa.

O segundo é a contagem regressiva binária: cada máquina tem um número de ordem; as que querem transmitir alguma coisa informam seus números; a de maior número consegue a permissão de transmitir e transmite. O processo recomeça.

O terceiro é uma variação da contagem regressiva binária proposta por Mok e Ward: cada máquina ocupa uma posição em uma fila; as que querem transmitir emitem um sinal; a que estiver mais à frente na fila transmite, vai para o fim da fila e o processo recomeça.

Protocolos CSMA que permitem colisão

Existem três tipos de protocolos CSMA que permitem a existência de colisão na transmissão de dados, e para entendê-los vamos lançar mão do meu recurso mais manjado: uma metáfora.

***


Imagine então, querida leitora, que havia uma rodoviária que tinha caixas de som usadas para anunciar os ônibus que estavam saindo e chegando. Só que, ao invés de ter apenas uma pessoa responsável pelos anúncios, cada uma das 20 empresas tinha a sua própria mocinha com voz de veludo. Claro que elas não podiam falar ao mesmo tempo, para que os passageiros não se confundissem, e por isso adotaram um método de trabalho.

Antes de começar a dar o seu recado, elas reparavam se não havia nenhuma das outras falando. Se não houvesse nenhum anúncio sendo feito, elas faziam o seu na mesma hora. E se houvesse alguém falando, elas esperavam que a primeira terminasse para começar a falar assim que fosse possível. Simples e prático, mas com um problema muito comum: às vezes, duas, três ou até mais moças ficavam esperando uma terminar de falar e então começavam todas a falar juntas. Quando isso acontecia, todas paravam de falar e aguardavam um tempo aleatório para então tentar novamente.

Por que este tempo era aleatório? Fácil: se todas aguardassem o mesmo tempo, todas tentariam começar a falar na mesma hora, e falariam juntas ao mesmo tempo de novo, de novo, de novo. Com tempos aleatórios, uma esperaria, digamos, cinco segundos, outra onze e a terceira vinte, diminuindo os riscos de falarem juntas.

Quando haviam poucos ônibus circulando, este método funcionava com excelência, pois havia pouca concorrência entre as moças. Entretanto, em períodos de grande movimento, elas raramente conseguiam dar seus recados nas primeiras tentativas.

***


Por isso, a administração da rodoviária ficou insatisfeita com o rendimento deste rodízio e resolveu adotar um novo método. Neste novo método, a princípio tudo parecia igual: quando as moças tivessem alguma coisa para anunciar, elas reparavam se as outras estavam falando ou não. Caso não estivessem, o anúncio era feito na hora.

A diferença estava no caso de haver alguém falando. Neste segundo jeito de trabalhar, elas não ficavam esperando a primeira terminar de falar para começar logo em seguida. Ao contrário, elas esperariam um tempo aleatório. Depois que este tempo passasse, elas novamente reparariam se havia alguém falando, e o processo se repetia.

Um pequeno porém deste modelo é que, em momentos de baixo movimento, muitas vezes as moças esperavam mais do que o necessário para poder dar seus recados. Por que? Porque, por haver pouca "concorrência", eram pequenas as chances de duas começarem a falar ao mesmo tempo assim que outra terminasse, e o método de trabalho, mesmo assim, as fazia esperar um tempo aleatório, sempre maior que o tempo que a primeira levava pra terminar de falar.

Ademais, apesar de quase eliminar o número de colisões e melhorar consideravelmente o andamento do trabalho nos horários de pico, este método de trabalho trouxe um outro e sério problema: por várias vezes alguma das moças ficava um longo tempo tentando fazer o seu anúncio, sem sucesso, e às vezes o ônibus saída da rodoviária sem que ela conseguisse falar. Acontecia mais ou menos assim: a moça tinha um anúncio a fazer, mas já havia outra falando. Ela aguardava. Quando ia tentar falar, outra já tinha começado. Ela aguardava. Quando ia tentar falar, mais outra já tinha começado. E o processo se repetia uma vez atrás da outra.

***


Como forma de melhorar esta situação sem retroceder ao modelo anterior, a administração da rodoviária criou então um método misto, que tentava minimizar os dois problemas. Assim como no segundo método, ao verem que alguém já estava falando, as moças esperavam um tempo aleatório. A grande mudança trazida neste terceiro modelo foi na maneira que as moças agiam quando podiam falar.

O que acontecia, então? Quando viam que podiam dar o seu anúncio, elas jogavam um dado sobre a mesa. Se caísse 1, 2 ou 3, elas começavam a falar. Se caísse 4, 5 ou 6, elas esperariam um tempo aleatório para então ver novamente se outra estava falando, reiniciando o processo.

Trabalhando desta forma, mesmo que acontecessem casos de duas ou mais moças começarem a falar ao mesmo tempo, eram muito poucos e, ao mesmo tempo, houve uma diminuição grande nos casos de uma moça tentar falar várias vezes sem conseguir, e ninguém mais perdia seu ônibus.

Veja que, na verdade, havia 50% porcento de chances de as moças começarem a falar ou não, e que esta porcentagem poderia ser ajustada de acordo com o movimento da rodoviária.

Em momentos de baixo tráfego, em que era mais prático deixá-las falar assim que possível, poderia-se aumentar as chances de elas agirem assim simplesmente indicando que elas deveriam falar se o dado desse de 1 a 5, ou então não falariam se o dado desse 6. Do mesmo modo, em momentos de grande movimento, nos quais o segundo método é mais útil, poderia-se definir que elas não falassem se o dado desse de 2 a 6, ou então que falassem se desse 1.

A rodoviária passou a trabalhar assim, os problemas foram minimizados e todos foram felizes para sempre.

***


Pronto, se vocês entenderam esta história, entenderam os três tipos de protocolo CSMA que permitem colisão.

O CSMA 1-persistente é o primeiro: uma máquina, antes de transmitir, verifica se o canal de comunicação está sendo usado. Se não estiver sendo usado, transmite; caso contrário, fica esperando até que a outra transmissão termine para começar a sua logo em seguida.

O CSMA não-persistente é o segundo: uma máquina, antes de transmitir, verifica se o canal de comunicação está sendo usado. Se não estiver sendo usado, transmite; caso contrário, espera um tempo aleatório para tentar novamente.

O CSMA p-persistente é o terceiro: uma máquina, antes de transmitir, verifica se o canal de comunicação está sendo usado. Se estiver sendo usado, espera um tempo aleatório; caso contrário, baseada em um sorteio, ou ela transmite na mesma hora ou adia a transmissão, de acordo com um tempo aleatório.

***


Artigo do Vovó Viu a Rede: Entenda como funciona a escolha de tempo aleatório de espera

O que são protocolos CSMA (corrigido)

CSMA é a abreviação de Carrier Sense Multiple Access, ou Acesso Múltiplo e Detecção de Portadora, o que, em português para humanos, significa 'protocolos que conseguem saber se alguma máquina já está transmitindo'. Protocolos deste tipo permitem que uma máquina, antes de começar a transmitir, verifique o canal de comunicação para saber se alguma outra já está transmitindo, e o que diferencia os vários protocolos do gênero é a atitude que a máquina toma quando descobre que não pode transmitir imediatamente [correção: na verdade, há um método no qual a diferença está também no modo de agir quando pode transmitir].

Além disso, existem duas classes gerais de protocolos CSMA: os que impedem e os que não impedem a existência de colisões.

Ainda este ano colocarei aqui artigos explicando estas classes de protocolos CSMA. Primeiro veremos protocolos que permitem que colisões ocorram, e depois alguns protocolos livres de colisão.

O Protocolo Aloha

Um dos mais antigos protocolos da subcamada de acesso ao meio, nascido na década de 70, é o protocolo Aloha, que, veja só, foi criado em uma universidade havaiana. Ele não é muito confiável e por isso mesmo já quase não é mais usado hoje em dia, mas ainda assim vamos entrar em detalhes sobre ele.

De funcionamento muito simples, a primeira versão do protocolo Aloha, chamada de Aloha puro, permite que qualquer máquina da rede envie pacotes a qualquer momento e em caso de colisão avisa às máquinas transmissoras que o seus pacotes foram perdidos. Por fim, quando uma máquina recebe um aviso de colisão, ela aguarda um tempo aleatório para tentar enviar novamente. Simples assim.

Não é muito difícil perceber que este tipo de controle, ou poderíamos dizer falta de controle, gera um número enorme de colisões. Se uma máquina começar a transmitir um pacote quando um outro estiver sendo transmitido, os dois são perdidos, mesmo que só faltasse um mísero byte para terminar de transmitir o primeiro deles.

Como dito acima, ao receber um aviso de colisão as máquinas aguardam um tempo aleatório para começar a transmitir de novo. Este número deve ser aleatório, pois senão as duas máquinas esperariam o mesmo tempo e tentariam reenviar seus pacotes no mesmo momento, causando uma nova colisão, e outra, e outra, infinitamente.

Graças a tudo isso, e com base em umas contas feias que não vou mostrar a vocês como são, porque nem eu entendi como é que funcionam, obtemos um número alarmante sobre o protocolo Aloha: em média, menos de 20% dos pacotes são entregues sem problemas na transmissão.

Quando há poucas máquinas em uma rede que usa o protocolo Aloha, este número tende a aumentar, pois há menos concorrência pelo canal de transmissão, mas em redes com um número muito grande de máquinas, fica quase impossível enviar alguma coisa.

Como exemplo dessa ineficiência, veja o gráfico abaixo, que supõe que cada quadro leve quatro segundos para ser transmitido. Os quadros pintados de vermelho são os que não foram entregues por causa de colisões. Os verdes são os que puderam ser entregues corretamente.



(aproveito para lembrar que quatro segundos para transmitir um quadro é um tempo exageradamente grande se comparado à realidade, e eu uso este tempo apenas para efeitos didáticos)

***


Como forma de tentar melhorar este números, já nos anos 80 um grupo de estudiosos fez alterações no protocolo Aloha original e criaram o Slotted Aloha. Ele foi assim batizado porque utiliza o conceito de tempo fracionado (slotted).

Por acaso, a leitora do Vovó Viu a Rede já viu um metrônomo, destes usados pelos músicos para marcar o tempo das músicas? É exatamente assim que funciona o Slotted Aloha: as máquinas só podem transmitir no 'tique' do metrônomo. Além disso, o tempo não é dividido de forma aleatória: as divisões são exatamente o tempo necessário para que um pacote seja enviado corretamente.

Este avanço não impede que duas ou mais máquinas tentem transmitir pacotes no mesmo instante, mas pelo menos evita que um pacote que já começou a ser transmitido seja perdido porque outra máquina começou a transmitir alguma coisa. Com isto e com as contas cabeludas que comentei antes, a taxa de pacotes entregues com sucesso sobe um pouco, para cerca de 40%.

***


Artigo do Vovó Viu a Rede: Entenda como funciona a escolha de tempo aleatório de espera

O que fazem os protocolos da subcamada de controle de acesso ao meio?

A subcamada de controle de acesso ao meio está presente nos equipamentos das redes de difusão, cujo exemplo mais comum são as LAN's. Neste tipo de redes, há um único canal de comunicação que interliga todos os equipamentos. Os protocolos desta camada têm a tarefa de controlar o acesso dos equipamentos a este canal de comunicação (daí o nome "controle de acesso ao meio"). Este controle também é chamado mecanismo de arbitragem.

Já tratei sobre os tipos de mecanismos de arbitragem quando falei sobre as LAN's e recomendo às leitoras relerem aquele artigo para esquentar as turbinas para o que vem pela frente, que são os diversos protocolos criados para executar este trabalho espinhoso.

(Leia o artigo 'O que é LAN')

Uma Dúvida: Alguém Ajuda?

Eu sei que mais pra frente, durante a leitura do livro, eu vou descobrir isso, mas a curiosidade veio com vontade e coloco aqui uma dúvida que tive. Quem sabe uma das minhas leitoras não me responde: a parte que vou começar a estudar a partir de agora, e sobre a qual vou escrever aqui, é a subcamada de controle de acesso ao meio, usada nas redes de difusão.

Controle de acesso ao meio, em inglês, vira medium access control, que é abreviado para MAC.

Aí vem a dúvida: esta sigla tem alguma coisa a ver com o número MAC das placas de rede ou são apenas homônimos?

Índice de artigos sobre a camada de Enlace de Dados

Com o término dos artigos sobre a camada de enlace de dados voltados para redes ponto-a-ponto, segue aqui um índice para os artigos que publiquei sobre o assunto. Daqui em diante teremos artigos sobre a subcamada de controle de acesso ao meio, existente nas redes de difusão.

  • Conexão entre equipamentos na camada de enlace de dados
  • Estrutura dos quadros da camada de enlace de dados
  • Checagem de erros
  • Distância de Hamming
  • Como a camada de enlace de dados tenta corrigir erros de transmissão
  • Confirmando o recebimento de pacotes
  • Taxa de envio de pacotes
  • O Protocolo PPP

    E se você não lembra o que são redes ponto-a-ponto e redes de difusão, já publiquei um artigo sobre o assunto.

    Por fim, uma lembrança a todas as minhas leitoras: se você acha que o blog Vovó Viu a Rede te ajuda a aprender alguma coisa de útil e gosta de voltar sempre aqui, peço que compre alguma coisa no Submarino clicando no banner que está ali na coluna da direita ou em qualquer outro link para lá que eu postar por aqui. Fazendo assim eu ganho uma comissão e você ajuda a garantir um extra pro meu Natal.

  • O Protocolo PPP

    O protocolo Ponto-a-Ponto talvez seja o mais usado atualmente no nível da camada de enlace de dados, tendo em vista que toda a internet é baseada nele para poder fazer os equipamentos se comunicarem. E aqui não falo apenas da comunicação entre dois roteadores no meio do caminho entre seu computador e o da sua prima que está no Japão. Ele trabalha também na conexão que há entre sua casa e o seu provedor de acesso à internet.

    Basicamente, ele tem recursos que permitem a detecção de erros de transmissão; um subprotocolo chamado LCP (Link Control Protocol - Protocolo de Controle de Enlace) que é usado para ativar e desativar linhas de transmissão, testá-las e negociar opções de funcionamento; e um subprotocolo chamado NCP (Network Control Protocol - Protocolo de Controle de Rede) que é usado para fazer com que a camada de enlace de dados "converse" com a camada de rede.

    Quanto ao NCP, existem vários tipos dele, cada um sendo usado para trabalhar em conjunto com um determinado protocolo correspondente na camada de rede.

    ***


    Links interessantes:
  • Veja aqui o que já foi publicado no Vovó Viu a Rede sobre a camada de enlace de dados.

  • Taxa de envio de pacotes

    Quando se fala que a camada de enlace de dados do transmissor aguarda uma confirmação de que o pacote enviado foi realmente recebido, talvez tenha-se a impressão de que ela interrompe o seu trabalho e fica aguardando uma reposta. Eu também pensava assim, até começar a estudar o assunto mais a fundo.

    Se a coisa funcionasse deste jeito, com certeza as transferências demorariam muito mais para terminar. Tome os números fictícios abaixo (eles são fictícios porque na verdade as durações reais são bem menores):

    Tempo para o transmissor despachar um pacote: 1 segundo
    Tempo para o pacote chegar no destino: 1 segundo
    Tempo para o receptor ver se o pacote chegou ok: 1 segundo
    Tempo para o receptor despachar a confirmação: 1 segundo
    Tempo para a confirmação chegar no transmissor: 1 segundo
    Tempo para o transmissor processar a confirmação: 1 segundo

    Note que o tempo total do processo de transmitir um único pacote é de 6 segundos. Se a camada de enlace de dados do transmissor interrompesse seu trabalho para aguardar a confirmação, seria necessário um minuto para enviar 10 pacotes. Além disso, repare que, se assim acontecesse, enquanto uma etapa estivesse acontecendo, as outras estariam ociosas. Puro desperdício. Veja na tabela abaixo, por exemplo, que dez segundos seriam suficientes apenas para despachar dois pacotes e receber a confirmação de um.



    E ainda há um agravante: se por um acaso o primeiro pacote não chegasse, o transmissor ficaria parado até alcançar o tempo limite de espera. Se este tempo fosse de 10 segundos, estes seriam 10 segundos desperdiçados. Uma conta desta em larga escala é, sem dúvida, um desastre.

    ***


    O que acontece na verdade é que, assim que o transmissor despacha o primeiro pacote, começa a trabalhar no segundo. Quando o segundo está pronto, ele já o despacha, antes mesmo de receber a resposta do primeiro. Como os tempos de trabalho em cada etapa são os mesmos, enquanto despacha o segundo pacote, o primeiro está sendo transportado para o receptor. Veja na tabela abaixo que, desta forma, os mesmos dez segundos seriam suficientes para despachar todos os pacotes e receber a confirmação de cinco.



    ***


    A cada pacote despachado, o transmissor inicia um "cronômetro" para controlar o tempo de espera para que uma confirmação chegue. Se a confirmação não chega dentro deste limite, o pacote perdido é reenviado, e após ele, o próximo da seqüência ainda não enviado. Veja a tabela abaixo para ver como funciona isso, imaginando que o tempo de espera seja de sete segundos.



    Repare: no primeiro segundo o transmissor despachou o pacote 1, que se perdeu ao ser transportado. Só que o transmissor não sabe que o pacote 1 se perdeu, pois o tempo de espera ainda não acabou. Ainda assim, ele continua despachando os outros pacotes, que seguem seu curso normal. Depois dos sete segundos de espera, ele vê que não recebeu a confirmação do pacote 1 e então o despacha novamente. Em seguida, continua com o pacote 9, pois já tinha despachado até o 8.

    ***


    Há ainda alguns protocolos ainda mais espertos, que "raciocinam" da seguinte forma: o transmissor manda o primeiro pacote, o segundo, o terceiro, e por aí vai. Se a confirmação chegar fora de ordem, ele automaticamente reenvia o pacote cuja confirmação não chegou (e supostamente deveria ter chegado primeiro), mesmo que o tempo de espera para ele não tenha terminado. Veja a tabela abaixo para entender melhor (note que logo após receber a confirmação do pacote 2 ele reenvia o pacote 1):



    ***


    Por fim, deixo um exercício para minhas leitoras: vimos no início do artigo que se a camada de enlace de dados esperasse a confirmação de um pacote para mandar o próximo, todo o processo de envio de 10 pacotes levaria um minuto. Pergunto: quanto tempo levaria para mandar os mesmos 10 pacotes no "modo rápido", ilustrado na segunda tabela?

    ***


    Links interessantes:
  • Veja aqui o que já foi publicado no Vovó Viu a Rede sobre a camada de enlace de dados.

  • Confirmando o Recebimento de Pacotes

    Quando há algumas semanas eu publiquei um artigo que trata da conexão entre equipamentos na camada de enlace de dados, falei nele sobre a confirmação do recebimento dos pacotes: sempre que um pacote é enviado, a camada de enlace de dados do transmissor aguarda o recebimento de uma confirmação. Se depois de um tempo esta confirmação não chegar ele manda o pacote novamente.

    Pois bem, andei descobrindo umas coisas interessantes sobre este trabalho de confirmar o recebimento dos pacotes e acho que vale a pena compartilhar.

    Apesar de terem tamanhos variados, os pacotes da camada de enlace de dados seguem uma organização padrão: eles têm espaços para a colocação de flags de marcação de início e fim, espaços para os dados a serem transportados, e todo o cabeçalho com informação de numeração do pacote e afins.

    Quando a camada de enlace de dados receptora envia uma confirmação de recebimento de um pacote, esta combinação vai na forma de um novo pacote. Não é questão de apenas uns bits indo e voltando, é um pacote inteiro, cheio de espaços vazios. Isso não está com cara de desperdício? Com certeza.

    Como a camada de enlace de dados geralmente trabalha nos dois sentidos, enviando e recebendo dados quase o tempo todo, os cabeçalhos dos pacotes incluem não apenas espaços para informar os dados relativos à entrega do pacote, mas também possuem campos para confirmar o recebimento de um outro pacote qualquer, matando, assim, dois coelhos com uma cajadada só.

    Assim, quando recebe um pacote, a camada de enlace de dados não envia uma resposta automaticamente. Ela aguarda um tempo para ver se não vai ter que enviar algo. Se tiver que enviar um pacote com dados, a confirmação do outro vai junto.

    E é claro que ela não vai ficar esperando pra sempre: se assim fosse, o cara que está esperando a confirmação vai achar que o pacote se perdeu no caminho e vai mandar outro. Logo, se mesmo aguardando um tempo não surgirem dados para serem enviados, a camada de enlace de dados manda um pacote vazio, só com a confirmação.

    É como se numa empresa, quando um departamento enviasse um ofício para o outro, ele aproveitasse e escrevesse também que "a propósito, acuso o recebimento do vosso ofício 123". O que está sendo enviado não precisa ter algo a ver com o que está sendo confirmado. O que está em jogo aqui é apenas a economia de tráfego (ou de envelopes, no caso da empresa).

    ***


    Naquele outro artigo, que citei aí em cima, eu comparei o aviso de recebimento da camada de enlace de dados com o AR dos Correios, mas depois de estudar um pouco mais e descobrir estas coisas que acabei de falar, eu vi que a camada de enlace de dados vai um pouco mais além.

    Se o AR funcionasse como a camada de enlace de dados, ele seria assim: ao receber uma correspondência com AR, a folhinha que volta para o remetente não ficaria com o carteiro para ser devolvida. Ao contrário, ela ficaria com o destinatário.

    O destinatário só mandaria o comprovante de volta quando uma destas duas situações ocorressem:
    - Ele tem alguma coisa para mandar, e então manda o comprovante junto;
    - Ele já reteve o comprovante tempo demais, e então manda de volta assim mesmo, para que o remetente não pense que sua correspondência se perdeu.

    ***


    Há ainda um outro detalhe interessante quanto à velocidade e à taxa de envio de pacotes, mas isso já é assunto para um outro artigo, que pintará por aqui durante a semana que vem.

    ***


    Links interessantes:
  • Veja aqui o que já foi publicado no Vovó Viu a Rede sobre a camada de enlace de dados.

  • Como a camada de enlace de dados tenta corrigir erros de transmissão

    Existem alguns protocolos da camada de enlace de dados que têm a capacidade de identificar quando um quadro recebido não chegou corretamente e, além disso, tentam corrigir o erro (e às vezes até conseguem). Para ver como isso funciona, vamos partir para uma metáfora simples.

    Pense que um aluno esteja escrevendo palavras em pedaços de cartolina, entregando para uma professora, que então cola as palavras na parede, para formar uma frase no mural. A professora, ao ler a palavra escrita no pedaço de cartolina, é capaz de identificar se ela foi escrita errada.

    Como ela identifica que uma palavra foi escrita da forma errada? Simples: ela consegue identificar o erro pois existe um número limitado de palavras válidas. Qualquer coisa que não faça parte deste vocabulário denuncia a falha.

    Fácil, não? Pois bem, na camada de enlace de dados a coisa funciona do mesmo jeito: primeiramente, assim como nós, a camada de enlace de dados usa um conjunto limitado de palavras. E partindo deste princípio, para que ela detecte um erro de transmissão basta que receba uma palavra que não faça parte do seu vocabulário.

    ***


    Voltando à metáfora, ao detectar um erro, como a professora faria para descobrir a palavra certa? Também é simples: ele descobriria a palavra certa com base no seu vocabulário, bastando saber qual palavra correta se pode obter mudando o mínimo de letras possível do que está errado, ou seja, descobrindo uma palavra que esteja o mais "perto" possível do que foi recebido. Por exemplo, se ao ler a cartolina a professora se depare com inteligende, ela vai saber que a palavra certa é inteligente, pois ela está apenas a uma letra de distância.

    O mesmo acontece na camada de enlace de dados: para corrigir o erro, ela procura uma palavra correta que esteja o mais próximo possível da palavra errada recebida. (E é aqui que entra o conceito da Distância de Hamming)

    ***


    Mas há casos que isso não é tão fácil. Imagine agora que na cartolina esteja escrito hente ao invés de gente. Como é que a professora vai saber a palavra original? Seria pente? Gente? Rente? Lente? Difícil saber. Para nós, humanos, só o contexto é capaz de responder.

    Entretanto, quando este tipo de coisa acontece na camada de enlace de dados, ainda assim ela faz uma tentativa de corrigir o erro, trocando a palavra errada pela primeira palavra correta que ela conseguir gerar. Claro que ela pode acertar (ufa) ou não (corrigindo o erro gerando outro). Quando esta segunda alternativa acontece, o erro gerado só será detectado nas camadas superiores, o que é equivalente ao nosso "descobrir o erro pelo contexto".

    ***

    De volta à metáfora, pior ainda seria se, onde devesse estar escrito mala, o aluno escrevesse cala. Se nos dois primeiros exemplos o erro gerava uma palavra inválida, este aqui gerou uma palavra que também é correta. Neste caso, a professora não veria que houve um erro. (Sim, eu sei que o contexto faria com que ela identificasse o erro, mas isso não vem ao caso, lembre-se que ela está lendo palavra por palavra, isoladamente).

    Assim acontece na camada de enlace de dados: se uma palavra foi transmitida e no meio do caminho um erro a transformou em outra, também válida, a camada de enlace de dados vai deixá-la passar sem reclamar. Novamente, o erro só será detectado nas camadas superiores.

    ***


    Enfim, o tratamento de erros na camada de enlace de dados pode não ser perfeito, mas ajuda a reduzir um pouco o tempo das transmissões, pois descobre erros a cada parada no caminho entre o transmissor e o receptor.

    Novamente usando a metáfora, se não houvesse este controle de erros de transmissão, é como se a professora não reparasse se as palavras escritas nos pedaços de cartolina estão erradas ou certas, o que faria com que o mural fosse feito errado. Só depois de o mural estar pronto é que os erros seriam detectados, e ele teria que ser refeito do zero.

    Do mesmo modo, se a camada de enlace de dados não fizesse este trabalho e houvesse um erro de transmissão, ele só seria detectado quando todos os pacotes fossem recebidos e repassados para uma das camadas superiores. E aí, ao detectar um erro, as camadas superiores pediriam toda a informação de novo, gerando mais tráfego.

    ***


    Links interessantes:
  • Veja aqui o que já foi publicado no Vovó Viu a Rede sobre a camada de enlace de dados.

  • Distância de Hamming

    Esta explicação aqui fazia parte de um outro post que estou escrevendo. Mas resolvi separar as duas coisas diminuir um pouco o tamanho do outro. Então lá vai.

    ***


    Imagine duas palavras computacionais (feitas de bits): 00111111 e 11111111

    Pergunta fácil para a leitora: qual é a quantidade de bits que é diferente entre estas duas palavras?

    Dois bits, certo? Pois isto é a Distância de Hamming: a quantidade de bits que faz com que duas palavras sejam diferentes uma da outra. Ou melhor: dadas duas palavras, Distância de Hamming é a quantidade de bits que devem ser mudados para que a primeira se transforme na segunda.

    Simples assim.

    ***


    Links interessantes:
  • Veja aqui o que já foi publicado no Vovó Viu a Rede sobre a camada de enlace de dados.

  • Checagem de Erros

    Uma das coisas mais difíceis que encontrei até agora no meu estudo de redes foi o capítulo sobre a checagem de erros nos pacotes da camada de enlace de dados. Tanto que pulei a seção sobre o assunto. Ainda assim, vou explicar aqui pra vocês um método de checagem de erros dos mais comuns: o dígito verificador.

    Com certeza você já ouviu falar dele. Ele está no número da conta no banco, no CPF que você carrega na sua carteira e também nos pacotes da camada de enlace de dados. Seu funcionamento é muito simples: o dígito verificador é o resultado de uma conta que se faz sobre os outros números.

    Um exemplo moleza: imagine um clube, destes que a gente paga uma mensalidade para poder usar a piscina, a academia, passar o dia, coisa e tal. Cada pessoa tem uma carteirinha com um número de sócio, e daí a diretoria do clube decide colocar um dígito verificador neste número.

    Resolvem então que o dígito verificador é a soma dos algarismos do número de sócio, sendo que se a soma passar de dez, os algarismos do resultado são somados de novo, até se conseguir um número com apenas um algarismo. Daí, um sócio de número 431 teria uma carteira de número 4318. E um sócio número 987 teria uma carteira número 9876.

    Pra que serve isso? Serve para que, se alguém aparecer com uma carteira número 1119, o porteiro vai saber que ela é falsa, pois ele vai saber que o dígito verificador certo deveria ser 3.

    Basicamente, é isso. Claro que os métodos para calcular os dígitos verificadores dos documentos que vemos por aí não são tão simples assim. Os de CPF e CNPJ, por exemplo, são intrincadíssimos: você vai multiplicando cada algarismo por certos valores decrescentes, depois soma o resultado, vê quanto falta para chegar em um outro valor, e então diminui este "quanto falta" de mais um outro valor para então achar o dígito verificador. Ou algo parecido e mais difícil que isto.

    Estes dois casos, por acaso, são de conhecimento público, pois são necessários para os desenvolvedores de programas, para que eles criem programas que façam essa verificação, mas outros são secretos, como os dígitos verificadores de contas de banco. Para acertar um destes só por tentativa e erro.

    ***


    Este é, então, um dos vários métodos de checagem de erro que são usados pelos protocolos da camada de enlace de dados. É importante lembrar que com este tipo de checagem a camada de enlace de dados do receptor não tem condições de corrigir o erro, ela apenas vai saber que houve um erro, para então solicitar o reenvio daquele pacote.

    Existem outros métodos de checagem de erro que, com o uso de técnicas de redundância, permitem que o receptor tente - e muitas vezes consiga - não apenas descobrir que houve um erro, mas também corrigi-lo.

    Se alguma leitora souber de algum site que tem alguma explicação decente destes métodos, e quiser compartilhar, agradecerei efusivamente.

    ***


    Links interessantes:
  • Algoritmo para cálculo do dígito verificador do CPF
  • Algoritmo para cálculo do dígito verificador do CNPJ
  • Veja aqui o que já foi publicado no Vovó Viu a Rede sobre a camada de enlace de dados.

  • Autodidatismo

    Um leitor aqui do Vovó Viu a Rede me mandou um email perguntando sobre como faço para ser autodidata. Em resposta, escrevi um longo artigo, que publiquei hoje no Sarcófago. Acho que vale a pena a leitura.

    Estrutura dos quadros da camada de Enlace de Dados

    Como já vimos no artigo anterior, a camada de enlace de dados trabalha com quadros. Neste artigo veremos como é a estrutura deles.

    ***

    Contagem de Caracteres


    Quando tudo começou, a primeira idéia foi, claro, bem simples. E para entendê-la, imaginemos que a camada de enlace de dados tenha que transmitir a seguinte frase: "O blog Vovó Viu a Rede é bom demais".

    Visando garantir que os quadros tivessem tamanhos variados, o primeiro byte de quadro tinha um número que indicava o seu comprimento. Imaginando que cada quadro vá transmitir uma palavra da nossa frase de exemplo, junto com o espaço da direita, os dados seriam transmitidos assim (reparem que os números levam em consideração os espaços):

    2O 5blog 5Vovó 4Viu 2a 5Rede 2é 4bom 6demais


    Fica claro pra qualquer um que as chances de isso dar errado são altíssimas: basta um número errado para que uma seqüência de pacotes seja perdida. Imagine que o primeiro número, o 2, virasse um 6. A camada de enlace de dados receptora veria este número seis e receberia os 6 próximos bytes: "O 5blo". Bela palavra, não?

    Mas o pior vinha em seguida: sabendo que suposto quadro de quatro bytes tinha terminado, a camada de enlace de dados pegaria o próximo número para saber o tamanho do próximo quadro. E qual seria o número recebido?

    g


    Aí é que a porca torce o rabo, pois 'g' não é um número, logo a camada de enlace de dados não tem como continuar e manda um aviso de volta, acusando a falha.

    A bagunça pode ser pior ainda se a informação a ser transmitida forem números: um quadro fica com tamanho errado, a camada de enlace de dados lê até o byte errado, pega o próximo, que também é um número, acha que ele é um indicador de tamanho e segue em frente. Sentiu o drama?

    Outro problema trazido por esta situação era que a camada de enlace de dados não tinha como saber onde o quadro acabava. Ela apenas sabia onde ele começava, e só sabia isso se estivesse tudo sem erros.

    Na época em que este método foi criado a camada física não era tão confiável como é hoje em dia, com as fibras óticas e afins, por isso a quantidade de erros gerados era enorme. Logo logo as cabeças pensantes arranjaram um jeito de contornar isso.

    ***

    Bytes de Flags


    A solução encontrada para o problema que acabamos de ver se deu por meio da inserção de bytes especiais no início e no fim de cada quadro, para servir de moldura.

    Digamos que para o nosso exemplo escolhêssemos a letra 'f' para servir de flag. Ainda com a idéia de que cada quadro carregue uma palavra, a transmissão seria esta:

    fO ffblog ffVovó ffViu ffa ffRede ffé ffbom ffdemaisf


    Fazendo assim a transmissão fica um pouco mais confiável porque um quadro corrompido não inutiliza toda a transmissão. Basta procurar o próximo par de bytes de flag para saber onde o próximo quadro começa. Veja só:

    Imagine que o byte de flag que fecha o primeiro quadro se corrompa e se transforme em um 'g'. Para a camada de enlace de dados receptora, o primeiro quadro seria, então, este:

    O g


    O que aconteceu? A camada enlace de dados pensou que o byte que abre o segundo quadro fosse o byte que fecha o primeiro. Daí, ao procurar um byte de abertura, ela daria de cara com o 'b' da palavra "blog", veria que ele não é um byte de flag, e logo saberia que alguma coisa deu errada

    Daí ela iria desconsiderar tudo o que viesse em seguida até achar um par de bytes de flag, e encontraria os "ff" antes da palavra "Vovó ". Deste modo, ela saberia que ali estava um quadro correto, e seguiria em frente.

    Só que isso traz um novo problema: se o método funciona bem com a nossa frase de exemplo, imagine como seria a transmissão da palavra "fofura":

    ffofuraf


    Eita que sobrou foi 'f' nisso aí!

    A camada de enlace de dados receptora iria trabalhar assim: o primeiro 'f' começa um quadro, o segundo 'f' termina um quadro. Ih, é um quadro vazio. Tem que vir outro 'f' para começar um novo, mas vem um 'o'. Descarta. Procura um par de 'f', não tem. E lá se foi todo o pacote. Perdemos a palavra. Problema sério, não?

    Já pensando nisso, os idealizadores desta solução pensaram no seguinte: colocar um outro caractere de aviso para informar que o caractere que vem depois dele é pra ser lido como parte do pacote, e não como um caractere especial. Para nosso exemplo, vamos usar a letra 'n' como caractere de aviso. A palavra "fofura" seria transmitida assim:

    fnfonfuraf


    (Ufa, ainda bem que temos computadores para entender essa bagunça!)

    A camada de enlace de dados receptora iria trabalhar nesta mensagem da seguinte maneira (leia devagar para não confundir): o primeiro 'f' começa um quadro; daí vem um 'n', logo ela sabe que o que vem depois não é um byte de flag; daí vem o 'f', que é lido, depois o 'o', e por aí vai, até chegar ao último 'f', que, por não ter um 'n' antes, é interpretado como um "fim de quadro". E, assim, a palavra "fofura" é recebida corretamente.

    Mas ainda havia um problema: e se a palavra a ser transmitida fosse "ninfa"? O quadro seria este:

    fninnfaf


    Repare bem: ali estão os 'f' que abrem e fecham o quadro mais o 'n' antes do 'f' que não é flag.

    A interpretação da mensagem seria esta (novamente leia devagar para não confundir): o primeiro 'f' abre o quadro; depois vem o 'n', que é interpretado como aviso, dizendo que o que vem depois é pra ser lido como parte do quadro; e vem o 'i', que é lido; depois outro 'n', interpretado como aviso; depois outro 'n', o que era para ser um aviso, mas será interpretado como parte do quadro; depois vem o 'f', que por não ter nada antes é interpretado como 'fim de quadro'. Daí pra frente nada é lido, e a palavra que chega é "in". Feio, né?

    A solução inventada para este problema é a mesma de antes: colocar o caractere de aviso antes de um caractere de aviso falso! Deste jeito a palavra "ninfa" seria transmitida assim:

    fnninnnfaf


    Vou até separar por linhas a interpretação disso para ficar mais fácil de entender:

    'f': indica início de quadro
    'n': indica que o que vem depois é parte do quadro
    'n': lido normalmente
    'i': lido normalmente
    'n': indica que o que vem depois é parte do quadro
    'n': lido normalmente
    'n': indica que o que vem depois é parte do quadro
    'f': lido normalmente
    'a': lido normalmente
    'f': indica fim de quadro

    O que foi lido normalmente? "ninfa".

    ***


    Pois bem, depois destes novo método, mais outros foram criados. Um deles é a inserção de bits de flag, ao invés de bytes de flag. Uma das vantagens disso é a economia de recursos, pois o gasto de banda usada apenas para as flags diminui em 8 vezes (pois cai de 8 bits para apenas 1). Fazendo as contas em larga escala, vê-se que a economia é gigantesca.

    Há também métodos que usam as características da camada física, mas aí a coisa já fica muito específica pra demais da conta e sai do foco do blog e dos meus estudos, por isso vou passar longe disso.

    Hoje em dia, visando proporcionar mais segurança na transmissão, muitos protocolos da camada de enlace de dados utilizam métodos que mesclam estas técnicas que vimos neste artigo. Por exemplo: quadros que têm flags marcando seus limites e também indicadores de tamanho. Ao receber um quadro, a camada de enlace de dados vê o tamanho dele e verifica se entre as flags de início e fim há aquele número de caracteres informado. Se não houver, o quadro é dado como errado.

    ***


    Links interessantes:
  • Veja aqui o que já foi publicado no Vovó Viu a Rede sobre a camada de enlace de dados.

  • Conexão entre equipamentos na camada de Enlace de Dados

    Depois de passarmos algumas semanas com a camada física, vamos entrar agora na camada de enlace de dados. Antes de entrar no assunto deste artigo, vale lembrar uma coisa: quando falamos de camada física estamos falando de cabos, fios, ondas eletromagnéticas. E agora, quando falamos da camada de enlace de dados, estamos nos referindo ao pequeno software que faz com que a informação possa ser transmitida através destes cabos, fios e ondas eletromagnéticas, controlando o funcionamento destes. Este software da camada de enlace de dados não é nenhum programa que você instale em seu computador, ele está lá dentro do equipamento, e já veio assim de fábrica.

    Compartilho este jeito de pensar com vocês pois só quando entendi isso é que o papo sobre redes começou a fazer sentido. É o tipo de coisa que os livros não falam: eles assumem que você já era pra saber isso e você passa a vida toda com uma pulga atrás da orelha.

    Bem, estando isso explicado, vamos lá.

    Como eu já tinha falado sem muitos detalhes em um artigo anterior, uma das responsabilidades da camada de enlace de dados é a de lidar com o transporte da informação de um equipamento para outro. Este artigo trata de como ela faz isso.

    Primeiramente, explico que o transporte com o qual ela lida não se dá necessariamente entre dois computadores, mas também entre hubs, roteadores, ou qualquer outro equipamento através do qual a informação a ser transportada tenha que passar. Isso acontece porque a camada de enlace de dados é uma das camadas mais de baixo nível, onde ainda não há uma conexão fim-a-fim.

    Primeiramente, quando a camada de rede pede à camada de enlace de dados que leve uma informação de um lugar para outro, a camada de enlace de dados pega os pacotes que tem que enviar e divide-os em quadros. Estes quadros são então repassados para a camada física, que efetivamente transporta as informações até o seu destino.

    Este trabalho de fazer a conexão entre dois equipamentos pode se dar de várias maneiras, sendo que três delas são mais comuns. Vamos vê-las a seguir.

    ***


    Serviço sem conexão e sem confirmação


    Este modo de transmissão pode ser comparado a um pombo correio. Emissor e receptor não estabelecem uma ligação direta entre si, e não há uma garantia que a mensagem chegará corretamente, se é que chegará. Pode acontecer de o pombo ver alguém jogando milho na praça e esquecer do recado.

    Neste modo, a camada de enlace de dados do equipamento transmissor repassa para a camada física os quadros a serem transportados sem nenhum método que garanta que eles serão recebidos corretamente, se é que serão recebidos. Ao chegar em seu destino, os quadros são recebidos pela camada de enlace de dados do receptor, que os junta, refazendo o pacote original, que é repassado para as camadas superiores. São as camadas superiores que se encarregam de descobrir o erro e solicitar um novo envio.

    Tampouco há neste caso o estabelecimento de uma conexão direta entre o transmissor e o receptor antes da transmissão ou o encerramento da conexão depois da transmissão.

    Este tipo de serviço costuma ser usado nos casos em que o meio de transmissão é confiável; quando ocorre o tráfego de streaming de dados, como nas transmissões de rádio ou TV pela internet; ou então quando se quer deixar o trabalho de controle de erros para outras camadas. Com base neste último motivo é que a maior parte dos equipamentos de LAN existente hoje em dia usa este tipo de serviço.

    ***


    Serviço sem conexão e com confirmação


    Este serviço é basicamente o AR que você faz nos Correios. Aqui há um pouco mais de qualidade na transmissão, mesmo que uma conexão direta não seja estabelecida entre os transmissor e o receptor. Neste caso, cada vez que o receptor recebe um quadro corretamente, ele envia uma pequena mensagem informando ao transmissor que tudo chegou certo. O transmissor, por sua vez, após mandar um quadro, aguarda uma confirmação durante um certo tempo. Se não receber a confirmação, envia de novo.

    Fazer a confirmação de recebimento em um nível tão baixo da pilha de camadas, ao invés de fazê-lo nas camadas superiores, tem conseqüências na melhora do desempenho da rede quando o meio de transmissão não é muito confiável. Entender o motivo é simples:

    Imagine que o pacote a ser transmitido de um equipamento para outro tenha um mega. A camada de rede passa este pacote para a camada de enlace de dados, que divide o pacote em mil quadros, que são então enviados. Como o meio de transmissão não é lá essas coisas, cerca de cem quadros são perdidos. Daí, no equipamento receptor, os quadros que chegaram são montados e repassados para a camada de rede, que só então verifica que houve um problema na transmissão, e pede para que o pacote seja reenviado. E lá vai um novo mega circular, com grandes chances de que a transmissão não aconteça corretamente. Até isso dar certo, vixe, às vezes vale até a pena gravar os dados num pendrive e caminhar até o destino.

    A confirmação de recebimento feita diretamente na camada de enlace de dados resolve o problema, pois antes mesmo da remontagem do pacote original já há um aviso de que uma pequena fração dele - um dos quadros - não foi recebida corretamente. E então apenas este quadro é reenviado.

    Quando o meio de transmissão é altamente confiável, caso dos cabos de fibra ótica, por exemplo, geralmente abre-se mão da confirmação de recebimento na camada de enlace de dados, deixando-se este serviço a cargo das camadas superiores.


    ***


    Serviço com conexão e com confirmação


    Aqui temos o que há de mais confiável neste assunto. Quando a camada de enlace de dados fornece à camada de rede um serviço deste tipo, uma conexão direta é estabelecida entre o transmissor e o receptor, formando um caminho virtual entre os dois extremos.

    Nestes casos, os quadros são devidamente numerados antes de serem enviados. Com isso, além de confirmar o recebimento correto de cada quadro, há ainda a vantagem de evitar o envio duplicado de quadros.

    O envio duplicado costuma acontecer quando a mensagem de confirmação se perde no caminho. Daí, como o transmissor não sabe que o quadro foi recebido nos trinques, envia novamente. No caso do serviço com conexão, se a confirmação se perder e o transmissor reenviar o quadro, o receptor será capaz de saber que aquele quadro está repetido, para então descartá-lo e enviar uma nova confirmação.

    ***


    Links interessantes:
  • Veja aqui o que já foi publicado no Vovó Viu a Rede sobre a camada de enlace de dados.

  • Índice de Artigos sobre a Camada Física

    Como os assuntos sobre a camada física terminaram, fica aqui um pequeno índice com os artigos que publiquei sobre o assunto. A partir do próximo artigo tratarei da camada de enlace de dados.

  • Tipos de Cabos: Par Trançado e Cabo Coaxial
  • Tipos de Cabos: Fibras Óticas
  • Comparando Fibras Óticas com Cabos de Cobre
  • O que são ondas eletromagnéticas

  • Pergunta às Leitoras

    Qualquer leitora atenta reparou que não publico nada há mais de uma semana. O motivo é simples: o livro que uso para estudar sobre redes tem algumas seções voltadas para assuntos que não são o foco dos meus estudos: satélites de comunicação e organização das redes de telefonia tradicionais.

    Daí que, como estou querendo passar logo para as seções que realmente me interessam, não estou me preocupando em escrever artigos sobre estas que leio apenas para saber do que se trata.

    Mesmo assim, deixo a palavra com vocês. Estariam minhas leitoras interessadas em ler alguma coisa sobre estes assuntos, mesmo que superficialmente? Se for do seu interesse, podem ter certeza que preparo alguns artigos.

    E aí? Aguardo a opinião de vocês. (A pergunta vai valer até quarta feira, dia 26/09/2007)

    O que são ondas eletromagnéticas

    Vou avisar logo de cara que o assunto deste artigo vai exigir um pouco de imaginação, pois vou falar de uma coisa que não se vê mas que está o tempo todo em torno de nós, e que é capaz de atravessar paredes, coisas e até mesmo nós. Portanto, antes de continuar a leitura, sugiro à leitora que use algum meio de expandir seu estado mental: um vinho, uma oração, qualquer coisa. Drogas não, por favor.

    Pois bem, as ondas eletromagnéticas são, para mim, uma das coisas mais abstratas que existem. Acho que nunca serei capaz de entender como é que um sujeito foi capaz de provar que elas existiam. Você não vê ondas de rádio ou ondas infravermelhas passando por aí.

    - Ih, rapaz, olha ali uma onda de rádio vindo!
    - Puxa, bonita essa, não?

    E, ao contrário do ar, que não pode ser visto mas pode ser sentido, as ondas eletromagnéticas não nos afetam quando passam por nós.

    - Ih, rapaz tá passando um filmaço na TV.
    - Como você sabe?
    - A onda da Globo passou por mim.

    Veja só, o cara tem viajar *MUITO* para imaginar uma coisa invisível, que não pode ser sentida, tentar conseguir provar sua idéia, e provar! E isso foi em 1887. Há 120 anos! É muita viagem, muita. Mas bem, descobriram, viram que dava pra usar, pra manipular, para criar, e hoje vivemos num mundo cada vez mais sem fio. E fica a dúvida: como é que isso tudo funciona?

    Para explicar o que são as ondas magnéticas vou usar um termo que vai deixar felizes as leitoras esotéricas: ondas magnéticas são algo como uma energia mística invisível. Se pudessem ser vistas flutuando por aí, elas seriam vistas assim:



    É importante saber que as ondas eletromagnéticas são sempre certinhas assim. Você não vai encontrar em lugar nenhum uma onda deste jeito:



    A partir do primeiro desenho podemos aprender dois termos-chave do assunto

    ***

    Comprimento de Onda


    O comprimento de uma onda, representado pela letra grega lambda ( λ ) é a distância que existe entre dois pontos máximos (ou dois pontos mínimos, depende do referencial).



    Ao contrário do que os desenhos possam sugerir, o comprimento das ondas não é sempre pequeno, com dois ou três centímetros. Podem haver ondas com quilômetros de comprimento. E, claro, existem também ondas de comprimento microscópico.

    ***

    Freqüência de Onda


    A freqüência de uma onda é a quantidade de oscilações que ela dá em apenas um segundo. Em nossa figura de exemplo temos três oscilações:



    A freqüência de uma onda é medida em Hertz (Hz), em homenagem ao sujeito que provou que elas existiam: o físico alemão Heinrich Hertz. É exatamente daqui que saiu aquela expressão das rádios: "sintonize Rádio Eldorado, seiscentos megahertz.".

    E por que megahertz? "Mega" significa um milhão, logo são um milhão de Hertz, ou seja, seiscentos megahertz dão seiscentos millhões de oscilações por segundo.

    ***


    Já sabendo estes dois conceitos importantes, podemos partir para uma relação importante entre eles: quanto mais de um, menos de outro. Ou seja: ondas de alta freqüência têm comprimento curto, e ondas de baixa freqüência têm comprimento longo. Com as imagens abaixo fica fácil de entender:



    Repare só: temos duas ondas que percorrem um quilômetro em um segundo. A primeira delas tem 3 Hz (ou seja, oscila três vezes em um segundo) e um λ de aproximadamente 333 metros (1000 metros divididos em três oscilações).

    Quando, na segunda, aumentamos a quantidade de oscilações, o comprimento cai: ela tem 6 Hz e 166 metros de comprimento.

    ***


    Como existem muitas freqüências possíveis, elas foram categorizadas em faixas, ou bandas. No início, haviam apenas três categorias:

  • LF (freqüência baixa)
  • MF (freqüência média)
  • HF (freqüência alta)

    Com o avanço da tecnologia outras bandas foram nomeadas, sendo duas delas já comuns aos nossos ouvidos, mesmo que a gente não soubesse muito bem o que significavam:

  • VHF (muito alta)
  • UHF (ultra alta)
  • SHF (super alta)
  • EHF (extremamente alta)
  • THF (tremendamente alta)

    Esta última parece piada, mas não é.

    ***


    E é aqui que chegamos na parte em que tudo isso se encaixa com as redes de computadores: o termo "banda larga". A explicação é pra lá de simples: já que as informações são transmitidas através das ondas eletromagnéticas, quanto maior a freqüência da onda, mais informação pode ser transmitida. Logo, nas bandas de alta freqüência, as bandas largas, pode-se transmitir muita coisa em pouco tempo.

    ***


    Links interessantes

  • Física.net: ondas eletromagnéticas em termos mais complicados
  • Nasa: ondas eletromagnéticas por quem entende do assunto
  • Eu Amo Física: comunidade sobre física no Orkut
  • Veja aqui o que já foi publicado no Vovó Viu a Rede sobre a camada física.

  • Comparando Fibras Óticas com Cabos de Cobre

    Quando se compara as fibras óticas e os cabos feitos de cobre, as fibras ganham a disputa com larga vantagem. Veja abaixo uma lista das características das fibras que as fazem melhor opção do que os cabos de cobre:

  • Menos Repetidores: quando a informação é enviada através dos cabos de cobre, a intensidade do pulso elétrico diminui lentamente, e precisa de repetidores a cada cinco quilômetros. Mesmo que haja perda de intensidade na fibra, ela se dá mais lentamente, e os repetidores são necessários apenas a cada cinqüenta quilômetros.

  • Sem interferências: a fibra ótica não sofre interferências de alterações na voltagem, eletromagnetismo ou quedas no fornecimento de energia elétrica.

  • Resistência ao meio: a fibra ótica, por ser feita basicamente de vidro, não sofre de problemas como oxidação ou corrosão, causadas até mesmo por elementos químicos presentes no ar.

  • Maior privacidade: as transmissões feitas através das fibras são muito mais difíceis de interceptar do que as feitas pelos cabos de cobre.

  • Menos peso: cabos do cobre pesam muito mais do que as fibras óticas. Quinhentos pares trançados com um quilômetro de comprimento pesam quatro toneladas, enquanto que uma única fibra pesa 100 quilos. A troca diminui a necessidade de sistemas de suporte sofisticados e caros de manter.

  • Menos espaço ocupado: no percurso de longas distâncias os cabos passam por dutos. A substituição dos cabos de cobre por fibras óticas libera espaço nestes dutos, o que permite aumentar ainda mais a capacidade de transmissão.

  • Lucro extra pela substituição: os cabos de cobre que foram substituídos e que não serão mais utilizados podem ser vendidos para refinarias, pois o cobre é um minério muito valioso.

    ***


    Ainda assim, as fibras óticas têm as suas desvantagens quando comparadas com os cabos de cobre:

  • Facilidade tecnológica: as fibras óticas ainda não são tão comuns, e exigem pessoal mais especializado, o que é mais caro e difícil de encontrar.

  • Resistência à manipulação: as fibras óticas são mais frágeis que os cabos de cobre e podem se quebrar se dobradas em ângulos muito agudos.

  • Comunicação bidirecional: as fibras óticas são basicamente unidirecionais. A comunicação bidirecional exige um par de fibras ou malabarismos com as bandas de freqüência de uma única fibra.

  • Interfaces caras: os métodos para se fazer a ligação entre duas fibras óticas são mais caros do que aqueles usados para ligar dois cabos de cobre.

    ***


    Links interessantes:

  • Veja aqui o que já foi publicado no Vovó Viu a Rede sobre a camada física.

  • Tipos de Cabos: Fibras Óticas

    O supra-sumo da transmissão de dados em meio físico são as fibras óticas, um cabinho fino como um fio de cabelo que é capaz de transmitir as informações em uma velocidade assustadora. Esta velocidade costuma ser tão alta que normalmente ela não é utilizada por inteiro, pois os computadores atuais não têm capacidade de processamento suficiente para lidar com tanta informação.

    Um cabo de fibra ótica é muito parecido com um cabo coaxial: no meio está a fibra ótica, feita de vidro; em torno dela está uma segunda camada de vidro, de qualidade inferior; e então vem uma camada de plástico protetor, podendo haver até uma camada antes do plástico para dar maior proteção à fibra. Normalmente as fibras são agrupadas em feixes, que aglomeram sob um único revestimento três cabos.

    Os dados são transmitidos pela fibra na forma de luz, daí a sua velocidade. Se há luz, temos um bit 1, caso contrário temos um bit 0. Para a transmissão dos dados, nas pontas da fibra há um emissor de luz, que transforma um sinal elétrico em um sinal luminoso, e um receptor que faz o serviço contrário. O sinal luminoso percorre a fibra ótica ricocheteando até chegar ao seu destino. Desta forma, pode-se enviar vários sinais ao mesmo tempo pela fibra, simplesmente fazendo-os ricochetear em ângulos diferentes.

    Normalmente, as fibras óticas são usadas para transmissões de dados em longas distâncias, mas já existem inclusive LAN's que utilizam esta tecnologia, ao invés da Ethernet, dominante hoje em dia.

    ***


    A conexão entre duas fibras é um pouco trabalhosa, pois como a fibra é muito fina é preciso ter um meio de alinhar as duas extremidades com precisão para evitar perda de sinal. A conexão pode se dar de três maneiras:

    - Com conectores: são pequenos plugues colocados nas pontas das fibras e permitem plugá-las umas às outras, algo tipo "macho/fêmea". Alguns modelos são parecidos com os conectores de cabos coaxiais.

    - Mecanicamente: alinha-se as duas fibras uma em frente à outra (ou lado a lado, depende do ponto de vista), e usa-se alguma forma de mantê-las assim, de modo que quando a luz chegar à extremidade de uma, ela passe diretamente para a outra. É como usar uma luva para unir dois canos.

    - Fundindo-as: faz-se uma espécie de solda que une as duas fibras.

    Para fazer qualquer uma destas conexões é preciso usar equipamentos especiais, feitos exclusivamente para isso.

    ***


    Aproveito o assunto para compartilhar uma história interessante com vocês: em 2005 fui às instalações da Embratel no Centro do Rio e na Ilha do Fundão, em uma excursão da faculdade. Lá vimos muita coisa sobre redes e uma das coisas relacionadas com fibras óticas me chamou muito a atenção: eles conseguiam fazer testes de transmissão de dados de longa distância (dois, três mil quilômetros) dentro de uma sala de poucos metros quadrados.

    Como eu já disse, a fibra ótica em si é muito fina, e lá eles têm uns rolos de fibra ótica, cada um com cerca de cem, duzentos, trezentos quilômetros de fibra, mas que ocupam muito pouco espaço. Cada rolo devia ser mais ou menos do tamanho de uma caixa de som, nada muito grande. Aliado a isso eles têm uns armários onde podem plugar estes rolos de fibra.

    Desta forma, em um armário menor que um guarda-roupas eles conseguem ter milhares de quilômetros de fibra ótica. Daí, ligam dois computadores a estes armários e mandam os dados de um computador para o outro. Apesar de as máquinas estarem a centímetros uma da outra, a informação percorre uma distância suficiente para ir do Caburaí ao Chuí. Simplesmente genial.

    ***


    Links interessantes:
  • FiberConec, fabricante de conectores de fibra ótica
  • Vytran, fabricante de equipamentos para conexão mecânica e fundida.
  • Artigo sobre conectores de fibra ótica e seu manuseio
  • Artigo sobre fibra ótica, com muitas fotos e gráficos interessantes
  • Artigo do Vovó Viu a Rede: Comparando Fibras Óticas com Cabos de Cobre
  • Veja aqui o que já foi publicado no Vovó Viu a Rede sobre a camada física.
  • Entenda porque eu usei "do Caburaí ao Chuí" ao invés de "do Oiapoque ao Chuí"

  • Tipos de Cabos: Par Trançado e Cabo Coaxial

    O artigo de hoje trata de um assunto bem simples, mas que nunca me foi bem explicado (ou ao qual eu talvez nunca tenha dado muita atenção). Por ser tão simples pode parecer banal, mas espero que lhes seja útil.

    ***


    O meio de transmissão de informações mais antigo que existe, e que permanece sendo usado até os dias de hoje é o cabo de par trançado. Basicamente, este tipo cabo é composto de dois fios de cobre entrelaçados, formando, veja só, uma trança. Por terem apenas uma proteção plástica que não é lá muito segura costumam ser chamados de cabos UTP, que significa Unshielded Twisted Pair (Par Trançado Desprotegido).

    Duas das vantagens trazidas pelo trançar dos cabos é a diminuição da interferência que um causa no outro e a diminuição da interferência que eles recebem do ambiente. Quanto mais voltas, menor a interferência. Há atualmente seis tipos de categorias, sendo que as mais usadas são a 3 e a 5, e uma das características que as diferenciam são a quantidade de voltas por metro.

    Eles começaram a ser usados em 1881 (não falei que eram antigos?) para a transmissão de ligações telefônicas nos Estados Unidos, e continuam sendo usados para este fim até hoje. Também são muito usados em redes de pequena extensão, pois são cabos mais baratos.

    Quer ver um cabo destes? A linha de telefone que chega à sua casa é um exemplo. Os cabos que ligam os computadores em uma LAN também.

    ***


    Já os cabos coaxiais são solitários. Um cabo tem apenas um fio de cobre, que é muito bem protegido: ele tem em torno de si um material isolante, uma malha de metal protetora e uma capa plástica externa. Graças a tanta proteção, consegue transmitir a informação por distâncias maiores e com mais velocidade que os cabos de par trançado. Em contrapartida, cabos coaxiais são mais caros.

    Um dos usos mais comuns para os cabos coaxiais é em TVs. É um cabo coaxial que desce da antena parabólica até a sua televisão.

    Uma coisa interessante sobre ele que eu nunca tinha visto alguém falar é sobre seu nome: por que coaxial? O primeiro passo para entendermos isso é sabendo que "coaxial" é uma palavra inglesa. Se fossemos traduzi-la para o português, seria algo como coeixal. "Eixal" vem de "eixo". "Co" significa "aquele que tá junto, que compartilha". Logo, vê-se que se trata de um caso de compartilhamento de eixo. Mas que eixo? E quem o compartilha? Simples: o fio de cobre, o material isolante, a malha de metal protetora e a capa plástica externa são todos cilíndricos, que têm o mesmo centro, o mesmo eixo.

    ***

    Links interessantes e úteis para saber mais:

  • Pares trançados na Wikipedia
  • Cabos coaxiais na Wikipedia
  • Artigo do Vovó Viu a Rede: Comparando Fibras Óticas com Cabos de Cobre
  • Veja aqui o que já foi publicado no Vovó Viu a Rede sobre a camada física.

  • O Que Vem Por Aí: Meios de Transmissão

    Depois de um pouco de teoria sobre redes, este blog vai começar agora a botar um pouco mais a mão na massa. O primeiro passo é sobre a camada física de todo o modelo de redes, e o assunto inicial serão os meios de transmissão.

    São eles:

    Meios guiados: são os fios de cobre e fibras óticas. Vamos ver coisas sobre pares trançados, cabos coaxiais, fibras óticas, cabos de fibras, etc.

    Meios sem fio: são as transmissões de curta e média distância. Trataremos de transmissão de rádio, microondas, infravermelho, ondas de luz, etc.

    Satélites: permitem transmissões globais sem fio. Veremos quais são seus tipos e algumas aplicações comerciais disponíveis para o público em geral.

    ***


    Antes de entrar nestes tópicos, o livro fala um pouco sobre a física da camada física. Eu explico: ele trata de assuntos como equações para cálculo de capacidade de transmissão em uma determinada largura de banda, harmônicos, potência de ruído, potência de sinal, fórmulas matemáticas cheias de senos e co-senos, e outras coisas beeeeem complicadas e de baixo nível.

    Como meu objetivo no estudo de redes de computadores não é saber destes pormenores, eles vão passar longe do Vovó Viu a Rede. Além do que, minha avó nunca gostou muito de física.

    O que é ISO? O que é IEEE?

    Quando o assunto é tecnologia, sopas de letrinhas sempre aparecem. Assustadoras à primeira vista, elas sempre se revelam simples depois que se entende o que está por trás delas. Estas duas aí de cima, ISO e IEEE, sempre me assustaram. Principalmente a segunda, por estar sempre relacionada com um assunto que, sozinho já me dava calafrios: redes de computadores.

    Quando eu via estes nomes, sempre acompanhados de alguns números ainda mais enigmáticos, já ficava assustado, pronto pra dizer que "Deus do céu, eu não entendo essas coisas, estou na profissão errada". Sorte que não desisti, pois a coisa é muito mais simples do que meus medos podiam prever.

    Com certeza, a mais conhecida das duas é a ISO, pois costuma aparecer mais na mídia. Hoje em dia tem até cartório propagandeando seguir a ISO 9000. Descobri o significado desta sigla há coisa de dois anos, quando fiz a cadeira de Controle de Qualidade na faculdade. Já a IEEE fui entender há muito pouco tempo, graças ao livro que estou usando para aprender sobre redes. Compartilho então meu aprendizado com vocês minhas leitoras que também não venham a ter este medo bobo que eu costumava ter.

    ISO e IEEE são os nomes de duas organizações sem fins lucrativos: a International Organization for Standardization e o Institute of Electrical and Electronics Engineers. Traduzindo: Organização Internacional para Padronizações e Instituto de Engenheiros Eletricistas e Eletrônicos.

    A primeira é uma organização não-governamental que abriga sob seu teto entidades de vários países que executam o trabalho de definir normas e padrões técnicos e de qualidade. Quando existe a necessidade de implementar uma norma ou um padrão em escala mundial, é a ISO que organiza os grupos de estudo, compostos por gente de todas as entidades associadas, que vão discutir as melhores práticas a serem adotadas e então criar as normas ISO.

    Existem muitas destas normas, a maioria delas, altamente específicas, como regras para definir como calcular o tempo de vida de CDs até como grãos de cacau serão empacotados e desinfetados. A mais famosa delas, com certeza, é a 9000, que define padrões de qualidade para qualquer tipo de empresa.

    Já a IEEE (lê-se i-três-é), como o próprio nome diz, é uma organização que tem como associados engenheiros eletricistas e eletrônicos. Seu trabalho é parecido com o da ISO, só que no seu caso, as regras e padrões definidos por ela dizem respeito apenas a assuntos relacionados com engenharia elétrica e informática. Além disso, ela publica jornais e revistas com artigos relacionados a estes assuntos.

    Em seu trabalho, a IEEE constitui vários comitês, que vão realizar estudos e discussões sobre um assunto específico. Um deles é o que lida com um dos assuntos deste blog que vos fala: as LANs. O comitê 802 já padronizou vários tipos de LANs diferentes, e mesmo que alguns destes padrões não tenham tido uma vida muito longa, os que realmente deram certo causaram grande impacto em toda a comunidade da informática. São eles o IEEE 802.3 (Ethernet), padrão para LANs com fio; o IEEE 802.11 (WiFi), padrão para LANs sem fio; e o IEEE 802.15 (Bluetooth), padrão para redes pessoais sem fio.

    Como se vê, apesar de enigmática a princípio, a sopa de letrinhas não tem nenhum mistério para quem a quer desvendar. Se a leitora quiser aprofundar os conhecimentos sobre o assunto, os links abaixo são um prato cheio:

    Site oficial da ISO
    Site oficial do IEEE
    IEEE no Brasil
    Busca de padrões ISO

    As Redes ATM e o Modelo ATM

    Minha querida leitora já viu em algum lugar, ou em algum filme, aquelas correntes humanas para carregar coisas mais rápido, não viu? Tem-se uma fila enorme de gente, e o primeiro pega alguma coisa e dá a quem está ao seu lado, que passa para outro, para outro, para outro, e por aí vai até o fim da fila.

    Agora imagine uma fila destas formada apenas por pessoas cegas, surdas e mudas. Não estou falando de algumas cegas, algumas surdas e algumas mudas, não! Estou falando de todas serem cegas e surdas e mudas, ao mesmo tempo. O que é preciso para que estas pessoas consigam carregar as coisas de um lado para outro? Um puta sincronismo: sem ele, vai cair tudo no chão. Todas estas pessoas são treinadas para saber o tempo que têm que durar os seus movimentos, de forma que tudo possa ser transportado com perfeição.

    Saiba então que é mais ou menos assim que funcionam as redes de telefonia: sempre sincronizadas, com um reloginho marcando o compasso, de forma que a transmissão vá de um ponto a outro em alta velocidade, sem risco de perda de informações.

    Até o início da década de 90, praticamente todas as redes de computadores funcionavam usando a infra-estrutura telefônica já existente para realizar as suas transmissões, mas eis que uma nova tecnologia surgiu e ganhou muita força: o ATM (Asynchronous Transfer Mode - Modo de Transferência Assíncrono).

    A grande sacada desta tecnologia foi acabar com o sincronismo. Com ela, as pessoas da fila deixavam de ter deficiências: todas falavam, ouviam e viam. Daí, quando tinham que entregar algo para a pessoa do lado, elas avisavam antes; e também avisavam quando não tinham mais nada para entregar. A falta de sincronismo não prejudicava o carregamento.

    Uma outra metáfora que se pode fazer para diferenciar as transmissões síncronas e as assíncronas é comparar os atos de pegar o metrô e um táxi. Com o metrô você tem que estar sincronizado: ele tem hora pra chegar e pra sair, e se você der mole, perde a condução. Além disso, também tem a hora certa de descer. Já com o táxi a história é outra, basta fazer sinal que o transporte começa, e basta dizer onde você quer ficar que ele pára.

    É exatamente assim que as redes de tecnologia ATM funcionam: quando alguém quer iniciar uma transmissão, sua máquina emite um sinal em direção ao receptor dizendo "aí, vou transmitir umas paradas, toma lá". Quando o receptor recebe esta mensagem, ele fica pronto para receber. Quando termina de enviar, o transmissor avisa que "ó só, terminei de mandar, valeu, um abraço".

    Apesar de não serem muito utilizadas hoje em dia em redes pequenas, de escritórios e empresas, as redes ATM são muito utilizadas, veja só, pelas empresas de telefonia, no transporte de pacotes IP em suas redes internas.

    ***

    Transmitindo


    As redes ATM são orientadas a conexão, ou seja, para que os dados sejam enviados, o transmissor primeiro precisa avisar que vai enviar algo, para que a conversação seja estabelecida. Ele não pode simplesmente jogar uma informação para o receptor dizendo "aí, pensa rápido". Antes ele tem que dizer "aí, se liga" e esperar o receptor responder "tá, pó falá".

    Supondo que o computador A queira enviar uma mensagem para o computador B, ele primeiro envia um pacote de configuração que, ao passar pela rede, vai sendo registrado pelos roteadores. Desta forma, os roteadores também sabem que existe uma conexão passando por ali, e já reservam recursos para ela. Desta forma, a conexão entre as duas máquinas é sempre fixada, e as informações percorrem sempre o mesmo caminho. A esta conexão fixa das redes ATM costuma-se dar o nome de "circuito virtual".

    As informações a serem transmitidas pela rede ATM são divididas em pequenas células de 53 bytes cada uma. Destes, 48 são a informação propriamente dita e 5 são para a formação de um cabeçalho de controle. Este cabeçalho contém duas informações essenciais para que as células cheguem ao seu destino: o número de ordem da célula, para que o receptor saiba que todas as células chegaram e consiga montá-las; e o código da conexão, para que os roteadores saibam para onde devem repassá-las.

    A adoção de células de tamanho fixo e pequeno traz a vantagem de tornar a transmissão mais veloz, pois o repasse delas é feito via hardware. Quando o tamanho dos pacotes é variável, o seu repasse deve ser controlado via software, o que torna o processo mais lento. Além disso, o tamanho reduzido das células faz com que elas são ocupem muito tempo as linhas de transmissão, garantindo que a rede fique mais tempo disponível, o que se traduz em uma qualidade de serviço maior.

    ***

    O Modelo ATM


    Por ser uma tecnologia nova e diferente de tudo o que já era usado até então, o surgimento do ATM levou à criação de sua própria pilha de protocolos, que consiste de basicamente três camadas: a camada de adaptação ATM, a camada ATM e a camada física, sendo que a primeira e a terceira têm, cada uma, duas subcamadas. O esquema pode ser visto na figura abaixo:



    A camada física, como o próprio nome diz, é a que tem a responsabilidade de lidar diretamente com o hardware.

    Sua subcamada PMD faz a ligação com o cabo propriamente dito. É ela que transforma os bits a serem enviados em sinais elétricos, telefônicos, luminosos, ou seja lá qual for a tecnologia de transmissão, que são então transmitidos. É ela, também, que recebe estes sinais e os decodifica em bits.

    Já a subcamada TC é a que pega as células a serem enviadas e as transforma em uma série de bits, que são então repassados para a subcamada PMD. No sentido inverso, ela recebe uma série de bits e os transforma de volta em células.

    A camada ATM é o coração de todo o esquema. É dela a responsabilidade de cuidar de toda a comunicação entre o transmissor e o receptor, definindo como é o cabeçalho que acompanha as células, marcando e liberando os circuitos virtuais e controlando o tráfego de dados para evitar congestionamentos.

    A camada de adaptação ATM serve de interface entre o usuário e todo o modelo. Sua subcamada SAR segmenta as informações do usuário em células e as remonta ao seu formato original. Já a subcamada CS é a que fornece os serviços do modelo aos programas do usuário: transferência de arquivos, streaming de vídeo, etc.

    ***

    Um Exemplo Prático


    Para fechar este artigo vamos ver um exemplo prático para a leitora ter uma melhor noção de como o modelo funciona.

    Vamos supor que a conexão já tenha sido estabelecida e que uma usuária esteja usando um programa de bate papo em uma rede ATM. A seqüência de ações que acontece quando ela clica no botão de enviar mensagem é mais ou menos a seguinte:

    - O programa de bate papo - subcamada de convergência - pega a mensagem, transforma em um "pacote de bate papo" e repassa este pacote para a subcamada de segmentação e remontagem.

    - A subcamada de segmentação e remontagem divide este pacote em várias células e as repassa para a camada ATM.

    - A camada ATM pegas estas células, numera e repassa para a subcamada de convergência de transmissão.

    - A subcamada de convergência de transmissão pega as células preparadas, converte em seqüências de bits e repassa estas seqüências para a subcamada dependente do meio físico.

    - A subcamada dependente do meio físico transforma estas seqüências em sinais e as repassa para os cabos da rede.

    - Os cabos levam o sinal ao receptor.

    - A subcamada dependente do meio físico recebe os sinais, converte-os para uma seqüência de bits e entrega a seqüência para a subcamada de convergência de transmissão.

    - A subcamada de convergência de transmissão pega as seqüências e remonta as células, repassando-as para a camada ATM.

    - A camada ATM verifica se tudo chegou nos conformes, se não faltou nada, e repassa as células, já sem os cabeçalhos, para a camada de segmentação e remontagem.

    - A camada de segmentação e remontagem pega estas células e, oh, remonta-as, tornando o "pacote de bate papo" íntegro novamente. Por fim, repassa este pacote para o programa de bate papo.

    - Finalmente, o programa de bate papo desempacota o que recebeu e exibe a mensagem na tela do computador.

    ***


    Este é, enfim, o ATM, uma tecnologia que surgiu como promessa de solução para todos os problemas que surgiam quando a internet começava a despontar, mas que hoje, com o surgimento de novas tecnologias, mais eficazes e confiáveis, começa a caminhar para o desuso.

    O Modelo TCP/IP

    Além do modelo ISO OSI, existe um outro modelo de referência para a implementação das camadas de uma rede, chamado modelo TCP/IP. Alguma leitora que tenha um conhecimento de redes um pouco melhor do que o meu pode argumentar dizendo que, ora bolas, TCP e IP são dois protocolos e não o nome de um modelo. Sim, estes são dois protocolos, mas por serem os principais protocolos usados no modelo, o nome deles foi adotado como o nome mesmo. É quase o que acontece com as marcas que viram sinônimo do próprio produto - gilete, xerox, cotonete.

    Assim como o modelo ISO ISO, a função do modelo TCP/IP é a de definir um padrão de camadas a serem implementadas na arquitetura de uma rede. Uma das diferenças encontradas quando comparamos os dois modelos é a quantidade de camadas, que aqui são apenas quatro. Abaixo temos uma figura que ilustra a sua organização:



    A camada host/rede tem a responsabilidade de enviar pacotes IP. Esta, infelizmente, não vou saber explicar aqui, pois o próprio livro diz que não há muita documentação a respeito dela. Palavras do autor: "Esse protocolo não é definido e varia de host para host e de rede para rede. Os livros e a documentação que tratam do modelo TCP/IP raramente descrevem este protocolo".

    ***


    A camada inter-redes é o coração de toda a arquitetura do modelo. Ela tem a função de permitir que qualquer um possa enviar informações pela rede e garantir que estas informações sejam devidamente entregues, independentemente da rede de destino, mesmo que ela seja diferente.

    Pelo fato de haver a necessidade de interligar várias redes diferentes, que falam "idiomas" diferentes, a camada inter-redes dita a regra de que toda informação a ser enviada deve ser dividida em pacotes antes de partir em direção ao seu destino, pacotes estes que são padronizados na própria especificação do modelo. O protocolo que define como são os pacotes e como os aplicativos da camada inter-rede vão se comunicar se chama Internet Protocol (IP).

    É importante notar que o termo "Internet" aqui não tem nada a ver com a internet em si. Uma tradução possível para Internet Protocol seria "protocolo para interligar redes", e não "protocolo da internet". Ou seja, internet aqui não é substantivo, mas sim adjetivo (tal qual internacional, intersocial e interracial).

    A tarefa de entregar os pacotes inclui várias responsabilidades para a camada inter-redes. Entre elas estão a de fazer o roteamento dos pacotes IP, ou seja, definir qual será a rota que eles tomarão para chegar ao seu destino; e também evitar que ocorram congestionamentos na rede, ou seja, saber que um certo percurso já está sendo muito usado e então redirecionar os pacotes IP para outro caminho menos obstruído.

    ***


    Estas duas primeiras camadas têm a função principal de permitir a conversação entre dois equipamentos adjacentes na rede. Já através da camada de transporte, assim como acontece no modelo ISO OSI, é que os equipamentos de origem e destino fazem a sua conversação, a chamada conexão fim-a-fim.

    Como forma de garantir a comunicação entre as duas máquinas que querem se comunicar, foram definidos dois protocolos diferentes: o TCP e o UDP.

    O protocolo TCP (Transmission Control Protocol - Protocolo de Controle de Transmissão), como o próprio nome diz, é usado no controle da transmissão dos dados, garantindo que esta se dê de forma confiável, pois assegura a entrega de dados sem erros: se um pacote não chega ou se chega corrompido, o protocolo toma medidas para corrigir o problema. Além disso, o protocolo TCP também é responsável pelo controle do fluxo dos dados, impedindo que um transmissor rápido sobrecarregue um receptor lento. A maioria das aplicações usa este protocolo para transmitir seus dados: desde programas de email até programas de gerenciamento de downloads.

    Para fazer uma metáfora, um AR enviado pelos Correios é exatamente isso. Você envia uma carta e pede para ser avisado de que ela chegou. Se seu AR não chegou depois de um tempo, você escreve outra e manda de novo. (Tudo bem, eu sei que você não manda outra: você liga para saber o que houve, mas deu pra entender, não deu?)

    Já o protocolo UDP (User Datagram Protocol - Protocolo de Datagrama de Usuário) é usado na transmissão de informações de forma não confiável, não garantindo a entrega dos dados sem erros. A leitora talvez pergunte pra que alguém vai querer usar um protocolo que não transmite os dados de forma confiável, mas saiba que isso é muito mais comum do que se pode pensar: os programas de transmissão de áudio e vídeo usam este protocolo. Se não fosse assim, seria impraticável assistir a uma transmissão ao vivo de um show ou então ouvir uma rádio pela internet: o receptor indicaria a perda de um pacote, o transmissor iria mandá-lo de novo, e outro, e outro, interrompendo o vídeo a toda hora, e quando você finalmente terminasse de assistir ao show o artista já estaria em casa descansando.

    Usando uma metáfora, as transmissões de rádio convencional funcionam assim. A emissora envia as ondas de rádio e seu aparelho vai recebendo e tocando o que chegou. Se por um acaso ele não recebeu as ondas porque você entrou em um túnel, babau, já era, a rádio não vai tentar enviar de novo aquele trechinho da narração do jogo que dizia que o Romário chutou e xxssssxsxssssxs...

    ***


    Por fim, temos a camada de aplicação, que é aquela com a qual lidamos diretamente. Bem, não tão diretamente assim: nós usamos os programas e eles usam os protocolos que fazem parte da camada de aplicação para executar o que pedimos. Estes protocolos são vários: o SMTP para envio de mensagens de email, o DNS para fazer a relação entre um endereço textual (o www-ponto-alguma-coisa) para o seu endereço numérico real, o HTTP para transferência de páginas da internet, entre muitos outros.

    ***


    Este é, enfim, o modelo TCP/IP. Apesar de ser mais antigo do que o modelo ISO OSI - o modelo TCP/IP nasceu em 1974 - ele é hoje mais usado do que seu primo mais novo, servindo de base para a grande maioria das redes atuais, e merece toda a atenção de quem pretende entender de redes.