Você está na página 1de 19

Princpios de aplicaes de rede

Curso de Tecnologia em Redes de Computadores


Programao para Redes
Introduo
Aplicaes de rede so a razo de ser de uma rede de
computadores
A grande popularizao da Internet deu-se por
aplicaes de muito sucesso como a Web e o e-mail
Aplicaes de rede so programas que executam em
sistemas finais distintos e que se comunicam entre si
atravs da rede
Aplicaes de rede estimulam o projeto de novos
protocolos de rede, principalmente na camada de
aplicao
Aplicaes de rede rodam na camada de aplicao
Exemplos: a Web, e-mail, Telnet, FTP

2
Arquiteturas de aplicaes de rede
Arquitetura da aplicao difere da arquitetura
da rede
A arquitetura da aplicao projetada pelo
desenvolvedor e determina como a aplicao
organizada nos vrios sistemas finais
Arquiteturas mais utilizadas: cliente-servidor,
P2P (peer-to-peer) e hbrida (cliente-
servidor/P2P)

3
Arquitetura cliente-servidor
Formada por dois tipos de hospedeiros: cliente e servidor
O servidor est sempre em funcionamento e atende
requisies oriundas de muitos clientes
Os clientes no se comunicam diretamente
A escalabilidade limitada pelo servidor (gargalo)
Fcil de gerenciar
Exemplo: a web cliente

cliente
servidor

4
cliente
Arquitetura P2P
Os pares arbitrrios (peers) de
hospedeiros comunicam-se
diretamente entre si
No h a figura do servidor
central
Cada hospedeiro (host)
participa como cliente e
servidor ao mesmo tempo
Exemplo: Gnutella
Grande escalabilidade. Cada par
aumenta a demanda mas
tambm aumenta a capacidade
do servio
Difcil de gerenciar
5
Arquitetura hbrida
Hosts utilizam um servidor para descobrir
outros hosts, mas em seguida o
processamento ponto-a-ponto
Exemplo: Napster, BitTorrent

6
Comunicao entre processos
Processos (programas) localizados no mesmo host
comunicam-se utilizando comunicao interprocessos
determinada pelo SO
Processos em hosts distintos (potencialmente com
plataformas diferentes) comunicam-se pela troca de
mensagens por meio da rede de computadores
Seja em aplicaes cliente-servidor, ou em aplicaes
P2P, no contexto de uma comunicao o processo que
inicia a comunicao denominado cliente. O processo
que espera ser contatado chamado denominado
servidor

7
Sockets
Um processo envia ou recebe mensagens pela
rede atravs de seu socket
Socket a interface entre a camada de aplicao
e a de transporte dentro de uma mquina
De forma direta ou indireta, uma aplicao utiliza-se
de sockets para realizar comunicao interprocessos
O desenvolvedor constri aplicaes usando os
servios oferecidos pelo protocolo de transporte
escolhido (TCP ou UDP)

8
Sockets

processo processo

socket socket

TCP ou UDP TCP ou UDP

9
Endereamento de processos
Para enviar uma mensagem, um processo
originador deve identificar o host remoto e o
processo destinatrio. Para isso so necessrios,
respectivamente, o nome (ou endereo) do host
e a porta do processo destinatrio
A porta utilizada para diferenciar os processos
capazes de atender requisies remotas
A porta um recurso lgico, e no fsico
Assim cada processo, ou aplicao, deve estar
associado a um nmero de porta
10
Necessidades de servio de uma
aplicao de rede
De maneira geral, as necessidades de servio podem ser
classificadas em trs dimenses:
Transferncia confivel de dados
Largura de banda
Temporizao
Aplicao Tolera perda Largura de banda Sensvel ao
de dados atraso
Transferncia de No Elstica No
arquivos
E-mail No Elstica No
Documentos web No Elstica No
Vdeo em tempo real Sim 10 kbps 5 Mbps Sim: dcimos de s
Vdeo armazenado Sim 10 kbps 5 Mbps Sim: alguns s
Jogos interativos Sim Alguns kbps 10 Mbps Sim: dcimos de s
11
Mensagem instantnea No Elstica Sim e no
TCP
Servio orientado conexo. Faz com que cliente e
servidor troquem informaes de controle antes do
incio da troca de mensagens
Conexo full-duplex
A aplicao deve fechar a conexo ao trmino da sesso
Servio confivel de transporte. garantida a entrega
de todos os dados e na ordem correta.
Possui controle de congestionamento, o qual pode
limitar a capacidade de transmisso do processo
No d garantias quanto velocidade de entrega ou
atrasos
12
UDP
No orientado a conexo. No existe a fase de
apresentao.
Servio no confivel de transferncia de dados:
no oferece garantias de que a mensagem
chegar ao receptor, nem de que as mensagens
cheguem na ordem correta.
No inclui controle de congestionamento, logo, o
processo pode bombear dados taxa que quiser.
No oferece garantia quanto a atrasos.
13
Aplicaes e seus protocolos
Aplicao Protocolo de camada de Protocolo de transporte
aplicao
Correio eletrnico SMTP TCP
Terminal remoto Telnet TCP
Web HTTP TCP
Transferncia de arquivos FTP TCP
Servidor remoto de NFS UDP ou TCP
arquivos
Multimdia em tempo real Geralmente proprietrio UDP ou TCP
(e. g., Real Networks)
Telefonia por Internet Geralmente proprietrio Geralmente UDP
(e. g., Net2phone)

14
Exemplo de servidor TCP
Servidor que aceita requisies na porta 2000
e retorna uma string com o nome enviado
pelo cliente.
No Windows, execute com a instruo start
para abrir uma nova janela de terminal
start ruby servidor.rb

15
Exemplo de servidor TCP
require 'socket'

# Abre socket servidor TCP na porta 2000


serverSocket = TCPServer.new(2000)
puts 'Servidor iniciado'
loop { # Servidor executa indefinidamente
# Aguarda e aceita requisio cliente
clientSocket = serverSocket.accept
puts 'Aceitando conexao'
#l mensagem do cliente
nome = clientSocket.gets.chomp
# Envia uma resposta para o cliente
clientSocket.puts('Ola ' + nome + '!')
# Fecha a conexo com cliente
clientSocket.close
}

16
Exemplo de cliente
require 'socket'

hostname = 'localhost'
port = 2000
s = TCPSocket.open(hostname, port)
# Envia mensagem ao servidor
s.puts('Paulo')
while line = s.gets # L linhas oriundas do servidor
puts line.chop
end
# Fecha a conexo
s.close

17
Exerccios
1) Implemente um servidor que recebe uma
string do cliente e a retorna com todos os
caracteres em maisculo (servidor echo).
2) Modifique o servidor de exemplo para que o
mesmo seja encerrado quando o cliente
enviar a string shutdown. Antes do
encerramento, o servidor deve retorna a
string Bye bye para o cliente.

18
Referncias
James F. Kurose e Keith W. Ross. Redes de computadores e a
Internet uma abordagem top-down, 3 edico. Pearson
Addison Wesley, 2006.
Tutorialspoint. Ruby socket programming. Disponvel em
<http://www.tutorialspoint.com/ruby/ruby_socket_program
ming.htm>

19

Você também pode gostar