Baixe o app para aproveitar ainda mais
Prévia do material em texto
Infraestrutura de dados e de redes APRESENTAÇÃO A infraestrutura de redes é a área da computação que apresenta os meios físicos e lógicos utilizados pelos computadores para comunicação e troca de informações. Nesta Unidade de Aprendizagem estudaremos as principais características de redes empresariais, meios de comunicação fixa e móvel, a importância das tecnologias de redes e a relação delas com as pessoas e as organizações. Bons estudos. Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados: Determinar os tipos mais conhecidos de redes empresariais.• Identificar protocolos, padrões de comunicação e terminologias de redes.• Relacionar as características das redes móveis com as suas respectivas capacidades.• DESAFIO Você é o técnico de informática responsável pela infraestrutura de rede de uma grande empresa. Essa empresa é composta por dois prédios e, em ambos, equipes de programação trabalham em conjunto para desenvolver sistemas de e-commerce. Inicialmente, você solicitou que sua equipe cheque o cabeamento utilizado para interligar as edificações, e notou-se que a comunicação é realizada através de cabos UTP (cabos de par trançado). Esse tipo de cabo não é indicado para a comunicação de longas distâncias. Sabendo da incapacidade de se utilizar cabos UTP para comunicação de longa distância, como você resolveria esse problema? INFOGRÁFICO O infográfico apresenta o conceito geral que permeia a infraestrutura de dados, transmissão e redes. CONTEÚDO DO LIVRO Tanto no trabalho quanto na vida pessoal, precisamos ou esperamos ter acesso imediato a textos, tweets, mídias sociais, bancos de dados, notícias, aplicativos, etc. Esperamos que a Internet forneça-nos acesso rápido e fácil ao que precisamos, sem que tenhamos de fazer qualquer esforço. A mesma expectativa se aplica às redes. Para a maioria das pessoas, as redes são transparentes e invisíveis até que o serviço demonstre algum problema (fique lento), ou que o inesperado aconteça – a rede caia ou seja desativada de modo inesperado. No capítulo Infraestrutura de Dados e Redes, abordaremos os tipos de redes empresariais existentes, os protocolos utilizados para que conceitos como segurnça por exemplo sejam garantidos nessas redes e suas limitações e características. Boa leitura! INFRAESTRUTURA DE REDES Antonio Leães Infraestrutura de dados e redes Objetivos de aprendizagem Ao final deste texto, você deve apresentar os seguintes aprendizados: Determinar os tipos mais conhecidos de redes empresariais. Identificar protocolos, padrões de comunicação e terminologias de redes. Relacionar as características das redes móveis com as suas respectivas capacidades. Introdução Neste capítulo, você vai estudar os principais tipos de redes de dados empresariais identificados na atualidade, bem como verificar as suas características e analisar como funcionam. Você também vai identificar os tipos de protocolos-padrão de comunicação das redes e as suas ter- minologias. Por fim, vai explorar as características das redes de dados móveis e as suas respectivas capacidades. Conceito de redes empresariais O termo redes talvez seja o mais conhecido por pessoas que não são espe- cialistas em tecnologia. Isso porque vivemos em redes — por exemplo, nossa rede familiar, nossa rede de amigos, nossa rede de trabalho, entre outras. Tudo ao nosso redor depende de redes e das interações que ocorrem dentro delas. Podemos destacar, ainda, o fato de estarmos normalmente conectados a redes sociais, conforme aponta Lima Filho (2015). Isso não é diferente para dispositivos tecnológicos, como computadores, celular, TV, etc. Quando esses dispositivos estão se comunicando ou estão conectados uns com os outros, estão operando em redes. Mas, para que tudo isso funcione perfeitamente, existe a necessidade de uma infraestrutura de dados e redes. A infraestrutura, para se tornar eficiente e, ao mesmo tempo, segura, necessita de equipamentos, como firewall, controle de listas de acesso (ACL), entre outros. Na Figura 1, temos um esboço simplificado dessa infraestrutura. A seguir, vamos descrever as principais redes empresariais existentes atualmente. Figura 1. Infraestrutura básica de uma rede. Fonte: Entenda... (2018, documento on-line). Tipos de redes empresariais Existe uma grande variedade de redes de computadores, mas elas podem variar em termos de fi nalidade e abrangência. Por exemplo, uma rede que abrange uma área de cobertura regional ou nacional possui características diferentes de uma rede local interna. Sendo assim, uma rede pode abranger um ou dois dispositivos em uma sala ou milhares espalhados ao redor do mundo. Algumas das diferentes redes classificadas conforme tamanho ou abran- gência são: rede de área pessoal, ou PAN; rede de área local, ou LAN; rede metropolitana, ou MAN; rede de longa distância, ou WAN. Em termos de finalidade, muitas redes podem ser consideradas de propósito geral, o que significa que elas são usadas para tudo, desde enviar arquivos Infraestrutura de dados e redes2 para uma impressora até acessar a Internet. Alguns tipos de redes, no entanto, servem a um propósito muito particular. Algumas das diferentes redes clas- sificadas conforme o propósito são: rede de área de armazenamento, ou SAN; rede privada corporativa, ou EPN; rede privada virtual, ou VPN. As VPNs, do inglês virtual private networks, são redes virtuais privadas, muito utilizadas por profissionais que, por exemplo, precisam estar com frequência fora da rede LAN ou WAN de um escritório. Por ser uma rede móvel, a rede VPN possibilita que um computador, telefone ou tablet se conecte à rede por meio de uma conexão cripto- grafada, em qualquer lugar do mundo. Assim, é possível obter acesso aos dados de um computador do escritório sem correr o risco de as informações serem capturadas. Protocolos padrões de comunicação Os protocolos de comunicação são descrições formais de formatos e regras de mensagens digitais. Os protocolos de comunicação abrangem autenticação, detecção e correção de erros e sinalização. Eles também podem descrever a sintaxe, a semântica e a sincronização de comunicações analógicas e digitais. Protocolos de comunicação são implementados em hardware e software. Existem diferentes protocolos, que são usados em todos os lugares nas co- municações analógicas e digitais. É importante salientar que as redes de computadores não podem existir sem eles. Protocolo TCP/IP A sigla TCP/IP signifi ca transmission control protocol/internet protocol. O TCP/IP é um conjunto de protocolos em camadas usado para comunicação pela Internet. O modelo de comunicação desse conjunto é o modelo cliente- -servidor, em que um computador que envia uma solicitação é o cliente, e um computador para o qual a solicitação é enviada é o servidor de arquivos na Internet. 3Infraestrutura de dados e redes Protocolo HTTP HTTP é a sigla para hypertext transfer protocol, que signifi ca protocolo de transferência de hipertexto. Trata-se do protocolo mais básico, utilizado para navegação em sites da internet. O HTTP é o protocolo utilizado na conexão entre cliente e servidor de dados, sendo o cliente, por exemplo, o navegador que utilizamos para acessar um site, ou mesmo uma aplicação que possa estar consumindo um serviço na Web — os chamados Web services. Nesse caso, o cliente envia um pedido de acesso a uma página ou serviço para o servidor, que analisa essa requisição e envia uma resposta de permissão de acesso; com ela, são enviados os arquivos que possibilitam interpretar, por exemplo, a página que estamos tentando acessar. Protocolo HTTPS HTTPS é a sigla para hypertext transfer protocol secure, que signifi ca proto- colo de transferência de hipertexto seguro. Esse protocolo funciona de forma extamente igual ao protocolo HTTP, com a diferença de o HTTPS contar com uma camada extra de proteção, indicando que sitese domínios que possuem esse protocolo são seguros para acesso. O protocolo HTTPS é muito adotado por sites que oferecem meios de pagamento on-line e necessitam aumentar a proteção para assegurar que os dados, as informações de contas e os dados de cartões de crédito dos usuários estejam protegidos. Essa proteção é garantida por meio de um certificado digital, que cria uma criptografia dos dados, o que impossibilita que o acesso a dados de usuários seja possível por meio de ataques cibernéticos. Um certi- ficado SSL (secure sockets layer) é o responsável por criar esse canal seguro entre o cliente e o servidor, fornecendo, assim, a camada extra de segurança do protocolo HTTPS. É comum encontrarmos sites que começam com HTTPS na Internet. A diferença entre HTTP e HTTPS está no significado da letra “s”, que significa secure, isto é, seguro. Ou seja, em uma comunicação com o protocolo HTTP, estamos estabelecendo a comunicação utilizando uma linguagem normal e sem segurança. Já na comunicação HTTPS, estamos conectados por meio de uma linguagem codificada e sem possibilidade de espiões. Infraestrutura de dados e redes4 Protocolo DHCP O DHCP, do inglês dynamic host confi guration protocol, ou protocolo de confi guração dinâmica de host, é um protocolo cliente–servidor. Por meio dele, os servidores gerenciam um pool de endereços IP exclusivos, além de informações sobre os parâmetros de confi guração do cliente, bem como atribuem endereços a esses pools de endereços. Os clientes habilitados para DHCP enviam uma solicitação ao servidor DHCP sempre que se conectam a uma rede, solicitando informações de confi- guração para a rede local à qual estão conectados. Um cliente geralmente trans- mite uma consulta para essa informação imediatamente após a inicialização. O servidor DHCP responde à solicitação do cliente, fornecendo informações de configuração de IP especificadas anteriormente por um administrador de rede. Isso inclui um endereço IP específico, bem como o período de tempo, também chamado de concessão, para o qual a alocação é válida. Ao atualizar uma atribuição, um cliente DHCP solicita os mesmos parâmetros, mas o servidor DHCP pode atribuir um novo endereço IP, com base nas políticas definidas pelos administradores. Protocolo FTP A necessidade de rede surgiu principalmente para facilitar o compartilhamento de arquivos entre pesquisadores; até hoje, a transferência de arquivos conti- nua sendo uma das instalações mais usadas. O protocolo que lida com essas transferências é o fi le transfer protocol, ou FTP. Protocolo SFTP O SFTP (secure fi le transfer protocol) é um protocolo seguro de transferência de arquivos. Ele é executado sobre o protocolo SSH e suporta a funcionalidade completa de segurança e autenticação do SSH. Protocolo SSH O protocolo secure shell (SSH) é um protocolo para comunicações de rede seguras, projetado para ser relativamente simples e de baixo custo de imple- mentação. A versão inicial, SSH1, concentrava-se em fornecer um recurso de logon remoto seguro para substituir o Telnet e outros esquemas de logon remoto que não ofereciam segurança. 5Infraestrutura de dados e redes Protocolo POP3 O POP3 é um protocolo cliente-servidor que possibilita que os e-mails sejam armazenados para o cliente pelo servidor de Internet. Periodicamente, o cliente (ou seu destinatário de e-mail) verifi ca sua caixa de correio no servidor e faz o download de qualquer e-mail usando o POP3. Esse protocolo padrão é incorporado aos produtos de e-mail mais populares. Protocolo SMTP O SMTP (simple mail transfer protocol) é o protocolo padrão para serviços de e-mail em uma rede TCP/IP, que permite a transmissão e entrega de e-mails pela Internet, sendo um protocolo da camada de aplicação. Protocolo IMAP O IMAP (internet message access protocol) é um protocolo de e-mail padrão que armazena mensagens de e-mail em um servidor de e-mail, mas permite que o usuário exiba e manipule as mensagens como se estivessem armaze- nadas localmente no(s) dispositivo(s) de computação do usuário fi nal. Isso permite que os usuários manipulem as mensagens diretamente no servidor, sem necessidade de realizar download para seu dispositivo. Características das redes móveis Em redes, como vimos na seção anterior, um protocolo é um conjunto de regras que determinam o formato e a transmissão de dados. Um protocolo defi ne todos os aspectos necessários para dispositivos se comunicarem sem problemas. Por exemplo, as redes sem fi o 802.11 contam com um amplo conjunto de protocolos que as regulam. O padrão 802.11b permite uma transferência máxima de 11 Mbps e foi ratificado pelo Institute of Electrical and Electronic Engineers (IEEE) em 1999. O 802.11g permite uma transferência máxima de 54 Mbps e foi rati- ficado em 2003. Ele define retrocompatibilidade com dispositivos 802.11b, o que significa que uma rede pode incluir ambos os tipos de dispositivos. É importante salientar que a rede sem fio é uma mídia compartilhada, em que apenas um dispositivo pode falar por vez. Infraestrutura de dados e redes6 O protocolo 802.11n é o mais recente desenvolvido pelo IEEE, sendo o mais atualizado em relação à transferência de dados. Esse protocolo permite uma transferência máxima de 600 Mbps, dependendo da implementação. Ele inclui as seguintes melhorias, conforme aponta Marin (2010): utilização de bandas de frequência de 2,4 GHz e 5 GHz; ligação de canal que agrega dois canais de 20 MHz em um canal de 40 MHz, o que permite uma taxa de dados mais alta, mas diminui o número de canais disponíveis; tecnologia MIMO (multiple input multiple output), que utiliza sinais multipercurso como vantagem na rede sem fio. Em uma rede 802.11 a, b ou g não baseada em MIMO, os sinais multipercurso eram percebidos como interferências, o que diminuía a capacidade de um receptor de recuperar as informações da mensagem no sinal. A Figura 2 mostra a arquitetura de comunicação entre dispositivos móveis em redes sem fio, dentro de um contexto geral que abrange uma ampla faixa de redes, envolvendo LAN e redes de celulares. Figura 2. Arquitetura de comunicação em rede de dispositivos móveis. Fonte: Córdova e Gondim (2016, documento on-line). 7Infraestrutura de dados e redes O núcleo da rede de dados de dispositivos móveis conecta as redes de acesso por rádio à Internet pública. O núcleo da rede opera em conjunto com os componentes da rede celular de voz existente (particularmente, o mobile switching system, ou MSC). Dada a quantidade considerável de infraestrutura existente na rede celular de voz, o método utilizado pelos projetistas dos ser- viços de dados é evidente: deixar o núcleo da rede celular de voz GSM (global system for mobile communications) intacto, acrescentando funcionalidade de dados por dispositivo móvel em paralelo à rede de voz existente. A alternativa é integrar novos serviços de dados diretamente no núcleo da rede — por exemplo, a integração das tecnologias IPv6 (nova) e IPv4 (legada) na Internet. Acesse o link a seguir e leia uma matéria interessante sobre os desafios que a IoT (Internet of Things, ou Internet das Coisas) encara no que tange à infraestrutura de dados. https://qrgo.page.link/bp7VC É importante destacar que todos os tipos de redes sem fio experimentam degradação de sinal, isto é, perdem sua força no caminho entre o transmissor e o receptor, por razões diversas. Por exemplo, a partir do momento em que um sinal de antena é irradiado em todas as direções, ele perde sua força, principalmente devido à distância entre o transmissor e o receptor. Esses são desafios que devem ser considerados sempre que for necessário projetar um canal de infraestrutura de rede para a transmissão de dados. A seguir, estão listadas algumas das falhas que podem ocorrer em um canal sem fio. Redução da força do sinal: as radiações eletromagnéticas emitidas por aparelhos em redes móveis podem ser atenuadas quando atravessam uma parede, fazendocom que exista perda do sinal. Essa atenuação também pode ocorrer à medida que o aparelho receptor fica mais distante do aparelho transmissor. Interferência de outras fontes: várias fontes transmitindo na mesma frequência os seus sinais eletromágneticos podem causar interferência umas nas outras. Os aparelhos transmissores de sinal de rede podem concorrer com telefones sem fio. Infraestrutura de dados e redes8 Propagação multivias: parte das ondas enviadas podem se perder no caminho. Por exemplo, se as ondas se refletem em objetos e no solo, tomam caminhos de comprimentos diferentes entre um emissor e um receptor. Isso resulta no embaralhamento do sinal recebido no destinatário. CÓRDOVA, R. T.; GONDIM, P. R. L. Arquitetura baseada em SDN para gerenciamento de mobilidade distribuído em redes IP móveis heterogêneas. In: SIMPÓSIO BRASILEIRO DE REDES DE COMPUTADORES E SISTEMAS DISTRIBUÍDOS, 34., 2016, Salvador. Anais [...]. Bahia, 2016. Disponível em: http://www.sbrc2016.ufba.br/downloads/WPEIF/155207_1- -Arquitetura-SDN-Gerenciamento-Mobilidade-Distribuido.pdf. Acesso em: 12 ago. 2019. ENTENDA sua rede de dados. Blog Webeasy, 2018. Disponível em: http://www.webe- asy.com.br/blog/2018/06/04/entenda-sua-rede-de-dados/. Acesso em: 12 ago. 2019. LIMA FILHO, E. C. Fundamentos de redes e cabeamento estruturado. São Paulo: Pearson, 2015. MARIN, P. S. Cabeamento estruturado: desvendando cada passo: do projeto à instalação. 3. ed. São Paulo: Editora Érica, 2010. Leituras recomendadas ABNT. NBR 14565: cabeamento de telecomunicações para edifícios comerciais. Rio de Janeiro, 2007. COMER, D. E. Redes de computadores e internet. 6. ed. Porto Alegre: Bookman, 2016. DERFLER, F. J.; FREED, L. Tudo sobre cabeamento de redes. Rio de Janeiro: Campus, 1994. MORIMOTO, C. E. Redes: guia prático. São Paulo: GDH Press e Sul Editores, 2008. SCRIMGER, R.; LASALLE, P.; PARIHAR, M. TCP/IP: a bíblia. Rio de Janeiro: Campus, 2002. SOARES NETO, V.; SILVA, A. P. C. JUNIOR, M. B. Telecomunicações: redes de alta velocidade: cabeamento estruturado. São Paulo: Editora Érica, 2002. TANENBAUM, A. S. Redes de computadores. Rio de Janeiro: Campus, 1997. 9Infraestrutura de dados e redes DICA DO PROFESSOR Veja no vídeo a transmissão de sinais de redes, assim como os meios físicos utilizados para as transmissões. Conteúdo interativo disponível na plataforma de ensino! EXERCÍCIOS 1) O acesso seguro e confiável em qualquer lugar com velocidades aceitáveis é uma das necessidades básicas que formam a base para as redes empresariais. De qual necessidade estamos falando? A) Mobilidade. B) Colaboração. C) Relacionamentos. D) Pesquisa. E) Tráfego. 2) O conjunto de regras definidas para que dispositivos de redes comuniquem-se entre si é denominado: A) TCP/IP. B) 3G. C) 4G. D) Protocolo. E) Banda larga. 3) As tecnologias 3G e 4G são as mais utilizadas em dispositivos móveis em todo o mundo, e sua taxa de transferência de dados (capacidade) varia de acordo com o padrão de rede. Baseado nisso, determine o padrão que apresenta atualmente maior capacidade de transferência de dados. A) WiMAX. B) WiBro. C) GSM. D) HSDPA. E) LTE. 4) A capacidade de uma rede é medida pela: A) Banda larga. B) Banda larga de linha fixa. C) Largura de banda. D) Velocidade de download. E) Velocidade de upload. 5) Podemos considerar quatro fatores para avaliar as redes móveis. Selecione a alternativa que não corresponde a um desses fatores. A) Velocidade. B) Simplicidade. C) Conexão. D) Inteligência. E) Confiabilidade. NA PRÁTICA O acesso à internet é uma tecnologia fornecida por operadoras de telefonia, TV a cabo e rádio. O sinal é recebido normalmente por modens que modulam este sinal, fazendo a conversão em dados. Esse serviço possui um custo e varia de acordo com a necessidade do cliente. A infraestrutura de redes que podemos definir na prática é a que temos em grandes e pequenas empresas, salas comerciais ou até mesmo em nossas casas. Essa estrutura mínima pode ser construída em três etapas: dispositivos de acesso, pontos de acessos e acesso à internet. SAIBA + Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor: Guerreiros da Internet. Conteúdo interativo disponível na plataforma de ensino! Jornal da Globo: Tecnologia - Conecte - WI-FI Conteúdo interativo disponível na plataforma de ensino! Deixe seu celular mais rápido e economize o plano de dadoscom Neumob. Conteúdo interativo disponível na plataforma de ensino! Interação cliente servidor APRESENTAÇÃO Os termos cliente e servidor se referem aos dois aplicativos envolvidos em uma comunicação. O aplicativo que começa ativamente o contato é chamado cliente, enquanto o aplicativo que espera passivamente por contato é chamado servidor. Esta Unidade de Aprendizagem tem por foco o ensino do paradigma cliente-servidor, seus principais conceitos e os protocolos de rede utilizados. Juntas, essas características representam a base para todos os aplicativos de rede. Bons estudos. Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados: Reconhecer o paradigma cliente-servidor.• Identificar as diferenças entre os protocolos de rede.• Avaliar as características de clientes e servidores.• DESAFIO Você foi contratado para ser analista de redes em uma loja de materiais de construção. Jorge, gerente da loja, resolve abrir mais uma filial em sua cidade natal. Essa filial será maior e deverá possuir três caixas para atender as demandas de atendimento, com possibilidade de expansão. INFOGRÁFICO Em uma comunicação cliente-servidor, os dipositivos/computadores efetuam a solicitação de informações para um servidor, que, por sua vez, efetua o processamento e devolve os resultados e/ou os dados solicitados. CONTEÚDO DO LIVRO Muito utilizado nos dias de hoje, o paradigma cliente-servidor permite o acesso centralizado a sistemas que utilizam clientes dístribuídos. Os aplicativos de rede usam-no como uma forma de comunicação. Um aplicativo servidor espera passivamente ser contatado, enquanto um aplicativo cliente inicia a comunicação ativamente. Acompanhe um trecho da obra Redes de computadores e Internet. Inicie o estudo pelo tópico O modelo de interação cliente-servidor e finalize no tópico Programação em redes e API de sockets. Boa leitura! Redes de Computadores e Internet R ed es d e C o m p u tad o res e In tern et Redes de Computadores e Internet CONTEÚDO ONLINE Douglas E. ComerDouglas E. Comer D o u g las E . C o m er 6ª EDIÇÃO 6ª EDIÇÃO 6 ª E D IÇ Ã O R ed es d e C o m p u tad o res e In tern et Redes e Internet D o u g las E . C o m er 6ª ED. Escrito por um dos maiores especialistas em redes no mundo, Douglas E. Comer, este livro apresenta, de forma ampla e sistemática, os mais importantes conceitos, princípios e tecnologias das redes de computadores e da Internet. De fácil leitura, não requer experiência prévia com sistemas operacionais ou redes nem conhecimento avançado de matemática. Além disso, combina o melhor das abordagens top-down e bottom-up, permitindo aos professores adaptar o conteúdo às suas necessidades em sala de aula. Totalmente revisada e atualizada, esta nova edição inclui IPv4 e IPv6 em todos os capítulos e traz ainda tópicos emergentes e tendências, como a Internet das Coisas e as Redes Definidas por Software (SDN). Acesse o nosso site, www.grupoa.com.br, cadastre-se gratuitamente, encontre a página do livro por meio do campo de busca e clique no link Conteúdo Online para fazer download do código para a API simplificada e de materiais extras para alunos e professores (em inglês). www.grupoa.com.br 0800 703 3444 A Bookman Editora é um dos selos editoriais do Grupo A Educação, empresa que oferece soluções em conteúdo, tecnologia e serviços para a educação acadêmica e profissional.COMPUTAÇÃO E TI www.grupoa.com.br BAEZA-YATES, R.; RIBEIRO-NETO, B. Recuperação de Informação – Conceitos e Tecnologia das Máquinas de Busca – 2.ed. COMER, D. E. Redes de Computadores e Internet – 6.ed. COULOURIS, G.; DOLLIMORE, J.; KINDBERG, T.; BLAIR, G. Sistemas Distribuídos – Conceitos e Projeto – 5.ed. FOROUZAN, B. A. Comunicação de Dados e Redes de Computadores – 4.ed. FOROUZAN, B. A.; FEGAN, S. C. Protocolo TCP/IP - 3.ed FOROUZAN, B. A.; MOSHARRAF, F. Redes de Computadores – Uma Abordagem Top-Down GOODRICH, M. T.; TAMASSIA, R. Introdução à Segurança de Computadores MCCARTHY, N. K. Resposta a Incidentes de Segurança em Computadores – Planos para Proteção de Informação em Risco MCCLURE, S.; SCAMBRAY, J.; KURTZ, G. Hackers Expostos 7 – Segredos e Soluções para a Segurança de Redes – 7.ed. WRIGHTSON, T. Segurança de Redes Sem Fio – Guia do Iniciante Catalogação na publicação: Poliana Sanchez de Araujo – CRB 10/2094 C732r Comer, Douglas E. Redes de computadores e internet [recurso eletrônico] / Douglas E. Comer ; tradução: José Valdeni de Lima, Valter Roesler. – 6. ed. – Porto Alegre : Bookman, 2016. Editado como livro impresso em 2016. ISBN 978-85-8260-373-4 1. Redes de computadores. 2. Internet. I. Título. CDU 004.7 O autor Dr. Douglas Comer é um internacionalmente reconhecido especialista em redes de com- putadores, protocolos TCP/IP e Internet. Foi um dos pesquisadores que contribuíram com a formação da Internet no fim dos anos 1970 e nos anos 1980, sendo membro do In- ternet Architecture Board, o grupo responsável por guiar o desenvolvimento da Internet. Também foi presidente do comitê técnico CSNET, membro do comitê executivo CSNET e presidente do Distributed Systems Architecture Board da DARPA (Defense Advanced Research Projects Agency). Foi ainda Vice-Presidente de Pesquisa na Cisco Systems. Comer é consultor de projeto de redes de computadores para empresas e palestran- te frequente em ambientes acadêmicos e profissionais ao redor do mundo. Seu sistema operacional, Xinu, e a implementação de protocolos TCP/IP (ambos documentados em seus livros) são utilizados em produtos comerciais. É professor honorário de Ciências da Computação na Purdue University, onde leciona redes de computadores, redes de internet, arquitetura de computadores e sistemas operacionais. Lá desenvolveu labora- tórios de informática inovadores que dão aos alunos a oportunidade de ter experiências práticas na operação de sistemas, redes de computadores e protocolos. Além de escrever livros técnicos best-sellers, já traduzidos para 16 idiomas, atuou como editor norte-americano do periódico Software – Practice and Experience por 20 anos. Comer é membro da ACM. Informações adicionais podem ser encontradas em: w ww.cs.purdue.edu/homes/comer. 28 Parte I Introdução a redes e aplicações da Internet 3.4 O modelo de interação cliente-servidor O primeiro passo no Algoritmo 3.1 leva a uma questão: como um par de aplicações executadas em dois computadores diferentes se coordena para solicitar uma conexão ao mesmo tempo? A resposta está em uma forma de interação conhecida como modelo cliente-servidor. Uma aplicação, conhecida como servidor, inicia antes e aguarda con- tato. A outra aplicação, conhecida como cliente, inicia depois e solicita a conexão. A Figura 3.2 resume a interação cliente-servidor. Aplicação servidor Aplicação cliente Inicia antes Inicia depois Não precisa saber qual cliente vai se conectar Precisa saber a qual servidor se conectar Espera passivamente um tempo indeterminado pelo contato do cliente Inicia o contato quando a comunicação é necessária Comunica-se com o cliente enviando e recebendo dados Comunica-se com o servidor enviando e recebendo dados Continua executando após atender um cliente, esperando pelo próximo Pode encerrar após interagir com o servidor Figura 3.2 Resumo do modelo cliente-servidor. As próximas seções descrevem como serviços específicos utilizam o modelo clien- te-servidor. Por enquanto, é suficiente lembrar o seguinte: Embora forneça comunicação básica, a Internet não inicia nem aceita contato de um computador remoto; programas de aplicação conhecidos como clientes e servidores manipulam todos os serviços. 3.5 Características de clientes e servidores Embora variações menores existam, a maioria das instâncias de aplicações que seguem o paradigma cliente-servidor tem as seguintes características gerais: Software cliente • Consiste em um programa de aplicação arbitrário que se torna um cliente temporariamente quando acesso remoto é necessário. • É invocado diretamente pelo usuário e executa somente durante uma sessão. • Roda localmente no computador ou dispositivo do usuário. • Inicia contato ativamente com o servidor. • Pode acessar múltiplos serviços se necessário, mas usualmente se comunica com um servidor por vez. • Não necessita hardware potente. Software servidor • Consiste em um programa de propósito especial, com privilégios, dedicado a fornecer um serviço. Capítulo 3 Programação em redes e aplicações da Internet 29 • É invocado automaticamente quando o sistema inicializa e continua execu- tando enquanto o computador estiver ligado. • É executado em um computador dedicado. • Espera passivamente pelos contatos dos clientes remotos. • Pode aceitar conexões de muitos clientes ao mesmo tempo, porém (usual- mente) oferece somente um serviço. • Requer um hardware mais poderoso e um sistema operacional sofisticado. 3.6 Programas servidores e computadores servidores Algumas vezes o termo servidor é compreendido de forma inadequada. Formalmen- te, ele se refere a um programa que espera passivamente o contato de clientes, e não ao computador no qual ele executa. Entretanto, quando um computador é dedicado a executar um ou mais programas servidores, seus administradores normalmente o chamam de “servidor”. Fabricantes de hardware aumentam a confusão, pois classifi- cam computadores que possuem CPUs mais rápidas, grande quantidade de memória e sistemas operacionais sofisticados como máquinas servidoras. A Figura 3.3 ilustra as definições. Internetconexão cliente executa em um computador normal servidor executa em um computador servidor Figura 3.3 Ilustração de um cliente e de um servidor. 3.7 Requisições, respostas e direção do fl uxo de dados Os termos cliente e servidor surgiram porque quem inicia a conexão é um cliente. Entre- tanto, uma vez que a conexão tenha sido estabelecida, a comunicação flui em ambas as direções (i.e., dados podem fluir do cliente para o servidor e do servidor para o cliente). Tipicamente, um cliente envia uma requisição ao servidor, e o servidor envia uma res- posta ao cliente. Em alguns casos, um cliente envia uma série de requisições e o servidor uma série de respostas (por exemplo, um cliente de banco de dados deve permitir ao usuário acessar mais de um item por vez). O conceito pode ser resumido: A informação pode fluir em ambas as direções entre cliente e servidor. Embora muitos serviços sejam baseados no cliente enviando uma ou mais requisições e no servidor enviando as respostas, outras interações são possíveis. Comer_03.indd 29Comer_03.indd 29 29/10/15 14:4629/10/15 14:46 30 Parte I Introdução a redes e aplicações da Internet 3.8 Múltiplos clientes e múltiplos servidores Um cliente ou servidor consiste em um programa de aplicação, e um computador pode executar múltiplas aplicações ao mesmo tempo. Como consequência, um dado compu- tador pode executar: • Um cliente individual • Um servidor individual • Múltiplas cópias de um cliente se comunicando com um dado servidor • Múltiplos clientes individuais se comunicando com diferentes servidores • Múltiplos servidores, cada um para um serviço diferente Permite que um computador opere múltiplos clientes é útil, pois diferentes servi- ços podem ser acessados simultaneamente. Por exemplo, um usuário roda três aplica- ções ao mesmo tempo: um navegadorWeb, um software de mensagens instantâneas e uma videoconferência. Cada aplicação é um cliente que se comunica com um servidor particular, de forma independente das outras aplicações. Na verdade, a tecnologia per- mite a um usuário executar várias cópias de uma mesma aplicação, cada uma se comu- nicando com um servidor (por exemplo, duas janelas em um navegador Web, cada uma acessando uma página diferente). Permitir a um dado computador executar múltiplos programas servidores é útil por duas razões. Primeira, utilizar somente um computador físico em vez de vários reduz o es- forço administrativo de manutenção. Segunda, a experiência mostra que a demanda para um serviço é muitas vezes esporádica – um determinado servidor frequentemente permanece ocioso por muito tempo, e um servidor ocioso não consome CPU. Assim, se a demanda total por serviços é pequena, consolidar vários servidores em um único computador físico pode reduzir custos drasticamente sem redução significativa no desempenho. Resumindo: Um único computador potente pode oferecer múltiplos serviços ao mesmo tem- po, basta executar um programa servidor para cada serviço. 3.9 Identifi cação de servidores e demultiplexação Como um cliente identifica um servidor? Os protocolos da Internet dividem a identifi- cação em duas partes: • Um identificador que especifica o computador onde o programa servidor está sen- do executado. • Um identificador que especifica o serviço naquele computador. Identificando o computador. Cada computador na Internet possui um identifica- dor único conhecido como endereço do protocolo da Internet (endereço IP)1. Quando vai iniciar a comunicação, o cliente deve especificar o endereço IP do servidor. Para facilitar a identificação dos servidores pelos seres humanos, cada computador também possui um nome, e o DNS (Domain Name System), descrito no Capítulo 4, é utilizado para traduzir um nome em um endereço. Assim, o usuário especifica um nome, como www.cisco.com, em vez de um endereço IP. 1 O Capítulo 21 trata de endereços IP em detalhes e explica os formatos de endereços em IPv4 e IPv6. Capítulo 3 Programação em redes e aplicações da Internet 31 Identificando um serviço. Cada serviço disponível na Internet possui um identi- ficador único de 16 bits conhecido como número da porta do protocolo (normalmente abreviado para número da porta ou simplesmente porta). Por exemplo, o serviço de envio de mensagens de e-mail utiliza a porta 25, e o serviço de navegação Web utiliza a porta 80. Quando um servidor inicia a execução, ele se registra com o sistema local es- pecificando o número da porta por onde seu serviço será acessível. Quando um cliente se conecta a um servidor remoto para requisitar determinado serviço, a requisição contém esse número de porta. O sistema operacional do servidor utiliza o número de porta da requisição para determinar qual aplicação deve tratá-la. A Figura 3.4 resume a discussão listando os passos básicos que um cliente e um servidor devem efetuar para se comunicar. Internet • Inicia depois que o servidor já está rodando • Usuário fornece o nome do servidor • Usa DNS para traduzir o nome para endereço IP • Especifica a porta do serviço que deseja utilizar, no caso, porta N • Conecta com o servidor e interage com ele • Inicia antes de todos os clientes • Registra a porta N com o sistema local • Espera contato dos clientes • Interage com o cliente até ele encerrar • Espera conexão do próximo cliente Figura 3.4 Passos conceituais de que cliente e servidor necessitam para se comunicar. 3.10 Servidores concorrentes Os passos na Figura 3.4 mostram que o servidor lida com um cliente por vez. Embora uma abordagem sequencial funcione em alguns casos triviais, a maioria dos servidores trabalha de forma concorrente, ou seja, o servidor utiliza mais que uma thread de con- trole2 para lidar com múltiplos clientes ao mesmo tempo. Para entender a importância do serviço concorrente, imagine o que acontece se um cliente efetua o download de um filme do servidor. Se o servidor atender a uma requisição por vez, todos os outros clientes vão ter que esperar até ele transferir todo o filme. Num servidor concorrente isso não acontece. Assim, se outro cliente se conectar requisitando um pequeno download (por exemplo, de uma música), sua requisição começa imediatamente e pode terminar antes que a transferência do filme seja comple- tada (dependendo do tamanho dos arquivos e da velocidade na qual cada cliente pode receber dados). Os detalhes da execução concorrente dependem do sistema operacional, mas a ideia é fácil de entender. O código do servidor concorrente é dividido em duas partes: o programa principal (thread principal) e o atendimento (thread de controle). O programa principal somente aceita a conexão do cliente e cria a thread de controle para atender a ele. Cada thread de controle interage com um único cliente e executa o código de atendi- 2 Alguns sistemas operacionais utilizam o termo thread de execução ou processo para se referir à thread de controle. Comer_03.indd 31Comer_03.indd 31 29/10/15 14:4629/10/15 14:46 32 Parte I Introdução a redes e aplicações da Internet mento. Depois de atender o cliente, a thread termina. Enquanto isso, o programa princi- pal mantém o servidor ativo – após criar a thread para atender à requisição, o programa principal espera novas conexões. Note que, se N clientes estão utilizando simultaneamente um servidor concorrente, haverão N+1 threads sendo executadas: o programa principal esperando conexões e as N threads interagindo com seus respectivos clientes. Podemos resumir: Um servidor concorrente utiliza threads de execução para atender a requisições dos múltiplos clientes ao mesmo tempo. Assim, um cliente pode ser atendido imediatamente, sem precisar esperar um cliente anterior finalizar sua conexão. 3.11 Dependências circulares entre servidores Tecnicamente, qualquer programa que contate outro está agindo como cliente, e qual- quer programa que aceite contato de outro está agindo com servidor. Na prática, a dis- tinção não é tão clara, pois um servidor de um serviço pode agir como cliente de outro. Por exemplo, antes de preencher uma página Web, o servidor Web pode ter que se tornar cliente de um servidor de banco de dados ou de um serviço de segurança (por exemplo, para verificar se o cliente tem permissão de acesso à página Web solicitada). É claro que os programadores devem ter cuidado para evitar dependências circula- res entre servidores. Por exemplo, considere o que pode acontecer se um servidor para o serviço X1 se tornar um cliente do serviço X2, que se torna um cliente do serviço X3, que se torna um cliente do serviço X1. A cadeia de requisições pode continuar indefinida- mente até que todos os três servidores esgotem seus recursos. O potencial de circularida- de é alto especialmente quando serviços são projetados de forma independente, porque nenhum dos programadores tem acesso a todos os servidores. 3.12 Interações peer-to-peer (par-a-par) Se um único servidor fornecer um determinado serviço, a conexão de rede entre ele e a Internet pode se tornar o gargalo. A Figura 3.5 ilustra o problema. Internet servidor todo o tráfego ocorre sobre um único enlace Figura 3.5 Gargalo de tráfego em um sistema que utiliza servidor único. A questão que surge é: como serviços da Internet podem ser oferecidos sem criar um gargalo central? Uma forma de evitar o gargalo é a base das aplicações de compar- tilhamento de arquivos. Conhecido como arquitetura peer-to-peer (p2p ou par-a-par), Capítulo 3 Programação em redes e aplicações da Internet 33 o esquema evita manter os dados em um servidor central. Conceitualmente, dados são distribuídos igualmente por N servidores, e cada requisição de cliente é enviada para o servidor mais apropriado. Como um determinado servidor somente fornece 1/N dos dados, a quantidade de tráfego entre o servidor e a Internet é 1/N quando comparadoà arquitetura de servidor único. A ideia principal é que o software do servidor pode rodar no mesmo computador dos clientes. Se cada usuário concordar em localizar 1/N dos dados em seu computador, não serão necessários servidores especiais. A Figura 3.6 ilustra a arquitetura. O exemplo mostra somente quatro computadores. Em um sistema p2p real, o tráfego em um computador pode ser extremamente pequeno, pois N pode ser extremamente grande (dezenas de milhares). Internet 1/N de todo o tráfego Figura 3.6 Interação exemplo em um sistema peer-to-peer. 3.13 Programação em redes e API de sockets A interface utilizada pelas aplicações para comunicação na Internet é conhecida como interface de programas de aplicação (API, Application Program Interface)3. Embora os detalhes exatos de uma API dependam do sistema operacional, uma API particular tem emergido como um padrão de fato para softwares que se comunicam via Internet. Co- nhecida como API de sockets e comumente abreviada como sockets, a API está disponí- vel para muitos sistemas operacionais, como Microsoft Windows, Apple OS-X, Android e vários sistemas UNIX, incluindo o Linux. Em resumo: A API de sockets, que se tornou o padrão de fato para comunicação via Inter- net, está disponível na maioria dos sistemas operacionais. O restante do capítulo descreve funções na API de sockets; leitores que não são progra- madores podem pular os detalhes. 3 O Apêndice 1 contém uma API simplificada (com somente sete funções) e um código-exemplo que demons- tra como tal API pode ser utilizada para criar aplicações na Internet, incluindo um servidor Web funcional. Comer_03.indd 33Comer_03.indd 33 29/10/15 14:4629/10/15 14:46 Encerra aqui o trecho do livro disponibilizado para esta Unidade de Aprendizagem. Na Biblioteca Virtual da Instituição, você encontra a obra na íntegra. DICA DO PROFESSOR Acompanhe no vídeo uma explicação prática sobre a interação cliente-servidor. Conteúdo interativo disponível na plataforma de ensino! EXERCÍCIOS 1) No paradigma cliente/servidor, quais são as funções desempenhadas? A) O cliente efetua solicitações e o servidor as processa, efetuando a entrega. B) O cliente processa todos os dados e se comunica com o servidor para informar o resultado. C) O servidor só permite a conexão de um cliente, os demais entram em uma fila de espera. D) O cliente se comunica com o servidor que, por sua vez, comunica-se com outro servidor. E) O cliente se comunica com o servidor a cada minuto para verificar a rede, e o servidor mantém os registros de conexão. 2) O paradigma cliente/servidor permite o uso de computadores heterogêneos? A) Sim, todos os computadores possuem a mesma arquitetura. B) Não, porque esse tipo de arquitetura impossibilita predizer o desempenho de uma aplicação. C) Não, o correto é utilizar arquiteturas de hardwares homogêneas. D) Sim, pois, ao utilizar computadores heterogêneos, o desempenho é superior. E) Sim, esse paradigma utiliza a computação distribuída, que, por sua vez, permite a utilização de hardware para computação heterogênea. 3) Cliente e servidor podem residir no mesmo computador? A) Não, pois os clientes não vão conseguir se comunicar localmente. B) Sim, mas somente para aplicações. C) Sim, o paradigma irá funcionar do mesmo modo, mas com computação local. D) Sim, mas o número de clientes é limitado. E) Não, porque o servidor não fornece suporte local. 4) Um servidor pode fornecer múltiplos serviços e permitir o acesso a diversos clientes simultaneamente? A) Sim, mas somente um cliente pode acessar o serviço por vez. B) Sim, múltiplos acesso e serviços simultaneamente. C) Não, porque o servidor utiliza processamento paralelo. D) Não, porque é um software bloqueante. E) Sim, acessos simultâneos, mas somente um tipo de serviço. 5) Se um servidor estiver hospedado na nuvem, é possível aumentar sua capacidade, ou seja, seus recursos computacionais? A) Não, o uso é estático. B) Sim, o uso de recursos pode ocorrer sob demanda. C) Sim, mas só para os recursos de armazenamento. D) Não, uma vez contratado o serviço, este não pode ser alterado. E) Não, o uso de recursos é atrelado à máquina fisíca. NA PRÁTICA Os protocolos de transporte designam cada serviço com um identificador único. Clientes e servidores especificam o identificador de serviço; o software de protocolo usa o identificador para direcionar ao servidor correto cada requisição que chega. Pode-se citar como exemplo de interação cliente-servidor uma agência bancária. SAIBA + Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor: Ambiente Cliente/Servidor Conteúdo interativo disponível na plataforma de ensino! Arquitetura cliente-servidor e o ambiente de Cloud Computing Conteúdo interativo disponível na plataforma de ensino! O que é Cliente-Servidor? Conteúdo interativo disponível na plataforma de ensino! Interface de Sockets APRESENTAÇÃO A interface entre um programa aplicativo e os protocolos de comunicação em um sistema operacional é conhecida como interface de programa de aplicativos, ou API. Uma API define um conjunto de operações que um aplicativo pode executar quando ele interage com o software de protocolo, ela determina a funcionalidade que está disponível. Embora padrões de protocolo permitam aos projetistas de sistema operacional escolher uma API, muitos adotaram a API de sockets. Nesta Unidade de Aprendizarem aprenderemos sobre interface de sockets, comumente utilizada para conectar aplicações cliente/servidor. Bons estudos. Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados: Reconhecer o que é um socket.• Definir o que é uma API.• Identificar a utilização de sockets e APIs.• DESAFIO Voce é o principal desenvolvedor de um sistema de varejo, o qual é do tipo cliente-servidor. Sua tarefa atualmente é implementar a classe cliente, responsável por se comunicar com o servidor. Entretanto, durante um conjunto de testes, você nota que sua aplicação não está conectando ao servidor. Quais são os possíveis problemas de desenvolvimento que podem ocorrer durante o desenvolvimento da classe cliente? INFOGRÁFICO Veja no infográfico a aplicação se comunicando com o servidor conectando a uma porta aberta pelo socket. CONTEÚDO DO LIVRO Aplicações utilizam sockets que, através dos protocolos de Internet (fornecidos pelo sistema operacional), promovem a comunicação entre cliente e servidor. Parte fundamental do paradigma cliente/servidor, os sockets ajudam a controlar o acesso entre aplicação e máquina. Acompanhe um trecho da obra Redes de computadores e Internet, livro que serve de base teórica para esta Unidade de Aprendizagem. Inicie o estudo pelo tópico Sockets, descritores e E/S de rede e finalize em Sockets, threads e herança. Boa leitura! Redes de Computadores e Internet R ed es d e C o m p u tad o res e In tern et Redes de Computadores e Internet CONTEÚDO ONLINE Douglas E. ComerDouglas E. Comer D o u g las E . C o m er 6ª EDIÇÃO 6ª EDIÇÃO 6 ª E D IÇ Ã O R ed es d e C o m p u tad o res e In tern et Redes e Internet D o u g las E . C o m er 6ª ED. Escrito por um dos maiores especialistas em redes no mundo, Douglas E. Comer, este livro apresenta, de forma ampla e sistemática, os mais importantes conceitos, princípios e tecnologias das redes de computadores e da Internet. De fácil leitura, não requer experiência prévia com sistemas operacionais ou redes nem conhecimento avançado de matemática. Além disso, combina o melhor das abordagens top-down e bottom-up, permitindo aos professores adaptar o conteúdo às suas necessidades em sala de aula. Totalmente revisada e atualizada, esta nova edição inclui IPv4 e IPv6 em todos os capítulos e traz ainda tópicos emergentes e tendências, como a Internet das Coisas e as Redes Definidas por Software (SDN). Acesse o nosso site, www.grupoa.com.br,cadastre-se gratuitamente, encontre a página do livro por meio do campo de busca e clique no link Conteúdo Online para fazer download do código para a API simplificada e de materiais extras para alunos e professores (em inglês). www.grupoa.com.br 0800 703 3444 A Bookman Editora é um dos selos editoriais do Grupo A Educação, empresa que oferece soluções em conteúdo, tecnologia e serviços para a educação acadêmica e profissional. COMPUTAÇÃO E TI www.grupoa.com.br BAEZA-YATES, R.; RIBEIRO-NETO, B. Recuperação de Informação – Conceitos e Tecnologia das Máquinas de Busca – 2.ed. COMER, D. E. Redes de Computadores e Internet – 6.ed. COULOURIS, G.; DOLLIMORE, J.; KINDBERG, T.; BLAIR, G. Sistemas Distribuídos – Conceitos e Projeto – 5.ed. FOROUZAN, B. A. Comunicação de Dados e Redes de Computadores – 4.ed. FOROUZAN, B. A.; FEGAN, S. C. Protocolo TCP/IP - 3.ed FOROUZAN, B. A.; MOSHARRAF, F. Redes de Computadores – Uma Abordagem Top-Down GOODRICH, M. T.; TAMASSIA, R. Introdução à Segurança de Computadores MCCARTHY, N. K. Resposta a Incidentes de Segurança em Computadores – Planos para Proteção de Informação em Risco MCCLURE, S.; SCAMBRAY, J.; KURTZ, G. Hackers Expostos 7 – Segredos e Soluções para a Segurança de Redes – 7.ed. WRIGHTSON, T. Segurança de Redes Sem Fio – Guia do Iniciante Catalogação na publicação: Poliana Sanchez de Araujo – CRB 10/2094 C732r Comer, Douglas E. Redes de computadores e internet [recurso eletrônico] / Douglas E. Comer ; tradução: José Valdeni de Lima, Valter Roesler. – 6. ed. – Porto Alegre : Bookman, 2016. Editado como livro impresso em 2016. ISBN 978-85-8260-373-4 1. Redes de computadores. 2. Internet. I. Título. CDU 004.7 O autor Dr. Douglas Comer é um internacionalmente reconhecido especialista em redes de com- putadores, protocolos TCP/IP e Internet. Foi um dos pesquisadores que contribuíram com a formação da Internet no fim dos anos 1970 e nos anos 1980, sendo membro do In- ternet Architecture Board, o grupo responsável por guiar o desenvolvimento da Internet. Também foi presidente do comitê técnico CSNET, membro do comitê executivo CSNET e presidente do Distributed Systems Architecture Board da DARPA (Defense Advanced Research Projects Agency). Foi ainda Vice-Presidente de Pesquisa na Cisco Systems. Comer é consultor de projeto de redes de computadores para empresas e palestran- te frequente em ambientes acadêmicos e profissionais ao redor do mundo. Seu sistema operacional, Xinu, e a implementação de protocolos TCP/IP (ambos documentados em seus livros) são utilizados em produtos comerciais. É professor honorário de Ciências da Computação na Purdue University, onde leciona redes de computadores, redes de internet, arquitetura de computadores e sistemas operacionais. Lá desenvolveu labora- tórios de informática inovadores que dão aos alunos a oportunidade de ter experiências práticas na operação de sistemas, redes de computadores e protocolos. Além de escrever livros técnicos best-sellers, já traduzidos para 16 idiomas, atuou como editor norte-americano do periódico Software – Practice and Experience por 20 anos. Comer é membro da ACM. Informações adicionais podem ser encontradas em: w ww.cs.purdue.edu/homes/comer. Capítulo 3 Programação em redes e aplicações da Internet 33 o esquema evita manter os dados em um servidor central. Conceitualmente, dados são distribuídos igualmente por N servidores, e cada requisição de cliente é enviada para o servidor mais apropriado. Como um determinado servidor somente fornece 1/N dos dados, a quantidade de tráfego entre o servidor e a Internet é 1/N quando comparado à arquitetura de servidor único. A ideia principal é que o software do servidor pode rodar no mesmo computador dos clientes. Se cada usuário concordar em localizar 1/N dos dados em seu computador, não serão necessários servidores especiais. A Figura 3.6 ilustra a arquitetura. O exemplo mostra somente quatro computadores. Em um sistema p2p real, o tráfego em um computador pode ser extremamente pequeno, pois N pode ser extremamente grande (dezenas de milhares). Internet 1/N de todo o tráfego Figura 3.6 Interação exemplo em um sistema peer-to-peer. 3.13 Programação em redes e API de sockets A interface utilizada pelas aplicações para comunicação na Internet é conhecida como interface de programas de aplicação (API, Application Program Interface)3. Embora os detalhes exatos de uma API dependam do sistema operacional, uma API particular tem emergido como um padrão de fato para softwares que se comunicam via Internet. Co- nhecida como API de sockets e comumente abreviada como sockets, a API está disponí- vel para muitos sistemas operacionais, como Microsoft Windows, Apple OS-X, Android e vários sistemas UNIX, incluindo o Linux. Em resumo: A API de sockets, que se tornou o padrão de fato para comunicação via Inter- net, está disponível na maioria dos sistemas operacionais. O restante do capítulo descreve funções na API de sockets; leitores que não são progra- madores podem pular os detalhes. 3.14 Sockets, descritores e E/S de rede Pelo fato de ter sido desenvolvida originalmente como parte do sistema operacional UNIX, a API de sockets é integrada com a E/S (Entrada/Saída ou I/O, Input/Output). Em particular, quando uma aplicação cria um socket para comunicação na Internet, o sistema operacional retorna um pequeno descritor inteiro que identifica o socket. A apli- cação então passa o descritor como um argumento quando ele chama funções para fazer 3 O Apêndice 1 contém uma API simplificada (com somente sete funções) e um código-exemplo que demons- tra como tal API pode ser utilizada para criar aplicações na Internet, incluindo um servidor Web funcional. Comer_03.indd 33Comer_03.indd 33 29/10/15 14:4629/10/15 14:46 34 Parte I Introdução a redes e aplicações da Internet a operação no socket (por exemplo, transferir dados através da rede ou receber dados que estão chegando). Em muitos sistemas operacionais, descritores de sockets são integrados com ou- tros descritores de E/S. Como resultado, uma aplicação pode utilizar as operações read e write tanto para E/S nos sockets quanto para E/S em arquivo. Para resumir: Quando uma aplicação cria um socket, o sistema operacional retorna um pe- queno descritor inteiro que a aplicação utiliza para referenciar o socket. 3.15 Parâmetros e API de sockets Programação em sockets é diferente da E/S convencional, porque uma aplicação pre- cisa especifica muitos detalhes, como o endereço do computador remoto, um número de porta para o protocolo e se a aplicação vai agir como cliente ou servidor (i.e., se vai iniciar a conexão). Para evitar uma única função de sockets com muitos parâmetros, os projetistas da API preferiram definir muitas funções. Essencialmente, uma aplica- ção cria o socket e então invoca as funções para especificar os detalhes. A vantagem da abordagem do socket é que a maioria das funções possui três ou quatro parâme- tros; a desvantagem é que o programador deve lembrar-se de chamar múltiplas fun- ções quando utiliza sockets. A Figura 3.7 resume as funções-chave da API de sockets. Nome Usado por Signifi cado accept servidor Aceita uma chamada entrante bind servidor Especifi ca endereço IP e porta para o protocolo close ambos Termina a comunicação connect cliente Conecta com a aplicação remota getpeername servidor Obtém o endereço IP do cliente getsockopt servidor Obtém as opções atuais do socket listen servidor Prepara o socket para uso do servidor recv ambos Recebe dados ou mensagens entrantes recvmsg ambos Recebe dados (no paradigma de mensagem) recvfrom ambos Recebe uma mensagem e o endereço do transmissor send ambos Envia mensagem ou dados sendmsg ambos Envia uma mensagem sendto ambos Envia uma mensagem (variante do sendmsg) setsockopt ambos Muda as opções do socket shutdown ambos Termina a conexão socket ambos Cria o socket Figura 3.7 Resumo das principais funções da API desockets. Capítulo 3 Programação em redes e aplicações da Internet 35 3.16 Chamadas de sockets em um cliente e em um servidor A Figura 3.8 ilustra a sequência das chamadas de sockets efetuadas por típicos clientes e servidores que utilizam conexão via fluxo (confiável). Na figura, o cliente envia os dados primeiro e o servidor espera para recebê-los. Na prática, algumas aplicações são configuradas para que o servidor envie dados antes (i.e., send e recv são chamados na ordem inversa). LADO DO CLIENTE LADO DO SERVIDOR socket connect send recv close socket bind listen accept recv send close Figura 3.8 Ilustração da sequência das funções de socket chamadas por um cliente e um servidor usando o paradigma de fluxo (confiável). 3.17 Funções de sockets utilizadas em clientes e em servidores 3.17.1 A função socket A função socket cria um socket e retorna um descritor inteiro. descritor = socket(domain, type, protocol) O argumento domain especifica a família de endereços que o socket vai utilizar. O iden- tificador AF_INET especifica a versão 4 dos protocolos da Internet (IPv4) e o identifica- dor AF_INET6 especifica a versão 6. O argumento type especifica o tipo de comunica- ção que o socket vai utilizar: transferência de dados via fluxo (confiável) é especificada com SOCK_STREAM, e transferência de mensagens não orientada à conexão é especifi- cada com o valor SOCK_DGRAM. O argumento protocol especifica um protocolo particular de transporte que o so- cket usa. Ter um argumento protocol além do argumento type permite a um único con- junto de protocolos incluir dois ou mais protocolos para o mesmo serviço. Os valores que podem ser utilizados com o argumento protocol dependem da família de protocolos. Tipicamente, IPPROTO_TCP é utilizado com SOCK_STREAM, e IPPROTO_UDP é utilizado com SOCK_DGRAM. Comer_03.indd 35Comer_03.indd 35 29/10/15 14:4629/10/15 14:46 36 Parte I Introdução a redes e aplicações da Internet 3.17.2 A função send Tanto clientes como servidores utilizam a função send para transmitir dados. Tipicamen- te, um cliente envia uma requisição e o servidor envia uma resposta. Send tem quatro argumentos: send (socket, data, length, flags) O argumento socket é o descritor do socket a utilizar. O argumento data é o en- dereço na memória do dado a enviar. O argumento length é um inteiro especificando o número de bytes de dados a transmitir. O argumento flags contém bits que solicitam opções especiais4. 3.17.3 A função recv Tanto clientes como servidores utilizam a função recv para obter dados que foram envia- dos pelo outro. A função tem o formato: recv (socket, buffer, length, flags) O argumento socket é o descritor do socket através do qual o dado será recebido. O argumento buffer especifica o endereço na memória onde serão colocados os dados entrantes. O argumento length especifica o tamanho do buffer. Finalmente, o argu- mento flags permite ao chamador controlar alguns detalhes (por exemplo, permitir que uma aplicação extraia uma cópia da mensagem que chega sem remover a mensa- gem do socket). Recv bloqueia a aplicação até o dado chegar e então coloca até length bytes de dados no buffer (a função retorna o número de bytes que foram extraídos do pacote que chegou). 3.17.4 As funções read e write com sockets Em alguns sistemas operacionais, como o Linux, as funções read e write podem ser utilizadas em vez de recv e send. Read possui três argumentos que são idênticos aos três primeiros da função recv, e write possui três argumentos que são idênticos aos três primeiros da função send. A grande vantagem de utilizar read e write é a generalização – uma aplicação pode ser criada com o objetivo de transferir dados para ou a partir de um descritor sem saber se o mesmo corresponde a um arquivo ou um socket. Dessa forma, um programador pode utilizar um arquivo no disco local para testar um cliente ou um servidor antes de tentar se comunicar através da rede. A grande desvantagem de usar read e write é que o programa perde a portabilidade quando é compilado em outro sistema operacional. 4 Muitas opções são para depuração do sistema e não estão disponíveis para aplicações cliente-servidor con- vencionais. Capítulo 3 Programação em redes e aplicações da Internet 37 3.17.5 A função close A função close avisa ao sistema operacional que ele deve encerrar o socket5. Possui a forma: close (socket) onde socket é o descritor do socket sendo encerrado. Se a conexão está aberta, close a termina (ou seja, informa ao interlocutor remoto). Fechar um socket interrompe seu uso imediatamente – o descritor é liberado, impedindo a aplicação de transmitir ou receber dados. 3.18 A função connect utilizada somente pelo cliente O cliente chama a função connect a fim de estabelecer uma conexão com um servidor específico. A forma é: connect (socket, saddress, saddresslen) O argumento socket é o descritor do socket a utilizar na conexão. O argumento saddress é a estrutura sockaddr, que especifica o endereço do servidor (IP e porta)6. O argumento saddresslen especifica o tamanho do endereço do servidor medido em bytes. Para um socket que utiliza o paradigma de fluxo (confiável), connect inicia a cone- xão de nível de transporte com o servidor especificado. O servidor deve estar esperando a conexão (ver função accept descrita a seguir). 3.19 Funções de socket utilizadas somente pelo servidor 3.19.1 A função bind Quando é criado, o socket não contém informações sobre o endereço IP local ou remoto e o número de porta. Um servidor chama bind para fornecer um número de porta no qual ele vai ficar esperando o contato. Bind possui três argumentos: bind (socket, localaddr, addrlen) O argumento socket é o descritor do socket em uso. O argumento localaddr é uma estru- tura que especifica o endereço local a ser atribuído ao socket. O argumento addrlen é um inteiro que especifica o tamanho do endereço. Como um socket pode ser utilizado com qualquer protocolo, o formato do endere- ço depende do protocolo utilizado. A API de socket define uma forma genérica utiliza- da para representar endereços, e então exige que cada família de protocolos especifique 5 No sistema operacional Microsoft Windows, o nome da função é closesocket em vez de close. 6 A combinação de endereço IP e porta é algumas vezes chamada de endereço de endpoint (ponto de origem ou destino). Comer_03.indd 37Comer_03.indd 37 29/10/15 14:4629/10/15 14:46 38 Parte I Introdução a redes e aplicações da Internet como seus endereços de protocolos vão utilizar a forma genérica. O formato genérico para representar um endereço é definido na estrutura sockaddr. Embora muitas versões tenham sido liberadas, a maioria dos sistemas define a estrutura sockaddr com três campos: struct sockaddr { u_char sa_len; /* tamanho total do endereço */ u_char sa_family; /* família do endereço */ char sa_data[14]; /* o endereço em si */ }; O campo sa_len consiste em um único octeto que especifica o tamanho do ende- reço. O campo sa_family especifica a família à qual o endereço pertence (a constante simbólica AF_INET é utilizada para IPv4 e AF_INET6 para IPv6). Finalmente, o campo sa_data contém o endereço. Cada família de protocolos define o formato exato usado no campo sa_data da estrutura sockaddr. Por exemplo, IPv4 utiliza a estrutura sockaddr_in para definir um endereço. struct sockaddr_in { u_char sin_len; /* tamanho total do endereço */ u_char sin_family; /* família do endereço */ u_short sin_port; /* número da porta do protocolo */ struct in_addr sin_addr;/* endereço IPv4 do computador */ char sin_zero[8]; /* não utilizado (configurado para zero) */ }; Os primeiros dois campos da estrutura sockaddr_in correspondem exatamente aos primeiros dois campos da estrutura genérica sockaddr. Os últimos três campos definem a forma exata do endereço IP. Vale apena ressaltar dois pontos. Primeiro, cada campo identifica o computador e a porta do protocolo naquele computador. O campo sin_addr contém o endereço IP do computador e o campo sin_port contém o número da porta. Segundo, embora somente 6 bytes sejam necessários para armazenar um endereço IPv4 e uma porta, a estrutura genérica sockaddr reserva 14 bytes. Assim, o campo final da estrutura sockaddr_in é um vetor de 8 bytes preenchido com zeros, que deixa a estrutura sockaddr_in do mesmo tamanho que sockaddr. Nós dissemos que um servidor chama bind para especificar a porta na qual vai esperar as comunicações; entretanto, além da porta, a estrutura sockaddr_in contém o número IP do servidor. Embora ele possa utilizar um IP específico, fazer isso pode causar problemas quando o computador possui múltiplas conexões de rede, pois nes- se caso ele tem também múltiplos endereços IP. A fim de permitir a um servidor ope- rar em uma máquina com múltiplas conexões de rede, a API de sockets inclui uma constante simbólica especial, INADDR_ANY, que permite ao computador especificar um número de porta e estabelecer contato em qualquer um dos seus endereços IP. Resumindo: Embora a estrutura sockaddr_in inclua um campo de endereço IP, a API de so- cket fornece uma constante simbólica que permite ao servidor especificar uma porta de protocolo para qualquer um dos seus endereços IP no computador. Capítulo 3 Programação em redes e aplicações da Internet 39 3.19.2 A função listen Após utilizar bind para especificar uma porta, o servidor chama listen para colocar o socket no modo passivo, tornando-o pronto para esperar contato dos clientes. Listen possui dois argumentos: listen (socket, queuesize) O argumento socket é o descritor do socket. O argumento queuesize especifica um com- primento para a fila de requisições de conexão do socket. Um sistema operacional cria filas de requisições separadas para cada socket. Inicialmente, a fila está vazia. Conforme as requisições chegam dos clientes, cada uma é inserida na fila. Quando o servidor soli- cita recuperar uma requisição entrante no socket, o sistema extrai a próxima requisição da fila. O tamanho da fila é importante: se ela estiver cheia quando a requisição chegar, o sistema rejeita esta última. 3.19.3 A função accept Um servidor chama accept para estabelecer uma conexão com o cliente. Se uma requisi- ção de conexão está presente na fila, accept retorna imediatamente; se ainda não existem conexões, o sistema bloqueia o servidor até um cliente enviar uma requisição de cone- xão. Uma vez que a conexão tenha sido aceita, o servidor a utiliza para interagir com o cliente. Após finalizar a comunicação, o servidor encerra a conexão. A função accept tem a forma: newsock = accept (socket, caddress, caddresslen) O argumento socket é o descritor do socket que o servidor criou e associou (via bind) com uma porta específica. O argumento caddress é o endereço de uma estrutura do tipo sockaddr e caddresslen é um ponteiro para um inteiro. Accept preenche campos do ende- reço caddress com o endereço do cliente que solicitou a conexão e configura caddresslen com o comprimento desse endereço. Finalmente, accept cria um novo socket para a cone- xão e retorna o descritor do novo socket. O servidor utiliza o novo socket para se comu- nicar com o cliente e fecha o socket quando finalizada a conexão. Enquanto isso, o socket original do servidor permanece sem modificações – após encerrar a comunicação com um cliente, o servidor utilizar o socket original para aceitar a próxima conexão de um cliente. Assim, o socket original é usado somente para aceitar as requisições de conexão, e toda co- municação com um cliente ocorre por meio de um novo socket criado pela função accept. 3.20 Funções de socket utilizadas com o paradigma de mensagem As funções de socket utilizadas para enviar e receber mensagens são mais complicadas do que as utilizadas com o paradigma de fluxo (confiável), porque muitas opções estão disponíveis. Por exemplo, um transmissor pode escolher se armazena o endereço do receptor no socket e somente envia dados ou se especifica o endereço do receptor a cada vez que uma mensagem é transmitida. Além disso, uma função permite ao transmissor Comer_03.indd 39Comer_03.indd 39 29/10/15 14:4629/10/15 14:46 40 Parte I Introdução a redes e aplicações da Internet colocar o endereço e a mensagem em uma estrutura e passar o endereço da estrutura como um argumento, e outra função permite ao transmissor passar o endereço e a men- sagem como argumentos separados. 3.20.1 Funções de socket sendto e sendmsg As funções sendto e sendmsg permitem ao cliente ou servidor enviar uma mensagem utilizando um socket no paradigma de mensagens (sem conexão). Ambas requerem que o chamador especifique o destino. Sendto usa argumentos separados para a mensagem e endereço de destino: sendto (socket, data, length, flags, destaddress, addresslen) Os primeiros quatro argumentos correspondem aos quatro argumentos da função send; os últimos dois especificam o endereço de destino e o tamanho desse endereço. O ar- gumento destaddress corresponde a uma estrutura do tipo sockaddr (especificamente, sockaddr_in). A função sendmsg faz a mesma operação que sendto, mas abrevia os argumentos definindo uma estrutura. Uma lista menor de argumentos pode facilitar a legibilidade em programas que utilizem sendmsg: sendmsg (socket, msgstruct, flags) O argumento msgstruct é uma estrutura que contém informação sobre o endereço de destino, o tamanho do endereço, a mensagem a ser enviada e o tamanho da mensagem. struct msgstruct { /* estrutura usada por sendmsg */ struct sockaddr *m_saddr; /* ponteiro para endereço de destino */ struct datavec *m_dvec; /* ponteiro para mensagem (vetor) */ int m_dvlength; /* número de itens do vetor */ struct access *m_rights; /* ponteiro para acessar a lista de direitos */ int m_alength; /* número de itens na lista */ }; Os detalhes da estrutura acima não são importantes – devem ser vistos como uma forma de combinar muitos argumentos em uma única estrutura. A maioria das aplica- ções utiliza somente os três primeiros campos, que especificam o endereço de destino, uma lista de itens que constituem a mensagem e o número de itens dessa lista. 3.20.2 Funções recvfrom e recvmsg Um socket no paradigma de mensagens (sem conexão) pode ser utilizado para receber mensagens de um conjunto arbitrário de clientes. Em tais casos, o sistema retorna o endereço do transmissor junto com cada mensagem que chega (o receptor utiliza esse endereço para enviar a resposta). A função recvfrom tem argumentos que especificam a localização da próxima mensagem entrante e o endereço do transmissor. recvfrom (socket, buffer, length, flags, sndraddr, saddrlen) Capítulo 3 Programação em redes e aplicações da Internet 41 Os primeiros quatro argumentos são os mesmos da função recv; os dois argumentos adicionais, sndraddr e saddrlen, são utilizados para guardar o endereço IP do transmis- sor, bem como seu tamanho. O argumento sndraddr é um ponteiro para uma estrutura do tipo sockaddr na qual o sistema escreve o endereço do transmissor. O argumento saddrlen é um ponteiro para um inteiro onde o sistema escreve o tamanho do endereço. Note que recvfrom guarda o endereço do transmissor na forma exata que o sendto espe- ra, tornando fácil transmitir a resposta. A função recvmsg, que é a contraparte do sendmsg, opera da mesma forma que o recvfrom, mas requer menos argumentos. Ela tem a forma: recvmsg (socket, msgstruct, flags) O argumento msgstruct dá o endereço da estrutura que armazena o endereço para uma mensagem entrante, bem como a localização do endereço IP do transmissor. A msgstruct gravada pela recvmsg usa exatamente o mesmo formato que a estrutura requerida pelo sndmsg, tornando fácil receber uma requisição, gravar o endereçodo transmissor e então usar o endereço gravado para enviar uma resposta. 3.21 Outras funções de sockets A API de sockets contém uma variedade de funções menores não descritas acima. Por exemplo, depois que um servidor aceita uma conexão, ele pode chamar getpeername para obter o endereço do cliente remoto que iniciou a conexão. Um cliente ou um servi- dor pode também chamar gethostname para obter informações sobre o computador no qual está rodando. Duas funções de objetivo geral são utilizadas para manipular opções de socket. A função setsockopt configura as opções de socket, enquanto getsockopt obtém as confi- gurações atuais. As opções são utilizadas principalmente para lidar com casos especiais (por exemplo, para aumentar o tamanho interno de buffer). Duas funções fornecem tradução entre endereços de Internet e nomes de compu- tadores. A função gethostbyname retorna o endereço IP de um computador a partir do seu nome. Clientes geralmente chamam gethostbyname para traduzir um nome digitado por um usuário em seu endereço IP correspondente. A função gethostbyaddr fornece o mapeamento inverso – dado um endereço IP para um computador, retorna o nome desse computador. Clientes e servidores podem utilizar gethostbyaddr para traduzir um ende- reço IP em um nome que o usuário possa entender. 3.22 Sockets, threads e herança A API de sockets trabalha com servidores concorrentes. Embora os detalhes dependam do sistema operacional, as implementações de sockets aderem ao seguinte princípio da herança: Cada nova thread que é criada herda da thread que a criou uma cópia de todos os sockets abertos. Comer_03.indd 41Comer_03.indd 41 29/10/15 14:4629/10/15 14:46 42 Parte I Introdução a redes e aplicações da Internet A implementação de socket utiliza um mecanismo de contagem de referência para controlar cada socket. Quando um socket é criado pela primeira vez, o sistema configura a contagem de referência desse socket para 1, e o socket existe enquanto essa contagem permanecer positiva. Quando o programa cria uma thread adicional, esta herda um pon- teiro para cada socket aberto existente no programa, e o sistema incrementa a contagem de referência de cada socket em 1. Quando uma thread chama close, o sistema decremen- ta a contagem de referência do socket; se a contagem chegar a zero, o socket é fechado. Em termos de servidores concorrentes, a thread principal possui o socket utilizado para aceitar conexões. Quando uma solicitação de conexão chega, o sistema cria um novo socket para a nova conexão, e a thread principal cria uma nova thread para lidar com a conexão. Imediatamente após a thread ser criada, ambas as threads têm acesso ao socket original e também ao novo socket, e a contagem de referência de cada socket é 2. A thread original chama close para o novo socket, e a thread de serviço chama close para o socket original, reduzindo a contagem de referência deles para 1. Finalmente, quando termina de interagir com um cliente, a thread de serviço chama close no novo socket, reduzindo a contagem de referência para zero e causando o encerramento do socket. Dessa forma, o tempo de vida dos sockets num servidor concorrente pode ser resumido da seguinte forma: O socket original utilizado para aceitar conexões existe enquanto a thread prin- cipal está sendo executada; um socket utilizado para uma conexão específica existe somente enquanto existir a thread que trata daquela conexão. 3.23 Resumo Na Internet, todos os serviços são fornecidos por aplicações que utilizam ou o paradig- ma de fluxo ou o paradigma de mensagem para se comunicar. O paradigma de fluxo garante a entrega dos bytes na ordem correta, mas pode escolher quantos bytes vai pas- sar ao receptor de cada vez. O paradigma de mensagem preserva os limites do pacote, porém permite que mensagens sejam perdidas, duplicadas, atrasadas ou entregues fora de ordem. O modelo de comunicação básico utilizado pelas aplicações de rede é conhecido como modelo cliente-servidor. O programa que espera passivamente pelo contato é cha- mado de servidor e o programa que inicia contato ativamente com o servidor é chamado de cliente. Cada computador tem um endereço único, e cada serviço, tal como e-mail ou aces- so Web, tem um identificador único conhecido como número de porta do protocolo. Quando um servidor inicia a execução, ele especifica o número da porta; quando for contatar o servidor, o cliente deve especificar tanto o endereço do servidor como o nú- mero da porta do serviço. Um único cliente pode acessar mais de um serviço, tanto em um servidor como em servidores localizados em múltiplas máquinas. Além disso, um servidor de um serviço pode se tornar um cliente de outros serviços. Projetistas e programadores devem ter cui- dado para evitar dependências circulares entre servidores. Uma interface de programa de aplicação (API, Application Program Interface) especifica os detalhes de como um programa de aplicação interage com a pilha de pro- Encerra aqui o trecho do livro disponibilizado para esta Unidade de Aprendizagem. Na Biblioteca Virtual da Instituição, você encontra a obra na íntegra. DICA DO PROFESSOR O vídeo a seguir aborda as tecnologias de interface de sockets. Confira! Conteúdo interativo disponível na plataforma de ensino! EXERCÍCIOS 1) O que API de sockets representa? A) a) Uma função Java para implementar sockets. B) b) Uma API é normalmente fornecida pelo sistema operacional que permite que programas de aplicação controlem e usem sockets de rede. C) c) Chamadas do cliente para o servidor. D) d) Chamadas para clientes específicos. E) e) Uma função de sincronização na implementação de um socket. 2) Quais são as atribuições dos procedimentos socket() e close()? A) a) Abrir uma porta para conexão e fechar conexão. B) b) Encaminhar uma mensagem e abrir uma conexão. C) c) Criar um socket e fechar uma conexão. D) d) Não é necessário a utilização desses procedimentos. E) e) Criar uma conexão direta com a internet e fechar uma conexão socket. 3) Por que o procedimento connect() é tão importante? A) a) Porque esse procedimento cria um socket. B) b) Porque esse procedimento abre uma porta para conexão. C) c) Porque esse procedimento é responsável pelo sincronismo dos dados. D) d) Porque ele conecta um cliente a um servidor em uma aplicação socket. E) e) Esse procedimento conecta um cliente com outro. 4) Quem é responsável pelo protocolo TCP/IP? A) a) A API de socket. B) b) O sistema operacional. C) c) Os procedimentos que implementam sockets. D) d) A aplicação. E) e) Os modems. 5) O que são procedimentos Recv*() e Send*()? A) a) São funções que atendem escrita e leitura de dados somente para o cliente. B) b) São funções que atendem escrita e leitura de dados somente para o servidor. C) c) São funções utilizadas no desenvolvimento da API de software. D) d) Esses procedimentos são utilizados no desenvolvimento de sockets e atendem tanto o cliente quanto o servidor na tarefa de ler e receber dados. E) e) Esses procedimentos iniciam e encerram a conexão via sockets. NA PRÁTICA O uso de sockets foi concebido para o desenvolvimento de aplicações distribuídas e, atualmente, foi substituído por tecnologias semelhantes, mas de implementação mais simples, como é o caso da Invocação de Metódo Remoto (RMI). SAIBA + Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor: Utilizando a interface Socket de JAVA (tutorial 1). Conteúdo interativo disponível na plataforma de ensino! Utilizando a interface Socket de JAVA (tutorial 2). Conteúdo interativo disponível na plataforma de ensino! DevMedia. Java Sockets: criando comunicações em Java. Conteúdo interativo disponível na plataforma de ensino! Modelos de redes APRESENTAÇÃO Nesta Unidade de Aprendizagem você vai estudar os modelos de rede, mais especificamente os modelos OSI e internet - este também conhecido como modelo TCP/IP. Por meio do estudo dos
Compartilhar