gerÊncia de redes de computadores linux

63
Curso de Pós-Graduação “Lato Sensu” (Especialização) a Distância Administração em Redes Linux GERÊNCIA DE REDES DE COMPUTADORES Simone Markenson Pech Herlon Ayres Camargo Universidade Federal de Lavras – UFLA Fundação de Apoio ao Ensino, Pesquisa e Extensão – FAEPE Lavras – MG

Upload: arl-ufla

Post on 08-Mar-2016

221 views

Category:

Documents


2 download

DESCRIPTION

GERÊNCIA DE REDES DE COMPUTADORES LINUX

TRANSCRIPT

Page 1: GERÊNCIA DE REDES DE COMPUTADORES LINUX

Curso de Pós-Graduação“Lato Sensu” (Especialização) a Distância

Administração em Redes Linux

GERÊNCIA DE REDES DE COMPUTADORES

Simone Markenson PechHerlon Ayres Camargo

Universidade Federal de Lavras – UFLAFundação de Apoio ao Ensino, Pesquisa e Extensão – FAEPE

Lavras – MG

Page 2: GERÊNCIA DE REDES DE COMPUTADORES LINUX

PARCERIAUFLA – Universidade Federal de LavrasFAEPE – Fundação de Apoio ao Ensino, Pesquisa e Extensão

REITORAntônio Nazareno Guimarães Mendes

VICE-REITORRicardo Pereira Reis

DIRETOR DA EDITORAMarco Antônio Rezende Alvarenga

PRÓ-REITOR DE PÓS-GRADUAÇÃOJoel Augusto Muniz

PRÓ-REITOR ADJUNTO DE PÓS-GRADUAÇÃO “LATO SENSU”Marcelo Silva de Oliveira

COORDENADOR DO CURSOHeitor Augustus Xavier Costa

PRESIDENTE DO CONSELHO DELIBERATIVO DA FAEPELuis Antônio Lima

EDITORAÇÃOGrupo Ginux (http://ginux.comp.ufla.br/)

IMPRESSÃOGráfica Universitária/UFLA

Ficha Catalográfica preparada pela Divisão de Processos Técnicosda Biblioteca Central da UFLA

Pech, Simone MarkensonGerência de Redes de Computadores/ Simone Markenson Pech, Herlon

Ayres Camargo. - - Lavras: UFLA/FAEPE, 2006.63 p. : il. - Curso de Pós-Graduação “Lato Sensu” (Especialização) a

Distância: Administração em Redes Linux.

Bibliografia.

1. Redes de Computadores. 2. Protocolos. 3. Hardware. 4. Soft-ware. 5. Comunicação de Dados. I. Pech, S.M. II. Universidade Federal deLavras. III. Fundação de Apoio ao Ensino, Pesquisa e Extensão. IV. Gerência deRedes de Computadores.

CDD-001.64404

Nenhuma parte desta publicação pode ser reproduzida, por qualquermeio ou forma, sem a prévia autorização.

Page 3: GERÊNCIA DE REDES DE COMPUTADORES LINUX

SUMÁRIO

1 Introdução 71.1 Sobre os autores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2 Conceitos de Redes de Computadores 92.1 Breve histórico das redes de computadores . . . . . . . . . . . . . . . . . . . 92.2 Classificação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.2.1 Quanto a abrangência . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.2.2 Quanto a tecnologia de transmissão . . . . . . . . . . . . . . . . . . . 12

2.3 Quanto a topologia física . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.4 Modelos de aplicações em rede . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.4.1 Cliente/Servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.4.2 Peer-to-Peer (P2P) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.5 Protocolos em camadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.6 Protocolos de rede e o Sistema Operacional Linux . . . . . . . . . . . . . . . 19

2.6.1 TCP/IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.6.2 SPX/IPX (Internet Packet Exchange/Sequenced Packet Exchange) . 19

2.7 Web Sites recomendados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3 Modelos de Referência 213.1 Modelo de referência OSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.1.1 Camada Física . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.1.2 Camada de Enlace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.1.3 Camada de Rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.1.4 Camada de Transporte . . . . . . . . . . . . . . . . . . . . . . . . . . 263.1.5 Camada de Sessão . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.1.6 Camada de Apresentação . . . . . . . . . . . . . . . . . . . . . . . . . 283.1.7 Camada de Aplicação . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.2 Modelo de Referência TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.2.1 Camada de Rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.2.2 Camada de Internet ou Inter-rede . . . . . . . . . . . . . . . . . . . . 313.2.3 Camada de Transporte . . . . . . . . . . . . . . . . . . . . . . . . . . 323.2.4 Camada de Aplicação . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.3 Endereçamento IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.3.1 Endereços privados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.3.2 Classe de loopback (local) . . . . . . . . . . . . . . . . . . . . . . . . 373.3.3 APIPA (Automatic Private IP Addressing) . . . . . . . . . . . . . . . . 383.3.4 Endereço de broadcast . . . . . . . . . . . . . . . . . . . . . . . . . . 383.3.5 Máscara de sub-rede . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

3.4 Comparação entre os Modelos de Referência . . . . . . . . . . . . . . . . . . 383.5 Desenvolvimento de Aplicações em Rede . . . . . . . . . . . . . . . . . . . . 38

3.5.1 Utilizando sockets TCP . . . . . . . . . . . . . . . . . . . . . . . . . . 393.6 Utilizando RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

Page 4: GERÊNCIA DE REDES DE COMPUTADORES LINUX

3.7 Web Sites Recomendados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

4 Componentes Físicos de Rede de Computadores 494.1 Interface de rede ou NIC (Network Interface Card) . . . . . . . . . . . . . . . 504.2 Repetidores e hubs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504.3 Switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514.4 Bridge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524.5 Roteador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524.6 Gateway . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534.7 Modem (MOdulador e DEModulador) . . . . . . . . . . . . . . . . . . . . . . 534.8 Cabeamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544.9 Web Sites Recomendados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

5 Ferramentas para Gerência de Redes 575.1 SNMP: Simple Network Management Protocol . . . . . . . . . . . . . . . . . 57

5.1.1 Mensagens do protocolo SNMP . . . . . . . . . . . . . . . . . . . . . 585.1.2 Modelo de gerenciamento de redes . . . . . . . . . . . . . . . . . . . 58

5.2 ntop – Network Top . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585.3 mrtg – Multi Router Traffic Grapher . . . . . . . . . . . . . . . . . . . . . . . . 595.4 Web Sites Recomendados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

Referências Bibliográficas 63

Page 5: GERÊNCIA DE REDES DE COMPUTADORES LINUX

LISTA DE FIGURAS

2.1 Hosts e Sub-Redes [Tanenbaum (2003)]. . . . . . . . . . . . . . . . . . . . . 122.2 Transmissão: (a) unicast (b) multicast. . . . . . . . . . . . . . . . . . . . . . . 122.3 Uma rede simples de comutação de circuitos [Kurose & Ross (2006)]. . . . . 132.4 Comuntação de pacotes [Kurose & Ross (2006)]. . . . . . . . . . . . . . . . . 142.5 Rede em estrela. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.6 Rede em anel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.7 Rede em barramento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.8 Entrega de mensagens no modelo cliente/servidor. . . . . . . . . . . . . . . . 162.9 Relação entre camadas e interfaces [Tanenbaum (2003)]. . . . . . . . . . . . 19

3.1 Modelo de Referência OSI [Tanenbaum (2003)]. . . . . . . . . . . . . . . . . 223.2 Os cabeçalhos de cada camada no modelo OSI [Soares, Lemos & Colcher (1995)]. 233.3 Processos de aplicação [Kurose & Ross (2006)]. . . . . . . . . . . . . . . . . 293.4 Comunicação TCP/IP [Soares, Lemos & Colcher (1995)]. . . . . . . . . . . . 303.5 Formato do datagrama IPv4 [Kurose & Ross (2006)]. . . . . . . . . . . . . . . 323.6 Segmento UDP [Kurose & Ross (2006)]. . . . . . . . . . . . . . . . . . . . . . 333.7 Segmento TCP [Kurose & Ross (2006)]. . . . . . . . . . . . . . . . . . . . . . 333.8 Processos de aplicação [Kurose & Ross (2006)]. . . . . . . . . . . . . . . . . 343.9 Protocolos do conjunto TCP/IP [Stallings (2005)]. . . . . . . . . . . . . . . . . 353.10 Endereço IP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.11 Classes de endereços IP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.12 Comparação entre os modelos OSI e TCP/IP. . . . . . . . . . . . . . . . . . . 393.13 Comunicação TCP utilizando sockets. . . . . . . . . . . . . . . . . . . . . . . 403.14 Código do programa cliente.c . . . . . . . . . . . . . . . . . . . . . . . . . 453.15 Código do programa servidor.c . . . . . . . . . . . . . . . . . . . . . . . . 46

4.1 Um exemplo de conexão entre redes. . . . . . . . . . . . . . . . . . . . . . . 494.2 Hubs empilháveis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514.3 Conexão entre duas redes através de um roteador. . . . . . . . . . . . . . . . 524.4 Funcionamento de um modem. . . . . . . . . . . . . . . . . . . . . . . . . . . 534.5 Compartilhamento via software. . . . . . . . . . . . . . . . . . . . . . . . . . . 544.6 Compartilhamento através de um roteador. . . . . . . . . . . . . . . . . . . . 544.7 Tomadas RJ-45. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554.8 Patch Panel com 48 portas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

5.1 Componentes do protocolo SNMP. . . . . . . . . . . . . . . . . . . . . . . . . 595.2 Exemplo de uso do ntop (fonte: http://www.ntop.org). . . . . . . . . . . . . . . 605.3 Exemplo de uso do mrtg (fonte: http://oss.oetiker.ch/mrtg/). . . . . . . . . . . 61

Page 6: GERÊNCIA DE REDES DE COMPUTADORES LINUX

LISTA DE TABELAS

2.1 Órgãos de padronização. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.1 Resumo das características do modelo OSI. . . . . . . . . . . . . . . . . . . 243.2 Resumo das características do modelo TCP/IP. . . . . . . . . . . . . . . . . . 303.3 Aplicações da Internet e seus protocolos de transporte. . . . . . . . . . . . . 343.4 Serviços da camada de aplicação. . . . . . . . . . . . . . . . . . . . . . . . . 353.5 Classes de endereços IP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

Page 7: GERÊNCIA DE REDES DE COMPUTADORES LINUX

1INTRODUÇÃO

Seja bem-vindo ao mundo das Redes de Computadores. Estamos todos conectados,seja por telefone, internet, satélites ou por uma tradicional rede local . . . de alguma forma,em algum lugar.

Este material tem como objetivo apresentar conceitos de gerência de redes de com-putadores, bem como as ferramentas para este fim, utilizando o sistema operacional Linux.Não nos cabe definir regras de boa gestão pois estas estão fortemente ligadas a um con-texto. Queremos sim fornecer subsídios técnicos que lhe ajude a tomar o melhor caminho.

Então, o que é gerência de redes?Gerenciar uma rede envolve mais que algumas configurações; evolve decisões. Um

modelo de gerenciamento foi estruturado pela International Organization for Standardization(ISO) definindo cinco áreas de gerenciamento:

• Gerência de desempenho;

• Gerência de falhas;

• Gerência de configurações;

• Gerência de contabilização;

• Gerência de segurança.

Cada uma das áreas mencionadas representa um caminho a ser percorrido. Pode-mos citar [Saydam & Magedanz (1996)] e traduzido por [Kurose & Ross (2006)], sobre asfunções de um administrador:

“Gerenciamento de rede inclui a disponibilização, a integração e a coordena-ção de elementos de hardware, software e humanos para monitorar, testar, consul-tar, configurar, analisar, avaliar e controlar os recursos da rede, e de elementos,para satisfazer às exigências operacionais, de desempenho e de qualidade deserviço em tempo real a um custo razoável.”

Apresentaremos no Capítulo 2 uma revisão de Redes de Computadores incluindo umbreve histórico, a classificação das redes e a definição de protocolo. No Capítulo 3 abor-daremos com mais detalhes os modelos de referência OSI e TCP/IP, terminando o capítulo

Page 8: GERÊNCIA DE REDES DE COMPUTADORES LINUX

8 EDITORA - UFLA/FAEPE - Gerência de Redes de Computadores

com exemplos de aplicações para redes. No Capítulo 4 abordaremos os equipamentos derede e suas funcionalidades, completando então o embasamento teórico. No capítulo 5serão apresentados os conceitos de gerência de redes e algumas das ferramentas disponí-veis.

Certamente não esgotaremos o assunto mas ficaremos muito contentes em forneceraos nossos leitores os conceitos necessários para que caminhem e evoluam sempre demãos dadas com a tecnologia e com a visão da disseminação do uso de software livre.

1.1 SOBRE OS AUTORES

Simone Markenson PechMestre em Informática pela UFRJ (IM-DCC-NCE), atualmente em fase de desenvolvimentode tese de doutorado em Sistemas Embarcados na mesma instituição. Graduada em Fí-sica pela UFRJ e especialista em Análise de Sistemas pela PUC-RJ. Professora adjuntada Universidade Estácio de Sá desde 1998 atuando nos cursos seqüenciais, bachareladoe pós-graduação, da UniverCidade desde 2002, da UniAbeu desde 2005 e tutora na pós-graduação a distância em Administração de Redes Linux da UFLA. Natural do Pará mascarioca há muito tempo, iniciou a carreira em 1984 como Analista de Sistemas, tendo de-senvolvido projetos especializados para coletores de dados e sistemas CAD para micro-computadores, na época considerados inovadores. Atuou como coordenadora de suportetécnico e de tecnologia do grupo Brasif, sendo responsável pelo projeto de comunicaçãode dados entre todas as filiais, inclusive no exterior. Sócia gerente da Wizard Consultoria,empresa especializada em consultoria em tecnologia e suporte.

Herlon Ayres CamargoNatural de Barbacena/MG, é Engenheiro Eletricista pela Universidade Federal de São JoãoDel-Rei/MG (UFSJ), mestre em Engenharia Elétrica pelo Centro de Pesquisa e Desenvolvi-mento em Engenharia Elétrica (CPDEE) da Universidade Federal de Minas Gerais (UFMG).Foi professor do Centro Federal de Educação Tecnológica de Minas Gerais (CEFET-MG)de 1997 a 2002, e atualmente é professor do Curso Superior de Tecnologia em Desenvolvi-mento de Sistemas Distribuídos e do Curso Técnico em Informática da Escola AgrotécnicaFederal de Barbacena/MG, desde 2003, onde também desenvolve as atividades de admi-nistrador de redes e de suporte em Software Livre. Trabalha com informática desde 1991 econheceu o Linux em setembro de 2000, através da distribuição Conectiva Linux 5, onde seapaixonou pelo sistema e pela filosofia de liberdade em software, fazendo com que abando-nasse, definitivamente, seu diploma de Engenheiro Eletricista para trabalhar exclusivamentecom Linux e Redes de Computadores.

Page 9: GERÊNCIA DE REDES DE COMPUTADORES LINUX

2CONCEITOS DE REDES DE

COMPUTADORES

2.1 BREVE HISTÓRICO DAS REDES DE COMPUTADORES

A comunicação e a troca de informações entre indivíduos são, talvez, mais antigasdo que a própria fala. Era realizada através de gestos, cores e desenhos que permitiamque mensagens fossem transmitidas de um ponto a outro. Para que essa comunicaçãose realizasse com sucesso, foram estabelecidos padrões entre os envolvidos para que amensagem pudesse ser entendida corretamente.

Da idade da pedra lascada (ou será do bit lascado?) até os dias de hoje a comuni-cação foi se aprimorando e a necessidade de informações rápidas crescendo. A indústriaviveu momentos importantes na década de 80 quando os microcomputadores começarama atender isoladamente a uma grande demanda de processamento oferecendo ainda umainterface mais amigável que as utilizadas pelos mainframes1

Os grande computadores centralizados, muita vezes inviáveis em função do customuito elevado, cederam seus lugares às redes de microcomputadores permitindo às empre-sas soluções mais escaláveis, com a possibilidade de livre escolha de fornecedores tantode hardware quanto de software. Resumindo, as redes de microcomputadores ofereciam:

• compartilhamento de recurso e dados independente da localização física;

• replicação;

• economia;

• comunicação entre usuários em fisicamente distribuídos;

• escalabilidade.

As redes locais passaram então a ter maior importância no cenário corporativo emfunção da necessidade de compartilhamento de recursos e dados. Surgia então um grave

1Termo utilizado para se referenciar a um grande computador, normalmente produzido por uma grande em-presa. O nome tem origem na forma com que estes computadores eram construídos. Todos os componentes(processador, memória, . . . ) do computador principal (Main) são colocados dentro de uma única estrutura(frame).

Page 10: GERÊNCIA DE REDES DE COMPUTADORES LINUX

10 EDITORA - UFLA/FAEPE - Gerência de Redes de Computadores

problema: a falta de padronização. Cada fabricante criava seus próprios padrões que, namaioria da vezes, eram incompatíveis com os demais.

O modelo de referência proposto pelo ISO no início dos anos 80, o modelo RM OSI(Reference Model for Open Systems Interconnection), visava justamente padronizar a co-municação entre computadores diferentes oferecendo interconectividade e portabilidade.Este modelo serve de base para implementar qualquer tipo de rede, seja local ou de longadistância, através de um padrão de arquitetura aberta baseado em camadas.

A padronização convergiu para o mesmo ponto de evolução da ARPANET (1969-1990), considerada a antecessora da Internet tal qual conhecemos hoje. A ARPANET foidesenvolvida pelo Departamento de Defesa dos Estados Unidos da América (DoD), era ba-seada em comutação de pacotes e os primeiros serviços oferecidos foram Telnet e FTP. Em1972, Ray Tomlinson desenvolveu o primeiro sistema de correio eletrônico para uma redede computadores, passando rapidamente a ser a aplicação mais utilizada na ARPANET. Em1983, o protocolo NCP foi substituído pelo TCP/IP, desenvolvido por Robert Kahm e VintonCerf, entre outros.

O modelo OSI é considerado um padrão de jure2 enquanto o modelo TCP/IP é consi-derado um padrão de facto3.

A Internet hoje é composta por milhares de redes hierárquicas superpostas e por-tanto não faz sentindo discutir a arquitetura exata da Internet [Stallings (2005)]. Existe, noentanto, um órgão mundial responsável por estabelecer regras do uso da Internet. Esteórgão, denominado ICANN (The Internet Corporation for Assigned Names and Numbers) éo responsável pela distribuição mundial de endereços e nomes de domínios.

A Tabela 2.1 cita alguns dos institutos de padronização.O quadro que se apresenta indica então o uso de computadores diferentes, com sis-

temas operacionais diferentes, conectados de formas diferentes compartilhando recursos einformações. Precisamos saber como administrar estas redes para que funcionem de formaprevisível atendendo aos requisitos de gerência citados anteriormente.

2.2 CLASSIFICAÇÃO

As redes de computadores podem ser classificadas sob diferentes aspectos. Nãohá exatamente um consenso de como classificar uma rede, portanto iremos mostrar ascaracterísticas que consideramos mais importantes.

2.2.1 Quanto a abrangência

As redes de classificam em:2Padrão estabelecido por uma instituição de padronização autorizada.3Padrão estabelecido pelo uso.

Page 11: GERÊNCIA DE REDES DE COMPUTADORES LINUX

Conceitos de Redes de Computadores 11

Tabela 2.1: Órgãos de padronização.

Sigla DescriçãoANSI American National Standarts Institute

BSI British Standart Institute

ISO International Standarts Organization

ITU International Telecommunications Union

ITU-T Telecom Standardization

ITU-R Radio-communication

ITU-D Telecom Development

TIA Telecommunications Industries Association

IEEE Institute of Electrical and Eletronic Engineers

IETF Internet Engineering Task Force

LAN (Local Area Network ): Rede de alcance geográfico limitado, também chamada derede local, restrita a alguns quilômetros, desenvolvidas no intuito de compartilhar in-formações e recursos. As implementações mais comuns são as LANs comutadasEthernet e, mais recentemente, as LANs sem fio.

MAN (Metropolitan Area Network ): Rede de longo alcance geográfico ultrapassando oslimites físicos de uma cidade. São de fato a interligação de várias LANs.

WAN (Wide Area Network ): Rede geograficamente distribuída com dimensões mundiais.São também geradas a partir de LANs e MANs constituindo uma série de nós decomutação interconectados. Tradicionalmente as WANs tem sido implementadas uti-lizando comutação de pacotes e comutação de circuitos e mais recentemente FrameRelay e ATM.

Cada máquina de uma WAN é denominada host ou end systems. Estas máquinassão conectadas por uma sub-rede de comunicação cuja tarefa é transportar mensagens deum host para outro. Uma sub-rede é composta basicamente por linhas de transmissão, quetransportam os bits entre as máquinas e elementos de comutação4.

Um esquema que relaciona hosts e sub-rede é mostrado na Figura 2.1.

4Equipamentos utilizados para conectar linhas de transmissão.

Page 12: GERÊNCIA DE REDES DE COMPUTADORES LINUX

12 EDITORA - UFLA/FAEPE - Gerência de Redes de Computadores

Figura 2.1: Hosts e Sub-Redes [Tanenbaum (2003)].

2.2.2 Quanto a tecnologia de transmissão

As redes se classificam em:

Difusão: As redes de difusão (broadcasting) tem apenas um canal de comunicação com-partilhado por todas as máquinas ou por um subconjunto destas máquinas (multicas-ting). São essencialmente utilizadas em redes locais e a filtragem das mensagens édelegada para os nós. Esta solução vem sendo substituída por redes de comutação.Um esquema de transmissão unicast e multicast está ilustrado na Figura 2.2.

Figura 2.2: Transmissão: (a) unicast (b) multicast.

Page 13: GERÊNCIA DE REDES DE COMPUTADORES LINUX

Conceitos de Redes de Computadores 13

Comutação: As redes de comutação são constituídas por nós intermediários (comutado-res) que promovem a conexão entre dois pontos. Os comutadores alternam a cone-xão entre os pontos, ou seja, os nós não estão fisicamente ligado. A comutação podeocorrer em três modos:Comutação de circuito: estabelece um circuito físico antes de iniciar a transmissão

de dados. Este circuito deve ser desfeito ao término da transmissão. Estabelecerum circuito gera um atraso inicial na comunicação e ambos os nós ficam inaces-síveis a outros nós, no entanto, uma vez estabelecido o circuito, a transferênciade dados é feita a uma taxa constante. A Figura 2.3 exemplifica a comutação decircuito.

Figura 2.3: Uma rede simples de comutação de circuitos [Kurose & Ross (2006)].

Comutação de mensagens: As mensagens são enviadas desde a origem até o des-tino sem qualquer fase anterior ao envio. A própria mensagem carrega o ende-reço de destino. A utilização de recursos é eficiente porém não há como preverpossíveis atrasos.

Comutação de pacotes: Nesta modalidade de comutação, a mensagem é dividida etransmitida em blocos (pacote = designação genérica). A transmissão destes blo-cos pode assumir o formato de datagramas, ou de circuitos virtuais. O exemplo

Page 14: GERÊNCIA DE REDES DE COMPUTADORES LINUX

14 EDITORA - UFLA/FAEPE - Gerência de Redes de Computadores

mais conhecido de comutação de pacotes é o X.25, substituído por implementa-ções mais leves5 como o frame relay. A Figura 2.4 exemplifica a comutação depacotes.

Figura 2.4: Comuntação de pacotes [Kurose & Ross (2006)].

2.3 QUANTO A TOPOLOGIA FÍSICA

As redes se classificam em:

Estrela: Cada máquina está conectada a um ponto central fazendo com que cada seg-mento seja independente em caso de falhas. O componente centralizador pode serum computador com n placas de redes, ou um hub (antigo) ou um switch (mais mo-derno). A Figura 2.5 exemplifica a topologia física estrela.

Anel: Semelhante ao barramento porém a primeira e última máquinas são conectadas. AFigura 2.6 exemplifica a topologia física em anel.

Barramento: Um único cabo conecta fisicamente todas as máquinas. É uma topologia emdesuso por sem lenta e pouco tolerante à falhas. A Figura 2.7 exemplifica a topologiafísica em barramento.

5As implementações mais antigas estavam baseadas em redes de baixa velocidade e alta taxa de erros.

Page 15: GERÊNCIA DE REDES DE COMPUTADORES LINUX

Conceitos de Redes de Computadores 15

Figura 2.5: Rede em estrela.

Figura 2.6: Rede em anel.

Figura 2.7: Rede em barramento.

2.4 MODELOS DE APLICAÇÕES EM REDE

2.4.1 Cliente/Servidor

As aplicações baseadas no modelo cliente-servidor pressupõem a existência de doisprocessos6: o cliente e o servidor. Estes processos cooperam na solução de uma tarefacom as seguintes características:

6Cliente e Servidor são processos e não computadores. A designação errônea é um legado de sistemasde redes que monopolizavam um determinado computador e este passava a ser identificado como “servidor”.

Page 16: GERÊNCIA DE REDES DE COMPUTADORES LINUX

16 EDITORA - UFLA/FAEPE - Gerência de Redes de Computadores

• Cliente é o processo ativo, ou seja, inicia uma comunicação solicitando serviços aum processo servidor.

• Servidores são reativos e atendem às requisições dos processo clientes.

• Ambos contribuem para o processamento mesmo que com cargas de trabalho di-ferentes.

• A interface com o usuário é feita através do cliente e este também é responsávelpelo tratamento da entrada de dados.

• Servidores são especializados e não possuem interface com o usuário.

• Um número muito grande de clientes para um servidor acarreta gargalo na comu-nicação.

• É responsabilidade do processo cliente localizar o servidor. Não basta a identifi-cação do computador onde o servidor está sendo executado pois em um mesmocomputador pode existir mais de um processo servidor (exemplo: servidor web eservidor de correio em um mesmo computador). O processo destino também de-verá ser identificado de forma que o sistema operacional consiga entregar a men-sagem ao processo correto.

A Figura 2.8 exemplifica a entrega de mensagens no modelo cliente/servidor.

Figura 2.8: Entrega de mensagens no modelo cliente/servidor.

2.4.2 Peer-to-Peer (P2P)

O modelo de comunicação P2P é implementado em uma rede de computadores cujacomunicação não está baseada em servidores dedicados, como no modelo cliente-servidor,e sim na comunicação direta entre cada nó da rede (peer ). Cada computador conectadotem a capacidade de atuar como um servidor realizando tarefas para outros usuários darede, ou atuar como cliente, requisitando a realização destas tarefas. Apesar de ter umadefinição aparentemente clara, a classificação do que é ou não P2P ainda é alvo de dis-cussões. Androutsellis e Spinellis [Androutsellis & Spinellis (2004)] propuseram a seguintedefinição para sistemas P2P:

Page 17: GERÊNCIA DE REDES DE COMPUTADORES LINUX

Conceitos de Redes de Computadores 17

“Sistemas peer-to-peer são sistemas distribuídos que consistem em nós interco-nectados com capacidade de auto-organização em relação à topologia da redecom o propósito de compartilhar recursos, adaptar-se a falhas e picos de cargamantendo um nível aceitável de conectividade e desempenho sem requerer inter-mediação ou suporte de um servidor central.”

Na arquitetura P2P não há coordenação central e, portanto, não há um ponto de falhanem gargalo. Nenhum peer tem uma visão global do sistema, porém todos os dados eserviços são acessíveis de qualquer peer. Estas características fazem com que este modelode comunicação ofereça:

• descentralização;

• escalabilidade;

• anonimato;

• capacidade de auto-organização;

• tolerância à falhas.

A arquitetura de aplicação P2P está ainda subdividida em três categorias:

Pura: não há um servidor funcionando no centro da aplicação. Exemplo: Gnutella.

Híbrida: existe um servidor utilizado apenas para consulta ou autenticação, porém a trans-ferência de arquivos é feita diretamente entre os pares. Exemplo: Napster.

Intermediária: semelhante ao modelo puro porém alguns peers, denominados super-peers,possuem informações que os demais não possuem. Exemplo: Kazaa.

As redes peer-to-peer se tornaram populares como distribuidoras de conteúdo porémsão utilizadas também no compartilhamento de processamento e demais recursos compu-tacionais.

2.5 PROTOCOLOS EM CAMADAS

Um protocolo é um conjunto de regras que define o modo em que a comunicaçãodeverá ocorrer. Não é um conceito restrito às redes de computadores. Socialmente vá-rias regras de conduta “regulamentam” o nosso dia-a-dia, como atender a uma chamadatelefônica ou cumprimentar um conhecido na rua.

Em relação às redes, a estratégia de ter o hardware como prioritário há muito foideixada para trás, ficando a cargo do software compatibilizar diferentes plataformas dehardware por diferentes meios de comunicação. Esta tarefa se tornou muito complexa pelanecessidade de tratar adequadamente todos os detalhes envolvidos na comunicação deforma independente da tecnologia utilizada.

Page 18: GERÊNCIA DE REDES DE COMPUTADORES LINUX

18 EDITORA - UFLA/FAEPE - Gerência de Redes de Computadores

O problema da comunicação foi então subdividido em camadas dispostas hierarqui-camente, onde cada camada possui uma tarefa específica. A quantidade, o nome e asfunções de cada camada diferem de uma rede para outra mas, de uma forma geral, a ca-mada n de uma máquina conversa com a camada n da outra utilizando um protocolo decomunicação de camada n.

A função de cada camada é fornecer serviços para a camada acima, assim, a camadan, denominada provedora do serviço, fornece serviços para a camada n+1, denominadausuária do serviço. Cada camada transfere os dados e demais informações de controlepara a camada imediatamente inferior até atingir o nível mais baixo, relacionado ao meiofísico.

São objetivos do modelo de camadas:

• reduzir a complexidade;

• padronizar as interfaces;

• modularidade;

• garantir a interoperabilidade;

• acelerar a evolução;

• reduzir conflitos entre equipamentos;

• simplificar o desenvolvimento.

Um conjunto de camadas de protocolos é denominado arquitetura de rede e umalista de protocolos, um por camada, utilizados por um determinado sistema é denominadopilha de protocolos.

O modelo de camadas possui uma nomenclatura própria onde os termos mais rele-vantes serão descritos a seguir:

Entidade: é o elemento ativo em uma camada.

Entidade par: são as entidades de uma mesma camada porém em diferentes máquinas.

SAP – Service Access Point: os SAPs da camada n identificam onde a camada n+1 podeter acesso aos serviços oferecidos. Cada SAP é identificado de forma exclusiva atra-vés de um endereço.

IDU – Interface Data Unit: a troca de informações entre duas camadas só é possível atra-vés do conhecimento das regras de interface. A entidade da camada n+1 para umaIDU para a entidade da camada n através de um SAP. É composta pela SDU e infor-mações adicionais de controle (ICI).

SDU – Service Data Unit: é a informação passada pela rede para a entidade par e para acamada n+1.

Page 19: GERÊNCIA DE REDES DE COMPUTADORES LINUX

Conceitos de Redes de Computadores 19

PDU – Protocol Data Unit: se for necessário, a entidade da camada n pode fragmentar aSDU atribuindo à cada parte um cabeçalho que informa à entidade par na máquinadestino como recompor a SDU original.

A Figura 2.9 mostra a relação entre camadas e interfaces.

Figura 2.9: Relação entre camadas e interfaces [Tanenbaum (2003)].

2.6 PROTOCOLOS DE REDE E O SISTEMA OPERACIONAL LINUX

O sistema operacional Linux suporta diferentes protocolos de rede. O protocolo TCP/IPestá presente desde as primeira versão e é considerado o protocolo padrão. Para a utiliza-ção de outros protocolos serão necessárias rotinas extras de instalação.

2.6.1 TCP/IPv6

O protocolo IPv6 é uma atualização do protocolo Ipv4 visando resolver questões comoa escassez de endereços disponíveis, tratamento de tráfego e melhoria nos padrões desegurança. É suportado a partir do kernel 2.1.9 mas para que seja ativado o kernel deveráser recompilado.

2.6.2 SPX/IPX (Internet Packet Exchange/Sequenced Packet Exchange)

É um protocolo proprietário desenvolvido pela Novell baseado no protocolo XeroxNetwork Systems (XNS). Foi difundido nos anos 80 como o protocolo padrão do Netware,sistema operacional de rede distribuído pela Novell.

Page 20: GERÊNCIA DE REDES DE COMPUTADORES LINUX

20 EDITORA - UFLA/FAEPE - Gerência de Redes de Computadores

A implementação deste protocolo no Linux permite a configuração de um roteadorIPX, de clientes e servidores para compartilhamento de arquivos e impressão e de conexãoPPP/IPX.

2.7 WEB SITES RECOMENDADOS

The living Internet http://www.livinginternet.com

ICANN http://www.icann.org

IEEE http://www.ieee.org

ACM http://www.acm.org

LDP-BR http://br.tldp.org

Playground.SUN http://playground.sun.com

Page 21: GERÊNCIA DE REDES DE COMPUTADORES LINUX

3MODELOS DE REFERÊNCIA

Como visto no Capítulo 2, o modelo de camadas tem como objetivo reduzir a complexi-dade da implementação através de abstrações onde uma camada não precisa conhecer osdetalhes de implementação das demais. Esta característica garante ainda maior facilidadede manutenção tendo em vista que uma camada deve se preocupar apenas em utilizar osserviços da camada inferior, independentemente da implementação do protocolo daquelacamada.

Dois modelos baseados em camadas merecem particular destaque: OSI e TCP/IP.Estes modelos serão descritos com mais detalhes a seguir.

3.1 MODELO DE REFERÊNCIA OSI

O modelo OSI é um modelo de referência que se limita a definir as funções de cadacamada sem especificar os serviços e protocolos que devem ser usados em cada camada,logo, não é uma arquitetura de rede. Divide o escopo do protocolo em sete camadas, queobedecem as regras dos modelos de camadas:

• cada camada possui um nível de abstração próprio;

• cada camada desempenha uma função muito bem definida segundo padrões inter-nacionais;

• as fronteiras entre as camadas minimiza o fluxo de informações pelas interfaces;

• possui um número de camadas suficiente para que não seja necessário agruparfunções em uma mesma camada nem inviabilizar a implementação da arquitetura.

As camadas podem ainda ser agrupadas funcionalmente:

• as camadas física, enlace e de rede estão relacionadas aos aspectos da transmis-são de dados propriamente dita e compõem a sub-rede de comunicação, conformemostra a Figura 3.1.

• a camada de transporte realiza a comunicação fim-a-fim.

Page 22: GERÊNCIA DE REDES DE COMPUTADORES LINUX

22 EDITORA - UFLA/FAEPE - Gerência de Redes de Computadores

• as três camadas superiores (sessão, apresentação e aplicação) estão relacionadasa lógica da aplicação.

Figura 3.1: Modelo de Referência OSI [Tanenbaum (2003)].

A transmissão dos dados através das camadas é ilustrado na Figura 3.2, onde sepode visualizar que cada camada insere sua identificação na mensagem original. Estaidentificação será reconhecida e removida pela entidade par.

As camadas adjacentes se comunicam através de primitivas de serviços. No modeloOSI são definidos quatro tipos de primitivas:

Request: utilizada por uma entidade para solicitar um serviço;

Indication: informa uma entidade sobre a ocorrência de um evento;

Response: utilizada por uma entidade para responder a um evento;

Confirmation: utilizada para confirmar uma solicitação anterior.

Os conceitos de serviço e protocolos são comumente confundidos [Tanenbaum (2003)].De forma resumida pode-se definir:

Serviço: é o conjunto das operações disponíveis oferecidas a camada superior adjacente;

Page 23: GERÊNCIA DE REDES DE COMPUTADORES LINUX

Modelos de Referência 23

Figura 3.2: Os cabeçalhos de cada camada no modelo OSI [Soares, Lemos & Colcher (1995)].

Protocolo: é o conjunto de regras que controla o formato e significado do conteúdo trocadoentre entidades pares em uma camada. Os protocolos são utilizados para implemen-tar os serviços.

As camadas do modelo OSI estão sintetizadas na Tabela 3.1 e são descritas a seguir.

3.1.1 Camada Física

A camada física trata da transmissão de bits através de um canal de comunicação.Por ser a única camada que tem acesso físico ao meio de transmissão é a camada que seresponsabiliza pela adaptação do sinal ao meio de transmissão.

Deve garantir a equivalência entre o que é considerado bit 0 e o que é considerado bit1, considerando:

• a quantidade de volts utilizada para representar o bit 0 e o bit 1;

• a duração de um bit ;

• o fluxo de transmissão (bidirecional ou não);

• a forma de conexão e encerramento;

• a quantidade de pinos do conector e como serão utilizados.

Page 24: GERÊNCIA DE REDES DE COMPUTADORES LINUX

24 EDITORA - UFLA/FAEPE - Gerência de Redes de Computadores

Tabela 3.1: Resumo das características do modelo OSI.

Num Identificação Função7 Aplicação Interface para aplicações

6 Apresentação Representação de dados.

5 Sessão Comunicação interhosts.

4 Transporte Conexão ponto-a-ponto.

3 Rede Endereçamento.

2 Enlace Acesso aos meios.

1 Física Transmissão digital.

O projeto desta camada está relacionado às especificações elétricas, mecânicas efuncionais entre a interface física e o meio de comunicação. Equipamentos como hubs erepeters (repetidores) atuam estritamente nessa camada copiando bits entre segmentos decabo.

3.1.2 Camada de Enlace

A principal tarefa de desta camada é a detecção e, opcionalmente, também a corre-ção, de erros não detectados nas camadas adjacentes. O emissor divide a mensagem emquadros incluindo, no início e no término de cada quadro, padrões de bits especiais. Sãofunções da camada de enlace:

• fornecer uma interface de serviços à camada de redes;

• determinar como os bits da camada física serão agrupados em quadros;

• detectar erros de transmissão;

• controlar o fluxo de quadros.

A camada de enlace fornece como serviço à camada de redes a transferência de umdado da camada de rede da máquina de origem para a camada de rede da máquina dedestino. Este serviço pode ser oferecido em basicamente três formatos:

Serviço sem conexão e sem confirmação: a máquina de origem envia quadros indepen-dentes entre si à máquina de destino e esta não confirma o recebimento destes qua-dros;

Serviço sem conexão e com confirmação: também não há conexão, porém a máquinade destino envia mensagem de confirmação à origem a cada quadro recebido;

Page 25: GERÊNCIA DE REDES DE COMPUTADORES LINUX

Modelos de Referência 25

Serviço orientado a conexão: a máquina de origem estabelece uma conexão com a má-quina de destino antes de iniciar a transferência de dados. Os quadros enviados du-rante a conexão são numerados de tal forma que a camada de enlace possa garantiro recebimento dos quadros em ordem e uma única vez.

Os adaptadores de rede dos nós possuem endereços de camada de enlace tambémdenominados endereço MAC (Media Access Control), que, para a maioria da LANs, pos-suem 6 bytes (248 possíveis endereços) expressos tipicamente em notação hexadecimal.

Como também existe endereçamento na camada de rede, como o IP, é preciso fazeruma tradução de um para o outro. Esta tradução é feita pelo protocolo ARP (Address Re-solution Protocol) para nós de uma mesma sub-rede. Ao solicitar um endereço de rede ocomputador destino responde com o endereço MAC. Os endereços relacionados são man-tidos em uma tabela ARP. No Linux, esta tabela é tratada pelo comando arp, basicamentepara fins de depuração. Para ver o conteúdo da tabela arp, use o comando “arp -a”.

Atuam na camada de enlace equipamentos do tipo bridge (ponte), cuja função é ar-mazenar e remeter quadros entre LANs.

3.1.3 Camada de Rede

A camada de rede é responsável por estabelecer como os dados serão entreguespartindo de um computador de origem para um destino. Estes computadores podem ounão estar em uma mesma rede.

É a última camada onde todos os computadores da sub-rede tomam parte. Ofereceserviços à camada de transporte através de uma interface que, em geral, representa afronteira entre a concessionária de comunicação e o usuário. Estes serviços devem serindependentes da tecnologia da sub-rede.

As funções da camada de rede estão relacionadas a roteamento e controle de con-gestionamento e incluem:

• definir endereços;

• definir estratégia de conexão;

• definir rotas a serem seguidas pelos pacotes;

• definir técnicas para tratamento de congestionamentos.

São implementadas duas estratégias para os serviços oferecidos pela camada deredes: circuito virtual e datagrama.

Circuito Virtual: uma conexão é estabelecida entre o transmissor e o receptor de tal formaque todo o tráfego entre eles utilize essa rota. Quando a conexão é liberada, o circuitovirtual deixa de existir.

Page 26: GERÊNCIA DE REDES DE COMPUTADORES LINUX

26 EDITORA - UFLA/FAEPE - Gerência de Redes de Computadores

Datagrama: nenhuma rota é previamente definida, mesmo que o serviço seja orientado àconexão. Cada pacote enviado é roteado independentemente de seus antecessores.

Em ambos os casos, a determinação do melhor caminho é feita por um algoritmo deroteamento, responsável pela escolha sobre a linha de saída a ser usada na transmissãode um pacote de entrada.

Esses algoritmos são classificados em:

Adaptativos: executam roteamento dinâmico, isto é, considerando alterações de topologiae tráfego na rede;

Não adaptativos: executam roteamento estático, ou seja, de rota fixa independente dascondições da rede.

A comunicação entre redes e a escolha de rotas são suportadas por equipamentoschamados routers (roteadores), que atuam encaminhando os pacotes.

3.1.4 Camada de Transporte

A camada de transporte provê mecanismos que possibilitam a comunicação fim-a-fim,ou seja, não se comunica com máquinas intermediárias na rede, como pode ocorrer comas camadas inferiores.

As funções básicas desta camada incluem:

• receber os dados da camada de sessão e dividi-los em unidades menores, se ne-cessário, repassando-os à camada de rede;

• certificar-se de que todas as unidades da mensagem chegaram corretamente aodestino.

Oferece serviços orientados à conexão e não orientados à conexão. No primeiro casoé necessário estabelecer uma conexão entre origem e destino antes do envio de men-sagens, lembrando que esta conexão deve ser desfeita ao término da transmissão. Nosegundo caso, cada envio é independente do anterior. Estes serviços atuam como um su-pervisor de qualidade de serviço oferecido pela camada de rede. A avaliação de qualidadeda camada de transporte se baseia em:

Retardo no estabelecimento de uma conexão: tempo decorrido entre a solicitação deum conexão de transporte e o recebimento de confirmação pelo usuário do serviço;

Falhas no estabelecimento de uma conexão: possibilidade da conexão não se estabe-lecer dentro de um período máximo estabelecido;

Desempenho: número de bytes de dados transmitidos por segundo durante um determi-nado intervalo de tempo;

Page 27: GERÊNCIA DE REDES DE COMPUTADORES LINUX

Modelos de Referência 27

Retardo de trânsito: tempo transcorrido desde o envio de uma mensagem pelo usuáriode transporte da máquina de origem até seu recebimento pelo usuário de transporteda máquina destino;

Taxa de erros: percentual de mensagens perdidas ou corrompidas do total enviado;

Proteção: configuração para impedir leitura ou modificação dos dados;

Prioridade: indicação de que uma conexão pode ser mais importante que outra, para aten-dimento prioritário em caso de congestionamento;

Resiliência: permissão para finalizar conexão devido a problemas internos ou congestio-namento.

Dependendo da qualidade de serviço desejada, as entidades pares negociam umadas cinco classes de serviços:

classe 0: nenhum mecanismo de detecção e recuperação de erros;

classe 1: permite a retomada da comunicação entre duas entidades de transporte após ainterrupção de rede;

classe 2: permite que várias conexões de transporte sejam multiplexadas sobre uma únicaconexão de rede;

classe 3: agrupa classes 1 e 2;

classe 4: definida para atuar sobre serviços de rede não confiáveis.

As funções da camada de transporte vão então depender do ambiente em que vãoatuar, assim como da natureza dos serviços que irão oferecer.

3.1.5 Camada de Sessão

A principal função desta camada é oferecer meios para o estabelecimento de cone-xões, denominadas sessões, de modo que estes possam trocar dados.

Os serviços oferecidos podem ser úteis às aplicações:

gerência do controle de diálogo: organização da troca de informações entre entidadesem um circuito half-duplex1 controlada através da utilização de tokens;

sincronização: determinação de marcas lógicas no diálogo de forma a permitir o reinicioda comunicação caso haja interrupção a partir da última marca enviada e confirmada;

gerenciamento de atividades: divisão do fluxo de dados em atividades específicas como,por exemplo, transferência de um arquivo onde o início da atividade é marcado peloinicio da transferência e o término da atividade pelo término da transferência.

1Comunicação em um sentido de cada vez.

Page 28: GERÊNCIA DE REDES DE COMPUTADORES LINUX

28 EDITORA - UFLA/FAEPE - Gerência de Redes de Computadores

As camadas de sessão e transporte podem aparentar algumas semelhanças mas sãoparticularmente diferentes nos procedimentos de liberação da conexão. Na camada detransporte pode ocorrer uma liberação abrupta da conexão permitindo a perda de dadosem trânsito enquanto na camada de sessão a primitiva responsável por essa ação garanteuma liberação ordenada.

3.1.6 Camada de Apresentação

A camada de apresentação foi concebida para tratar a representação dos dados aserem transmitidos. Inicialmente a função desta camada estava restrita a conversão en-tre codificação ASCII e EBCDIC, mas hoje assume a responsabilidade pela criptografia ecompressão de dados.

3.1.7 Camada de Aplicação

Responsável pelo gerenciamento dos programas de usuário (aplicações) que execu-tam em máquinas que utilizam a rede para troca de informações. É a camada visível aousuário e deve adaptar os processos ao ambiente de comunicação.

Atualmente, as aplicações de rede mais conhecidas são:

• correio eletrônico;

• web;

• mensagem instantânea;

• login em computador remoto;

• compartilhamento de arquivos;

• jogos;

• videoconferência;

• telefonia.

Podemos observar que as aplicações envolvem pares de processos e, para tal, utili-zam arquiteturas P2P ou cliente/servidor. Todas as mensagens enviadas de um processopara outro se utilizam da rede de comunicação. Um processo envia e recebe mensagensatravés de sockets, que funcionam como portas virtuais entre o processo e a rede. Es-crever em um socket significa enviar mensagens pela rede assim como ler de um socketsignifica receber mensagens da rede. Socket trambém é definido como uma interface deprogramação da aplicação.

A Figura 3.3 ilustra a comunicação entre dois processos utilizando o protocolo TCPna camada de transporte. Para que um processo envie uma mensagem a outro processoem outro computador é necessário que o processo de origem conheça a localização doprocesso destino. Se tomarmos uma aplicação Internet como exemplo, o endereço do

Page 29: GERÊNCIA DE REDES DE COMPUTADORES LINUX

Modelos de Referência 29

processo destino é dado pelo endereço IP do computador hospedeiro acrescido de umidentificador do processo na máquina. Este identificador é conhecido através de um númerode porta.

Figura 3.3: Processos de aplicação [Kurose & Ross (2006)].

De uma forma geral são funções da camada de aplicação:

• seleção do modo de diálogo (full-duplex ou half-duplex);

• determinação da qualidade de serviço aceitável na conexão;

• identificação dos futuros parceiros na comunicação por nome ou endereço;

• especificação de aspectos relativos à segurança como controle de acesso, integri-dade de dados, etc.

Alguns protocolos específicos da camada de aplicação serão abordados no item refe-rente ao modelo TCP/IP por serem mas conhecidos em função da Internet.

3.2 MODELO DE REFERÊNCIA TCP/IP

O nome deste modelo é oriundo dos principais protocolos da pilha: protocolo de ser-viço de rede IP (Internet Protocol) e o de serviço de transporte TCP (Transmission ControlProtocol). Apesar de não serem os únicos, são os mais populares em função da amplautilização por aplicações Internet.

Diferente do modelo OSI, os protocolos da Internet não foram criados por órgãosinternacionais de padronização, e são mantidos pelo comitê IAB (Internet Activity Board),membro da IETF (The Internet Engineering Task Force). Este comitê é responsável pelaanálise de qualquer novo protocolo para Internet. As propostas são submetidas através

Page 30: GERÊNCIA DE REDES DE COMPUTADORES LINUX

30 EDITORA - UFLA/FAEPE - Gerência de Redes de Computadores

de uma RFC (Request for Comments) que será avaliada e então publicada com ou semalterações. Se após seis meses da data de publicação o comitê não receber nenhumaobjeção a RFC torna-se um padrão Internet (IS - Internet Standard).

Este modelo possui quatro camadas, embora alguns autores se refiram a cinco2, ondecada uma executa um conjunto de funções de comunicação implementando protocolos pró-prios e fornecendo interfaces para a camadas adjacentes. Este modelo está ilustrado naFigura 3.4 e as camadas estão resumidas na Tabela 3.2.

Figura 3.4: Comunicação TCP/IP [Soares, Lemos & Colcher (1995)].

Tabela 3.2: Resumo das características do modelo TCP/IP.

Num Identificação Função4 Aplicação Interface para aplicação.

3 Transporte Conexão ponto-a-ponto.

2 Internet ou Inter-rede Endereçamento.

1 Rede Transmissão digital.

2A camada de rede é subdividida em camada física e camada de acesso à rede.

Page 31: GERÊNCIA DE REDES DE COMPUTADORES LINUX

Modelos de Referência 31

3.2.1 Camada de Rede

Esta camada não é normatizada pelo modelo em função da grande variedade de tec-nologias de rede existente como, por exemplo, X.25, ATM, FDDI, Ethernet, Token Ring eFrame Relay.

É necessário que haja uma interface para a camada internet para ser possível transmi-tir a mensagem ao endereço de destino independente do meio. Esta característica garantea possibilidade de interconexão de redes heterogêneas.

A camada de rede é responsável pelo envio de datagramas construídos pela camadainternet executando também o mapeamento entre um endereço internet para um endereçodo nível de rede.

3.2.2 Camada de Internet ou Inter-rede

Essa camada é a primeira normatizada do modelo e é responsável pelo endereça-mento, roteamento, controle de envio e recepção de datagramas. Deve garantir que paco-tes enviados de qualquer rede sejam transmitidos independente do seu destino. De formasimplificada podemos dizer que as funções desta camada são divididas entre:

Repasse ao receber um pacote no enlace de entrada deve conduzi-lo ao enlace de saída.Este termo é em geral utilizado para se referir à ação local realizada por um roteador;

Roteamento determina a rota ou caminho tomado pelo pacote. Os algoritmos que calcu-lam este caminho são denominados algoritmos de roteamento.

A camada de inter-rede define também um formato de pacote oficial e um protocolo,denominado IP (Internet Protocol), responsável pela função mais importante desta camada:roteamento. Atualmente existem duas versões deste protocolo referenciadas por IPv4 eIPv6. O formato do datagrama IPv4 está ilustrado na Figura 3.5.

É responsável ainda pela montagem do datagrama IP a partir do segmento recebidopela camada de transporte e montagem do segmento para a camada de transporte a partirde datagramas IP recebidos da camada de rede.

Esta camada possui ainda protocolos auxiliares que utilizam a estrutura de entrega dedatagramas IP:

ICMP (Internet Control Message Protocol) desempenha funções de controle, notificaçãode erros e redirecionamento de rotas. Usado por computadores e roteadores paratroca de informações de controle da camada de rede. É utilizado pela aplicação ping.

IGMP (Internet Group Management Protocol) procolo de gerenciamento de grupo quepermite aos hosts ingressar ou abandonar grupos multicast.

RIP, OSPF e BGP respectivamente Routing Information Protocol, Open Shortest Path Firste Border Gateway Protocol, são implementações de algoritmos de roteamento.

Page 32: GERÊNCIA DE REDES DE COMPUTADORES LINUX

32 EDITORA - UFLA/FAEPE - Gerência de Redes de Computadores

Figura 3.5: Formato do datagrama IPv4 [Kurose & Ross (2006)].

3.2.3 Camada de Transporte

Camada fim-a-fim, isto é, uma entidade desta camada só se comunica com a suaentidade-par do host destinatário.

O acesso das aplicações à camada de transporte é feito através de portas3 que re-cebem um número inteiro para cada tipo de aplicação. Os protocolos desta camada são oTCP e o UDP.

TCP (Transmission Control Protocol)

É um protocolo orientado à conexão, ou seja, antes que os processos de aplicaçãocomecem a trocar dados precisam estabelecer uma conexão através do envio de segmen-tos preliminares para determinação dos parâmetros de transferência. Como são trocados3 segmentos entre os hospedeiros para estabelecimento da conexão (cliente->servidor->cliente->servidor) o procedimento é usualmente chamado de 3-way handshake. Provêainda um serviço full-duplex e transferência confiável de dados.

UDP (User Datagram Protocol)

É um protocolo mais simples e mais mais leve que o TCP por não ser orientado à co-nexão nem confiável. Permite o envio imediato das mensagens recebidas de uma aplicaçãopara a camada de inter-rede após empacotá-la em um segmento UDP.

Os segmentos UDP e TCP estão ilustrados nas Figuras 3.6 e 3.7, respectivamente.

3O termo porta foi consagrado pelo uso como tradução de port porém a tradução correta seria porto.

Page 33: GERÊNCIA DE REDES DE COMPUTADORES LINUX

Modelos de Referência 33

Figura 3.6: Segmento UDP [Kurose & Ross (2006)].

Figura 3.7: Segmento TCP [Kurose & Ross (2006)].

A escolha de qual protocolo usar recai na necessidade da aplicação em obter ou nãoum serviço confiável de transferência de dados. Na Tabela 3.3 estão alguns exemplos deaplicações com os respectivos protocolos de transporte mais comumente utilizados.

Page 34: GERÊNCIA DE REDES DE COMPUTADORES LINUX

34 EDITORA - UFLA/FAEPE - Gerência de Redes de Computadores

Tabela 3.3: Aplicações da Internet e seus protocolos de transporte.

Aplicação Protocolo da camada deaplicação

Protocolo da camada detransporte

Correio Eletrônico SMTP TCP

Acesso a terminal remoto Telnet TCP

Web HTTP TCP

Telefonia por internet Proprietário Tipicamente UDP

Gerenciamento de rede SNMP Tipicamente UDP

Tradução de nomes DNS Tipicamente UDP

3.2.4 Camada de Aplicação

Formada pelos protocolos utilizados nas diversas aplicações do modelo TCP/IP. Estacamada não possui um padrão comum. O padrão é estabelecido por cada aplicação como,por exemplo, FTP, HTTP e SMTP.

A Figura 3.8 ilustra uma aplicação que envolve a comunicação entre dois processosutilizando o protocolo TCP na camada de transporte. Para que um processo envie umamensagem a outro processo em outro computador é necessário que o processo de origemconheça a localização do processo destino. Se tomarmos uma aplicação Internet comoexemplo, o endereço do processo destino é dado pelo endereço IP do computador hospe-deiro acrescido de um identificador do processo na máquina (porta).

Figura 3.8: Processos de aplicação [Kurose & Ross (2006)].

Page 35: GERÊNCIA DE REDES DE COMPUTADORES LINUX

Modelos de Referência 35

A Tabela 3.4 mostra a relação das aplicações mais usuais e as respectivas portaspadrão.

Tabela 3.4: Serviços da camada de aplicação.

Serviço Porta DescriçãoFTP 21 Transferência de arquivos.

Telnet 23 Conexão remota a um host.

SMTP 25 Envio de e-mail.

DNS 53 Tradução de nomes para endereço IP.

HTTP 80 Acesso a web.

POP3 110 Recebimento de e-mail.

MSN 569 Mensagem instantânea.

Na Figura 3.9 estão ilustrados os protocolos de cada camada.

Figura 3.9: Protocolos do conjunto TCP/IP [Stallings (2005)].

3.3 ENDEREÇAMENTO IP

Em uma rede TCP/IP, cada equipamento possui um endereço único que o identifica.Este endereço, denominado endereço IP, possui 32 bits no padrão IPv4 e 128 bits no padrãoIPv6. Utilizaremos para estudo o padrão IPv4 onde os 32 bits são divididos em quatrooctetos. Parte do endereço é utilizado para identificar a rede e parte para identificar um hostdentro da rede, conforme mosta a Figura 3.10. Os hosts com uma mesma identificação derede compõem uma sub-rede e falam entre si sem a necessidade de um roteador.

Page 36: GERÊNCIA DE REDES DE COMPUTADORES LINUX

36 EDITORA - UFLA/FAEPE - Gerência de Redes de Computadores

Figura 3.10: Endereço IP.

Estes endereços estão agrupados em classes de acordo com o número de bits desti-nado a parte que identifica a rede e a que identifica o host, conforme descrito a seguir:

Classe A o primeiro octeto identifica a rede e os três restantes o host ;

Classe B os dois primeiros octetos identificam a rede e os demais o host ;

Classe C os três primeiros octetos identificam a rede e o quarto o host ;

Classe D utilizada para definição de grupos multicast ;

Classe E reservada para implementações futuras.

A Figura 3.11 mostra as classes IP em notação binária.

Figura 3.11: Classes de endereços IP.

Os endereços IP da classe A são usados em locais onde é necessário uma únicarede com um grande número de computadores conectados. A classe B é utilizada quandoo número de redes equivale à quantidade de computadores e a classe C é utilizada em

Page 37: GERÊNCIA DE REDES DE COMPUTADORES LINUX

Modelos de Referência 37

locais que necessitam de um grande número de redes com poucas máquinas em cadauma. A classe D é reservada para multicast e a classe E para evoluções futuras.

A Tabela 3.5 mostra o intervalo de endereços para cada classe.

Tabela 3.5: Classes de endereços IP.

Classe Redes Válidas Endereços Válidos Hosts RedesA 1.0.0.0 a 126.0.0.0 1.0.0.1 a 126.255.255.254 16.777.214 126

B 128.0.0.0 a 191.255.0.0 128.0.0.1 a 191.255.255.254 65.534 16.382

C 192.0.0.0 a 223.255.255.0 192.0.0.1 a 223.255.255.254 254 2.097.150

As classes de endereços dividem os endereços em campos de tamanho fixo distin-guindo rede e host, e são utilizadas pelos protocolos de roteamento. Em 1993, foi introdu-zido o CIDR (Classless Inter-Domain Routing) usando máscaras de comprimento variáveldenominadas VLSM (Variable Length Subnet Masks). Este novo padrão permitiu melhoralocação dos endereços IP de acordo com a necessidade de cada rede. A divisão entrerede e host pode ocorrer em qualquer um dos bits de endereço, e este novo sistema foichamado de roteamento sem classe.

A notação utilizada para o intervalo de endereços CIDR começa com o endereço derede seguido por um caractere separador e o comprimento de um prefixo, em bits, definindoo tamanho da rede, exemplificado a seguir:

192.168.0.0/24 representa os 256 endereços IPv4 de 192.168.0.0 até 192.168.0.255 in-clusive, onde 192.168.0.255 é o endereço de broadcast para a rede.

Alguns endereços possuem características especiais conforme descrito nas sub-seçõesseguintes.

3.3.1 Endereços privados

Classe A: 10.0.0.0 – 10.255.255.255Classe B: 172.16.0.0 – 172.31.255.255Classe C: 192.168.0.0 – 192.168.255.255

3.3.2 Classe de loopback (local)

O endereço de loopback local (127.0.0.0) permite à aplicação endereçar um servidorna mesma máquina sem conhecer o endereço do host.

Page 38: GERÊNCIA DE REDES DE COMPUTADORES LINUX

38 EDITORA - UFLA/FAEPE - Gerência de Redes de Computadores

3.3.3 APIPA (Automatic Private IP Addressing)

É um endereço IP 169.254.x.x que é atribuído a uma interface de rede configuradapara receber um endereço IP de um servidor DHCP e não há um servidor DHCP disponível.

3.3.4 Endereço de broadcast

Os endereços de broadcast permitem à aplicação enviar dados para todos os hostsde uma rede. É identificado pelo último endereço possível na rede.

3.3.5 Máscara de sub-rede

Porção do endereço IP onde todos os bits de maior ordem são 1 e todos os bits demais baixa ordem são 0. Os bits com valor 1 representam a porção da rede do endereço, ecom valor 0 representam a porção host. Indica onde termina o endereço de rede e começao do host.

3.4 COMPARAÇÃO ENTRE OS MODELOS DE REFERÊNCIA

As principais diferenças entre os modelos são descritas a seguir e ilustradas na Fi-gura 3.12:

• quantidade de camadas diferentes;

• TCP/IP não distingue claramente os conceitos de serviço, interface e protocolo;

• OSI não foi baseado em nenhum protocolo existente;

• TCP/IP foi baseado em protocolos de fato;

• os protocolos TCP e UDP introduziram o conceito de portas, permitindo a multiple-xação da conexão;

• a camada de rede do modelo OSI prevê serviços com ou sem conexão enquantono modelo TCP/IP, apenas sem conexão;

• o modelo OSI foi definido antes dos protocolos, enquanto o modelo TCP/IP é aarquitetura resultante de protocolos que já existiam.

3.5 DESENVOLVIMENTO DE APLICAÇÕES EM REDE

As aplicações em rede podem ser de baixo nível ou de alto nível. No primeiro casoestamos falando do uso de sockets que atuam sobre a camada de transporte e no segundo,de ferramentas que atuam sobre as camadas de sessão, apresentação e aplicação.

Page 39: GERÊNCIA DE REDES DE COMPUTADORES LINUX

Modelos de Referência 39

Figura 3.12: Comparação entre os modelos OSI e TCP/IP.

3.5.1 Utilizando sockets TCP

Sockets são mecanismos genéricos de IPC com suporte a comunicação via rede, maspodem ser utilizados também para comunicação entre processos em uma mesma máquina.

O desenvolvimento de aplicações utilizando diretamente as primitivas de comunica-ção implica no conhecimento das características da rede e localização do processo ser-vidor. Utilizaremos como exemplo uma aplicação cliente/servidor tendo o protocolo TCPna camada de transporte, isto é, com procedimento de conexão, conforme ilustrado naFigura 3.13.

As funções utilizadas estão descritas a seguir com a respectiva implementação emlinguagem C e estão definidas nos cabeçalhos sys/types.h e sys/socket.h.

Socket

Função utilizada tanto pelo cliente quanto pelo servidor para abrir um socket criandoum ponto de comunicação e retornando um descritor inteiro positivo se a criação for bemsucedida, ou -1 caso contrário.

int socket(int domínio, int tipo, int protocolo)

Page 40: GERÊNCIA DE REDES DE COMPUTADORES LINUX

40 EDITORA - UFLA/FAEPE - Gerência de Redes de Computadores

Figura 3.13: Comunicação TCP utilizando sockets.

domínio seleciona a família de protocolos entre:• AF_UNIX, utilizado somente entre processos Unix e;• AF_INET, para processos em computadores diferentes.

tipo define o tipo de conexão entre:• SOCK_STREAM, confiável, bidirecional e orientada a conexão, tipicamente

implementado pelo TCP e;• SOCK_DGRAM, não confiável, sem conexão e tipicamente implementada pelo

UDP.

protocolo especifica o protocolo que será utilizado embora exista apenas um disponívelpara cada tipo. O valor 0 (zero) implica no uso do padrão:

• tipo SOCK_STREAM implica em TCP;• tipo SOCK_DGRAM implica em UDP.

Bind

Associa um socket a uma conexão física identificada pelo número de uma porta emconexões do tipo AF_INET ou por um caminho em conexões AF_UNIX.

int bind (int socket, const struct sockaddr *address, size_t address_len)

socket descritor retornado pela chamada à função socket;

address_len tamanho em bytes da estrutura apontada por *address;

Page 41: GERÊNCIA DE REDES DE COMPUTADORES LINUX

Modelos de Referência 41

address estrutura utilizada para definir o nome da família e detalhes do protocolo. Paradomínios AF_INET é utilizada a estrutura sockaddr_in definida por:

struct sockaddr_in{

short sin_family; // AF_INET

u_short sin_port; // número da porta

struct in_addr sin_addr; // INADDR_ANY, para conexão de

// qualquer host

char sin_zero[8]; // para que o tamanho seja igual

// ao de sockaddr

}

Listen

Um servidor pode processar diversas conexões em uma mesma porta criando pro-cessos filhos ou threads para atender às requisições. Estes servidores são chamados deconcorrentes. No entanto, enquanto o servidor está processando uma requisição de cone-xão não poderá atender a novas requisições, e estas serão armazenadas em uma fila atéserem atendidas. A função listen especifica quantas requisições poderão ficar pendentesantes que o servidor recuse a conexão enviando um ECONNREFUSED ao processo cliente.

int listen (int socket, int backlog)

socket descritor retornado pela chamada à função socket;

backlog número máximo de requisições pendentes.

As funções socket, bind e listen podem ser agrupadas para formar uma funçãode inicialização do processo servidor recebendo como parâmetro a porta que será utilizada.

int open_servidor(unsigned short port){

int sock;

struct sockaddr_in server;

sock = socket(AF_INET,SOCK_STRAM,0);

if (sock < 0) return -1;

server.sin_family = AF_INET;

server.sin_addr.s_addr = INADDR_ANT;

server.sin_port = htons((short) port);

Page 42: GERÊNCIA DE REDES DE COMPUTADORES LINUX

42 EDITORA - UFLA/FAEPE - Gerência de Redes de Computadores

if ( bind(sock, (struct sockaddr *)&server, sizeof(server)) < 0 ) \

return -1;

if (listen(sock, MAXBACKLOG) < 0 ) return -1;

return sock;

}

Neste exemplo, a constante MAXBACKLOG é definida anteriormente e a função htons(host to network short) faz a conversão para o tipo necessário e deve ser usada para mantera portabilidade.

Accept

Depois da criação de uma interface para a conexão física, o servidor deverá aguardarpor uma conexão executando a função accept. Para um mesmo socket poderão ser efe-tuadas diversas conexões. Cada conexão receberá um descritor próprio como retorno dafunção.

int accept (int socket, struct sockaddr *address, int *address_len)

socket descritor retornado pela chamada à função socket;

address_len tamanho em bytes da estrutura apontada por *address;

address estrutura utilizada para definir o nome da família e detalhes do protocolo. Difere dafunção bind por utilizar informações do cliente que fez a conexão no campo s_addr.

Connect

Função executada pelo processo cliente para estabelecer conexão com um servidor.É necessário que o servidor esteja esperando uma conexão, ou seja, que já tenha execu-tado o accept.

int connect (int socket, struct sockaddr *address, size_t address_len)

socket descritor retornado pela chamada à função socket;

address_len tamanho em bytes da estrutura apontada por *address;

address estrutura utilizada para identificar o servidor.

As funções socket e connect podem ser agrupadas para formar uma função queestabelece uma conexão com o servidor, recebendo como parâmetros a porta e o endereço

Page 43: GERÊNCIA DE REDES DE COMPUTADORES LINUX

Modelos de Referência 43

IP do servidor.

int open_cliente(unsigned short port, char * host){

struct sockaddr_in server;

struct hostent *hp;

int sock;

int retval;

sock = socket (AF_INET, SOCK_STREAM,0);

if (sock < 0) return -1;

server.sin_addr.s_addr = inet_addr(host);

server.sin_port = htons((short)porta);

server.sin_family = AF_INET;

memset( &(server.sin_zero), ’\0’ , sizeof(server.sin_zero));

retval = connect(sock, (struct sockaddr *)&server, sizeof(server));

if (retval == -1) {

close(sock);

return -1;

}

return sock;

}

Close

Encerra uma conexão ou um socket, dependendo do descritor que for utilizado comoparâmetro.

int close (int socket)

socket descritor do socket ou da conexão.

Write ou Send

São utilizadas para enviar dados através de um socket. A função write é executadada mesma forma que na escrita em arquivos em disco, onde o descritor do arquivo é odescritor do socket, porém a função send oferece recursos adicionais através de flags es-peciais. Ambas retornam a quantidade de bytes escritos ou -1 em caso de erro.

Page 44: GERÊNCIA DE REDES DE COMPUTADORES LINUX

44 EDITORA - UFLA/FAEPE - Gerência de Redes de Computadores

int write(int socket, char *msg, size_t msg_len)

int send(int socket, char *msg, size_t msg_len, int flags)

socket descritor retornado pela chamada à função socket;

msg mensagem que será transmitida;

msg_len tamanho em bytes de msg;

flags modificadores de comportamento:• MSG_OOB, permite envio mensagens out-of-band4;• MSG_DONTROUTE, mensagem deve ser entregue diretamente ao destino,• MSG_DONTWAIT, processo não é bloqueado enquanto a mensagem é envi-

ada;• MSG_NOSIGNAL, desabilita a emissão do sinal SIGPIPE quando o socket

destinatário quebra a conexão;• MSG_CONFIRM, habilita o envio de mensagem de confirmação para o reme-

tente.

Read ou Recv

São funções utilizadas para receber uma mensagem através de um socket. De formasemelhante ao write, ambas executam a mesma função, porém recv permite o uso deflags adicionais. Ambas retornam a quantidade de bytes lidos ou -1 em caso de erro.

int read(int socket, char *msg, size_t msg_len)

int recv(int socket, char *msg, size_t msg_len, int flags)

flags modificadores de comportamento:• MSG_OOB, permite recepção de mensagens out-of-band ;• MSG_PEEK, desabilita a retirada da mensagem da fila de recepção quando

for recebida;• MSG_WAITALL, habilita o bloqueio do processo até que a mensagem seja

totalmente recebida ou que ocorra um erro;• MSG_NOSIGNAL, desabilita a emissão do sinal SIGPIPE quando o remetente

deixa de existir;• MSG_TRUNC, habilita a recepção de mensagem com o tamanho real do pa-

cote recebido mesmo que ultrapasse o tamanho do argumento msg_len;• MSG_ERRQUEUE, especifica que os erros de conexão devem ser tratados

em uma fila especial.

4Técnica para transmitir mensagens de controle em um canal separado.

Page 45: GERÊNCIA DE REDES DE COMPUTADORES LINUX

Modelos de Referência 45

Exemplo: O processo cliente faz uma conexão com o servidor que responderá com adata e hora corrente. O cliente utiliza esta resposta para ajustar o próprio relógio. Edite osprogramas das Figuras 3.14 e 3.15 e os compile utilizando os seguintes comando:

gcc -o client client.c (para o cliente)

gcc -o server sever.c (para o servidor)

Execute cada um na mesma máquina (em sessões diferentes) ou em máquinas dife-rentes da seguinte forma:

cliente: ./client ip porta

servidor: ./server porta

// arquivo cliente.c

#include <stdio.h>

#include <sys/socket.h>

#include <netdb.h>

#include <errno.h>

#include <time.h>

#define BLKSIZE 1024

int open_cliente(unsigned short port, char * host);

int main(int argc, char *argv[]){

unsigned short port;

int fd;

time_t data;

if (argc!=3) {

printf("Utilizacao: %s host port\n\r",argv[0]);

exit(1);

}

port = (unsigned short) atoi(argv[2]);

fd = open_cliente(port,argv[1]);

if (fd<0) {

perror("Conexao");

exit(1);

}

printf("Conexao estabelecida com %s\n\r",argv[1]);

/* a conexao ja e a motivacao para o servidor enviar o dado desejado*/

read(fd,&data,4);

stime(&data); //ajuste do relógio

close(fd);

}

Figura 3.14: Código do programa cliente.c

Page 46: GERÊNCIA DE REDES DE COMPUTADORES LINUX

46 EDITORA - UFLA/FAEPE - Gerência de Redes de Computadores

// arquivo servidor.c

#include <stdio.h>

#include <sys/socket.h>

#include <netdb.h>

#include <errno.h>

#include <time.h>

#define BLKSIZE 1024

#define MAXBACKLOG 5

int open_servidor(unsigned short port);

int main(int argc, char *argv[]){

unsigned short port;

int fd, conexao, sock;

time_t data;

struct sockaddr_in client;

int len = sizeof(struct sockaddr);

if (argc!=2) {

printf("Utilizacao: %s port\n\r",argv[0]);

exit(1);

}

port = (unsigned short) atoi(argv[1]);

if ((fd = open_servidor(porta)) == -1) {

perror("Socket");

close(fd);

exit(1);

}

for (; ;){

conexao = accept (fd, (struct sockaddr *) (&client), &len)) ;

if (conexao >= 0){

printf("Conectado... \r\n");

time(&data); // obtém data/hora corrente

write(conexao,&data,sizeof(data));

close(conexao);

}

else perror("Conexão");

}

}

Figura 3.15: Código do programa servidor.c

3.6 UTILIZANDO RPC

RPC (Remote Procedure Call) é o nome genérico para soluções que permitem clien-tes chamarem procedimentos remotos como se fossem procedimentos locais. O desenvol-

Page 47: GERÊNCIA DE REDES DE COMPUTADORES LINUX

Modelos de Referência 47

vimento de aplicações baseadas em RPC são feitas supondo transparência em relação alocalização física e a arquitetura do servidor.

O sistema de arquivos NFS é um exemplo de implementação baseada em RPC. Paraque um diretório seja compartilhado através de uma rede é necessário que o servidor ex-porte um determinado diretório e o cliente monte este diretório em um diretório local. Apósestes procedimentos, o diretório é visto localmente pelo usuário que executou a montagem.

Procedimentos para o servidor:

• habilitar os serviços nfs e portmap;

• editar o arquivo /etc/exports inserindo uma linha para cada diretório, como porexemplo: /dir_compart *(rw,insecure,sync,all_squash)

• salvar o arquivo e executar o comando exportfs -r

Procedimentos para o cliente:

• criar um diretório para ser ponto de montagem;

• montar: mount -t nfs ip_do_servidor:/dir_compart /dir_criado

Para que seja possível implementar esse grau de transparência é necessário utilizar-mos uma ferramenta que construa uma camada de abstração entre a aplicação e a rede.Como exemplo será utilizado a ferramenta RPCGen.

A entrada para o gerador RPCGen é um arquivo em formato XDR especificando quefunções irão executar remotamente. Note que esse arquivo não contém o código da funçãoe sim uma identificação, os parâmetros que serão passados para cada função e o tipo deretorno de cada função.

Exemplo: arquivo rand.x

program RAND_PROG{

version RAND_VERS{

void INIT_RANDOM(long)=1;

double PROX_RANDOM(void)=2;

} = 1;

} = 0x31111111;

A função INIT_RANDOM inicializa uma seqüência de números aleatórios, recebe comoparâmetro um número inteiro longo, a semente da série, e não retorna valor.

A função PROX_RANDOM obtém o próximo número da seqüência em precisão dupla,logo não envia parâmetros.

Page 48: GERÊNCIA DE REDES DE COMPUTADORES LINUX

48 EDITORA - UFLA/FAEPE - Gerência de Redes de Computadores

O RPCGen irá gerar os stubs do cliente e do servidor, além de um arquivo makefile,e os esqueletos da aplicação cliente e servidor com as chamadas às funções. A opção-C indica que os arquivos estarão em formato C ANSI e -a solicita a geração de todos osarquivos.

rpcgen -C -a rand.x

Após a execução podemos verificar que foram gerados os seguintes arquivos:

makefile.rand compila cliente e servidor;

rand_clnt.c stub do cliente (não alterar);

rand_svc.c stub do servidor (não alterar);

rand.h cabeçalho com as definições necessárias;

rand_client.c esqueleto do cliente;

rand_server.c esqueleto do servidor.

Os arquivos stub não devem ser alterados pois estão configurados adequadamente.Uma boa prática é compilar o cliente e o servidor, utilizando o makefile fornecido, paraverificar se não houve nenhum erro na digitação do arquivo rand.x, antes de qualqueralteração. Os arquivos contendo os esqueletos do cliente e servidor serão completadoscom o código referente a própria aplicação sem se preocupar com os detalhes da rede.

3.7 WEB SITES RECOMENDADOS

Tutoriais diversos http://www.projetoderedes.com.br

Protocolos e padrões http://www.networksorcery.com/

Material de apoio http://wps.aw.com/br_kurose_redes_3

RFCs http://www.rfc-editor.org/

IAB http://www.iab.org

IETF http:www.ietf.org

ABUSAR http://www.abusar.org

Page 49: GERÊNCIA DE REDES DE COMPUTADORES LINUX

4COMPONENTES FÍSICOS DE REDE DE

COMPUTADORES

Uma rede de computadores é composta por equipamentos que viabilizam a conexãofísica entre os nós da rede. O tipo e a quantidade de equipamentos exigidos dependefundamentalmente do tamanho e dos objetivos da rede. A Figura 4.1 ilustra a conexãoentre quatro redes distintas com acesso a Internet.

Figura 4.1: Um exemplo de conexão entre redes.

O objetivo deste capítulo é descrever os equipamentos necessários para que a rededo exemplo ou qualquer outra rede possam ser implantadas.

Page 50: GERÊNCIA DE REDES DE COMPUTADORES LINUX

50 EDITORA - UFLA/FAEPE - Gerência de Redes de Computadores

4.1 INTERFACE DE REDE OU NIC (NETWORK INTERFACE CARD)

É a interface entre o computador e a rede. O padrão de interface utilizado dependediretamente de características físicas da rede e da forma de interface com o computador,conforme descrito a seguir:

Interface com o computador definida pelo barramento que é utilizado. Os padrões maiscomuns são ISA e PCI;

Conector da Placa especifica o tipo de interface a ser utilizada pela placa de rede paraacesso ao meio físico. Os principais tipos são o RJ-45 para cabeamento TP-10BaseTe BNC, um pouco mais antigo, para cabo coaxial 10Base2;

Padrão de interconexão é o padrão utilizado para conexão em um rede local. Os princi-pais tipos são Ethernet, Fast-Ethernet, Token-Ring, FDDI e ATM.

Velocidade de Transmissão é a velocidade com que as informações trafegam pelo meiofísico. Para redes Ethernet esta velocidade é tipicamente de 10 Mbps ou 100 Mbps.

A interface de rede tem como principais funções mover os dados para dentro da me-mória RAM do computador, gerar o sinal elétrico que trafega através do cabo da rede econtrolar o fluxo de dados no sistema de cabeamento da rede. Para compatibilizar a formaserial com que os dados trafegam pela rede e a forma paralela como são tratados pelo com-putador, a interface de rede possui uma área de armazenamento temporário, denominadabuffer.

4.2 REPETIDORES E HUBS

Operam na camada física do modelo OSI atuando apenas repetindo o sinal (0 ou 1).Permite a conexão de dois segmentos de rede e até tipos diferentes de cabeamento. Re-cebem e amplificam o sinal proveniente de um segmento de rede e repetem esse mesmosinal para outro segmento. Um hub atua de forma semelhante a um repetidor multiportacentralizando conexões de rede. O nome é genericamente utilizado para definir um dispo-sitivo concentrador porém existem tipos diferentes deste equipamento. São classificadosem:

Passivos Concentradores de cabos que não possuem qualquer tipo de alimentação elé-trica e funcionam retransmitindo apenas os sinais recebidos para todas as estaçõesnele conectadas. Como não há amplificação de sinal, o comprimento total dos doistrechos de cabo entre uma estação e outro, através do hub, não pode exceder os 100metros permitidos pelos cabos de par trançado;

Page 51: GERÊNCIA DE REDES DE COMPUTADORES LINUX

Componentes Físicos de Rede de Computadores 51

Ativos possuem a capacidade de regenerar os sinais que recebem antes de enviá-los paratodas as estações conectadas, de forma semelhante a do repetidor. Esta caracterís-tica permite que cada trecho de cabo, entre a estação e o hub, possa ter até 100metros.

Inteligentes permitem monitoramento via software capaz de detectar e até mesmo desco-nectar da rede estações com problemas;

Empilháveis permite a ampliação do número de portas, conectando uns aos outros atra-vés de uma porta destinada para este fim, com características específicas para cadafabricante. Os hubs são conectados entre si por um barramento de alta velocidade,conforme ilustrado na Figura 4.2, passando a se comportarem como um único equi-pamento.

Existe ainda a possibilidade de expandir o número de portas utilizando hubs não em-pilhávies. Se os hubs possuírem uma porta up link, destinada justamente a esta conexão,basta conectar os hubs utilizando estas portas. É possível ainda utilizar uma porta qualquerpara a mesma finalidade utilizando cabos do tipo cross-over.

Figura 4.2: Hubs empilháveis.

4.3 SWITCH

É uma evolução do hub com funções de bridge e roteador. Permite a troca de mensa-gens entre várias estações ao mesmo tempo, pois ao invés de replicar os dados recebidospara todas as suas portas, ele envia os dados somente para o computador destinatário.

Page 52: GERÊNCIA DE REDES DE COMPUTADORES LINUX

52 EDITORA - UFLA/FAEPE - Gerência de Redes de Computadores

Esta seleção é feita através da análise da camada de enlace de dados que possui o ende-reço MAC da placa de rede.

Possuem basicamente dois modos de operação: cut_through e store-and-forward.

cut_through os quadros são repassados imediatamente após a identificação do destinoe a respectiva porta de saída. Esta transmissão acontece simultaneamente com orecebimento do restante do quadro pela porta de entrada.

store-and-forward o quadro deve ser recebido inteiramente antes de iniciar a transmissãopara o endereço de destino. Os quadros são recebidos integralmente antes de seremtransmitidos, possibilitando realizar um controle de erros.

4.4 BRIDGE

Conecta duas redes com camadas de enlace diferentes mas com uma mesma camadade rede. Possui a capacidade de segmentar uma rede local em várias sub-redes, e com istoconsegue diminuir o fluxo de dados. A principal função é filtrar pacotes entre segmentosde LANs, repetindo apenas os pacotes que, para atingirem o destino, precisam passar peloequipamento. Atua na camada de enlace do modelo OSI.

4.5 ROTEADOR

É o equipamento responsável pela interligação entre redes locais e redes remotas.Permite que uma máquina de uma LAN comunique-se com máquinas de outra LAN remota,como se estivessem em uma só rede. Interconecta duas redes que utilizam a mesmacamada de transporte, porém, possuem camadas de redes diferentes. Roteadores filtramo tráfego baseados nos campos de endereçamento contido no cabeçalho do protocolo darede, atuando como pontes na camada de Rede.

A Figura 4.3 mostra a conexão entre duas redes usando roteador.

Figura 4.3: Conexão entre duas redes através de um roteador.

Page 53: GERÊNCIA DE REDES DE COMPUTADORES LINUX

Componentes Físicos de Rede de Computadores 53

Em função do modelo TCP/IP, o protocolo IP é o responsável por produzir o conteúdonecessário às funções de roteamento. Os roteadores não analisam os quadros físicos esim os datagramas IP produzidos pelo protocolo. O papel fundamental do roteador é entãoescolher um caminho para o datagrama.

4.6 GATEWAY

Permite a comunicação entre duas redes de arquiteturas diferentes. Atua em todasas camadas do modelo OSI. Resolve problemas de diferença entre tamanho máximo depacotes, forma de endereçamento, técnicas de roteamento, controle de acesso, timeout,etc. Em geral, é implementado por um computador executando um software que realizaesta função.

4.7 MODEM (MODULADOR E DEMODULADOR)

É o dispositivo conversor de sinais digitais para comunicação entre computadoresatravés de uma linha analógica. O padrão atual de velocidade para modems analógicos éde 56 Kbps. No entanto, serviços digitais como o ADSL e CATV, atualmente mais populares,levaram este limite aos 8 Mbps.

Os serviços ADSL utilizam a rede telefônica convencional e permitem ainda que alinha não fique ocupada pois o modem contém um componente que separa voz e dados.

As prestadoras de serviço de TV a cabo por assinatura utilizam os chamados cablemodem para prover acesso à Internet. Estes modems recebem o sinal através de umaextensão do cabo coaxial que recebe os sinais da televisão.

A Figura 4.4 mostra o uso de um modem.

Figura 4.4: Funcionamento de um modem.

Os modems ADSL podem funcionar em modo bridge ou roteador, permitindo diferen-tes topologias para compartilhamento de acesso em uma rede.

Em modo bridge deverá estar conectado diretamente a um dos computadores da rede,através de uma interface de rede, que terá a função de gateway. Este computador se co-

Page 54: GERÊNCIA DE REDES DE COMPUTADORES LINUX

54 EDITORA - UFLA/FAEPE - Gerência de Redes de Computadores

necta a rede local através de uma segunda interface de rede, com IP local. O compartilha-mento da conexão é feito por software e os demais computadores só poderão se conectardepois que o gateway estiver conectado.

A Figura 4.5 mostra o compartilhamento de Internet via software.

Figura 4.5: Compartilhamento via software.

Em modo roteador, o modem está diretamente conectado a rede local e à Internet.Todos os computadores podem se conectar através do roteador que também pode serresponsável pela distribuição de endereços IP locais. Apenas o roteador terá um IP realatribuído pelo provedor de serviço.

A Figura 4.6 mostra o compartilhamento em Internet via hardware.

Figura 4.6: Compartilhamento através de um roteador.

4.8 CABEAMENTO

O projeto de cabeamento de uma rede é um fator de extrema importância para o bomdesempenho de uma rede. A decisão envolve definições relacionadas a taxa de transmis-são, largura de banda, facilidade de instalação, imunidade a ruídos, confiabilidade, custosde interface, exigências geográficas e disponibilidades de componentes no mercado.

Page 55: GERÊNCIA DE REDES DE COMPUTADORES LINUX

Componentes Físicos de Rede de Computadores 55

O cabeamento de rede local mais popular nos dias de hoje atende ao padrão Ethernete é baseado em cabo par trançado sem blindagem, de forma que os computadores seconectam através de um equipamento concentrador. Os procedimentos básicos incluem ouso de tomadas RJ-45, Figura 4.7, de forma que os computadores se conectem às tomadase não ao concentrador diretamente.

Figura 4.7: Tomadas RJ-45.

As tomadas, por sua vez, se conectam ao chamado Patch Panel, Figura 4.8, que éum sistema passivo contendo apenas conectores. Os painéis são então instalados em umrack. O uso de Patch Panel facilita muito a manutenção da rede, uma vez que muitas dastarefas podem ser resolvidas no próprio painel. Para tal, é necessário que cada porta doPatch Panel esteja rotulada de forma a identificar a qual equipamento está conectada.

Figura 4.8: Patch Panel com 48 portas.

Em função do número de computadores conectados haverá necessidade de quanti-dades e tipos diferentes de equipamentos. A simples adição de um switch ou um hub podenão ser suficiente para garantir uma nova instalação ou mesmo a remoção de um compu-tador da rede. Em virtude desta constatação é que as técnicas de cabeamento estruturadose desenvolveram. O objetivo é organizar a rede fisicamente para ser possível gerenciá-lade forma mais precisa e simples. As motivações para utilização de cabeamento estruturadoincluem:

• dificuldade ou incapacidade de adaptação às mudanças de tecnologia;

Page 56: GERÊNCIA DE REDES DE COMPUTADORES LINUX

56 EDITORA - UFLA/FAEPE - Gerência de Redes de Computadores

• saturação de dutos ou outros suportes para cabeamento;

• falta de flexibilidade para mudanças na organização do espaço físico;

• diversidade de meios físicos;

• falta de segurança;

• dificuldades de acesso em redes departamentais.

Os padrões de cabeamento estruturado obedecem às normas propostas pela EIA/TIAde 1991, atualmente na versão 568B, de 2001. No Brasil, a norma utilizada é definidapela ABNT através da NBR 14565, muito semelhante a da EIA/TIA e prevê os seguinteselementos funcionais:

SET (Sala de Entrada de Telecomunicações) local onde se dá a entrada de cabos exter-nos originados na concessionária do serviço;

Sala de equipamento local onde ficam os principais equipamentos de telecomunicação deuma instalação;

Armário de telecomunicações local onde ficam os equipamentos de interconexão entreo backbone e cabeamento interno;

Área de trabalho local onde fica o equipamento terminal;

Cabeamento primário (backbone) cabos que interligam os armários de telecomunica-ções;

Cabeamento secundário ou horizontal cabos que ligam os armários de telecomunica-ções às áreas de trabalho.

A essência do cabeamento estruturado está diretamente ligada ao futuro da rede queestá sendo instalada. Alterações futuras em uma instalação física podem ser altamentecustosas além de gerar um enorme gasto de tempo fazendo com que os esforços investidosem um projeto estruturado sejam recompensados.

4.9 WEB SITES RECOMENDADOS

EIA http://www.eia.org

ABNT http://www.abnt.org.br

Page 57: GERÊNCIA DE REDES DE COMPUTADORES LINUX

5FERRAMENTAS PARA GERÊNCIA DE

REDES

Com o crescimento e avanço rápidos das redes de computadores, tornou-se necessá-ria uma maneira eficiente de gerenciá-las. Os principais fabricantes e entidades de padro-nização definiram alguns protocolos de gerenciamento de dispositivos. O uso de protocolosfornece um padrão para sondarmos informações de diversos dispositivos diferentes, utili-zando um mesmo formato (protocolo).

Este capítulo aborda o protocolo SNMP e as ferramentas ntop e mrtg para gerênciade redes.

5.1 SNMP: SIMPLE NETWORK MANAGEMENT PROTOCOL

O SNMP – Simple Network Management Protocol ou Protocolo Simples de Gerencia-mento de Rede – é o mais utilizado com TCP/IP para gerência de redes. Apesar do nome,o SNMP é muito complexo, com bastante recursos. Ele permite, entre outras funções, queos computadores da rede sejam rastreados por programas de gerência de redes, tais comoo mrtg e o ntop.

Atuando na camada de aplicação, o SNMP conta atualmente com duas versões:SNMPv1 e SNMPv2. Ambas possuem muitos procedimentos comuns, sendo que a SNMPv2possui algumas funcionaliddes extras. O SNMPv3 está em fase de testes no momento deescrita deste texto.

Para utilizar o protocolo SNMP é necessário que haja um programa servidor e umprograma cliente. O programa servidor é chamado de agente e representa aquilo que estásendo gerenciado. Já o cliente é chamdo de gerente, e pode ser desde utilitários de linhade comando simples até programas gráficos rodando em plataforma web.

Os agentes podem ser quaisquer equipamentos que utilizam TCP/IP, tais como esta-ções de tabalho, computadores executando serviços diversos, hubs, switches, roteadores,entre outros. Os agentes serão os equipamentos monitorados para fornecerem informaçõestais como: suas configurações, estado e conexões de rede.

Basicamente, existem duas formas de comunicação entre os gerentes e agentes:

Page 58: GERÊNCIA DE REDES DE COMPUTADORES LINUX

58 EDITORA - UFLA/FAEPE - Gerência de Redes de Computadores

• o gerente solicitando informações ao agente, como por exemplo, a taxa de dadosque entra por um determinada interface;

• o agente notificando o gerente sobre algum novo evento ou condição anormal,como por exemplo, que uma interface de rede parou de funcionar.

5.1.1 Mensagens do protocolo SNMP

O SNMP é um protocolo que trabalha com simples requisições/respostas. Seis tiposde operações/mensagens podem ser trocadas entre agentes e gerentes:

Get gerente requisita uma informação ao agente;

GetNext gerente requisita a próxima informação ao agente a partir da última recebida, deacordo com uma tabela ou lista existente no agente;

GetBulk introduzido pelo SNMPv2, esta mensagem veio para facilitar a aquisição de váriasinformações, sem a necessidade de usar repetidamente o GetNext ;

Set permite ao gerente ajustar variáveis no agente;

Trap usado pelo agente para informar ao gerente sobre algum evento;

Inform introduzido pelo SNMPv2, permite que um gerente envie informações do tipo trappara outro gerente.

5.1.2 Modelo de gerenciamento de redes

A Figura 5.1 mostra os componentes que constituem um gerenciamento de redeTCP/IP.

Os componentes são:

SNMP – Simple Network Management Protocol protocolo utilizado para a comunicaçãoentre hosts.

MIB – Management Information Base é um banco de dados que contém a coleção de in-formações gerenciadas organizadas hierarquicamente, e que os agentes manipulam;

SMI – Structure of Management Information é a linguagem usada para definir as variá-veis de configuração gerenciadas que residem nos agentes.

5.2 NTOP – NETWORK TOP

O ntop1 é um monitor de tráfego de rede que exibe informações sobre o uso damesma, e trabalha de forma similar ao comando top do mundo Unix. O ntop foi escritode forma portável, podendo tanto ser utilizado em ambientes Unix quanto Windows.

1Página oficial do projeto: http://www.ntop.org.

Page 59: GERÊNCIA DE REDES DE COMPUTADORES LINUX

Ferramentas para Gerência de Redes 59

Figura 5.1: Componentes do protocolo SNMP.

O usuário do ntop pode usar a ferramenta tanto via web quanto no shell. Quando uti-lizado via web, o usuário através de um browser pode acompanhar vários detalhes da suarede, de uma forma mais amigável do que utilizado via shell. Entre as informações forne-cidas pelo ntop pode-se observar o tráfego de uma rede de acordo com diversos critérios,estatísticas do tráfego, distribuição do tráfego IP e muito mais.

O ntop captura os pacotes da rede local e gera diversas estatísticas, tais como: usode rede classificado por protocolo, por origem, por destino, matriz de tráfego, e outras. Ainterface é simples e permite muitas conclusões úteis sobre o que se passa na rede.

A Figura 5.2 mostra um relatório gerado pelo ntop.

Detalhes sobre download, formas de instalação, configuração, documentação, e muitomais, podem ser obtidos em http://www.ntop.org.

5.3 MRTG – MULTI ROUTER TRAFFIC GRAPHER

O mrtg2 é uma ferramenta para monitorar o tráfego de dispositivos de rede, tais comoroteadores, servidores, switches e outros. Além de coletar as informações estatísticas decada equipamento, o mrtg ainda é responsável pela criação das páginas HTML e dos gráfi-

2Página oficial do projeto: http://oss.oetiker.ch/mrtg/.

Page 60: GERÊNCIA DE REDES DE COMPUTADORES LINUX

60 EDITORA - UFLA/FAEPE - Gerência de Redes de Computadores

Figura 5.2: Exemplo de uso do ntop (fonte: http://www.ntop.org).

cos que serão exibidos. Ele gera páginas HTML contendo gráficos que visualmente repre-sentam do tráfego monitorado.

Baseado em Perl e linguagem C, o mrtg trabalha sobre o UNIX e Windows NT/2000/XP.Ele faz a coleta de dados via SNMP, e por isso, o equipamento a ser monitorado precisaoferecer suporte a este protocolo.

Embora o seu foco seja o acompanhamento de componentes de rede através do pro-tocolo SNMP, o mrtg pode ser utilizado para verificar o funcionamento local do servidorou estação de trabalho mesmo sem instalar o suporte a SNMP, utilizando apenas a suainterface com scripts shell.

Como o mrtg pode monitorar qualquer variável SNMP, ele também pode ser utilizadopara monitorar carga do sistema, uso de memória e disco, sessões abertas, e muito mais.

A Figura 5.3 mostra gráficos gerados pelo mrtg.Detalhes sobre download, formas de instalação, configuração, documentação, e muito

mais, podem ser obtidos em http://oss.oetiker.ch/mrtg/.

Page 61: GERÊNCIA DE REDES DE COMPUTADORES LINUX

Ferramentas para Gerência de Redes 61

Figura 5.3: Exemplo de uso do mrtg (fonte: http://oss.oetiker.ch/mrtg/).

5.4 WEB SITES RECOMENDADOS

mrtg http://oss.oetiker.ch/mrtg/

ntop – network top http://www.ntop.org/overview.html

Simple Network Management Protocol (SNMP) http://www.cisco.com/univercd/cc/td/doc/cisintwk/ito_doc/snmp.htm

Page 62: GERÊNCIA DE REDES DE COMPUTADORES LINUX

62 EDITORA - UFLA/FAEPE - Gerência de Redes de Computadores

Page 63: GERÊNCIA DE REDES DE COMPUTADORES LINUX

REFERÊNCIAS BIBLIOGRÁFICAS

[Androutsellis & Spinellis (2004)] Androutsellis, S. & Spinellis, D. A survey of peer-to-peercontent distribution technologies, ACM Computing Surveys, vol. 36, num. 4, p.335-371,2004

[Kurose & Ross (2006)] Kurose, J. F. & Ross, K. W. Redes de Computadores e a Internet,Terceira Edição, Editora Addison Wesley, 2006.

[Ribeiro (2005)] Ribeiro, U. Sistemas Distribuídos – Desenvolvendo aplicações de alta per-formance no Linux, Axcel Books do Brasil Editora, 2005.

[Robbins & Robbins (1996)] obbins K.A. & Robbins S. Practical Unix Programming, Pren-tice Hall, 1996.

[Saydam & Magedanz (1996)] Saydam, T. & Magedanz, T. From networks and network ma-nagement into service and service management, Jurnal of network and system mana-gement, vol. 4, num. 4, p.345-348, 1996.

[Soares, Lemos & Colcher (1995)] Soares, L. F. G.; Lemos, G. & Colcher, S. Redes de com-putadores: Das LANs, MANs e WANs às Redes ATM, Segunda Edição, Rio de Janeiro,Editora Campus, 1995.

[Stallings (2005)] Stallings, W. Redes e Sistemas de Comunicação de Dados – Teoria eaplicações corporativas, Editora Campus, 2005.

[Stevens (1998)] tevens, W.R. Unix Network Programming, Vol 1, 2nd ed, Prentice Hall,1998.

[Tanenbaum (2003)] Tanenbaum, A. S. Redes de Computadores, Editora Campus, Quartaedição, 2003.