29-Aug-07. Histórico. Interfaces e Periféricos Redes como interfaces. Abstração da infraestrutura de rede como interface

Documentos relacionados
Objetivo. Processamento Paralelo Middleware. Cliente/Servidor. Histórico. Cliente/Servidor. Programação de sistemas distribuídos

16-Apr-08. Objetivo. Processamento Paralelo Middleware. Histórico. Cliente/Servidor. Cliente/Servidor

21/11/16. Histórico. Interfaces e Periféricos Redes como interfaces. Abstração da infraestrutura de rede como interface

05-May-09. Objetivo. Processamento Paralelo Middleware. Histórico. Cliente/Servidor. Cliente/Servidor

29/3/16. Processamento Paralelo Arquitetura de Software para Interação Distribuída. Cliente/Servidor. Cliente/Servidor.

sockets interprocess communication Taisy Weber

Aula Prática. Comunicação em SOCKTS. Disciplina: INF01151

Comunicação entre Processos

Programação com Sockets TCP e UDP - Cliente. Gustavo Leitão

Bibliotecas. Apoio à Programação Distribuída. Socket. Socket. bibliotecas bibliotecas+ferramentas linguagens de programação distribuídas

Programação com sockets (em Java)

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

Comunicação entre Processos

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

Sistemas de Operação Sockets

UNIVERSIDADE. Sistemas Distribuídos

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

Redes de Computadores (PPGI/UFRJ)

Redes de Computadores

Sistemas Distribuídos

Cliente-servidor com Sockets TCP

Comunicação entre processos. Sistema centralizado

Eng.ª Informática. Redes de Computadores. Frequência. 4 de Julho de 2006

Cliente TCP. Programação sockets. Agenda. Cliente TCP. Chamadas sockets para TCP. Chamada socket() Chamada socket()

SISTEMAS DISTRIBUIDOS

Comunicação em Sistemas Distribuídos

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

Prof. Marcelo Cunha Parte 5

1 Redes de Computadores - TCP/IP Luiz Arthur

Sistemas Distribuídos. Coulouris Capítulo 4

REDES DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

Redes de Computadores. Prof. André Y. Kusumoto

Sockets. Bruno Guimarães Lucas Rossini

TROCA DE MENSAGENS SOCKETS. Comunicando processos através de SOCKETS. SOCKETS com conexão. SOCKETS sem conexão

INF01018 Aula Prática 1 Cliente-Servidor e Multicast

socket Objetivo: aprender a construir aplicações cliente/servidor que se comunicam usando sockets

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

REDES DE COMPUTADORES

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

Sumário. Introdução ao TCP/IP e à Internet API Sockets para comunicação via redes Exemplos

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

Sistema centralizado O Paradigma Cliente/Servidor

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

Introdução à Programação Sockets

Cliente-servidor com Sockets TCP

Rede de Computadores II

Sistemas Operacionais. Conceitos de um Sistema Operacional

TECNOLOGIA WEB INTERNET PROTOCOLOS

CAMADA DE TRANSPORTE

Introdução à Programação Sockets. Programação Sockets. (c) Volnys Bernal. Agenda. Introdução à Programação Sockets

Rede de Computadores

Sistemas Distribuídos

Aula 2 Arquitetura de Redes. Prof. Dr. S. Motoyama

Comunicação entre Processos

AULA Redes de Computadores e a Internet

Modelo Cliente/Servidor e Introdução a Sockets

Engenharia Elétrica Eletrônica Slides 20: TCP/IP em Winsocks 2. API do Windows para programar utilizando o protocolo TCP/IP Prof. Jean Marcelo SIMÃO

Revisão. Karine Peralta

Infra-Estrutura de Software. Introdução. (cont.)

Programação de Aplicações em. Rede usando Sockets

FPROT. Fonte: SENAC TI Fernando Costa

Programação em Rede Baseada em Java. Luiz Affonso Guedes Tópicos em Redes de Computadores Programação Distribuída

Considerações no Projeto de Sistemas Cliente/Servidor

FTP FILE F TRANSFER PROTOCOL. Tópicos

Cliente/Servidor. Programação com Sockets. Graça Bressan. Graça Bressan/LARC

Rede de Computadores (REC)

MODELO CLIENTE SERVIDOR

Arquitetura de Redes: Camadas de Protocolos (Parte I) Prof. Eduardo

Universidade Federal de Minas Gerais. Sistemas Operacionais. Aula 23. Sistemas Operacionais Distribuídos

Sistemas Distribuídos

API de Sockets. Modelo Cliente/Servidor (2/2) Modelo Cliente/Servidor (1/2) José Pedro Oliveira Sistemas Operativos I

Sistemas Distribuídos

Soquetes TCP. Jean Ribeiro Damasceno. Escola de Engenharia Universidade Federal Fluminense (UFF) Rua Passo da Pátria, 156 Niterói RJ Brasil

Sistemas Distribuídos

Comunicando através da rede

Redes de Computadores. Protocolos de comunicação: TCP, UDP

Sistemas Operacionais

Redes de Computadores e a Internet

Redes de Computadores. Arquitetura de Protocolos Profa. Priscila Solís Barreto

Redes de Computadores

CST em Redes de Computadores

Redes de Computadores II

Introdução à Programação Sockets. Programação Sockets. (c) Volnys Bernal. Agenda. Introdução à Programação Sockets

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

Ciência de Computadores Sistemas Distribuídos e Móveis

Introdução à Ciência da Computação

Redes. Pablo Rodriguez de Almeida Gross

Aula 3. Objetivos. A internet.

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Introdução à Programação Sockets. Programação Sockets. (c) Volnys Bernal. Agenda. Introdução à Programação Sockets

Redes de Computadores (RCOMP 2014/2015)

Comunicação entre processos

Redes de Computadores e Aplicações

Comunicação Inter-Processos. Prof. Adriano Fiorese. Conceitos Iniciais

Tópicos em Sistemas Distribuídos. Modelos de Comunicação

MC823 Laboratório de Teleprocessamento e Redes

A Camada de Transporte

Projeto de Sistemas Distribuídos. Prof. Andrêza Leite

Transcrição:

Interfaces e Periféricos Redes como interfaces Prof. João Paulo A. Almeida (jpalmeida@inf.ufes.br) Histórico Surgimento e popularização das redes criou a necessidade e oportunidade de usá-las como mecanismo de interação entre um computador e periféricos Ao mesmo tempo miniaturização e barateamento de dispositivos de rede permitiram que periféricos se tornassem autônomos e conectados diretamente na rede Mainframe com seu terminais... Terminais ficaram mais poderosos e com mais periféricos que poderiam ser compartilhados 2007/02 - INF02788 Evolução das redes Evolução das redes Abstração da infraestrutura de rede como interface Abstração da infraestrutura de rede como interface 1

Latência (atrasos na comunicação) Comportamento imprevisível da rede Falhas e Particionamento de rede Segurança Heterogeneidade Fonte: http://www.cs.wustl.edu/~schmidt/pdf/mt-orbix4.pdf Programação de sistemas distribuídos Como programar a interação entre uma unidade de processamento e os periféricos (e/ou outras unidades de processamento com seus periféricos? Modelos de programação para sistemas distributídos em / Interface de software para comunicação de um programa de usuário (parte de aplicação) com a pilha de protocolos / Biblioteca de chamadas / API Socket é uma estrutura de dados Cliente e servidor se comunicam através de um par de s Endereço (32-bits na versão 4) + número da porta (16-bits = 64K portas) http://pages.cpsc.ucalgary.ca/~ijirasek/courses/cpsc441/slides/s.ppt#3 2

: usando serviços no nível de transporte Protocolos no nível de aplicação (ex., HTTP, DNS, SMTP) usam os serviços da camada de transporte A camada de transporte provê: Comunicação entre processos Multiplexação/demultiplexação baseado no conceito de portas Entrega confiável de dados (em ordem): setup (handshake) congestion control flow control Stream (SOCK_STREAM) Não confiável e sem ordem garantida de datagramas: Para se usar best-effort Datagram (SOCK_DGRAM) Uma ming Interface (API) provê funções, tipos de dados, estruturas de dados e constantes Flexível, simples de usar, padronizado (portabilidade) A API BSD s provê uma abstração similar a um sistema de arquivos para s (open, close, read, write) BSD s (originários do BSD 4.1 Unix em 1981) são a forma mais popular (API mais popular) disponível em: FreeBSD, Linux, Windows, Mac OS X,... também podem ser usados para comunicação entre processos no UNIX http://lrcwww.epfl.ch/sc250_2004/lecture_notes/sc250_04_7.pdf http://lrcwww.epfl.ch/sc250_2004/lecture_notes/sc250_04_7.pdf network 3

driver driver network network internet SERVER Create Cliente/Servidor com s bind a port to the listen for incoming s accept an incoming CLIENT Create connect to server's port Cliente: Inicia o contato com o servidor (tem que saber o endereço ou hostname, e a porta) Normalmente requisita execução de um serviço Servidor: Espera passivamente (em uma certa porta) Normalmente roda constantemente à espera de clientes read from the write to the loop loop write to the read from the close Servidor Cliente sock_init() Create the sock_init () Create bind() Register port with the system connect() Set up listen() Establish client write/read write/read data accept() Accept client close() Shutdown read/write read/write data close() shutdown 4

SERVER Create bind a port to the listen for incoming s int (int domain, int type, int protocol) sockfd = (PF_INET, SOCK_STREAM, 0); int bind(int sockfd, struct sockaddr *server_addr, socklen_t length) bind(sockfd, &server, sizeof(server)); int listen( int sockfd, int num_queued_requests) listen( sockfd, 5); CLIENT Create connect to Server int (int domain, int type, int protocol) sockfd = (PF_INET, SOCK_STREAM, 0); int connect(int sockfd, struct sockaddr *server_address, socklen_t length) connect(sockfd, &server, sizeof(server)); accept an incoming read from the int accept(int sockfd, struct sockaddr *incoming_address, socklen_t length) newfd = accept(sockfd, &client, sizeof(client)); /* BLOCKS */ int read(int sockfd, void * buffer, size_t buffer_size) read(newfd, buffer, sizeof(buffer)); write to the read from the int write(int sockfd, void * buffer, size_t buffer_size) write(sockfd, buffer, sizeof(buffer)); int read(int sockfd, void * buffer, size_t buffer_size) read(sockfd, buffer, sizeof(buffer)); write to the int write(int sockfd, void * buffer, size_t buffer_size) write(newfd, buffer, sizeof(buffer)); : Java (Cliente ) : Java (Cliente ) 2 : Java (Servidor ) : Java (Servidor ) http://lrcwww.epfl.ch/sc250_2004/lecture_notes/sc250_04_7.pdf http://lrcwww.epfl.ch/sc250_2004/lecture_notes/sc250_04_7.pdf 5

Servidor single-threaded x multi-threaded Non-concurrent server Vários clientes podem fazer pedidos ao mesmo tempo para o servidor. O servidor então pode: sock_init() bind() Create the Register port with the system a) atender um cliente por vez; outros clientes tem que esperar (servidor não concorrente, ou single-threaded) b) atender vários clientes simultaneamente (servidor concorrente ou multi-threaded) De qualquer forma, muitos dispositivos requerem acesso dedicado ou pelo menos serializado (ou seja, não permitem acesso paralelo). A solução em muitos casos é a criação de spools, filas de trabalhos a serem efetuados while(1) Start the loop. This loop will { service each request sequentially listen() Establish client accept() Accept client read/write read/write data } End loop close() Shutdown Concurrent server Sock_init() Create the Problemas?? bind() listen() accept() fork() read/write exit() Register port with the system Establish client Accept client Create a child process which will now communicate with client read/write data in child process exit child process Ordem dos bytes nos tipos de dados dependem da arquitetura da máquina host order: 12 34 56 78 (Motorola) big endian 78 56 34 12 (Intel) little endian network order: 12 34 56 78 Funções de conversão: u_long htonl(u_long hostlong); u_short htons(u_short hostshort); u_long ntohl(u_long netlong); u_short ntohs(u_short netshort); Baixo nível de abstração... Principalmente quando o que você queria fazer era pedir para outra máquina executar um serviço... ou simplesmente usar um procedimento remoto Endereços s/dns/portas Detectar time-outs Threading Como codificar os dados de uma aplicação? Por exemplo, como enviar uma lista, um array, um struct, um objeto Tem que se criar um protocolo sempre... 6

Protocolo Definição clássica Mensagens e regras que determinam ações a serem tomadas de acordo com a Cooperation recepção das mensagens Entity A Entity B Mais precisamente... Entidades (de protocolo) cooperando através de um meio de comunicação Communication means Protocolo Definir/especificar: Formatos de mensagens Tanto tipos de dados abstratos quanto a forma de se codificá-los na rede Comportamento Em que momento cada mensagem pode ser enviada e o que deve ser feito para cada lidar com cada mensagem Protocolo / serviço Implementação do protocolo User Q Q-req SAP Q A-ind User A A-req SAP A Q-ind API PE A User A SAP A PDU exchange User C SAP C LSI C PE C QA-Service provider Lower Level Service provider / Service provider s Implementação do protocolo Exemplos: protocolos para impressão API PE A User A SAP A PDU exchange User C SAP C LSI C PE C Line printer protocol http://www.ietf.org/rfc/rfc1179.txt P http://tools.ietf.org/html/rfc2910 SMB/CIFS http://www.samba.org/cifs/docs/what-is-smb.html BIOS Lower Level Service provider /BIOS Service provider s Cabeamento ou rádio 7

Exemplos: protocolos para compartilhamento de disco NFS SMB/CIFS http://www.samba.org/cifs/docs/what-is-smb.html 8