Aula 1 Comunicação de Dados Professor Leandro Redes de Computadores e a Internet James F. Kurose e Keith W. Ross - PDF
Download "Aula 1 Comunicação de Dados Professor Leandro Redes de Computadores e a Internet James F. Kurose e Keith W. Ross"
Amadeu Canto Arantes
1 1 Aula 1 Comunicação de Dados Professor Leandro Redes de Computadores e a Internet James F. Kurose e Keith W. Ross Rede Mundial de Computadores (Internet) componentes básicos de hardware e software que a formam. infra-estrutura de rede que prove serviços para aplicações distribuídas. Internet pública é uma rede de computadores mundial, isto é, uma rede que interconecta milhões equipamentos de computação em todo o mundo. Sistemas finais são interligados indiretamente por equipamentos intermediários de comutação conhecidos como comutadores de pacotes. Um comutador de pacotes encaminha a informação que está chegando em um de seus enlaces de comunicação de entrada para um de seus enlaces de comunicação de saída. No jargão das redes de computadores, o bloco de informação é denominado pacote. Há comutadores de pacotes de todos os tipos e formas, mas os dois mais proeminentes na Internet de hoje são roteadores e comutadores de camada de enlace (switches). Esses dois tipos de comutadores encaminham pacotes a seus destinos finais. A seqüência de enlaces de comunicação e comutadores de pacotes que um pacote percorre desde o sistema final remetente até o sistema final receptor é conhecida como rota ou caminho através da rede. Em vez de prover um caminho dedicado entre sistemas finais comunicantes, a Internet usa uma técnica conhecida como comutação de pacotes, que permite que vários sistemas finais comunicantes compartilhem ao mesmo tempo um caminho ou partes dele. Sistemas finais acessam a Internet por meio de Provedores de Serviços de Internet (Internet Service iders ISPs), entre eles ISFs residenciais como AOL ou sua empresa local de telefonia ou cabo: ISPs rativos, ISPs de universidades e lsps como o T-Mobile, que provê acesso sem fio em aeroportos. Hotéis, outros locais públicos. Cada ISP é uma rede de comutadores de pacotes e enlaces de comunicação.
2 2 Os sistemas finais, os comutadores de pacotes e outras peças da Internet executam protocolos que controlam o envio e o recebimento de informações dentro da Internet. O TCP (Transmission Control Protocol Protocolo de Controle de Transmissão) e o IP (Internet Protocol Protocolo da Internet) são dois dos protocolos mais importantes da Internet. O protocolo IP especifica o formato dos pacotes que são enviados e recebidos entre roteadores e sistemas Finais. Os principais protocolos da Internet são conhecidos coletiva-mente como TCP/IP. Dada a importância de protocolos para a Internet, é adequado que todos concordem sobre o que cada um dos protocolos faz. Foram definidos protocolos Padrões da Internet são pela IETF (Internet Engineering Task Force Força de Trabalho de Engenharia de Internet) [IETF, 2004]. Os documentos padronizados da IETF são denominados RFCs (request for comments pedido de comentários). Os RFCs começaram como solicitações gerais de comentários para resolver problemas de arquitetura que a precursora da Internet enfrentava. Os RFCs tendem a ser bastante técnicos e detalhados. Definem protocolos como TCP, IP, HTTP (para a Web) e SMTP (Protocolo Simples de Transferência de Correio Simple Mail Transfer Protocol) (para padronizado). A letf E também padronizou quais protocolos devem ser executados por um hospedeiro da Internet [RFC 112: RFC 1123] e por um roteador da Internet [RFC 1812]. Existem mais de RFCs. Outros organismos também especificam padrões para componentes de rede, mais notavelmente para enlaces de rede. O IEEE 802 LAN/MAN Standards Comnmittee [IEEE, 802, 2004], por exemplo, especifica os padrões da Ethernet e Wi-Fi sem fio. Redes privadas são freqüentemente denominadas intranets, pois usam o mesmo tipo de hospedeiros, roteadores, enlaces e protocolos da Internet pública. Serviços Aplicações distribuídas que executam em seus sistemas finais troquem dados entre si. Entre essas aplicações estão a navegação na Web, mensagem instantânea, áudio e vídeo em tempo real, telefonia pela Internet, jogos distribuídos, compartilhamento de arquivos peer-to-peer (P2P), login remoto, correio eletrônico e mais, muito mais. Vale enfatizar que a Web não é uma rede isolada, mas apenas uma das muitas aplicações distribuídas que utilizam os serviços de comunicação providos pela Internet. Internet prove dois serviços a suas aplicações distribuídas: um serviço confiável orientado para conexão e um serviço não confiável não orientado para conexão. De maneira geral,
3 3 o serviço confiável orientado para conexão garante que os dados transmitidos de uma origem a um destino sejam finalmente entregues ao destinatário em ordem e completos. O serviço não confiável não orientado para conexão não oferece nenhuma garantia quanto à entrega final. Comumente, uma aplicação distribuída usa um ou outro desses dois serviços (mas não ambos). A segunda descrição da Internet isto é, em ternos dos serviços que ela prove a aplicações distintas é muito importante. Cada vez mais, os avanços na tecnologia dos componentes da Internet sendo guiados pelas necessidades de novas aplicações. Portanto, é importante ter sempre eminente a Internet é uma infra-estrutura na qual novas aplicações estão constantemente sendo inventadas e disponibilizadas. Protocolos Provavelmente é mais fácil entender a idéia de um protocolo de rede de computadores considerando primeiramente algumas analogias humanas, já que executamos protocolos o tempo todo. Considere o que faz quando quer perguntar as horas a alguém. Um diálogo comum é ilustrado na Figura.
4 4 O protocolo humano (ou as boas maneiras, ao menos) ordena que, ao iniciarmos uma comunicação com outra pessoa. primeiramente a cumprimentemos (o primeiro oi ). A resposta comum para um oi é um outro oi. Implicitamente, odotamos a resposta cordial oi como uma indicação de que podemos prosseguir e perguntar as horas. Uma resposta diferente ao oi inicial (tal como Não me perturbe!, I don t speak Portuguese! ou alguma resposta impublicável) poderia indicar falta de vontade ou incapacidade de comunicação. Nesse caso, o protocolo humano seria não perguntar que horas são. Às vezes, não recebemos nenhuma resposta para uma pergunta, caso em que normalmente desistimos de perguntar as horas à pessoa. Note que, no nosso protocolo humano, há mensagens especificas que enviamos e acões específicas que realizamos em reação às respostas recebidas ou a outros eventos (como menhuma resposta após certo tempo). É claro que mensagens transmitidas e recebidas e ações realizadas quando essas mensagens são enviadas ou recebidas ou quando ocorrem outros eventos desempenham um papel central em um protocolo humano. Se as pessoas executarem protocolos diferentes (por exemplo, se uma pessoa tem boas maneiras, mas a outra não; se uma delas entende o conceito de horas, mas a outra não), os protocolos não interagem e nenhum trabalho útil pode ser realizado. O mesmo é válido para redes é preciso que duas (ou mais) entidades comunicantes executem o mesmo protocolo para que uma tarefa seja realizada. Vamos considerar uma segunda analogia humana. Suponha que você esteja assistindo a uma aula (sobre redes de computadores, por exemplo). O professor está falando monotonamente sobre protocolos e você está confuso. Ele para e pergunta: Alguma dúvida? (uma mensagem que é transmitida a todos os alunos e recebida por todos os que não estão dormindo). Você levanta a mão (transmitido uma mensagem implícita ao professor). O professor percebe e, com um sorriso, diz Sim... (uma mensagem transmitida, incentivando-o a fazer sua pergunta professores adoram perguntas) e você então faz sua pergunta (isto é, transmite sua mensagem ao professor). O professor ouve (recebe sua mensagem) e responde (transmite uma resposta a você). Mais uma vez, percebemos que a transmissão e a recepção de mensagens é um conjunto de ações convencionais, realizadas quando as mensagens são enviadas e recebidas, são o coração desse protocolo de pergunta e resposta. Protocolos de rede Um protocolo de rede é semelhante a um protocolo humano; a única diferença é que as
5 5 entidades que trocam mensagens e realizam ações são componentes de hardware ou software de algum equipamento (por exemplo, computador, roteador ou outro equipamento habilitado para rede). Todas as atividades na Internet que envolvem duas ou mais entidades remotas comunicantes são governadas por um protocolo. Por exemplo, protocolos implementados em hardware nas placas de interface de rede de dois computadores conectados fisicamente controlam o fluxo de bits no cabo entre as duas placas de interface de rede; protocolos de controle de congestionamento em sistemas finais controlam a taxa com que os pacotes são transmitidos entre a origem e o destino; protocolos em roteadores determinam o caminho de um pacote da fonte ao destino. Como exemplo de um protocolo de rede de computadores com o qual você provavelmente está familiarizado, considere o que acontece quando fazemos uma requisição a um servidor Web, isto é, quando digitamos o URL de uma página Web no browser. Isso é mostrado no lado direito da Figura. Primeiramente, o computador enviará uma mensagem de requisição de conexão ao servidor Web e aguardará uma resposta. O servidor receberá essa mensagem de requisição de conexão e retornará uma mensagem de resposta de conexão. Sabendo que agora está tudo certo para requisitar o documento da Web, o computador envia então nome da página Web que quer buscar naquele servidor com uma mensagem GET. Por fim, o servidor retorna a página da Web (arquivo) para o computador. Dados o exemplo humano e o exemplo de rede anteriores, as trocas de mensagens e as ações realizadas Essas mensagens são enviadas e recebidas são os elementos fundamentais para a definição de um protocolo: Um protocolo define formato e a ordem das mensagens trocadas entre duas ou mais entidades comunicantes, bem como as ações realizadas na transmissão e/ou no recebimento de uma mensagem ou outro evento. A Internet e as redes de computadores em geral fazem uso intenso de protocolos. Diferentes tipos de protocolos são usados para realizar diferentes tarefas de comunicação. Sistemas finais, clientes e servidores O jargão de redes de computadores, os computadores conectados à Internet são usualmente denominados sistemas finais, porque estão na periferia da Internet.
6 6 Entre os sistemas finais da Internet estão computadores de mesa (por exemplo, PCs de mesa, Macs, estações de trabalho UNIX), servidores (por exemplo, servidores Web e de ) e computadores móveis (por exemplo, computadores portáteis, PDAs e telefones com conexões sem fio à Internet). Além do mais, um número cada vez maior de equipamentos alternativos como terminais clientes e eletroeletrônicos [Thinplanet. 2002], Web TVs e transceptores [Nesbitt], câmeras digitais, eletrodomésticos, equipamentos de piso de fábrica e sensores ambientais estão sendo ligados à Internet como sistemas finais. Sistemas finais também são denominados hospedeiros (hosts) porque hospedam (isto é, executam) programas de aplicação, tais como um programa de browser da Web, um programa de servidor da Web, um programa leitor de ou um servidor de . No contexto de software de rede há ainda uma outra definição de cliente e de servidor.. Um programa cliente é um programa que funciona em um sistema final, que solicita e recebe um serviço de um programa servidor, que funciona em um outro sistema final. Este forma de comunicação é mais predominante para aplicações da Internet. A Web, o , a transferência de arquivo, o login remoto (por exemplo, Telnet), os grupos de discussão e muitas outras aplicações populares adotam o modelo cliente servidor. Uma vez que um programa cliente normalmente roda em um computador e o programa servidor, em outro, aplicações cliente servidor de Internet são, por definição, aplicações distribuídas. O programa cliente e o programa servidor interagem enviando mensagens um para o outro pela Internet. Nesse nível de abstração, os roteadores. enlaces e outros componentes da Internet funcionam como uma caixa-preta que transfere mensagens entre os componentes distribuídos, comunicantes, de uma aplicação da Internet. Nem todas as aplicações da lnmernet de hoje consistem em programas puramente clientes que interagem com programas puramente servidores. Por exemplo, em aplicações P2P* de compartilhamento de arquivos populares, como o KaZaA, a aplicação P2P no sistema final do usuário funciona como um programa cliente e também como um programa servidor. O programa que executa em um par (peer) (isto é, na máquina de um usuário) funciona como um cliente quando requisita um arquivo de outro par, e o programa funciona como um servidor quando envia um arquivo pata outro par. Na telefonia por Internet, as duas partes comunicantes interagem como pares; uma parte não requisita serviço da outra em nenhum sentido. Serviço não orientado para conexão e serviço orientado poro conexão
7 7 Sistemas finais usam a Internet para se comunicar entre si. Especificamente, programas de sistemas finais usam os serviços da Internet para enviar mensagens uns aos outros. Os enlaces, roteadores e outros componentes da Internet provem os meios para transportar essas mensagens entre os programas de sistemas finais. Mas quais são as características dos serviços de comunicação que a Internet prove a seus sistemas finais? Redes TCP/IP e, em particular, a Internet, oferecem dois tipos de serviços às aplicações de sistemas finais: serviços não orientados para conexão e serviços orientados para conexão. Um profissional de desenvolvimento que está criando uma aplicação de Internet (por exemplo, uma aplicação de , de transferência de arquivo, de Web ou de telefonia pela Internet) deve programá-la para usar um desses dois serviços. Serviço orientado para conexão Quando uma aplicação usa o serviço orientado para conexão, o programa cliente e o programa servidor (que residem em sistemas finais diferentes) enviam pacotes de controle um para o outro antes de remeter pacotes com os dados reais que deverão ser transferidos. Esse procedimento, denominado apresentação, alerta o cliente e o servidor, permitindo que se preparem para uma rajada de pacotes. Uma vez concluído o procedimento de apresentação, diz-se que foi estabelecida uma conexão entre os dois sistemas finais. É interessante notar que esse procedimento inicial de apresentação se assemelha ao protocolo usado na interação entre seres humanos. A troca de ois que vimos é um exemplo de protocolo humano de apresentação (mesmo que as duas pessoas não estejam literalmente trocando um aperto de mãos). No caso da interação pela Web também as duas primeiras mensagens trocadas também são mensagens de apresentação. As duas mensagens subseqüentes a mensagem GET e a mensagem de resposta contendo o arquivo incluem dados reais e são enviadas somente após a conexão ter sido estabelecida. Por que se utiliza a terminologia serviço orientado para conexão e não simplesmente serviço de conexão? Essa terminologia deve-se ao fato de que sistemas finais são conectados de maneira muito livre. Em particular, somente os próprios sistemas finais estão cientes dessa conexão; os comutadores de pacotes dentro da Internet ficam completamente alheios a ela. Na verdade, uma conexão na Internet nada mais é do que buffets alocados e variáveis de estado nos sistemas finais: os comutadores de pacotes intervenientes não mantêm nenhuma informação de estado de conexão.
8 8 Os serviços orientados para conexão providos pela Internet vêm conjugados com diversos outros serviços, inclusive transferência de dados confiável, controle de fluxo e controle de congestionamento. A expressão transferência de dados confiável quer dizer que uma aplicação pode confiar que a conexão entregará todos os seus dados sem erro e na ordem certa. A confiabilidade na Internet é conseguida por meio da utilização de confirmações e retransmissões. Para ter uma idéia preliminar de como a Internet implementa o serviço de transporte confiável, considere uma aplicação que tenha estabelecido uma conexão entre os sistemas finais A e B. Quando o sistema final B recebe um pacote de A. envia uma confirmação; quando o sistema final A recebe a confirmação, sabe que o pacote correspondente foi definitivamente recebido. Quando o sistema final A não recebe uma confirmação, presume que o pacote enviado não foi recebido por B e, por conseguinte, o retransmite. O controle de fluxo garante que nenhum dos lados de uma conexão sobrecarregue o outro enviando demasiados pacotes muito rapidamente. Enfatizamos neste texto que, embora o serviço orientado para conexão da Internet venha conjugado com serviços de transferência de dados confiável, controle de fluxo e controle de congestionamento, essas três características não são, de modo algum, componentes essenciais de um serviço orientado para conexão. Um tipo diferente de rede de computadores pode prover um serviço orientado para conexão às suas aplicações sem conjugá-lo com uma ou mais dessas características. Na verdade, qualquer protocolo que execute apresentação entre as entidades comunicantes antes de transferir dados é um serviço orientado para conexão [iren, 1999]. O serviço orientado para conexão da Internet tem um nome Protocolo de Controle de Transmissão (Transmission Control Protocol TCP). A versão inicial do protocolo TCP é definida no RFC 793 da Internet [RFC 793]. Entre os serviços que o TCP provê a uma aplicação estão transporte confiável, controle de fluxo e controle de congestionamento. O protocolo provê uma abstração de corrente de bytes, entregando de modo confiável uma corrente de bytes do remetente ao receptor. É importante notar que uma aplicação precisa se preocupar somente com os serviços fornecidos; não precisa se preocupar com o modo como o TCP implementa confiabilidade, controle de fluxo ou controle de congestionamento. Serviço não orientado para conexão Não há apresentação mútua no serviço não orientado para conexão da Internet. Quando
9 9 um lado de uma aplicação quer enviar pacotes ao outro lado, o programa remetente simplesmente os envia. Como não há procedimento de apresentação mútua antes da transmissão de pacotes de dados, os dados podem ser entregues mais rápido, o que torna o serviço não orientado para conexão ideal para aplicações simples orientadas para transação. Mas, como também não há nenhuma transferência confiável de dados, uma fonte nunca sabe com certeza quais pacotes chegaram ao destino Além disso, o serviço não orientado para conexão da Internet não provê controle de fluxo, nem controle de congestionamento. O serviço de Internet não orientado para conexão é denominado Protocolo de Datagrama do Usuário (User Datagram Protocol UDP), cuja definição pode ser encontrada no RFC 768. A maioria das aplicações mais conhecidas da Internet usa TCP, o serviço orientado para conexão da Internet. Entre essas aplicações estão: Telnet (para login remoto), SMTP (para correto eletrônico), FTP (pata transferência de arquivos) e HTTP (para a Web). Não obstante, UDP, o serviço não orientado para conexão da Internet, é usado por inúmeras aplicações de multimídia que estão surgido, como telefone por Internet e videoconferência.