sockets interprocess communication Taisy Weber



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

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

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

Um Tutorial sobre Sockets Parte I

Aula de Socket. Rafael De Tommaso do Valle

Comunicação entre Processos

Sistemas de Operação Sockets

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

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

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

Modelo Cliente/Servidor e Introdução a Sockets

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

Programação com sockets (em Java)

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

Introdução à Programação Sockets

06/10/2015. Modelo TCP/IP Camada de Transporte DISCIPLINA: TECNOLOGIA DE REDES DE COMPUTADORES. UDP User Datagram Protocol. UDP User Datagram Protocol

Comunicação entre processos. Sistema centralizado

INF01018 Aula Prática 1 Cliente-Servidor e Multicast

Relatório do Laboratório 3

Sockets. André Restivo. April 29, Faculdade de Engenharia da Universidade do Porto. André Restivo (FEUP) Sockets April 29, / 27

Sistemas Distribuídos

Sockets - Conceitos Básicos. COMUNICAÇÃO ENTRE PROCESSOS Sockets. Conceitos Básicos. Tipos de Sockets

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

UNIVERSIDADE. Sistemas Distribuídos

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

Comunicação entre Processos. 1. Pipes 2. Fifos 3. 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

Sistemas Operacionais II

Sistemas Operacionais - Básico e Avançado - Prof. Celso Maciel da Costa Mestrado em Informática - PUCRS

Cliente-servidor com Sockets TCP

Comunicação entre Processos

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

Introdução à Programação com Sockets. Fernando Jorge Silveira Filho Daniel Sadoc Menasché

Comunicação entre Processos Canal de comunicação Arquitetura da comunicação Modelos de comunicação

Tipos de Servidores. Servidores com estado

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

Programação em Sockets visando verificar a diferença entre transmissão confiável (TCP) e não confiável (UDP)

Sistemas Distribuídos

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()

Cliente UDP. Programação sockets. Agenda. Cliente UDP. Resumo de Chamadas UDP. Chamadas UDP. Resumo de Chamadas UDP.

Redes de Computadores (PPGI/UFRJ)

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

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

Cliente-servidor com Sockets TCP

Cliente UDP. Programação sockets. Agenda. Cliente UDP. Resumo de Chamadas UDP. Resumo das chamadas UDP. Resumo de Chamadas UDP.

REDES DE COMPUTADORES

Sockets. Bruno Guimarães Lucas Rossini

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

3. Projeto e implementação de Servidores

E.E.E.P. Dr. Solon Tavares Sistemas Operacionais Prof. Henrique Cordeiro. Programação Concorrente em Linux

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

MC823 Laboratório de Teleprocessamento e Redes

LEIC/LERC 2012/13 2º Teste de Sistemas Operativos 15/Janeiro/2013

A Camada de Transporte

REDES DE COMPUTADORES

Prof. Marcelo Cunha Parte 5

Comunicação em Sistemas Distribuídos

Um processo sob UNIX ocupa uma área de memória formada basicamente por 3 partes:

Comunicação entre pai e filho

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

REDES DE COMPUTADORES

Passagem de Mensagens

Sistemas Distribuídos Java Sockets

Comunicação em Sistemas Distribuídos

Aula 30 - Sockets em Java

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

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

TRANSMISSÃO DE DADOS Prof. Ricardo Rodrigues Barcelar

Java 2 Standard Edition Fundamentos de


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

Agentes Inteligentes segundo o Chimera

CAMADA DE TRANSPORTE

Um pouco sobre Pacotes e sobre os protocolos de Transporte

Redes de Computadores

LSOF - LiSt Open Files

Programação de Sistemas

Camadas de Transporte, Sessão & Apresentação. Função. Camadas REDES x TRANSPORTE. Redes de Computadores Prof. Leandro C. Pykosz

INF1013 MODELAGEM DE SOFTWARE

Aula 3. Objetivos. A internet.

Redes de Computadores II INF-3A

DNS - Domain Name System

Servidor UDP Volnys Borges Bernal Departamento de Sistemas Eletrônicos Escola Politécnica da USP

Traceroute É uma ferramenta de diagnóstico que rastreia a rota de um pacote através de uma rede de computadores e que utiliza os protocolos IP e ICMP.

Redes de Computadores. Prof. André Y. Kusumoto

Máscaras de sub-rede. Fórmula

Sistemas Operacionais:

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

Sistemas Distribuídos. Coulouris Capítulo 4

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

Camada de Aplicação. DNS Domain Name System. Redes de Computadores Prof. Leandro C. Pykosz

Comunicação entre Processos

Sistemas Distribuídos 59. Sistemas Distribuídos 61. "Receive não-bloqueante:

MODELO CLIENTE SERVIDOR

Servidor TCP. Programação Sockets. (c) Volnys Bernal. Servidor TCP Resumo das Chamadas TCP. Resumo das Chamadas TCP. Resumo das Chamadas TCP

Permite o acesso remoto a um computador;

Programação TCP/IP (sockets)

Arquitetura de Rede de Computadores

Aula prática. Objetivo IPCONFIG. Prof. Leandro Pykosz Informa a configuração atual de rede da máquina;

Transcrição:

sockets interprocess communication Taisy Weber

Comunicação entre processos Mecanismos Pipes, FIFO (named pipes), semáforos, message queues. Memória compartilhada. Sockets Definição, chamadas de sistemas, utilização de sockets. Mitchell, cap 5 Johnson, cap 16 Matthew & Stones, cap 14 Taisy Weber 2

IPC em UNIX suportada pelo sistema V (AT&T) suportada por Solaris memória compartilhada pipe não suportado por UNIX BSD mais característico IPC em UNIX socket signal IPC genérico que suporta comunicação entre processos pela rede mas pode ser usado entre processos na mesma máquina informa a um processo que um evento ocorreu Taisy Weber 3

Exemplos de IPC pipes sockets mais característico mecanismo IPC em UNIX a mais antiga forma de IPC usados na shell mecanismo genérico de IPC que suporta comunicação entre processos pela rede (mas pode ser usado também para comunicação de processos na mesma máquina) Taisy Weber 4

UNIX sockets socket é um ponto de comunicação comunicação por sockets pode ser usada por processos não relacionados pipes apenas entre pais e filhos um socket em uso tem um endereço associado a natureza do endereço depende do domínio da comunicação exemplos: serviços (aplicações cliente servidor) rlogin, httpd e ftp usam sockets no domínio Internet Taisy Weber 5

Atributos de sockets sockets são caracterizados por domínio tipo protocolo um socket também tem um nome endereço associado ao socket a natureza do endereço depende do domínio Taisy Weber 6

Domínio especifica a rede de comunicação que será usada alguns exemplos Internet domain UNIX domain Xerox NS domain protocolo IP e endereços Internet (IP address) endereços IP - compostos de 4 números menores que 256 AF_INET IP port - designa o serviço desejado - 16 bits são será tratado aqui AF_NS AF_UNIX file system path names em UNIX tudo é arquivo rlogin - porta 513 ftp - porta 21 httpd - porta 80 Taisy Weber 7

Domínios Internet e UNIX Internet endereço especifica a máquina (IP address) e o serviço na máquina (IP port) serviços padrões possuem endereços padrões UNIX usado por processos em uma única máquina protocolo: entrada e saída de arquivos endereço: nomes de arquivos (absoluto) Taisy Weber 8

Tipos de sockets tipo representa uma classe de serviços se o tipo é implementado em dado domínio, podem exitir um ou mais protocolos que o implementam stream sockets sequenced packet sockets datagram sockets reliable delivered message sockets raw sockets Taisy Weber 9

stream sockets TIPO: SOCK_STREAM fluxo duplex de dados confiável e seqüencial nenhum dado é perdido nenhum dado é duplicado comunicação confiável sem limites para tamanho de mensagens no domínio Internet suportado pelo protocolo TCP/IP no domínio Unix, arquivos nos exemplos vamos nos deter nesse tipo de socket apenas Taisy Weber 10

sequenced packet sockets fluxo duplex de dados confiável e seqüencial nenhum dado é perdido nenhum dado é duplicado comunicação confiável com limites para tamanho de mensagem única diferença para stream sockets usado no domínio Xerox NS Taisy Weber 11

datagram sockets bidirecional dados podem ser perdidos dados podem ser duplicados tamanho variável de mensagens mas o tamanho da mensagem original é preservado na recepção não orientada a conexão TIPO: SOCK_DGRAM não confiável e sem garantia de ordenação comunicação não confiável cada mensagem carrega seu endereço no domínio Internet suportado pelo protocolo UDP/IP Taisy Weber 12

reliable delivered message sockets parecido com datagram sockets não orientado a conexão tamanho variável de mensagem mas com garantia de entrega por isso é dito confiável (reliable) de acordo com livro texto ainda não suportado por nenhum sistema Johnson, cap 16 Taisy Weber 13

raw sockets soquete bruto permite acesso direto a protocolos de comunicação de baixo nível útil para o sockets TCP IP UDP protocolos Ethernet desenvolvimento de novos protocolos de comunicação em redes considerado por alguns como furo de segurança Taisy Weber 14

Cliente & servidor exemplo: stream socket 4 cliente socket servidor socket 1 bind 2 5 connect read ou write conexão estabelecida: dados podem então ser transferidos entre cliente e servidor por read e write listen accept 6 3 depois de aceitar conexão, servidor geralmente fork para atender o cliente e esperar novas conexões Taisy Weber 15

Syscalls para stream sockets servidor socket bind listen accept usada pelo cliente e pelo servidor cria um socket, argumentos: domínio, tipo e protocolo servidor dá nome a um socket para que outro processo possa usá-lo o nome, ou endereço, é bem conhecido dos possíveis clientes servidor indica ao kernel que está apto a receber conexões de clientes servidor aceita conexão Taisy Weber 16

Mais syscalls para stream sockets connect usado por processo cliente inicia uma conexão liga dois sockets: um local e um externo ao processo antes da conexão processo cliente deve criar o seu socket local usando a system call socket( ) Taisy Weber 17

Usando stream sockets para estabelecer conexão socket, bind, listen, accept e fork após estabelecer conexão system calls read e write comuns para transferir dados para terminar a conexão close - destroi o socket modelo cliente servidor shutdown - termina apenas uma direção em uma conexão duplex Taisy Weber 18

Syscalls para datagramas para datagramas que operam sem conexão sendto recvfrom argumentos: descritor do socket pointer e tamanho de um buffer de mensagem pointer e tamanho de um endereço endereço para envio ou o endereço do qual foi recebida mensagem Taisy Weber 19

System call socketcall Linux possui apenas uma system call para sockets toda a programação com sockets é feita através de socketcall o parâmetro call indica qual a função socket, bind, listen, accept shutdown connect sendto recvfrom funções (exemplos) Taisy Weber 20

Exemplo 1: cliente & servidor cliente socket servidor socket bind connect listen accept fontes: client1 e server1 Matthew & Stones, cap 14 stream socket no domínio Unix: AF_UNIX Taisy Weber 21

Exemplo 1: cliente... #include <sys/types.h> #include <sys/socket.h> #include <stdio.h> #include <sys/un.h> #include <unistd.h> int main() { int sockfd; int len; struct sockaddr_un address; int result; char ch = 'A'; cliente socket connect /* Create a socket for the client. */ sockfd = socket(af_unix, SOCK_STREAM, 0); socket cria um socket sem dar nome Taisy Weber 22

Exemplo 1: cliente socket /* Name the socket, as agreed with the server. */ address.sun_family = AF_UNIX; strcpy(address.sun_path, "server_socket"); len = sizeof(address); /* Now connect our socket to the server's socket. */ result = connect(sockfd, (struct sockaddr *)&address, len); if(result == -1) { perror("oops: client1"); exit(1); } /* We can now read/write via sockfd. */ write(sockfd, &ch, 1); read(sockfd, &ch, 1); printf("char from server = %c\n", ch); close(sockfd); exit(0); } connect conecta com um socket no servidor chamado server_socket se tentar executar esse programa sem o server, o programa falha connect significa: endereço (arquivo) é server_socket Taisy Weber 23

Exemplo 1: servidor... #include <sys/types.h> #include <sys/socket.h> #include <stdio.h> #include <sys/un.h> #include <unistd.h> int main() { int server_sockfd, client_sockfd; int server_len, client_len; struct sockaddr_un server_address; struct sockaddr_un client_address; socket bind listen accept /* Remove any old socket and create an unnamed socket for the server. */ unlink("server_socket"); server_sockfd = socket(af_unix, SOCK_STREAM, 0); domínio Unix Taisy Weber 24

Exemplo 1: servidor... /* Name the socket. */ server_address.sun_family = AF_UNIX; strcpy(server_address.sun_path, "server_socket"); server_len = sizeof(server_address); bind(server_sockfd, (struct sockaddr *)&server_address, server_len); /* Create a connection queue and wait for clients. */ listen(server_sockfd, 5); while(1) { char ch; printf("server waiting\n"); /* Accept a connection. */ client_len = sizeof(client_address); client_sockfd = accept(server_sockfd, (struct sockaddr *)&client_address, &client_len); socket bind listen accept Taisy Weber 25

Exemplo 1: servidor /* We can now read/write to client on client_sockfd. */ } } read(client_sockfd, &ch, 1); ch++; write(client_sockfd, &ch, 1); close(client_sockfd); o programa pode servir apenas um cliente de cada vez 1 executar o programa servidor em background para que possa rodar independentemente 2 verificar a existência do socket com o comando ls 3 rodar o cliente em foreground Taisy Weber 26

socket #include <sys/types.h> #include <sys/socket.h> int socket(int domain, int type, int protocol); domain: AF_INET AF_UNIX AF_NS type: SOCK_DGRAM SOCK_STREAM protocol: usado quando existe escolha (0 seleciona protocolo default) a função retorna um descritor do socket (muito semelhante a um descritor de arquivo) do ponto de vista do programador, todos os sockets atuam como descritores de arquivos e são endereçados por um valor inteiro Taisy Weber 27

endereços domínios INET e UNIX cada domínio requer seu próprio formato de endereço struct sockaddr_in { short int }; unsigned short int sin_port; definida em sys/un.h struct sockaddr_un { sa_family_t sun_family ; /* AF_UNIX */ char sun_path[ ]; /* pathname */ pathname limitado em Linux a 108 caracteres definida em netinet/in.h sin_family; /* AF_INET /* port number struct in_addr sin_addr; /* Internet address of the host machine struct in_addr{ unsigned long int }; estrutura de endereço IP s_addr; Taisy Weber 28

bind lado do servidor o socket recebe um nome para se tornar disponível para uso por outros processos #include <sys/socket.h> int bind(int socket, const struct sockaddr *address, size_t address_len) address_len tamanho da estrutura address tamanho e formato do endereço depende da família AF_INET IP port number AF_UNIX nome de arquivo (path) Taisy Weber 29

listen lado do servidor #include <sys/socket.h> int listen (int socket, int backlog); cria uma fila para armazenar requisições de conexão pendentes backlog tamanho da lista, usualmente 5 conexões até esse limite ficam esperando na fila acima do limite serão recusadas Taisy Weber 30

accept lado do servidor int accept(int socket, struct sockaddr *address, size_t *address_len); retorna quando um cliente tenta se conectar ao socket socket accept cria um novo socket para se comunicar com o cliente e retorna seu descritor o socket tem o mesmo tipo do socket de listen endereço do cliente: sockaddr bloqueio» se não for interessante usar pointer nulo usar flag nonblock se desejar comportamento diferente accept bloqueia se não há nenhuma conexão pendente na fila (listen) Taisy Weber 31

connect lado do cliente int connect(int socket, const struct sockaddr *address, size_t address_len) estabelece uma conexão entre o socket criado no cliente (sem nome, apenas com descritor) com um socket de servidor (nomeado com bind) socket do servidor endereçado por address socket do cliente deve ter sido criado e ter recebido um descritor válido se a conexão não puder ocorrer imediatamente, connect bloqueia tb. pode ser alterada pode sair por timeout pode ser interrompida por um signal a ser tratado Taisy Weber 32

close igual ao velho close usado em sistemas de arquivos funções de baixo nível Taisy Weber 33

Exemplo com network socket o livro continua o capítulo com exemplo de socket de rede discussão sobre múltiplos clientes ou seja múltiplas conexões simultâneas uso de fork listen continua válido o socket criado é herdado pelo filho Taisy Weber 34

Fim de sockets... Taisy Weber 35