Redes de Computadores (PPGI/UFRJ)



Documentos relacionados
Comunicação em Sistemas Distribuídos. Conceitos: Paradigma C/S. Conceitos: Paradigma C/S. Paradigma Cliente/Servidor

Teleprocessamento e Redes (MAB-510) Gabarito da Segunda Lista de Exercícios 01/2010

REDES DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

REDES DE COMPUTADORES

Considerações no Projeto de Sistemas Cliente/Servidor

Programação de Sockets em C/C++

APLICAÇÃO REDE APLICAÇÃO APRESENTAÇÃO SESSÃO TRANSPORTE REDE LINK DE DADOS FÍSICA 1/5 PROTOCOLOS DE REDE

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

Comunicação entre Processos

Rede de Computadores

Informática I. Aula Aula 22-03/07/06 1

MODELO CLIENTE SERVIDOR

Redes de Computadores Modelo de referência TCP/IP. Prof. MSc. Hugo Souza

Capítulo 7 CAMADA DE TRANSPORTE

Arquitetura e Protocolos de Rede TCP/IP. Modelo Arquitetural

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Protocolos Hierárquicos

Redes de Computadores II

Administração de Sistemas de Informação I

PROJETO E IMPLANTAÇÃO DE INTRANETS

Protocolo. O que é um protocolo? Humano: que horas são? eu tenho uma pergunta

Redes TCP/IP. Prof. M.Sc. Alexandre Fraga de Araújo. INSTITUTO FEDERAL DO ESPÍRITO SANTO Campus Cachoeiro de Itapemirim

Camada de Transporte, protocolos TCP e UDP

Unidade 2.1 Modelos de Referência

Revisão. Karine Peralta

Camada de Transporte

Arquitetura de Rede de Computadores

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

Rede d s d e d Com o pu p t u ado d r o es Conceitos Básicos M d o e d los o de d Re R de d s:

Cap 01 - Conceitos Básicos de Rede (Kurose)

Redes. Pablo Rodriguez de Almeida Gross

Uc-Redes Técnico em Informática André Luiz Silva de Moraes

Comunicando através da rede

CCNA 2 Conceitos Básicos de Roteadores e Roteamento

AULA Redes de Computadores e a Internet

Unidade 2.1 Modelos de Referência. Bibliografia da disciplina. Modelo OSI. Modelo OSI. Padrões 18/10/2009

Sistemas Distribuídos

Arquiteturas de Rede. Prof. Leonardo Barreto Campos

(Open System Interconnection)


Redes de Computadores

AULA 03 MODELO OSI/ISO. Eduardo Camargo de Siqueira REDES DE COMPUTADORES Engenharia de Computação

ADDRESS RESOLUTION PROTOCOL. Thiago de Almeida Correia

O modelo ISO/OSI (Tanenbaum,, 1.4.1)

UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTÁTISTICA GRADUAÇÃO EM CIÊNCIAS DA COMPUTAÇÃO DISCIPLINA: COMUNICAÇÃO DE DADOS

INFORMÁTICA FUNDAMENTOS DE INTERNET. Prof. Marcondes Ribeiro Lima

MÓDULO 8 Modelo de Referência TCP/IP

UNIVERSIDADE. Sistemas Distribuídos

UMA ABORDAGEM SOBRE A INTERFACE DE PROGRAMAÇÃO DE APLICAÇÕES SOCKETS E A IMPLEMENTAÇÃO DE UM SERVIDOR HTTP

Redes de Computadores

Rede de Computadores II

Há dois tipos de configurações bidirecionais usados na comunicação em uma rede Ethernet:

Modelos de Camadas. Professor Leonardo Larback

Sistemas Distribuídos

Redes de Computadores. Prof. Dr. Rogério Galante Negri

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET

Prof. Marcelo Cunha Parte 5

Tipos de Servidores. Servidores com estado

TECNOLOGIA WEB INTERNET PROTOCOLOS

REDES DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

INTERNET = ARQUITETURA TCP/IP

Redes de computadores. Redes para Internet

REDES DE COMPUTADORES

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

USO GERAL DOS PROTOCOLOS SMTP, FTP, TCP, UDP E IP

Sistemas Distribuídos

CAMADA DE TRANSPORTE

IP significa Internet Protocol. A Internet é uma rede, e assim como ocorre em qualquer tipo de rede, os seus nós (computadores, impressoras, etc.

Serviço de datagrama não confiável Endereçamento hierárquico. Facilidade de fragmentação e remontagem de pacotes

Um pouco sobre Pacotes e sobre os protocolos de Transporte

Prof. Manuel A Rendón M

Permite o acesso remoto a um computador;

Wireshark. Captura de Protocolos da camada de aplicação. Maicon de Vargas Pereira


5.2 MAN s (Metropolitan Area Network) Redes Metropolitanas

Capítulo 9 - Conjunto de Protocolos TCP/IP e Endereçamento. Associação dos Instrutores NetAcademy - Julho de Página

FTP Protocolo de Transferência de Arquivos

Veja abaixo um exemplo de um endereço IP de 32 bits:

AULA 01 INTRODUÇÃO. Eduardo Camargo de Siqueira REDES DE COMPUTADORES Engenharia de Computação

TCP/IP TCP UDP IP HTTP HTTPS FTP TFTP TELNET POP3 IMAP SMTP SNMP DHCP


3 SERVIÇOS IP. 3.1 Serviços IP e alguns aspectos de segurança

REDES DE COMPUTADORES E TELECOMUNICAÇÕES MÓDULO 16

SISTEMAS DISTRIBUIDOS

DHCP - ESAF. 1- Prova: ESAF SET- RN - Auditor Fiscal do Tesouro Estadual - Prova 2

ARP. Tabela ARP construída automaticamente. Contém endereço IP, endereço MAC e TTL

1 Redes de Computadores - TCP/IP Luiz Arthur

TRANSMISSÃO DE DADOS Prof. Ricardo Rodrigues Barcelar

Sistemas Distribuídos

Prof. Marcelo Machado Cunha Parte 3

Redes de Computadores

Aula 3. Objetivos. A internet.

Protocolo Ethernet e Dispositivos de Interconexão de LANs

Centro Tecnológico de Eletroeletrônica César Rodrigues. Atividade Avaliativa

TECNOLOGIAS WEB AULA 2 PROF. RAFAEL DIAS

Redes de Computadores

Programação com sockets (em Java)

Transcrição:

Redes de Computadores (PPGI/UFRJ) Aula 1: Apresentação do curso e revisão de interface de sockets 03 de março de 2010

1 2 O que é a Internet 3 4

Objetivos e página do curso Objetivos Apresentar a motivação, os conceitos fundamentais, tecnologias e padrões para o uso de Redes de Computadores Aprofundar o estudo sobre tópicos essenciais do projeto e implementação de Redes de Computadores Página do curso http://www.dcc.ufrj.br/ silvana/redes/

Conteúdo do curso 1 Revisão de conceitos básicos de Redes de Computadores 2 Novos protocolos da camada de transporte 3 Controle de congestionamento 4 Técnicas de roteamento 5 Engenharia de tráfego MPLS 6 Acesso múltiplo ao meio 7 Qualidade de serviço

Instrumentos de acompanhamento e avaliação Trabalhos práticos (Tp) (implementação, listas de exercícios, relatórios técnicos) Uma prova (P) no final do curso (12 de maio) Média final: (P + Tp)/2 Mapeamento para os conceitos A, B, C e D: 0 a 5: D 5 a 7: C 7 a 9: B 9 a 10: A

J. Kurose and K. Ross, Computer Networking: A Top-Down Approach, Addison-Wesley, 5 a ed., 2009 A. S. Tanenbaum, Computer Networks, Prentice-Hall, 4 a ed., 2003 S. Keshav, An Engineering Approach to Computer Networking, Addison-Wesley, 2010 Artigos e RFCs selecionados ao longo do curso

Descrição da Internet O que é a Internet Interconexão de elementos de software e de hardware A Internet é uma rede de computadores que interconecta milhões de dispositivos computacionais em todo o mundo (PCs, TVs, celulares, sensores, automóveis, eletrodomésticos, etc.) Infraestrutura para desenvolvimento de aplicações distribuídas A Internet disponibiliza uma infraestrutura que provê serviços para as aplicações distribuídas (emails, web, mensagens instantâneas, comércio eletrônico, compartilhamento de arquivos, shell remoto, etc.)

O que é a Internet Rede de dispositivos e enlaces de comunicação

O que é a Internet Rede de dispositivos e enlaces de comunicação Tipos de acesso à Internet 1 Dial-up (cabeamento telefônico compartilhado) 2 DSL (Digital Subscriber Line) e Cabo (cabeamento telefônico ou de TV compartilhado com faixas de frequência distintas) 3 Redes locais com fio (LANs) 4 Redes locais sem fio (WLANs)

Pilha de protocolos da Internet O que é a Internet 1 Aplicação: dá suporte a aplicações de rede (FTP, SMTP, HTTP) 2 Transporte: transferência de dados processo-a-processo (TCP, UDP) 3 Rede: roteamento de datagramas da origem até o destino IP, protocolos de roteamento 4 Enlace: transferência de dados entre elementos de rede vizinhos (Ethernet) 5 Física: bits no fio (par-trançado, coaxial, fibra óptica)

Pilha de protocolos da Internet O que é a Internet 2 2 Fonte: http://www.aw-bc.com/kurose-ross/

Desenvolvimento de aplicações distribuídas Como uma aplicação local se transforma em uma aplicação na Internet? As aplicações distribuídas executam nos nós terminais (não nos comutadores de pacotes) Os pedaços de código que executam nos terminais acrescentam código para trocar mensagens/dados entre terminais Os terminais conectados à Internet provêem uma API que especifica como a aplicação solicita o uso da infraestrutura de comunicação da Internet

Paradigma cliente/servidor O protocolo de comunicação TCP/IP pode ser visto como uma infraestrutura básica para transferência de dados entre aplicações não trata o problema do rendezvous porque não provê um mecanismo para criar uma aplicação automaticamente quando uma mensagem chega um programa deve estar esperando para aceitar a comunicação quando ela começar O paradigma cliente/servidor define um modelo de interação que resolve o problema do rendezvous: em geral, clientes iniciam a comunicação: enviam uma requisição e aguardam uma resposta servidores esperam por requisições de clientes: executam a computação requerida e devolvem o resultado para o cliente

Modelo cliente/servidor 3 3 Fonte: Notas de aula, profa. Noemi Rodriguez

Exemplo de interação cliente/servidor Programas paralelos, seguindo o modelo mestre-escravo, onde o mestre detém um pool de tarefas: 4 4 Fonte: Notas de aula, profa. Noemi Rodriguez

Complexidade do lado do servidor Como os servidores normalmente precisam acessar dados, executar computações ou usar portas protegidas pelo Sistema Operacional, o software do lado do servidor requer privilégios especiais do sistema é preciso ter cuidado para não repassar esses privilégios para o cliente que usa o serviço ex., em um sistema de arquivo distribuído, é preciso checar se um dado arquivo pode ser acessado por um dado cliente, e para isso o servidor não pode confiar na checagem usual feita pelo Sistema Operacional (o SO irá checar os privilégios do processo do servidor, e não do cliente remoto)

Exemplo aplicação cliente/servidor para distribuição de arquivos 5 Fonte: Notas de aula, profa. Noemi Rodriguez

Complexidade do lado do servidor Servidores devem incluir código adicional para tratar as seguintes questões: 1 Autenticação: verificar a identidade do cliente 2 Autorização: verificar se um dado cliente tem privilégios para acessar um dado serviço 3 Segurança dos dados transmitidos: garantir que os dados não são revelados ou comprometidos de forma não prevista 4 Privacidade: garantir que informações privadas não são publicadas 5 Proteção: garantir que as aplicações na rede não usarão de forma indevida os recursos disponibilizados

Servidores orientados a conexão e não-orientados a conexão Ao projetar uma aplicação cliente/servidor, o programador deve escolher entre dois tipos de interação: orientada a conexão (protocolo da camada de transporte TCP): verifica se os dados foram recebidos sem erros e retransmite pacotes perdidos, garante ordem de entrega dos pacotes e provê controle de fluxo sem conexão (protocolo da camada de transporte UDP): não provê qualquer serviço para detectar e corrigir erros de transmissão de pacotes, funciona bem se a infra-estrutura de rede funciona bem (ex., redes locais)

Estado em servidores As informações que o servidor mantém sobre o estado das interações com os clientes é chamada informação de estado: 1 (a) Servidores sem estado: mensagens mais longas (devem sempre carregar toda a informação necessária para o processamento da requisição), o significado de uma mensagem não deve depender da sequência de mensagens anteriores 2 (b) Servidores com estado: em geral, permite simplificar o processamento e transmitir mensagens mais curtas (informações de estado são mantidas entre o processamento das requisições) permitem otimizações e alguma facilidade para detectar quedas de outras máquinas (ex., servidor de arquivos: (i) manter informação sobre arquivos abertos e posições de leitura/escrita; (ii) devolver handle para o cliente usar nas próximas interações)

Identificando a localização do servidor Diferentes métodos podem ser usados para encontrar o endereço e número de porta do servidor: 1 especificar o nome ou IP do servidor e a porta como constantes 2 requisitar que o usuário identifique o servidor quando inicia a aplicação 3 obter a informação sobre o servidor de outras fontes (arquivo, disco local) 4 usar um protocolo exclusivo para encontrar um servidor (ex., enviar uma mensagem broadcast que todos os servidores respondem) Alguns serviços não requerem um servidor específico, por exemplo, o serviço que informa o dia e hora, nesse caso o software do cliente pode escolher um servidor qualquer em uma lista

Processamento concorrente no paradigma cliente/servidor O termo concorrência refere-se à computação simultânea, real ou aparente Do lado do cliente, a operação concorrente é alcançada facilmente porque: 1 o SO permite que vários usuários executem o programa cliente concorrentemente na mesma máquina; ou 2 usuários em diferentes máquinas executam o programa cliente simultaneamente Um programa cliente individual opera como um programa convencional, ele não precisa gerenciar concorrência explicitamente

Processamento concorrente no paradigma cliente/servidor Do lado do servidor é preciso tratar as requisições recebidas concorrentemente: o software do processo servidor deve ser explicitamente programado para tratar requisições concorrentes, uma vez que vários clientes podem contactar o servidor

Processamento concorrente no paradigma cliente/servidor

Servidor TCP iterativo

Servidor TCP concorrente multiprocesso

Servidor TCP concorrente multithreading

Sockets: abstração para comunicação entre processos via rede Abordagem adotada: definir funções gerais para comunicação, e usar parâmetros para definir protocolos específicos Histórico: desenvolvimento de interface para TPC/IP no Unix O socket é identificado por um inteiro chamado descritor do socket descritor do socket = socket() similar aos descritores de arquivos

Descritores de sockets e de arquivos No Unix, o sistema mantém uma tabela de descritores de arquivos para cada processo Quando um processo abre um arquivo, o sistema acrescenta um ponteiro para uma estrutura de dados interna com informações sobre esse arquivo na tabela de descritores de arquivo do processo e devolve o índice da entrada nessa tabela A aplicação só precisa guardar esse índice (descritor do arquivo) para usar nas chamadas subsequentes que requerem acesso ao arquivo aberto

Descritores de sockets e de arquivos

Descritores de sockets e de arquivos A interface de socket adiciona uma nova abstração para a comunicação em rede Cada socket é identificado por um inteiro chamada descritor de socket O Unix aloca os descritores de socket na mesma tabela de descritores de arquivos, então uma aplicação não pode ter um descritor de arquivo e um descritor de socket com o mesmo número um descritor de socket é criado com a chamada socket()

Descritores de sockets e de arquivos

6 6 Fonte: http://www.aw-bc.com/kurose-ross/

Programando com sockets Uma vez criado, o socket pode ser usado para esperar por conexões ou iniciar conexões: socket passivo: espera por uma conexão (usado por servidores) socket ativo: inicia uma conexão (usado pelos clientes) Cada tipo de protocolo define a forma de endereçar os pontos de comunicação a interface de socket define famílias de endereços para cada tipo de endereço a família de endereços do protocolo TCP/IP é AF INET Complexidade: parâmetros que o programador pode/tem que configurar

Exemplos de chamadas da API de sockets socket() cria um socket usado para comunicação e retorna um descritor connect() depois de criar um socket, um cliente chama connect para estabelecer uma conexão com um servidor, usando o descritor do socket write() para enviar dados através de uma conexão TCP read() para receber dados através de uma conexão TCP close() para desalocar o socket

Exemplos de chamadas da API de sockets bind() usado por servidores para especificar uma porta na qual ele irá esperar conexões listen() servidores chamam o listen para colocar o socket no modo passivo e torná-lo disponível para aceitar conexões accept() depois que um servidor chama socket para criar um socket, bind para especificar seu endereço e listen para colocá-lo no modo passivo, ele deve chamar o accept para pegar a primeira solicitação de conexão na fila

Interação cliente/servidor usando socket

Especificação de pares 8 Fonte: http://www.aw-bc.com/kurose-ross/ 8

Nomes de domínio e funções de conversão O cliente TCP/IP deve especificar o endereço de um servidor usando a estrutura de dados sockaddr in Para isso é preciso converter um número decimal separado por pontos ou um nome de domínio no formato texto em um endereço IP de 32 bits binário A interface de socket inclui funções especiais para essas conversões: inet addr(): recebe uma string ASCII que contém um endereço decimal separado por pontos e retorna o endereço IP em binário gethostbyname(): recebe uma string ASCII com o nome de um domínio e retorna o endereço em uma estrutura de dados chamada hostent

Números de porta e ordem dos bytes na rede O TCP/IP especifica uma representação padrão para inteiros binários com o byte mais significativo primeiro A interface de socket oferece funções para converter o formato de byte usado na rede para o formato usado na máquina local: htons: host to network short (16 bits) ntohs: network to host short (16 bits) htonl: host to network long (32 bits) ntohl: network to host long (32 bits)

Algoritmo de clientes TCP

Algoritmo de clientes TCP A escolha do endereço IP local e da porta local para a conexão com o servidor ocorre como efeito colateral da chamada connect() O IP escolhido (interface de rede) deve ser reconhecido pelo software de roteamento A chamada connect() não retorna até que a conexão TCP tenha sido estabelecida ou o timeout do TCP seja alcançado ela inicia uma troca de pacotes e testa a validade do endereço remoto do servidor

Lendo respostas em uma conexão TCP O TCP é um protocolo orientado-stream: ele garante a entrega de uma sequência de bytes que o emissor escreveu, mas não garante entregá-los no mesmo bloco que eles foram escritos O TCP pode decidir quebrar o bloco de dados em pedaços e transmitir cada pedaço em um segmento separado (ex., quando o buffer do receptor não tem espaço suficiente para todo o bloco) o receptor pode receber dados em pequenos rajadas, mesmo sendo enviados em uma única chamada write() O TCP também pode escolher acumular uma certa quantidade de bytes em seu buffer de entrada antes de enviar um segmento o receptor pode receber dados em grandes rajadas, mesmo sendo enviados em várias chamadas write()

Exemplo de aplicação C/S usando sockets em C Acessar site da disciplina: http://www.dcc.ufrj.br/ silvana/redes/mab731-socket.tgz

Tarefa de casa (para aquecer os tamborins :-) Implementar uma aplicação cliente/servidor com chamada remota de procedimento Implementar um servidor TCP multithreading que ofereça as seguintes operações: 1 Somar dois números (positivos ou negativos) 2 Multiplicar dois números (inteiros ou fracionários) 3 Elevar um número à potência de 2 4 Ecoar uma string recebida 5 Informar quantas requisições o cliente fez ao servidor Implementar uma aplicação cliente que permita ao usuário interagir com o servidor fazendo chamadas às operações oferecidas Executar os programas cliente e servidor em máquinas distintas

1 J. Kurose and K. Ross, Computer Networking: A Top-Down Approach, 2009 2 Comer, Interligação de Redes com TCP/IP. Vol. I, Campus, 2006