• Nenhum resultado encontrado

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
6
0
0

Texto

(1)

Sistemas Distribuídos 86 Fac u ld a d e d e I n fo rm át ica -P UCRS

COMUNICAÇÃO ENTRE PROCESSOS

Sockets

Sistemas Distribuídos 87 Fac u ld a d e d e I n fo rm át ica -P UCRS

Sockets - Conceitos Básicos

!

Sockets são uma forma de IPC (InterProcess Communication )

fornecida pela 4.3 BSD que fornecem comunicação entre processos

residentes em sistema único ou processos residentes em sistemas

remotos.

Sistemas Distribuídos 88 Fac u ld a d e d e I n fo rm át ica -P UCRS

Conceitos Básicos

!

Sockets criados por diferentes programas usam nomes para se

referenciar

!

Esses nomes geralmente devem ser traduzidos em endereços para

uso

!

Um endereço é especificado por um domínio

Sistemas Distribuídos 89 Fac u ld a d e d e I n fo rm át ica -P UCRS

Processo Usuário Processo Usuário

SO

IPC em um mesmo sistema

Fac u ld a d e d e I n fo rm át ica -P UCRS

Processo Usuário Processo usuário

SO SO

Comunicação de Processos Remotos

Fac u ld a d e d e I n fo rm át ica -P UCRS

Tipos de Sockets

"STREAM SOCKET - Provê sequenciamento e fluxo bidirecinal. Este tipo de socket transmite dados sobre um base confiável e com capacidade de transmissão de dados expressos.

"No domínio UNIX, o SOCKET_STREAM trabalha igual a um pipe. No domínio INTERNET este tipo de socket é implementado sobre TCP/IP.

(2)

Sistemas Distribuídos 92 Fac u ld a d e d e I n fo rm át ica -P UCRS

Tipos de Sockets

"SOCK_DGRAM - Suporta fluxo de dados bidirecional mas não oferece um serviço confiável como STREAM_SOCKET.

"Mensagens duplicadas, perdidas, e em ordem diferente (não sequenciadas) são problemas que podem aparecer neste tipo de socket.

Sistemas Distribuídos 93 Fac u ld a d e d e I n fo rm át ica -P UCRS

Tipos de Sockets

"RAW_SOCKET - permite o acesso a interface de protocolos de rede. Disponível

para usuários avançados e que possuam autoridade de usuário root

"permite que uma aplicação acesse diretamente protocolos de comunicação de

baixo nível.

"permite a construção de novos protocolos sobre os protocolos de baixo nível já

existentes

"normalmente orientados a datagrama

Sistemas Distribuídos 94 Fac u ld a d e d e I n fo rm át ica -P UCRS

Domínios e Protocolos

!

O espaço no qual o endereço é especificado é chamado de domínio

!

Domínios básicos:

#INTERNET - AF_INET - os endereços consistem do end. de rede da

máquina e da identificação do no. da porta, o que permite a comunicação entre processos de sistemas diferentes

#Unix: AF_UNIX - os processos se comunicam referenciando um

pathname, dentro do espaço de nomes do sistema de arquivos

Sistemas Distribuídos 95 Fac u ld a d e d e I n fo rm át ica -P UCRS

Domínios e Protocolos

!

Domínio Internet

"Implementação Unix do protocoloTCP/UDP/IP

"Consiste de:

#end. de rede da máquina

#identificação do no. da porta

"Permite a comunicação entre máquinas diferentes

"Conexões sob a forma de sockets do tipo stream e do tipo datagramas

ld a d e d e I n fo rm át ica -P UCRS

Tipos de Sockets

!

Socket Stream

"conexões confiáveis

!

Datagramas

"não fornecem segurança

ld a d e d e I n fo rm át ica -P UCRS

Protocolos TCP/IP

Processo A Processo B TCP/UDP TCP/UDP IP Interface hardware

(3)

Sistemas Distribuídos 98 Fac u ld a d e d e I n fo rm át ica -P UCRS

IP

• Internetwork Protocol

• Roteamento de mensagens na rede

• Unidade: datagramas

• Fragmentação de pacotes (se > MTU)

• Entrega não confiável de pacotes

Sistemas Distribuídos 99 Fac u ld a d e d e I n fo rm át ica -P UCRS

TCP

• Transmission Control Protocol

• Para comunicação longa (conexão)

• Confiável

• Transmissão de fluxo de dados: Não respeita

limites de mensagens

• Baixo desempenho em comunicações curtas (?)

• Usos típicos:

• Login remoto

• Transferência de arquivo

Sistemas Distribuídos 100 Fac u ld a d e d e I n fo rm át ica -P UCRS

UDP

• User Datagram Protocol

• Para comunicação curta (sem conexão)

• Não confiável

• Transmissão de pacotes: respeita limites de

mensagens

• Pouco prático para comunicações longas

(confiabilidade precisa ser programada)

• Usos típicos:

• RPC

• Broadcast

Sistemas Distribuídos 101 Fac u ld a d e d e I n fo rm át ica -P UCRS

Porta

• “Endereço” para um processo comunicante

• Inteiro de 16 bits (definido pelo usuário)

• Portas 1 a 1023 são do sistema

• Portas de TCP independentes das de UDP

Fac u ld a d e d e I n fo rm át ica -P UCRS

Associação

• Definida por

• Um protocolo: TCP ou UDP

• Endereço IP local

• Porta local

• Endereço IP distante

• Porta distante

Fac u ld a d e d e I n fo rm át ica -P UCRS

Comunicação por sockets

Servidor Cliente 1 kernel kernel socket socket conexão rede

(4)

Sistemas Distribuídos 104 Fac u ld a d e d e I n fo rm át ica -P UCRS

Comunicação via TCP

Servidor socket ( )

Cria um socket com

- Família (ou domínio): UNIX, Internet, XNS - Tipo: stream, datagrama, puro - Protocolo (por conseq.): TCP, UDP

sockfd = (int) socket (int family, int type, int protocol)

Sistemas Distribuídos 105 Fac u ld a d e d e I n fo rm át ica -P UCRS

Comunicação via TCP

Servidor socket ( ) bind ( ) Atribui ao socket

- Endereço Internet (pode ser “any”) - Porta de comunicação

ret = (int) bind (int sockfd, struct sockaddr *myaddr, int addrlen)

Sistemas Distribuídos 106 Fac u ld a d e d e I n fo rm át ica -P UCRS

Comunicação via TCP

Servidor socket ( ) bind ( ) listen ( ) Declara

- Que está pronto para receber conexões - Até quantas devem ser enfileiradas

ret = (int) listen (int sockfd, int backlog)

Sistemas Distribuídos 107 Fac u ld a d e d e I n fo rm át ica -P UCRS

Comunicação via TCP

Servidor

newsock = (int) accept (int sockfd, struct sockaddr *peer, int *addrlen)

• Bloqueia até que haja pedido de conexão • Quando houver algum, aceita

socket ( ) bind ( ) listen ( ) accept ( ) ld a d e d e I n fo rm át ica -P UCRS

Comunicação via TCP

Servidor socket ( ) bind ( ) listen ( ) accept ( ) socket ( ) Cliente

• Cria um socket idêntico ao do servidor (mesma família e tipo)

sockfd = (int) socket (int family, int type, int protocol) ldad

e d e I n fo rm át ica -P UCRS

Comunicação via TCP

Servidor socket ( ) bind ( ) listen ( ) accept ( ) socket ( ) connect ( ) Cliente

• Pede uma conexão ao servidor • Fica bloqueado ou retorna erro • Se aceito, fecha a conexão

ret = (int) connect (int sockfd, struct sockaddr *servaddr, int addrlen) estabelecimento

(5)

Sistemas Distribuídos 110 Fac u ld a d e d e I n fo rm át ica -P UCRS

Comunicação via TCP

Servidor socket ( ) bind ( ) listen ( ) accept ( ) socket ( ) connect ( ) send ( ) estabelecimento de conexão Cliente

• Envia uma seqüência de bytes pela conexão

nbytes = (int) send (int sockfd, char *buf, int nbytes, int flags)

Sistemas Distribuídos 111 Fac u ld a d e d e I n fo rm át ica -P UCRS

Comunicação via TCP

Servidor socket ( ) bind ( ) listen ( ) accept ( ) recv ( ) socket ( ) connect ( ) send ( ) estabelecimento de conexão solicitação Cliente

• Recebe msg enviada por send ( )

nbytes = (int) recv (int sockfd, char *buf, int nbytes, int flags)

Sistemas Distribuídos 112 Fac u ld a d e d e I n fo rm át ica -P UCRS

Comunicação via TCP

Servidor socket ( ) bind ( ) listen ( ) accept ( ) recv ( ) send ( ) socket ( ) connect ( ) send ( ) recv ( ) estabelecimento de conexão solicitação resposta processamento Cliente ret = (int) close (int sockfd)

• Transmite ou confirma msgs faltantes • Encerra a conexão • Fecha o socket close ( ) close ( ) Sistemas Distribuídos 113 Fac u ld a d e d e I n fo rm át ica -P UCRS

Comunicação via TCP

Servidor socket ( ) bind ( ) listen ( ) accept ( ) recv ( ) send ( ) socket ( ) connect ( ) send ( ) recv ( ) estabelecimento de conexão solicitação resposta processamento Cliente • Diagrama completo close ( ) close ( ) Fac u ld a d e d e I n fo rm át ica -P UCRS

Comunicação via UDP

Servidor

socket ( ) socket ( )

Cliente

• Cliente e servidor criam seus sockets • Família = Internet, tipo = datagrama

Fac u ld a d e d e I n fo rm át ica -P UCRS

Comunicação via UDP

Servidor socket ( ) bind ( ) socket ( ) bind ( ) Cliente

(6)

Sistemas Distribuídos 116 Fac u ld a d e d e I n fo rm át ica -P UCRS

Comunicação via UDP

Servidor socket ( ) bind ( ) recvfrom ( ) socket ( ) bind ( ) Cliente

• Recebe pacote enviado do endereço informado • Se não houver nada, bloqueia

nbytes = (int) recvfrom (int sockfd, char *buf, int nbytes, int flags,

struct sockaddr *from, int *addrlen)

Sistemas Distribuídos 117 Fac u ld a d e d e I n fo rm át ica -P UCRS

Comunicação via UDP

Servidor socket ( ) bind ( ) recvfrom ( ) socket ( ) bind ( ) sendto ( ) solicitação Cliente

• Envia pacote para o endereço informado

nbytes = (int) recvfrom (int sockfd, char *buf, int nbytes, int flags,

struct sockaddr *from, int *addrlen)

Sistemas Distribuídos 118 Fac u ld a d e d e I n fo rm át ica -P UCRS

Comunicação via UDP

Servidor socket ( ) bind ( ) recvfrom ( ) sendto ( ) socket ( ) bind ( ) sendto ( ) recvfrom ( ) solicitação resposta processamento Cliente • Diagrama completo close ( ) close ( ) Sistemas Distribuídos 119 Fac u ld a d e d e I n fo rm át ica -P UCRS

Comunicação entre processos

!

Exercícios:

"classifique cada uma das primitivas de pipes e sockets com relação

#a modelo implícito e explicito de endereçamento

#a comunicação bloqueante e não bloqueante

#e a bufferização de mensagens

#Obs.: analise o maior número possível de opções oferecidas por estas

interfaces

"usando PIPES, teste, com programas:

#uso bidirecional de um pipe (existe?);

#uso concorrente de um pipe;

ld a d e d e I n fo rm át ica -P UCRS

Comunicação entre processos

!

Exercícios:

"usando sockets em plataforma linux ou solaris, e comunicação no modo datagrama,

#implemente em linguagem C um mecanismo de comunicação com

suporte a falhas, do tipo “two-message”

# analise bem a interface de sockets para utilizar o máximo de sua

funcionalidade

"implemente um servidor concorrente (trata vários clientes simultaneamente) de operações matemáticas utilizando pipes e depois sockets (tipo stream)

#os clientes mandam os operandos e a operação, ficam a espera do

resultado, e voltam a sortear operandos para o próximo pedido

#o servidor calcula e manda o resultado devolta para os vários clientes

#modifique a implementação para trabalhar com sockets no modo

Referências

Documentos relacionados

Nos últimos anos, o uso indiscriminado de recursos naturais se constitui em um dos principais fatores de degradação do meio ambiental, [23] aponta que a medida que

Segundo dados da Secretaria de Direitos Humanos do Governo Federal (BRASIL, SDH-GF, 2012) 6 , o número de idosos que compõem a população brasileira tem aumentado gradualmente,

Neste estudo, a Homals foi utilizada para identificar as possíveis associações entre três variáveis principais utilizadas para a análise do julgamento moral dos estudantes de

­a: mostra  todos  os  sockets,  incluindo  sockets  de  servidores.  A família   de  endereços  inet  mostrará 

Lance algumas bolinhas na direção da criança, ela deve tentar através da percepção de tempo e reação tentar recolher a bolinha com o copo. Alternar o movimento em ambos

Quando os dados são analisados categorizando as respostas por tempo de trabalho no SERPRO, é possível observar que os respondentes com menor tempo de trabalho concordam menos que

Na ilha de Santiago, à semelhança das outras ilhas do Arquipélago de Cabo Verde a maioria das plantas endémicas entrou num estado crítico motivado pela sua exploração,

A atribuição de incentivos financeiros à equipa multiprofissional depende da concretização dos critérios para atribuição das unidades contratualizadas (UC) referentes às