sexta-feira, 25 de maio de 2007

OS CONCEITOS INICIAIS DA INTERNET

A ARPANET original cresceu e se tornou a Internet. A Internet foi baseada na idéia de que haveria múltiplas redes independentes de desenho arbitrário, começando com a ARPANET como rede pioneira de trocas de pacotes mas logo incluindo redes de satélites, de rádio, etc. A Internet como conhecemos hoje incorpora uma idéia-chave: rede de arquitetura aberta. Nesta abordagem, a opção pela tecnologia de qualquer rede individual não é ditada por nenhuma arquitetura de rede particular e sim escolhida livremente pelo provedor, que a torna capaz de entrar em rede com outras redes pela "Arquitetura de Internetworking". Até aquele período, havia apenas um método para agregar redes: a tradicional troca de circuitos onde redes se interconectavam no nível do circuito, passando bits individuais em base síncrona por um circuito ponta a ponta entre duas localidades. Lembre que Kleinrock tinha mostrado em 1961 que troca de pacotes era um método mais eficiente. Condições específicas de interconexão entre redes era outra possibilidade. Enquanto havia outras formas limitadas de interconectar redes, todas requeriam que uma fosse componente da outra, ao invés de agirem como companheiras no oferecimento do serviço ponta a ponta. Numa rede de arquitetura aberta, as redes individuais podem ser separadamente desenhadas e desenvolvidas e cada uma pode ter sua interface própria que pode ser oferecida a usuários e outros provedores. Cada rede pode ser desenhada de acordo com o ambiente e os requerimentos dos seus usuários. Não há restrições em relação aos tipos de redes que podem ser incluídas numa área geográfica, apesar de algumas considerações pragmáticas ditarem o que é razoável oferecer.
A idéia de redes de arquitetura aberta foi primeiro introduzida por Kahn em 1972. Este trabalho foi parte de um programa de pacotes de rádio, mas depois se tornou um programa em separado. Naquele tempo, o programa foi chamado "Internetting". NCP não tinha a habilidade de endereçar redes e máquinas além da destinação IMP da ARPANET e portanto deveria ser mudado. NCP se amparava na ARPANET para prover confiabilidade de ponta a ponta. Se qualquer pacote fosse perdido, o protocolo e qualquer aplicação que ele suportasse iria simplesmente parar a transferência de dados. Nesse modelo, NCP não tinha controle de erro ponta a ponta, uma vez que pensava-se que a ARPANET seria a única rede em existência e ela seria tão confiável que nenhum controle de erro seria necessário por parte dos servidores. Então Kahn decidiu desenvolver uma nova versão do protocolo que iria satisfazer as necessidades de um ambiente de redes de arquitetura aberta. Este protocolo iria eventualmente ser chamado Transmission Control Protocol/Internet Protocol (TCP/IP). Enquanto NCP agia como um driver de equipamento, o novo protocolo seria mais um protocolo de comunicações.
Quatro regras foram críticas para a idéia de Kahn:
· cada rede distinta deveria ser independente e mudanças internas não deveriam ser requisitadas para conectá-las à Internet;
· comunicações seriam na base do melhor esforço. Se um pacote não chegasse à sua destinação final, ele seria retransmitido da fonte;
· caixas pretas seriam usadas para conectar as redes. Mais tarde elas seriam chamadas gateways e roteadores. Os gateways não reteriam informações sobre os fluxos de pacotes passantes. Isso assegurou que eles se mantivessem simples, evitando adaptações complicadas e recuperações de erros;
· não haveria controle global no nível operacional.
Outros itens avaliados foram os seguintes:
· algorítmos para prevenir perda de pacote de comunicações desabilitadas, capacitando-os a serem retransmitidos da fonte;
· provimento de "pipelining" de servidor a servidor, de forma que múltiplos pacotes poderiam ser roteados da fonte ao destino à vontade dos servidores participantes, se redes intermediárias o permitissem;
· funções de gateway (porta de entrada) para encaminhar os pacotes apropriadamente. Isso incluiria cabeçalhos de IP para roteamento, interfaces dirigidas, quebra de pacotes em pedaços menores (caso necessário), etc;
· a necessidade de checagens ponta a ponta, recuperação dos pacotes de fragmentos e detecção de duplicatas;
· a necessidade do endereçamento global;
· técnicas de controle de fluxo servidor a servidor;
· interfaces com vários sistemas operacionais;
· eficiência da implementação, performance entre as redes, etc.
Kahn começou a trabalhar na série orientada às comunicações dos princípios do sistema operacional enquanto na BBN, e documentou alguns dos seus pensamentos num memorando interno chamado "Princípios de Comunicações para Sistemas Operacionais". Neste ponto, ele percebeu que seria necessário aprender os detalhes de implementação de cada sistema operacional para ter a chance de embutir neles novos protocolos de uma forma eficiente. Assim, na primavera de 1973, depois de começar o projeto "internetting", Kahn chamou Vint Cerf (então trabalhando em Stanford) para trabalhar com ele no desenho detalhado do protocolo. Cerf tinha se envolvido intimamente com o desenho e desenvolvimento do NCP original e já tinha o conhecimento em interfacing com os sistemas operacionais existentes. A abordagem arquitetônica para a comunicação de Kahn e a experiência em NCP de Cerf possibilitaram a construção do que se tornou TCP/IP.
O trabalho de Kahn e Cerf foi altamente produtivo e a primeira versão escrita da teoria resultante foi distribuída numa reunião especial do International Network Working Group (INWG), que tinha sido definido numa conferência da Sussex University em setembro de 1973. Cerf tinha sido convidado para dirigir este grupo e usou a ocasião para realizar o encontro do INWG. Algumas teses básicas surgiram da colaboração entre Kahn e Cerf:
· comunicação entre dois processos deveria consistir logicamente de uma longa corrente de bytes (que eles chamaram de octets). A posição de qualquer octet na corrente seria usada para identificá-lo;
· o controle do fluxo seria feito usando janelas e corrediças e acks. O destino poderia selecionar quando seria efetuado o reconhecimento e cada ack retornado seria cumulativo para todos os pacotes recebidos;
· foi deixado em aberto como a fonte e o destino iriam concordar nos parâmetros das janelas a serem usadas. Padrões foram usados inicialmente;
· apesar de a Ethernet (sistema de redes que transporta sinais (bits) para todos os microcomputadores em rede) estar em desenvolvimento em Xerox PARC naquele tempo, a proliferação de LANs (redes locais) não era prevista, muito menos a proliferação de PCs (computadores pessoais) e estações de trabalho. O modelo original foi redes nacionais como a ARPANET, que se pensava não iriam existir muitas como ela. Então um IP de 32 bits foi usado, dos quais os primeiros 8 bits indicavam a rede e os restantes 24 bits designavam o servidor na rede. Esta hipótese de que 256 redes seriam suficientes para o futuro próximo passou necessariamente a ser reconsiderada quando LANs começaram a aparecer no final da década de 1970.
O trabalho original de Cerf e Kahn sobre a Internet descreveu um protocolo chamado TCP, que provia todo o transporte e serviços de encaminhamento na Internet. Kahn queria que o protocolo suportasse uma série de serviços de transporte, desde a entrega sequenciada de dados totalmente confiável (modelo de circuito virtual) até o serviço de datagram, onde a aplicação fazia uso direto do serviço básico de rede, o que poderia implicar em pacotes ocasionalmente perdidos, corrompidos ou reordenados. Entretanto, o esforço inicial para implementar TCP resultou numa versão que somente permitiu circuitos virtuais. O modelo funcionou bem para transferência de arquivos e aplicações de logins remotos, mas alguns dos trabalhos em aplicações avançadas como pacotes de voz mostraram que, em alguns casos, a perda de pacotes deveria ser corrigida pela aplicação e não pelo protocolo TCP. Isso levou a uma reorganização do TCP original em dois protocolos: o simples IP que provia apenas o endereçamento e o roteamento dos pacotes individuais e o TCP em separado, que se preocupava com o controle do fluxo e a recuperação de pacotes perdidos. Para as aplicações que não queriam os serviços de TCP, uma alternativa chamada User Datagram Protocol (UDP) foi adicionada para prover acesso direto ao serviço básico de IP.
Uma grande motivação inicial para a ARPANET e para a Internet foi o compartilhamento de recursos. A conexão das duas redes foi muito mais econômica do que a duplicação de caros computadores. Entretanto, enquanto a transferência de arquivos e o login remoto (Telnet) foram aplicações muito importantes, o correio eletrônico teve o impacto mais significativo das inovações daquela época. O correio eletrônico ou e-mail criou um novo modelo no qual as pessoas poderiam se comunicar e mudou a natureza da colaboração, primeiro na construção da própria Internet e mais tarde na sua utilização por grande parte da sociedade.
Outras aplicações foram propostas nos dias iniciais da Internet, incluindo comunicação de voz (precursora da telefonia via Internet), vários modelos de compartilhamento de arquivos e discos, e os primeiros programas que mostraram o conceito de agentes (e vírus..). Um conceito-chave da Internet é que ela não é desenhada para apenas uma aplicação, mas é uma infra-estrutura genérica na qual novas aplicações podem ser concebidas, como aconteceu com a World Wide Web. Foi e é a natureza do serviço provido pelos protocolos TCP e IP que tornam isso possível.

Nenhum comentário: