Escolar Documentos
Profissional Documentos
Cultura Documentos
Broadcast e Mul3cast
Comunicação
• Camada
de
Transporte
– Unicast
• Toda
comunicação
unicast
pode
ser
replicada
n
vezes
– Desperdício
da
vazão
– Comprome3mento
da
arquitetura
cliente-‐servidor
– Ineficiência
1
7/31/12
Exemplo
• Considere
o
serviço
de
uma
rádio
IP
onde
cada
conexão
unicast
u3liza
8
kbps
da
banda
passante
• Considere
agora
que
essa
rádio
é
popular,
com
1.000.000
de
usuários
simultâneos
• 1.000.000
x
8
=
(aproximadamente)
8Gbps
• O
mesmo
conteúdo
poderia
ser
distribuído
a
todos
os
clientes
Rede
• Possibilidade
de
duplicação
do
conteúdo
apenas
quando
necessário
– No
exemplo
anterior
o
servidor
precisaria
de
uma
banda
de
apenas
8kbps
• Serviços
1
para
vários
– Broadcast
– Mul3cast
• Datagram
Sockect
(UDP)
2
7/31/12
Broadcast
• Todos
recebem
o
conteúdo
transmi3do
– Implementado
através
de
um
endereço
de
broadcast
– IP
local
broadcast
address
=
255.255.255.255
– Todos
os
computadores
na
mesma
subrede
devem
receber
as
transmissões
• Mensagens
de
broadcast
não
são
encaminhadas
nos
roteadores
da
Internet
Broadcast
• Normalmente
não
existem
construções
específicas
para
broadcast
– Implementado
na
camada
de
rede
– Rodando
com
UDP
• Porém
o
mesmo
não
é
verdade
para
Mul3cast
em
função
do
controle
de
grupos
– O
que
é
mesmo
Mul3cast?
3
7/31/12
Mul3cast
• Um
mesmo
grupo
recebe
o
conteúdo
transmi3do
– Transmissão
UDP
• Controle
dos
par3cipantes
do
grupo
– Mul3castSocket
• Pode
ser
u3lizado
o
DatagramSocket
com
endereços
de
Mul3cast
– Endereços
Classe
D
Mul3cast
• Endereços
de
Rede
– Range
224.0.0.0
a
239.255.255.255
– Endereços
que
começam
com
“1110”
– Os
demais
28
bits
iden3ficam
o
grupo
de
envio
• Alguns
grupos
conhecidos
– 224.0.0.1
–
todos
os
hosts
da
subrede
– 224.0.0.2
–
todos
os
roteadores
4
7/31/12
Mul3castSocket
• UDP
Socket
(DatagramSocket)
com
algumas
facilidades:
– Gerência
de
Grupos
– Recebimento
das
mensagens
enviadas
(LoopBack)
– Controle
do
TimeToLive
• TTL
=
0
Comunicação
restrita
ao
mesmo
host
• TTL
=
1
Comunicação
restrita
a
mesma
subrede
• TTL
<
32
Comunicação
restrita
a
mesma
organização
• TTL
<
128
Comunicação
restrita
ao
mesmo
con3nente
• TTL
<
255
Global
Mul3castSocket
• Criação
do
Socket
– Mul3castSocket
ms
=
new
Mul3castSocket(port);
• Entrada
e
Saída
em
um
grupo
– ms.joingGroup(group);
– ms.leaveGroup(group);
• Recebimento
de
mensagens
– DatagramPacket
recv
=
new
DatagramPacket(buf,
buf.length)
– ms.receive(recv);
5
7/31/12
Mul3castSocket
• Envio
de
Mensagens
– DatagramPacket
sendPacket=
new
DatagramPacket(buf,
buf.length(),
group,
port);
– ms.receive(sendPacket);
• Time-‐to-‐live
– ms.setTimeToLive(2);
• Loopback
– ms.setLoopbackMode(true);
Mul3castChat
• Selecione
o
Projeto
– File
– New
– Class
– Mul3castChat
6
7/31/12
Mul3castChat
import java.io.*;!
import java.net.*;!
Mul3castChat
public void run() {!
byte[] buf = new byte[1000];!
String tmp;!
try {!
for(;;) {!
recv = new DatagramPacket(buf, buf.length);!
msocket.receive(recv);!
tmp = new String(recv.getData(),0,
recv.getLength());!
System.out.println("\nRecebido: "+ tmp);!
}!
} catch (IOException e) {!
System.out.println("Exit...");!
msocket.close(); }!
} !
}!
7
7/31/12
Mul3castChat
public class MulticastChat {!
public static void main(String[] args) throws IOException{!
String str;!
int port;!
port = Integer.parseInt("6500"); !
InetAddress group = InetAddress.getByName("224.0.0.0");!
try {!
MulticastSocket s = new MulticastSocket(port);!
s.joinGroup(group);!
new ChatThread(s,group,port);!
Mul3castChat
System.out.println(”Digite a mensagem seguida por ENTER
ou CTRL+D para encerrar o programa");!
for(;;) {!
str = myinput.readLine();!
if (str == null) break; // Ctrl+D!
DatagramPacket dp = new DatagramPacket(str.getBytes
(), str.length(), group, port);!
s.send(dp);!
}!
System.out.println(”Saindo do Grupo...");!
s.leaveGroup(group);!
s.close();!
} catch (Exception err){!
System.exit(1); }!
} }!
8
7/31/12
9