Princí­pios, Protocolos e Arquitetura de Redes TCP/IP

Engenharia - Régua de cálculo

Muito se fala sobre estes protocolos ultimamente (sim, são 2 e não 1), mas a maior parte das pessoas não conhece o funcionamento e as características deles. Pensando nisso, estou disponibilizando um trabalho sobre TCP/IP.

1 – Introdução:

Qualquer comunicação precisa de padrões para que as partes comunicantes se entendam. Se apresentarmos um texto em grego à uma pessoa que só compreende 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. Existem várias “línguas computacionais”, que receberam o nome de protocolo, cada uma com suas peculiaridades. Apresentaremos aqui o TCP/IP, que é um protocolo que permite que computadores (e equipamentos) diferentes se comuniquem de forma que toda informação seja transferida e entendida em ambos os lados da comunicação.

2 – História do TCP/IP:

O que faz com que a tecnologia de TCP/IP seja tão notável deve-se, em parte, à sua utilização quase universal, e também a dimensão e a taxa de crescimento da internet. A ARPA iniciou suas atividades voltando-se para uma tecnologia de interligação em redes em meados da década de 1970, e a arquitetura e os protocolos adquiriram sua forma atual por volta de 1977-79. Nessa ocasião, a ARPA era conhecida como a primeira agência a financiar a pesquisa de redes de comutação de pacotes e a pioneira em muitas idéias sobre comutação de pacotes por meio da famosa ARPANET. A ARPANET utilizava a interconexão convencional de ponto a ponto pelo sistema de leasing, mas a ARPA também financiou a exploração de comutadores de pacotes em redes de rádio e canais de comunicação via satélite. Na realidade, a crescente diversidade de tecnologias de hardware de rede contribuiu para forçar a ARPA a estudar interligações em redes e impulsionar a efetivação de uma interligação em redes.
Na época, a ARPA possuía tantos recursos financeiros que despertou a atenção e a imaginação de vários grupos de pesquisa. A ARPA então organizava reuniões informais com pesquisadores a fim de trocar idéias e discutir os resultados das experiências. Por volta de 1979, já eram tantos os pesquisadores trabalhando no desenvolvimento do TCP/IP que a ARPA constituiu um comitê informal para coordenar e orientar o projeto dos protocolos e da arquitetura da recém nascida internet. Denominado Internet Control and Configuration Board (ICCB), existiu até 1983 quando foi reorganizado.
Em 1980 surgiu a internet global. Nesta época a ARPA passou a adotar os novos protocolos TCP/IP nas máquinas ligadas às suas redes de pesquisa. A ARPANET, já instalada, rapidamente tornou-se o backbone da nova Internet. A transição para a tecnologia da internet foi concluída em janeiro de 1983, quando o Office of the Secretary of Defense ordenou que todos os computadores conectados à redes de longa distância utilizassem o TCP/IP. Ao mesmo tempo a ARPANET dividiu-se em duas redes distintas, uma para futuras pesquisas e outra para comunicações de caráter militar. A primeira manteve o nome da ARPANET, enquanto que a segunda passou a se chamar de MILNET.
Com o intuito de incentivar os pesquisadores das universidades a adotar os novos protocolos, o governo norte-americano financiou a integração dos protocolos TCP/IP no Berkley UNIX (BSD Unix), atingindo desta forma 90% dos usuários da ARPA.
O sistema operacional distribuído por Berkley tornou-se popular então porque além de implementar os protocolos TCP/IP, fornecia uma série de aplicativos para operação em rede que lembravam os serviços UNIX utilizados em máquinas individuais (facilitando o aprendizado dos comandos por usuários já experientes). Outra vantagem que o BSD Unix trazia era a nova abstração no sistema operacional conhecida como sockets, que possibilita aos aplicativos o acesso aos protocolos de comunicação. A introdução dos sockets foi importante porque permitiu que, sem muito esforço, os programadores utilizassem os protocolos TCP/IP, incentivando desta forma os pesquisadores a utilizar o TCP/IP.
Atualmente a internet não pertence à nenhuma organização (governamental ou privada), sendo que existem vários fóruns públicos de especificações técnicas. Atualmente a National Science Fundation financia um grupo da AT&T para manter e distribuir informações sobre TCP/IP. Conhecido com Internet Network Information Center (Internic), o grupo trata de muitos detalhes administrativos para a Internet, além de distribuir a documentação (RFCs – Request for Comment).
Hoje, quando se menciona TCP/IP, vem imediata a associação com a internet, ocorrendo de modo idêntico o inverso: a internet está diretamente relacionada à arquitetura TCP/IP.

3 – Princípios Básicos:

Uma máquina qualquer de uma rede local deseja enviar um pacote de informações para uma rede distante:
Em primeiro lugar, o pacote é enviado para a rede local, onde é recebido por todas as máquinas e pelo roteador. O roteador então verifica o endereço de destino do pacote. Começa então uma viagem por roteadores de várias redes, onde o pacote vai sendo mandado para roteadores mais próximos do endereço final, até que chegue à máquina de destino. Se o pacote chega ao endereço de destino, a máquina de origem recebe do destino uma mensagem de reconhecimento. Se essa mensagem não chegar em uma certa margem de tempo, o pacote é mandado novamente. Vale frisar que esse processo todo somente ocorrerá se o pacote não for destinado a uma máquina da própria rede local.
Para termos uma melhor compreensão do funcionamento das transmissões de dados em redes, é necessário compreender dois fundamentos básicos: O tipos de protocolos e os métodos de comutação.

3.1 – Tipos de Protocolos:

Basicamente existem dois tipos de protocolos para transmissão: orientados à conexa e não orientados à conexão. O protocolo TCP/IP é um protocolo orientado à conexão.

3.1.1 – Protocolos Orientados á Conexão:

Em uma transmissão orientada à conexão, é necessário que se faça uma chamada e conexão antes de cada transmissão. Nesse tipo de transmissão os pacotes não precisam possuir overheads, como ocorre nas transmissões não orientadas à conexão. Isso é possível pois logo no início da conexão, a origem e o destino trocam todas as informações necessárias à transmissão.
O modo de transmissão orientado à conexão é mais seguro pois possui mecanismos de reenvio de pacotes mal transmitidos, bem como mensagens de reconhecimento.

3.1.2 – Protocolos Não Orientados à Conexão

O modo de transmissão não orientado à conexão conserva pouca informação durante uma conexão. A origem e o destino necessitam ter um prévio acerto de como será a comunicação e as características do QOS – Quality of Service – já devem estar definidas. Esse modo de transmissão associa a cada pacote um endereço global, que identifica a origem e o destino do pacote. Nesse modo de transmissão, os sucessivos pacotes transferidos podem não ter qualquer relação, pois são considerados independentes uns dos outros.
O modo de transmissão não orientado a conexão não da importância a controles de fluxo nem realiza qualquer reconhecimento ou reenvio de pacotes.
Através desse modo pode-se fazer uma comunicação com qualquer máquina sem precisar realizar uma conexão, sendo assim mais rápido. Em compensação, não tem-se a certeza do sucesso da transmissão e o acompanhamento do processo precisa ser mais eficaz.

3.2 – Métodos de Comutação:

As primeiras redes de computação surgiram visando a comunicação entre instalações militares norte-americanas, dentro e fora de suas fronteiras. Para tanto, era necessário determinar como interligar estas redes, e não apenas o protocolo que seria utilizado na comunicação. Para tanto, chegaram à dois modos básicos de interconexão: a comutação de circuitos e a comutação de pacotes.

3.2.1 – Comutação de Circuitos:

Os computadores se ligam diretamente para a troca de informações (conexão serial). Os computadores podem trocar grandes volumes de informações, de forma direta e contínua. Exige a existência de uma linha exclusiva entre a origem e o destino.

3.2.2 – Comutação de Pacotes:

Os computadores mandam a informação para pontos intermediários até alcançarem seu destino (ethernet). 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.

3.3 – Características do TCP/IP:

Quando o TCP/IP foi desenvolvido, exigiu-se que tivesse algumas características de uma rede de transmissão de dados:

  • as redes a serem construídas não poderiam parar, mesmo que alguns dos computadores desta rede fossem destruídos;
  • os computadores não poderiam estar, todos, fisicamente ligados (por motivos de custo);
  • esta rede possuiria vários tipos de computadores diferentes, e eles precisariam se comunicar.

Facilmente se percebe 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.

4 – Os Protocolos TCP e IP:

Apesar de tradicionalmente tratamos os dois como apenas um único protocolo, eles são na verdade dois protocolos com funções distintas e objetivos distintos operando em combinação.

4.1 – TCP – Transmission Control Protocol:

Esse protocolo tem como principal objetivo realizar a comunicação entre aplicações de dois hosts diferentes. O protocolo TCP é um protocolo de nível de transporte muito utilizado que trabalha com mensagens de reconhecimento, especificação do formato da informação e mecanismos de segurança. Ele garante que todos os PDU’s (Protocol data Unit) serão enviados com sucesso, pois realiza transmissões orientadas à conexão. Além disso, ele possibilita o uso de várias aplicações voltadas a conversação.

Quando executado, utiliza o protocolo IP, não orientado à conexão. O TCP então fica responsável pelo controle dos procedimentos da transferência segura de dados. Cabe salientar que o IP não é o único protocolo não orientado à conexão que pode ser utilizado pelo TCP.

Para maior eficiência nas comunicações, o TCP engloba várias funções que poderiam estar nas próprias aplicações, como processador de texto, base de dados e correio eletrônico. Ele foi criado com o intuito de ser um software universal contendo essas funções.

Existem ainda outros serviços do TCP:

  • Controle de fluxo;
  • Segurança na transmissão;
  • Comandos de OPEN/CLOSE;
  • Gerenciamento da informação nas transmissões orientadas a conexão;
  • Prioridade e segurança;
  • Transferência orientada a “stream”.

O protocolo TCP pode utilizar-se de várias formas de envio de mensagens. Ele pode ser utilizado com linhas telefônicas, redes locais ou ainda redes de fibra ótica de alta velocidade.

4.1.1 – Controle de fluxo:

O controle de fluxo atribui uma janela de transmissão ao host de origem. Essa janela limita o número de bytes transmitidos por vez. O controle de fluxo em si está na possibilidade de atribuir diferentes valores às janelas.

4.1.2 – Segurança na transmissão:

A confiabilidade nas transmissões via TCP está baseada no fato de que esse protocolo é orientado à conexão e trabalha com números de reconhecimento seqüenciais e positivos.

O TCP do host origem transfere os dados em forma de octetos, onde a cada octeto vão sendo atribuídos números em seqüência. O TCP do host destino analisa então esses números para garantir a ordem e a integridade da mensagem enviada. Se a transferência for perfeita, o TCP do host destino envia uma mensagem de reconhecimento à origem. Caso contrário, é enviada uma seqüência numérica para o TCP do host origem que informará o tipo do problema, bem como ordenará uma nova transmissão.

Os números em seqüência podem ser utilizados ainda para eliminar octetos duplos, que por causa da transmissão não orientada à conexão, podem ocorrer.

O TCP da origem possui um timer para garantir que não se perca muito tempo entre uma mensagem errada e sua correção. Então, quando o TCP origem recebe uma mensagem de erro, ocorre um “time-out” e o reenvio da mensagem.

A margem de tempo do “time-out” é controlada pelo administrador do host.

4.1.3 – Comandos de OPEN/CLOSE:

Por meio de todos os dispositivos físicos, o TCP pode estabelecer uma conexão virtual, a partir do comando OPEN. Nesse momento, o TCP realiza o “three-way handshake”, que é um processo onde os TCP’s origem e destino trocam mensagens de reconhecimento que possibilitam a conexão.

No momento em que a transferência de informações terminar, qualquer host (origem ou destino) poderá fechar a conexão virtual, a partir do comando CLOSE.

4.1.4 – Gerenciamento da informação:

O protocolo TCP pode controlar todos os aspectos da informação que esta sendo transmitida, pois é um protocolo de transmissão orientada à conexão. A ação do TCP se estende a toda a trajetória da informação, onde ele procura garantir o sucesso da transmissão.

4.1.5 – Prioridade e segurança:

O protocolo TCP permite que o administrador do host controle os níveis de segurança e permissão de acesso, bem como as prioridades nas conexões. Essas características não estão presentes em todas as versões, embora estejam definidas nos padrões TCP.

4.1.6 – Transferência orientada a “stream”:

Os aplicativos de nível de interface em geral enviam dados ao TCP de forma orientada a “stream”, onde a informação é transmitida byte a byte,um após o outro. Quando a informação chega ao TCP, é então agrupada em pacotes e assim enviada aos demais níveis de transmissão.

4.2 – O protocolo IP:

A principal função do protocolo IP é transportar os datagramas de uma rede a outra na Internet. Ele é um protocolo de transmissão não orientada à conexão, e por ser mais básico, não apresenta muitas características do TCP. Podemos dizer que o IP:

  • Não possui mecanismos de retransmissão;
  • Não da garantia de uma transmissão integra ou ordenada;
  • Utiliza os “endereços IP” como base para o direcionamento dos datagramas;
  • Descarta um datagrama se ele não for entregue ou se passar muito tempo trafegando na Internet.

Embora o protocolo IP não possua essas características, elas não deixam de ser importantes. Por isso, toda essa parte de consistências para a integridade dos dados transmitidos fica com o TCP.

O envio de datagramas via IP passa por algumas etapas básicas, onde podemos destacar:

  • Endereços IP;
  • Fragmentação dos datagramas;
  • Routing ;
  • Resolução de endereços.

4.2.1 – Endereços IP:

Cada computador ligado à Internet possui um ou mais números IP`s, sendo que cada número IP na Internet é exclusivo, o que evita que os datagramas sejam enviados para o lugar errado.

Um computador pode desempenhar o papel de host ou de gateway, ou ainda os dois ao mesmo tempo.

Os endereços IP são compostos em quatro bytes, onde cada byte contém um número. Os números são separados por pontos e se dividem em endereço de rede e endereço local.

O endereço de rede, que é fornecido pela InterNIC, contém a parte do endereço que se refere à rede principal e às subnets. Ele esta representado nos três primeiros bytes do número IP.

O endereço local é atribuído pelo administrador do host. Ele ocupa o último byte e serve para identificar máquinas locais.

Como se tornaria muito complicado lidar somente com números, foi criado o DNS (Domain Name System), que associa um nome a cada número IP. Esse nome traz muitas vantagens, e possui algumas características básicas,como:

  • Os nomes (domínios) são separados por pontos;
  • Não há espaços entre os domínios;
  • O número de nomes pode variar de um endereço para outro;
  • Identificam uma única máquina;
  • Não há diferença entre letras maiúsculas e minúsculas;
  • Ao contrário do número IP, são lidos da direita para a esquerda.

Típico exemplo de DNS: boitata.cce.ufpr.br

Onde:

  • boitata é o nome da máquina (host);
  • cce identifica a organização à qual está ligado o host;
  • ufpr também faz parte da identificação da organização;
  • br é um campo que pode representar o país (Brasil) ou ainda o tipo da organização,como ocorre com freqüência nos Estados Unidos.

Cabe salientar que além da hierarquia comum do DNS (nome do país – nome da organização – nome da máquina), pode ocorrer ainda uma hierarquia especial, como é o caso dos nomes cce e ufpr, onde ufpr é uma instituição a nível nacional (Universidade Federal do Paraná) e o cce é uma unidade local (Centro de Computação Eletrônica).

Associado a esse endereço em forma de nomes pode estar o nome do usuário (no extremo esquerdo), separado pelo símbolo “@” do resto do endereço. A seguir podemos visualizar um exemplo : root@boitata.cce.ufpr.br

Onde :

  • root é a parte que identifica o usuário (seu login);
  • @ é o caractere que separa o nome do usuário do resto do endereço;
  • boitata.cce.ufpr.br – constitui a parte restante do domínio que vai do nome da máquina até o nome do país.

4.2.2 – Fragmentação dos Datagramas:

Ao realizar trocas de pacotes, os aplicativos da Internet se deparam com um problema: A diferença do tamanho das mensagens nas diversas redes. Nesse caso, o protocolo IP suporta o processo de fragmentação, onde os datagramas são divididos em unidades menores.

O procedimento de fragmentação é realizado por um gateway, onde as mensagens são partidas em unidades menores e adequadamente identificadas. O host destino então reagrupará as instruções baseado nas identificações do gateway.

Na identificação dos fragmentos o gateway cria um header para cada fragmento. O header contém os endereços iniciais das redes (Source address) e uma identificação referente à mensagem a qual faz parte.

Já na fase de reagrupamento, o host destino, ao receber o primeiro fragmento, independentemente de estar na ordem correta, aciona um timer (Time to Live). Se uma margem de tempo padrão for ultrapassada e a mensagem não estiver completamente reconstituída, o host destino descarta os fragmentos recebidos e retorna à origem uma mensagem de erro.

4.2.3 – IP ROUTING:

Um datagrama enviado por um host qualquer não é capaz de chegar ao seu destino por suas próprias pernas, ele precisa ser orientado por um ou mais routers.

Um router recebe qualquer datagrama enviado e verifica seu endereço IP de destino, comparando-o a sua tabela. Após essa análise, o datagrama é mandado então para um gateway mais próximo do destino ou mesmo para o próprio destino.

A tabela de um router pode ser estática ou dinâmica, sendo que a dinâmica é mais vantajosa por ser mais moldável as constantes modificações nas redes.

Essas tabelas determinam o encaminhamento dos datagramas para:

  • Uma outra subrede conectada ao mesmo router da rede origem;
  • Um gateway, no caso da rede só poder ser acessada através de um ou mais gateways (roteamento indireto);
  • Uma rota default caso o endereço não se identifique com a tabela local. Nesse caso o default normalmente é mandar o datagrama para um circuito exterior.

As tabelas dos routers são constituídas de quatro campos, como no exemplo a seguir:

Exemplo - Tabela Roteador

Tabela 1 – Tabela de um roteador

  • Campo 1: É o campo dos endereços IP. Ele contém todos os endereços anteriormente mandados por determinada rede.
  • Campo 2: Esse campo contém um controle chamado Métrica, onde através de alguns algoritmos é analisado o caminho mais eficiente para aquele endereço(incluindo distância, equipamentos e tempo).
  • Campo 3: É o campo que contém o endereço IP do destino (seja ele um host de outra subrede, um gateway ou ainda um endereço default.
  • Campo 4: O campo quatro é o campo das Flags. Uma Flag controla basicamente a freqüência de uso de determinado endereço, para que, no caso de tabelas dinâmicas, o endereço possa ser apagado no caso de pouco uso.

Os routers utilizam um protocolo para comunicar aos demais routers ou hosts conectados a eles informações de status. Esse protocolo pode ser o RIP(Routing Information Protocol) ou o OSFP(Open Shortest Path First).

Existe ainda um outro protocolo, o ICMP(Internet Control Message Protocol), que informa sobre possíveis erros no processo de routing.

4.2.4 – Resolução de Endereços IP:

4.2.4.1 – ARP:

Às vezes,quando um host deseja enviar uma mensagem, ele pode não saber o endereço completo do host destino, isto é, saber somente o número IP. Para esses casos, o protocolo IP dispõe de um protocolo chamado ARP (Address Resolution Protocol).
Podem ocorrer duas situações na resolução de endereços:

  • O host destino está na mesma rede: O host de origem manda um pacote ARP contendo o número IP de destino da mensagem para todas as demais estações de sua rede. Somente a estação que se identificar com o número IP desse pacote irá responder à mensagem, mandando de volta o seu endereço MAC. Além de mandar a mensagem, o host de origem armazena o endereço MAC recebido do host destino em uma tabela temporária, que relaciona números IP aos endereços MAC da suposta rede local.
  • O host destino está em uma rede distante: Nesse caso, o host origem enviará um pacote ARP contendo o número IP para o gateway, que então orientará esse pacote por diversas conexões até que chegue na rede local desejada. Ocorrerá, então, o mesmo que na situação anterior, apenas diferenciando-se pelo fato de que o próprio gateway enviará os pacotes ARP para todas as estações locais.

4.2.4.2 – RARP:

O RARP (Reverse Address Resolution Protocol) é um protocolo que permite a uma estação descobrir seu próprio endereço IP. Ele é bastante utilizado por estações de trabalho desprovidas de disco rígido, uma vez que elas não tem como armazenar permanentemente um endereço IP.
Cada vez que uma estação desse tipo vai mandar alguma mensagem, ela precisa descobrir seu endereço IP.

Para tanto, ela envia uma mensagem ao servidor RARP de sua rede local, contendo seu endereço MAC. O servidor então retorna à estação seu número IP, possibilitando assim o envio de mensagens.

4.2.4.3 – Proxy ARP:

O Proxy ARP é uma variação do ARP. Ele possibilita que uma organização possua somente um endereço IP para suas diversas redes.

Nesse caso, todas as redes estão conectadas a um router. Quando um host quiser se comunicar com um host de outra rede (sem saber seu endereço MAC), ele irá despejar um pacote com o número IP do host destino. Mas nesse caso o pacote é interceptado primeiramente pelo router, que retorna ao host destino seu próprio endereço MAC. A informação subseqüente será então orientada para o router, que a redirecionará para o host destino, de acordo com a sua própria tabela de endereços.

5 – Modelo TCP/IP:

O modelo TCP/IP é constituído basicamente por 4 camadas: a camada de interface de rede , a camada de rede , a camada de transporte e a camada de aplicação. Tanto a camada de aplicação quanto a camada de interface de rede não possuem uma norma definida, devendo a camada de aplicação utilizar serviços da camada de transporte, e a camada de interface de rede prover a interface dos diversos tipos de rede com o protocolo (promovendo em conseqüência a interoperação entre as diversas arquiteturas de rede – Ethernet, Token Ring, ATM, entre outras).

5.1 – Camadas do Protocolo TCP/IP:

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.
Estrutura protocoto tcpip

Tabela 2 – Estrutura do protocolo TCP/IP

5.1.1 – Camada de Aplicação:

É formada pelos protocolos utilizados pelas diversas aplicações do modelo TCP/IP. Esta camada não possui um padrão comum. O padrão estabelece-se para cada aplicação. Isto é, o FTP possui seu próprio protocolo, o TELNET possui o seu próprio, bem como o SNMP, GOPHER, DNS, etc.

É na camada de aplicação que se estabelece o tratamento das diferenças entre representação de formato de dados.

O endereçamento da aplicação na rede é provido através da utilização de portas para comunicação com a camada de transporte. Para cada aplicação existe uma porta predeterminada.

5.1.2 – Camada de Transporte:

A camada de transporte é uma camada fim-a-fim, isto é, uma entidade desta camada só se comunica com a sua entidade-par do host destinatário. É nesta camada que se faz o controle da conversação entre as aplicações intercomunicadas da rede.

A camada de transporte utiliza dois protocolos: o TCP e o UDP. O primeiro é orientado à conexão e o segundo é não orientado à conexão . Ambos os protocolos podem servir a mais de uma aplicação simultaneamente.

O acesso das aplicações à camada de transporte é feito através de portas que recebem um número inteiro para cada tipo de aplicação, podendo também tais portas serem criadas ao passo em que novas necessidades vão surgindo com o desenvolvimento de novas aplicações.

A maneira como a camada de transporte transmite dados das várias aplicações simultâneas é por intermédio da multiplexação, onde várias mensagens são repassadas para a camada de rede (especificamente ao protocolo IP) que se encarregará de empacotá-las e mandar para uma ou mais interface de rede. Chegando ao destinatário o protocolo IP repassa para a camada de transporte que demultiplexa para as portas (aplicações) específicas.

5.1.3 – Internet:

A camada Internet é a primeira (normatizada) do modelo. Também conhecida como camada de rede (ip) é responsável pelo endereçamento, roteamento dos pacotes, controle de envio e recepção (erros, bufferização, fragmentação, seqüência, reconhecimento, etc.).

Dentre os protocolos da Camada Internet, destaca-se inicialmente o IP (Internet Protocol), além do ARP, ICMP, RARP e dos protocolos de roteamento (RIP ,IGP, OSPF, Hello, EGP e GGP).

A camada Internet é uma camada não orientada à conexão, portanto se comunica através de datagramas.

5.1.4 – Camada Física:

Também chamada camada de abstração de hardware, tem como função principal a interface do modelo TCP/IP com os diversos tipos de redes (X.25, ATM, FDDI, Ethernet, Token Ring, Frame Relay, sistema de conexão ponto-a-ponto SLIP,etc.). Como há uma grande variedade de tecnologias de rede, que utilizam diferentes velocidades, protocolos, meios transmissão, etc. , esta camada não é normatizada pelo modelo, o que provê uma das grandes virtudes do modelo TCP/IP: a possibilidade de interconexão e interoperação de redes heterogêneas.

5.2 – Encapsulamento:

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, e a área de controle, carrega informações relevantes para a comunicação entre os computadores. 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.

Pilha TCP/IP

Tabela 3 – Encapsulamento por TCP/IP

5.2.1 – Exemplo de funcionamento:

Quando o usuário digita um endereço no válido em seu navegador, ele monta uma instrução do tipo “Protocolo de aplicação HTTP”. Esta instrução é referente a um pedido de arquivo feito por ele a algum servidor Web em algum lugar do planeta. Então, o navegador passa esta instrução aos 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 (a 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. 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 navegador e o envia, fazendo novamente todo o processo de empacotamento e transmissão, até chegar ao computador do usuário.

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 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, é necessário 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.

Só como exemplo de como os pacotes possuem diversos tipos de informações, 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.

6 – Equipamentos de Interconexões:

As conexões físicas da Internet estão baseadas em alguns componentes básicos, dos quais podemos destacar:

  • Gateways: Um gateway é um componente que pode conectar redes distintas convertendo diferentes níveis de protocolos.
  • HUB: utilizado 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. Portanto, como não “entende” os pacotes que transfere, ele não é considerado um gateway. Ele não analisa o tráfego e não toma nenhuma decisão.
  • 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”.
  • Roteadores (ou Routers): 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. O fato de “entenderem” os pacotes do nível Internet os fazem receber o nome de “Gateway de Nível Internet”.

7 – Aplicações que utilizam TCP/IP:

As aplicações, no modelo TCP/IP, não possuem uma padronização comum. Cada uma possui um RFC próprio. O endereçamento das aplicações é feito através de portas (chamadas padronizadas a serviços dos protocolos TCP e UDP), por onde são passados as mensagens.

Como já mencionado, é na camada de Aplicação que se trata a compatibilidade entre os diversos formatos representados pelos variados tipos de estações da rede.

A comunicação entre as máquinas da rede é possibilitada através de primitivas de acesso das camadas UDP e TCP. Antes de iniciar o estabelecimento da conexão, são executadas as primitivas socket, que cria um ponto terminal de comunicação, e bind que registra o endereço da aplicação (número da porta). Para estabelecer a conexão (com o protocolo TCP), a aplicação servidora executa a primitiva listen enquanto que a cliente executa connect. A aplicação servidora usa o accept para receber e estabelecer a conexão. Já o UDP, como não é orientado à conexão, logo após o socket e o bind, utiliza as primitivas sendto e recvfrom.

Abaixo segue uma apresentação básica de vários tipos de aplicações que utilizam TCP/IP como protocolo de comunicação.

7.1 – TELNET (Terminal Virtual):

É um protocolo que permite a operação em um sistema remoto através de uma sessão de terminal. Com isso, a aplicação servidora recebe as teclas acionadas no terminal remoto como se fosse local. Utiliza a porta 23 do TCP.

O TELNET oferece três serviços: Definição de um terminal virtual de rede, Negociação de opções (modo de operação, eco, etc.) e transferência de dados.

Atualmente o TELNET vem perdendo força porque as informações trafegam sem nenhum tipo de proteção pela rede. Desta forma, qualquer pessoas que tenha acesso à qualquer dispositivo por onde os pacotes da comunicação trafeguem, terá acesso à todos os dados enviados (login, senha, comandos, …). Vem gradativamente sendo substituído pelo SSH.

7.2 – SSH (Secure Shell):

O SSH pode ser considerado um TELNET com criptografia na transmissão. Assim como o TELNET, o SSH fornece três tipos de serviços: Definição de um terminal virtual de rede, Negociação de opções (modo de operação, eco, etc.) e transferência de dados. Utiliza a porta 22 do TCP.

Tendo em vista que as informações trafegam em um canal criptografado, em que a máquina cliente recebe uma chave específica para cada servidor, o volume de dados a ser enviado é maior, porém, tendo em vista a velocidade das conexões existentes hoje em dia, é um bom preço a se pagar pela segurança.

7.3 – FTP (File Transfer Protocol):

Provê serviços de transferência, renomeação e eliminação de arquivos, além da criação, modificação e exclusão de diretórios. Para sua operação, são mantidas duas conexões: uma de dados e outra de controle. Não implementa segurança, o que deixa para o TCP, exceto as requisições de senhas de acesso a determinados arquivos (ou servidores FTP).

As transferências de arquivos podem ser no modo TEXTO, onde há conversões de codificação para o sistema destinatário, e o modo BINÁRIO, onde não há nenhuma conversão e todos os bytes são transferidos como estão.

7.4 – HTTP (HyperText Transfer Protocol):

O HTTP é um protocolo relativamente novo e atualmente muito difundido. Ele permite que diferentes tipos de dados trafeguem em um único canal. Desta forma pode-se enviar figuras, texto e sons em uma mesma requisição do sistema. O sistema foi desenvolvido no início da década de 90 por Tim Berners-Lee, um pesquisador que queria interligar as informações de suas pesquisas com a de outros pesquisadores. Tem como principal característica a total independência quanto à instituições ou empresas. È atualmente mantido pelo grupo de desenvolvimento aberto w3.org. Utiliza a porta 80 do TCP.

7.5 – SMTP (Simple Mail Tansfer Protocol):

Implementa o sistema de correio eletrônico da internet, operando não orientado à conexão, provê serviços de envio e recepção de mensagens do usuário. Tais mensagens são armazenadas num servidor de correio eletrônico onde o usuário destinatário está cadastrado, até que este solicite-a, quando são apagadas da área de transferência do sistema originador.

O SMTP divide a mensagem em duas partes: corpo e cabeçalho que são separados por uma linha em branco. No cabeçalho existem uma seqüência de linhas que identificam o emissor, o destinatário, o assunto, e algumas outras informações opcionais. Utiliza a porta 25 do TCP.

7.6 – DNS (Domain Name System):

O DNS é um mecanismo para gerenciamento de domínios em forma de árvore. Tudo começa com a padronização da nomenclatura onde cada nó da arvore é separado no nome por pontos. No nível mais alto podemos ter: COM para organizações comerciais, EDU para instituições educacionais, GOV para instituições governamentais, MIL para grupos militares, ORG para outras organizações.

O DSN possui um algoritmo confiável e eficiente para tradução de mapeamento de nomes e endereços.

7.7 – Outros Protocolos de Aplicação:

Além dos protocolos citados acima, existem diversos outros, que utilizam o TCP/IP das mais diferentes forma, entre eles podemos citar:

  • Pop3: Utiliza a porta 110, e é utilizado par receber as mensagens de correio eletrônico de um servidor;
  • IRC: Utiliza a porta 6667, e é utilizado para conversas on-line (Internet Relay Chat);
  • ICQ: Utiliza a porta 5198, e é utilizado pra troca de mensagens e arquivos em tempo real. Pertence à AOL.
  • Gopher: Utiliza a porta 70. Em extinção nos dias de hoje, é o precursor dos atuais navegadores e do próprio http. Era um Browser em modo texto.
  • Xfree86: Utilizado para exportar terminais gráficos em máquinas Unix para qualquer outro sistema operacional. Foi implementado já na década de 70 pelo MIT.

8 – Conclusão:

Apesar de todas as capacidades do TCP/IP, é incrível perceber o quanto ele pode fazer e ao mesmo tempo o quanto ele é simples. Esta simplicidade associada à poder que ele proporciona, além do status de protocolo desvinculado à uma instituição, permitiu que o TCP/IP chegasse ao ponto em que os mais diversos ramos de tecnologia estão procurando formas de se interligar ao protocolo. Desta forma, poderemos em breve ter em casa telefonia sobre TCP/IP (voz sobre ip), além de outros dispositivos totalmente independentes se comunicando e trocando informações para otimizar suas operações.

Todo este potencial ajuda na disciminação de idéia e desenvolvimento de novas utilizações, fugindo do conceito de que o TCP/IP foi feita pra ser utilizado na internet.

O modelo de protocolo aberto permite também que os desenvolvedores tenha a certeza que em nenhum momento alguma empresa tomará posse do protocolo, impedindo que determinados serviços sejam descontinuados em detrimento dos serviços de interesse de determinada empresa.

Tudo isso tornou o TCP/IP no padrão da indústria de comunicação mundial.

9 – Referências Bibliográficas:

  1. http://www.anti-hackers.com.br – Segurança das Informações – O Protocolo TCP/IP ; Site do projeto Anti-Hackers.
  2. COMER, Douglas E; Interligação em Redes com TCP/IP, Volume 1, Editora Campus, São Paulo, Sp, 2000.
  3. http://www.pop-rs.rnp.br/ovni/tcpip – TCP/IP; Site da RNP (Rede Nacional de Pesquisa) no Rio Grande do Sul.
  4. http://www.kde.org – KDE.org – Site do Projeto KDE, um ambiente desktop voltado à máquinas UNIX,
  5. http://www.freebsd.org – FreeBSD.org; Site do Projeto FreeBSD, que mantém o código do primeiro BSD Unix de Berkley.

Caso encontre algum erro, ou a falta de algumas referência, por favor entre em contato para podermos corrigir.