sistemas distribuídos -...

22
Sistemas Distribuídos Universidade Federal do ABC Turma: Ciência da Computação Prof. Dr. Francisco Isidro Massetto

Upload: vanliem

Post on 02-Jan-2019

243 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sistemas Distribuídos - professor.ufabc.edu.brprofessor.ufabc.edu.br/~francisco.massetto/sd/03-Aula3-Sockets.pdf · 1 Introdução: Sockets zPara estabelecer a Comunicação Interprocesso

Sistemas DistribuídosUniversidade Federal do ABC

Turma:Ciência da Computação

Prof. Dr. Francisco Isidro Massetto

Page 2: Sistemas Distribuídos - professor.ufabc.edu.brprofessor.ufabc.edu.br/~francisco.massetto/sd/03-Aula3-Sockets.pdf · 1 Introdução: Sockets zPara estabelecer a Comunicação Interprocesso

1

Introdução: SocketsPara estabelecer a Comunicação Interprocesso nos Sistemas Distribuídos, para permitir que processos se comuniquem na trocade dados ou acessos a recursos ou serviços em processadores remotos, se faz necessário o uso de um mecanismo de serviços de transporte; Um dos mecanismos mais utilizado é o Socket;Sockets é a maneira mais popular de utilizar as funcionalidades de comunicação TCP/IP;Todos os mecanismos Sockets são gerenciados pela camada de transporte;Existem diversas APIs Sockets (Application Program Interface) e as mais populares são do ambiente Unix, bem como a WinSock do Windows.

Page 3: Sistemas Distribuídos - professor.ufabc.edu.brprofessor.ufabc.edu.br/~francisco.massetto/sd/03-Aula3-Sockets.pdf · 1 Introdução: Sockets zPara estabelecer a Comunicação Interprocesso

2

Socket: DefiniçãoUm Socket é um ponto final (endpoint) de um canal bidirecional de comunicação entre dois programas rodando em uma rede;Cada Socket tem os seguintes endereços de endpoint:

Endereço local (número da porta) que refere-se ao endereço da porta de comunicação para camada de transporte;Endereço global (nome host) que refere-se ao endereço do computador (host) na rede.

Page 4: Sistemas Distribuídos - professor.ufabc.edu.brprofessor.ufabc.edu.br/~francisco.massetto/sd/03-Aula3-Sockets.pdf · 1 Introdução: Sockets zPara estabelecer a Comunicação Interprocesso

3

Socket: Uma analogia

Page 5: Sistemas Distribuídos - professor.ufabc.edu.brprofessor.ufabc.edu.br/~francisco.massetto/sd/03-Aula3-Sockets.pdf · 1 Introdução: Sockets zPara estabelecer a Comunicação Interprocesso

4

Sockets e Portas

message

agreed portany port socketsocket

Internet address = 138.37.88.249Internet address = 138.37.94.248

other portsclient server

Page 6: Sistemas Distribuídos - professor.ufabc.edu.brprofessor.ufabc.edu.br/~francisco.massetto/sd/03-Aula3-Sockets.pdf · 1 Introdução: Sockets zPara estabelecer a Comunicação Interprocesso

5

Socket: ConexãoO servidor apenas fica “ouvindo” o Socket aguardando um pedido de conexão do cliente;O cliente sabe o nome do host e qual porta está associada à aplicação servidora;Assim que o servidor aceitar a conexão, este cria um novo Socket (e conseqüentemente o associa a uma nova porta) e pode ficar esperando novas conexões no Socket original enquanto atende às requisições do cliente pelo novo Socket.

Page 7: Sistemas Distribuídos - professor.ufabc.edu.brprofessor.ufabc.edu.br/~francisco.massetto/sd/03-Aula3-Sockets.pdf · 1 Introdução: Sockets zPara estabelecer a Comunicação Interprocesso

6

Socket: Conexão

Client Server

Ouve

Comunica

Request

Page 8: Sistemas Distribuídos - professor.ufabc.edu.brprofessor.ufabc.edu.br/~francisco.massetto/sd/03-Aula3-Sockets.pdf · 1 Introdução: Sockets zPara estabelecer a Comunicação Interprocesso

7

Socket: Protocolos TCP e UDP

Protocolos de Transporte TCP e UDP;Ambos utilizam a camada IP como camada de Rede.

TCP ou UDP

IP

Aplicação

Page 9: Sistemas Distribuídos - professor.ufabc.edu.brprofessor.ufabc.edu.br/~francisco.massetto/sd/03-Aula3-Sockets.pdf · 1 Introdução: Sockets zPara estabelecer a Comunicação Interprocesso

8

Socket: Protocolos UDPUser Datagram Protocol (UDP):Protocolo não orientado à conexão;Não há garantia de entrega dos dados (não há mensagens de confirmação);Perdas durante as transmissões não são tratadas por este protocolo;Usado em redes com alta confiabilidade, onde as taxas de perda são baixas;Exemplos:

TFTP, BOOTP, ...

Page 10: Sistemas Distribuídos - professor.ufabc.edu.brprofessor.ufabc.edu.br/~francisco.massetto/sd/03-Aula3-Sockets.pdf · 1 Introdução: Sockets zPara estabelecer a Comunicação Interprocesso

9

Socket: Protocolos UDP

Header UDP:

Page 11: Sistemas Distribuídos - professor.ufabc.edu.brprofessor.ufabc.edu.br/~francisco.massetto/sd/03-Aula3-Sockets.pdf · 1 Introdução: Sockets zPara estabelecer a Comunicação Interprocesso

10

Socket: Protocolos TCPTransmission Control Protocol (TCP):Protocolo orientado à conexão;Para haver a transmissão dos dados, uma fase de conexão entre as duas entidades que se comunicam precisa ser feita;Fase de Conexão → Fase de Transmissão dos Dados → Fase de Desconexão;Exemplos:

TELNET, Web Browser, ...

Page 12: Sistemas Distribuídos - professor.ufabc.edu.brprofessor.ufabc.edu.br/~francisco.massetto/sd/03-Aula3-Sockets.pdf · 1 Introdução: Sockets zPara estabelecer a Comunicação Interprocesso

11

Socket: Protocolos TCP

Header TCP:

Page 13: Sistemas Distribuídos - professor.ufabc.edu.brprofessor.ufabc.edu.br/~francisco.massetto/sd/03-Aula3-Sockets.pdf · 1 Introdução: Sockets zPara estabelecer a Comunicação Interprocesso

12

Socket: Comunicação C/S

Servidor:Efetua a criação de um Socket;Associa o Socket a um endereço local;Aguarda por conexões da parte cliente;Aceita conexões;Lê requisições;Opcionalmente envia resposta;Fecha o Socket.

Page 14: Sistemas Distribuídos - professor.ufabc.edu.brprofessor.ufabc.edu.br/~francisco.massetto/sd/03-Aula3-Sockets.pdf · 1 Introdução: Sockets zPara estabelecer a Comunicação Interprocesso

13

Socket: Comunicação C/S

Cliente:Efetua a criação do Socket;Estabelece a conexão;Envia a requisição;Opcionalmente aguarda resposta;Fecha o Socket.

Page 15: Sistemas Distribuídos - professor.ufabc.edu.brprofessor.ufabc.edu.br/~francisco.massetto/sd/03-Aula3-Sockets.pdf · 1 Introdução: Sockets zPara estabelecer a Comunicação Interprocesso

14

Socket: Comunicação C/S

listen

socket

connect

write/send

read/receive

socket

bind

accept

read/receive

write/send

Cliente

Servidor

close

close

Page 16: Sistemas Distribuídos - professor.ufabc.edu.brprofessor.ufabc.edu.br/~francisco.massetto/sd/03-Aula3-Sockets.pdf · 1 Introdução: Sockets zPara estabelecer a Comunicação Interprocesso

15

APIs Sockets: SocketSocket:

Cria um Socket e retorna um descritor;O descritor é a referência para que as outras funções utilizem o Socket criado.

result = socket(pf, type, protocol)pf: Família de protocolos a ser usada com Socket .

PF_INET, PF_APPLETALK type: Tipo de conexão a ser utilizada.

SOCK_STREAM, SOCK_DGRAMprotocol: Tipo de protocolo a ser utilizado. Requer grande conhecimento dos serviços oferecidos pelo protocolo.

Page 17: Sistemas Distribuídos - professor.ufabc.edu.brprofessor.ufabc.edu.br/~francisco.massetto/sd/03-Aula3-Sockets.pdf · 1 Introdução: Sockets zPara estabelecer a Comunicação Interprocesso

16

APIs Sockets: BindBind:

Prove o número da porta que servidor espera contato;Função utilizada apenas pelo servidor, uma vez que associa um determinado endereço IP e porta TCP ou UDP para o processo servidor.

bind(socket, localaddr, addrlen)socket: Socket associado para ser registrado;localaddr: Endereço local para vincular o Socket;addrlen: Valor inteiro que determina o tamanho do endereço em bytes.

Page 18: Sistemas Distribuídos - professor.ufabc.edu.brprofessor.ufabc.edu.br/~francisco.massetto/sd/03-Aula3-Sockets.pdf · 1 Introdução: Sockets zPara estabelecer a Comunicação Interprocesso

17

APIs Sockets: Listen

Listen:Indica ao sistema operacional para colocar o Socket em modo de espera (passivo) para aguardar conexões de clientes.

listen(socket, queue)socket: Socket que ficará em modo passivo aguardando por conexões;queue: Tamanho máximo da fila de conexões que serão aceitas pelo Socket.

Page 19: Sistemas Distribuídos - professor.ufabc.edu.brprofessor.ufabc.edu.br/~francisco.massetto/sd/03-Aula3-Sockets.pdf · 1 Introdução: Sockets zPara estabelecer a Comunicação Interprocesso

18

APIs Sockets: Accept

Accept:Cria um novo Socket a partir do estabelecimento de uma conexão para iniciar a comunicação (leitura e escrita).

newsock = accept(socket, addr, addrlen)

Page 20: Sistemas Distribuídos - professor.ufabc.edu.brprofessor.ufabc.edu.br/~francisco.massetto/sd/03-Aula3-Sockets.pdf · 1 Introdução: Sockets zPara estabelecer a Comunicação Interprocesso

19

APIs Sockets: Read e Write

Read:Lê o conteúdo do buffer associado ao Socket.

read(socket, buffer, lenght)

Write:Escreve dados em um buffer associado ao Socket.

write(socket, buffer, lenght)

Page 21: Sistemas Distribuídos - professor.ufabc.edu.brprofessor.ufabc.edu.br/~francisco.massetto/sd/03-Aula3-Sockets.pdf · 1 Introdução: Sockets zPara estabelecer a Comunicação Interprocesso

20

APIs Sockets: Close

Close:Informa ao sistema operacional para terminar o uso de um Socket.

close(socket)

Page 22: Sistemas Distribuídos - professor.ufabc.edu.brprofessor.ufabc.edu.br/~francisco.massetto/sd/03-Aula3-Sockets.pdf · 1 Introdução: Sockets zPara estabelecer a Comunicação Interprocesso

21

APIs Sockets: Outras Primitivas

gethostbyname(host)Extrai o endereço IP a partir do nome de um Host.

getprotobyname(protocol)Extrai o código correspondente ao protocolo a partir de uma string que o define.

htons(addr)Converte um endereço para o padrão de rede (Big endian).