Escolar Documentos
Profissional Documentos
Cultura Documentos
03 Aula3 Sockets PDF
03 Aula3 Sockets PDF
Turma:
Ciência da Computação
1
Socket: Definição
z Um Socket é um ponto final (endpoint) de um
canal bidirecional de comunicação entre dois
programas rodando em uma rede;
z Cada Socket tem os seguintes endereços de
endpoint:
z Endereço local (número da porta) que refere-se ao
endereço da porta de comunicação para camada
de transporte;
z Endereço global (nome host) que refere-se ao
endereço do computador (host) na rede.
2
Socket: Uma analogia
3
Sockets e Portas
message
client server
other ports
4
Socket: Conexão
z O servidor apenas fica “ouvindo” o Socket
aguardando um pedido de conexão do cliente;
z O cliente sabe o nome do host e qual porta
está associada à aplicação servidora;
z 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.
5
Socket: Conexão
Request
Ouve
Client Server
Comunica
6
Socket: Protocolos TCP e UDP
z Protocolos de Transporte TCP e UDP;
z Ambos utilizam a camada IP como camada de
Rede.
Aplicação
TCP ou UDP
IP
7
Socket: Protocolos UDP
z User Datagram Protocol (UDP):
z Protocolo não orientado à conexão;
z Não há garantia de entrega dos dados (não há
mensagens de confirmação);
z Perdas durante as transmissões não são tratadas por
este protocolo;
z Usado em redes com alta confiabilidade, onde as
taxas de perda são baixas;
z Exemplos:
z TFTP, BOOTP, ...
8
Socket: Protocolos UDP
z Header UDP:
9
Socket: Protocolos TCP
z Transmission Control Protocol (TCP):
z Protocolo orientado à conexão;
z Para haver a transmissão dos dados, uma
fase de conexão entre as duas entidades que
se comunicam precisa ser feita;
z Fase de Conexão → Fase de Transmissão
dos Dados → Fase de Desconexão;
z Exemplos:
z TELNET, Web Browser, ...
10
Socket: Protocolos TCP
z Header TCP:
11
Socket: Comunicação C/S
z Servidor:
z Efetua a criação de um Socket;
z Associa o Socket a um endereço local;
z Aguarda por conexões da parte cliente;
z Aceita conexões;
z Lê requisições;
z Opcionalmente envia resposta;
z Fecha o Socket.
12
Socket: Comunicação C/S
z Cliente:
z Efetua a criação do Socket;
z Estabelece a conexão;
z Envia a requisição;
z Opcionalmente aguarda resposta;
z Fecha o Socket.
13
Socket: Comunicação C/S
Servidor
socket
Cliente
socket bind
listen
connect
accept
write/send
read/receive
read/receive
write/send
close
14
close
APIs Sockets: Socket
z Socket:
z Cria um Socket e retorna um descritor;
z O descritor é a referência para que as outras funções
utilizem o Socket criado.
z result = socket(pf, type, protocol)
z pf: Família de protocolos a ser usada com Socket .
z PF_INET, PF_APPLETALK
z type: Tipo de conexão a ser utilizada.
z SOCK_STREAM, SOCK_DGRAM
z protocol: Tipo de protocolo a ser utilizado.
Requer grande conhecimento dos serviços oferecidos pelo
protocolo.
15
APIs Sockets: Bind
z Bind:
z Prove o número da porta que servidor espera contato;
z Função utilizada apenas pelo servidor, uma vez que associa
um determinado endereço IP e porta TCP ou UDP para o
processo servidor.
z bind(socket, localaddr, addrlen)
z socket: Socket associado para ser registrado;
z localaddr: Endereço local para vincular o Socket;
z addrlen: Valor inteiro que determina o tamanho do endereço
em bytes.
16
APIs Sockets: Listen
z Listen:
z Indica ao sistema operacional para colocar o
Socket em modo de espera (passivo) para
aguardar conexões de clientes.
z listen(socket, queue)
z socket: Socket que ficará em modo passivo
aguardando por conexões;
z queue: Tamanho máximo da fila de conexões que
serão aceitas pelo Socket.
17
APIs Sockets: Accept
z Accept:
z Cria um novo Socket a partir do estabelecimento
de uma conexão para iniciar a comunicação
(leitura e escrita).
z newsock = accept(socket, addr, addrlen)
18
APIs Sockets: Read e Write
z Read:
z Lê o conteúdo do buffer associado ao Socket.
z read(socket, buffer, lenght)
z Write:
z Escreve dados em um buffer associado ao Socket.
z write(socket, buffer, lenght)
19
APIs Sockets: Close
z Close:
z Informa ao sistema operacional para terminar o
uso de um Socket.
z close(socket)
20
APIs Sockets: Outras
Primitivas
z gethostbyname(host)
z Extrai o endereço IP a partir do nome de um Host.
z getprotobyname(protocol)
z Extrai o código correspondente ao protocolo a
partir de uma string que o define.
z htons(addr)
z Converte um endereço para o padrão de rede
(Big endian).
21