Upload
fabio-alves
View
30
Download
4
Embed Size (px)
Citation preview
REDES DE
COMPUTADORES 1
JANEIRO 2013
Redes de Computadores 1 ii
Sumário
1. Introdução ........................................................................................................................................ 4
1.1 Evolução dos Sistemas de Computação .................................................................................... 4 1.2 Usos das Redes de Computadores ............................................................................................. 5
1.2.1 Aplicações Pessoais ........................................................................................................... 6 1.2.2 Modelo Cliente-Servidor ................................................................................................... 6
1.3 Tipos de Rede ............................................................................................................................ 6
1.3.1 Redes Locais ...................................................................................................................... 7 1.3.2 Redes Metropolitanas ........................................................................................................ 7 1.3.3 Redes Geograficamente Distribuídas ................................................................................ 7 1.3.4 Inter-Redes......................................................................................................................... 8
1.4 Redes Sem Fio ........................................................................................................................... 8
1.5 Aplicações Básicas .................................................................................................................... 9 1.5.1 Servidor de Arquivos ......................................................................................................... 9
1.5.2 Servidor de Impressão ....................................................................................................... 9 1.5.3 Compartilhamento de Software ....................................................................................... 10 1.5.4 Correio Eletrônico ........................................................................................................... 10 1.5.5 Servidor de Banco de Dados ........................................................................................... 10
1.5.6 Gerenciamento Eletrônico de Documentos (GED) ......................................................... 10 1.6 Exercícios ................................................................................................................................ 10
2. Topologias ...................................................................................................................................... 12 2.1 Linhas de Comunicação .......................................................................................................... 12
2.2 Redes Geograficamente Distribuídas ...................................................................................... 12 2.2.1 Topologia Totalmente Ligada ......................................................................................... 12
2.2.2 Topologia em Anel .......................................................................................................... 13
2.2.3 Topologia Parcialmente Ligada ....................................................................................... 13
2.3 Redes Locais e Metropolitanas ............................................................................................... 14 2.3.1 Topologia em Estrela ....................................................................................................... 14
2.3.2 Topologia em Anel .......................................................................................................... 14 2.3.3 Topologia em Barra ......................................................................................................... 16
2.4 Exercícios ................................................................................................................................ 16
3. Protocolos de Comunicação ........................................................................................................... 18 3.1 Software de Rede .................................................................................................................... 18
3.1.1 Hierarquias de Protocolo ................................................................................................. 18
3.1.2 Interfaces e Serviços ........................................................................................................ 19 3.1.3 Serviços Orientados à Conexão e Serviços sem Conexão ............................................... 19 3.1.4 Primitivas de Serviço ....................................................................................................... 20
3.2 Modelos de referência ............................................................................................................. 21
3.2.1 O Modelo de Referência OSI .......................................................................................... 21 3.2.2 O Modelo de Referência TCP/IP ..................................................................................... 24 3.2.3 Comparação entre os Modelos de Referência OSI e TCP/IP .......................................... 26
3.3 Exercícios ................................................................................................................................ 27
4. Camada de Rede............................................................................................................................. 28 4.1 Necessidade da Camada de Rede ............................................................................................ 28 4.2 Comutação de pacotes store-and-forward ............................................................................... 28 4.3 Serviços Oferecidos à Camada de Transporte ......................................................................... 29
Redes de Computadores 1 iii
4.4 Organização Interna da Camada de Rede................................................................................ 29 4.5 Endereçamento no Nível de Rede ........................................................................................... 29
4.6 Exercícios ................................................................................................................................ 30
5. Camada de Transporte ................................................................................................................... 31 5.1 O Serviço de Transporte .......................................................................................................... 31
5.1.1 Serviços Oferecidos às Camadas Superiores ................................................................... 31 5.1.2 Qualidade de Serviço ....................................................................................................... 31 5.1.3 Primitivas de Serviço de Transporte ................................................................................ 32
5.2 Protocolos de Transporte ......................................................................................................... 33 5.2.1 Endereçamento ................................................................................................................ 33 5.2.2 Estabelecimento de uma Conexão ................................................................................... 34 5.2.3 Encerramento de uma Conexão ....................................................................................... 34
5.3 Exercícios ................................................................................................................................ 34
6. Protocolos para Internet ................................................................................................................. 36
6.1 O Protocolo IP ......................................................................................................................... 36
6.1.1 Endereços IP .................................................................................................................... 38 6.1.2 Sub-Redes ........................................................................................................................ 38
6.1.3 NAT ................................................................................................................................. 40 6.1.4 Protocolos de Controle da Internet .................................................................................. 40 6.1.5 Multicast IP...................................................................................................................... 44
6.2 Protocolos de Transporte da Internet ...................................................................................... 45
6.2.1 TCP (Transmission Control Protocol) ............................................................................. 45 6.2.2 UDP (User Datagram Protocol) ....................................................................................... 49
6.2.3 Exemplos de Portas Conhecidas ...................................................................................... 49 6.3 Aplicações ............................................................................................................................... 50
6.3.1 DNS (Domain Name System) ......................................................................................... 50
6.3.2 Telnet ............................................................................................................................... 51 6.3.3 FTP (File Transfer Protocol) ........................................................................................... 52
6.3.4 SSH (Secure Shell) .......................................................................................................... 52
6.3.5 Correio Eletrônico ........................................................................................................... 53
6.3.6 WWW (World Wide Web) .............................................................................................. 57 6.4 Exercícios ................................................................................................................................ 59
7. Bibliografia .................................................................................................................................... 61
Redes de Computadores 1 4
1. Introdução
Inicialmente os sistemas de computação eram sistemas únicos, centralizados e de grande
porte.
A década de 50 ficou marcada pelo uso de máquinas complexas de grande porte operadas por
pessoas altamente especializadas e o enfileiramento de usuários para submeter seus jobs (cartão ou
fita magnética).
O processamento era todo realizado em batch, sem interação entre usuário e máquina, o que
resultava em um longo período para obter alguma resposta do sobre o processamento.
Na década de 60 começaram a aparecer os primeiros terminais interativos e os sistemas de
tempo compartilhado (time-sharing) – sistemas multitarefa.
Na década de 70 o sistema centralizado começou a ceder espaço à distribuição do
processamento. Minicomputadores e microcomputadores com bom desempenho e requisitos menos
rígidos de temperatura e umidade permitiram a instalação de uma grande base computacional.
Mas equipamentos periféricos ainda eram caros e justificaram sua utilização compartilhada. A
necessidade de troca de informações também foi razão importante para interconexão.
Atualmente a busca por desempenho impulsiona novas arquiteturas.
1.1 Evolução dos Sistemas de Computação
A arquitetura definida por Von Neumann onde as instruções são executadas sequencialmente,
uma após outra, era perfeita para as maneiras como os programas eram desenvolvidos.
Os avanços da tecnologia de integração de circuitos provocaram uma grande revolução nos
sistemas de computadores, principalmente no que se refere a custo. Várias arquiteturas foram
propostas (dentro das restrições de tecnologias da época) tentando contornar as limitações de Von
Neumann. Dentre tais propostas destacam-se:
Sistemas com UCP com múltiplas unidades funcionais.
Máquinas pipeline.
Array Processors (processadores de matriz).
Em outra alternativa contornando as restrições centralizadas de controle da arquitetura de Von
Neumann aparece a ideia de sequências múltiplas e independentes de instruções em um sistema
composto por vários elementos de processamento compartilhando um espaço comum de memória.
Tais sistemas são conhecidos como sistemas multiprocessados fortemente acoplados e são
compostos por 2 ou mais processadores com capacidade aproximadamente iguais, todos dividindo
acesso comum à memória e compartilhando canais de E/S e periféricos, sendo o sistema total
controlado por um único sistema operacional.
Surgiram também os sistemas fracamente acoplados (sistemas de processamento
distribuído), que são uma coleção de elementos de processamento interconectados, tanto lógica
quanto fisicamente, para execução cooperativa de programas de aplicação, com controle geral dos
recursos descentralizado. Nos sistemas fracamente acoplados, o sistema é fragmentado em partes
que residem em diferentes processadores e memórias, com comunicação sujeita a retardos variáveis
e desconhecidos.
Redes de Computadores 1 5
Dentre as vantagens dos sistemas multiprocessados, pode-se destacar:
Custo/desempenho: evolução da tecnologia de síntese de CI tem levado a alto potencial de
microprocessadores na relação custo/desempenho.
Responsividade (tempo de resposta): apresentam grande potencial de processamento e
responsividade.
Modularidade: permite alterar a configuração de acordo com a tarefa a ser desempenhada
(custo/desempenho) e facilidade de manutenção.
Confiabilidade: garantida pela redundância e mecanismos de reconfiguração.
Concorrência: para aplicações que exigem alto desempenho.
Dentre as desvantagens dos sistemas multiprocessados, pode-se destacar:
Desenvolvimento de software é mais complexo e mais caro.
Decomposição de tarefas é complexa.
Dependente de tecnologia de comunicação devida a alta demanda de tráfego de
comunicação.
Falha em um processador pode interferir em outro.
Uma máquina de arquitetura distribuída é composta por um conjunto de módulos
autônomos de processamento interconectados para formar um único sistema. Ela necessita de um
sistema operacional único para gerenciar o processamento de seus módulos e apresentar-se ao
usuário como um sistema único.
As redes de computadores são formadas por um conjunto de módulos autônomos de
processamento interconectados, preservando a independência dos vários módulos de
processamento.
1.2 Usos das Redes de Computadores
Muitas empresas possuem uma grande quantidade de computadores. Em um determinado
momento a empresa resolve conectá-los para poder extrair e correlacionar informações, ou seja,
compartilhar recursos, tornando todos os programas, equipamentos e especialmente dados ao
alcance de todas as pessoas na rede, independente da localização física do recurso e do usuário.
Porém, talvez mais importante do que compartilhar recursos físicos seja compartilhar informações.
No caso de empresas pequenas é comum que todos os computadores se encontrem em um
único escritório ou em um único edifício; porém, no caso de empresas maiores, os computadores e
funcionários podem estar dispersos por escritórios e fábricas em muitos países. Independente disso,
um funcionário em uma cidade às vezes pode ter a necessidade de acessar dados em outra cidade.
Resumindo, o fato de um usuário estar a quilômetros de distância de seus dados não deve impedi-lo
de usar tais dados.
Outro objetivo de uma rede de computadores está relacionado às pessoas. Uma rede de
computadores pode oferecer um meio de comunicação eficiente entre funcionários. Entre os meios
de comunicação mais comuns podemos citar o correio eletrônico (e-mail), documentação on-line,
videoconferência e gerenciamento eletrônico de documentos.
Outra atividade que surgiu com as redes de computadores foi a capacidade de realizar
negócios eletronicamente com outras empresas, em especial fornecedores e clientes. A capacidade
de emitir pedidos conforme a demanda reduz a necessidade de grandes estoques e aumenta a
eficiência.
Um uso mais recente das redes de computadores é o comércio eletrônico (e-commerce), ou
seja, a capacidade de realizar negócios com consumidores pela Internet.
Redes de Computadores 1 6
1.2.1 Aplicações Pessoais
No início as pessoas compravam computadores pessoais para processar textos e jogar. Nos
últimos anos surgiu uma nova motivação, o acesso à Internet. Alguns dos usos mais populares da
Internet para usuários domésticos são:
Acesso a informações remotas, em especial pela web (artes, negócios, governo, saúde,
jornais, revistas, diversão, etc).
Comunicação entre pessoas, utilizando e-mail, grupos de notícias (newsgroups) e
programas para troca de mensagens instantâneas.
Entretenimento interativo. Os melhores exemplos são vídeo sob demanda e jogos.
Comércio eletrônico, tanto o promovido por lojas quanto sites de leilão.
A tabela abaixo mostra algumas abreviações corriqueiras:
Abreviação Significado Exemplo
B2C Business-to-consumer Compras on-line
B2B Business-to-business Fabricante de solicitando peças a um fornecedor
G2C Government-to-consumer Transmissão da declaração de imposto de renda
C2C Consumer-to-consumer Leilões on-line de produtos usados
P2P Peer-to-peer Compartilhamento de arquivos
1.2.2 Modelo Cliente-Servidor
Podemos imaginar que o sistema de informações de uma empresa consista em um ou mais
bancos de dados e um número de funcionários que precisam acessá-los remotamente. Nesse
modelo, os dados são armazenados em computadores chamados servidores e os funcionários têm
em suas mesas máquinas chamadas clientes, com as quais eles acessam dados remotos. As
máquinas clientes e servidores são conectadas entre si por uma rede. Tal modelo é conhecido como
modelo cliente-servidor.
No modelo cliente-servidor há dois processos envolvidos, um na máquina cliente e um na
máquina servidora. O processo cliente envia uma mensagem pela rede ao processo servidor. Então,
o processo cliente espera por uma mensagem de resposta. Quando o processo servidor recebe a
solicitação, ele executa o trabalho solicitado e envia de volta uma resposta.
Os sistemas operacionais atuais permitem a execução de vários processos simultaneamente
(multiprogramação). Desta forma um sistema pode estar executando mais de um processo servidor
simultaneamente, assim como pode estar executando mais de um processo cliente simultaneamente.
Também é possível que um sistema possua simultaneamente processos clientes e processos
servidores executando em um mesmo host.
1.3 Tipos de Rede
Uma Rede de Computadores é formada por um conjunto de módulos processadores capazes
de trocar informações e compartilhar recursos, interligados por um sistema de comunicação.
O sistema de comunicação vai se constituir de um arranjo topológico interligando os vários
módulos processadores através de enlaces físicos (meios de transmissão) e de um conjunto de regras
Redes de Computadores 1 7
com o fim de organizar a comunicação (protocolos).
Redes de computadores podem ser classificadas de várias formas, mas duas dimensões se
destacam: a escala e a tecnologia de transmissão.
Generalizando, há dois tipos de tecnologia de transmissão:
Redes de difusão
Redes ponto a ponto
As redes de difusão possuem apenas um canal de comunicação, compartilhado por todas as
máquinas. As mensagens enviadas por uma das máquinas são recebidas por todas as demais, sendo
o destinatário especificado através de um campo de endereço dentro do pacote.
Os sistemas de difusão também oferecem a possibilidade de endereçamento de um pacote a
todos os destinos por meio de um endereço especial. Quando um pacote com esse endereço é
transmitido, ele é recebido e processado por todas as máquinas da rede. Esse modo de operação é
chamado de difusão (broadcast). Alguns sistemas de difusão também suportam transmissão para
um subconjunto das máquinas, conhecido como multidifusão (multicasting).
Por outro lado, as redes ponto a ponto consistem em conexões entre pares individuais de
máquinas. Para ir da origem ao destino, talvez um pacote nesse tipo de rede tenha de visitar uma ou
mais máquinas intermediárias. Os algoritmos de roteamento desempenham um importante papel nas
redes ponto a ponto.
Embora haja algumas exceções, geralmente as redes menores tendem a usar os sistemas de
difusão, e as maiores os sistemas ponto a ponto.
As redes também podem ser classificadas por escala, sendo classificadas em redes locais,
redes metropolitanas e redes geograficamente distribuídas.
1.3.1 Redes Locais
Redes locais (local area networks – LANs), são redes privadas contidas em um único edifício
ou campus com até alguns quilômetros de extensão. São amplamente usadas para conectar
computadores pessoais e estações de trabalho em escritórios e instalações industriais.
Possuem um tamanho restrito, o que significa que o pior tempo de transmissão é limitado e
conhecido com antecedência.
São projetadas para permitir que recursos computacionais, como impressoras e discos, sejam
compartilhados por computadores pessoais.
As LANs tradicionais possuem taxas de transmissão que variam de 10 Mbps a 1000 Mbps,
têm baixo retardo e possuem baixas taxas de erros (10-8
a 10-11
). As LANs mais modernas operam
em até 10 Gbps.
1.3.2 Redes Metropolitanas
Uma rede metropolitana (metropolitan area network – MAN), é uma versão ampliada de uma
LAN, pois basicamente os dois tipos de rede utilizam tecnologias semelhantes. Uma MAN pode
abranger uma cidade inteira e pode ser privada ou pública. É capaz de transportar dados e voz,
podendo inclusive ser associado à rede de televisão a cabo local.
Normalmente são utilizadas para conectar clientes que necessitam de acesso à Internet de alta
velocidade e redes locais.
1.3.3 Redes Geograficamente Distribuídas
Uma rede geograficamente distribuída (wide area network – WAN), abrange uma ampla área
Redes de Computadores 1 8
geográfica, com frequência um país ou continente.
Na maioria das redes geograficamente distribuídas, a sub-rede consiste em dois componentes
distintos: linhas de transmissão e elementos de comutação. As linhas de transmissão transportam os
bits entre as máquinas. Os elementos de comutação são equipamentos especializados que conectam
três ou mais linhas de transmissão. Quando os dados chegam a uma linha de entrada, o elemento de
comutação deve escolher uma linha de saída para encaminhá-los.
Nesse modelo os hosts em geral estão conectados a uma LAN em que há um roteador, embora
em alguns casos um host possa estar conectado diretamente a um roteador. O conjunto de linhas de
comunicação e roteadores (sem os hosts) forma a sub-rede.
Na maioria das WANs, a rede contém mais de uma linha de transmissão, todas conectadas a
um par de roteadores. Se dois roteadores que não compartilham uma linha de transmissão desejarem
se comunicar, eles só poderão fazê-lo indiretamente, através de outros roteadores.
1.3.4 Inter-Redes
Existem muitos padrões de rede em utilização e é comum que pessoas conectadas a redes
distintas precisem se comunicar. Para isso é preciso que se estabeleçam conexões entre redes, as
vezes incompatíveis, por meio de máquinas chamadas gateways. Um conjunto de redes
interconectadas é chamado inter-rede.
Uma forma comum de inter-rede é um conjunto de LANs conectadas por uma WAN.
A Internet é um exemplo de uma inter-rede.
1.4 Redes Sem Fio
Redes sem fio (wireless networks) podem ser divididas em três categorias principais:
Interconexão de sistemas.
LANs sem fio.
WANs sem fio.
A interconexão de sistemas significa interconectar os componentes de um computador
usando um rádio de alcance limitado. Algumas empresas se uniram para projetar uma rede sem fio
de alcance limitado, chamada Bluetooth, a fim de conectar componentes sem a utilização de fios. A
rede Bluetooth também permite a conexão de câmeras digitais, fones de ouvido, scanners e outros
dispositivos a um computador simplesmente trazendo-os para dentro do alcance da rede.
Normalmente as redes de interconexão de sistemas utilizam o paradigma de mestre-escravo,
onde o mestre informa aos escravos que endereços usar, quando eles podem transmitir, por quanto
tempo podem transmitir, que frequências podem usar e assim por diante.
As LANs sem fio são sistemas em que todo computador tem um modem de rádio e uma
antena por meio dos quais podem se comunicar com outros sistemas. Frequentemente existe uma
antena central que permite a comunicação das máquinas, porém se os sistemas estiverem próximos
o bastante, poderão se comunicar diretamente um com o outro em uma configuração não
hierárquica.
WANs sem fio são usadas em sistemas geograficamente distribuídos. A rede de rádio utilizada
para telefonia celular é um exemplo de sistema sem fio de baixa largura de banda. Além dessas
redes de baixa velocidade, existem também redes sem fio de alta largura de banda.
Redes de Computadores 1 9
1.5 Aplicações Básicas
Uma das aplicações básicas de uma rede local de computadores é simplesmente permitir o
compartilhamento de um periférico mais caro entre diversos microcomputadores.
Nesse caso a LAN conecta equipamentos usuários, ou seja, os microcomputadores que
funcionam como estações de trabalho e equipamentos servidores. Os servidores distinguem-se dos
demais equipamentos da rede por disporem de hardware e/ou software específicos.
1.5.1 Servidor de Arquivos
O servidor de arquivos tem como tarefa oferecer aos hosts conectados à rede um serviço de
armazenamento de informações e compartilhamento de discos. As atribuições do servidor de
arquivos incluem:
gerenciar um sistema de arquivos que possa ser utilizado pelo usuário em substituição ou
adição ao sistema de arquivos existente em sua própria máquina;
garantir a integridade dos dados, detectando e implementando uma política de proteção em
casos de falha do sistema ou de acessos concorrentes;
implementar uma política de proteção contra acesso não autorizado que impeça a ação de
usuários maliciosos.
Um outro objetivo do servidor de arquivos é que ele atenda simultaneamente requisitos de
gerência de arquivos de diferentes sistemas operacionais.
O acesso do usuário ao servidor de arquivos pode ser implementado em três modos distintos:
O sistema operacional da máquina usuária é alterado de modo que o servidor de arquivos
seja visto como uma extensão do seu próprio sistema de arquivos, sendo totalmente
transparente para o usuário final.
Através de utilitários que acessam arquivos residentes no servidor, tendo o usuário
conhecimento da existência do servidor mas não dos detalhes da sua utilização.
O usuário final usa o servidor através de primitivas para solicitar serviços como: abrir
arquivo, fechar arquivo, ler registro, etc. Nesse nível o usuário precisa conhecer as
primitivas, embora não precise conhecer os detalhes das regras de comunicação entre a
máquina usuária e o servidor.
1.5.2 Servidor de Impressão
Tem como finalidade oferecer aos computadores conectados à rede um serviço de impressão.
Desse modo, uma impressora pode ser compartilhada entre vários usuários.
A forma mais simples de implementação do servidor de impressão é baseada na pré-alocação
da impressora. Um computador que deseja utilizar a impressora envia uma mensagem ao servidor
solicitando que a impressora lhe seja alocada. Se a impressora estiver livre o servidor de impressão
responde, informando que ela pode ser utilizada e bloqueará seu uso a outros computadores.
Uma maneira mais eficiente de implementar o servidor de impressão é utilizar a técnica de
spooling. Nesse caso o computador simplesmente envia o texto que deseja imprimir ao servidor de
impressão que o armazenará até que a impressora esteja disponível e o texto possa ser impresso.
Um terceiro modo de implementar o servidor de impressão é manter os arquivos de spooling
no servidor de arquivos e apenas indicar esse fato ao servidor de impressão, que se encarregará de
ler o arquivo e providenciar sua impressão.
Redes de Computadores 1 10
1.5.3 Compartilhamento de Software
Atualmente um dos fatores que mais pesa na manutenção de um sistema computacional é a
atualização periódica das licenças de software.
Com uma rede de computadores pode-se adquirir um número menor de licenças e instalá-las
em um servidor. Quando for necessário utilizar o software basta buscar a licença no servidor e
executá-lo. Desta forma será necessário adquirir somente o número estimado de licenças para uso
simultâneo, e não uma licença para cada computador.
1.5.4 Correio Eletrônico
A ideia do correio eletrônico é permitir que os usuários se comuniquem uns com os outros,
utilizando a rede como meio de transmissão. Sua implementação consiste basicamente em associar
a cada usuário o endereço de uma caixa postal onde são depositadas as mensagens que lhe forem
enviadas.
1.5.5 Servidor de Banco de Dados
Um servidor de banco de dados permite o compartilhamento das informações de uma
organização de forma centralizada e eficiente, evitando a duplicidade e até mesmo a inconsistência
que poderia acontecer caso as informações fossem armazenadas de forma distribuída.
Sua principal diferença para um servidor de arquivos é que ele é capaz de processar consultas
complexas sobre dados, trafegando pela rede somente as informações que interessam. Isto leva a
uma grande diminuição do tráfego total na rede.
1.5.6 Gerenciamento Eletrônico de Documentos (GED)
É uma tecnologia que provê um meio de facilmente gerar, controlar, armazenar, compartilhar
e recuperar informações existentes em documentos. Os sistemas GED permitem aos usuários
acessar os documentos de forma ágil e segura, normalmente via navegador Web por meio de uma
intranet. Documentos formam a grande massa de conhecimentos de uma empresa. O GED permite
preservar esse patrimônio e organizar eletronicamente a documentação para assegurar a informação
necessária, na hora exata, para a pessoa certa.
1.6 Exercícios
1) O que diferencia um sistema multiprocessado fortemente acoplado de um sistema de
processamento distribuído?
2) Cite uma vantagem e uma desvantagem de um sistema multiprocessado.
3) Qual a diferença entre uma rede de computadores e uma máquina com arquitetura distribuída?
4) Explique duas vantagens que as redes de computadores podem trazer para as empresas.
5) Explique duas vantagens que as redes de computadores podem trazer para as pessoas.
6) Explique como funciona o modelo cliente-servidor.
7) O que diferencia redes de difusão de redes ponto a ponto?
8) Defina:
Rede local
Rede metropolitana
Rede geograficamente distribuída
9) O que diferencia uma rede local sem fio de uma rede sem fio para interconexão de sistemas?
Redes de Computadores 1 11
10) Explique 2 aplicações para redes locais.
Redes de Computadores 1 12
2. Topologias
O sistema de comunicação constitui-se por um arranjo topológico interligando os vários
módulos processadores através de enlaces físicos (meio de transmissão) e de um conjunto de regras
(protocolos) a fim de organizar a comunicação.
O termo topologia refere-se ao lay-out físico e ao meio de conexão dos dispositivos da rede.
Qual arranjo topológico deve ser usado para uma rede em particular? O tipo da rede (LAN,
MAN ou WAN) irá influenciar na escolha.
2.1 Linhas de Comunicação
As ligações físicas em um sistema de comunicação podem ser de dois tipos: ponto a ponto ou
multiponto. As ligações ponto a ponto fornecem um link dedicado entre dois dispositivos e
caracterizam-se pela presença de apenas dois pontos de comunicação, um em cada extremidade do
enlace. Nas ligações multiponto observa-se a presença de três ou mais dispositivos de comunicação
com possibilidade de utilização do mesmo enlace.
A forma de utilização do meio físico que conecta os hosts dá origem à seguinte classificação
sobre a comunicação no enlace:
Simplex: O enlace pode ser utilizado somente em um dos sentidos de transmissão, assim
um dispositivo pode apenas transmitir e o outro pode apenas receber.
Half-duplex: O enlace pode ser utilizado nos dois sentidos de transmissão, mas somente em
um sentido por vez. Quando um dispositivo transmite o outro pode apenas receber, e
vice-versa.
Full-duplex: O enlace pode ser utilizado nos dois sentidos de transmissão simultaneamente,
ou seja, os dispositivos podem transmitir e receber ao mesmo tempo.
Enlaces como os classificados anteriormente serão utilizados pelas diferentes topologias, que
irão variar de acordo com o tipo de rede utilizada.
2.2 Redes Geograficamente Distribuídas
As redes geograficamente distribuídas caracterizam-se por apresentar enlaces com ligações
ponto a ponto.
2.2.1 Topologia Totalmente Ligada
Uma primeira tentativa para a conexão de computadores em rede seria em uma topologia
totalmente ligada. Nessa topologia, todas as estações são interligadas duas a duas através de um
caminho físico dedicado com comunicação full-duplex.
Embora essa topologia apresente maior grau de paralelismo de comunicação, ela é quase
sempre impraticável, principalmente em redes com grande número de estações e fisicamente
Ponto a ponto Multiponto
Simplex Half-duplex Full-duplex
Redes de Computadores 1 13
dispersas. Uma rede com N estações necessita de N(N-1)/2 enlaces, elevando o custo do sistema.
2.2.2 Topologia em Anel
Na topologia em anel procura-se diminuir ao máximo o número de ligações no sistema. Em
geral utilizam-se ligações ponto a ponto que operam num único sentido de transmissão (ligações
simplex) fazendo com que o anel apresente uma orientação. Uma mensagem deverá circular pelo
anel até que chegue ao seu destino, sendo passada de estação em estação.
Esta topologia representa ganho na economia dos enlaces, mas aumenta o número de estações
pela qual a mensagem tem que trafegar, o que pode ser drástico para uma WAN (alto retardo).
Outra restrição é que não tem caminhos alternativos, comprometendo a rede no caso de falha de
uma estação ou enlace.
Nesta topologia, a estação que coloca a mensagem no anel é quem tem a função de retirá-la.
2.2.3 Topologia Parcialmente Ligada
Considerando as limitações de velocidade e confiabilidade é necessária a introdução de
caminhos redundantes para um aumento tanto de confiabilidade quanto de desempenho através do
paralelismo de comunicações, sem, no entanto, recair na topologia totalmente ligada.
Obtém-se assim uma topologia intermediária denominada topologia parcialmente ligada,
também conhecida como topologia em grafo.
Nesta topologia nem todos os enlaces entre pares de estações existem diretamente, mas
existem caminhos alternativos entre duas estações quaisquer. No caso em que estações sem conexão
física direta desejem se comunicar, elas deverão encaminhar suas mensagens para alguma outra
estação que possa fazer a entrega da mensagem para a estação destino. Por causa da necessidade de
procurar estes caminhos alternativos é necessária a utilização de roteamento nesta topologia.
Topologia totalmente ligada
Topologia em anel
Topologia parcialmente ligada
Redes de Computadores 1 14
A comunicação entre dois hosts pode ser realizada por chaveamento de circuitos,
chaveamento de mensagens ou chaveamento de pacotes. Em sistemas por chaveamento de circuitos,
um canal entre a origem e o destino é estabelecido para uso exclusivo dessas estações até que a
conexão seja desfeita, de maneira idêntica a uma chamada telefônica. O chaveamento de mensagem
ou de pacote vai otimizar o uso dos meios de comunicação, evitando a monopolização de todo o
caminho durante uma conversação.
Em sistemas por chaveamento de mensagem, a mensagem é enviada por completo ao longo
do caminho. Em cada nó do caminho a mensagem é primeiro armazenada e depois passada à frente.
Nos sistemas por chaveamento de pacote a mensagem é quebrada em pacotes antes da transmissão
ser efetuada. A transmissão de cada pacote pode ser feita por um único caminho ou por caminhos
diferentes, sendo a mensagem reagrupada quando chega ao destino. Tanto na comutação de pacotes
quanto na comutação de mensagens não existe a alocação de um canal dedicado da origem ao
destino.
2.3 Redes Locais e Metropolitanas
Em redes locais e metropolitanas, meios de transmissão de alta velocidade e baixa taxa de
erros, baixo custo e privados podem ser usados. Topologias muitas vezes inviáveis em ambientes
geograficamente distribuídos podem ser utilizadas.
2.3.1 Topologia em Estrela
Na topologia em estrela cada nó é interligado a um nó central (mestre), através do qual todas
as mensagens devem passar. Tal nó age como centro de controle da rede, interligando os demais nós
(escravos). Podem haver comunicações simultâneas, desde que as estações envolvidas sejam
diferentes.
O nó central tem a função de gerenciamento das comunicações e é denominado de comutador
ou switch.
Redes em estrela podem atuar por difusão (broadcasting) ou não. Em redes por difusão todas
as informações são enviadas ao nó central, que é o responsável por distribuí-las a todos os nós da
rede. Em redes que não operam por difusão, um nó pode apenas se comunicar com outro nó de cada
vez, sempre sob controle do nó central.
Confiabilidade é um problema nas redes em estrela. Falhas no nó central podem ocasionar a
parada total do sistema. Redundâncias podem ser acrescentadas para diminuir o risco da ocorrência
de problemas com o nó central.
Outro problema da rede em estrela é relativo à modularidade. A configuração pode ser
expandida até o limite imposto pelo nó central.
O desempenho da rede é medido pela capacidade da estação central de chavear as mensagens.
2.3.2 Topologia em Anel
Por motivos de confiabilidade o anel não interliga os hosts diretamente, mas consiste em uma
Topologia em estrela
Redes de Computadores 1 15
série de repetidores ligados por um meio físico sendo cada host ligado a esses repetidores.
Redes em anel são, teoricamente, capazes de transmitir e receber dados em qualquer direção.
Porém as configurações mais usuais são unidirecionais de forma a simplificar o projeto dos
repetidores.
Os repetidores são em geral projetados de forma a transmitir e receber dados
simultaneamente, diminuindo assim o retardo de transmissão.
Quando uma mensagem é enviada por um nó, ela entra no anel e circula até ser retirada pelo
nó de destino, ou então até voltar ao nó de origem, dependendo do protocolo empregado. Nas redes
onde a mensagem é retirada pelo nó de origem é possível a utilização de mensagens de difusão.
A topologia em anel requer que cada nó seja capaz de remover seletivamente mensagens da
rede ou passá-las à frente para o próximo nó. Isto requer um repetidor ativo em cada nó. Uma
quebra em qualquer dos enlaces entre os repetidores vai parar toda a rede até que o problema seja
isolado e um novo cabo instalado. Falhas no repetidor ativo também podem causar a parada total do
sistema.
Uma solução parcial para o problema de falha no repetidor consta em prover cada um deles de
um relé que pode removê-lo mecanicamente da rede em caso de falha. Essa remoção pode ser
impossível se os repetidores imediatamente posterior e anterior ao repetidor com falha estiverem a
uma distância maior do que o limite exigido pelo meio de transmissão para a interconexão de dois
nós devido ao problema da atenuação.
Outras melhorias na topologia em anel foram propostas, como a introdução de caminhos
alternativos, duplos anéis, etc. Na prática a topologia pode ser feita suficientemente confiável de
forma que a possibilidade de falhas possa ser praticamente ignorada.
Topologia em anel
Estação forado anel
Anel de backup
Anel principal
TCU
Redes de Computadores 1 16
2.3.3 Topologia em Barra
Na topologia em barra comum todos os hosts se ligam ao mesmo meio de transmissão. Ao
contrário das outras topologias discutidas até aqui, a topologia em barra tem uma configuração
multiponto.
Nas redes em barra comum cada host conectado à barra pode ouvir todas as informações
transmitidas. Esta característica facilita as aplicações com mensagens do tipo difusão.
Existe uma variedade de mecanismos para o controle de acesso à barra, que pode ser
centralizado ou descentralizado. Em um controle centralizado, o direito de acesso é determinado por
uma estação especial da rede. Em um ambiente de controle descentralizado, a responsabilidade de
acesso é distribuída entre todos os hosts.
Ao contrário da topologia em anel, as topologias em barra podem empregar interfaces
passivas, nas quais as falhas não causam a parada total do sistema.
A ligação ao meio de transmissão é um ponto crítico no projeto de uma rede local em barra
comum. A ligação deve ser feita de forma a alterar o mínimo possível as características elétricas do
meio. O meio, por sua vez, deve terminar em seus dois extremos por uma carga igual a sua
impedância característica, de forma a evitar reflexões que interfiram no sinal transmitido.
A ligação das estações ao meio de comunicação é realizada através de um transceptor
(transmissor/receptor), que tem como funções básicas transmitir e receber sinais, bem como
reconhecer a presença destes sinais no meio.
O poder de crescimento, tanto no que diz respeito à distância máxima entre dois hosts da rede
quanto ao número de nós que a rede pode suportar vai depender do meio de transmissão utilizado,
da taxa de transmissão e da quantidade das ligações ao meio. Conforme se queira chegar a
distâncias maiores, repetidores serão necessários para assegurar a qualidade do sinal.
Assim como em redes em anel, a utilização de concentradores (hubs) irá facilitar a localização
e o isolamento de falhas, bem como permitir a inserção de novas estações na barra sem a parada do
sistema.
Deve-se ressaltar que com a utilização de hubs haverá uma diferença no que diz respeito às
topologias lógica e física. Com hubs a topologia lógica da rede continua a ser a topologia em barra,
porém a topologia física passa a ser uma topologia em estrela.
Hubs podem ser interconectados como forma de expansão do tamanho da rede.
2.4 Exercícios
1) Desenhe uma topologia com ligações ponto a ponto e uma topologia com ligações multiponto.
2) Quanto à forma de utilização do meio físico, defina:
Comunicação simplex
Comunicação half-duplex
Comunicação full-duplex
Topologia em barra
Topologia em barra com utilização de hub
Redes de Computadores 1 17
3) Qual o problema que impede a utilização da topologia totalmente ligada em grandes redes?
4) Que problema pode ocorrer com a topologia em anel?
5) Explique uma técnica que pode ser utilizada para aumentar a confiabilidade de redes em anel.
6) Qual a melhor topologia a ser utilizada para redes geograficamente distribuídas? Explique.
7) O que diferencia uma topologia em estrela de uma topologia em barra?
8) Explique o problema que pode ocorrer na topologia em estrela.
9) Quando se faz uso de concentradores em redes com topologia em barra passa-se a diferenciar
topologia física de topologia lógica. Explique.
Redes de Computadores 1 18
3. Protocolos de Comunicação
3.1 Software de Rede
Nas primeiras redes de computadores, o hardware foi colocado como prioridade e o software,
em segundo plano. Atualmente, o software da rede está altamente estruturado.
Neste tópico será estudada a técnica de estruturação dos softwares.
3.1.1 Hierarquias de Protocolo
Para reduzir a complexidade do projeto, a maioria das redes foi organizada como uma série de
camadas ou níveis, que são colocados um em cima do outro. O objetivo de cada camada é oferecer
determinados serviços para as camadas superiores, ocultando detalhes da implementação desses
serviços.
A camada n de uma máquina se comunica com a camada n da outra máquina. As regras
usadas nesse diálogo são chamadas de protocolo da camada n. Basicamente, um protocolo é um
conjunto de regras sobre o modo como se dará a comunicação entre as partes envolvidas.
A figura acima mostra uma rede com camadas. As entidades que ocupam as mesmas camadas
em diferentes máquinas são chamadas de pares (peers). São os pares que se comunicam usando o
protocolo.
Os dados não são diretamente transferidos da camada n de uma máquina para a camada n da
outra. Cada camada transfere os dados e as informações de controle para a camada imediatamente
abaixo dela, até a última camada ser alcançada. Abaixo da camada 1 está o meio físico, através do
qual se dá a comunicação propriamente dita.
Uma das considerações mais importantes é a definição clara das interfaces entre as camadas.
É preciso que cada camada execute um conjunto de funções bem definido. Isto reduz o volume de
informações a ser passado de uma camada para outra e simplifica a substituição de uma camada por
uma implementação diferente.
Um conjunto de camadas de protocolos é chamado de arquitetura de rede. A especificação de
uma arquitetura deve conter informações suficientes para permitir que um implementador
desenvolva o software ou construa o hardware de cada camada de modo que ele transmita
corretamente o protocolo adequado. Não há, no entanto, a necessidade de que as interfaces de todas
Host 2Host 1
Camada 4
Camada 3
Camada 2
Camada 1
Protocolo da camada 4Camada 4
Camada 3
Camada 2
Camada 1
Protocolo da camada 3
Protocolo da camada 2
Protocolo da camada 1
Meio Físico
Interface entre as camadas 3 e 4
Interface entre as camadas 2 e 3
Interface entre as camadas 1 e 2
Redes de Computadores 1 19
as máquinas de uma rede sejam iguais, desde que cada uma delas possa usar todos os protocolos.
Uma lista de protocolos usados por um determinado sistema é chamado de pilha de protocolos.
Usando como exemplo uma rede com 5 camadas, uma mensagem M produzida por uma
aplicação executando na camada 5 é transmitida para a camada 4. A camada 4 coloca um cabeçalho
na frente da mensagem para identificá-la e envia o resultado à camada 3. O cabeçalho inclui
informações de controle, como números de sequência para permitir que a camada 4 da máquina de
destino repasse as mensagens na ordem correta, para o caso das camadas inferiores não
conseguirem manter a sequencia.
Algumas camadas não impõem limite ao tamanho da mensagem transmitida, enquanto outras
impõem. Assim, as camadas que limitam o tamanho da mensagem que elas podem enviar devem
dividir as mensagens em unidades menores, chamadas pacotes, anexando um cabeçalho de sua
camada a cada pacote.
A camada 3 divide então as mensagens e transmite os pacotes à camada 2. A camada 2
adiciona, além de um cabeçalho, um fecho (trailer), e envia a unidade resultante à camada 1, para
que ela possa ser transmitida fisicamente. Na máquina receptora, a mensagem será movida para
cima de camada em camada, com os cabeçalhos sendo excluídos durante o processo.
3.1.2 Interfaces e Serviços
Os elementos ativos em cada camada são chamados de entidades. Uma entidade pode ser uma
entidade de software (como um processo) ou uma entidade de hardware. As entidades da mesma
camada contidas em máquinas diferentes são chamadas de entidades pares (peer entity). As
entidades da camada n implementam um serviço usado pela camada n+1. Nesse caso, a camada n é
chamada provedora de serviços e a camada n+1 é chamada de usuária do serviço. A camada n
pode usar os serviços da camada n-1 para oferecer seu serviço. Ela pode, ainda, oferecer diversas
classes diferentes de serviços.
Os serviços estão disponíveis em SAPs (Service Access Points – Pontos de Acesso ao
Serviço). Os SAPs da camada n são os locais onde a camada n+1 pode acessar os serviços
oferecidos. Cada SAP tem um endereço exclusivo que o identifica.
3.1.3 Serviços Orientados à Conexão e Serviços sem Conexão
As camadas podem oferecer dois tipos de serviço diferentes para as camadas superiores:
serviços orientados à conexão e serviços sem conexão.
No serviço orientado à conexão o usuário do serviço antes estabelece uma conexão, usa a
conexão e, em seguida, libera a conexão. Uma conexão funciona como um duto entre duas
aplicações, onde o emissor coloca os dados em uma extremidade do duto e o receptor recebe estes
dados na outra extremidade.
Camada 5
MH4
M
M1H4H3 M2H3
M1H4H3H2 T M2H3H2 T
Camada 4
Camada 3
Camada 2
MH4
M
M1H4H3 M2H3
M1H4H3H2 T M2H3H2 T
Camada 1
Protocolo da camada 5
Protocolo da camada 4
Protocolo da camada 3
Protocolo da camada 2
Redes de Computadores 1 20
No serviço sem conexão cada mensagem carrega o endereço destino. Cada mensagem pode
percorrer um caminho diferente das demais, ocasionando a possibilidade de uma mensagem enviada
em determinado momento chegar depois de uma mensagem enviada depois dela.
Alguns serviços são confiáveis no sentido de que os dados jamais serão perdidos. Geralmente
um serviço confiável é implementado por meio da confirmação das mensagens que chegam ao
receptor. O processo de confirmação introduz overhead e retardos, fazendo com que ele nem
sempre seja desejável.
Uma situação típica em que um serviço orientado à conexão confiável é apropriado é a
transferência de arquivos, enquanto uma situação em que é o retardo introduzido pode ser pior do
que a confiabilidade é o tráfego de voz.
O serviço orientado à conexão confiável tem duas pequenas variações: fluxo de mensagem e
fluxo de bytes. No fluxo de mensagens os limites da mensagem são preservados. Quando duas
mensagens são enviadas, elas chegam como duas mensagens distintas. No fluxo de bytes a conexão
não preserva os limites da mensagem.
Nem todas as aplicações necessitam de conexão. Tudo o que é necessário é enviar uma
mensagem cuja probabilidade de chegada seja bastante alta, sem que haja uma garantia de entrega.
O serviço sem conexão não confiável (sem confirmação) é conhecido como serviço de datagrama.
Em algumas situações é conveniente ter confiabilidade em um serviço sem conexão. O
serviço de datagrama com confirmação pode ser oferecido para essas aplicações.
3.1.4 Primitivas de Serviço
Um serviço é um conjunto de primitivas (operações) disponíveis para que uma entidade possa
acessá-lo. Uma primitiva indica a execução de alguma ação ou a geração de um relatório sobre uma
ação executada por uma entidade par.
As primitivas podem ser divididas em quatro classes:
Primitiva Significado
Request Uma entidade solicita uma ação a outra
Indication Uma entidade é informada sobre um evento
Response Uma entidade responde a um evento
Confirm Resposta a uma solicitação anterior da entidade
Para estabelecer uma conexão ente uma máquina A e uma máquina B, por exemplo, uma
entidade na máquina A emite uma primitiva CONNECT.request, que faz com que um pacote seja
enviado à máquina B, que por sua vez recebe uma primitiva CONNECT.indication anunciando o
pedido de conexão. A máquina B responde ao pedido pela primitiva CONNECT.response, que
chega à máquina A como a primitiva CONNECT.confirm.
No serviços com confirmação as quatro primitivas são utilizadas, enquanto nos serviços sem
confirmação apenas as duas primeiras primitivas são utilizadas.
CO
NN
ECT.req
uest
CO
NN
ECT.co
nfirm
CO
NN
ECT.in
dicatio
n
CO
NN
ECT.resp
on
se
1 4 1 4
Sistema A Sistema B
Redes de Computadores 1 21
3.2 Modelos de referência
Nesta seção serão analisadas duas importantes arquiteturas de rede: o modelo de referência
OSI e o modelo TCP/IP.
3.2.1 O Modelo de Referência OSI
O RM-OSI (Reference Model for Open Systems Interconnection – Modelo de Referência para
Interconexão de Sistemas Abertos) é mostrado na figura abaixo. Ele é um modelo de 7 camadas
baseado em uma proposta desenvolvida pela ISO (International Organization for Standardization)
como um primeiro passo na direção da padronização internacional dos protocolos usados nas
diversas camadas. O modelo OSI trata da interconexão de sistemas abertos, ou seja, sistemas que
estão abertos à comunicação com outros sistemas.
O modelo OSI em si não é uma arquitetura de rede, pois não especifica os serviços e os
protocolos que devem ser usados em cada camada. Ele apenas informa o que cada camada deve
fazer. No entanto, a ISO criou padrões para todas as camadas, embora eles não pertençam ao
modelo de referência propriamente dito.
3.2.1.1 Camada Física
A camada física trata da transmissão bruta de bits através de um canal de comunicação, sem
se preocupar com o seu significado. O projeto da rede deve garantir que, quando um lado envia um
bit, o outro lado o receba corretamente. As questões mais comuns são a quantidade de volts a ser
usada para representar um bit 1 e um bit 0, a quantidade de tempo que um bit deve durar, o fato de a
transmissão poder ser ou não realizada nas duas direções, a forma como a conexão inicial será
estabelecida e de que maneira ela será encerrada, a quantidade de pinos que o conector da rede
precisará e de que maneira eles serão utilizados, etc. As questões dizem respeito às interfaces
mecânicas, elétricas e procedurais e ao meio de transmissão físico, que fica abaixo da camada física.
3.2.1.2 Camada de Enlace de Dados
A principal tarefa da camada de enlace de dados é transformar um canal de transmissão de
bits de dados bruto em uma linha que pareça livre dos erros de transmissão não detectados na
camada de rede. Para tal, a camada de enlace de dados divide os dados de entrada em quadros de
dados (que em geral têm algumas centenas ou milhares de bytes), transmite-os sequencialmente e
processa os quadros de reconhecimento transmitidos pelo receptor.
Cabe à camada de enlace de dados criar e reconhecer os limites do quadro. Para o
reconhecimento dos limites podem ser utilizados quatro métodos.
Contagem de caracteres: o cabeçalho informa o tamanho do quadro.
Aplicação
Apresentação
Sessão
Transporte
Rede
Enlace de dados
Física
Camada 7
Camada 6
Camada 5
Camada 4
Camada 3
Camada 2
Camada 1
Rede
Enlace de dados
Física
Rede
Enlace de dados
Física
Aplicação
Apresentação
Sessão
Transporte
Rede
Enlace de dados
Física
Redes de Computadores 1 22
Caracteres delimitadores e transparência de caracteres: caracteres especiais são utilizados
para indicar o início e o fim do quadro. Para evitar confusão de aparecerem delimitadores
nos dados são inseridos caracteres especiais.
Sequências especiais de bits: são utilizados flags para delimitar os quadros. Para evitar
sequência igual nos dados é criado o bit stuffing.
Violação de código: utilizado em redes onde a codificação dos bits traz redundâncias como,
por exemplo, Manchester, que determina o bit pela direção da transição no meio do período
do relógio.
Ruídos na linha podem destruir completamente um quadro. Nesse caso, a camada de enlace
de dados da máquina de origem deverá retransmitir o quadro. No entanto, várias transmissões do
mesmo quadro criam a possibilidade de existirem quadros repetidos, especialmente no caso de um
quadro de reconhecimento enviado pelo receptor ao transmissor ser perdido. Cabe à camada de
enlace de dados resolver os problemas causados pelos quadros repetidos, perdidos e danificados.
Ela pode, ainda, oferecer diferentes classes de serviço para a camada de rede.
Outra função da camada de enlace de dados é implementar algum mecanismo de controle de
fluxo para impedir que um transmissor rápido seja dominado por um receptor lento.
Nas redes de difusão a camada de enlace de dados precisa ainda controlar o acesso ao canal
compartilhado. Esse problema é resolvido por uma subcamada especial denominada subcamada de
acesso ao meio.
3.2.1.3 Camada de Rede
A camada de rede controla como os pacotes são roteados da origem para o destino. As rotas
podem se basear em tabelas estáticas que raramente são alteradas, podem ser determinadas no início
de cada conversação ou podem ser altamente dinâmicas, sendo determinadas para cada pacote a fim
de refletir a situação atual da rede.
Se houver muitos pacotes na sub-rede eles utilizarão o mesmo caminho, provocando
engarrafamentos. O controle de congestionamento pertence à camada de rede.
A camada de rede também é responsável pelo endereçamento das máquinas.
Em redes que trabalham com unidades de dados de diferentes tamanhos no nível de enlace de
dados pode ser necessário realizar a fragmentação e a remontagem dos pacotes. A camada de rede é
a responsável por esta tarefa.
A camada de rede pode interligar redes com diferentes protocolos de enlace de dados.
3.2.1.4 Camada de Transporte
A função básica da camada de transporte é aceitar dados da camada superior, dividi-los em
unidades menores (caso seja necessário), passá-los para a camada de rede e garantir que todas as
unidades cheguem corretamente à outra extremidade. Ela deve isolar os níveis superiores de erros
como chegada fora de ordem dos pacotes ou até mesmo a perda ou a duplicação de um pacote.
A camada de transporte determina o tipo de serviço que será oferecido à camada acima. O
tipo de conexão de transporte mais comum é o canal ponto a ponto sem erros, que libera mensagens
ou bytes na ordem em que eles são enviados. Outros tipos possíveis de serviço de transporte são as
mensagens isoladas sem garantia em relação à ordem de entrega e à difusão de mensagens para
muitos destinos. O tipo de serviço é determinado quando a conexão é estabelecida.
A camada de transporte é uma camada fim a fim, que liga a origem ao destino. Nas camadas
inferiores os protocolos são trocados entre máquinas vizinhas.
Muitos hosts são multiprogramados, possuindo várias conexões com outros hosts. Desta
Redes de Computadores 1 23
forma, é preciso criar algum mecanismo que determine a qual conexão uma mensagem pertence. A
multiplexação de várias conexões deve ser feita de forma transparente pela camada de transporte
para as camadas superiores.
Além da multiplexação, a camada de transporte pode realizar também o splitting, que é o
aumento da vazão distribuindo uma conexão de transporte por várias conexões de rede
simultaneamente.
Também cabe à camada de transporte estabelecer e encerrar conexões.
3.2.1.5 Camada de Sessão
A camada de sessão permite que os usuários de diferentes máquinas estabeleçam sessões entre
eles. As sessões têm por finalidade manter a funcionalidade das aplicações do host mesmo que
hajam problemas nas camadas inferiores. Uma sessão pode, por exemplo, ser usada para permitir
que um usuário estabeleça um login com um sistema remoto ou transfira um arquivo entre dois
hosts e não seja necessário refazer o login ou reiniciar a transferência por causa de uma eventual
queda de conexão.
Um dos serviços de sessão é o gerenciamento de token. Para alguns protocolos, é necessário
que ambos os lados não executem a mesma operação ao mesmo tempo. A camada de sessão oferece
tokens para serem trocados, fazendo com que determinadas operações só possam ser executadas
pelo lado que está mantendo o token.
Outro serviço que a camada de sessão oferece é a sincronização. São inseridos pontos de
sincronização no fluxo de dados de forma que se a conexão for perdida não seja necessário
retransmitir todos os dados novamente, mas apenas aqueles enviados após o último ponto de
sincronização.
3.2.1.6 Camada de Apresentação
A camada de apresentação executa determinadas funções solicitadas com muita frequência,
oferecendo uma solução geral para todas elas em vez de deixar tal responsabilidade a cargo de cada
usuário. Ao contrário das camadas inferiores, que estão interessadas em tornar confiável o processo
de movimentação de bits de uma extremidade a outra, a camada de apresentação se preocupa com a
sintaxe e a semântica das informações transmitidas.
Um exemplo típico de um serviço da camada de apresentação é a codificação de dados
conforme o padrão estabelecido. Hosts têm diferentes códigos para representar strings e valores
numéricos. Para permitir que hosts com diferentes representações se comuniquem, as estruturas de
dados trocadas podem ser definidas de uma forma abstrata, juntamente com a codificação padrão a
ser usada durante a conexão. A camada de apresentação gerencia essas estruturas de dados abstratas
e converte a representação utilizada pelo host para a representação padrão da rede, e vice-versa.
Outros exemplos de serviços que podem ser oferecidos pela camada de apresentação são a
criptografia e a compressão de dados.
3.2.1.7 Camada de Aplicação
É a camada que oferece aos usuários acesso à pilha de protocolos OSI. Ela contém uma série
de protocolos necessários ao funcionamento de uma rede como, por exemplo, terminais virtuais,
transferência de arquivos, correio eletrônico, etc.
É na camada de aplicação que são executados os processos dos usuários.
3.2.1.8 Transmissão de Dados no Modelo OSI
A figura abaixo mostra como os dados podem ser transmitidos através do modelo OSI. Um
processo que deseja enviar dados para um receptor passa os dados para a camada de aplicação que,
Redes de Computadores 1 24
em seguida, anexa o cabeçalho da aplicação e transmite o item resultante para a camada de
apresentação.
A camada de apresentação inclui um cabeçalho ao item a ser enviado e passa o resultado para
a camada de sessão. A camada de apresentação não identifica qual trecho dos dados transmitidos a
ela é o cabeçalho da camada de aplicação e quais são os verdadeiros dados do usuário.
O processo é repetido até os dados alcançarem a camada física, onde eles são realmente
transmitidos para o host de recepção. Na recepção, os diversos cabeçalhos são excluídos um a um
conforme a mensagem se propaga pelas camadas.
Embora a transmissão de dados propriamente dita seja vertical, cada camada é programada
como se fosse horizontal. Quando a camada de transporte do transmissor, por exemplo, obtém uma
mensagem da camada de sessão, ela anexa um cabeçalho de transporte e a envia à camada de
transporte do receptor.
3.2.2 O Modelo de Referência TCP/IP
A ARPANET, antecessora da Internet, foi uma rede de pesquisa criada pelo Departamento de
Defesa dos Estados Unidos. Aos poucos universidades e repartições públicas foram sendo
conectadas a ela. Quando foram criadas as redes de rádio e satélite, começaram a surgir problemas
com os protocolos existentes, forçando a criação de uma nova arquitetura de referência com o
objetivo de conectar várias redes ao mesmo tempo. Essa arquitetura veio a ficar conhecida como
Modelo de Referência TCP/IP, graças a seus dois principais protocolos.
Diante da preocupação do Pentágono de que seus hosts e roteadores fossem destruídos de uma
hora para outra, definiu-se também que a rede deveria ser capaz de sobreviver à perda de hardwares
da sub-rede, impedindo que as conversas que estivessem ocorrendo fossem interrompidas. Em
outras palavras, o Pentágono queria que as conexões permanecessem intactas enquanto as máquinas
de origem e de destino estivessem funcionando, mesmo que algumas máquinas ou linhas de
transmissão intermediárias deixassem de operar repentinamente.
Protocolo deaplicação
Protocolo deapresentação
Protocolo desessão
Protocolo detransporte
Protocolo derede
Protocolo deenlace de dados
ReceptorTransmissor
DadosA
DadosP
DadosS
DadosT
DadosN
DadosD D
Bits
Dados
Aplicação
Apresentação
Sessão
Transporte
Rede
Enlace de dados
Física
Aplicação
Apresentação
Sessão
Transporte
Rede
Enlace de dados
Física
Caminho de transmissão de dados no modelo OSI
Redes de Computadores 1 25
3.2.2.1 A Camada Inter-redes
A camada inter-redes é a camada que integra toda a arquitetura. Sua tarefa é permitir que os
hosts injetem pacotes em qualquer rede e garantir que eles sejam transmitidos independentemente
do destino (que pode ser outra rede).
A camada inter-redes define um formato de pacote oficial e um protocolo chamado IP
(Internet Protocol). A tarefa da camada inter-redes é entregar pacotes IP onde eles são necessários.
O roteamento é uma questão de grande importância nessa camada, assim como evitar
congestionamentos.
A função da camada inter-redes do modelo TCP/IP é a mesma da camada de rede do modelo
OSI.
3.2.2.2 A Camada de Transporte
A finalidade da camada de transporte é permitir que as entidades pares (peer entity) dos hosts
de origem e de destino mantenham uma conversação exatamente como acontece na camada de
transporte do modelo OSI. Dois protocolos fim a fim foram definidos. O primeiro deles, o TCP
(Transmission Control Protocol), é um protocolo orientado à conexão confiável que permite a
entrega sem erros de um fluxo de bytes originado de um determinado host para qualquer host da
inter-rede. Esse protocolo fragmenta o fluxo de bytes de entrada em mensagens e passa cada uma
delas para a camada inter-redes. No destino, o processo TCP remonta as mensagens recebidas. O
TCP cuida também do controle de fluxo, impedindo que um transmissor rápido sobrecarregue um
receptor lento com um volume de mensagens muito grande.
O segundo protocolo dessa camada é o UDP (User Datagram Protocol), um protocolo sem
conexão, não confiável, para aplicações que não necessitam nem de controle de fluxo, nem da
manutenção da sequência das mensagens enviadas. É amplamente utilizado em aplicações em que a
entrega imediata é mais importante do que a entrega precisa.
3.2.2.3 A Camada de Aplicação
O modelo TCP/IP não tem as camadas de sessão e de apresentação. Acima da camada de
transporte está a camada de aplicação.
A camada de aplicação contém os protocolos de alto nível. Dentre eles estão o protocolo de
terminal virtual (Telnet), o protocolo de transferência de arquivos (FTP) e o protocolo de correio
eletrônico (SMTP). Muitos outros protocolos foram incluídos com o decorrer dos anos, como o
DNS (Domain Name Service), que mapeia os nomes de host para seus respectivos endereços de
rede, o NNTP, protocolo usado para mover artigos de notícias, e o HTTP, protocolo usado para
buscar páginas na WWW (World Wide Web), entre outros.
3.2.2.4 A Camada Host/Rede
Abaixo da camada inter-redes nada é definido, exceto pelo fato de que o host tem de se
OSI
Aplicação
Apresentação
Sessão
Transporte
Rede
Enlace de dados
Física
TCP/IP
Aplicação
Transporte
Inter-redes
Host / Rede
Não está presenteno modelo
Redes de Computadores 1 26
conectar com a rede utilizando um protocolo para que seja possível enviar pacotes IP. Esse
protocolo não é definido e varia de host para host e de rede para rede.
3.2.3 Comparação entre os Modelos de Referência OSI e TCP/IP
Os modelos de referência OSI e TCP/IP têm muito em comum. Os dois se baseiam no
conceito de uma pilha de protocolos independentes e as camadas têm praticamente as mesmas
funções. Em ambos são oferecidos aos processos que desejam se comunicar um serviço de
transporte fim a fim independente do tipo de rede que está sendo usado.
O modelo OSI tem três conceitos fundamentais:
Serviços
Interfaces
Protocolos
Cada camada executa alguns serviços para a camada acima dela. A definição do serviço
informa o que a camada faz e não a forma como as entidades acima dela o acessam ou como a
camada funciona.
A interface de uma camada informa como os processos acima dela podem acessá-la. A
interface especifica quais são os parâmetros e resultados a serem esperados. Ela também não revela
o funcionamento interno da camada.
Os protocolos utilizados em uma camada são de responsabilidade dessa camada. A camada
pode usar os protocolos que quiser, desde que eles viabilizem a realização do trabalho. Ela também
pode alterar esses protocolos sem influenciar o software das camadas superiores.
Originalmente, o modelo TCP/IP não distinguiu com clareza a diferença entre serviço,
interface e protocolo, embora as pessoas tenham tentado adaptá-lo ao modelo OSI. Por essa razão,
os protocolos do modelo OSI são mais bem encapsulados do que no modelo TCP/IP e podem ser
substituídos com relativa facilidade.
O modelo de referência OSI foi concebido antes de os protocolos terem sido inventados.
Consequentemente, o modelo não foi criado com base em um determinado conjunto de protocolos,
o que o deixou bastante flexível. No entanto, há o inconveniente de os projetistas não terem
experiência com o assunto e não terem muita noção sobre a funcionalidade que deveria ter sido
colocado em cada camada.
Com o TCP/IP, aconteceu exatamente o contrário. Como os protocolos vieram primeiro, o
modelo foi criado com base neles. Os protocolos não tiveram problemas para se adaptarem ao
modelo. O único problema foi que o modelo não se adaptava às outras pilhas de protocolos. Assim
ele não era de muita utilidade quando havia necessidade de se descrever redes que não faziam uso
do protocolo TCP/IP.
Uma das maiores diferenças entre os dois modelos está no número de camadas. O modelo
OSI tem sete camadas e o TCP/IP quatro.
Outra diferença está na área da comunicação sem conexão e da comunicação orientada à
conexão. Na camada de rede o modelo OSI é compatível com a comunicação sem conexão e com a
comunicação orientada à conexão. No entanto, na camada de transporte, o modelo aceita apenas a
comunicação orientada à conexão. O modelo TCP/IP tem apenas um modo na camada de rede (sem
conexão), mas aceita ambos os modelos na camada de transporte, oferecendo aos usuários uma
opção de escolha. Essa escolha é especialmente importante para os protocolos simples de
solicitação/resposta.
Redes de Computadores 1 27
3.3 Exercícios
1) Por que o projeto de uma rede deve ser estruturado em camadas?
2) Como se dá a comunicação entre entidades pares, diretamente ou utilizando serviços de outras
camadas?
3) Por que se acrescentam cabeçalhos a cada camada que a mensagem passa?
4) O que é um SAP de uma camada?
5) Como se dá a transferência de dados em um serviço orientado à conexão?
6) Como se dá a transferência de dados em um serviço de datagrama?
7) Qual a diferença entre fluxo de mensagens e fluxo de bytes para um serviço orientado à
conexão?
8) Qual a diferença entre serviço com confirmação e serviço sem confirmação?
9) A que se propõem o RM-OSI?
10) Qual o principal objetivo da camada:
Física
Enlace de dados
Rede
Transporte
Sessão
Apresentação
Aplicação
11) Quais as diferenças entre os serviços oferecidos pelo TCP e pelo UDP?
Redes de Computadores 1 28
4. Camada de Rede
A camada de rede cuida da transferência de pacotes da origem para o destino. Para chegar ao
destino, pode ser necessário passar por vários roteadores intermediários ao longo do percurso,
contrastando com a camada de enlace de dados, que apenas move quadros de uma extremidade a
outra de um meio de transmissão.
A camada de rede é a camada mais baixa que lida com a transmissão fim a fim.
Para atingir seus objetivos, a camada de rede deve:
Conhecer a topologia da sub-rede de comunicações.
Ter o cuidado de escolher rotas que evitem sobrecarregar algumas das linhas de
comunicação e roteadores deixando outras ociosas.
Lidar com as diferenças da sub-rede e resolver os problemas que daí resultam.
4.1 Necessidade da Camada de Rede
Em uma grande rede existe a necessidade de trafegar pacotes por várias linhas. Para
solucionar este problema foi desenvolvida a camada de rede, ficando ela responsável por
encaminhar os pacotes pelos roteadores.
Na origem ela cria um pacote com dados provenientes da camada superior e acrescenta um
cabeçalho com informações de endereço origem e destino. Fica também responsável por consultar
suas tabelas de rotas para determinar por qual interface o pacote deve ser encaminhado e enviá-lo
por tal interface.
Nos hosts intermediários a camada de rede deve receber o pacote, consultar suas tabelas de
roteamento e enviar o pacote pela interface de rede apropriada.
No destino a camada de rede verifica o endereço do pacote e o entrega à camada superior.
4.2 Comutação de pacotes store-and-forward
Considerando a figura abaixo, os principais componentes de um sistema são roteadores da
concessionária de comunicações conectados por linhas de transmissão (mostrados na elipse
sombreada) e os equipamentos dos clientes (mostrado fora da elipse). O host H1 está diretamente
conectado a um dos roteadores da concessionária (roteador A) por uma linha dedicada. Já o host H2
está em uma LAN com um roteador F pertencente ao cliente e operado por ele. Esse roteador
também tem uma linha dedicada para o equipamento da concessionária.
Um host com um pacote a enviar o transmite para o roteador mais próximo, seja em sua
própria LAN ou não. O pacote é armazenado no roteador até chegar totalmente, de forma que possa
ser conferido. Em seguida ele é encaminhado para o próximo roteador ao longo do caminho até
alcançar o host de destino, onde é entregue. Esse mecanismo é conhecido como comutação de
pacotes store-and-forward.
A
B
E
D
C
FH1
H2
Redes de Computadores 1 29
4.3 Serviços Oferecidos à Camada de Transporte
A camada de rede oferece serviços à camada de transporte na interface entre a camada de rede
e a camada de transporte. Tais serviços foram projetados tendo em vista os seguintes objetivos:
Os serviços devem ser independentes da tecnologia de sub-rede.
A camada de transporte deve ser protegida contra a quantidade, o tipo e a topologia das
sub-redes presentes.
Os endereços de rede que se tornaram disponíveis para a camada de transporte devem usar
um plano de numeração uniforme, independente do tipo de rede.
Tendo definido esses objetivos, os projetistas da camada de rede têm liberdade para escrever
especificações detalhadas dos serviços a serem oferecidos à camada de transporte. A discussão se
concentra em oferecer um serviço orientado à conexão ou serviço sem conexão.
4.4 Organização Interna da Camada de Rede
Há basicamente duas formas para a organização da sub-rede, uma utilizando conexões e a
outra trabalhando sem conexão. Internamente a uma sub-rede, uma conexão costuma ser chamada
de circuito virtual, enquanto pacotes independentes sem conexão são chamados de datagramas.
A ideia dos circuitos virtuais é evitar a escolha de uma nova rota para cada pacote enviado,
sendo por isso utilizado em sub-redes com serviço orientado à conexão. Na verdade, quando se
estabelece uma conexão uma rota entre a máquina origem e a máquina destino é escolhida como
parte do estabelecimento da conexão. Essa rota é utilizada por todo o tráfego que flui pela conexão,
exatamente como o sistema telefônico funciona. Quando a conexão é liberada o circuito virtual
deixa de existir.
No caso de uma sub-rede de datagrama, nenhuma rota é previamente definida, mesmo que o
serviço seja orientado à conexão. Cada pacote enviado é roteado independentemente de seus
antecessores. Os sucessivos pacotes podem seguir diferentes rotas.
Se os pacotes que fluem por um determinado circuito virtual sempre seguirem a mesma rota
através da sub-rede, os roteadores deverão lembrar para onde enviar os pacotes de cada um dos
circuitos virtuais abertos que estiverem passando através deles. Cada pacote que percorre a sub-rede
deve conter um campo de número de circuito virtual em seu cabeçalho.
4.5 Endereçamento no Nível de Rede
Alguns níveis de rede oferecem a comunicação entre estações com um único SAP (Service
Access Point – Ponto de Acesso ao Serviço) de rede, ao passo que outros possibilitam a definição de
vários SAPs de rede por estação. Mas independentemente do tipo de rede, o endereçamento dos
SAPs de rede deve ser completamente independente do endereçamento dos protocolos de outros
níveis. Basicamente dois tipos de endereçamento são possíveis: o hierárquico e o horizontal.
No endereçamento hierárquico, o endereço de uma entidade é constituído de acordo com os
endereços correspondentes aos vários níveis da hierarquia de que ela faz parte. O endereço
hierárquico é o método sugerido pelo ITU-T para interconexão de redes públicas de pacotes. Nessa
recomendação os endereços são números decimais formados por três campos: um código do país,
um código para a rede, e um campo para o endereçamento dentro da rede.
No endereçamento horizontal, os endereços não têm relação alguma com o lugar onde estão
as entidades dentro da rede. Um exemplo comum desse tipo de endereçamento são os endereços
globalmente administrados, constituídos pelo número de assinatura do usuário, como os utilizados
pelo padrão IEEE 802 (endereços MAC).
Redes de Computadores 1 30
Considerações sobre o roteamento parecem indicar vantagens na utilização de endereçamento
hierárquico, uma vez que este contem informações explícitas sobre o local onde se localizam as
entidades. Já o endereçamento horizontal facilita os esquemas de reconfiguração por permitir uma
mobilidade das entidades sem reconfiguração das mesmas.
O mapeamento do endereço de nível de rede em um endereço de nível de enlace para o envio
de pacotes é uma tarefa a ser resolvida pelo nível de rede. Existem duas técnicas usuais para essa
conversão: resolução através de mapeamento direto e resolução através de vinculação dinâmica.
No mapeamento direto, a estação sabe como computar o endereço de enlace, através de uma
função que mapeia o endereço de rede no endereço de enlace. Por exemplo, o endereçamento
hierárquico onde o campo de endereço de estação corresponde exatamente ao endereço da estação
no nível de enlace. Conversões mais complicadas podem ser realizadas através de tabelas de
conversão e técnicas de acesso rápido a estas tabelas.
Para evitar o uso de tabelas de conversão, uma vinculação dinâmica pode ser efetuada entre o
endereço de rede e o endereço de enlace através da utilização de algum protocolo de resolução.
4.6 Exercícios
1) Qual o principal objetivo da camada de rede?
2) Como funciona a comutação de pacotes na camada de rede?
3) Qual a diferença entre circuito virtual e datagrama?
4) Qual a diferença entre endereçamento hierárquico e endereçamento horizontal?
Redes de Computadores 1 31
5. Camada de Transporte
Sua função é promover a confiabilidade na transferência de dados entre a máquina origem e a
máquina destino, independente da(s) rede(s) física(s) em uso no momento.
5.1 O Serviço de Transporte
5.1.1 Serviços Oferecidos às Camadas Superiores
O principal objetivo da camada de transporte é oferecer um serviço confiável e eficiente a
seus usuários. Para atingir esse objetivo ela utiliza vários serviços oferecidos pela camada de rede.
Assim como existem dois tipos de serviço de rede (orientados à conexão e sem conexão),
também existem dois tipos de serviço de transporte. O serviço de transporte orientado à conexão
(serviço confiável) é muito semelhante ao serviço de rede orientado à conexão. Em ambos os casos
as conexões têm três fases: o estabelecimento, a transferência de dados e o encerramento. Além
disso, o serviço de transporte sem conexão (serviço não confiável) é semelhante ao serviço de rede
sem conexão.
Se a aplicação requer um serviço confiável será necessário utilizar o serviço de transporte
orientado à conexão, o que implica em um serviço mais lento e mais complexo. Por outro lado, se a
aplicação não necessita de de confiabilidade no transporte dos dados, ela pode utilizar o serviço de
transporte sem conexão, que é mais simples e mais rápido.
5.1.2 Qualidade de Serviço
Outra forma de ver a camada de transporte é considerar que sua principal função seja
melhorar a QoS (Quality of Service – Qualidade de Serviço) oferecida pela camada de rede.
Ainda que à primeira vista o conceito de qualidade de serviço seja vago (fazer com que todos
concordem sobre o que significa um serviço bom não é uma tarefa simples), a QoS pode ser
definida por um número específico de parâmetros. O serviço de transporte pode permitir ao usuário
determinar os valores preferenciais, os valores aceitáveis e os valores mínimos para vários
parâmetros de serviço no momento em que uma conexão é estabelecida. Alguns parâmetros também
podem ser usados no transporte sem conexão. Esses parâmetros são resumidos a seguir:
Retardo no estabelecimento da conexão: tempo transcorrido entre a solicitação de uma
conexão de transporte e o recebimento de sua confirmação.
Probabilidade de falha no estabelecimento da conexão: possibilidade de a conexão não se
estabelecer dentro de um período máximo estabelecido.
Throughput: número de bytes de dados transmitidos durante um determinado intervalo de
tempo.
Retardo de trânsito: tempo transcorrido desde o envio de uma mensagem pelo usuário de
transporte da máquina origem até seu recebimento pelo usuário de transporte da máquina
destino.
Taxa de erros residuais: número de mensagens perdidas ou corrompidas em uma
porcentagem do total enviado.
Proteção: forma do usuário de transporte especificar seu interesse no fato de a camada de
transporte fornecer proteção contra leitura ou modificação de dados por parte de terceiros.
Prioridade: modo de indicar que algumas conexões são mais importantes do que outras.
Resiliência: probabilidade de finalizar uma conexão espontaneamente devido a problemas
Redes de Computadores 1 32
internos ou a congestionamento.
Os parâmetros QoS são especificados pelo usuário de transporte quando uma conexão é
solicitada. Às vezes alguns parâmetros não podem ser alcançados. Nesse caso a camada de
transporte informa ao usuário que a tentativa de conexão falhou sem sequer tentar contato com o
destino.
5.1.3 Primitivas de Serviço de Transporte
As primitivas de serviço de transporte permitem que os usuários de transporte tenham acesso
ao serviço de transporte. Cada serviço de transporte tem suas próprias primitivas de acesso.
O serviço de transporte é semelhante ao serviço de rede, mas existem diferenças importantes
entre eles. A principal delas é que o serviço de rede representa o modelo oferecido pelas redes reais,
com todos os atributos. Como as redes reais podem perder pacotes, o serviço de rede, em geral, não
é confiável.
O serviço de transporte (orientado à conexão), ao contrário, é confiável. É função da camada
de transporte oferecer um serviço confiável acima de uma rede não-confiável.
A tabela abaixo mostra cinco primitivas de transporte. Essa interface de transporte é uma
estrutura básica, mas mostra o que uma interface de transporte orientada à conexão deve fazer.
Primitiva TPDU enviada Significado
LISTEN Bloquear até que algum processo tente se conectar
CONNECT CONNECTION_REQ Tentar estabelecer uma conexão
SEND DATA Enviar informações
RECEIVE Bloquear até uma TPDU DATA chegar
DISCONNECT DISCONNECTION_REQ Este lado quer encerrar a conexão
Algumas considerações sobre a terminologia se fazem necessárias. As TPDUs (Transport
Protocol Data Unit – Unidade de Dados do Protocolo de Transporte) são informações trocadas pela
camada de transporte e são enviadas dentro de pacotes (intercambiados pela camada de rede). Os
pacotes, por sua vez, ficam contidos em quadros (intercambiados pela camada de enlace de dados).
Quando um quadro chega, a camada de enlace de dados processa seu cabeçalho e transmite o
conteúdo do campo de carga útil do quadro para a entidade de rede. Em seguida, a entidade de rede
processa o cabeçalho do pacote e envia o conteúdo da carga útil do pacote à entidade de transporte.
Considere uma aplicação com um servidor e clientes remotos. Primeiramente o servidor
executa uma primitiva LISTEN que bloqueia o servidor até que um cliente apareça. Para se
comunicar com o servidor, um cliente executa uma primitiva CONNECT, dando origem a uma
TPDU CONNECTION REQUEST que é enviada ao servidor. Quando a TPDU chega ao servidor, a
entidade de transporte verifica se o servidor está bloqueado em LISTEN. Em seguida a TPDU
desbloqueia o servidor e transmite uma TPDU CONNECTION ACCEPTED de volta ao cliente.
Quando ela chega a seu destino, o cliente é desbloqueado e a conexão é estabelecida.
A partir de então os dados são trocados através das primitivas SEND e RECEIVE.
O encerramento da conexão pode ser assimétrico ou simétrico. No encerramento assimétrico,
qualquer um dos lados pode emitir uma primitiva DISCONNECT, fazendo com que uma TPDU
Carga útil da TPDU
Carga útil do pacoteCarga útil do quadro
Cabeçalhodo quadro
Cabeçalhodo pacote
Cabeçalhoda TPDU
Redes de Computadores 1 33
DISCONNECT seja enviada à entidade de transporte remota. Quando essa TPDU chega a seu
destino, a conexão é encerrada.
No encerramento simétrico, cada direção da comunicação é encerrada em separado e de
forma independente da outra. Quando uma das partes executa uma primitiva DISCONNECT, isso
significa que não há mais dados para enviar, mas ainda é possível receber dados enviados pela outra
parte. Nesse modelo, a conexão só é encerrada quando os dois lados tiverem executado uma
primitiva DISCONNECT.
5.2 Protocolos de Transporte
O serviço de transporte é implementado por um protocolo de transporte que é usado entre
duas entidades de transporte. Os protocolos de transporte, em alguns aspectos, lembram os
protocolos de enlace de dados. Ambos têm de lidar com o controle de erros, com a definição de
sequências e com o controle de fluxo, entre outras coisas.
Mas existem diferenças significativas entre eles. Na camada de enlace de dados, dois
roteadores se comunicam diretamente através de um canal físico, enquanto que na camada de
transporte, esse canal físico é substituído pela sub-rede. Na camada de enlace de dados o roteador
não precisa especificar com que outro roteador deseja se comunicar enquanto na camada de
transporte, é necessário explicitar os endereços de destino. O processo de estabelecimento de uma
conexão através de um cabo é simples, enquanto na camada de transporte o estabelecimento inicial
da conexão é mais complicado.
Outra diferença é a possível existência de capacidade de armazenamento na sub-rede. Se a
sub-rede utilizar datagramas e um roteamento adaptativo, haverá uma probabilidade significativa de
que um pacote possa ficar armazenado por alguns segundos e ser entregue depois. As
consequências podem ser desastrosas e exigir o uso de protocolos especiais.
5.2.1 Endereçamento
Quando uma aplicação deseja se comunicar com uma aplicação remota, é necessário
especificar a aplicação a ser contactada. O método normalmente usado é definir os endereços de
transporte que os processos podem ouvir para receber solicitações, chamados TSAPs.
Como a aplicação do host 1 sabe em que TSAP se encontra o servidor no host 2? Uma
possibilidade é que o servidor esteja associado ao TSAP há anos e que, aos poucos, todos os
usuários da rede tenham se acostumado com isso. Nesse modelo, os serviços têm endereços TSAP
estáveis que podem ser impressos e distribuídos aos novos usuários quando eles se associam à rede.
Um esquema alternativo é utilizar um processo especial denominado servidor de nomes
(name server), ou, as vezes, servidor de diretórios (directory server). Para localizar o endereço
Host 2Host 1
Aplicação
Início da conexãode transporte
Camada de aplicação
Camada de transporte
Camada de rede
Camada física
Camada de enlace
ServidorTSAP
NSAP
Redes de Computadores 1 34
TSAP correspondente a um determinado nome de serviço, uma aplicação estabelece uma conexão
com o servidor de nomes (que está associado a um TSAP conhecido). Em seguida, o usuário envia
uma mensagem especificando o nome do serviço, e o servidor de nomes retorna o endereço TSAP.
Depois disso, o usuário encerra a conexão com o servidor de nomes e estabelece uma nova conexão
com o serviço desejado.
5.2.2 Estabelecimento de uma Conexão
Estabelecer uma conexão é um procedimento complicado. Não basta uma entidade de
transporte enviar uma TPDU CONNECTION REQUEST ao destino e aguardar uma resposta
CONNECTION ACCEPTED. O problema é que a rede pode perder, armazenar e duplicar pacotes,
provocando duplicações atrasadas.
Tal problema pode ser combatido de várias maneiras. Uma forma é atribuir a cada conexão
um identificador (um número de sequência incrementado a cada conexão estabelecida) escolhido
pelo lado que inicia a conexão e colocado em cada TPDU, inclusive na que solicitou a conexão.
Outra forma é não permitir que os pacotes permaneçam na sub-rede eternamente, criando um
mecanismo para destruir os pacotes velhos que ainda apareçam nela. O tempo de vida de um pacote
pode ser restringido através de uma das seguintes técnicas:
1. Usando-se um contador de hops em cada pacote.
2. Usando-se um timestamp em cada pacote.
O primeiro método consiste em ter um contador de hops, incrementado a cada vez que o
pacote passa por um nó intermediário da rede. Em seguida, o protocolo descarta qualquer pacote
cujo contador de hops exceda um determinado valor. O segundo método exige que cada pacote seja
associado ao horário em que foi criado, com a concordância dos roteadores em descartar qualquer
pacote anterior a um determinado horário. Esse último método exige que os relógios dos roteadores
estejam sincronizados, o que não é uma tarefa fácil.
Um bom mecanismo para estabelecimento de conexões é conhecido por three way handshake,
e será estudado adiante, juntamente com o protocolo TCP.
5.2.3 Encerramento de uma Conexão
Encerrar uma conexão é mais fácil do que estabelecê-la. No entanto, problemas podem
ocorrer.
O encerramento assimétrico é abrupto e pode resultar na perda de dados. Se durante uma
conexão o host 1 envia uma TPDU, e o host 2 envia uma primitiva DISCONNECT antes da TPDU
chegar, a conexão será encerrada antes que os dados enviados pelo host 1 cheguem, provocando a
perda de dados.
Uma estratégia melhor é adotar o encerramento simétrico, no qual cada direção da conexão é
liberada de forma independente. Nesse caso, um host pode continuar a transmitir dados mesmo
depois de ter recebido uma TPDU DISCONNECT.
5.3 Exercícios
1) Qual a principal função da camada de transporte?
2) Cite 3 parâmetros que podem ser utilizados para medir a qualidade de serviço?
3) Quando devem ser estabelecidos os parâmetros de qualidade de serviço?
4) Para que servem as primitivas de serviço de transporte? Explique uma destas primitivas.
5) O que é uma TPDU? Quais os encapsulamentos que ocorrem para que uma TPDU possa ser
Redes de Computadores 1 35
enviada fisicamente pela rede?
6) Para a camada de transporte, qual a diferença entre encerramento simétrico e encerramento
assimétrico?
7) Para que serve o endereçamento no nível de transporte?
8) Como o protocolo de transporte sabe para qual aplicação entregar uma TPDU recém chegada?
Redes de Computadores 1 36
6. Protocolos para Internet
Na camada de rede, a Internet pode ser vista como um conjunto de sub-redes ou sistemas
autônomos conectados entre si. Não existe uma estrutura real, mas diversos backbones principais.
Conectadas aos backbones estão as redes regionais e, conectadas a essas redes regionais, estão as
LANs.
O elemento que mantém a Internet unida é o protocolo de camada de rede IP (Internet
Protocol). A tarefa do IP é fornecer a melhor forma de transportar datagramas da origem para o
destino, independente de essas máquinas estarem na mesma rede ou em outras redes intermediárias.
Na Internet, a comunicação funciona da forma descrita a seguir. A camada de transporte
recebe os fluxos de dados e os divide em datagramas. Teoricamente, cada datagrama pode ter até 64
Kbytes. Cada datagrama é transmitido pela Internet, sendo possivelmente fragmentado em unidades
menores durante o percurso até o destino. Quando todos os pedaços chegam à máquina destino, eles
são remontados pela camada de rede obtendo o datagrama original. Em seguida, esse datagrama é
entregue à camada de transporte, que o insere no fluxo de entrada do processo de recepção.
6.1 O Protocolo IP
Na Internet a camada de rede trata cada pacote de forma independente, não tendo qualquer
relação com pacotes anteriores ou posteriores. Pacotes com mesma origem e destino podem,
inclusive, passar por diferentes rotas.
Datagramas são unidades básicas de informações que passam pela Internet. Dentro do
datagrama está seu cabeçalho, que contém informações sobre sua origem e seu destino, assim como
informações sobre para qual protocolo o IP deverá passar os dados.
Fragmentos são unidades de dados que foram quebrados em unidades menores. Como os
dados precisam caber dentro da porção de dados da rede física, pode ser que seja necessário
fragmentar os dados da aplicação para que eles possam ser transportados pela rede. O tamanho do
fragmento é determinado pelo MTU (Maximum Transfer Unit) da interface de hardware da rede. O
IPv4 especifica que a fragmentação ocorre em cada roteador baseado na MTU da interface pela qual
o datagrama IP deve passar.
Um datagrama IP consiste em duas partes: cabeçalho e dados. O cabeçalho tem uma parte fixa
de 20 bytes e uma parte opcional de tamanho variável.
O campo Versão controla a versão do protocolo a que o datagrama pertence.
O campo IHL informa o tamanho do cabeçalho em palavras de 32 bits. O valor mínimo é 5 e
o valor máximo é 60.
G
G G
G
G
Rede 2
Rede 3
Rede 1
Rede 4
Gateway
Host 1
Aplicação
Transporte
Inter-Rede
Interfacede Rede
Inter-Rede
Interfacede Rede
Interfacede Rede
Host 2
Aplicação
Transporte
Inter-Rede
Interfacede Rede
Rede física 1 Rede física 2
Redes de Computadores 1 37
O campo Tipo de serviço permite que o host informe à sub-rede o tipo de rede que deseja. São
possíveis várias combinações de confiabilidade e velocidade. O campo contém (da esquerda para a
direita) um campo Precedence de três bits, três flags, D, T e R e 2 bits que não são utilizados. O
campo Precedence tem uma prioridade de 0 (normal) a 7 (pacote de controle de rede). Os três flags
permitem que o host especifique o que é mais importante no conjunto retardo, taxa de transferência,
confiabilidade.
O campo Comprimento total informa o tamanho total do datagrama (cabeçalho e dados). O
tamanho máximo é de 65.535 bytes.
O campo Identificação é necessário para permitir que o host de destino determine a qual
datagrama pertence um fragmento recém-chegado. Todos os fragmentos de um datagrama contêm o
mesmo valor de Identificação.
Em seguida, há um bit não utilizado e dois campos de 1 bit: DF e MF. DF (Don't Fragment -
Não Fragmente) informa aos roteadores para não fragmentarem o datagrama. O campo MF (More
Fragments - Mais Fragmentos) indica que ainda existem mais fragmentos do datagrama. Todos os
fragmentos, exceto o último, têm esse bit marcado.
O campo Deslocamento do fragmento informa a que ponto do datagrama atual o fragmento
pertence. Todos os fragmentos de um datagrama, com exceção do último, devem ser múltiplos de 8
bytes. Como o campo tem 13 bits, existe um máximo de 8.192 fragmentos por datagrama,
resultando em um tamanho máximo de datagrama de 65.536 bytes (um a mais do que o campo
Comprimento total).
O campo Tempo de vida é um contador usado para limitar a vida útil do pacote. Esse campo é
decrementado a cada roteador que passa, permitindo uma vida útil máxima de 255. Ele evita que os
datagramas fiquem vagando indefinidamente, algo que poderia acontecer se as tabelas de
roteamento fossem danificadas.
O campo Protocolo informa para qual processo de transporte o datagrama deverá ser
entregue.
O campo Soma de verificação do cabeçalho confere o cabeçalho para determinar se
ocorreram erros durante sua transmissão. Este campo deve ser recalculado a cada hop, pois o campo
Time to live é alterado em cada um deles.
Os campos Endereço origem e Endereço destino indicam o endereço IP de origem e destino
do datagrama.
O campo Opções é utilizado para permitir que sejam inseridas opções ao protocolo IP que não
Versão IHL Tipo de serviço
Identificação
Comprimento total
DF
MF
Soma de verificaçãodo cabeçalho
Endereço origem
Endereço destino
Opções(0 ou mais palavras de 32 bits)
Dados
32 bits
ProtocoloTempo de vida
(TTL)
Deslocamento do fragmento
Redes de Computadores 1 38
estão contidas no projeto original.
O campo Dados carrega os dados destinados à máquina destino.
6.1.1 Endereços IP
Na Internet, cada host tem um endereço IP que codifica seu número de rede e número de host.
A combinação é exclusiva, duas máquinas nunca têm o mesmo endereço IP. Todos os endereços IP
têm 32 bits divididos em 4 campos com 8 bits cada. Cada campo é representado por um número
decimal entre 0 e 255, separados por pontos. Cada endereço IP identifica uma rede e um host nesta
rede.
Os endereços são divididos em classes, e o número total de redes e hosts para cada classe é:
Classe A: 126 redes com aproximadamente 16 milhões de hosts cada
Classe B: 16.384 redes com até 64K hosts cada
Classe C: cerca de 2 milhões de redes com até 254 hosts cada
Classe D: cerca de 268 milhões de grupos multicast
A distribuição de endereços IP é controlada pela ICANN (Internet Corporation for Assigned
Names and Numbers).
O endereço de difusão (broadcast) é o endereço utilizado para representar uma difusão por
toda a rede, ou seja, que o datagrama é enviado simultaneamente para todos os hosts da rede. O
endereço de difusão de uma rede IP é o endereço cujo campo host é representado por todos os bits
contendo o valor 1.
O endereço de rede é o endereço que identifica a rede da qual os hosts fazem parte. O
endereço de rede é o endereço cujo campo host é representado por todos os bits contendo o valor 0.
Em uma dada sub-rede, os endereços de rede e difusão não podem ser atribuídos a hosts.
Qual a classe e os endereços de rede, host e difusão dos endereços IP 10.2.1.1, 128.63.2.100,
201.222.5.64, 192.6.141.2, 130.113.64.16 e 120.241.256.8?
6.1.2 Sub-Redes
O mundo exterior a uma organização enxerga sua rede como uma rede única, e nenhuma
informação sobre sua estrutura interna é necessária. Porém, sem a utilização de sub-redes, o espaço
de endereçamento pode se tornar muito ineficiente.
A fim de tornar mais eficiente a utilização da rede, é comum sua divisão em várias sub-redes.
O mecanismo que permite tal divisão é conhecido como máscara de rede.
Assim como um endereço IP, uma máscara de rede possui 32 bits dividido em 4 campos com
224.0.0.0 a239.255.255.255
240.0.0.0 a247.255.255.255
192.0.0.0 a223.255.255.255
128.0.0.0 a191.255.255.255
1.0.0.0 a127.255.255.255
Rede Host
Reservado para uso futuro
Endereço de multicast
Rede HostRede
Host
Rede
HostRede
Host
Rede
HostA
B
C
D
E
32 bits
Classe Faixa de endereços
Redes de Computadores 1 39
8 bits cada, seguindo o padrão:
bits da rede – bit 1
bits da sub-rede – bit 1
bits do host – bit 0
Os bits da sub-rede são utilizados para especificar quais bits no campo do host são usados
para especificar as sub-redes de uma rede.
A máscara default para cada classe é dada por:
Classe Decimal Hexadecimal Binário
A 255.0.0.0 FF:00:00:00 11111111 00000000 00000000 00000000
B 255.255.0.0 FF:FF:00:00 11111111 11111111 00000000 00000000
C 255.255.255.0 FF:FF:FF:00 11111111 11111111 11111111 00000000
Exemplo:
Ao se dividir uma rede em sub-redes deve-se alocar os bits para a sub-rede a partir dos bits de
mais alta ordem (bits mais à esquerda) do campo do host. A tabela abaixo mostra os valores usados
no campo do host quando se divide uma rede em sub-redes.
128 64 32 16 8 4 2 1
1 0 0 0 0 0 0 0 128
1 1 0 0 0 0 0 0 192
1 1 1 0 0 0 0 0 224
1 1 1 1 0 0 0 0 240
1 1 1 1 1 0 0 0 248
1 1 1 1 1 1 0 0 252
1 1 1 1 1 1 1 0 254
1 1 1 1 1 1 1 1 255
O número de uma rede é calculado usando o operador lógico “E” na associação do endereço
com sua máscara de rede. Por exemplo: qual o número da rede do endereço 175.14.63.9 com
máscara 255.255.0.0? E com máscara 255.255.224.0? E com máscara 255.255.255.0?
Uma rede pode ser dividida em diversas partes para uso interno, continuando a ser vista como
uma única rede externamente. Essas partes são as sub-redes.
Existem diversas razões para se dividir uma rede em sub-redes. Algumas destas razões são:
Isolar o tráfego de uma sub-rede, reduzindo assim o tráfego total da rede.
Proteger ou limitar o acesso a uma sub-rede (será preciso usar um firewall para uma
proteção mais eficaz).
Permitir a associação de uma sub-rede com um departamento ou espaço geográfico
específico.
Adicionando mais um nível hierárquico à estrutura de endereçamento IP, é possível a
definição de sub-redes. A figura abaixo ilustra tal ideia.
0023168
Rede Host
Endereço IP
00255255
Rede Host
Máscara de rede default
0255255255
Rede Host
Máscara de sub-rede de 8 bits
Sub-rede
Redes de Computadores 1 40
Suponha que uma organização receba o endereço classe C 210.150.8.0 e precise de 5
sub-redes com 22 hosts cada. Qual máscara de rede deve ser utilizada?
6.1.3 NAT
Endereços IP são escassos. Uma organização poderia receber uma rede classe B ou até mesmo
classe A, mas nem sempre isto é possível.
Esgotar os endereços IP não é um problema teórico que pode ocorrer em algum momento no
futuro distante, ele já está acontecendo. A solução atual para este problema é o NAT (Network
Address Translation – Tradução de Endereço de Rede), descrito na RFC 3022.
A ideia básica do NAT é atribuir a cada organização uma pequena quantidade de endereços IP
para tráfego na Internet. Dentro da organização todo computador obtém um endereço IP exclusivo,
usado para roteamento do tráfego Interno e, quando um pacote sai da organização e vai para a
Internet, ocorre uma conversão do endereço. Para tornar esse esquema possível, três intervalos de
endereços IP foram declarados como privativos (endereços reservados). As organizações podem
utilizá-los internamente e a única regra é que nenhum pacote contendo esses endereços pode
aparecer na própria Internet. Os três intervalos reservados são:
Faixa Máscara Classe
10.0.0.0 a 10.255.255.255 255.0.0.0 A
172.16.0.0 a 172.31.255.255 255.255.0.0 B
192.168.0.0 a 192.168.255.255 255.255.255.0 C
Dentro da organização toda máquina tem um endereço exclusivo que não é válido na Internet.
Quando um pacote deixa a organização, ele passa por uma caixa NAT que converte o endereço de
origem no endereço IP verdadeiro da organização. Desta forma o pacote poderá transitar sem
problemas pela Internet.
Porém, quando a resposta do pacote voltar, ela voltará para o endereço IP verdadeiro da
organização, não para a máquina que fez tal requisição. Por isso a caixa NAT deverá manter uma
tabela na qual poderá mapear que máquina enviou qual requisição para Internet de forma que
quando a resposta voltar ela possa mapear a resposta para a máquina correta.
6.1.4 Protocolos de Controle da Internet
Além do IP, que é usado para a transferência de dados, a Internet tem diversos protocolos de
controle usados na camada de rede, incluindo ICMP, ARP, RARP e BOOTP.
6.1.4.1 ICMP (Internet Control Message Protocol)
O ICMP permite aos roteadores enviar mensagens de controle e erros para outros roteadores
ou hosts. Quando um erro ocorre na transmissão de um datagrama, o ICMP reporta o erro ao
sistema que gerou o datagrama.
O ICMP também inclui um mecanismo de envio e resposta (echo) para testar quando um
destino é alcançável ou não. O comando ping utiliza este protocolo.
As mensagens ICMP mais importantes são listadas na tabela abaixo. Cada tipo de mensagem
ICMP é encapsulada em um pacote IP. O ICMP é definido na RFC 792.
A mensagem destination unreachable é usada quando a sub-rede ou um roteador não pode
32 bits
1 0 Rede HostSub-rede
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0Máscara
Redes de Computadores 1 41
localizar o destino, ou um pacote com o bit DF não pode ser entregue porque há uma rede de
“pacotes pequenos” no caminho.
A mensagem time exceeded é enviada quando um pacote é descartado porque seu contador
chegou a zero. Esse evento é um sintoma de que os pacotes estão entrando em loop, de que há
congestionamento ou de que estão sendo definidos valores muito baixos para o temporizador.
A mensagem parameter problem indica que um valor inválido foi detectado em um campo de
cabeçalho. Essa mensagem indica existência de um problema no software IP do host transmissor ou
no software de um roteador pelo qual o pacote transitou.
A mensagem source quench era usada para ajustar os hosts que estivessem enviando pacotes
demais. Atualmente o controle de congestionamento da Internet é feito, em grande parte, na camada
de transporte.
A mensagem redirect é usada quando um roteador percebe que o pacote pode ter sido
incorretamente roteado. Ela é usada pelo roteador para informar ao host transmissor a respeito do
provável erro.
As mensagens echo request e echo reply são usadas para verificar se um determinado destino
está ativo e pode ser ativado. Ao receber a mensagem echo request, o destino deve enviar de volta
uma mensagem echo reply.
As mensagens timestamp request e timestamp reply são semelhantes ao echo request e ao
echo reply, exceto pelo fato de o tempo de chegada da mensagem e o tempo de partida da resposta
serem registrados na mensagem de resposta. Esse recurso é usado para medir o desempenho da
rede.
Tipo de mensagem Descrição
Destination unreachable Pacote não pode ser entregue
Time exceeded Campo time to live chegou a zero
Parameter problem Campo de cabeçalho inválido
Source quench Pacote regulador
Redirect Ensinar geografia a um roteador
Echo request Perguntar a uma máquina se ela está ativa
Echo reply Confirmação de que a máquina está ativa
Timestamp request Mesmo que Echo request, mas com timestamp
Timestamp reply Mesmo que Echo reply, mas com timestamp
6.1.4.2 ARP (Address Resolution Protocol)
Embora na Internet cada máquina tenha um ou mais endereços IP, na verdade eles não podem
ser usados diretamente para o envio de pacotes, pois o hardware da camada de enlace de dados não
entende os endereços Internet.
Quando o host 1 necessita enviar uma mensagem ao host 2, o software da camada superior do
host 1 constrói um pacote com o IP do host 2 no campo destination address e o fornece para o
software IP que deverá transmiti-lo. O software IP poderá examinar o endereço e constatar que o
destino está em sua própria rede, mas ele precisa de uma forma de encontrar o endereço de enlace
da máquina de destino. Ter uma tabela com a associação de todos os endereços IP com seus
respectivos endereços de enlace resolveria o problema, mas seria uma tarefa difícil manter tal tabela
atualizada em todos os hosts.
Uma solução melhor é o host 1 enviar um pacote de difusão perguntando: “A quem pertence o
endereço IP A.B.C.D?”. Então o host 2 responderá com seu endereço de enlace. O protocolo que
faz essa pergunta e obtém a resposta é chamado de ARP (Address Resolution Protocol). Ele é
Redes de Computadores 1 42
definido na RFC 826.
Nesse ponto, o software IP do host 1 constrói um quadro de enlace endereçado ao host 2,
coloca o pacote IP no campo de carga útil e o envia. A placa de rede do host 2 detecta esse quadro,
reconhece-o como um quadro destinado a ela, recolhe-o e causa uma interrupção. O software de
enlace extrai o pacote IP da carga útil e o passa para o software IP, que verifica se ele está
corretamente endereçado e o processa.
São possíveis várias otimizações para tornar o ARP mais eficaz. Em primeiro lugar, depois
que uma máquina executa o ARP, ela armazena o resultado em um cache.
Em muitos casos, o host 2 precisará enviar uma resposta, o que forçará também a execução do
ARP para determinar o endereço de enlace do transmissor. Essa difusão do ARP pode ser evitada
fazendo-se com que o host 1 inclua seu IP no mapeamento de enlace do pacote ARP. Quando a
difusão do ARP chega no host 2, seu endereço é inserido no cache ARP do host 2 para um uso
futuro. Na realidade, todas as máquinas podem inserir esse mapeamento em seus caches ARP.
Outra otimização é fazer com que cada máquina difunda seu mapeamento ao ser
reinicializada. Essa difusão é, em geral, feita quando um ARP procura seu próprio endereço IP. Não
deverá haver uma resposta, mas um efeito colateral da difusão em que são feitas entradas no cache
ARP de todas as máquinas. Se uma resposta chegar, significa que o mesmo endereço IP foi
atribuído a duas máquinas. A nova máquina deve informar esse fato ao gerenciador do sistema e
não poderá ser reinicializada.
Se o host 1 deseja enviar um pacote para o host 3, que se encontra em uma outra rede, o uso
do ARP apresentará problemas. A solução é fazer com que o host 1 veja que o destino está em uma
rede remota e envie todo o tráfego para um endereço de enlace padrão que trate do tráfego remoto
(endereço do roteador).
O host 1 coloca o pacote IP (com o endereço IP do host 3) no campo de carga útil de um
quadro de enlace endereçado ao roteador. Quando obtém o quadro de enlace, o roteador remove o
pacote IP do campo de carga útil e procura o endereço IP nas tabelas de roteamento.
6.1.4.3 RARP (Reverse Address Resolution Protocol)
O ARP resolve o problema de encontrar um endereço de enlace que corresponda a um
determinado endereço IP. Às vezes, é necessário resolver o problema inverso. Isso ocorre
especificamente quando uma estação de trabalho sem disco é reinicializada.
O RARP permite que um host recém inicializado transmita seu endereço de enlace por
difusão e pergunte qual o seu endereço IP. O servidor RARP detecta essa solicitação e envia de
volta o endereço IP correspondente.
6.1.4.4 BOOTP (BOOTstrap Protocol)
Uma desvantagem do RARP é que as difusões não são encaminhadas pelos roteadores.
Portanto, é necessário um servidor RARP em cada rede. Para resolver esse problema, foi inventado
um protocolo alternativo chamado BOOTP. Ao contrário do RARP, o BOOTP usa mensagens
UDP, que são enviadas pelos roteadores. O BOOTP também fornece informações adicionais para as
estações de trabalho sem disco, tais como o endereço IP do servidor de arquivos que mantém a
imagem da memória, o endereço IP do roteador padrão e a máscara de sub-rede a ser utilizada.
Para um computador enviar o BOOTP em um datagrama IP antes de saber seu endereço IP ele
utiliza como endereço de destino o endereço IP 255.255.255.255, especificando uma difusão
limitada. Um programa aplicativo pode utilizar o endereço IP de difusão limitada para obrigar o IP
a difundir um datagrama na rede local, antes que o IP descubra seu endereço IP da rede local ou do
equipamento.
Redes de Computadores 1 43
Para o servidor BOOTP enviar uma resposta ele precisa utilizar o endereço de difusão
limitada, mesmo sabendo o endereço IP de A. Se servidor BOOTP tentasse enviar um datagrama
utilizando o endereço IP do solicitante ele deveria mapear o endereço IP para um endereço
correspondente de hardware utilizando o ARP. Entretanto, por não ter ainda recebido a resposta, o
solicitante não tem como confirmar seu endereço IP.
O BOOTP delega ao cliente toda a responsabilidade por uma comunicação segura. Para
solucionar o problema de perda de datagrama, o BOOTP utiliza uma técnica convencional de
timeout e retransmissão. Quando o cliente transmite uma solicitação, aciona um temporizador. Não
chegando qualquer resposta antes de o temporizador expirar, o cliente deve retransmitir a
solicitação. Para evitar colisões, a especificação do BOOTP recomenda o uso de uma espera
aleatória.
6.1.4.5 DHCP (Dynamic Host Configuration Protocol)
Assim como o RARP, o BOOTP foi projetado para um ambiente relativamente estático onde
cada host possui uma conexão de rede permanente. Um gerenciador cria um arquivo de
configurações para cada host. O arquivo não se altera com frequência, pois a configuração continua
estável, e geralmente ela permanece assim durante semanas.
A atribuição do parâmetro estático funciona bem se os computadores permanecerem em
locais fixos e um gerenciador possuir uma quantidade suficiente de endereços IP para atribuir um
único endereço IP a cada computador. Entretanto, no caso dos computadores que são
frequentemente deslocados, ou quando o número de computadores físicos exceder o número de
endereços IP disponíveis, a atribuição estática provoca um overhead excessivo.
Para administrar a atribuição de endereços automatizada, a IETF desenvolveu um novo
protocolo, conhecido como DHCP. Para utilizar o mecanismo de alocação de endereços dinâmico
do DHCP o administrador do sistema deve configurar um servidor DHCP fornecendo um grupo de
endereços IP. Sempre que um novo computador se conecta à rede, entra em contato com o servidor
e solicita um endereço. O servidor opta por um dos endereços especificados pelo administrador e
aloca tal endereço para o computador.
De modo geral, o DHCP permite três tipos de atribuição de endereços:
Configuração manual, em que o administrador pode configurar determinado endereço para
determinado computador.
Configuração automática, na qual o administrador permite que um servidor DHCP atribua
um endereço permanente quando um computador se conectar pela primeira vez à rede.
Configuração dinâmica em que um servidor “empresta” um endereço a um computador, por
um tempo limitado.
Suponha que um usuário conecte um computador a uma rede e utilize o DHCP para adquirir
um endereço IP para ler o correio eletrônico. O DHCP define a duração do período mínimo de
alocação. Se após obter um endereço IP o usuário descobrir que nenhuma mensagem de correio
eletrônico está aguardando leitura, ele poderá optar por desligar o computador. Quando não precisa
mais da alocação, o DHCP permite que um cliente a encerre sem esperar que o prazo da validade
termine. O término precoce é importante sobretudo se o número de endereços IP disponíveis for
bastante inferior ao número de computadores conectados à rede. Se cada cliente encerrar a alocação
tão logo o endereço IP deixe de ser necessário, o servidor poderá atribuir o endereço a outro cliente.
Ao adquirir um endereço, um cliente DHCP configura três temporizadores que controlam a
renovação, a revinculação e o fim da alocação. Um servidor DHCP pode especificar os valores
explícitos para os temporizadores quando aloca um endereço a um cliente, caso contrário o cliente
utiliza o default (o valor default para o primeiro temporizador é a metade do valor do tempo total da
Redes de Computadores 1 44
alocação). Quando o temporizador ultrapassar o tempo determinado pela primeira vez, o cliente
deverá tentar renovar a alocação.
6.1.5 Multicast IP
Normalmente, as comunicações IP são feitas entre um transmissor e um receptor. Entretanto,
para algumas aplicações é interessante que um processo seja capaz de transmitir dados para um
grande número de receptores simultaneamente.
O multicast IP permite a transmissão de um datagrama IP a um conjunto de hosts que formam
um único grupo de multicast. É possível que os membros de um grupo sejam dispersados através de
redes físicas separadas. O multicast IP usa a mesma transmissão utilizada por outra transmissão de
datagrama IP, o que significa que os datagramas multicast podem ser perdidos, retardados,
duplicados ou entregues com defeito.
A participação em um grupo multicast IP é dinâmica. Um host pode se juntar ou deixar um
grupo a qualquer momento, podendo ser um membro de um número arbitrário de grupos multicast.
Um host pode enviar datagramas a um grupo multicast sem ser um membro.
Cada grupo multicast tem um único endereço multicast (classe D). Alguns endereços
multicast IP são permanentes e correspondem a grupos que sempre existem, ainda que atualmente
não possuam membros. Outros endereços multicast estão disponíveis para uso temporário (criados
quando necessários e descartados quando o número de membros chegar a zero).
Roteadores multicast especiais enviam datagramas multicast. Entretanto os hosts não
precisam conhecer claramente o roteador. O host transmite datagramas multicast usando a
capacidade de multicast da rede local. Se um roteador multicast estiver presente, ele receberá o
datagrama e o remeterá às outras redes, quando necessário.
O multicast IP usa o endereço de destino do datagrama para especificar a entrega multicast,
usando endereços classe D (figura abaixo).
1110 Identificação de grupo 224.0.0.0 a 239.255.255.255
Os primeiros quatro bits contêm 1110 e identificam o endereço como um multicast. Os 28 bits
restantes especificam determinado grupo multicast, podendo haver mais de 250 milhões de grupos.
Não há qualquer estrutura adicional nos bits de grupo. O campo de grupo não identifica a origem de
grupo nem contém um endereço de rede, como os endereços de classe A, B e C.
O endereço 224.0.0.0 é reservado (não pode ser atribuído a nenhum grupo). O endereço
224.0.0.1 é permanentemente atribuído ao grupo todos os hosts, que inclui todos os hosts e
roteadores participantes de multicast IP. Em geral o endereço de grupo de todos os hosts é usado
para atingir todas as máquinas que participam do multicast IP de uma rede local. Não existe
endereço multicast IP que se refira a todos os hosts da interligação em redes.
Os endereços multicast IP podem ser usados apenas como endereços de destino. Não podem
jamais aparecer no campo de endereço de origem de um datagrama.
Para permitir que uma máquina envie multicast o software IP deve permitir ao programa
aplicativo especificar um endereço multicast como um endereço IP de destino, e o software de
interface de rede deve ser capaz de mapear o endereço multicast IP no endereço multicast de
hardware correspondente (ou usar difusão se o hardware não aceitar multicast).
Para estender o software de host para receber datagramas multicast IP, o software IP do host
deve ter uma interface que permita que um programa aplicativo declare que o host deseja se juntar
ou deixar determinado grupo multicast. Se diversos programas aplicativos se juntarem ao mesmo
Redes de Computadores 1 45
grupo, o software IP deverá passar a cada um deles uma cópia dos datagramas que chegaram
destinados àquele grupo. Se todos os programas aplicativos deixarem o grupo o host não participará
mais do grupo.
Antes que um roteador multicast possa propagar informações de participação de multicast,
deve determinar se um ou mais hosts da rede local decidiram se juntar a um grupo multicast. Para
que isso aconteça, roteadores e hosts que implementam o multicast devem usar o IGMP (Internet
Group Management Protocol) para transmitir informações de participação de grupo.
O IGMP tem duas fases:
1. Quando um host junta-se a um novo grupo multicast, envia uma mensagem IGMP para o
endereço multicast “todos os hosts” declarando sua participação. Os roteadores multicast
locais recebem a mensagem e estabelecem o roteamento necessário, difundindo as
informações de participação no grupo a outros roteadores multicast, através de toda a
interligação em redes.
2. Visto que a participação é dinâmica, os roteadores multicast locais periodicamente buscam
os hosts na rede local para determinar quais permanecem membros de quais grupos. Se
nenhum host relata sua participação em um grupo após diversas buscas, o roteador
multicast admite que nenhum host da rede permanece naquele grupo e deixa de comunicar
a participação de grupo a outros roteadores multicast.
O padrão não especifica exatamente como são atribuídos a grupos de máquinas os endereços
multicast, mas sugere diversas possibilidades. Por exemplo, se o sistema operacional local atribui
um identificador inteiro a um conjunto de processos ou a um conjunto de aplicativos, aquele
identificador pode ser usado para formar um endereço multicast IP. Naturalmente, é possível que
um administrador de rede atribua endereços manualmente. Uma outra possibilidade é permitir que
uma máquina forme aleatoriamente endereços multicast, até que descubra um que não esteja em
uso.
O roteamento multicast é feito com base em uma spanning tree. Cada roteador troca
informações com seus vizinhos usando um protocolo de vetor de distância, construindo uma
spanning tree que abrange todos os membros de um grupo.
6.2 Protocolos de Transporte da Internet
O objetivo da camada de transporte é transportar dados entre aplicações, oferecendo uma
comunicação fim a fim confiável.
A camada de transporte provê um serviço de transporte definido pela aplicação. Seu
cabeçalho inclui um número de porta destino que identifica uma aplicação na máquina destino e um
número de porta origem que identifica uma aplicação na máquina origem.
A camada de transporte divide o fluxo de dados a ser transmitido em partes menores e passa
estas partes para a camada de rede, que as envia à camada de transporte destino a fim de que o fluxo
de dados seja remontado. A camada de transporte também lida com problemas de detecção e
recuperação de erros.
A Internet tem dois protocolos principais na camada de transporte, um operando no modo
orientado à conexão (TCP) e outro sem conexão (UDP). O UDP é basicamente o IP com um
pequeno cabeçalho.
6.2.1 TCP (Transmission Control Protocol)
O TCP é um protocolo orientado a conexão indicado para aplicações que trocam grande
quantidade de dados através de múltiplos roteadores.
Redes de Computadores 1 46
O TCP foi projetado para oferecer um fluxo de bytes fim a fim confiável em uma inter-rede
não confiável. As partes de uma inter-rede podem ter topologias, larguras de banda, retardos,
tamanhos de pacote e outros parâmetros diferentes. O TCP foi projetado para se adaptar
dinamicamente às propriedades da inter-rede e para ser robusto diante dos muitos tipos de falhas
que podem ocorrer.
Cada máquina compatível com o TCP tem uma entidade de transporte que gerencia fluxos e
interfaces TCP para a camada IP. Uma entidade TCP aceita fluxos de dados do usuário, divide-os
em partes de no máximo 64 Kbytes e envia cada parte em um datagrama IP distinto. Quando os
datagramas IP que contém dados TCP chegam a uma máquina, eles são enviados à entidade TCP,
que restaura os fluxos originais.
A camada IP não oferece qualquer garantia de que os datagramas serão entregues da forma
apropriada. Portanto, cabe ao TCP administrar os temporizadores e retransmiti-los sempre que
necessário. Os datagramas também podem chegar fora de ordem, cabendo ao TCP reorganizá-los
em mensagens na sequência correta. O TCP deve fornecer a confiabilidade que o IP não oferece.
6.2.1.1 O Modelo de Serviço TCP
O serviço TCP é obtido quando tanto o transmissor quanto o receptor criam pontos terminais,
denominados portas. Porta é o nome de um número de 16 bits usado pelo TCP para um TSAP. Para
que o serviço TCP funcione, é necessário que uma conexão seja explicitamente estabelecida entre
uma máquina transmissora e uma máquina receptora.
As portas com números abaixo de 1024 são denominadas portas conhecidas e são reservadas
para serviços padrão. A RFC 3232 define um repositório on-line onde podem ser consultadas as
portas conhecidas.
Todas as conexões TCP são full-duplex e ponto a ponto. Do ponto de vista da aplicação a
conexão consiste em 2 fluxos independentes de direções opostas. Uma conexão TCP é um fluxo de
dados e não um fluxo de mensagens. As fronteiras das mensagens não são preservadas de uma
extremidade à outra.
Quando uma aplicação passa dados para a entidade TCP, ela pode enviá-los imediatamente ou
armazená-los em um de buffer de acordo com suas necessidades (para aguardar outros dados e
enviar um volume maior de uma só vez, por exemplo). Quando a aplicação necessita que os dados
sejam enviados imediatamente, existem formas de programá-las de forma a descarregar o buffer no
momento apropriado.
6.2.1.2 O protocolo TCP
As entidades TCP transmissoras e receptoras trocam dados na forma de segmentos. Um
segmento consiste em um cabeçalho fixo de 20 bytes mais uma parte opcional, seguido de zero ou
mais bytes de dados. O software TCP decide qual deve ser o tamanho dos segmentos, podendo
acumular dados de várias escritas em um único segmento ou dividir os dados de uma única escrita
em vários segmentos. Cada segmento deve caber na carga útil do IP. Ainda, cada rede tem uma
MTU (Maximum Transfer Unit), e cada segmento deve caber nesta MTU.
O protocolo básico utilizado pelas entidades TCP é o protocolo de janela deslizante. Quando
envia um segmento, o transmissor dispara um temporizador. Quando o segmento chega ao destino,
a entidade TCP receptora retorna um segmento (com ou sem dados, de acordo com as
circunstâncias) com um número de confirmação igual ao próximo número de sequência que espera
receber. Se o temporizador do transmissor expirar antes de a confirmação ser recebida, o segmento
será retransmitido.
Redes de Computadores 1 47
6.2.1.3 O Cabeçalho de Segmento TCP
A figura abaixo mostra um exemplo de segmento TCP. Cada segmento começa com um
cabeçalho de formato fixo de 20 bytes. O cabeçalho fixo pode ser seguido por opções de cabeçalho.
Depois das opções pode haver 65.515 bytes de dados. Os segmentos sem dados são válidos e em
geral são utilizados para confirmações e mensagens de controle.
Os campos porta origem e porta destino identificam os pontos terminais locais da conexão,
ou seja, uma aplicação. Uma porta e o endereço IP do host formam um TSAP único de 48 bits.
O campo número de sequência indica o número de sequência do segmento. Ele indica em que
posição (byte) dos dados o segmento deve ser colocado. O campo número de confirmação
especifica o próximo byte aguardado.
O canpo HLEN (header length – tamanho do cabeçalho) informa quantas palavras de 32 bits
existem no cabeçalho TCP. Segue a ele um campo de 6 bits que não é utilizado.
O TCP tem seis flags de 1 bit. O flag URG (urgent pointer – ponteiro urgente) é usado para
indicar dados urgentes. O flag ACK é usado para indicar que número de confirmação contém uma
confirmação. O flag PSH é uma solicitação ao receptor para entregar os dados à aplicação mediante
sua chegada, em vez de armazená-los em um buffer. O flag RST é utilizado para reinicializar uma
conexão que tenha ficado confusa devido a uma falha. Ele também é usado para rejeitar um
segmento inválido ou para recusar uma tentativa de conexão. O flag SYN é usado para estabelecer
conexões. A solicitação de conexão tem SYN = 1 e ACK = 0. A resposta contém uma confirmação
(SYN = 1 e ACK = 1). O flag FIN é utilizado para encerrar uma conexão.
O controle de fluxo no TCP é gerenciado por meio de uma janela deslizante de tamanho
variável. O campo tamanho da janela indica quantos bytes podem ser enviados a partir do byte
confirmado.
O campo soma de verificação é utilizado para aumentar a confiabilidade. Ele confere a soma
de verificação tanto do cabeçalho quanto dos dados.
O campo opções foi projetado como uma forma de oferecer recursos extras, ou seja, recursos
que não foram previstos pelo cabeçalho comum.
6.2.1.4 Gerenciamento de Conexão TCP
As conexões estabelecidas no TCP utilizam o three way handshake. Para estabelecer uma
conexão, um lado aguarda passivamente. O outro lado solicita uma conexão especificando o
endereço IP e a porta a que deseja se conectar. É enviado um segmento TCP com o bit SYN ativado
e o bit ACK desativado.
Quando esse segmento chega ao destino, a entidade TCP do destino verifica se existe um
Redes de Computadores 1 48
processo aguardando na porta destino. Se não existir, ela enviará uma resposta com o bit RST
ativado para rejeitar a conexão.
Se algum processo estiver na escuta da porta a ele será entregue o segmento TCP recebido.
Em seguida ele poderá aceitar ou rejeitar a conexão. Se o processo aceitar, um segmento de
confirmação será retornado. A figura abaixo ilustra a conexão entre dois hosts.
Para encerrar uma conexão, qualquer dos lados pode enviar um segmento com o bit FIN
ativado, o que significa que não há mais dados a serem transmitidos. Quando o FIN é confirmado,
aquela direção da conexão é desativada. No entanto, os dados podem continuar a fluir na outra
direção. Quando as duas direções da conexão estiverem desativadas, a conexão será encerrada.
6.2.1.5 Política de Transmissão TCP
O gerenciamento de janelas no TCP não é diretamente ligado às confirmações. Supondo que o
receptor tenha um buffer de 4.096 bytes e que o transmissor envie um segmento de 1.024 bytes, que
é recebido corretamente, o receptor irá confirmar o segmento. Como agora ele só tem 3.072 bytes
de espaço disponível em seu buffer, o receptor anunciará uma janela de 3.072 bytes.
Se o transmissor enviar outros 3.072 bytes, e se nenhum aplicativo retirou os dados anteriores
do buffer o, segmento é confirmado e a janela anunciada é 0. O transmissor deverá parar de enviar
até o processo de aplicação no host receptor remover alguns dados do buffer, quando então poderá
ser anunciada uma janela maior.
Quando a janela é anunciada como 0, o transmissor não pode enviar segmentos da forma
como o faria sob condições normais, mas há duas exceções. Na primeira, os dados urgentes podem
ser enviados para, por exemplo, permitir que o usuário elimine o processo executado na máquina
remota. Na segunda, o transmissor pode enviar um segmento de 1 byte para fazer com que o
receptor anuncie novamente o próximo byte aguardado e o tamanho da janela. O TCP oferece essa
opção de forma explícita para evitar um impasse no caso de um anúncio de janela se perder.
Os transmissores não são obrigados a enviar os dados assim que os recebem das aplicações.
Nem os receptores têm a obrigação de enviar as confirmações imediatamente. Essa liberdade pode
SYN (seq=x)
SYN (seq=y, ack=x+1)
(seq=x+1, ack=y+1)
Host 2Host 1SYN (seq=x)
SYN (seq=y)
SYN (seq=x+1, ack=y+1)
Host 2Host 1
SYN (seq=y, ack=x+1)
1K
Aplicação escreve 1KB
Aplicação escreve 4KB
Transmissor pode enviar até 2KB
Transmissor impedido de transmitir
Transmissor Receptor
Buffer do receptor
VAZIO0 4k
0 4k
1K
CHEIO0 4k
0 4k2K
Aplicação lê 2KB
0 4k2K
Redes de Computadores 1 49
ser explorada para melhorar o desempenho das conexões, evitando o envio de pacotes muito
pequenos.
Mas esta funcionalidade não é muito boa para aplicações que requerem grande interatividade
como, por exemplo, uma conexão Telnet. Uma abordagem usada para otimizar essa situação é
retardar as confirmações e atualizações da janela durante 500 ms na esperança de encontrar algum
dado que lhes dê uma “carona”. Assumindo que o editor ecoe dentro de 500 ms, apenas um pacote
precisará ser retomado ao usuário remoto, diminuindo a carga na rede.
Embora essa regra reduza a carga imposta à rede pelo receptor, o transmissor ainda estará
operando de modo ineficaz. Uma forma de reduzir esse uso é conhecido como o algoritmo de
Nagle. Quando os dados chegam ao transmissor em um byte por vez, ele envia somente o primeiro
byte e armazena todos os outros até que o byte pendente tenha sido confirmado. Em seguida, envia
todos os dados armazenados em único segmento TCP e começa a armazenar outra vez. O algoritmo
permite ainda que um novo pacote seja enviado se houver dados suficientes para preencher metade
da janela ou um segmento máximo.
Outro problema para o receptor é o que fazer com os segmentos fora de ordem. Eles podem
ser mantidos ou descartados, a critério do receptor. As confirmações só podem ser enviadas quando
todos os dados até o byte confirmado tenham sido recebidos. Se o receptor receber os segmentos 0,
1, 2, 4, 5, 6 e 7, ele poderá confirmar tudo até o último byte do segmento 2, inclusive. Quando o
transmissor sofrer um timeout, ele retransmitirá o segmento 3. Se o receptor tiver armazenado os
segmentos 4 a 7, ele poderá, quando receber o segmento 3, confirmar todos os bytes até o fim do
segmento 7.
6.2.2 UDP (User Datagram Protocol)
O UDP oferece uma forma para aplicações enviarem datagramas IP sem que seja necessário
estabelecer uma conexão. É um protocolo sem estado e não orientado à conexão, projetado para
pequenas transmissões de dados e para dados que não necessitam de um mecanismo de transporte
confiável. O UDP é descrito na RFC 768.
No UDP os pacotes podem se perder, serem duplicados ou entregues fora de ordem. A
aplicação que usa o UDP deve ser responsável pela confiabilidade e pelo controle de fluxo.
Um segmento UDP consiste em um cabeçalho de 8 bytes seguido dos dados. O cabeçalho é
mostrado na figura abaixo. Os campos Source port e Destination port têm a mesma função no TCP:
identificar os pontos finais nas máquinas de origem e destino. O campo UDP length especifica o
tamanho do segmento, incluindo o cabeçalho. UDP checksum têm a mesma função que o campo de
checksum do TCP.
O UDP dá à aplicação acesso direto à camada IP, definindo apenas os números de porta
origem e destino.
6.2.3 Exemplos de Portas Conhecidas
Uma aplicação TCP ou UDP é identificada pelo seu endereço de nível de transporte, ou seja,
pela sua porta (um número inteiro de 16 bits).
Para que um pacote chegue à aplicação de destino é necessário que o transmissor saiba, de
alguma forma, em que porta a aplicação está esperando a chegada do pacote. Para facilitar o
Source port
32 bits
Destination port
UDP length UDP checksum
Redes de Computadores 1 50
trabalho do transmissor, algumas aplicações esperam seus pacotes sempre em uma mesma porta,
conhecida por “porta conhecida” da aplicação.
Porta Aplicação
7 echo
20 ftp-data
21 ftp
22 ssh
23 telnet
25 smtp
53 domain
69 tftp
70 gopher
79 finger
80 http
88 kerberos
110 pop-3
119 nntp
161 snmp
162 snmp-trap
443 https
6.3 Aplicações
6.3.1 DNS (Domain Name System)
Raramente os programas fazem referência a hosts utilizando seus endereços binários de rede.
Em vez de números, eles utilizam nomes. Todavia, a rede em si só compreende endereços binários.
Portanto, é necessário algum tipo de mecanismo para converter nomes em endereços de rede.
A essência do DNS é a atribuição de nomes de forma hierárquica, baseada em domínios.
Para mapear um nome em um endereço IP, um programa aplicativo chama um procedimento
de biblioteca denominado resolver e passa o nome para ele como um parâmetro. O resolver envia
um pacote UDP para um servidor DNS local, que procura o nome e retorna o endereço IP para o
resolver. Em seguida, o resolver retorna o endereço IP para o aplicativo que fez a chamada.
6.3.1.1 Espaço de Nomes do DNS
A Internet é dividida em domínios de primeiro nível. Os domínios são particionados em
subdomínios, que também são particionados, e assim por diante. Todos esses domínios podem ser
representados por uma árvore, como mostra a figura abaixo. As folhas da árvore representam
domínios que não têm subdomínios (contêm apenas máquinas).
Os domínios de primeiro nível têm dois tipos: genéricos e de países. Os domínios genéricos
são com (comercial), edu (instituições educacionais), gov (governo federal norte-americano), int
int com edu gov mil org net jp us nl . . .
sun
eng
yale
cs eng
ai linda
robot
ieeeacm
jack jill
ac co
keio
cs
pc24
nec
csl
oce vu
cs
flits fluit
Genérico Países
Redes de Computadores 1 51
(algumas organizações internacionais), net (provedores de rede), mil (forças armadas dos Estados
Unidos) e org (organizações sem fins lucrativos). Os domínios de países incluem uma entrada para
cada país.
Cada domínio tem seu nome definido pelo caminho entre ele e a raiz. Esses componentes são
separados por pontos. Dessa forma, o departamento de engenharia da Sun Microsystems poderia ser
eng.sun.com.
Os nomes de domínio não fazem distinção entre letras maiúsculas e minúsculas. EDU e edu
são a mesma coisa. Os nomes de componentes podem ter até 63 caracteres e os nomes de caminhos
completos não podem exceder 255 caracteres.
Cada domínio controla como serão alocados todos os domínios que estão abaixo dele. Para
que um novo domínio seja criado, é necessária a permissão do domínio no qual ele será incluído.
Dessa forma, os conflitos de nomes são evitados e cada domínio pode controlar seus subdomínios.
Uma vez que um novo domínio tenha sido criado e registrado, ele poderá criar subdomínios, sem
que seja necessário ter permissão de alguém que esteja em um nível mais alto da árvore.
A atribuição de nomes leva em consideração as fronteiras organizacionais, e não as redes
físicas.
6.3.1.2 Servidores de Nomes
Para evitar os problemas associados à presença de uma única fonte de informações, o espaço
de nomes do DNS é dividido em zonas independentes. Normalmente, uma zona terá um servidor de
nomes principal, que obtém suas informações a partir de um arquivo contido em sua unidade de
disco e um ou mais servidores de nomes secundários, que obtêm suas informações a partir do
servidor de nomes principal. A localização das fronteiras de uma zona fica a cargo de seu
administrador.
Quando um resolver tem uma consulta sobre um nome de domínio, ele a envia para um dos
servidores de nomes locais. Se o domínio que estiver sendo procurado estiver sob a jurisdição do
servidor de nomes, serão retornados os registros de recurso oficiais. Um registro oficial é aquele
que é fornecido pela autoridade que gerencia o registro. Os registros mantidos em cache, ao
contrário dos registros oficiais, podem estar desatualizados.
Se, no entanto, o domínio for remoto e localmente não houver informações disponíveis sobre
ele, o servidor de nomes enviará uma mensagem de consulta para o servidor de nomes de primeiro
nível, fazendo perguntas sobre o domínio solicitado. Esta pergunta segue de servidor em servidor
até que uma resposta seja obtida.
O método de consulta descrito é conhecido como uma consulta recursiva, pois cada servidor
que não tiver as informações solicitadas poderá encontrá-las em algum lugar e informar o que
encontrou.
O servidor DNS aguarda conexões escutando a porta 53.
6.3.2 Telnet
O Telnet é um protocolo simples de terminal remoto que permite que um usuário em
determinado site estabeleça uma conexão TCP com um servidor situado em outro site. O Telnet
transmite os toques no teclado do usuário diretamente ao computador remoto, como se estivessem
sendo digitados no teclado conectado à máquina remota. Esse terminal também retorna a saída da
máquina remota até a tela do usuário. O serviço faz com que o teclado e o monitor do usuário
pareçam estar conectados diretamente à máquina remota.
O Telnet define um terminal virtual padrão para sistemas remotos. Os programas clientes não
Redes de Computadores 1 52
precisam entender os detalhes de todos os sistemas remotos possíveis; eles são projetados para usar
a interface padrão. O Telnet trata ambas as pontas da conexão de forma simétrica. Em particular, o
Telnet não obriga a entrada do cliente via teclado, nem obriga o cliente a ter a saída indicada na
tela. Dessa forma, o Telnet permite que um programa arbitrário torne-se um cliente.
O servidor Telnet aguarda conexões escutando a porta 23.
6.3.3 FTP (File Transfer Protocol)
Com um protocolo de transporte fim a fim confiável, como o TCP, a transferência de arquivos
pode parecer trivial. No entanto os detalhes da autorização, denominação e representação entre
máquinas heterogêneas fazem com que o protocolo se torne complexo. Além disso, o FTP oferece
muitas vantagens além da função de transferência propriamente dita:
Acesso interativo: Apesar do TCP ser projetado para uso por programas, muitas
implementações fornecem uma interface interativa que permite que as pessoas interajam
facilmente com servidores remotos.
Especificação de formato (representação): O FTP permite que o cliente especifique o tipo
e o formato dos dados armazenados. Por exemplo, o usuário pode determinar se um arquivo
contém texto ou números inteiros binários e se os arquivos de textos usam os conjuntos de
caracteres ASCII ou EBCDIC.
Controle de autenticação: O FTP requer que os clientes se identifiquem enviando um
nome de login e a senha ao servidor antes de requisitar a transferência de arquivos.
A maioria das implementações de servidor FTP permite o acesso simultâneo de vários
clientes. Os clientes usam o TCP para se conectar a um processo servidor único que aguarda
conexões e cria um processo escravo para tratar cada conexão. O processo escravo não realiza toda
a computação necessária. Ao contrário, o escravo aceita e trata a conexão de controle do cliente,
mas usa um processo ou processos adicionais para tratar uma conexão de transferência de dados à
parte. A conexão de controle transporta comandos que informam ao servidor qual arquivo transferir.
A conexão de transferência de dados, que também usa o TCP como protocolo de transferência,
transporta todas as transferências de dados.
As conexões de transferência de dados e os processos de transferência de dados que as
utilizam podem ser criados dinamicamente, quando necessário, mas a conexão de controle persiste
através de uma sessão. Uma vez que a conexão de controle desaparece, a sessão é finalizada e o
software de ambas as extremidades encerra todos os processos de transferência de dados.
Quando um cliente forma uma conexão inicial com um servidor, o cliente usa um número de
porta aleatório atribuído localmente, mas que contata o servidor pela porta 21. Para uma
transferência de dados o cliente obtém uma porta não utilizada em sua máquina e a usa para
conectar o processo de transferência de dados da máquina do servidor. Esse processo usa a porta 20,
reservada para a transferência de dados FTP.
O FTP usa o protocolo Telnet para a conexão de controle.
6.3.4 SSH (Secure Shell)
O SSH é um protocolo que permite a conexão com outro computador na rede, de forma a
executar comandos de uma unidade remota. Possui as mesmas funcionalidades do Telnet e do FTP
com a vantagem da conexão entre o cliente e o servidor ser criptografada.
Também é muito utilizado para a criação de túneis a fim de redirecionar pacotes de dados
entre aplicações. Tal técnica é conhecida como tunneling.
Redes de Computadores 1 53
6.3.5 Correio Eletrônico
Os primeiros sistemas de correio eletrônico, ou e-mail, eram simplesmente formados por
protocolos de transferência de arquivos, com a convenção de que a primeira linha de cada
mensagem (arquivo) contivesse o endereço do destinatário. Com o passar do tempo, as limitações
dessa estratégia se tornaram mais óbvias:
O envio de uma mensagem para um grupo de pessoas não era conveniente.
As mensagens não tinham estrutura interna, dificultando seu processamento.
O remetente nunca sabia se uma mensagem havia chegado ou não.
Não era possível enviar mensagens com mistura de texto com multimídia.
Em 1982, as propostas de sistemas de correio eletrônico da ARPANET foram publicadas
como a RFC 821 (protocolo de transmissão) e a RFC 822 (formato de mensagem). Desde então,
essas RFCs se tornaram os padrões na Internet.
6.3.5.1 Arquitetura e Serviços
Os sistemas de correio eletrônico costumam ser divididos em dois subsistemas: os agentes
usuários (user agents), que permitem que usuários leiam e enviem mensagens, e os agentes de
transferência de mensagens (message transfer agents), que deslocam as mensagens da origem para
o destino.
Os agentes usuários são programas locais que permitem a interação com o sistema de correio
eletrônico. Normalmente, os agentes de transferência de mensagens são processos executados em
segundo plano e que transportam mensagens de correio eletrônico através do sistema.
Uma ideia chave em todos os sistemas de correio eletrônico é a distinção entre o envelope e
seu conteúdo. O envelope encapsula a mensagem, contendo todas as informações necessárias para o
seu transporte.
A mensagem dentro do envelope contém duas partes: o cabeçalho e o corpo. O cabeçalho
contém informações de controle para os agentes usuários, enquanto o corpo da mensagem interessa
somente ao destinatário.
6.3.5.2 Formatos de Mensagem
As mensagens consistem em um envelope primitivo (descrito na RFC 821), em alguns
campos de cabeçalho, em uma linha em branco e no corpo da mensagem. Cada campo de cabeçalho
consiste em uma única linha de texto ASCII contendo o nome do campo, um sinal de dois pontos e
um valor.
Os principais campos de cabeçalho relacionados ao transporte de mensagens, assim como seu
significado, são listados na tabela abaixo.
Cabeçalho Significado
To: Endereço(s) de correio eletrônico do(s) destinatário(s) principal(is)
Cc: Endereço(s) de correio eletrônico do(s) destinatário(s) secundário(s)
Bcc: Endereço(s) de correio eletrônico para cópias carbono cegas
From: Pessoa(s) que criou(aram) a mensagem
Sender: Endereço de correio eletrônico do remetente
Received: A linha que é incluída por cada agente de transferência durante o percurso
Return-Path: Pode ser usada para identificar um caminho de volta ao remetente
Além dos campos da tabela acima, as mensagens da RFC 822 também podem conter uma
variedade de campos de cabeçalho utilizado pelos agentes usuários ou destinatários. Os mais
comuns são listados na tabela abaixo.
Redes de Computadores 1 54
Cabeçalho Significado
Date: Data e hora em que a mensagem foi enviada
Reply-To: Endereço de correio eletrônico para onde as respostas devem ser enviadas
Message-Id: O número exclusivo que será usado para referência posterior
In-Reply-To: Id da mensagem a que essa resposta será enviada
References: Outras Ids de mensagem relevantes
Keyword: Palavras chave do usuário
Subject: Assunto das mensagens que é apresentado em apenas uma linha
A RFC 822 permite que os usuários inventem novos cabeçalhos para seu próprio uso,
contanto que esses cabeçalhos comecem com o string “X-”.
Depois dos cabeçalhos vem o corpo da mensagem, que carregam qualquer coisa que os
usuários queiram enviar.
No início da ARPANET, o correio eletrônico consistia em mensagens texto expressas em
código ASCII. Para esse ambiente, a RFC 822 definiu tudo o que era preciso. Hoje em dia, na
Internet, essa estratégia deixou de ser adequada. Os problemas incluem o envio e o recebimento de
mensagens:
em idiomas com acentos
em alfabetos não latinos (por exemplo, hebraico e russo)
em idiomas sem alfabetos (por exemplo, chinês e japonês)
que não contêm textos (por exemplo, áudio e vídeo)
Uma solução foi proposta na RFC 1341 e atualizada na RFC 1521. Essa solução, denominada
MIME (Multipurpose Internet Mail Extensions), está sendo amplamente utilizada.
A ideia básica do MIME é continuar a usar o formato da RFC 822, mas incluir uma estrutura
para o corpo da mensagem e definir regras para mensagens não ASCII. Ao manterem o formato da
RFC 822, as mensagens no padrão MIME podem ser enviadas através da utilização dos protocolos e
programas de correio eletrônico existentes no mercado. Só é necessário alterar os programas de
envio e recebimento, o que os próprios usuários podem fazer.
O MIME define cinco novos cabeçalhos de mensagem, mostrados na tabela abaixo.
Cabeçalho Significado
MIME-Version: Identifica a versão do MIME
Content-Description: String que identifica o conteúdo da mensagem
Content-Id: Identificador exclusivo
Content-Transfer-Encoding: Como o corpo da mensagem está codificado para transmissão
Content-Type: Natureza da mensagem
O campo MIME-Version informa ao agente usuário não só que ele está lidando com uma
mensagem MIME, mas também a versão que está sendo usada. Qualquer mensagem que não
contenha um cabeçalho MIME-Version é uma mensagem em texto simples.
O cabeçalho Content-Description é uma string que informa o conteúdo da mensagem.
O cabeçalho Content-Id identifica o conteúdo. Ele utiliza o mesmo formato que o cabeçalho
Message-Id padrão.
Content-Transfer-Encoding informa como o corpo da mensagem está codificado para
transmissão através de uma rede que possa fazer alguma objeção a caracteres que não sejam letras,
números e outros sinais de pontuação. São fornecidos cinco esquemas e uma saída para novos
esquemas. O esquema mais simples é formado apenas por texto em código.
Redes de Computadores 1 55
A maneira de codificar mensagens binárias é utilizar a codificação base 64, às vezes chamada
de armadura ASCII. Nesse esquema, grupos de 24 bits são divididos em até quatro unidades de 6
bits, com cada unidade sendo enviada como um caractere ASCII válido. A codificação é “A” para
0, “B” para 1, e assim por diante, seguida das 26 letras minúsculas, dos dez dígitos e finalmente “+”
e “/” para 62 e 63 respectivamente. As sequências “= =” e “=” são usadas para indicar que o último
grupo continha apenas 8 ou 16 bits, respectivamente. as quebras de linha são ignoradas, portanto
podem ser inseridos à vontade para manter as linhas curtas.
Para as mensagens quase que totalmente em ASCII, mas com alguns caracteres não ASCII, a
codificação base 64 se mostra um tanto ineficiente. Em seu lugar é utilizado um método conhecido
como codificação quoted printable. Trata-se apenas de um código ASCII de 7 bits, com todos os
caracteres acima de 127 codificados como um sinal de igual seguido do valor do caractere (dois
dígitos hexadecimais).
Tipo Subtipo Descrição
Text Plain Texto sem formatação
Richtext Texto incluindo comandos simples de formatação
Image Gif Fotografia no formato GIF
Jpeg Fotografia no formato JPEG
Audio Basic Som audível
Video Mpeg Filme no formato MPEG
Application Octet-stream Uma sequência de bytes não interpretada
PostScript Um documento que pode ser impresso em PostScript
Message
Rfc822 Uma mensagem no formato MIME RFC 822
Partial A mensagem foi dividida para transmissão
External-body A mensagem deve ser obtida através da rede
Multipart
Mixed Partes independentes na ordem especificada
Alternative A mesma mensagem em diferentes formatos
Parallel As partes devem ser vistas simultaneamente
Digest Cada parte é uma mensagem RFC 822 completa
O cabeçalho Content-Type especifica a natureza do corpo da mensagem. São definidos sete
tipos na RFC 1521, sendo que cada um deles tem mais um ou subtipos (tabela acima).
6.3.5.3 Transferência de Mensagens
Na Internet, as mensagens de correio eletrônico são entregues quando a máquina origem
estabelece uma conexão TCP com a porta 25 da máquina destino. Um processo de correio
eletrônico que implementa o SMTP (Simple Mail Transfer Protocol) permanece escutando essa
porta. Esse processo aceita as conexões recebidas e copia as mensagens nelas contidas para as
mailboxes apropriadas. Se uma mensagem não puder ser entregue, um relatório de erros contendo a
primeira parte da mensagem não entregue será retornada ao remetente.
Após estabelecer a conexão, a máquina de transmissão (cliente) espera que a máquina de
recepção (servidor) comunique-se primeiro. O servidor começa por enviar uma linha de texto
informando sua identidade e indicando se está ou não preparado para receber mensagens. Caso não
esteja, o cliente encerrará a conexão e tentará outra vez mais tarde.
Se o servidor estiver pronto para receber mensagens, o cliente anunciará de quem veio a
mensagem e para quem ela está indo. Se esse destinatário existir no destino, o servidor sinalizará
para o cliente enviar a mensagem. Em seguida, o cliente enviará a mensagem e o servidor vai
confirmá-la. Quando todas as mensagens tiverem sido trocadas, a conexão será encerrada.
Segue abaixo um exemplo de conexão para transferência de uma mensagem de correio
Redes de Computadores 1 56
eletrônico simulada através de uma conexão Telnet:
telnet smtp.destino.com.br 25
220 Protegido SMTP server
helo rayra.inventado.com.br
250 Hello rayra.inventado.com.br, pleased to meet you
mail from: <[email protected]>
250 <[email protected]>... Sender ok
rcpt to: <[email protected]>
250 <[email protected]>... Recipient ok
data
354 Please start mail input.
subject: Teste de email
Primeira linha da mensagem de teste.
Segunda linha.
Quarta linha.
.
250 Mail queued for delivery.
Para a transferência acima, a seguinte mensagem seria recebida:
Return-Path: <[email protected]>
Received: from servidor (root@localhost [127.0.0.1])
by smtp.destino.com.br (8.12.4/8.9.3) with SMTP id i6RDVM1U008056
for <[email protected]>; Tue, 27 Jul 2004 10:31:25 -0300
Date: Tue, 27 Jul 2004 10:31:22 -0300
From: [email protected]
Message-Id: <[email protected]>
Received: from 192.168.1.1 ([192.168.1.1] helo=fwall.destino.com.br) by
servidor ; 27 Jul 04 13:31:22 -0000
X-Assp-Spam-Prob: 0.00000
subject: Teste de email
Para: [email protected]
Assunto: Teste de email 3
Data: 27/07/04 13:31
Primeira linha da mensagem de teste.
Segunda linha.
Quarta linha.
6.3.5.4 Entrega Final
Com o advento das pessoas acessando a Internet o modelo proposto pelo SMTP falha, pois
provavelmente o receptor da mensagem não estará com seu computador ligado.
A solução é fazer um agente de transferência de mensagens em uma máquina servidora
aceitar mensagens de correio eletrônico para seus usuários e armazená-las nas respectivas caixas de
correio. Assim as mensagens de correio eletrônico podem ser trocadas a qualquer momento.
Para que um usuário possa receber suas mensagens de correio eletrônico foi necessário criar
outro protocolo que permita aos agentes usuários buscarem as mensagens no servidor. A seguir são
descritas as principais formas desenvolvidas com esta finalidade.
Redes de Computadores 1 57
POP3
O POP3 (Post Office Protocol Version 3) é descrito pela RFC 1939. Para o seu
funcionamento, ele estabelece uma conexão TCP com o servidor na porta 110. Depois que a
conexão é estabelecida o protocolo passa por três estados em sequência:
1. Autorização
2. Transações
3. Atualização
O estado de autorização lida com o login do usuário. O estado de transação lida com a coleta
de mensagens e com a marcação das mensagens para exclusão. O estado de atualização faz com
que as mensagens marcadas para exclusão sejam efetivamente excluídas.
Com o POP3 pode-se baixar mensagens específicas e também eliminar apenas as mensagens
que não se deseja mais, embora o mais comum seja o programa do cliente baixar e eliminar do
servidor todas as mensagens.
IMAP
Para um usuário com uma conta de correio eletrônico que é sempre acessada a partir de um
único computador o POP3 funciona bem. Porém muitas pessoas têm alguma conta de correio
eletrônico que querem acessar a partir de mais de um local. Embora o POP3 torne isso possível, o
resultado é que as mensagens do usuário ficarão espalhado por várias máquinas. Para resolver esta
situação foi criado o IMAP (Internet Message Access Protocol), definido na RFC 3501.
O IMAP pressupõe que todas as mensagens permanecerão no servidor e fornece mecanismos
para leitura de mensagens ou mesmo partes de mensagens. O IMAP também fornece mecanismos
para criar, destruir e manipular várias caixas de correio no servidor. Ao contrário do POP3, o IMAP
não copia as mensagens para a máquina pessoal do usuário.
O servidor IMAP espera por conexões de clientes na porta 143 do TCP.
Webmail
Um webmail não é um protocolo, mas uma forma que alguns sites da Web oferecem para que
os usuários possam ler suas mensagens de correio eletrônico.
Para usar o sistema o usuário abre uma página na qual ele entra com uma identificação e uma
senha. A partir daí ele tem acesso imediato às suas mensagens, de forma parecida a um cliente
IMAP.
6.3.5.5 Privacidade de Correio Eletrônico
Quando uma mensagem de correio eletrônico é enviada entre dois sites distantes, geralmente ela
transita por várias máquinas até chegar a seu destino. Qualquer uma dessas máquinas pode ler e
armazenar a mensagem para usá-la posteriormente.
A única forma de se obter privacidade com correio eletrônico é criptografar a mensagem
utilizando algum software de criptografia dentre os vários disponíveis na Internet. Os mais
conhecidos são o PGP (Pretty Good Privacy), o PEM (Privacy Enhanced Mail) e o GPG (GNU
Privacy Guard).
6.3.6 WWW (World Wide Web)
A Web é a estrutura que permite o acesso a documentos vinculados espalhados por milhares
de máquinas na Internet. Em poucos anos ela deixou de ser um meio para distribuir dados técnicos
para se tornar a aplicação que milhões de pessoas consideram ser “A Internet”.
A Web começou em 1989 no CERN, o centro europeu para pesquisa nuclear. Ela nasceu da
Redes de Computadores 1 58
necessidade de se fazer com que um grupos de cientistas de diferentes nacionalidades pudessem
colaborar uns com os outros através da troca de relatórios, plantas, desenhos, fotos e outros
documentos.
A proposta inicial para uma teia de documentos surgiu em março de 1989. O primeiro
protótipo (no modo texto) já era operacional um ano e meio depois. Em dezembro de 1991, foi
realizada uma demonstração pública na conferência Hypertext'91. Seu desenvolvimento prosseguiu
e em fevereiro de 1993 houve o lançamento da primeira interface gráfica, o Mosaic.
6.3.6.1 Servidores Web
Todos os sites da Web têm servidores escutando a porta 80 do TCP, aguardando conexões dos
clientes, que geralmente estão utilizando algum browser (software cliente para Web). Depois de
estabelecida a conexão, o cliente envia uma solicitação e o servidor envia uma resposta. A conexão
é, então, liberada. O protocolo que define as solicitações e respostas válidas é chamado de HTTP
(HyperText Transfer Protocol).
6.3.6.2 HTTP (HyperText Transfer Protocol)
O HTTP é o protocolo de transferência padrão da Web, e cada interação consiste em uma
solicitação ASCII, seguida de uma resposta RFC 822 do tipo fornecido pelo MIME. Embora o uso
do TCP para a conexão de transporte seja mais comum, não é uma exigência formal do padrão.
O HTTP está em constante evolução. Há várias versões em uso, assim como outras em
desenvolvimento. O protocolo consiste em dois itens distintos: um conjunto de solicitações dos
browsers aos servidores e um conjunto de respostas que retornam.
Todas as novas versões do HTTP aceitam dois tipos de solicitações: simples e completas.
Uma solicitação simples é apenas uma linha GET que identifica a página desejada, sem a versão do
protocolo. A resposta é formada apenas pela página, sem cabeçalhos, sem MIME e sem códigos. A
página será retornada sem nenhuma indicação de seu tipo de conteúdo. Esse mecanismo é
necessário para a compatibilidade com browsers antigos.
As solicitações completas são indicadas pela presença da versão do protocolo na linha de
solicitação GET. As solicitações podem consistir em várias linhas, seguidas de uma linha em branco
para indicar o fim da solicitação. A primeira linha de uma solicitação completa contém o comando
(onde GET é apenas uma das possibilidades), a página desejada, e o protocolo/versão. As linhas
subsequentes contém cabeçalhos RFC 822. Apesar de ter sido projetado para utilização na Web, o
HTTP foi criado para ser mais genérico do que o necessário, com vistas a futuras aplicações. Por
esse motivo, a primeira palavra na linha da solicitação completa é o nome do comando a ser
executado na página Web. Os comandos são listados na tabela abaixo. Os nomes fazem distinção
entre maiúsculas e minúsculas.
Método Descrição
GET Solicita a leitura de uma página da Web
HEAD Solicita a leitura de um cabeçalho de página Web
PUT Solicita o armazenamento de uma página da Web
POST Acrescenta a um recurso (por exemplo, uma página da Web)
DELETE Remove a página da Web
LINK Conecta dois recursos existentes
UNLINK Desfaz uma conexão entre dois recursos
O método GET solicita ao servidor que envie a página, codificada no MIME. Entretanto, se a
solicitação GET for seguida de um cabeçalho If-Modified-Since, o servidor só enviará os dados se
eles tiverem sido alterados desde a data fornecida. Com esse mecanismo, um browser pode, ao
receber a solicitação de uma página armazenada no cache, enviar uma solicitação condicional ao
Redes de Computadores 1 59
servidor, associando a data da alteração à página.
6.4 Exercícios
1) Qual o objetivo do protocolo IP?
2) O que é um datagrama IP?
3) Como o protocolo IP faz para enviar datagramas cujo tamanho é maior que a unidade máxima de
transferência do nível de enlace de dados? Por exemplo, enviar um datagrama de 20 Kbytes por
uma rede ethernet, na qual o quadro tem tamanho máximo de aproximadamente 1500 bytes.
4) Qual o mecanismo utilizado pelo protocolo IP para evitar que um datagrama mal formado circule
indefinidamente?
5) O que é um endereço de difusão?
6) Qual a classe e os endereços de rede e host dos endereços IP 10.2.1.1, 128.63.2.100,
201.222.5.64, 192.6.141.2, 130.113.64.16 e 120.241.256.8?
7) Qual o número da rede do endereço 175.14.63.9 com máscara 255.255.0.0? E com máscara
255.255.224.0? E com máscara 255.255.255.0?
8) Cite uma razão para se dividir uma rede em sub-redes. Qual mecanismo é utilizado para realizar
tal divisão?
9) Suponha que uma organização receba o endereço classe C 210.150.8.0 e precise no máximo de 5
sub-redes com 22 hosts cada. Qual máscara de rede deve ser utilizada?
10) Para que servem endereços IP falsos?
11) Quando se utiliza a técnica de NAT?
12) Como funciona o NAT?
13) Para que serve o protocolo ICMP? Ele é transportado por qual protocolo?
14) Para que foi criado o protocolo ARP? Como ele funciona?
15) Para que serve o protocolo RARP?
16) Para que serve o protocolo BOOTP?
17) Cite uma vantagem em se utilizar o protocolo DHCP em vez do BOOTP.
18) Qual a vantagem em se utilizar multicast em vez de se enviar vários pacotes individualmente,
um para cada destino?
19) Qual o principal objetivo do protocolo TCP?
20) Como o TCP faz para enviar dados grandes (maiores que 64 Kbytes) para um host em outra
máquina?
21) Como o TCP pode garantir a entrega confiável dos dados se ele utiliza o IP, um protocolo não
confiável?
22) Como o TCP faz para garantir que o transmissor não envie mais dados que o receptor tem
condições de armazenar em seu buffer?
23) Cite duas diferenças entre o TCP e o UDP.
24) O que o UDP faz com um pacote cujo campo checksum não confere?
25) Como uma aplicação faz para endereçar uma outra aplicação em uma máquina remota?
Redes de Computadores 1 60
26) O que são portas conhecidas?
27) Qual a finalidade do DNS?
28) Cite um exemplo de um nome de máquina em um domínio genérico e um exemplo de máquina
em um domínio de país.
29) Para que serve o protocolo Telnet?
30) Qual a finalidade do protocolo FTP? O que o diferencia do TFTP?
31) Que tipo de problema o MIME procura resolver em mensagens de correio eletrônico na
Internet?
32) Diferencie os protocolos SMTP, POP3 e IMAP.
33) Os protocolos de correio eletrônico oferecem algum tipo de privacidade ou é necessária a
utilização de métodos externos?
34) Como um browser faz para obter uma página na Web? O que faz um servidor HTTP ao receber
a solicitação do browser?
35) Como o browser faz para saber se a página que está em sua cache está desatualizada ou não?
Redes de Computadores 1 61
7. Bibliografia
Comer, D. E., “Interligação em Rede com TCP/IP – Volume 1”, 3a ed, Ed. Campus, 1998.
Tanenbaum, A. S., “Redes de Computadores”, 4a ed, Ed. Campus, 2003.
Kurose, J. F. & Ross, K. W., "Redes de Computadores e a Internet: Uma abordagem
top-down", 3a ed, Ed. Pearson, 2006.
Forouzan, B. A., "Comunicação de Dados e Redes de Computadores", 4ª ed, Ed.
McGraw-Hill Interamericana, 2008.
Soares, L. F. G. et alii, “Redes de Computadores - Das LANs, MANs e WANs às Redes
ATM”, 2a ed, Ed. Campus, 1995.
Oppenheimer, P., “Projeto de redes Top-Down”, Ed. Campus, 1999.
Wesley, D. & Wesleym, J., “Developing Real-World Intranets”, The Coriolis Group, 1996.
Giozza, W. F. et alii, “Redes Locais de Computadores - Tecnologia e Aplicações”, Ed.
McGraw-Hill, 1986.
Giozza, W. F. et alii, “Redes Locais de Computadores - Tecnologia e Aplicações”, Ed.
McGraw-Hill, 1986.