61
REDES DE COMPUTADORES 1 JANEIRO 2013

Redes1.pdf

Embed Size (px)

Citation preview

Page 1: Redes1.pdf

REDES DE

COMPUTADORES 1

JANEIRO 2013

Page 2: Redes1.pdf

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

Page 3: Redes1.pdf

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

Page 4: Redes1.pdf

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.

Page 5: Redes1.pdf

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.

Page 6: Redes1.pdf

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

Page 7: Redes1.pdf

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

Page 8: Redes1.pdf

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.

Page 9: Redes1.pdf

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.

Page 10: Redes1.pdf

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?

Page 11: Redes1.pdf

Redes de Computadores 1 11

10) Explique 2 aplicações para redes locais.

Page 12: Redes1.pdf

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

Page 13: Redes1.pdf

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

Page 14: Redes1.pdf

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

Page 15: Redes1.pdf

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

Page 16: Redes1.pdf

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

Page 17: Redes1.pdf

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.

Page 18: Redes1.pdf

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

Page 19: Redes1.pdf

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

Page 20: Redes1.pdf

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

Page 21: Redes1.pdf

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

Page 22: Redes1.pdf

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

Page 23: Redes1.pdf

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,

Page 24: Redes1.pdf

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

Page 25: Redes1.pdf

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

Page 26: Redes1.pdf

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.

Page 27: Redes1.pdf

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?

Page 28: Redes1.pdf

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

Page 29: Redes1.pdf

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).

Page 30: Redes1.pdf

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?

Page 31: Redes1.pdf

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

Page 32: Redes1.pdf

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

Page 33: Redes1.pdf

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

Page 34: Redes1.pdf

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

Page 35: Redes1.pdf

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?

Page 36: Redes1.pdf

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

Page 37: Redes1.pdf

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

Page 38: Redes1.pdf

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

Page 39: Redes1.pdf

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

Page 40: Redes1.pdf

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

Page 41: Redes1.pdf

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 é

Page 42: Redes1.pdf

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.

Page 43: Redes1.pdf

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

Page 44: Redes1.pdf

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

Page 45: Redes1.pdf

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.

Page 46: Redes1.pdf

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.

Page 47: Redes1.pdf

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

Page 48: Redes1.pdf

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

Page 49: Redes1.pdf

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

Page 50: Redes1.pdf

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

Page 51: Redes1.pdf

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

Page 52: Redes1.pdf

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.

Page 53: Redes1.pdf

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.

Page 54: Redes1.pdf

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.

Page 55: Redes1.pdf

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

Page 56: Redes1.pdf

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

De: [email protected]

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.

Page 57: Redes1.pdf

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

Page 58: Redes1.pdf

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

Page 59: Redes1.pdf

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?

Page 60: Redes1.pdf

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?

Page 61: Redes1.pdf

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.