SlideShare a Scribd company logo
1 of 6
Download to read offline
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.

More Related Content

What's hot

Redes e servidores guia pratico 2ªedição por carlos e morimoto
Redes e servidores   guia pratico 2ªedição por carlos e morimotoRedes e servidores   guia pratico 2ªedição por carlos e morimoto
Redes e servidores guia pratico 2ªedição por carlos e morimotoPessoal
 
Artigo Threads O Problema Dos Leitores E Escritores Implementado Em C# Rafael...
Artigo Threads O Problema Dos Leitores E Escritores Implementado Em C# Rafael...Artigo Threads O Problema Dos Leitores E Escritores Implementado Em C# Rafael...
Artigo Threads O Problema Dos Leitores E Escritores Implementado Em C# Rafael...rafaelov
 
Ccna exploration fundamentos de rede - 3 funcionalidade e protocolos da cam...
Ccna exploration   fundamentos de rede - 3 funcionalidade e protocolos da cam...Ccna exploration   fundamentos de rede - 3 funcionalidade e protocolos da cam...
Ccna exploration fundamentos de rede - 3 funcionalidade e protocolos da cam...veruzkavaz
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linuxeliezer
 
Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...
Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...
Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...rafaelov
 
Guia pratico-rede-e-servidores-linux
Guia pratico-rede-e-servidores-linuxGuia pratico-rede-e-servidores-linux
Guia pratico-rede-e-servidores-linuxFernando Mendes
 
Linux Redes e Servidores - guia pratico
Linux  Redes e Servidores - guia pratico Linux  Redes e Servidores - guia pratico
Linux Redes e Servidores - guia pratico SoftD Abreu
 
Aula 2 Introdução a Redes I
Aula 2  Introdução a Redes IAula 2  Introdução a Redes I
Aula 2 Introdução a Redes Iwab030
 
Capítulo1 - Introdução a Sistemas Distribuídos - Coulouris
Capítulo1 - Introdução a Sistemas Distribuídos - CoulourisCapítulo1 - Introdução a Sistemas Distribuídos - Coulouris
Capítulo1 - Introdução a Sistemas Distribuídos - CoulourisWindson Viana
 
Redes de computadores volume 2
Redes de computadores   volume 2Redes de computadores   volume 2
Redes de computadores volume 2Marques Silva
 
Arquitetura peer to-peer (p2p)
Arquitetura peer to-peer (p2p)Arquitetura peer to-peer (p2p)
Arquitetura peer to-peer (p2p)Isac Moura
 
RC - SL03 - Camada de Transporte
RC - SL03 - Camada de TransporteRC - SL03 - Camada de Transporte
RC - SL03 - Camada de TransporteUFPB
 

What's hot (17)

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

Similar to Introdução às Aplicações de Redes de Computadores

GlossáRio De Internet
GlossáRio De InternetGlossáRio De Internet
GlossáRio De InternetFredericoSilva
 
Telematica, tipos de telematica , Autenticacao, Redes virtuais privadas ( VPN )
Telematica, tipos de telematica , Autenticacao, Redes virtuais privadas ( VPN )Telematica, tipos de telematica , Autenticacao, Redes virtuais privadas ( VPN )
Telematica, tipos de telematica , Autenticacao, Redes virtuais privadas ( VPN )Universidade Zambeze
 
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptxAula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptxChadidoDiogo1
 
Ccna exploration fundamentos de rede - 3 funcionalidade e protocolos da cam...
Ccna exploration   fundamentos de rede - 3 funcionalidade e protocolos da cam...Ccna exploration   fundamentos de rede - 3 funcionalidade e protocolos da cam...
Ccna exploration fundamentos de rede - 3 funcionalidade e protocolos da cam...veruzkavaz
 
Fundamentos a rede de compuradores
Fundamentos a rede de compuradoresFundamentos a rede de compuradores
Fundamentos a rede de compuradoresJairo Sousa
 
Capítulo 3 funcionalidades e protocolos da camada de aplicação
Capítulo 3   funcionalidades e protocolos da camada de aplicaçãoCapítulo 3   funcionalidades e protocolos da camada de aplicação
Capítulo 3 funcionalidades e protocolos da camada de aplicaçãoSimba Samuel
 
Aula 5 camada de aplicacao
Aula 5   camada de aplicacaoAula 5   camada de aplicacao
Aula 5 camada de aplicacaowab030
 
Trabalho de informatica slide
Trabalho de informatica slideTrabalho de informatica slide
Trabalho de informatica slideLalleska Brandão
 
Aula 1 - Introducao.pdf
Aula 1 - Introducao.pdfAula 1 - Introducao.pdf
Aula 1 - Introducao.pdfRoberto Aragy
 
Glossário
GlossárioGlossário
Glossárioguerner
 
164519997 curso-de-redes-laercio-vasconcelos-capitulo-01-141027091745-convers...
164519997 curso-de-redes-laercio-vasconcelos-capitulo-01-141027091745-convers...164519997 curso-de-redes-laercio-vasconcelos-capitulo-01-141027091745-convers...
164519997 curso-de-redes-laercio-vasconcelos-capitulo-01-141027091745-convers...Robson Levi
 
Protocolos de aplicação
Protocolos de aplicaçãoProtocolos de aplicação
Protocolos de aplicaçãoJoel Saramago
 

Similar to Introdução às Aplicações de Redes de Computadores (20)

Cap2a
Cap2aCap2a
Cap2a
 
GlossáRio De Internet
GlossáRio De InternetGlossáRio De Internet
GlossáRio De Internet
 
GlossáRio De Internet
GlossáRio De InternetGlossáRio De Internet
GlossáRio De Internet
 
Internet
InternetInternet
Internet
 
Infraestrutura de redes lan e wlan
Infraestrutura de redes lan e wlanInfraestrutura de redes lan e wlan
Infraestrutura de redes lan e wlan
 
Telematica, tipos de telematica , Autenticacao, Redes virtuais privadas ( VPN )
Telematica, tipos de telematica , Autenticacao, Redes virtuais privadas ( VPN )Telematica, tipos de telematica , Autenticacao, Redes virtuais privadas ( VPN )
Telematica, tipos de telematica , Autenticacao, Redes virtuais privadas ( VPN )
 
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptxAula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
 
Ccna exploration fundamentos de rede - 3 funcionalidade e protocolos da cam...
Ccna exploration   fundamentos de rede - 3 funcionalidade e protocolos da cam...Ccna exploration   fundamentos de rede - 3 funcionalidade e protocolos da cam...
Ccna exploration fundamentos de rede - 3 funcionalidade e protocolos da cam...
 
Fundamentos a rede de compuradores
Fundamentos a rede de compuradoresFundamentos a rede de compuradores
Fundamentos a rede de compuradores
 
Vantagens__Desvantagens_Tipos_de_servidores
Vantagens__Desvantagens_Tipos_de_servidoresVantagens__Desvantagens_Tipos_de_servidores
Vantagens__Desvantagens_Tipos_de_servidores
 
Capítulo 3 funcionalidades e protocolos da camada de aplicação
Capítulo 3   funcionalidades e protocolos da camada de aplicaçãoCapítulo 3   funcionalidades e protocolos da camada de aplicação
Capítulo 3 funcionalidades e protocolos da camada de aplicação
 
Aula 5 camada de aplicacao
Aula 5   camada de aplicacaoAula 5   camada de aplicacao
Aula 5 camada de aplicacao
 
Trabalho de informatica slide
Trabalho de informatica slideTrabalho de informatica slide
Trabalho de informatica slide
 
Internet
InternetInternet
Internet
 
Aula 1 - Introducao.pdf
Aula 1 - Introducao.pdfAula 1 - Introducao.pdf
Aula 1 - Introducao.pdf
 
Artigo Redes Jonnes
Artigo Redes JonnesArtigo Redes Jonnes
Artigo Redes Jonnes
 
Glossário
GlossárioGlossário
Glossário
 
164519997 curso-de-redes-laercio-vasconcelos-capitulo-01-141027091745-convers...
164519997 curso-de-redes-laercio-vasconcelos-capitulo-01-141027091745-convers...164519997 curso-de-redes-laercio-vasconcelos-capitulo-01-141027091745-convers...
164519997 curso-de-redes-laercio-vasconcelos-capitulo-01-141027091745-convers...
 
Camada de aplicação parte1
Camada de aplicação parte1Camada de aplicação parte1
Camada de aplicação parte1
 
Protocolos de aplicação
Protocolos de aplicaçãoProtocolos de aplicação
Protocolos de aplicação
 

More from redesinforma (20)

Completas
CompletasCompletas
Completas
 
Redes2
Redes2Redes2
Redes2
 
Redes3
Redes3Redes3
Redes3
 
Redes osi
Redes osiRedes osi
Redes osi
 
Basico de protocolos_2009
Basico de protocolos_2009Basico de protocolos_2009
Basico de protocolos_2009
 
Questoes
QuestoesQuestoes
Questoes
 
Redes lista exercicios
Redes lista exerciciosRedes lista exercicios
Redes lista exercicios
 
Lista exerc conceitos-mod-ref
Lista exerc conceitos-mod-refLista exerc conceitos-mod-ref
Lista exerc conceitos-mod-ref
 
Exercícios para semestre
Exercícios para semestreExercícios para semestre
Exercícios para semestre
 
Exercicio parte1
Exercicio parte1Exercicio parte1
Exercicio parte1
 
Redes4
Redes4Redes4
Redes4
 
Redes5
Redes5Redes5
Redes5
 
Tcp transmission control protocol e ip internet protocol
Tcp  transmission control protocol e ip internet protocolTcp  transmission control protocol e ip internet protocol
Tcp transmission control protocol e ip internet protocol
 
Sincronas
SincronasSincronas
Sincronas
 
Semfio
SemfioSemfio
Semfio
 
Roteament
RoteamentRoteament
Roteament
 
Ri l5 052
Ri l5 052Ri l5 052
Ri l5 052
 
Ri a9
Ri a9Ri a9
Ri a9
 
Ri a8
Ri a8Ri a8
Ri a8
 
Ri a7
Ri a7Ri a7
Ri a7
 

Recently uploaded

Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãIlda Bicacro
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfReta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfWagnerCamposCEA
 
Introdução a Caminhada do Interior......
Introdução a Caminhada do Interior......Introdução a Caminhada do Interior......
Introdução a Caminhada do Interior......suporte24hcamin
 
INTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorINTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorEdvanirCosta
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...azulassessoria9
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfHELENO FAVACHO
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfLeloIurk1
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfFrancisco Márcio Bezerra Oliveira
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?AnabelaGuerreiro7
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdfLeloIurk1
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médiorosenilrucks
 
Araribá slides 9ano.pdf para os alunos do medio
Araribá slides 9ano.pdf para os alunos do medioAraribá slides 9ano.pdf para os alunos do medio
Araribá slides 9ano.pdf para os alunos do medioDomingasMariaRomao
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
Slides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxSlides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxMauricioOliveira258223
 
AULA DE CARIOLOGIA TSB introdução tudo sobre
AULA DE CARIOLOGIA TSB introdução tudo sobreAULA DE CARIOLOGIA TSB introdução tudo sobre
AULA DE CARIOLOGIA TSB introdução tudo sobremaryalouhannedelimao
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfHELENO FAVACHO
 
Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfEmanuel Pio
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéisines09cachapa
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Ilda Bicacro
 

Recently uploaded (20)

Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! Sertã
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfReta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
 
Introdução a Caminhada do Interior......
Introdução a Caminhada do Interior......Introdução a Caminhada do Interior......
Introdução a Caminhada do Interior......
 
INTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorINTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de Professor
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médio
 
Araribá slides 9ano.pdf para os alunos do medio
Araribá slides 9ano.pdf para os alunos do medioAraribá slides 9ano.pdf para os alunos do medio
Araribá slides 9ano.pdf para os alunos do medio
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
Slides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxSlides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptx
 
AULA DE CARIOLOGIA TSB introdução tudo sobre
AULA DE CARIOLOGIA TSB introdução tudo sobreAULA DE CARIOLOGIA TSB introdução tudo sobre
AULA DE CARIOLOGIA TSB introdução tudo sobre
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
 
Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdf
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 

Introdução às Aplicações de Redes de 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.