Sumrio
1. Introduo
a. Contexto: comunicao inter-processos
b. Conceito de socket
2. Sockets UDP
a. Protocolo UDP
b. Programao com sockets UDP
3. Sockets TCP
a. Protocolo TCP
b. Programao com sockets TCP
4. Sockets MULTICAST
a. Programao com sockets
RMI
Remote method invokation
Invocao remota de mtodos
Datagrama
Stream (fluxo)
objeto
local
Invocao
remota
A
C
local E
remote
local
Sumrio
1b
Conceito de Socket
SOCKETS
APLICAO DISTRIBUDA
sockets
MIDDLEWARE
PROTOCOLOS
SIST. OPER.
PROTOCOLOS
SIST. OPER.
HARDWARE
HARDWARE
RMI
RPC
CORBA
PLATAFORMA
PILHA DE PROTOCOLOS
APLICAO
User Datagram Protocol (UDP)
Transport Control Protocol (TCP)
TRANSPORTE
REDE
Ethernet, 802.11WiFi
802.11g (wireless)
ENLACE
FSICO
SOCKETS: CONCEITO
Utilizado para comunicao interprocessos distribudos
Aplicaes cliente-servidor
Host: 138.36.95.240
Processo
CLIENTE
Host: 137.37.58.250
Porta
conhecida
Porta
qualquer
Processo
SERVIDOR
Socket = IP + porta
SOCKETS: CONCEITO
Host: 137.37.58.250
Processo
SERVIDOR
1
6789
Processo
SERVIDOR
2
Processo
SERVIDOR
3
7007
6790
7009
SOCKETS
Execute no shell dos: netstat -na
Active Connections
Proto
TCP
TCP
TCP
TCP
TCP
TCP
TCP
TCP
TCP
TCP
TCP
UDP
UDP
UDP
Local Address
Foreign Address
0.0.0.0:135
0.0.0.0:0
0.0.0.0:445
0.0.0.0:0
0.0.0.0:2804
0.0.0.0:0
127.0.0.1:1033
0.0.0.0:0
127.0.0.1:1044
127.0.0.1:1045
127.0.0.1:1045
127.0.0.1:1044
127.0.0.1:1047
127.0.0.1:1048
127.0.0.1:1048
127.0.0.1:1047
200.17.96.134:139
0.0.0.0:0
200.17.96.134:139
200.17.96.175:1209
200.17.96.134:2169 200.17.96.235:139
0.0.0.0:445
*:*
0.0.0.0:500
*:*
0.0.0.0:1039
*:*
State
LISTENING
LISTENING
LISTENING
LISTENING
ESTABLISHED
ESTABLISHED
ESTABLISHED
ESTABLISHED
LISTENING
ESTABLISHED
ESTABLISHED
Sumrio
2
SOCKETS UDP
10
Sumrio
2a
Protocolo UDP
11
12
Datagrama UDP
Cabealho IP
Porta origem
Comprimento
ENDEREO IP
Porta destino
Checksum
Datagrama
Mensagem auto-contida
Tamanho mximo: limitado pelo protocolo IP v4
216 bytes (cabealhos + contedo) = 65.536 bytes
13
Host: 138.36.95.240
Host: 137.37.58.250
Processo
SERVIDOR
Processo
D
CLIENTE D D D
roteador
D
datagrama
14
Sumrio
2b
Programao com sockets UDP
15
Receber um datagrama
s.receive(req);
Enviar um datagrama
s.send(resp);
Fechar um socket
s.close();
16
JAVARepositorio\JSockets\UDPScktCoulouris\src
Sistemas Distribudos/UTFPR Prof. Cesar Augusto Tacla
17
18
Servidor
1.
2.
3.
4.
5.
6. Trata a resposta
7. Volta ao item 2
19
[JAVA]
EXERCCIOS
Soluo em JAVARepositorio\JSockets\UDPScktCoulourisInverteStr
20
[Teleinfo]
21
[Teleinfo]
22
[JAVA]
EXERCCIO UDP
O servidor tambm faz uma estatstica de acertos/erros por questo com base em
todos as questes recebidas at um certo momento.Estas informaes devem ser
representadas num objeto compartilhado por todas as threads de atendimento aos
clientes.
Estatstica
Questo 1: acertos=5 erros=3
Questo 2: acertos=4 erros=4
23
24
Sumrio
3
SOCKETS TCP
25
SUMRIO
3a
Protocolo TCP
26
sender
Sistemas Distribudos/UTFPR Prof. Cesar Augusto Tacla
receiver
27
Destino
Origem
SYN_SENT
SYN
LISTEN
SYN_RCVD
3 msgs
handshake ESTABLISHED
SYN + ACK
ACK
ESTABLISHED
FIN_WAIT 1
FIN
CLOSE_WAIT
4 msgs
handshake
para finalizar
ACK
FIN_WAIT 2
FIN + ACK
TIME_WAIT 2
LAST_ACK
ACK
CLOSED
28
29
Stream de entrada
Host: 138.36.95.240
Host: 137.37.58.250
Processo
SERVIDOR
Processo
4 3 2 1
CLIENTE
3
roteador
1
Segmento TCP
30
SUMRIO
3b
Programao com sockets TCP
31
Fecha o socket
s.close()
32
33
34
35
36
37
38
39
[JAVA]
40
[JAVA]
EXERCCIO
O servidor tambm faz uma estatstica de acertos/erros por questo com base em
todos os questionrios recebidos at um certo momento.Estas informaes devem
ser representadas num objeto compartilhado por todas as threads de atendimento
aos clientes.
41
2. Conexo aceita
3. Troca
mensagens com
a thread criada
para atend-lo
4. close
Servidor: thread
1. Troca mensagens
com cliente
2. close
42
TCP
VANTAGENS
Overhead pequeno: no h
handshake de
conexo/finalizao
No h necessidade de
salvar estados de
transmisso nas pontas
(fonte e destino)
Diminui tempo de latncia
DESVANTAGENS
Perda de mensagens
No h ordenao
Limite de tamanho de
mensagens
43
Socket TCP
170.10.25.1:7900
Socket UDP
170.10.25.1:7900
Socket TCP
170.10.25.4:8000
CONECTADO
Socket UDP
170.10.25.4:8000
Socket UDP
170.10.25.5:9000
PROMSCUO
44
Sumrio
4
SOCKETS MULTICAST
45
SUMRIO
4a
Protocolo Multicast
46
SOCKETS: MULTICAST
Um processo envia uma mensagem para um grupo de
processos
Permite enviar um nico pacote IP para um conjunto de
processos denominado grupo de multicast
Grupo de multicast
47
MULTICAST
Variaes
Multicast confivel e no-confivel
Ordenado e no-ordenado
Ordenado: FIFO, CAUSAL e TOTAL
Aplicaes
48
MULTICAST: Funcionamento
Um nico pacote IP para um grupo
O emissor no conhece:
a identidade dos destinatrios
o tamanho do grupo
49
MULTICAST: FUNCIONAMENTO
Recebimento de pacotes
Host: 137.37.58.250
Processo
1
join 230.230.100.100:2009
Processo
2
Processo
3
2055
join 230.230.100.100:2009
UDP
IP
Msg para grupo 230.230.100.100:2009
50
SUMRIO
4b
Programao sockets Multicast
51
52
53
54
SOCKETS: MULTICAST
Prtica 1: chat
1. Baixar os arquivos em destaque no quadro
2. Numa console DOS, fazer:
ir para o diretrio onde se encontra o .jar
Executar: java jar JMulticastConfererenciav2.jar <IP grupo>
<porta> <usr>
Ex: java jar JMulticastConferenciav2.jar 231.232.233.234
6789 DOG
3. O programa permite fazer uma espcie de chat
Basta teclar uma mensagem seguida de enter, para que todos
os membros do grupo a recebam
Para encerrar, no teclar nada durante 1 minuto
Soluo: Cdigo fonte e .jar disponvel em
http://www.dainf.ct.utfpr.edu.br/~tacla/JAVARepositorio/JSockets/JMulticastConferenciav2/
Sistemas Distribudos/UTFPR Prof. Cesar Augusto Tacla
55
[JAVA]
56