![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](https://reader031.vdocuments.pub/reader031/viewer/2022021722/5c2c42a109d3f2af358d5dfd/html5/thumbnails/1.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021722/5c2c42a109d3f2af358d5dfd/html5/thumbnails/2.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021722/5c2c42a109d3f2af358d5dfd/html5/thumbnails/3.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021722/5c2c42a109d3f2af358d5dfd/html5/thumbnails/4.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021722/5c2c42a109d3f2af358d5dfd/html5/thumbnails/5.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021722/5c2c42a109d3f2af358d5dfd/html5/thumbnails/6.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021722/5c2c42a109d3f2af358d5dfd/html5/thumbnails/7.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021722/5c2c42a109d3f2af358d5dfd/html5/thumbnails/8.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021722/5c2c42a109d3f2af358d5dfd/html5/thumbnails/9.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021722/5c2c42a109d3f2af358d5dfd/html5/thumbnails/10.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021722/5c2c42a109d3f2af358d5dfd/html5/thumbnails/11.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021722/5c2c42a109d3f2af358d5dfd/html5/thumbnails/12.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021722/5c2c42a109d3f2af358d5dfd/html5/thumbnails/13.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021722/5c2c42a109d3f2af358d5dfd/html5/thumbnails/14.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021722/5c2c42a109d3f2af358d5dfd/html5/thumbnails/15.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021722/5c2c42a109d3f2af358d5dfd/html5/thumbnails/16.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021722/5c2c42a109d3f2af358d5dfd/html5/thumbnails/17.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021722/5c2c42a109d3f2af358d5dfd/html5/thumbnails/18.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021722/5c2c42a109d3f2af358d5dfd/html5/thumbnails/19.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021722/5c2c42a109d3f2af358d5dfd/html5/thumbnails/20.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021722/5c2c42a109d3f2af358d5dfd/html5/thumbnails/21.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021722/5c2c42a109d3f2af358d5dfd/html5/thumbnails/22.jpg)
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).