REDES DE COMPUTADORES REDES DE COMPUTADORES I Introdução Professor: M.Sc. Carlos Oberdan Rolim Introdução • Século 18: grandes sistemas mecânicos acompanhando a revolução industrial • Século 19: a era da máquina à vapor; • Século 20: coleta, processamento e distribuição da informação: • Redes telefônicas de alcance mundial; • Invenção do rádio e da televisão; • Nascimento e crescimento sem precedentes da indústria dos computadores; • Lançamento de satélites de comunicação. Introdução • Nos primeiros 20 anos da existência da indústria dos computadores, os sistemas computacionais: – Eram altamente centralizados (Centro de Processamento de Dados) - CPD; – Custavam pequenas (às vezes grandes) fortunas; – Realizavam processamento de dados off-line. Introdução • Nos últimos anos união de computadores e comunicações, mudou profundamente a organização dos sistemas computacionais: – O CPD antigo, cedeu lugar à um novo modelo, com os computadores separados fisicamente, mas interconectados através de sistemas de comunicação – Esses sistemas são chamados Redes de Computadores. Comunicação de dados • Comunicação de dados começou com a invenção do telégrafo por Samuel F. Morse em 1838. – 40 milhas de linha para telégrafo em 1844 – realizou-se a transmissão de 15bits/s em 1860 • Dados de radar, codificados em binário, foram transmitidos via facilidades de telégrafo para computadores na década de 1940 Comunicação de dados • Final de 1950 Explosão de uso de computadores remotos – Primeiros terminais interativos (1960) • Sistemas Time Sharing (tempo compartilhado) – Computadores para “batch processing” Comunicação de dados • Entre 1969 e 1970 projeto ARPANET da ARPA (Advanced Research Projects Agency) – Primeira rede de grande porte – Quatro universidades americanas – 1972 primeira demonstração pública – 1973 primeira conexão internacional (Londres) Comunicação de dados • 1979 ARPA cria o ICCB (Internet Control and Configuration Board) que reunia pesquisadores envolvidos no desenvolvimento do TCP/IP • 1980 ARPA adota o TCP/IP e passa a ser o “backbone” da Internet • DARPA incentivou integração de uma implementação de protocolos baixo custo ao UNIX disponível na University of California: Berkeley Software Distribution, também chamado Berkeley UNIX ou BSD UNIX. – Conceito de socket abstração de software Comunicação de dados • 1986 NSF (National Science Foundation) financiou a conexão de várias rede à Internet • 1985 inviabilidade de gerenciamento dos nomes do computadores conectados na Internet – Desenvolvimento do DNS • • • • 1986 20.000 computadores ligados a Internet; 1987 taxa de crescimento de 15% ao mês; 1990 200.000 computadores; 1994 3.000.000 de computadores conectados à Internet em 61 países. Comunicação de dados • 1988 no Brasil surgem redes ligando universidades e centros de pesquisa do Rio de Janeiro, São Paulo e Porto Alegre a instituições nos Estados Unidos • 1988 AlterNex:o primeiro serviço brasileiro de Internet não-acadêmica e nãogovernamental – Aberto ao público em 1992 • 1995 CGI.BR e liberação para uso comercial Uso das redes nas organizações • Compartilhamento de recurso, programas, equipamentos e dados disponíveis para todos na rede, independente da localização física de recursos e usuários; • Alta disponibilidade de recursos, arquivos importantes e/ou muito usados, podem ser replicados em dois ou mais computadores; • Economia de dinheiro, dado que computadores de menor porte apresentam uma relação custo/benefício melhor que computadores de grande porte; Uso das redes nas organizações • Escalabilidade, pode-se aumentar a performance do sistema gradualmente, de acordo com o crescimento da demanda, acrescentando novos computadores (mais poderosos) à rede; • Comunicação, ou a capacidade de permitir que pessoas separadas fisicamente possam compartilhar informações de modo rápido e fácil (escrever um livro conjuntamente, por exemplo) - esse, talvez, seja o fruto mais importante da tecnologia de redes de computadores Redes para pessoas • Acesso à informação remota, nas mais diversas formas (bancos, lojas virtuais, jornais, sistemas de informação, etc.) • Comunicação pessoa-a-pessoa, na forma de correio eletrônico, reunião virtual (videoconferência), redes sociais, etc. • Entretenimento interativo, na forma de jogos via rede, vídeo/áudio sob demanda, etc. Todas as considerações já feitas revelam um mundo virtual ideal, cheio de recursos e possibilidades. O mundo real força-nos a encarar alguns problemas que estão em discussão no momento. Considerações sociais • A introdução em larga escala das redes de computadores trouxe novos problemas sociais, éticos e políticos. • Algumas questões não respondidas totalmente ainda... Considerações sociais • Até que ponto a liberdade de opinião e expressão pode (deve) ser respeitada? • Operadores/gerentes de redes de computadores são responsáveis pelas informações que nelas circulam? • Um proprietário de um provedor de acesso Internet deve responder judicialmente por informações consideradas ilegais armazenadas em seus computadores? Considerações sociais • Empregadores devem (podem) ter o direito de censurar as mensagens enviadas/recebidas por seus empregados na rede da empresa? – O que dizer de estudantes nas escolas? • Dados pessoais / difamação em redes pessoais e serviços de streamming • Como tratar problemas de segurança nas redes? – Privacidade das informações Inicio dos trabalhos.... Classificação de redes • Embora não haja uma classificação aceita genericamente, duas dimensões aparecem como as mais importantes: – Tecnologia de transmissão – Escala Tecnologia de transmissão • Em relação à tecnologia de transmissão, de modo geral trabalha-se com dois tipos: – Redes de difusão (Broadcast networks); e – Redes ponto-a-ponto (Point-to-point Networks). Redes de difusão • Redes de difusão apresentam as seguintes características: – Canal único de comunicação, compartilhado por todas as máquinas da rede; – Tráfego de pequenas mensagens, chamadas às vezes de pacotes, enviadas por uma máquina e recebidas por todas; – Pacotes com campo de endereço que especifica para que máquina o mesmo deve ser entregue (unicasting); Redes de difusão • Um pacote recebido por uma máquina tem seu campo de endereço verificado: se pertence à máquina que o recebeu, ele é processado pela mesma; em caso contrário, é descartado; • Um pacote pode ser endereçado a todas as máquinas da rede ao mesmo tempo, usando um valor especial no campo de endereço; Esse modo de operação é chamado de modo de difusão (broadcasting). • Um pacote pode ser endereçado a algumas máquinas da rede ao mesmo tempo, usando outro valor especial no campo de endereço. Esse modo de operação é chamado de multi-difusão (multicasting). Redes ponto-a-ponto • Redes ponto-a-ponto apresentam as seguintes características: – Canal exclusivo de comunicação para interligação de quaisquer duas máquinas na rede; – Tráfego de pacotes enviados por uma máquina origem para uma única máquina destino; – Para ir de uma origem para um destino um pacote pode ter de passar por uma ou mais máquinas intermediárias; – Múltiplas rotas, de diferentes custos (tamanho, velocidade, atraso), podem existir entre uma origem e um destino, de modo que algoritmos de roteamento (escolha da melhor rota) desempenham um papel relevante nessas redes. Escala • De modo geral (com a admissão de exceções): – redes pequenas, localizadas em uma mesma região geográfica, tendem a usar transmissão por difusão; – redes grandes e geograficamente espalhadas usam transmissão ponto-a-ponto. • Em relação à escala, uma classificação bastante adotada para as redes é dada a seguir. *Máquinas de fluxo de dados são computadores com alta capacidade de paralelismo que possuem muitas unidades funcionais capazes de operar simultaneamente em um mesmo programa. ** Multicomputadores são sistemas que podem se comunicar enviando/recebendo mensagens sobre barramentos muito curtos e rápidos REDES LOCAIS DE COMPUTADORES (LOCAL AREA NETWORK – LAN) • Redes Locais de Computadores apresentam as seguintes características: – São redes privadas, localizadas em um único prédio ou campus de poucos quilômetros de tamanho; – São extensamente usadas para conectar computadores pessoais e estações de trabalho nas empresas para compartilhar recursos e trocar informações; • Se distinguem dos outros tipos de rede por três características: – Seu tamanho restrito; – Sua tecnologia de transmissão; e – Sua topologia. • O tamanho restrito permite: – Conhecer o pior tempo de transmissão com antecedência; – Com base nesse conhecimento, usar certos tipos de projeto que não seriam possíveis em caso contrário; – Com base nesse conhecimento, simplificar a gerência da rede. • A tecnologia de transmissão se caracteriza, normalmente, por: – Um canal de comunicação simples ao qual são conectadas todas as máquinas; – Velocidade de transmissão da ordem de 100, 1.000 Mbps (Gigabit Ethernet) ou 10.000 Mbps (10 GigE) com baixo atraso (dezenas de microsegundos) e poucos erros; – Avanços recentes permitem velocidades ainda maiores com baixo investimento. • As topologias mais utilizadas são: – Barramento, onde, em um dado instante, uma máquina tem e permissão de transmitir e todas as outras não podem transmitir • Com mecanismo de arbitragem usado para resolver conflitos quando duas ou mais máquinas quiserem transmitir ao mesmo tempo; • Esse mecanismo pode ser centralizado ou distribuído; IEEE 802.3, mais conhecido como Ethernet, é uma rede de difusão baseada em barramento bastante conhecida. – Anel, que apresenta um mecanismo de transmissão semelhante ao usado no barramento; • IEEE 802.5, mais conhecido como IBM token ring, é uma rede de difusão baseada em anel bastante conhecida. – Estrela interliga computadores através de switches ou qualquer outro concentrador/comutador. • É caracterizada por um elemento central que "gerencia" o fluxo de dados da rede, estando diretamente conectado (ponto-aponto) a cada nó, daí surgiu a designação "Estrela". – Hierarquica ou em árvore, possui uma série de barramentos interconectados. • Cada ramificação significa que o sinal deverá se propagar por dois caminhos diferentes. • Esta topologia é muito usada para supervisionar aplicações de tempo real, como algumas de automação industrial e automação bancária. – Quando uma operação exige acesso a informações que não estão disponíveis na agência, elas são buscadas no computador central. Se este não tiver acesso direto a estas informações, redicionará a busca para outro computador da rede que as detém. – Malha Todos os nós estão atados a todos os outros nós, como se estivessem entrelaçados. • Vários caminhos possíveis por onde a informação pode fluir da origem até o destino • O tempo de espera é reduzido e eventuais problemas não interrompem o funcionamento da rede • Um problema encontrado é em relação às interfaces de rede, já que para cada segmento de rede seria necessário instalar, em uma mesma estação, um número equivalente de placas de rede • Uma vez que cada estação envia sinais para todas as outras com frequência, a largura da banda de rede não é bem aproveitada. – Redes Hibridas ou Mistas União de mais de um tipo • Redes de difusão podem ser divididas em estáticas e dinâmicas (dependendo de como o canal de transmissão é utilizado): – Estáticas: dividem o tempo disponível do canal em intervalos discretos e usam um algoritmo de distribuição circular: • permitindo que cada máquina transmita somente quando recebe um intervalo de tempo; • desperdiçam capacidade do canal quando uma máquina não tem nada para transmitir durante o intervalo de tempo que lhe foi atribuído; – Dinâmicas: um mecanismo de arbitragem (centralizado ou distribuído) recebe requisições de utilização do canal e as atende ou não de acordo com a ocupação do canal. • REDES METROPOLITANAS (METROPOLITAN AREA NETWORK – MAN) – Basicamente são uma versão maior das Redes Locais, usando tecnologias semelhantes; – Suportam, em geral, dados e voz (telefonia), podendo estar associadas à rede de televisão via cabo; – Redes Wireless se enquadram em redes MAN MAN • REDES DE LONGA DISTÂNCIA (WIDE AREA NETWORK – WAN) – Espalham-se por uma área geográfica grande: p.ex. um país; – Máquinas são conectadas por uma subrede de comunicação, cujo trabalho é transportar mensagens de máquina a máquina, como um sistema telefônico; – Como separam os aspectos puros de comunicação (subrede) dos aspectos das aplicações (máquinas), seu projeto é mais simplificado. WAN • Na maioria das WANs, a subrede consiste de dois componentes distintos: – Linhas de transmissão, também chamados de circuitos, canais ou troncos, que transportam bits entre elementos da rede; – Elementos de comutação, computadores especializados, usados para conectar duas ou mais linhas de transmissão: • escolhendo sempre o melhor caminho para os dados percorrerem para chegar ao seu destino; • São chamados de vários nomes: – – – – Nós de comutação de pacotes; Sistemas intermediários; Comutadores de dados; Roteadores (termo preferido). • Em uma Rede de Longa Distância, a subrede de transmissão pode ser organizada como: – ponto-a-ponto; e – ponto-a-multiponto. • Na forma ponto-a-ponto, a transmissão de dados entre duas máquinas que não compartilham um canal de comunicação se dá pela utilização de máquinas intermediárias: – em um princípio de organização de subrede chamado de ponto-aponto (point-to-point) ou de armazena-e-segue (store-and-forward) ou comutação de pacote (packet-swithing). • Na forma ponto-a-ponto uma consideração importante de projeto é a topologia de conexão de roteadores. • Na forma ponto-a-multiponto, um sistema de satélites ou de rádio é usado como difusor dos dados Exemplo de Rede ponto-a-multiponto REDES SEM FIO • O crescimento do uso dos dispositivos vem proporcionando um interesse cada vez maior em redes sem fio (wireless networks). • Uma rede totalmente baseada em ondas eletromagnéticas • Problemas das redes sem fio: – Custo: ainda são mais caras que as redes convencionais; – Velocidade: tipicamente trabalham em velocidades inferiores a redes cabeadas; – Taxas de erro: freqüentemente maiores que nas redes convencionais, podendo ocorrer interferência entre computadores de diferentes redes. – Segurança: ?????; • Novo padrão se estabelecendo Ethernet 802.11 (a, b, ...., g), 802.16 (Wimax), 2G, 3G, 4G;... INTER-REDES • Muitas redes de computadores existem no mundo, frequentemente compostas por diferentes hardwares e softwares: – A interconexão dessas muitas redes se dá por máquinas chamadas de gateways: – À coleção dessas redes interconectadas dá-se o nome de interrede ou internet. • Uma forma comum de inter-rede é: – um conjunto de redes locais (LANs) conectadas através de uma rede de longa distância (WAN) e, – uma rede local conectada à uma rede de longa distância forma uma inter-rede, embora não haja consenso na literatura e na indústria sobre esse ponto. • Cabe aqui diferenciar internet e Internet (com I maiúsculo): – A primeira, como dito anteriormente, define um conjunto de redes interconectadas. – A segunda, da nome à maior de todas as inter-redes em funcionamento no mundo atualmente. SOFTWARE PARA REDES DE COMPUTADORES • As primeiras redes de computadores foram projetadas tendo: – Hardware como a preocupação principal; – Software como um coadjuvante; • Essa estratégia não funciona mais hoje em dia: – O software é considerado uma das partes mais importantes na concepção de novas tecnologias de redes de computadores; • Para reduzir a complexidade de projeto: – A maioria das redes são organizadas como uma série de camadas ou níveis, cada uma construída sobre a outra; – O número de camadas, o nome, o conteúdo e a função de cada camada varia de rede para rede, embora em todas as redes, o objetivo de cada camada seja oferecer para a camada superior certos serviços, liberando a camada superior de se preocupar com os detalhes de implementação desses serviços; – A camada N de uma máquina da rede desenvolve uma troca de dados com a camada N de outra máquina; – As regras e convenções que regem essa troca de dados são conhecidas como protocolos da camada N. • Basicamente, um protocolo é um acerto entre as partes que se comunicam sobre como a comunicação deve se desenvolver – Quem fala primeiro? – Como se identificar um para o outro? – Se um não entender uma dada mensagem, como proceder para pedir a repetição da mesma? – etc. • Um exemplo de uma rede em cinco níveis pode ser visto na figura abaixo. Camadas, protocolos e interfaces • Não há transferência de dados direta entre a camada 5 de uma máquina para a camada 5 de outra: – Cada camada passa dados para a camada imediatamente inferior, até a camada mais baixa ser atingida; – Junto da camada 1 está o meio físico de transmissão onde a comunicação realmente acontece; – Entre cada par de camadas adjacentes, existe uma interface que define que operações primitivas e que serviços a camada inferior oferece para a camada superior, e o que cada camada deve fazer para interagir com a outra. • Um conjunto de camadas e protocolos de comunicação entre camadas do mesmo nível define uma Arquitetura de Rede. Por exemplo, a Internet usa a arquitetura TCP/IP. • Uma lista de protocolos usados por um certo sistema define uma Pilha de Protocolos. Por exemplo, pode-se falar da pilha TCP/IP do sistema operacional Ubuntu Linux, da pilha TCP/IP do sistema operacional Solaris da SUN, da pilha TCP/IP do Windows, etc. • Considerando o exemplo da figura anterior, poderíamos definir a seguinte funcionalidade: – Uma mensagem M, produzida por uma aplicação na camada 5, é entregue à camada 4 para transmissão; – A camada 4 coloca um cabeçalho na frente da mensagem para identificá-la; o cabeçalho contém informações tais como um número de seqüência para permitir que a camada 4 da máquina destino entregue a mensagem na ordem correta, no caso das camadas inferiores não manterem a ordem das mesmas durante o encaminhamento; – A camada 3, como em muitas redes, impõe um limite para o tamanho das mensagens que transmite, precisando, em muitas ocasiões, quebrar os dados que recebe da camada 4 em unidades menores, chamadas às vezes de pacotes, acrescentando a eles um novo cabeçalho (da camada 3); – A camada 3 também decide que caminho físico usar (quando houver mais de um), e passa o pacote para a camada 2 que, por sua vez, acrescenta um novo cabeçalho e um terminador (trailer ou sufixo) ao pacote, enviando para a camada 1 para a transmissão. Exemplo de fluxo de informação na arquitetura de 5 camadas CONSIDERAÇÕES DE PROJETO PARA AS CAMADAS • Várias considerações dever ser feitas no projeto das camadas do software de redes. Algumas das mais importantes são: – Identificação de máquinas e/ou processos: uma rede congrega vários computadores, alguns dos quais têm múltiplos processos, logo é preciso existir um mecanismo de endereçamento de máquinas e processos entre os computadores de uma rede; – Formas de transmissão de dados: como os dados trafegam na rede quando se dá a comunicação entre duas máquinas? • Mão única (simplex): transmissão somente em um sentido no canal de transmissão; • Mão dupla alternada (half-duplex): transmissão em ambos os sentidos, um sentido de cada vez; • Mão dupla total (full-duplex): transmissão em ambos os sentidos, ao mesmo tempo. – Controle de erro: como os canais de comunicação não são totalmente confiáveis, é necessário algum tipo de controle de erros para garantir confiabilidade nas comunicações; – Seqüênciamento: dado que nem todo canal de transmissão preserva a ordem das mensagens, algum tipo de controle de sequenciamento deve existir para permitir ao receptor reordenar as mensagens antes de entregá-las ao programa aplicativo; – Controle de mutiplexação: como aglutinar pequenas mensagens em blocos maiores para melhor aproveitar a capacidade de um canal de comunicação? – Controle de encaminhamento de dados: que caminho uma mensagem deve seguir quando existe mais de um disponível para se atingir um mesmo destino? Algoritmos de tomada de decisão (roteamento) devem ser usados para esse fim. – Controle de fluxo: como informar a um emissor rápido que um receptor lento não comporta mais mensagens? – Controle de fragmentação: como transmitir mensagens longas sobre canais de comunicação com limitações no tamanho dos blocos de dados que eles podem transmitir? INTERFACES E SERVIÇOS • Considerando que a função de cada camada é prover serviços para a camada superior, vamos definir alguns termos: – Entidades (Entities): elementos ativos em cada camada. Um elemento ativo pode ser software (p.ex. um processo) ou hardware (p.ex. um processador de entrada e saída); – Entidades pares ou parceiras (Peer Entities): entidades na mesma camada de máquinas diferentes; – Provedor de serviço (Service Provider): camada N que fornece serviços para a camada N+1; – Usuário de serviço (Service User): camada N+1 que usa serviços da camada N; – Ponto de acesso à serviço (Service Access Point - SAP): local (forma) de acesso à um serviço em uma camada; Por exemplo, os pontos de acesso a serviço da camada N, são aqueles disponibilizados para a camada N + 1 para usos dos serviços oferecidos pela camada N (possivelmente subrotinas e funções com parâmetros bem definidos); – Unidade de Dados de Interface (Interface Data Unit - IDU): bloco de dados passados da camada N+1 para a camada N; É composta de: • Informação de Controle de Interface (Interface Control Information ICI): que ajuda a camada N no desempenho de suas tarefas (p.ex. número de bytes do SDU); • Unidade de Dados de Serviço (Service Data Unit - SDU): dados a serem transmitidos para a entidade par (na máquina destino); – Unidade de Dados de Protocolo (Protocol Data Unit - PDU): Caso necessário, a camada N fragmenta a SDU recebida da camada N+1, enviando para a camada N-1 n PDUs precedidas de um cabeçalho que informa à entidade par na máquina destino como recompor a SDU original. SERVIÇO ORIENTADO À CONEXÃO E SERVIÇO NÃO ORIENTADO À CONEXÃO • Serviço Orientado à Conexão (Connection-Oriented): – É aquele onde o usuário do serviço precisa estabelecer uma conexão (trocar dados de controle) com a entidade par na máquina destino antes de enviar mensagens para a mesma. – Após encerrar a transferência de mensagens, deve encerrar a conexão de forma explícita; – O aspecto essencial da conexão é que ela atua como um tubo: o emissor coloca objetos (bits) em uma ponta, e o receptor os recebe na outra ponta, na mesma ordem; É um serviço confiável de entrega de dados (baseado na confirmação de recebimento); SERVIÇO ORIENTADO À CONEXÃO E SERVIÇO NÃO ORIENTADO À CONEXÃO • Serviço não orientado à Conexão ou sem conexão (Connectionless): – É aquele onde o usuário do serviço envia mensagens para a entidade par na máquina destino sem comunicação prévia; – O aspecto essencial da transmissão é que cada mensagem trafega com informações completas do destinatário e cada mensagem pode seguir caminhos distintos na rede, podendo chegar ou não ao seu destino; – É um serviço não confiável de entrega de dados. PRIMITIVAS DE SERVIÇO • Um conjunto de primitivas (operações) especifica formalmente um serviço disponível para o usuário ou para uma entidade. As primitivas pedem aos serviços para desenvolver alguma ação ou informam sobre o resultado de uma ação executada por uma entidade par. As primitivas são, normalmente, classificadas conforme a figura abaixo. • Para ilustrar o uso de primitivas, vamos supor a transferência de uma mensagem de uma máquina 1 para uma máquina 2 em termos das camadas N+1 e N em ambas as máquinas, como mostrado na figura a seguir. 1. 2. 3. conexão(requisita) - requisita o estabelecimento de uma conexão; conexão(indica) - sinaliza o lado chamado (máquina 2); conexão(responde) - o lado chamado sinaliza que aceita ou rejeita a conexão; 4. conexão(confirma) - o lado chamador é informado do aceite da conexão; 5. dados(requisita) - a máquina 1 solicita envio de dados; 6. dados(indica) - sinaliza chegada de dados na máquina 2; 7. dados(requisita) - a máquina 2 solicita envio de dados; 8. dados(indica) - sinaliza chegada de dados na máquina 1; 9. desconexão(requisita) - requisita o encerramento da conexão; 10. desconexão(indica) - sinaliza o lado chamado (máquina 2) OBSERVAÇÃO • Serviços e protocolos são conceitos distintos que, embora confundidos em alguns contextos, devem ser sempre bem compreendidos: – Um serviço é um conjunto de primitivas (operações) que uma camada fornece para a camada acima dela; O serviço define que operações a camada está preparada para executar para seus usuários, mas não define como elas são implementadas. – Um protocolo, em contrapartida, é um conjunto de regras que governam o formato e o significado dos quadros, pacotes ou mensagens que são trocados por duas entidades pares em uma camada.