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

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

Aula de Socket. Rafael De Tommaso do Valle

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

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

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

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

Resolução de Nomes Volnys Borges Bernal Deparatamento de Sistemas Eletrônicos Escola Politécnica da USP

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

Volnys Borges Bernal. Agenda. Resolução de Nomes. Introdução à resolução de nomes. Introdução à resolução de nomes

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

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

Sistemas de Operação Sockets

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

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

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

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

Redes de Computadores

Comunicação entre Processos

INF01018 Aula Prática 1 Cliente-Servidor e Multicast

Servidor TCP Volnys Borges Bernal Depto de Engenharia de Sistemas Eletrônicos Escola Politécnica da USP

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

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

Comunicação entre processos. Sistema centralizado

MC823 Atividade 1: Cliente/Servidor TCP Iterativo. 3 Modificando o servidor para retornar data e hora

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

Introdução à Programação Sockets

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

Programação TCP/IP (sockets)

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

Servidor UDP. Programação Sockets Volnys Bernal. Servidor UDP Resumo das Chamadas UDP. Resumo de Chamadas UDP. Resumo de Chamadas UDP

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

Sockets: Sumário. Resumo das Propriedades de UDP e de TCP

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

Modelo Cliente/Servidor e Introdução a Sockets

Sistemas Distribuídos

Programação com Sockets

sockets interprocess communication Taisy Weber

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

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

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

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

Programação com Sockets. Redes de Computadores I 2007/2008

Resolução de Nomes e Endereços

Comunicação entre Processos. 1. Pipes 2. Fifos 3. Sockets

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

Unnamed Pipes. Chamada ao sistema pipe. Pipes. Comunicação entre processos. Unnamed Pipes Chamada so sistema. José Pedro Oliveira

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

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

SEM 544 Desenvolvimento de Produtos Mecatrônicos

Comunicação entre Processos

Redes de Computadores e Aplicações

COMUNICAÇÃO ENTRE APLICAÇÕES. Laboratórios de Informática João Paulo Barraca, André Zúquete, Diogo Gomes

Duplicação e partilha de ficheiros

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

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

Problemas relacionados a exclusão mútua

Processos. Programas e Processos. Aula 1 - Chamadas ao sistema. José Pedro Oliveira fork exit getpid, getppid wait, waitpid

PROTOCOLOS DE COMUNICAÇÃO

Desenvolvimento de Produtos Mecatrônicos

camada de transporte SOCKET TCP UDP

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

Por Fernando Koyanagi

Leandro Soares de Sousa (DSc.) Página: Aula 05 - desenvolvimento com sockets

FUNDAMENTOS DE REDES DE COMPUTADORES Unidade 5 Camada de Transporte e Aplicação. Luiz Leão

Grupo I [6 v] Considere o processo com a seguinte tabela de páginas: Página Presente Protecção Base 0 0 RW RW R R RW -

Redes de Computadores

1 Projeto de software de clientes. 1

RC Peer-to-Peer. 1. Introdução. 2. Especificação. Redes de Computadores 2º Semestre 2008/2009. Projecto de Laboratório

Programação Orientada a Objetos para Redes de Computadores. Modelo Cliente-Servidor. Comunicação entre Processos. O que é um Socket?

Programação Orientada a Objetos para Redes de Computadores

Comunicação entre Processos

Um Tutorial sobre Sockets Parte I

Resumo das Propriedades de UDP e de TCP

Redes de Computadores (PPGI/UFRJ)

MC823 Laboratório de Teleprocessamento e Redes

comunicação entre processos distribuídos

Redes de Computadores

Cliente-servidor com Sockets TCP

Serviços de Comunicações Capítulo 3

Sistemas Operacionais II

AInterface que um aplicativo utiliza quanto interage com um módulo implementado por outro software

Leandro Soares de Sousa (DSc.) Página: Parte III

Redes de Computadores

TP4. Apoio ao projeto 4: tópicos avançados de sockets

Programação com sockets (em Java)

Introdução. Protocolos de Aplicação. Introdução à pilha de comunicações TCP/IP. Interface de sockets. Protocolos de aplicação. Exemplos de trabalhos

Obter conhecimentos básicos sobre programação socket para desenvolver softwares clientes.

Trabalho 02: Cliente e Servidor em C

Redes de Computadores. A arquitectura protocolar TCP/IP

Jéfer Benedett Dörr

UNIVERSIDADE ESTADUAL DE PONTA GROSSA SETOR DE CIÊNCIAS AGRÁRIAS E DE TECNOLOGIA DEPARTAMENTO DE INFORMÁTICA ENGENHARIA DE COMPUTAÇÃO

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

Introdução. Protocolos de Aplicação. Introdução à pilha de comunicações TCP/IP. Interface de sockets. Protocolos de aplicação. Exemplos de trabalhos

Protocolos de Aplicação

Protocolos de Aplicação

Relatório do Laboratório 3

Protocolos de Rede. Protocolos em camadas

Redes TCP-IP. Protocolo ICMP. Pilha TCP/IP. Protocolo ICMP Internet Control Message Protocol. Introdução ao Protocolo ICMP

RCI Secure Chat. 1. Descrição do projeto. Redes de Computadores e Internet 2º Semestre 2015/2016 Projeto de Laboratório

Protocolo ICMP Internet Control Message Protocol. Introdução ao Protocolo ICMP. Introdução ao Protocolo ICMP. Introdução ao Protocolo ICMP

Transcrição:

Conteúdo (jpo@di.uminho.pt) Grupo de Sistemas Distribuídos Departamento de Informática Escola de Engenharia Universidade do Minho 1 Sistemas Operativos I 2006-2007 Modelo Cliente/Servidor (1/2) Modelo Cliente/Servidor (2/2) Arquitectura cliente/servidor A troca de informação é baseada em mensagens. servidor - Fornecedor de serviços. Tipicamente está à espera de ser contactado por clientes interessados nos seus serviços. cliente - Consumidor de serviços. Toma a iniciativa de contactar um servidor para obter um serviço. cliente... cliente... servidor cliente canal de comunicação servidor cliente

Sequência de chamadas Sockets... CLIENTE connect write read close SERVIDOR bind listen accept read write close Caracterização Os seguintes cinco parâmetros permitem caracterizar um : endereço IP da origem porta da origem endereço IP do destino porta do destino protocolo Protocolos - introdução sumária Protocolos UDP - User Datagram Protocol TCP - Transmission Control Protocol UDP - User Datagram Protocol análogo ao sistema postal permite comunição em grupo (1 para n) TCP - Transmission Control Protocol análogo ao sistema telefónico permite apenas ligações ponto-a-ponto Nome TCP UDP RFC echo 7 7 862 O servidor retorna o que o cliente lhe envia. discard 9 9 863 O servidor ignora o que o cliente lhe envia. daytime 13 13 867 O servidor retorna a hora e a data em formato legível. chargen 19 19 864 O servidor TCP envia continuamente uma stream de caracteres até o cliente se desligar. O servidor UDP envia um datagrama contendo um número de caracteres aleatórios cada vez que o cliente envia um datagrama. time 37 37 868 O servidor envia o tempo como um número de 32-bits. Este número representa o número de segundos desde a meia-noite de 1 de Janeiro de 1900 UTC.

Network Information Tipos de informação relacionada com a rede Informação Ficheiro Estrutura hosts /etc/hosts hostent gethostbyaddr, gethostbyname networks /etc/networks netent getnetbyaddr, getnetbyname protocols /etc/protocols protoent getprotobyname, getprotobynumber services /etc/services servent getservbyname, getservbyport Ficheiro: /etc/services... # service-name port/protocol [aliases...] [# comment]... echo 7/tcp echo 7/udp discard 9/tcp sink null discard 9/udp sink null... Conteúdo Função: (1/3) 2 connect bind, listen e accept shutdown close getsockname e getpeername Conversão de valores: host e network byte order #include <sys/types.h> int (int domain, int type, int protocol); Cria um extremo da comunicação e retorna o descriptor a ele associado.

Função: (2/3) Função: (3/3) Tipo Tipo SOCK STREAM SOCK DGRAM SOCK RAW stream datagram raw Tipo Família AF INET AF INET6 AF LOCAL AF ROUTE AF KEY protocolos IPv4 protocolos IPv6 protocolos do domínio Unix s de routing s key Função: connect connect Função: bind bind, listen e accept #include <sys/types.h> int connect(int sockfd, const struct sockaddr *serv addr, socklen t addrlen); Se o for do tipo SOCK DGRAM a estrutura serv addr representa o endereço para o qual os datagramas são enviados por omissão e o endereço do qual aceita datagramas. Se o for do tipo SOCK STREAM, esta função tenta estabelecer uma ligação com o que está associado ao endereço especificado por serv addr. #include <sys/types.h> int bind(int sockfd, struct sockaddr *my addr, socklen t addrlen); Associa um nome ao.

Função: listen bind, listen e accept Função: accept bind, listen e accept int listen(int s, int backlog); Fica à espera de ligações ao. #include <sys/types.h> int accept(int s, struct sockaddr *addr, socklen t *addrlen); Aceita ligações ao. Função: shutdown shutdown Função: close close int shutdown(int s, int how); Permite fazer shutdown parcial de uma ligação full-duplex. #include <unistd.h> int close(int fd); Fecha um (descriptor de ficheiro).

Função: getsockname getsockname e getpeername Função: getpeername getsockname e getpeername int getsockname(int s, struct sockaddr *name, socklen t *namelen); Permite obter o nome do (endereço e porta). int getpeername(int s, struct sockaddr *name, socklen t *namelen); Permite obter o nome do remoto ligado (peer). : htons, htonl, ntohs, ntohl Conversão de valores: host e network byte order Conteúdo Exemplos #include <arpa/inet.h> uint32 t htonl(uint32 t hostlong); uint16 t htons(uint16 t hostshort); uint32 t ntohl(uint32 t netlong); uint16 t ntohs(uint16 t netshort); A transmissão de informação binária deverá ser efectuada em Network Byte Order. Para tal existe um comjunto de funções que permitem efectuar a conversão de Host Byte Order para Network Byte Order (htonx) e vice-versa (ntohx). 3 Exemplos Cliente TCP simples Servidor TCP simples

Exemplos Serviço tipo daytime Cliente TCP (1/2) Exemplos Cliente TCP simples Exercício Implementação de um cliente e de um servidor de um serviço equivalente ao daytime, ou seja, em que a uníca accção que desencadeia a resposta do servidor é o estabelecimento de uma ligação. 1 #include <stdio. h> 2 #include <s t d l i b. h> 3 #include <s t r i n g. h> / memset / 4 #include <unistd. h> 5 #include <sys / types. h> 6 #include <sys /. h> 7 #include <netinet / in. h> / s t r u c t sockaddr in / 8 #include <arpa / inet. h> / i n e t a d d r / 9 10 i n t main ( i n t argc, char ] ) argv [ 11 { 12 i n t cli sock ; 13 struct sockaddr in srv addr ; 14 char ch ; 15 16 i f ( argc!= 3) { 17 p r i n t f ( uso : t c p c l i <endereco ip> <porta>\n ) ; 18 e x i t ( EXIT FAILURE ) ; 19 } Cliente TCP (2/2) Exemplos Cliente TCP simples Servidor TCP (1/3) Exemplos Servidor TCP simples 20 cli sock = ( PF INET, SOCK STREAM, 0 ) ; 21 22 / Endereco e porto do s e r v i d o r / 23 memset(&srv addr, 0, sizeof ( struct sockaddr in ) ) ; 24 srv addr. s i n f a m i l y = AF INET ; 25 srv addr. s i n p o r t = htons ( a t o i ( argv [ 2 ] ) ) ; 26 srv addr. s i n a d d r. s addr = i n e t a d d r ( argv [ 1 ] ) ; 27 28 / Estabelecer l i g a c a o / 29 connect ( cli sock, ( struct sockaddr ) &srv addr, 30 sizeof ( srv addr ) ) ; 31 32 while ( read ( cli sock, &ch, 1) > 0 ) { 33 w r i t e (STDOUT FILENO, &ch, 1 ) ; 34 } 35 36 close ( cli sock ) ; 37 return 0; 38 } 1 #include <stdio. h> 2 #include <s t d l i b. h> 3 #include <s t r i n g. h> / memset / 4 #include <unistd. h> 5 #include <sys / types. h> 6 #include <sys /. h> 7 #include <netinet / in. h> / s t r u c t sockaddr in / 8 9 i n t main ( i n t argc, char argv [ ] ) 10 { 11 i n t srv sock, cli sock ; 12 struct sockaddr in srv addr, c l i a d d r ; 13 socklen t c l i a d d r s i z e ; 14 char msg [ ] = Sistemas Operativos \n ; 15 16 i f ( argc!= 2) { 17 p r i n t f ( uso : tcpsrv <porta>\n ) ; 18 e x i t ( EXIT FAILURE ) ; 19 }

Exemplos Servidor TCP (2/3) Servidor TCP simples Servidor TCP (3/3) Exemplos Servidor TCP simples 20 srv sock = ( PF INET, SOCK STREAM, 0 ) ; 21 22 / Enderecos e porta de escuta / 23 memset(&srv addr, 0, sizeof ( struct sockaddr in ) ) ; 24 srv addr. s i n f a m i l y = AF INET ; 25 srv addr. s i n p o r t = htons ( a t o i ( argv [ 1 ] ) ) ; 26 srv addr. sin addr. s addr = INADDR ANY ; 27 28 bind ( srv sock, ( struct sockaddr ) &srv addr, 29 sizeof ( struct sockaddr in ) ) ; 30 31 l i s t e n ( srv sock, 5 ) ; 32 33 c l i a d d r s i z e = sizeof ( struct sockaddr in ) ; 34 35 while ( ( c l i s o c k = accept ( srv sock, 36 ( struct sockaddr ) &cli addr, & cli addr size ) ) ) { 37 38 w r i t e ( c l i s o c k, msg, s t r l e n (msg ) ) ; 39 40 shutdown ( cli sock, 2 ) ; 41 close ( cli sock ) ; 42 } 43 44 close ( srv sock ) ; 45 46 return 0; 47 } Conteúdo 4 Unix MacOS X Windows Nome TCP UDP RFC echo 7 7 862 O servidor retorna o que o cliente lhe envia. discard 9 9 863 O servidor ignora o que o cliente lhe envia. daytime 13 13 867 O servidor retorna a hora e a data em formato legível. chargen 19 19 864 O servidor TCP envia continuamente uma stream de caracteres até o cliente se desligar. O servidor UDP envia um datagrama contendo um número de caracteres aleatórios cada vez que o cliente envia um datagrama. time 37 37 868 O servidor envia o tempo como um número de 32-bits. Este número representa o número de segundos desde a meia-noite de 1 de Janeiro de 1900 UTC.

xinetd Unix xinetd: activar serviço daytime Unix /etc/xinetd.d/daytime Serviço service xinetd start Configuração Ficheiro: /etc/xinetd.conf Directório: /etc/xinetd.d/ 1 # default : o f f 2 # description : An i n t e r n a l xinetd service which gets the current \ 3 # system time then p r i n t s i t out in a format l i k e t h i s : \ 4 # Wed Nov 13 22:30:27 EST 2002. \ 5 # This i s the tcp version. 6 7 s e r v i c e daytime 8 { 9 type = INTERNAL 10 i d = daytime stream 11 type = stream 12 p r o t o c o l = tcp 13 user = r o o t 14 w ait = no 15 d i s a b l e = no 16 } MacOSX: Simple TCP/IP Services MacOS X Windows: Simple TCP/IP Services Windows An Unofficial Xinetd Tutorial http://www.macsecurity. org/resources/xinetd/tutorial.shtml Serviço daytime service daytime start Serviço chargen service chargen start Instalação 1 Control Panel 2 Add or Remove Programs 3 Windows Components 4 Networking services 5 Simple TCP/IP Services Serviço 1 Administrative Tools 2 Services 3 Simple TCP/IP Services

Referências Conteúdo Referências Referências 5 Referências Bibliografia UNIX Network Programming, Volume 1 (terceira edição) Networking APIs: Sockets and XTI Autores: W. Richard Steven, Bill Fenner, Andy Rudoff http://www.unpbook.com/ TCP/IP Illustrated, Volume 2: The Implementation Autores: Gary R. Wright, W. Richard Steven http://www.kohala.com/start/tcpipiv2.html Internetworking With TCP/IP, Volume III: Client-Server Programming and Applications (BSD Socket Version) Autores: Douglas E. Commer, David L. Stevens http: //www.cs.purdue.edu/homes/dec/netbooks.html