SlideShare uma empresa Scribd logo
Instituto Federal de Educação, Ciência e Tecnologia do RN
                                 Campus de Currais Novos
                                 Curso Técnico Subsequente em Sistemas de Informação


                             Aplliicações de Redes de Computtadorres
                             Ap cações de Redes de Compu ado es
                 Aula 01 – Introdução às Aplicações de Redes de Computadores
                                     Professor: Francisco Júnior
1 – Introdução

    Algumas aplicações de rede populares:

        Correio eletrônico
        A Web
        Mensagem instantânea
        Login em computador remoto como Telnet e SSH
        Compartilhamento de arquivos P2P
        Transferência de arquivos entre duas contas em dois computadores, como FTP (File Transport Protocol –
        Protocolo de Transferência de Arquivos)
        Jogos multiusuários em rede
        Videoclipes armazenados
        Telefonia por Internet
        Videoconferência em tempo real

     O cerne do desenvolvimento de aplicação de rede é escrever programas que rodem em sistemas finais diferentes e
se comuniquem entre si pela rede. Por exemplo, na aplicação Web há dois programas distintos que se comunicam um
com o outro: o programa do browser, que roda na máquina do usuário (computador de mesa, laptop, PDA, telefone
celular e assim por diante); e o programa do servidor Web, que roda na máquina do servidor Web. Um outro exemplo é
um sistema de compartilhamento de arquivos P2P no qual há um programa em cada máquina que participa da
comunidade de compartilhamento de arquivos. Nesse caso, os programas de cada máquina podem ser semelhantes ou
idênticos.
     Portanto, ao desenvolver sua nova aplicação, você precisará escrever um software que rode em várias máquinas. É
importante dizer que você não precisará escrever um software que rode em equipamentos de núcleo de rede, como
roteadores ou comutadores Ethernet. E, mesmo que você quisesse escrever software de aplicação para esses
equipamentos, não poderia. Equipamentos de núcleo de rede não funcionam na camada de aplicação, mas em camadas
mais baixas, especificamente na de rede e abaixo dela. Esse projeto básico - a saber, confinar o software de aplicação
nos sistemas finais, facilitou o desenvolvimento e a proliferação rápidos de uma vasta gama de aplicações de Internet.

2 – Arquiteturas de aplicação de rede

     Ao construir uma nova aplicação de rede, você primeiramente precisará escolher a arquitetura da aplicação.
Realmente, antes de mergulhar na codificação do software, você deverá elaborar um plano geral para a arquitetura da
sua aplicação. Tenha sempre em mente que a arquitetura de uma aplicação é distintamente diferente da arquitetura de
rede (por exemplo, a arquitetura em cinco camadas da Internet). Do ponto de vista do profissional que desenvolve a
aplicação, a arquitetura de rede fixa e provê um conjunto específico de serviços às aplicações. Por outro lado, a
arquitetura da aplicação é projetada pelo desenvolvedor e determina como a aplicação é organizada nos vários
sistemas finais. Ao escolher a arquitetura da aplicação, o desenvolvedor provavelmente aproveitará uma das três
arquiteturas mais utilizadas em aplicações modernas de rede: a arquitetura cliente-servidor, a arquitetura P2P e uma
arquitetura híbrida cliente-servidor/P2P.
     Em uma arquitetura cliente-servidor há um hospedeiro sempre em funcionamento, denominado servidor, que
atende a requisições de muitos outros hospedeiros, denominados clientes. Estes podem estar em funcionamento às vezes
ou sempre. Um exemplo clássico é a aplicação Web na qual um servidor Web que está sempre em funcionamento
atende a requisições de browsers de hospedeiros clientes. Quando recebe uma requisição de um objeto de um
hospedeiro cliente, um servidor Web responde enviando o objeto requisitado a ele. Observe que, na arquitetura cliente-
servidor, os clientes não se comunicam diretamente uns com os outros; por exemplo, na aplicação Web, dois browsers
não se comunicam diretamente. Outra característica da arquitetura cliente-servidor é que o servidor tem um endereço
fixo, bem conhecido, denominado endereço IP. Devido a essa característica do servidor e devido ao fato de ele estar
sempre em funcionamento, um cliente sempre pode contatá-lo, enviando um pacote ao endereço do servidor. Algumas
das aplicações mais conhecidas que empregam a arquitetura cliente-servidor são a Web, a transferência de arquivos, o
login remoto e o e-mail.
     Em aplicações cliente-servidor, muitas vezes acontece de um único hospedeiro servidor ser incapaz de atender a
todas as requisições de seus clientes. Por exemplo, um site Web de notícias popular pode ficar rapidamente saturado se
tiver apenas um servidor para atender a todas as requisições. Por essa razão, muitas vezes são utilizados conjuntos de
hospedeiros - às vezes denominados server farm - para criar um servidor virtual poderoso em arquiteturas cliente-
servidor.
     Em uma arquitetura P2P pura, não há um servidor sempre funcionando no centro da aplicação. Em vez disso,
pares arbitrários de hospedeiros, denominados peers, comunicam-se diretamente entre si. Como os pares se comunicam
sem passar por nenhum servidor especial, a arquitetura é denominada par-a-par (peer-to-peer - P2P). Nesse tipo de
arquitetura, nenhuma das máquinas participantes precisa estar sempre em funcionamento; além disso, um hospedeiro
participante pode mudar seu endereço IP cada vez que for ligado. Um bom exemplo de aplicação que tem arquitetura
P2P pura é a Gnutella, uma aplicação P2P de compartilhamento de arquivos de código-fonte aberto. Na Gnutella,
qualquer hospedeiro pode requisitar e enviar arquivos, consultar a localização de um arquivo e responder e transmitir
consultas.
     Uma das características mais fortes da arquitetura P2P é sua escalabilidade. Por exemplo, em uma aplicação P2P de
compartilhamento de arquivos, milhões de pares podem participar da comunidade de compartilhamento de arquivos,
sendo que cada um deles funciona como um servidor e contribui com recursos para a comunidade. Desse modo,
conquanto cada par gere carga de trabalho requisitando arquivos, também agrega capacidade de serviço ao sistema
respondendo requisições de outros pares. Assim, em princípio, compartilhamento de arquivos P2P é intrinsecamente
escalável - cada par adicional não apenas aumenta a demanda, mas também aumenta a capacidade de serviço. Na
Internet de hoje, o tráfego de compartilhamento de arquivos P2P é responsável por uma grande parcela de todo o
tráfego.
     Por outro lado, devido à sua natureza altamente distribuída e descentralizada, pode ser difícil gerenciar aplicações
P2P. Por exemplo, um par pode ter a única cópia de um arquivo importante e sair da comunidade a qualquer momento.
     As duas arquiteturas, cliente-servidor e P2P são comuns em aplicações de rede. Contudo, muitas aplicações são
organizadas segundo arquiteturas híbridas cliente-servidor/P2P. Um exemplo disso é a já extinta Napster, a primeira
das populares aplicações de compartilhamento de arquivos MP3. A arquitetura da Napster era P2P no sentido de que
arquivos MP3 eram trocados diretamente entre pares, sem passar por servidores dedicados, sempre em funcionamento;
mas também era cliente-servidor, já que um par consultava um servidor central para determinar quais pares que estavam
em funcionamento tinham um arquivo MP3 desejado. Outra aplicação que utiliza uma arquitetura híbrida é a mensagem
instantânea. Nela, a conversa entre dois usuários é tipicamente P2P, isto é, o texto enviado entre dois usuários não passa
por um servidor intermediário, sempre em funcionamento. Entretanto, quando Alice, uma usuária, lança sua aplicação
de mensagem instantânea, ela se registra em um servidor central; e quando Bob, um outro usuário, quer conversar com
alguém inscrito na sua lista de amigos, seu cliente de mensagem instantânea contata o servidor central para descobrir
quais desses seus amigos estão correntemente on-line e disponíveis.

3 – Comunicação entre processos

     Antes de construir sua aplicação de rede, você também precisará ter um entendimento básico de como programas
que rodam em vários sistemas finais comunicam-se entre si. No jargão de sistemas operacionais, na verdade não são
programas que se comunicam, mas processos. Um processo pode ser imaginado como um programa que está rodando
dentro de um sistema final. Quando os processos comunicantes estão rodando no mesmo sistema final, eles comunicam-
se entre si usando comunicação interprocessos, cujas regras são determinadas pelo sistema operacional do sistema final.
Porém, não estamos interessados em como se comunicam processos que estão no mesmo hospedeiro, mas em como se
comunicam processos que rodam em sistemas finais diferentes (com sistemas operacionais potencialmente diferentes).
     Eles se comunicam pela troca de mensagens por meio da rede de computadores. Um processo originador cria e
envia mensagens para a rede; um processo destinatário recebe-as e possivelmente responde, devolvendo outras.

3.1 – Processos clientes e processos servidores

     Uma aplicação de rede consiste em pares de processos que enviam mensagens uns para os outros por meio de uma
rede. Por exemplo, na aplicação Web, o processo cliente de um browser troca mensagens com um processo de um
servidor Web. Em um sistema de compartilhamento de arquivos P2P, um arquivo é transferido de um processo que está
em um par para outro que está em outro par. Para cada par de processos comunicantes normalmente rotulamos um dos
dois processos de cliente e o outro, de servidor. Na Web, um browser é um processo cliente e um servidor Web é um
processo servidor. No compartilhamento de arquivos P2P, o par que está descarregando o arquivo é rotulado de cliente
e o que está recebendo, de servidor.
     Talvez você já tenha observado que, em algumas aplicações, tal como compartilhamento de arquivos P2P, um
processo pode ser ambos, cliente e servidor. Realmente, um processo em um sistema de compartilhamento de arquivos
P2P pode carregar e descarregar arquivos. Mesmo assim, no contexto de qualquer dada sessão entre um par de
processos, ainda podemos rotular um processo de cliente e o outro de servidor. Definimos os processos cliente e
servidor como segue:
No contexto de uma sessão de comunicação entre um par de processos, o processo que iniçia a comunicação (isto
  é, o primeiro a contatar o outro no início da sessão) é rotulado de cliente. O processo que espera ser contatado
  para iniciar a sessão é o servidor.


         Na Web, um processo do browser inicia o contato com um processo do servidor Web; por conseguinte, o
processo do browser é o cliente e o processo do servidor Web é o servidor. No compartilhamento de arquivos P2P,
quando o Par A solicita ao Par B o envio de um arquivo específico, o Par A é o cliente enquanto o par B é o servidor no
contexto dessa sessão específica de comunicação. Quando não houver possibilidade de confusão, às vezes usaremos
também a terminologia "lado cliente e lado servidor de uma aplicação".
     Há um ponto em nossa terminologia que talvez precise ser mais bem esclarecido. Na Seção 2, classificamos
aplicações segundo suas arquiteturas, a saber, cliente-servidor, P2P ou híbrida. Essa classificação é útil, pois
proporciona uma estrutura geral para determinar a arquitetura de aplicações de rede. Todavia é preciso ter em mente que
grande parte das aplicações de rede – incluindo as que utilizam a arquitetura P2P – consiste em vários pares de
processos comunicantes; na qualidade de partes de uma sessão de comunicação entre um par de processos, um é
rotulado de cliente e o outro, de servidor.

3.2 – Sockets

     Como dissemos anteriormente, a maioria das aplicações consiste em pares de processos comunicantes, sendo que
os dois processos de cada par enviam mensagens um para o outro. Qualquer mensagem enviada de um processo para
um outro tem de passar pela rede subjacente. Um processo envia mensagens para a rede e recebe mensagens dela
através de seu socket. Vamos considerar uma analogia que nos auxiliará a entender processos e sockets. Um processo é
análogo a uma casa e seu socket, à porta da casa. Quando um processo quer enviar uma mensagem a um outro processo
em outro hospedeiro, ele empurra a mensagem porta (socket) afora para dentro da rede. Esse processo emissor admite
que exista uma infra-estrutura de transporte do outro lado de sua porta que transportará a mensagem pela rede até a
porta do processo destinatário. Ao chegar ao hospedeiro destinatário, a mensagem passa através da porta (socket) do
processo receptor, que então executa alguma ação sobre a mensagem.
     A Figura 1 ilustra a comunicação por socket entre dois processos que se comunicam pela Internet: (A Figura 1
admite que o protocolo de transporte subjacente é o TCP embora o protocolo UDP também possa ser usado na Internet.)
Como mostra essa figura, um socket é a interface entre a camada de aplicação e a de transporte dentro de uma máquina.
É também denominado interface de programação da aplicação (application programming interface - API) entre a
aplicação e a rede, visto que o socket é a interface de programação pela qual as aplicações de rede são inseridas na
Internet. O desenvolvedor da aplicação controla tudo o que existe no lado da camada de aplicação do socket, mas tem
pouco controle do lado da camada de transporte do socket. Os únicos controles que o desenvolvedor da aplicação tem
do lado da camada de transporte são: (1) a escolha do protocolo de transporte e (2), talvez, a capacidade de determinar
alguns parâmetros da camada de transporte, tais como tamanho máximo de buffer e de segmentos. Uma vez escolhido
um protocolo de transporte, (se houver escolha) o desenvolvedor constrói a aplicação usando os serviços da camada de
transporte oferecidos por esse protocolo.




                   Figura 1 – Processos de aplicação, sockets e protocolo de transporte subjacente.

3.3 – Endereçamento de processos

    Para que um processo em um hospedeiro envie uma mensagem a um processo em outro, o processo originador tem
de identificar o processo destinatário. Para isso, é preciso especificar duas informações: (1) o nome ou o endereço da
máquina hospedeira e (2) um identificador que especifique o processo destinatário no hospedeiro de destino.
Primeiro, vamos considerar endereços de hospedeiros. Em aplicações da Internet, o hospedeiro de destino é
identificado por seu endereço IP. O endereço IP é uma quantidade de 32 bits que identifica exclusivamente o sistema
final (sendo mais precisos, identifica exclusivamente a interface de rede que liga aquele hospedeiro à Internet). Visto
que o endereço IP de qualquer sistema final conectado à Internet pública deve ser globalmente exclusivo, a atribuição
desses endereços deve ser gerenciada com cuidado.
     Além de saber o endereço do sistema final ao qual a mensagem se destina, o hospedeiro originador também deve
identificar o processo que está rodando no outro hospedeiro. Essa informação é necessária porque, em geral, um
hospedeiro poderia estar executando muitas aplicações de rede. Um número de porta de destino atende a essa
finalidade. Aplicações populares receberam números de porta específicos. Por exemplo, um servidor Web é identificado
pelo número de porta 80. Um processo servidor de correio (que usa o protocolo SMTP) é identificado pelo número de
porta 25. Uma lista de números bem conhecidos de portas para todos os protocolos padronizados da Internet pode ser
encontrada no site http://www.iana.org. Quando um desenvolvedor cria uma nova aplicação de rede, ela deve receber
um novo número de porta.

4 – Protocolos de camada de aplicação

     Um protocolo de camada de aplicação define como processos de uma aplicação, que funcionam em sistemas
finais diferentes, passam mensagens entre si. Em particular, um protocolo de camada de aplicação define:

    os tipos de mensagens trocadas, por exemplo, de requisição e de resposta;
    a sintaxe dos vários tipos de mensagens, tais como os campos da mensagem e como os campos são delineados;
    a semântica dos campos, isto é, o significado da informação nos campos;
    regras para determinar quando e como um processo envia mensagens e responde a mensagens.

     Alguns protocolos de camada de aplicação são de domínio público. Por exemplo, o protocolo de camada de
aplicação da Web, HTTP (HyperText Transfer Protocol: RFC 2616), está à disposição como um RFC. Se um
desenvolvedor de browser seguir as regras do RFC do HTTP, seu browser estará habilitado a extrair páginas de
qualquer servidor Web que também tenha seguido as regras do RFC do HTTP. Muitos outros protocolos de camada de
aplicação são proprietários e, intencionalmente, não estão disponíveis ao público. Por exemplo, muitos dos sistemas de
compartilhamento de arquivos P2P existentes usam protocolos de camada de aplicação proprietários.
     É importante distinguir aplicações de rede de protocolos de camada de aplicação. Um protocolo de camada de
aplicação é apenas um pedaço (embora grande) de aplicação de rede. Examinemos alguns exemplos. A Web é uma
aplicação cliente-servidor que permite aos usuários obter documentos de servidores Web por demanda. A aplicação
Web consiste em muitos componentes, entre eles um padrão para formato de documentos (isto é, HTML), browsers
Web (por exemplo, Netscape Navigator e Microsoft Internet Explorer), servidores Web (por exemplo, servidores
Apache, Microsoft e Netscape) e um protocolo de camada de aplicação. O protocolo de camada de aplicação da Web,
HTTP define o formato e a seqüência das mensagens que são passadas entre o browser e o servidor Web. Assim, ele é
apenas um pedaço da aplicação Web.

5 – De que serviços uma aplicação necessita?

     Lembre-se de que um socket é a interface entre o processo da aplicação e o protocolo de camada de transporte. A
aplicação do lado remetente envia mensagens através da porta. Do outro lado da porta, o protocolo de camada de
transporte tem a responsabilidade de levar as mensagens pela rede até a porta do processo destinatário. Muitas redes,
inclusive a Internet, oferecem mais de um protocolo de camada de transporte. Ao desenvolver uma aplicação, você deve
escolher um dos protocolos de camada de transporte disponíveis. Como fazer essa escolha? O mais provável é que você
avalie os serviços providos pelos protocolos de camada de transporte disponíveis e escolha o protocolo que melhor
atenda às necessidades de sua aplicação. A situação é semelhante a escolher trem ou avião como meio de transporte
entre duas cidades. Você tem de escolher um ou outro, e cada modalidade de transporte oferece serviços diferentes. Por
exemplo, o trem oferece a facilidade da partida e da chegada no centro da cidade, ao passo que o avião oferece menor
tempo de viagem.
     Quais são os serviços que uma aplicação necessitaria de um protocolo de transporte? Podemos classificar, de
maneira geral, as necessidades de serviço de uma aplicação segundo três dimensões: perda de dados, largura de banda e
temporização.

5.1 – Transferência confiável de dados

     Algumas aplicações, como correio eletrônico, mensagem instantânea, transferência de arquivos, acesso a
hospedeiros remotos, transferência de documentos Web e aplicações financeiras, exigem transferência de dados
totalmente confiável, isto é, não pode haver perda de dados. Outras aplicações tolerantes a perda, mais notavelmente
aplicações de multimídia, como áudio/vídeo em tempo real ou áudio/vídeo armazenados, podem tolerar uma certa perda
de dados. Nessas últimas aplicações, dados perdidos podem resultar em uma pequena falha durante a execução do
áudio/vídeo - o que não é um prejuízo crucial.

5.2 – Largura de banda
Algumas aplicações têm de transmitir dados a uma certa velocidade para serem efetivas. São aplicações sensíveis à
largura de banda. Embora aplicações sensíveis à largura de banda exijam uma dada quantidade de largura de banda,
aplicações elásticas podem fazer uso de qualquer quantidade mínima ou máxima que por acaso esteja disponível.
Correio eletrônico, transferência de arquivos e transferências Web são todas aplicações elásticas. Evidentemente,
quanto mais largura de banda, melhor.

5.3 – Temporização

     O requisito final de serviço é a temporização. Aplicações interativas em tempo real, tais como telefonia por
Internet, ambientes virtuais, teleconferência e jogos multiusuários, exigem limitações estritas de temporização na
entrega de dados para ser efetivas. Longos atrasos na telefonia por Internet, por exemplo, tendem a resultar em pausas
artificiais na conversação. Para aplicações que não são em tempo real, é sempre preferível um atraso menor a um maior,
mas não há nenhuma limitação estrita aos atrasos fim-a-fim.
     A Figura 2 resume os requisitos de confiabilidade, largura de banda e temporização para algumas aplicações
populares e emergentes da Internet.




                               Figura 2 – Requisitos de aplicações de rede selecionadas.

6 – Serviços providos pelos protocolos de transporte da Internet

     A Internet (e, de maneira mais geral, as redes TCP/IP) disponibiliza dois protocolos de transporte para a aplicação:
UDP e TCP. Quando um desenvolvedor cria uma nova aplicação para a Internet, uma das primeiras decisões que deve
tomar é se usará UDP ou TCP. Cada um desses protocolos oferece um modelo de serviço diferente para as aplicações
solicitantes.

6.1 – Serviços do TCP

    O modelo de serviço TCP inclui um serviço orientado para conexão e um serviço confiável de transferência de
dados. Quando uma aplicação solicita o TCP como seu protocolo de transporte, recebe dele ambos os serviços.

    Serviço orientado para conexão: o TCP faz com que o cliente e o servidor troquem informações de controle de
    camada de transporte antes que as mensagens de camada de aplicação comecem a fluir. Esse procedimento de
    apresentação, por assim dizer, alerta o cliente e o servidor, permitindo que eles se preparem para uma enxurrada de
    pacotes. Após a fase de apresentação, dizemos que existe uma conexão TCP entre as portas dos dois processos. A
    conexão é full-duplex (simultânea), visto que os dois processos podem enviar mensagens um ao outro pela conexão
    ao mesmo tempo. Quando termina de enviar mensagens, a aplicação deve interromper a conexão. Esse serviço é
    chamado de serviço “orientado para conexão”, e não serviço “de conexão”, porque os dois processos estão
    conectados de um modo muito solto.

    Serviço confiável de transporte: os processos comunicantes podem confiar no TCP para a entrega de todos os
    dados enviados sem erro e na ordem correta. Quando um lado da aplicação passa uma cadeia de bytes para dentro
    de um socket, pode contar com o TCP para entregar a mesma cadeia de dados ao socket receptor, sem falta de bytes
    nem bytes duplicados.

     O TCP também inclui um mecanismo de controle de congestionamento, um serviço voltado ao bem-estar geral da
Internet e não ao benefício direto dos processos comunicantes. O mecanismo de controle de congestionamento do TCP
limita a capacidade de transmissão de um processo (cliente ou servidor) quando a rede está congestionada entre cliente
e servidor. Em particular, o controle de congestionamento do TCP tenta limitar cada conexão do TCP à sua justa porção
de largura de banda de rede.
A limitação da velocidade de transmissão pode ter um efeito muito prejudicial sobre aplicações de áudio e vídeo
em tempo real que imponham uma limitação de largura de banda mínima. Além disso, aplicações em tempo real são
tolerantes à perda e não necessitam de um serviço de transporte totalmente confiável. Por essas razões, desenvolvedores
de aplicações em tempo real usualmente executam suas aplicações em UDP e não em TCP.
     Delineados os serviços providos pelo TCP vamos falar um pouco dos serviços que o TCP não oferece. Em primeiro
lugar, o TCP não garante uma taxa de transmissão mínima. Em particular, não é permitido a um processo originador
transmitir com a taxa que bem entender; em vez disso, ela é regulada pelo controle de congestionamento do TCP que
pode forçar o remetente a enviar dados a uma taxa média baixa. Em segundo lugar, o TCP não oferece nenhuma
garantia quanto a atrasos. Em particular, quando um processo originador passa dados para dentro de um socket, os
dados cedo ou tarde chegarão ao processo receptor, mas o TCP não garante absolutamente nenhum limite de tempo para
que eles cheguem lá. Em resumo, o TCP garante a entrega de todos os dados, mas não dá nenhuma garantia quanto à
velocidade de entrega ou aos atrasos experimentados.

6.2 – Serviços do UDP

    O UDP é um protocolo de transporte simplificado, leve, com um modelo de serviço minimalista. É um serviço não
orientado para conexão; portanto, não há apresentação antes que os dois processos comecem a se comunicar. O UDP
provê um serviço não confiável de transferência de dados - isto é, quando um processo envia uma mensagem para
dentro de um socket UDP, o protocolo não oferece nenhuma garantia de que a mensagem chegará ao processo receptor.
Além do mais, mensagens que realmente chegam ao processo receptor podem chegar fora de ordem.
    O UDP não inclui um mecanismo de controle de congestionamento; portanto, um processo origina dor pode
bombear dados para dentro de um socket UDP à taxa que quiser (embora nem todos os dados consigam alcançar o
socket receptor). Como aplicações em tempo real usualmente podem tolerar uma certa perda de dados, mas exigem uma
taxa mínima, desenvolvedores desse tipo de aplicações freqüentemente preferem executá-las por UDP, evitando, assim,
o controle de congestionamento e os cabeçalhos de pacotes do TCP. Similarmente ao TCP, o UDP não oferece
nenhuma garantia quanto a atrasos.




 Figura 3 – Aplicações populares da Internet, seus protocolos de camada de aplicação e seus protocolos de transporte
                                                     subjacentes.

     A Figura 3 mostra os protocolos de transporte usados por algumas aplicações populares da Internet. Vemos
que e-mail, a Web, acesso a terminais remotos e transferência de arquivos usam o TCP. Essas aplicações
escolheram o TCP primordialmente porque ele oferece um serviço confiável de transferência de dados,
garantindo que todos eles mais cedo ou mais tarde cheguem a seu destino. Vemos também que a aplicação por
telefonia por Internet normalmente funciona em UDP. Cada lado de uma aplicação de telefone por Internet
precisa enviar dados pela rede a uma taxa mínima (veja a Figura 2), o que é mais provavelmente possível com
UDP do que com TCP. E, também, aplicações de telefone por Internet são tolerantes às perdas, de modo que não
necessitam do serviço confiável de transferência de dados provido pelo TCP.

Mais conteúdo relacionado

PDF
RC - SL02 - Camada de Aplicacao
PDF
Arquitetura peer to-peer (p2p)
PPTX
Sistemas Distribuídos baseados na Web
PDF
Cap01a
PDF
Artigo Redes Jonnes
PDF
PDF
Aula 6 camada de aplicacao ii
PDF
Ccna exploration fundamentos de rede - 2 comunicando-se pela rede
RC - SL02 - Camada de Aplicacao
Arquitetura peer to-peer (p2p)
Sistemas Distribuídos baseados na Web
Cap01a
Artigo Redes Jonnes
Aula 6 camada de aplicacao ii
Ccna exploration fundamentos de rede - 2 comunicando-se pela rede

Mais procurados (17)

PDF
Jorge conceitos internet
PDF
Redes e servidores guia pratico 2ªedição por carlos e morimoto
PDF
Curso De Redes
PDF
Artigo Threads O Problema Dos Leitores E Escritores Implementado Em C# Rafael...
PDF
Ccna exploration fundamentos de rede - 3 funcionalidade e protocolos da cam...
DOC
Apostila Treinamento AvançAdo Em Linux
PPT
Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...
PDF
Guia pratico-rede-e-servidores-linux
PDF
Linux Redes e Servidores - guia pratico
DOCX
Exercício 04 alunos
PDF
SI - Comunicação
PDF
Fundamentos por terminar
PDF
Aula 2 Introdução a Redes I
PPT
Capítulo1 - Introdução a Sistemas Distribuídos - Coulouris
PDF
Redes de computadores volume 2
PDF
Arquitetura peer to-peer (p2p)
PDF
RC - SL03 - Camada de Transporte
Jorge conceitos internet
Redes e servidores guia pratico 2ªedição por carlos e morimoto
Curso De Redes
Artigo Threads O Problema Dos Leitores E Escritores Implementado Em C# Rafael...
Ccna exploration fundamentos de rede - 3 funcionalidade e protocolos da cam...
Apostila Treinamento AvançAdo Em Linux
Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...
Guia pratico-rede-e-servidores-linux
Linux Redes e Servidores - guia pratico
Exercício 04 alunos
SI - Comunicação
Fundamentos por terminar
Aula 2 Introdução a Redes I
Capítulo1 - Introdução a Sistemas Distribuídos - Coulouris
Redes de computadores volume 2
Arquitetura peer to-peer (p2p)
RC - SL03 - Camada de Transporte
Anúncio

Semelhante a Computadores (20)

PDF
PPTX
GlossáRio De Internet
PPTX
GlossáRio De Internet
PDF
Internet
PPTX
Infraestrutura de redes lan e wlan
DOCX
Telematica, tipos de telematica , Autenticacao, Redes virtuais privadas ( VPN )
PPTX
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
PDF
Ccna exploration fundamentos de rede - 3 funcionalidade e protocolos da cam...
PDF
04_-_classificação_das_redes_quanto_hierarquia.pdf
PDF
Fundamentos a rede de compuradores
PPTX
Vantagens__Desvantagens_Tipos_de_servidores
PDF
Capítulo 3 funcionalidades e protocolos da camada de aplicação
PDF
Aula 5 camada de aplicacao
PPTX
Trabalho de informatica slide
PPTX
Internet
PDF
Aula 1 - Introducao.pdf
PDF
Artigo Redes Jonnes
PPTX
Glossário
PDF
164519997 curso-de-redes-laercio-vasconcelos-capitulo-01-141027091745-convers...
PPTX
Camada de aplicação parte1
GlossáRio De Internet
GlossáRio De Internet
Internet
Infraestrutura de redes lan e wlan
Telematica, tipos de telematica , Autenticacao, Redes virtuais privadas ( VPN )
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
Ccna exploration fundamentos de rede - 3 funcionalidade e protocolos da cam...
04_-_classificação_das_redes_quanto_hierarquia.pdf
Fundamentos a rede de compuradores
Vantagens__Desvantagens_Tipos_de_servidores
Capítulo 3 funcionalidades e protocolos da camada de aplicação
Aula 5 camada de aplicacao
Trabalho de informatica slide
Internet
Aula 1 - Introducao.pdf
Artigo Redes Jonnes
Glossário
164519997 curso-de-redes-laercio-vasconcelos-capitulo-01-141027091745-convers...
Camada de aplicação parte1
Anúncio

Mais de redesinforma (20)

PDF
Completas
PDF
Redes2
PDF
Redes3
PDF
Redes osi
PDF
Basico de protocolos_2009
PDF
Questoes
PDF
Redes lista exercicios
PDF
Lista exerc conceitos-mod-ref
PDF
Exercícios para semestre
PDF
Exercicio parte1
PDF
Redes4
PDF
Redes5
PDF
Tcp transmission control protocol e ip internet protocol
PDF
Sincronas
PDF
Semfio
PDF
Roteament
PDF
Ri l5 052
PDF
PDF
PDF
Completas
Redes2
Redes3
Redes osi
Basico de protocolos_2009
Questoes
Redes lista exercicios
Lista exerc conceitos-mod-ref
Exercícios para semestre
Exercicio parte1
Redes4
Redes5
Tcp transmission control protocol e ip internet protocol
Sincronas
Semfio
Roteament
Ri l5 052

Último (20)

PPTX
5. A cultura do mundo virtual - globalidade.pptx
PDF
Historia da Gastronomia Mundial por Daianna Marques dos Santos
DOC
PPP 2024 (2) (2) feito EM REELABORAÇÃO MORENA ( ABRIL 2024).doc
PDF
50 anos Hoje - Volume V - 1973 - Manaus Amazonas
PPTX
1. A Cultura do Palco - muitos palcos, um espetáculo.pptx
PDF
Combate a Incêndio - Iluminação de Emergência e Sinalização de Segurança por ...
PDF
manual-orientacao-asb_5a8d6d8d87160aa636f63a5d0.pdf
PDF
Combate a Incêndio - Hidrantes,Mangotinhos, Mangueiras de Incêndio, Acessóri...
PPTX
"BPF, PPHO e APPCC na Indústria de Alimentos"
PPTX
Biologia celular: citologia, é o estudo da célula, a unidade básica da vida.
PPT
Elementos constituintes do esquema argumentativo (tese, argumento, tema, pont...
PDF
Pecados desdenhados por muita gente (islamismo)
PPTX
NR11 - Treinamento Direcao Defensiva - 2023.pptx
PPTX
QuestõesENEMVESTIBULARPARAESTUDOSEAPRENDIZADO.pptx
PPTX
AULA METodologia MODIFIC PART 1 MSC.pptx
PPTX
Slides Lição 8, CPAD, Uma Igreja que Enfrenta os seus Problemas, 3Tr25.pptx
PPTX
Educação Especial na perspectiva Inclusiva 02.pptx
PDF
Formação politica brasil_2017.pptx.pdf
PPTX
Programa Nacional de Saúde do Adulto.pptx
PDF
edital-de-chamamento-publico-no-3-2025.pdf
5. A cultura do mundo virtual - globalidade.pptx
Historia da Gastronomia Mundial por Daianna Marques dos Santos
PPP 2024 (2) (2) feito EM REELABORAÇÃO MORENA ( ABRIL 2024).doc
50 anos Hoje - Volume V - 1973 - Manaus Amazonas
1. A Cultura do Palco - muitos palcos, um espetáculo.pptx
Combate a Incêndio - Iluminação de Emergência e Sinalização de Segurança por ...
manual-orientacao-asb_5a8d6d8d87160aa636f63a5d0.pdf
Combate a Incêndio - Hidrantes,Mangotinhos, Mangueiras de Incêndio, Acessóri...
"BPF, PPHO e APPCC na Indústria de Alimentos"
Biologia celular: citologia, é o estudo da célula, a unidade básica da vida.
Elementos constituintes do esquema argumentativo (tese, argumento, tema, pont...
Pecados desdenhados por muita gente (islamismo)
NR11 - Treinamento Direcao Defensiva - 2023.pptx
QuestõesENEMVESTIBULARPARAESTUDOSEAPRENDIZADO.pptx
AULA METodologia MODIFIC PART 1 MSC.pptx
Slides Lição 8, CPAD, Uma Igreja que Enfrenta os seus Problemas, 3Tr25.pptx
Educação Especial na perspectiva Inclusiva 02.pptx
Formação politica brasil_2017.pptx.pdf
Programa Nacional de Saúde do Adulto.pptx
edital-de-chamamento-publico-no-3-2025.pdf

Computadores

  • 1. Instituto Federal de Educação, Ciência e Tecnologia do RN Campus de Currais Novos Curso Técnico Subsequente em Sistemas de Informação Aplliicações de Redes de Computtadorres Ap cações de Redes de Compu ado es Aula 01 – Introdução às Aplicações de Redes de Computadores Professor: Francisco Júnior 1 – Introdução Algumas aplicações de rede populares: Correio eletrônico A Web Mensagem instantânea Login em computador remoto como Telnet e SSH Compartilhamento de arquivos P2P Transferência de arquivos entre duas contas em dois computadores, como FTP (File Transport Protocol – Protocolo de Transferência de Arquivos) Jogos multiusuários em rede Videoclipes armazenados Telefonia por Internet Videoconferência em tempo real O cerne do desenvolvimento de aplicação de rede é escrever programas que rodem em sistemas finais diferentes e se comuniquem entre si pela rede. Por exemplo, na aplicação Web há dois programas distintos que se comunicam um com o outro: o programa do browser, que roda na máquina do usuário (computador de mesa, laptop, PDA, telefone celular e assim por diante); e o programa do servidor Web, que roda na máquina do servidor Web. Um outro exemplo é um sistema de compartilhamento de arquivos P2P no qual há um programa em cada máquina que participa da comunidade de compartilhamento de arquivos. Nesse caso, os programas de cada máquina podem ser semelhantes ou idênticos. Portanto, ao desenvolver sua nova aplicação, você precisará escrever um software que rode em várias máquinas. É importante dizer que você não precisará escrever um software que rode em equipamentos de núcleo de rede, como roteadores ou comutadores Ethernet. E, mesmo que você quisesse escrever software de aplicação para esses equipamentos, não poderia. Equipamentos de núcleo de rede não funcionam na camada de aplicação, mas em camadas mais baixas, especificamente na de rede e abaixo dela. Esse projeto básico - a saber, confinar o software de aplicação nos sistemas finais, facilitou o desenvolvimento e a proliferação rápidos de uma vasta gama de aplicações de Internet. 2 – Arquiteturas de aplicação de rede Ao construir uma nova aplicação de rede, você primeiramente precisará escolher a arquitetura da aplicação. Realmente, antes de mergulhar na codificação do software, você deverá elaborar um plano geral para a arquitetura da sua aplicação. Tenha sempre em mente que a arquitetura de uma aplicação é distintamente diferente da arquitetura de rede (por exemplo, a arquitetura em cinco camadas da Internet). Do ponto de vista do profissional que desenvolve a aplicação, a arquitetura de rede fixa e provê um conjunto específico de serviços às aplicações. Por outro lado, a arquitetura da aplicação é projetada pelo desenvolvedor e determina como a aplicação é organizada nos vários sistemas finais. Ao escolher a arquitetura da aplicação, o desenvolvedor provavelmente aproveitará uma das três arquiteturas mais utilizadas em aplicações modernas de rede: a arquitetura cliente-servidor, a arquitetura P2P e uma arquitetura híbrida cliente-servidor/P2P. Em uma arquitetura cliente-servidor há um hospedeiro sempre em funcionamento, denominado servidor, que atende a requisições de muitos outros hospedeiros, denominados clientes. Estes podem estar em funcionamento às vezes ou sempre. Um exemplo clássico é a aplicação Web na qual um servidor Web que está sempre em funcionamento atende a requisições de browsers de hospedeiros clientes. Quando recebe uma requisição de um objeto de um hospedeiro cliente, um servidor Web responde enviando o objeto requisitado a ele. Observe que, na arquitetura cliente- servidor, os clientes não se comunicam diretamente uns com os outros; por exemplo, na aplicação Web, dois browsers não se comunicam diretamente. Outra característica da arquitetura cliente-servidor é que o servidor tem um endereço fixo, bem conhecido, denominado endereço IP. Devido a essa característica do servidor e devido ao fato de ele estar sempre em funcionamento, um cliente sempre pode contatá-lo, enviando um pacote ao endereço do servidor. Algumas das aplicações mais conhecidas que empregam a arquitetura cliente-servidor são a Web, a transferência de arquivos, o login remoto e o e-mail. Em aplicações cliente-servidor, muitas vezes acontece de um único hospedeiro servidor ser incapaz de atender a todas as requisições de seus clientes. Por exemplo, um site Web de notícias popular pode ficar rapidamente saturado se
  • 2. tiver apenas um servidor para atender a todas as requisições. Por essa razão, muitas vezes são utilizados conjuntos de hospedeiros - às vezes denominados server farm - para criar um servidor virtual poderoso em arquiteturas cliente- servidor. Em uma arquitetura P2P pura, não há um servidor sempre funcionando no centro da aplicação. Em vez disso, pares arbitrários de hospedeiros, denominados peers, comunicam-se diretamente entre si. Como os pares se comunicam sem passar por nenhum servidor especial, a arquitetura é denominada par-a-par (peer-to-peer - P2P). Nesse tipo de arquitetura, nenhuma das máquinas participantes precisa estar sempre em funcionamento; além disso, um hospedeiro participante pode mudar seu endereço IP cada vez que for ligado. Um bom exemplo de aplicação que tem arquitetura P2P pura é a Gnutella, uma aplicação P2P de compartilhamento de arquivos de código-fonte aberto. Na Gnutella, qualquer hospedeiro pode requisitar e enviar arquivos, consultar a localização de um arquivo e responder e transmitir consultas. Uma das características mais fortes da arquitetura P2P é sua escalabilidade. Por exemplo, em uma aplicação P2P de compartilhamento de arquivos, milhões de pares podem participar da comunidade de compartilhamento de arquivos, sendo que cada um deles funciona como um servidor e contribui com recursos para a comunidade. Desse modo, conquanto cada par gere carga de trabalho requisitando arquivos, também agrega capacidade de serviço ao sistema respondendo requisições de outros pares. Assim, em princípio, compartilhamento de arquivos P2P é intrinsecamente escalável - cada par adicional não apenas aumenta a demanda, mas também aumenta a capacidade de serviço. Na Internet de hoje, o tráfego de compartilhamento de arquivos P2P é responsável por uma grande parcela de todo o tráfego. Por outro lado, devido à sua natureza altamente distribuída e descentralizada, pode ser difícil gerenciar aplicações P2P. Por exemplo, um par pode ter a única cópia de um arquivo importante e sair da comunidade a qualquer momento. As duas arquiteturas, cliente-servidor e P2P são comuns em aplicações de rede. Contudo, muitas aplicações são organizadas segundo arquiteturas híbridas cliente-servidor/P2P. Um exemplo disso é a já extinta Napster, a primeira das populares aplicações de compartilhamento de arquivos MP3. A arquitetura da Napster era P2P no sentido de que arquivos MP3 eram trocados diretamente entre pares, sem passar por servidores dedicados, sempre em funcionamento; mas também era cliente-servidor, já que um par consultava um servidor central para determinar quais pares que estavam em funcionamento tinham um arquivo MP3 desejado. Outra aplicação que utiliza uma arquitetura híbrida é a mensagem instantânea. Nela, a conversa entre dois usuários é tipicamente P2P, isto é, o texto enviado entre dois usuários não passa por um servidor intermediário, sempre em funcionamento. Entretanto, quando Alice, uma usuária, lança sua aplicação de mensagem instantânea, ela se registra em um servidor central; e quando Bob, um outro usuário, quer conversar com alguém inscrito na sua lista de amigos, seu cliente de mensagem instantânea contata o servidor central para descobrir quais desses seus amigos estão correntemente on-line e disponíveis. 3 – Comunicação entre processos Antes de construir sua aplicação de rede, você também precisará ter um entendimento básico de como programas que rodam em vários sistemas finais comunicam-se entre si. No jargão de sistemas operacionais, na verdade não são programas que se comunicam, mas processos. Um processo pode ser imaginado como um programa que está rodando dentro de um sistema final. Quando os processos comunicantes estão rodando no mesmo sistema final, eles comunicam- se entre si usando comunicação interprocessos, cujas regras são determinadas pelo sistema operacional do sistema final. Porém, não estamos interessados em como se comunicam processos que estão no mesmo hospedeiro, mas em como se comunicam processos que rodam em sistemas finais diferentes (com sistemas operacionais potencialmente diferentes). Eles se comunicam pela troca de mensagens por meio da rede de computadores. Um processo originador cria e envia mensagens para a rede; um processo destinatário recebe-as e possivelmente responde, devolvendo outras. 3.1 – Processos clientes e processos servidores Uma aplicação de rede consiste em pares de processos que enviam mensagens uns para os outros por meio de uma rede. Por exemplo, na aplicação Web, o processo cliente de um browser troca mensagens com um processo de um servidor Web. Em um sistema de compartilhamento de arquivos P2P, um arquivo é transferido de um processo que está em um par para outro que está em outro par. Para cada par de processos comunicantes normalmente rotulamos um dos dois processos de cliente e o outro, de servidor. Na Web, um browser é um processo cliente e um servidor Web é um processo servidor. No compartilhamento de arquivos P2P, o par que está descarregando o arquivo é rotulado de cliente e o que está recebendo, de servidor. Talvez você já tenha observado que, em algumas aplicações, tal como compartilhamento de arquivos P2P, um processo pode ser ambos, cliente e servidor. Realmente, um processo em um sistema de compartilhamento de arquivos P2P pode carregar e descarregar arquivos. Mesmo assim, no contexto de qualquer dada sessão entre um par de processos, ainda podemos rotular um processo de cliente e o outro de servidor. Definimos os processos cliente e servidor como segue:
  • 3. No contexto de uma sessão de comunicação entre um par de processos, o processo que iniçia a comunicação (isto é, o primeiro a contatar o outro no início da sessão) é rotulado de cliente. O processo que espera ser contatado para iniciar a sessão é o servidor. Na Web, um processo do browser inicia o contato com um processo do servidor Web; por conseguinte, o processo do browser é o cliente e o processo do servidor Web é o servidor. No compartilhamento de arquivos P2P, quando o Par A solicita ao Par B o envio de um arquivo específico, o Par A é o cliente enquanto o par B é o servidor no contexto dessa sessão específica de comunicação. Quando não houver possibilidade de confusão, às vezes usaremos também a terminologia "lado cliente e lado servidor de uma aplicação". Há um ponto em nossa terminologia que talvez precise ser mais bem esclarecido. Na Seção 2, classificamos aplicações segundo suas arquiteturas, a saber, cliente-servidor, P2P ou híbrida. Essa classificação é útil, pois proporciona uma estrutura geral para determinar a arquitetura de aplicações de rede. Todavia é preciso ter em mente que grande parte das aplicações de rede – incluindo as que utilizam a arquitetura P2P – consiste em vários pares de processos comunicantes; na qualidade de partes de uma sessão de comunicação entre um par de processos, um é rotulado de cliente e o outro, de servidor. 3.2 – Sockets Como dissemos anteriormente, a maioria das aplicações consiste em pares de processos comunicantes, sendo que os dois processos de cada par enviam mensagens um para o outro. Qualquer mensagem enviada de um processo para um outro tem de passar pela rede subjacente. Um processo envia mensagens para a rede e recebe mensagens dela através de seu socket. Vamos considerar uma analogia que nos auxiliará a entender processos e sockets. Um processo é análogo a uma casa e seu socket, à porta da casa. Quando um processo quer enviar uma mensagem a um outro processo em outro hospedeiro, ele empurra a mensagem porta (socket) afora para dentro da rede. Esse processo emissor admite que exista uma infra-estrutura de transporte do outro lado de sua porta que transportará a mensagem pela rede até a porta do processo destinatário. Ao chegar ao hospedeiro destinatário, a mensagem passa através da porta (socket) do processo receptor, que então executa alguma ação sobre a mensagem. A Figura 1 ilustra a comunicação por socket entre dois processos que se comunicam pela Internet: (A Figura 1 admite que o protocolo de transporte subjacente é o TCP embora o protocolo UDP também possa ser usado na Internet.) Como mostra essa figura, um socket é a interface entre a camada de aplicação e a de transporte dentro de uma máquina. É também denominado interface de programação da aplicação (application programming interface - API) entre a aplicação e a rede, visto que o socket é a interface de programação pela qual as aplicações de rede são inseridas na Internet. O desenvolvedor da aplicação controla tudo o que existe no lado da camada de aplicação do socket, mas tem pouco controle do lado da camada de transporte do socket. Os únicos controles que o desenvolvedor da aplicação tem do lado da camada de transporte são: (1) a escolha do protocolo de transporte e (2), talvez, a capacidade de determinar alguns parâmetros da camada de transporte, tais como tamanho máximo de buffer e de segmentos. Uma vez escolhido um protocolo de transporte, (se houver escolha) o desenvolvedor constrói a aplicação usando os serviços da camada de transporte oferecidos por esse protocolo. Figura 1 – Processos de aplicação, sockets e protocolo de transporte subjacente. 3.3 – Endereçamento de processos Para que um processo em um hospedeiro envie uma mensagem a um processo em outro, o processo originador tem de identificar o processo destinatário. Para isso, é preciso especificar duas informações: (1) o nome ou o endereço da máquina hospedeira e (2) um identificador que especifique o processo destinatário no hospedeiro de destino.
  • 4. Primeiro, vamos considerar endereços de hospedeiros. Em aplicações da Internet, o hospedeiro de destino é identificado por seu endereço IP. O endereço IP é uma quantidade de 32 bits que identifica exclusivamente o sistema final (sendo mais precisos, identifica exclusivamente a interface de rede que liga aquele hospedeiro à Internet). Visto que o endereço IP de qualquer sistema final conectado à Internet pública deve ser globalmente exclusivo, a atribuição desses endereços deve ser gerenciada com cuidado. Além de saber o endereço do sistema final ao qual a mensagem se destina, o hospedeiro originador também deve identificar o processo que está rodando no outro hospedeiro. Essa informação é necessária porque, em geral, um hospedeiro poderia estar executando muitas aplicações de rede. Um número de porta de destino atende a essa finalidade. Aplicações populares receberam números de porta específicos. Por exemplo, um servidor Web é identificado pelo número de porta 80. Um processo servidor de correio (que usa o protocolo SMTP) é identificado pelo número de porta 25. Uma lista de números bem conhecidos de portas para todos os protocolos padronizados da Internet pode ser encontrada no site http://www.iana.org. Quando um desenvolvedor cria uma nova aplicação de rede, ela deve receber um novo número de porta. 4 – Protocolos de camada de aplicação Um protocolo de camada de aplicação define como processos de uma aplicação, que funcionam em sistemas finais diferentes, passam mensagens entre si. Em particular, um protocolo de camada de aplicação define: os tipos de mensagens trocadas, por exemplo, de requisição e de resposta; a sintaxe dos vários tipos de mensagens, tais como os campos da mensagem e como os campos são delineados; a semântica dos campos, isto é, o significado da informação nos campos; regras para determinar quando e como um processo envia mensagens e responde a mensagens. Alguns protocolos de camada de aplicação são de domínio público. Por exemplo, o protocolo de camada de aplicação da Web, HTTP (HyperText Transfer Protocol: RFC 2616), está à disposição como um RFC. Se um desenvolvedor de browser seguir as regras do RFC do HTTP, seu browser estará habilitado a extrair páginas de qualquer servidor Web que também tenha seguido as regras do RFC do HTTP. Muitos outros protocolos de camada de aplicação são proprietários e, intencionalmente, não estão disponíveis ao público. Por exemplo, muitos dos sistemas de compartilhamento de arquivos P2P existentes usam protocolos de camada de aplicação proprietários. É importante distinguir aplicações de rede de protocolos de camada de aplicação. Um protocolo de camada de aplicação é apenas um pedaço (embora grande) de aplicação de rede. Examinemos alguns exemplos. A Web é uma aplicação cliente-servidor que permite aos usuários obter documentos de servidores Web por demanda. A aplicação Web consiste em muitos componentes, entre eles um padrão para formato de documentos (isto é, HTML), browsers Web (por exemplo, Netscape Navigator e Microsoft Internet Explorer), servidores Web (por exemplo, servidores Apache, Microsoft e Netscape) e um protocolo de camada de aplicação. O protocolo de camada de aplicação da Web, HTTP define o formato e a seqüência das mensagens que são passadas entre o browser e o servidor Web. Assim, ele é apenas um pedaço da aplicação Web. 5 – De que serviços uma aplicação necessita? Lembre-se de que um socket é a interface entre o processo da aplicação e o protocolo de camada de transporte. A aplicação do lado remetente envia mensagens através da porta. Do outro lado da porta, o protocolo de camada de transporte tem a responsabilidade de levar as mensagens pela rede até a porta do processo destinatário. Muitas redes, inclusive a Internet, oferecem mais de um protocolo de camada de transporte. Ao desenvolver uma aplicação, você deve escolher um dos protocolos de camada de transporte disponíveis. Como fazer essa escolha? O mais provável é que você avalie os serviços providos pelos protocolos de camada de transporte disponíveis e escolha o protocolo que melhor atenda às necessidades de sua aplicação. A situação é semelhante a escolher trem ou avião como meio de transporte entre duas cidades. Você tem de escolher um ou outro, e cada modalidade de transporte oferece serviços diferentes. Por exemplo, o trem oferece a facilidade da partida e da chegada no centro da cidade, ao passo que o avião oferece menor tempo de viagem. Quais são os serviços que uma aplicação necessitaria de um protocolo de transporte? Podemos classificar, de maneira geral, as necessidades de serviço de uma aplicação segundo três dimensões: perda de dados, largura de banda e temporização. 5.1 – Transferência confiável de dados Algumas aplicações, como correio eletrônico, mensagem instantânea, transferência de arquivos, acesso a hospedeiros remotos, transferência de documentos Web e aplicações financeiras, exigem transferência de dados totalmente confiável, isto é, não pode haver perda de dados. Outras aplicações tolerantes a perda, mais notavelmente aplicações de multimídia, como áudio/vídeo em tempo real ou áudio/vídeo armazenados, podem tolerar uma certa perda de dados. Nessas últimas aplicações, dados perdidos podem resultar em uma pequena falha durante a execução do áudio/vídeo - o que não é um prejuízo crucial. 5.2 – Largura de banda
  • 5. Algumas aplicações têm de transmitir dados a uma certa velocidade para serem efetivas. São aplicações sensíveis à largura de banda. Embora aplicações sensíveis à largura de banda exijam uma dada quantidade de largura de banda, aplicações elásticas podem fazer uso de qualquer quantidade mínima ou máxima que por acaso esteja disponível. Correio eletrônico, transferência de arquivos e transferências Web são todas aplicações elásticas. Evidentemente, quanto mais largura de banda, melhor. 5.3 – Temporização O requisito final de serviço é a temporização. Aplicações interativas em tempo real, tais como telefonia por Internet, ambientes virtuais, teleconferência e jogos multiusuários, exigem limitações estritas de temporização na entrega de dados para ser efetivas. Longos atrasos na telefonia por Internet, por exemplo, tendem a resultar em pausas artificiais na conversação. Para aplicações que não são em tempo real, é sempre preferível um atraso menor a um maior, mas não há nenhuma limitação estrita aos atrasos fim-a-fim. A Figura 2 resume os requisitos de confiabilidade, largura de banda e temporização para algumas aplicações populares e emergentes da Internet. Figura 2 – Requisitos de aplicações de rede selecionadas. 6 – Serviços providos pelos protocolos de transporte da Internet A Internet (e, de maneira mais geral, as redes TCP/IP) disponibiliza dois protocolos de transporte para a aplicação: UDP e TCP. Quando um desenvolvedor cria uma nova aplicação para a Internet, uma das primeiras decisões que deve tomar é se usará UDP ou TCP. Cada um desses protocolos oferece um modelo de serviço diferente para as aplicações solicitantes. 6.1 – Serviços do TCP O modelo de serviço TCP inclui um serviço orientado para conexão e um serviço confiável de transferência de dados. Quando uma aplicação solicita o TCP como seu protocolo de transporte, recebe dele ambos os serviços. Serviço orientado para conexão: o TCP faz com que o cliente e o servidor troquem informações de controle de camada de transporte antes que as mensagens de camada de aplicação comecem a fluir. Esse procedimento de apresentação, por assim dizer, alerta o cliente e o servidor, permitindo que eles se preparem para uma enxurrada de pacotes. Após a fase de apresentação, dizemos que existe uma conexão TCP entre as portas dos dois processos. A conexão é full-duplex (simultânea), visto que os dois processos podem enviar mensagens um ao outro pela conexão ao mesmo tempo. Quando termina de enviar mensagens, a aplicação deve interromper a conexão. Esse serviço é chamado de serviço “orientado para conexão”, e não serviço “de conexão”, porque os dois processos estão conectados de um modo muito solto. Serviço confiável de transporte: os processos comunicantes podem confiar no TCP para a entrega de todos os dados enviados sem erro e na ordem correta. Quando um lado da aplicação passa uma cadeia de bytes para dentro de um socket, pode contar com o TCP para entregar a mesma cadeia de dados ao socket receptor, sem falta de bytes nem bytes duplicados. O TCP também inclui um mecanismo de controle de congestionamento, um serviço voltado ao bem-estar geral da Internet e não ao benefício direto dos processos comunicantes. O mecanismo de controle de congestionamento do TCP limita a capacidade de transmissão de um processo (cliente ou servidor) quando a rede está congestionada entre cliente e servidor. Em particular, o controle de congestionamento do TCP tenta limitar cada conexão do TCP à sua justa porção de largura de banda de rede.
  • 6. A limitação da velocidade de transmissão pode ter um efeito muito prejudicial sobre aplicações de áudio e vídeo em tempo real que imponham uma limitação de largura de banda mínima. Além disso, aplicações em tempo real são tolerantes à perda e não necessitam de um serviço de transporte totalmente confiável. Por essas razões, desenvolvedores de aplicações em tempo real usualmente executam suas aplicações em UDP e não em TCP. Delineados os serviços providos pelo TCP vamos falar um pouco dos serviços que o TCP não oferece. Em primeiro lugar, o TCP não garante uma taxa de transmissão mínima. Em particular, não é permitido a um processo originador transmitir com a taxa que bem entender; em vez disso, ela é regulada pelo controle de congestionamento do TCP que pode forçar o remetente a enviar dados a uma taxa média baixa. Em segundo lugar, o TCP não oferece nenhuma garantia quanto a atrasos. Em particular, quando um processo originador passa dados para dentro de um socket, os dados cedo ou tarde chegarão ao processo receptor, mas o TCP não garante absolutamente nenhum limite de tempo para que eles cheguem lá. Em resumo, o TCP garante a entrega de todos os dados, mas não dá nenhuma garantia quanto à velocidade de entrega ou aos atrasos experimentados. 6.2 – Serviços do UDP O UDP é um protocolo de transporte simplificado, leve, com um modelo de serviço minimalista. É um serviço não orientado para conexão; portanto, não há apresentação antes que os dois processos comecem a se comunicar. O UDP provê um serviço não confiável de transferência de dados - isto é, quando um processo envia uma mensagem para dentro de um socket UDP, o protocolo não oferece nenhuma garantia de que a mensagem chegará ao processo receptor. Além do mais, mensagens que realmente chegam ao processo receptor podem chegar fora de ordem. O UDP não inclui um mecanismo de controle de congestionamento; portanto, um processo origina dor pode bombear dados para dentro de um socket UDP à taxa que quiser (embora nem todos os dados consigam alcançar o socket receptor). Como aplicações em tempo real usualmente podem tolerar uma certa perda de dados, mas exigem uma taxa mínima, desenvolvedores desse tipo de aplicações freqüentemente preferem executá-las por UDP, evitando, assim, o controle de congestionamento e os cabeçalhos de pacotes do TCP. Similarmente ao TCP, o UDP não oferece nenhuma garantia quanto a atrasos. Figura 3 – Aplicações populares da Internet, seus protocolos de camada de aplicação e seus protocolos de transporte subjacentes. A Figura 3 mostra os protocolos de transporte usados por algumas aplicações populares da Internet. Vemos que e-mail, a Web, acesso a terminais remotos e transferência de arquivos usam o TCP. Essas aplicações escolheram o TCP primordialmente porque ele oferece um serviço confiável de transferência de dados, garantindo que todos eles mais cedo ou mais tarde cheguem a seu destino. Vemos também que a aplicação por telefonia por Internet normalmente funciona em UDP. Cada lado de uma aplicação de telefone por Internet precisa enviar dados pela rede a uma taxa mínima (veja a Figura 2), o que é mais provavelmente possível com UDP do que com TCP. E, também, aplicações de telefone por Internet são tolerantes às perdas, de modo que não necessitam do serviço confiável de transferência de dados provido pelo TCP.