Você está na página 1de 22

Sistemas Distribudos

Universidade Federal do ABC


Turma:
Cincia da Computao
Prof. Dr. Francisco Isidro Massetto

Introduo: Sockets
z

z
z
z
z

Para estabelecer a Comunicao Interprocesso nos Sistemas


Distribudos, para permitir que processos se comuniquem na troca
de dados ou acessos a recursos ou servios em processadores
remotos, se faz necessrio o uso de um mecanismo de servios
de transporte;
Um dos mecanismos mais utilizado o Socket;
Sockets a maneira mais popular de utilizar as funcionalidades
de comunicao TCP/IP;
Todos os mecanismos Sockets so gerenciados pela camada de
transporte;
Existem diversas APIs Sockets (Application Program Interface) e
as mais populares so do ambiente Unix, bem como a WinSock
do Windows.
1

Socket: Definio
z

Um Socket um ponto final (endpoint) de um


canal bidirecional de comunicao entre dois
programas rodando em uma rede;
Cada Socket tem os seguintes endereos de
endpoint:
z

Endereo local (nmero da porta) que refere-se ao


endereo da porta de comunicao para camada
de transporte;
Endereo global (nome host) que refere-se ao
endereo do computador (host) na rede.
2

Socket: Uma analogia

Sockets e Portas

socket

any port

agreed port
socket

message
client

server
other ports

Internet address = 138.37.94.248

Internet address = 138.37.88.249

Socket: Conexo
z
z
z

O servidor apenas fica ouvindo o Socket


aguardando um pedido de conexo do cliente;
O cliente sabe o nome do host e qual porta
est associada aplicao servidora;
Assim que o servidor aceitar a conexo, este
cria um novo Socket (e conseqentemente o
associa a uma nova porta) e pode ficar
esperando novas conexes no Socket original
enquanto atende s requisies do cliente
pelo novo Socket.
5

Socket: Conexo

Request

Client

Ouve

Server
Comunica

Socket: Protocolos TCP e UDP


z
z

Protocolos de Transporte TCP e UDP;


Ambos utilizam a camada IP como camada de
Rede.
Aplicao
TCP ou UDP
IP

Socket: Protocolos UDP


z
z
z
z
z
z

User Datagram Protocol (UDP):


Protocolo no orientado conexo;
No h garantia de entrega dos dados (no h
mensagens de confirmao);
Perdas durante as transmisses no so tratadas por
este protocolo;
Usado em redes com alta confiabilidade, onde as
taxas de perda so baixas;
Exemplos:
z

TFTP, BOOTP, ...


8

Socket: Protocolos UDP


z

Header UDP:

Socket: Protocolos TCP


z
z
z

z
z

Transmission Control Protocol (TCP):


Protocolo orientado conexo;
Para haver a transmisso dos dados, uma
fase de conexo entre as duas entidades que
se comunicam precisa ser feita;
Fase de Conexo Fase de Transmisso
dos Dados Fase de Desconexo;
Exemplos:
z

TELNET, Web Browser, ...


10

Socket: Protocolos TCP


z

Header TCP:

11

Socket: Comunicao C/S


z

Servidor:
z
z
z
z
z
z
z

Efetua a criao de um Socket;


Associa o Socket a um endereo local;
Aguarda por conexes da parte cliente;
Aceita conexes;
L requisies;
Opcionalmente envia resposta;
Fecha o Socket.
12

Socket: Comunicao C/S


z

Cliente:
z
z
z
z
z

Efetua a criao do Socket;


Estabelece a conexo;
Envia a requisio;
Opcionalmente aguarda resposta;
Fecha o Socket.

13

Socket: Comunicao C/S


Servidor
Cliente
socket

connect

socket

bind
listen
accept

write/send
read/receive
read/receive
write/send
close
14

close

APIs Sockets: Socket


z

Socket:
z
z

Cria um Socket e retorna um descritor;


O descritor a referncia para que as outras funes
utilizem o Socket criado.

result = socket(pf, type, protocol)


z

pf: Famlia de protocolos a ser usada com Socket .


z PF_INET, PF_APPLETALK
type: Tipo de conexo a ser utilizada.
z SOCK_STREAM, SOCK_DGRAM
protocol: Tipo de protocolo a ser utilizado.
Requer grande conhecimento dos servios oferecidos pelo
protocolo.
15

APIs Sockets: Bind


z

Bind:
z
z

Prove o nmero da porta que servidor espera contato;


Funo utilizada apenas pelo servidor, uma vez que associa
um determinado endereo IP e porta TCP ou UDP para o
processo servidor.

bind(socket, localaddr, addrlen)


z
z
z

socket: Socket associado para ser registrado;


localaddr: Endereo local para vincular o Socket;
addrlen: Valor inteiro que determina o tamanho do endereo
em bytes.
16

APIs Sockets: Listen


z

Listen:
z

Indica ao sistema operacional para colocar o


Socket em modo de espera (passivo) para
aguardar conexes de clientes.

listen(socket, queue)
z

socket: Socket que ficar em modo passivo


aguardando por conexes;
queue: Tamanho mximo da fila de conexes que
sero aceitas pelo Socket.
17

APIs Sockets: Accept


z

Accept:
z

Cria um novo Socket a partir do estabelecimento


de uma conexo para iniciar a comunicao
(leitura e escrita).

newsock = accept(socket, addr, addrlen)

18

APIs Sockets: Read e Write


z

Read:
z

L o contedo do buffer associado ao Socket.

read(socket, buffer, lenght)

Write:
z

Escreve dados em um buffer associado ao Socket.

write(socket, buffer, lenght)

19

APIs Sockets: Close


z

Close:
z

Informa ao sistema operacional para terminar o


uso de um Socket.

close(socket)

20

APIs Sockets: Outras


Primitivas
z

gethostbyname(host)
z

getprotobyname(protocol)
z

Extrai o endereo IP a partir do nome de um Host.


Extrai o cdigo correspondente ao protocolo a
partir de uma string que o define.

htons(addr)
z

Converte um endereo para o padro de rede


(Big endian).
21