TCP/IP

Qualquer comunicação precisa de padrões para que as partes comunicantes se entendam. Se lhe fizermos uma pergunta em grego e você nos responder em chinês, dificilmente conseguiremos trocar alguma informação útil. Da mesma forma acontece com os computadores: ao se comunicarem, os computadores precisam trocar dados dentro de uma padronização conhecida por ambos, caso contrário, aquela partida de Quake não ia "rolar" tão cedo...

Existem várias "línguas computacionais", que receberam o nome de protocolo, cada uma com suas peculiaridades. Estudaremos aqui o protocolo TCP/IP, que é mais ou menos o "inglês da Internet". O computador que não souber falar TCP/IP, não vai conseguir emprego tão fácil no futuro. ;)

Além de se definir que língua os computadores devem falar, devemos ter em mente "como" estes computadores vão se interligar para trocar informações. Existem dois modos básicos para isto: a comutação de circuitos e a comutação de pacotes. Na comutação de circuitos, os computadores se ligam diretamente para a troca de informações, e na comutação de pacotes, os computadores mandam a informação para pontos intermediários até alcançarem seu destino.

Enquanto na comutação de circuitos os computadores podem trocar grandes volumes de informações, de forma direta e contínua, na comutação de pacotes, os computadores mandam pequenos pedaços (pacotes) de informações que, por não irem diretamente ao destino, precisam conter - em cada pacote - o endereço de origem e destino completos. Comparando com nosso cotidiano, tomemos os exemplos do telefone e da carta: no telefone, estabelecemos um circuito e falamos diretamente com o destinatário, entretanto, só podemos falar com uma pessoa de cada vez. Com as cartas é diferente, pois além de podermos mandar cartas para várias pessoas ao mesmo tempo, não temos controle sobre os caminhos que estas cartas percorrerão até seus destinos. Nem mesmo ao mandarmos várias cartas para a mesma pessoa! Elas podem tomar rumos diferentes a cada envio...

Este dois tipos de comunicação foram analisados na criação do protocolo TCP/IP e, de acordo com as necessidades da época, uma se mostrou mais útil que a outra. Quais eram as necessidades? Primeiro, as redes a serem construídas não poderiam parar, mesmo que alguns dos computadores desta rede fossem destruídos; Segundo, os computadores não poderiam estar, todos, fisicamente ligados (por motivos de custo); Terceiro, esta rede possuiria vários tipos de computadores diferentes, e eles precisariam se comunicar.

Não foi preciso muito esforço para perceber que uma comutação de circuitos seria cara e frágil, principalmente sob ataques nucleares, por causa da falta de ligações redundantes, o que seria extremamente útil e fácil de implementar em uma comutação de pacotes. Portanto, foi criado um protocolo que se comunica por pacotes: o TCP/IP. E que possui um alto grau de interoperabilidade.

Este protocolo foi criado em "camadas", ou seja, dento do próprio protocolo, existem processos bem definidos, cada um fazendo sua tarefa na comunicação, e cada processo se comunicando com o seguinte através dos níveis que os separam.

Aplicação

Transporte

Internet

Físico

O modelo de camadas tem uma vantagem óbvia: se os processos de comunicação estão bem definidos e separados em cada camada, qualquer alteração necessária em um destes processos poderia ser feita isoladamente, não precisando, portanto, reescrever todo o protocolo.

Físico - O nível físico, na verdade, é de responsabilidade da placa de rede que, dependendo do meio ao qual está ligada, enviará um pacote diferente. Por exemplo, se for uma placa Ethernet, enviará os quadros padrão IEEE802.3, se for ATM, Frame Relay, Token Ring, enviará seus quadros específicos. O importante nesta camada, para o funcionamemto do TCP/IP, é a maneira com que a camada superior se comunica com ela.

Internet - Também chamada de "Interredes", esta camada é a responsável pelo direcionamento do tráfego dos pacotes. É nela que são identificados os endereços IP. A propósito, IP quer dizer "Internet Protocol", que serve para as comunicações intermediárias entre um computador e outro. Esta camada possui também um protocolo para envio de mensagens de controle e de erro, que é enviado para as camadas "Interredes" de outros computadores, chamado ICMP (Internet Control Message Protocol). O ICMP tem a função de, por exemplo, checar a existência de um endereço. Experimente usar o "ping"... Ele manda pacotes ICMP do tipo "Tem alguém aí?" para o destino especificado e obtém uma resposta que diz alguma coisa tipo "Olá! Estou aqui!". Detalhe: os pacotes ICMP são enviados dentro dos pacotes IP, assim como os da camada de transporte, mas o ICMP é gerado dentro na própria camada "internet".

Transporte - No nível de transporte, não interessa mais como o pacote vai chegar ao seu destino, se ele vai passar ela África ou pela Groelândia, isto é problema do nível Internet, e ele não quer nem saber! O que importa para este nível é a comunicação fim-a-fim, olho no olho, host-to-host. Esta camada é responsável pelo controle de fluxo, impedindo que o protocolo se afogue no meio de tantos pacotes. Ela também organiza os pacotes que chegam (enviados a ela pela camada Internet), pois eles podem chegar fora de ordem. Após colocar tudo em ordem, se a camada Transporte der falta de algum pacote, é ela que pede o seu reenvio. Na hora de enviar pacotes, é esta camada que quebra as informações em pequenos pedaços, antes de repassá-la. Ela possui dois tipos de pacotes, o TCP e o UDP.

Aplicação - Os responsáveis por esta camada são os programas que nós utilizamos na Internet. Por exemplo, o navegador que estás usando agora, possui a camada de Aplicação do protocolo TCP/IP. Ele está falando o "protocolo de aplicação HTTP", assim como o seu programa de FTP fala o "protocolo de aplicação FTP" e seu programa de e-mail fala o "protocolo de aplicaçãp SMTP e POP".

Encapsulamento

Esta é a parte mais chata de explicar... o grau de interatividade da Internet ainda não é o suficiente para usarmos o velho esquema das caixinhas coloridas, então vamos tentar improvisar com tabelas coloridas. ;)

Cada pacote de nível no TCP/IP possui uma área de controle do pacote e uma área de dados. A área de dados carrega a informação relevante para nós (como aquele GET /etc/passwd), e a área de controle, carrega informações relevantes para a comunicação entre os computadores, o que normalmente não deveria nos interessar, mas mesmo assim vamos explicar (não agora! só láááá na frente...).

Só como exemplo, a área de controle do pacote IP possui um campo chamado TTL (Time To Live) que indica aos outros computadores o quanto aquele pacote deve caminhar até ser descartado. Em cada host de nível Internet pelo qual passa este pacote, o número do campo TTL é subtraído de 1 e, quando chegar a zero, ele deixa de ser retransmitido. O número padrão deste campo é 30, e serve para que o pacote não fique eternamente perambulando pela rede, caso não encontre o caminho certo.

Voltando ao assunto, os pacotes dos níveis altos são "encapsulados" da área de dados do pacote imediatamente inferior, que por sua vez é encapsulado na área de dados no nível abaixo, até chegar ao nível físico, onde então é enviado pela rede.

O envio de uma informação passa por 4 processos de empacotamento, cada um responsável por um aspecto da comunicação, acrescentando sempre as informações necessárias para que a informação original chegue até seu destino, não se importando com o que está sendo "carregado" na área de dados. A área de dados não é de responsabilidade do nível corrente e sim do nível superior, portanto, o que se deve fazer é apenas levar aquela área de dados até o outro lado da comunicação.

Nível Físico
Controle Ethernet

Nível Internet
Controle IP

Nível Transporte
Controle TCP

Nível Aplicação
Controle HTTP

Veja esta outra tabela:

Aplicação

Pedido HTTP

Transporte

Área de Dados

Controle TCP

Internet

Área de Dados

Controle IP

Físico

Área de Dados

Controle Ethernet

 

Ok, ok... Para quem ainda não entendeu, mais uma chance: quando você digita um endereço no seu programa de internet, vamos supor, no browser, ele monta uma instrução do tipo "Protocolo de aplicação HTTP". Esta instrução é referente a um pedido de arquivo feito por você a algum servidor Web em algum lugar do planeta. Então, seu navegador passa esta instrução aos seus drivers de rede, mais precisamente à camada de Transporte. A camada de transporte aloja esta instrução HTTP em sua área de dados, e monta um cabeçalho com informações relevantes sobre o tipo de conexão que será mantida entre os dois computadores para a transmissão deste arquivo. Após especificar de que forma os computadores irão trocar esta informação, ele pega sua área de dados (aquela instrução HTTP), acrescida destas informações sobre a conexão, e a repassa para a camada inferior, internet, que alocará esta informação em sua área de dados. Esta camada acrescentará informações referentes ao endereço de destino (o servidor Web) que receberá estes dados, assim como preferências de rotas e dados de controle do pacote enquanto ele estiver a caminho do seu destino. Estando este cabeçalho pronto e anexado a área de dados, esta informação é agora passada ao driver da placa de rede, que montará um quadro de envio compatível com o meio físico ao qual está ligado.

Chegando ao destino, independente do tipo de pacote do nível físico (o que refletirá o tipo de rede utilizada na instalação do servidor Web), a placa de rede instalada neste servidor abrirá este pacote e repassará sua área de dados ao nível superior. A área de dados do nível físico, como sabemos, é o pacote do nível internet, que será repassado justamente ao nível internet (Uau!). Este nível, por sua vez, checa todos os dados de controle contidos no cabeçalho, como endereço destino e origem, e repassa sua área de dados (o pacote do nível Transporte) ao nível superior que é, adivinhe, o Nível de Transporte! Este nível de transporte, ao receber seu pacote, checa os dados do cabeçalho quanto aos tipos de conexão, checksum etc. e, estando tudo em ordem, finalmente repassa sua área de dados (o comando HTTP) ao servidor Web, que responde pelo Nível de Aplicação. Ao receber o comando, o servidor Web busca o arquivo pedido pelo seu browser e o envia, fazendo novamente todo o processo de empacotamento e transmissão, até chegar ao seu computador, começando tudo de novo...

Ao contrário do que pode parecer, isto é feito em pouquíssimo tempo - desde que tudo esteja funcionando pelo caminho. A maior parte dos "gargalos" nestas comunicações estão nas extremidades, seja pela velocidade do seu modem (ou do link do seu provedor), seja pela sobrecarga no servidor requerido. Mas há a possibilidade de acontecer algum problema enquanto seu pacote de informação estiver a caminho, e ele precisa saber "se virar" caso encontre um destes problemas. Se ainda assim, seu pacote não chegar ao seu destino, precisamos saber onde e porque isto ocorreu, e este é o principal motivo para tantas informações de controle nos cabeçalhos, pois os pacotes não possuem nenhum tipo de "inteligência" para seguir adiante. Tudo fica a cargo dos GATEWAYS, na saúde e na doença, na alegria e na tristeza.

Gateways

Os gateways são equipamentos computacionais que ligam outros equipamentos computacionais para que estes troquem informações entre si. São, na grande maioria, caixinhas pretas ou brancas, com algumas luzes piscantes e vários cabos de rede conectados a eles. Algumas vezes os gateways são computadores, tipo este que você está usando agora, rodando programas de comunicação.

Host A --- Gateway --- Host B

Gateway é um nome genérico dados a estes equipamentos, apesar de muitos deles terem seus próprios nomes. Assim como os carecas: a maior parte deles tem um nome, mas insistimos em dizer "É aquele careca alí!"... O que faz com que os gateways recebam diferentes nomes é a capacidade que eles possuem em se aprofundar na análise do tráfego de informação que transporta. Vamos logo ao exemplo:

Um HUB (aquele equipamento que interliga vários cabos de redes para que eles não fiquem no meio do caminho e nos faça tropeçar) serve para repassar o sinal elétrico recebido em uma de suas portas para todas as outras portas. Ele não se importa com o que está sendo transmitido, apenas escuta de um lado e fala do outro (tipo a Fifi, aquela nossa vizinha). Portanto, como não "entende" os pacotes que transfere, ele não é considerado um gateway (apesar de ser uma caixa branca com luzes piscantes e ligar vários computadores). Ele não analisa o tráfego e não toma nenhuma decisão.

Já as Bridges, quando recebem o pacote de informação, verificam "para onde" este pacote vai e o encaminha para a saída correta. A Bridge faz este endereçamento baseado no endereço FÍSICO das placas de rede as quais ela tem acesso (algo como 30:A5:F3:00:21:6C:E0:FF), portanto, basta que se entenda o pacote do nível físico para fazer o encaminhamento. Ela então é considerada um "Gateway de Nível Físico".

Os Roteadores (ou Routers) vão além: eles abrem o pacote do nível físico e checam o pacote do nível Internet. Neste segundo pacote, eles descobrem o endereço IP do destino, e encaminham o pacote devidamente. Com isto, os roteadores podem ser usados para interligar redes físicas diferentes, bastando que, para isto, ele "saiba" ouvir e falar quadros de níveis físicos distintos. Vamos supor que temos um roteador ligando uma rede Ethernet a uma rede Token Ring, ambas falando TCP/IP. O roteador pega o pacote Ethernet, abre e lê o pacote Internet. Se ele estiver endereçado a algum computador da rede Token Ring, o roteador empacota novamente estes dados, desta vez dentro de um quadro Token Ring, e o envia para o lugar certo. O fato de "entenderem" os pacotes do nível Internet os fazem receber o nome de "Gateway de Nível Internet".

Muitos equipamentos possuem um híbrido de vários níveis em suas funções, que em certo ponto causa um verdadeiro pandemônio em termos de nomenclatura. Portanto, tenha em mente o seguinte: Gateways de Nível de Transporte são capazes de analisar o tipo de pacote endereçado à "máquina-fim" da comunicação (muitos roteadores fazem isto, apesar de não ser sua função principal) e Gateways de Nível de Aplicação abrem todos os níveis de pacotes até chegar à informação original pedida pelo remetente. Um exemplo deste gateway são os servidores Proxy Http, que mantém um estoque dos arquivos mais pedidos pelos usuários e, analisando o novo pedido que chega, sequer deixa o pacote sair da rede, respondendo com a cópia local deste arquivo. Para isto, o Proxy precisa "enxergar" o pacote do nível de aplicação.

© 2009 Todos os direitos reservados.

Crie um site gratuitoWebnode