Você está na página 1de 52

Redes de Computadores

Protocolos de Comunicação

Redes de Computadores

Protocolos de Comunicação

Autor: Marcelo Takashi Uemura

Revisor: Rafael Rehm

Iniciar

introdução

Introdução

Olá, estudante! Os protocolos de comunicação são essenciais para que uma rede funcione
plenamente, permitindo a interoperabilidade entre elementos que estão nela interligados.
Nesta unidade, serão apresentados os protocolos utilizados nas principais camadas dos
modelos de referência OSI e TCP/IP: a camada de aplicação, permitindo que aplicações possam
se comunicar em diferentes máquinas na rede; a camada de transporte, que providencia o
transporte para uma comunicação fim a fim entre as aplicações; a camada de rede, que realiza
o encaminhamento correto dos pacotes de dados na rede; e as camadas física e enlace, que
atuam na transmissão dos dados pelos meios de comunicação. Bons estudos!

Protocolos na Camada de Aplicação

As aplicações são um dos motivos pelos quais os protocolos de comunicação foram criados,
tendo como exemplo aplicações de acesso remoto, transferência de arquivos, correio
eletrônico e a World Wide Web (www), essa última com um estrondoso sucesso na década de
1990 (KUROSE; ROSS, 2010).

Para que as aplicações possam operar corretamente em um ambiente de rede, protocolos de


comunicação são utilizados como suporte, permitindo que programas em diferentes
computadores possam se comunicar pela rede. Essas aplicações estão relacionadas à camada
de aplicação, segundo os modelos OSI e TCP/IP, utilizando as camadas inferiores como meio de
transporte (Figura 3.1).

Figura 3.1 - Comunicação de uma aplicação de rede entre sistemas finais na camada de
aplicação

Figura 3.1 - Comunicação de uma aplicação de rede entre sistemas finais na camada de
aplicação
Fonte: Kurose e Ross (2010, p. 63).

As aplicações podem apresentar requisitos de transporte diferenciados, como a transferência


confiável dos dados, a vazão, a temporização e a segurança. A transferência confiável de dados
se refere à garantia de que os dados sejam enviados correta e completamente de uma
máquina para outra, mesmo havendo perda de pacotes na rede. A vazão se refere à largura de
banda necessária para que a aplicação funcione adequadamente, sendo consideradas
aplicações elásticas no caso de haver uma necessidade específica de vazão, entre um mínimo e
máximo aceitável. As temporizações são importantes para aplicações que são sensíveis ao
atraso, como as aplicações de telefonia IP e videoconferência. A segurança permite que os
dados da aplicação possam ser enviados de forma criptografada, garantindo a sua
confidencialidade. No Quadro 3.1, a seguir, temos alguns exemplos de aplicações e os
requisitos de transporte.

Aplicação

Perda de dados

Largura de banda

Atraso

Transferência de arquivos

Sem perda

Elástica

Não
E-mail

Sem perda

Elástica

Não

Documentos Web

Sem perda

Elástica (alguns kbps)

Não

Telefonia via Internet /videoconferência

Tolerante à perda

Áudio: alguns kbps - 1 Mbps


vídeo: 10 kbps - 5 Mbps

Sim: décimos de segundo

Áudio/vídeo armazenado

Tolerante à perda

Igual acima

Sim: alguns segundos

Mensagem instantânea

Sem perda

Elástica

Sim e não

Quadro 3.1 - Requisitos de aplicações

Fonte: Adaptado de Kurose e Ross (2010, p. 68).

A seguir, falaremos sobre como as aplicações são utilizadas nas arquiteturas mais conhecidas e
os principais protocolos da camada de aplicação.
Arquiteturas de Aplicação de Rede

As aplicações de rede são elaboradas inicialmente pela sua arquitetura, e as mais utilizadas são
a arquitetura cliente-servidor e peer-to-peer (P2P). A base dessas arquiteturas de aplicações é
a comunicação entre processos. Teremos processos sendo executados em diferentes máquinas
que estão trocando informações pela rede (KUROSE; ROSS, 2010).

A arquitetura cliente-servidor (client-server) é baseada em máquinas servidoras que oferecem


serviços para as aplicações que são executadas em máquinas clientes (Figura 3.2). A aplicação
na máquina cliente é um processo que faz requisições para o processo em execução na
máquina servidora, que irá responder conforme o solicitado. Normalmente, as máquinas
servidoras apresentam endereços de rede fixos, utilizados pelas máquinas clientes para o
estabelecimento da comunicação. Nessa arquitetura, não é possível a comunicação entre
aplicações de máquinas clientes.

Figura 3.2 - a) arquitetura cliente-servidor; b) arquitetura P2P

Fonte: Kurose e Ross (2010, p. 64).

Na arquitetura P2P, é utilizada a comunicação direta entre máquinas hosts conectadas


alternadamente, denominadas pares, não havendo o provimento de serviços por meio de
máquinas servidoras dedicadas (KUROSE; ROSS, 2010). Essa comunicação está representada na
Figura 3.2, tendo sido muito utilizada em aplicações de mensagens instantâneas e
compartilhamento de arquivos. Nessa arquitetura, temos a comunicação direta entre
processos de máquinas hosts.

saiba mais

Saiba mais

Além das arquiteturas cliente-servidor e peer-to-peer, está sendo muito utilizada a arquitetura
de sistemas distribuídos para as aplicações em rede. Segundo Colouris et al. (2013), “um
sistema distribuído é aquele no qual os componentes localizados em computadores
interligados em rede se comunicam e coordenam suas ações apenas passando mensagens”.
Um exemplo de recurso utilizado nos sistemas distribuídos são os serviços web (ou web
services), em que interfaces são disponibilizadas em rede para o provimento de serviços. Leia o
artigo “Serviços web e a evolução dos serviços em TI”, que retrata a integração dos serviços
web com e-business, no link disponível.

Fonte: Colouris et al. (2013, p. 17).

ACESSAR
No tema a seguir, falaremos de um dos protocolos de comunicação utilizado na camada de
aplicação, o protocolo HTTP.

HTTP

Segundo Tanenbaum e Wetherall (2011), a web, ou World Wide Web, é uma estrutura
arquitetônica que permite o acesso a documentos vinculados espalhados por milhões de
máquinas na Internet. A web começou em 1989 no CERN, o European Center for Nuclear
Research, e a ideia inicial era ajudar grandes equipes, com membros espalhados em vários
países com fusos diferentes, atuando na colaboração de uma teia de documentos relacionados
à física de partículas.

Os documentos da web, conhecidos como páginas web, apresentam textos formatados por
meio da linguagem HTML (HyperText Markup Language) e links que conectam com outras
páginas, sendo tratado como um hipertexto. Por meio de navegadores web (ou browsers), é
possível visualizar e navegar entre as páginas web. Os documentos web ficam armazenados
em máquinas servidoras, conhecidas como servidores web (web servers) e funcionam dentro
da arquitetura cliente-servidor. O protocolo utilizado para a troca desses documentos web
entre cliente e servidor web é o HTTP (HyperText Transfer Protocol).

Na Figura 3.3, podemos ver que a navegação em uma página web através de um navegador
em uma máquina cliente faz a solicitação por meio de uma solicitação HTTP para o servidor
web, o qual responde com o documento solicitado. Dentro desse documento, podem conter
links para outros conteúdos, como um vídeo do YouTube, ou registros de dados, como Google
Analytics.

Figura 3.3 - Solicitação HTTP

Figura 3.3 - Solicitação HTTP

Fonte: Tanenbaum e Wetherall (2011, p. 408).

A requisição HTTP é feita normalmente através de nomes que representam os endereços de


rede dos servidores web. A tradução desses nomes, conhecidos como URL (Uniform Resource
Location), para endereços lógicos de rede (endereços IP), é feita através dos servidores DNS
(Domain Name Server). Por exemplo, o endereço www.google.com é traduzido para o
endereço IP dos servidores onde estão hospedadas as páginas do Google. São vários servidores
DNS espalhados pelo mundo, distribuídos hierarquicamente, atendendo diferentes domínios
(por exemplo: .com, .edu, .gov, etc) e países (.br, .cn, .ar etc.).

O servidor web não armazena nenhuma informação sobre os clientes, logo o protocolo HTTP é
dito como um protocolo stateless, ou seja, protocolo sem estado. Porém, é possível que o
cliente e o servidor possam se comunicar por um longo período de tempo pelo protocolo
HTTP, fazendo uso de conexões persistentes ou não persistentes. Nas conexões não
persistentes, são realizadas várias conexões com o servidor web para obter os objetos (por
exemplo, figuras) que fazem parte do conteúdo de uma página web, sendo uma
conexão/requisição por objeto. Nas conexões persistentes, uma conexão apenas permanece
para a transferência de todos os objetos da página web (KUROSE; ROSS, 2010).

O formato de uma mensagem HTTP pode ser classificado em requisição e resposta. A


requisição apresenta alguns campos básicos, como o método, a URL e a versão do protocolo
HTTP. O método representa o tipo de solicitação para o servidor web, havendo como exemplos
GET, POST e HEAD. Segue um exemplo de mensagem HTTP (KUROSE; ROSS, 2010):

GET /somedir/page.html HTTP/1.1

Host: www.someschool.edu

Connection: close

User-agent: Mozilla/4.0

Accept-language: fr

O método GET está sendo utilizado para obter o objeto /somedir/page.html do servidor web
www.someschool.edu. O tipo de conexão será não persistente, devido ao parâmetro
Connection com valor close. O navegador sendo utilizado para essa solicitação é o Mozilla e
permite aceitação de documentos em francês, pelo campo Accept-language: fr.

A resposta de uma solicitação HTTP é feita por meio de uma mensagem com um código de
resposta. Esse código pode representar um sucesso, um erro ou uma informação para a
solicitação feita. Segue um exemplo para uma resposta (KUROSE; ROSS, 2010):

HTTP/1.1 200 OK

Connection: close

Date: Sat, 07 Jul 2007 12:00:15 GMT


Server: Apache/1.3.0 (Unix)

Last-Modified: Sun, 6 May 2007 09:23:24 GMT

Content-Length: 6821

(data data data data data …)

Esse exemplo de resposta mostra um código 200, que representa Ok, uma resposta bem-
sucedida. Outros códigos podem ser respondidos, como o 404, no caso de uma página não
encontrada, ou 500, erro interno no servidor. Essa mensagem foi respondida por um servidor
Apache e contém 6821 bytes, representados pelos dados (data) que vêm adicionados à
mensagem, sendo basicamente o objeto HTML solicitado.

No próximo tema, trataremos do protocolo utilizado pelas aplicações para transferência de


arquivos, o FTP.

FTP

O protocolo FTP (File Transfer Protocol) é utilizado para realizar a transferência de arquivos de
uma máquina para outra. Isso é realizado por um agente de usuário FTP, em que o processo de
uma máquina cliente FTP realiza a transferência com outro processo servidor em uma máquina
remota (ver Figura 3.4).

Figura 3.4 - Transferência via FTP

Figura 3.4 - Transferência via FTP

Fonte: Kurose e Ross (2010, p. 86).

O protocolo FTP atua de forma similar ao HTTP, porém o FTP utiliza duas conexões para
realizar a transferência de arquivos, uma conexão para controle e outra para dados. A conexão
de controle é utilizada para o envio de informações como usuário e senha, além de comandos
para trocar diretórios remotamente, além de inserir e pegar arquivos. A conexão de dados é
utilizada efetivamente para enviar arquivos (KUROSE; ROSS, 2010).

O servidor FTP mantém informações de estado sobre usuário, associando a conexão de


controle com uma conta de usuário específica, monitorando o diretório corrente enquanto o
usuário passeia pela árvore do diretório remoto.
A seguir, falaremos sobre o protocolo utilizado no correio eletrônico pelas aplicações, o SMTP.

SMTP

O e-mail, ou correio eletrônico, é uma das aplicações mais conhecidas da Internet, sendo
utilizado como meio de enviar mensagens de forma eletrônica. A arquitetura de um serviço de
correio eletrônico é dividida em dois subsistemas: os agentes do usuário e os agentes de
transferência de mensagens. Os agentes do usuário permitem que as pessoas leiam e enviem
mensagens através de softwares como o Microsoft Outlook ou Mozilla Thunderbird, enquanto
os agentes de transferência de mensagens, também conhecidos como servidores de correio,
deslocam as mensagens da origem até o destino (TANENBAUM; WETHERALL, 2011).

Na Figura 3.5, temos a representação da arquitetura do sistema de e-mail, no qual o agente do


usuário envia um correio (mensagem) para um servidor de correio (agente de transferência de
mensagem). Esse servidor envia o correio para o servidor de correios destinatário, o qual irá
realizar a entrega final para o agente do usuário destinatário. O protocolo utilizado para a
comunicação entre os servidores de correio é o SMTP (Simple Mail Transfer Protocol).

Figura 3.5 - Arquitetura do sistema de e-mail

Figura 3.5 - Arquitetura do sistema de e-mail

Fonte: Tanenbaum e Wetherall (2011, p. 392).

O formato das mensagens SMTP é baseado em campos de cabeçalho, conforme o Quadro 3.2,
a seguir:

Cabeçalho

Significado

To:

O(s) endereço(s) de correio eletrônico do(s) destinatário(s) principal(is)

Cc:
O(s) endereço(s) de correio eletrônico do(s) destinatário(s) secundário(s)

Co:

O(s) endereço(s) de correio eletrônico do(s) destinatário(s) oculto(s)

From:

A(s) pessoa(s) que criou(ram) a mensagem

Sender:

O endereço de e-mail do remetente

Received:

A linha incluída por cada agente de transferência ao longo da rota

Return-path

Pode ser usado para identificar um caminho de volta ao remetente

Quadro 3.2 - Campos de cabeçalho utilizados no transporte de correio eletrônico

Fonte: Tanenbaum e Wetherall (2011, p. 397).


O envio de mensagens do correio é feito pelo protocolo SMTP. Porém, para que o agente do
usuário possa obter as mensagens de um servidor de correios, podem ser utilizados os
protocolos POP3 (Post Office Protocol versão 3) ou IMAP (Internet Mail Access Protocol) ou o
HTTP (Figura 3.6).

Figura 3.6 - Protocolos de e-mail

Figura 3.6 - Protocolos de e-mail

Fonte: Kurose e Ross (2010, p. 93).

Os protocolos POP3 e IMAP são utilizados pelos agentes do usuário instalados na máquina
cliente para receber os e-mails do servidor de correio. No caso do HTTP, o serviço de e-mail é
fornecido por meio de uma página web, sendo conhecido como webmail, como é o caso do
Gmail, do Google.

praticar

Vamos Praticar

O serviço de correio eletrônico é oferecido na camada de aplicação para que mensagens


possam ser enviadas de forma eletrônica de forma similar ao correio convencional. Esse
serviço é baseado no agente do usuário e no servidor de correios.

Assinale a alternativa correta que representa o protocolo utilizado para o envio de e-mails pela
rede.

a) POP3.

b) IMAP.

c) ICMP.

d) SMTP.

e) FTP.

Protocolos na Camada de Transporte

A camada de transporte exerce um importante papel para fornecer serviços de comunicação


para os processos de aplicação que estão sendo executados em diferentes máquinas na rede.
Segundo Forouzan (2010), essa camada é a responsável pela entrega da mensagem entre
processos finais, prestando serviços para a camada de aplicação e utilizando os serviços da
camada de rede.

Neste tópico, serão vistos aspectos dos serviços da camada de transporte, bem como os seus
principais protocolos utilizados na Internet, o TCP e o UDP.
Serviços de Transporte

O objetivo da camada de transporte é oferecer um serviço confiável, eficiente e econômico


para os usuários, que estão presentes na camada de aplicação. Para tanto, são utilizados
serviços da camada de rede (ou Internet), conforme apresentado na Figura 3.7. O serviço de
transporte é realizado pela chamada entidade de transporte, que pode estar no núcleo do
sistema operacional, em um pacote de bibliotecas vinculadas às aplicações, em um processo
de usuário ou até mesmo na placa de interface de rede (TANENBAUM; WETHERALL, 2011).

Figura 3.7 - Camadas de rede, transporte e aplicação

Figura 3.7 - Camadas de rede, transporte e aplicação

Fonte: Tanenbaum e Wetherall (2011, p. 310).

Os serviços de transporte providenciados para as aplicações podem ser classificados como


serviços orientados à conexão e não orientados à conexão. No serviço orientado à conexão, é
estabelecida uma conexão lógica entre a origem e o destino antes do início da transmissão,
garantindo a entrega e a sequência dos dados transmitidos. Isso torna um serviço de
transporte mais confiável para aplicações que necessitem da integridade dos dados
transmitidos (MAIA, 2013).

Já no serviço não orientado à conexão não existe a necessidade de estabelecer uma conexão
lógica, não havendo um controle de erros rigoroso, permitindo, assim, a perda de pacotes.
Esse tipo de serviço é mais rápido que o serviço orientado à conexão, sendo indicado para
aplicações cujo desempenho é mais importante que a confiabilidade (MAIA, 2013).

Segundo Tanenbaum e Wetherall (2011), para que os usuários possam utilizar os serviços de
transporte, são utilizadas primitivas através de sua interface na camada de transporte. Essa
interface apresenta o que um serviço da camada de transporte, como o orientado à conexão,
deve fazer. No Quadro 3.3, a seguir, são apresentadas cinco primitivas básicas:

Primitiva

Pacote enviado

Significado
LISTEN

(nenhum)

Bloqueia até algum processo tentar conectar

CONNECT

CONNECTION REQ.

Tenta ativamente estabelecer uma conexão

SEND

DATA

Envia informação

RECEIVE

(nenhum)

Bloqueia até que um pacote de dados chegue


DISCONNECT

DISCONNECTION REQ.

Solicita uma liberação de conexão.

Quadro 3.3 - Primitivas para um serviço de transporte simples

Fonte: Tanenbaum e Wetherall (2011, p. 312).

Por exemplo, em um serviço orientado à conexão, um servidor executa a primitiva LISTEN, que
irá deixar bloqueado até que uma solicitação de cliente apareça. O cliente pode realizar essa
solicitação através da primitiva CONNECT. Na camada de transporte, os dados da aplicação são
enviados através de segmentos. Junto ao segmento, é adicionado o cabeçalho da camada de
transporte, configurando o chamado TPDU (Transport Protocol Data Unit). Logo, na execução
da primitiva CONNECT do cliente, um segmento é enviado para o servidor denominado
CONNECTION REQ. O servidor é desbloqueado e transmite um segmento CONNECTION
ACCEPTED para o cliente. Nesse momento, a conexão é estabelecida, e qualquer uma das
partes pode utilizar as primitivas SEND e RECEIVE para enviar e receber dados,
respectivamente. A conexão é desfeita então com a primitiva DISCONNECT, o qual terá o envio
de um segmento DISCONNECTION REQ.

No próximo subtópico, trataremos das informações utilizadas para a comunicação feita pelos
serviços de transporte, as portas.

Portas de Comunicação

Os sistemas operacionais atuais suportam ambientes multiusuário e multiprogramação, ou


seja, é possível que vários processos estejam em execução simultaneamente. A definição dos
computadores é feita por meio da camada de rede, porém a identificação dos processos das
aplicações em andamento é feita pela camada de transporte, com o uso de portas de
comunicação.

Com o modelo de referência TCP/IP, temos um campo numérico com o tamanho de 16 bits
para a identificação de uma porta, variando de 0 até 65535. Um programa de aplicação na
máquina cliente pode fazer o uso de uma porta dita efêmera, que será temporariamente
alocada para a comunicação com a aplicação em outro nó de rede.
Já em uma máquina servidor, na qual processos podem atender inúmeros clientes, são
normalmente utilizadas portas com números previamente definidos, conhecidas como portas
bem conhecidas (well known ports), que são permanentemente alocadas. No caso do HTTP, é
utilizada a porta bem conhecida 80, o SMTP utiliza a porta 25 e o FTP utiliza as portas 20 e 21.
Na Figura 3.8, a seguir, temos um exemplo de uso de portas pela camada de transporte, em
que o processo cliente “daytime” está utilizando uma porta efêmera 52000 para a
comunicação com o processo servidor “daytime” alocado na porta bem conhecida 13.

Figura 3.8 - Números de porta

Figura 3.8 - Números de porta

Fonte: Forouzan e Mosharraf (2013, p. 142).

A entidade padronizadora IANA dividiu o número de portas em três faixas: conhecidos,


registrados e dinâmicos:

Portas bem conhecidas (well known ports): número de porta na faixa de 0 a 1023.

Portas registradas: número de porta na faixa de 1024 a 49151. Podem ser registradas no
IANA para evitar duplicidade.

Portas dinâmicas (efêmeras): número de porta na faixa de 49152 a 65535.

Na pilha de protocolos TCP/IP, o uso de um endereço IP para uma máquina e o número da


porta sendo utilizado pelo processo da aplicação nessa caracterizam um socket. Um endereço
de socket do cliente identifica um processo da aplicação em execução na máquina cliente,
enquanto um socket de servidor representa o processo servidor. Na Figura 3.9, temos um
exemplo de socket, em que o endereço de rede IP 200.23.56.8 e o número da porta 69
identificam um endereço de socket específico.

Figura 3.9 - Endereço de socket

Figura 3.9 - Endereço de socket

Fonte: Forouzan e Mosharraf (2013, p. 144).

Nos próximos subtópicos, abordaremos os protocolos da camada de transporte utilizados no


modelo de referência TCP/IP da Internet, o TCP e o UDP.

Protocolo TCP

O protocolo TCP (Transmission Control Protocol) oferece funcionalidade para a verificação de


pacotes e de erro, sendo utilizado em serviços orientados à conexão. Uma conexão TCP se
trata de um fluxo de bytes, e não de mensagens, e essa deve ser full duplex e ponto a ponto.
Um segmento TCP contém um cabeçalho de 20 bytes, conforme a Figura 3.10, em que são
mencionadas as portas de comunicação e outros dados relativos ao fluxo de dados da
conexão. Cada enlace que faz a transmissão de um segmento de dados apresenta uma MTU
(Maximum Transfer Unit), que delimita o tamanho do pacote de dados. Isso pode fazer com
que o segmento seja fragmentado para a transmissão de pacotes.

Figura 3.10 - Cabeçalho TCP

Figura 3.10 - Cabeçalho TCP

Fonte: Maia (2013, p. 215).

As conexões TCP são estabelecidas por um processo chamado handshake de três vias,
utilizando as primitivas da interface da camada de transporte. Quando o cliente inicia o
estabelecimento da conexão através da primitiva CONNECT, especificando o endereço socket e
o tamanho máximo do segmento, um segmento TCP é enviado com a flag SYN ativada e a flag
ACK desativada, ficando no aguardo de uma resposta. Quando esse segmento chega ao seu
destino, é verificado se há um processo que tenha acionado a primitiva LISTEN na porta
recebida, e, em caso positivo, poderá recebê-lo. Sendo aceito, é enviado um segmento de
confirmação, com as flags de SYN e ACK ativadas. Por fim, o cliente confirma o recebimento
desse último segmento com o envio de um segmento com a flag de ACK ativada. Esse processo
está ilustrado na Figura 3.11.

Figura 3.11 - Estabelecimento de uma conexão TCP

Figura 3.11 - Estabelecimento de uma conexão TCP

Fonte: Forouzan e Mosharraf (2013, p. 188).

O encerramento de uma conexão TCP é realizado por meio do envio de um segmento com a
flag FIN ativada, indicando que não há mais dados para serem transmitidos. Como é feita uma
comunicação full duplex, devem haver quatro segmentos envolvidos para o encerramento: um
segmento com flag FIN ativado e a confirmação por um segmento com flag ACK ativado para
uma das vias de comunicação e outro segmento FIN com confirmação via segmento ACK para a
outra via.

O protocolo TCP apresenta um serviço confiável para transporte de dados, permitindo que
retransmissões possam ser feitas quando identificada a perda de pacotes. Para tanto, faz uso
de temporizadores e apresenta um mecanismo de controle de fluxo baseado em janelas de
transmissão, com o suporte de buffers de armazenamento, em que o receptor envia
segmentos ACK, confirmando os segmentos recebidos (Figura 3.12).

Figura 3.12 - Buffers de envio e recepção

Figura 3.12 - Buffers de envio e recepção

Fonte: Forouzan e Mosharraf (2013, p. 182).


Além do controle de fluxo, apresenta um mecanismo de controle de congestionamento,
baseado no número de reconhecimentos ACK recebidos por unidade de tempo com os dados
de tempo de ida e volta, em que é realizada uma predição a qual indica se a rede está
congestionada ou não. Isso possibilita que o transmissor possa reduzir a velocidade de
transmissão para evitar uma sobrecarga na rede.

Alguns protocolos da camada de aplicação que fazem uso do protocolo TCP são o HTTP e o
FTP.

Protocolo UDP

O UDP (User Datagram Protocol) é um protocolo não orientado à conexão e não confiável da
camada de transporte, sendo indicado devido à sua simplicidade e eficiência, cujo controle de
erros possa ser realizado pela camada de aplicação (FOROUZAN, MOSHARRAF, 2013). É
baseado no simples envio de datagramas, sem haver a preocupação da confirmação de
recebimento desses pelo destinatário.

O cabeçalho utilizado pelo protocolo UDP é mais simples que o TCP, composto pelas
informações das portas, checksum e tamanho do datagrama, conforme pode ser visto na
Figura 3.13 a seguir:

Figura 3.13 - Cabeçalho UDP

Figura 3.13 - Cabeçalho UDP

Fonte: Maia (2013, p. 215).

O protocolo UDP não possui mecanismos de controle de erros, nem fluxo, assim como não
possui conexões. Esse controle deve ser realizado pela camada de aplicação. Um exemplo de
protocolo da camada de aplicação que utiliza o protocolo UDP é o DNS (Domain Name Server).

praticar

Vamos Praticar

O protocolo TCP (Transmission Control Protocol) é utilizado para prover um serviço orientado
à conexão para a camada de aplicação. Com esse protocolo, segmentos dos dados das
aplicações são enviados através da camada de rede em direção aos destinatários, para a
execução na aplicação correta em execução na máquina remota.

Considerando o contexto do protocolo TCP, assinale a alternativa que representa


corretamente uma das características desse protocolo:
a) Consegue fazer o envio de dados sem o estabelecimento de uma conexão.

b) Apresenta um cabeçalho com tamanho de 8 bytes.

c) Pode ser utilizado também para serviços não orientados à conexão.

d) Possui controle de fluxo.

e) Podem enviar uma quantidade de dados acima da MTU de um enlace.

Protocolos na Camada de Redes

Os protocolos da camada de rede têm como objetivo o encaminhamento correto dos pacotes
de dados desde a origem até o destino ao longo da rede. Para isso, identificações para os nós
que fazem parte da rede devem ser utilizadas, possibilitando o correto encaminhamento.

O principal elemento de rede com a capacidade de realizar esse encaminhamento dos pacotes
é o roteador. Esse equipamento é composto basicamente por portas de entrada, portas de
saída, processador e memória. Com base na identificação do destino do pacote recebido em
uma porta de entrada, o roteador busca em sua tabela de roteamento o melhor caminho
(conhecido como rota) para encaminhar os pacotes através de uma porta de saída. Na Figura
3.14, a seguir, temos um exemplo de tabela de roteamento, em que um pacote com a
identificação de destino B deve ser encaminhado para a interface de saída (rota) número 2.

Figura 3.14 - Tabela de roteamento

Figura 3.14 - Tabela de roteamento

Fonte: Forouzan e Mosharraf (2013, p. 242).

É possível haver uma grande quantidade de roteadores ao longo do percurso de um pacote de


dados. No exemplo da Figura 3.15, temos a comunicação entre os computadores de Alice e
Bob, em que os pacotes trafegam pela rede pelos roteadores R2, R4, R5 e R7. Perceba que os
roteadores não precisam processar todas as camadas, somente até a camada de rede, em que
estão presentes as identificações do destino a ser atingido. É com base nessa identificação e na
sua tabela de roteamento que o roteador irá encaminhar o pacote corretamente.

Figura 3.15 - Comunicação em rede

Fonte: Forouzan e Mosharraf (2013, p. 240).

Com isso, é importante entendermos como são representadas essas identificações utilizadas
pelos nós da rede, as formas de distribuição e como as tabelas de roteamento podem ser
atualizadas.

Internet Protocol (IP)


O protocolo utilizado para a identificação dos nós interligados na rede Internet é o conhecido
IP (Internet Protocol). Esse protocolo apresenta os endereços lógicos que são utilizados para a
identificação de cada elemento conectado, permitindo que roteadores possam encontrar os
caminhos apropriados para que os dados possam chegar aos destinatários corretos.

Existem atualmente duas versões de endereços IP: a versão 4 e 6. A seguir, serão exploradas as
particularidades de cada versão.

IP v4

A primeira versão de grande amplitude de uso do endereço IP foi a versão 4, que contém 32
bits de tamanho, representando uma quantidade de aproximadamente 4 bilhões de
endereços.

Cada pacote irá apresentar em seu cabeçalho um endereço IP de origem e um endereço IP de


destino, conforme apresentado na Figura 3.16, a seguir:

Figura 3.16 - Cabeçalho IPv4

Figura 3.16 - Cabeçalho IPv4

Fonte: Forouzan e Mosharraf (2013, p. 260).

Nesse cabeçalho, existem diversos campos, que estão assim descritos (PERES; LOUREIRO;
SCHMITT, 2014):

a) VER: indica a versão do protocolo.

b) HLEN: corresponde ao tamanho do cabeçalho em número de blocos de 32 bits.

c) Tipo de serviço: indica a classe do serviço para o pacote.

d) Comprimento total: indica o tamanho completo do pacote.

e) Identificação: utilizado para identificar um datagrama que foi fragmentado, sendo que os
fragmentos apresentam a mesma identificação.

f) Marcadores: DF (Don’t Fragment – 1 bit) não deve fragmentar, MF (More Fragments – 1 bit)
indica que existem mais fragmentos.
g) Deslocamento de fragmento: em uma transmissão fragmentada, indica a posição para a
recomposição do datagrama.

h) TTL: Time To Live, utilizado para limitar o tempo de vida de um datagrama na rede.

i) Protocolo: identifica o protocolo da camada de transporte (TCP ou UDP)

j) Soma de verificação do cabeçalho: utilizado para a descoberta de erros no cabeçalho do


datagrama.

k) Endereço IP de origem: armazena o endereço IP de quem originou o datagrama.

l) Endereço IP de destino: armazena o endereço IP do equipamento que receberá o datagrama.

m) Opções: opcional, permite o acréscimo de novas funcionalidades ao protocolo.

No caso da fragmentação, essa pode ocorrer quando o tamanho do datagrama é maior que a
capacidade máxima de transmissão (MTU) do enlace. Na Figura 3.17, temos um exemplo de
fragmentação, em que um datagrama contendo 4000 bytes de dados é fragmentado em três
fragmentos. Note que o último fragmento muda a flag MF, indicando que não há mais
fragmentos.

Figura 3.17 - Fragmentação

Figura 3.17 - Fragmentação

Fonte: Peres, Loureiro e Schmitt (2014, p. 57).

Os 32 bits referentes ao endereço IP no formato binário podem ser representados no formato


decimal, com uma divisão em quatro octetos separados por ponto. Exemplo:

11000000101010000000000000000001(formato binário)

192.168.0.1 (formato decimal)


O endereço IP pode ser dividido em duas partes: a rede e o host. A rede representa o
segmento de rede ao qual o endereço IP pertence, enquanto o host é uma identificação única
para a máquina que está conectada nessa rede. Quando a parte do host possui todos os bits
em ‘0’, identifica-se como endereço de rede. Se todos os bits de host estiverem com valor ‘1’,
o endereço IP é utilizado como endereço de broadcast, utilizado para difusão do pacote para
todas as máquinas da rede. Uma classificação em relação a isso foi definida, em que temos
diferentes faixas de endereço categorizadas em classes, indicando a quantidade de endereços
máxima para cada rede, conforme a Tabela 3.1, a seguir:

Classe

Faixa de endereços

Número de endereços por rede

0.0.0.1 a 126.255.255.255

16.777.216

128.0.0.0 a 191.255.255.255

65.536

C
192.0.0.0 a 191.255.255.255

256

224.0.0.0 a 239.255.255.255

Multicast

240.0.0.0 a 255.255.255.254

Uso futuro

Tabela 3.1 - Classes de endereços IP

Fonte: Elaborada pelo autor.

Além dessa classificação por classes de endereços, existem diferentes tipos de endereços IP,
como públicos e privados. Os endereços IP públicos são aqueles publicamente reconhecidos,
como os da Internet. Os endereços IP privados são aqueles utilizados no âmbito interno de
uma rede corporativa ou doméstica. Assim, temos as seguintes faixas de endereços IP
privados, conforme a classe:

Classe
Faixa de endereços privados

10.0.0.0 - 10.255.255.255

172.16.0.0 - 172.31.255.255

192.168.0.0 - 192.168.255.255

Tabela 3.2 - Endereços IP privados

Fonte: Elaborada pelo autor.

Para redes locais, é comum utilizar endereços IP privados em seus equipamentos. A fim de que
esses possam se conectar com a Internet, endereços IP públicos são necessários, e algumas
funcionalidades de rede podem ser utilizadas, como NAT (Network Address Translation) e PAT
(Port Address Translation). NAT realiza o mapeamento de endereços IP privados para
endereços IP públicos, enquanto o PAT utiliza o número de porta da camada de transporte,
sendo usado pela aplicação em conjunto com o endereço IP privado para o mapeamento em
endereço IP público.

Os endereços IP podem ser alocados de forma estática ou dinâmica. No caso estático, os


endereços são atribuídos manualmente e de forma fixa para os equipamentos. A alocação
dinâmica não requer essa intervenção manual, e cada máquina solicita a um servidor
utilizando o protocolo DHCP (Dynamic Host Control Protocol), para receber um endereço IP a
ser utilizado temporariamente enquanto estiver conectado à rede.

IP v6
Tendo em vista o crescimento rápido da Internet e tecnologias que permitem conexão a essa
rede global, os endereços IP na versão 4 começaram rapidamente a ficar escassos até a sua
completa exaustão. Tendo em vista que novos endereços IP seriam necessários, foi criada uma
nova versão do IP, a versão 6.

O endereço IPv6 apresenta um tamanho de 128 bits, indicando uma quantidade


extremamente maior que a obtida pelo IPv4. O seu cabeçalho foi alterado, conforme
apresentado na Figura 3.18, a seguir:

Figura 3.18 - Cabeçalho IPv6

Figura 3.18 - Cabeçalho IPv6

Fonte: Peres, Loureiro e Schmitt (2014, p. 76).

Os campos classe de tráfego, rótulo de fluxo, tamanho dos dados, próximo cabeçalho e limite
de encaminhamento foram criados para o IPv6 em comparação ao IPv4. O campo classe de
tráfego é usado para indicar a classe de serviço pertencente ao pacote. O campo rótulo de
fluxo é usado para aplicações que requeiram desempenho. O campo tamanho dos dados
indica o tamanho da carga útil (payload) do pacote. O campo próximo cabeçalho se trata de
um ponteiro para uma extensão do cabeçalho. O campo limite de encaminhamento indica a
quantidade de saltos permitida antes do pacote ser descartado.

O endereço IPv6 pode apresentar uma representação hexadecimal, com oito grupos de 16 bits
separados por dois pontos. Por exemplo:

2001:0DB8:0000:0000:DAD0:CAFE:FFDD:0051

Algumas regras de simplificação do endereço IPv6 foram criadas:

Se dentro de um grupo de 16 bits houver somente zeros, pode ser substituído por um único
zero.

Se houver uma sequência de um ou mais grupos de zeros, esses podem ser substituídos por
“::”. Porém, só pode ser feita essa simplificação uma única vez em um endereço IPv6.

Exemplos de simplificação:
O endereço IPv6 2001:0DB8:0000:0000:DAD0:CAFE:FFDD:0051 pode ser representado pelo
endereço 2001:DB8::DAD0:CAFE:FFDD:51.

O endereço IPv6 2001:0DB8:0000:0000:DAD0:0000:0000:0051 pode ser representado por


2001:DB8::DAD0:0:0:0051.

O endereço IPv6 também pode ser dividido em partes com identificação de rede global,
identificador de sub-rede e identificador de host, conforme Figura 3.19, a seguir:

Figura 3.19 - Endereçamento IPv6

Figura 3.19 - Endereçamento IPv6

Fonte: Peres, Loureiro e Schmitt (2014, p. 79).

No IPv6, existem três tipos de endereçamento: a) unicast, que identifica o endereço de uma
interface de rede de forma única; b) multicast, que identifica um grupo de interfaces
dispositivos ou serviços por meio de um endereço reservado FF00::/8; c) anycast, utilizado
para identificar um grupo de interfaces como uma sub-rede. No IPv6, não existem endereços
de broadcast.

reflita

Reflita

Com o crescimento da Internet e dos dispositivos tecnológicos a ela conectados, o uso de


endereços IPv6 se torna cada vez mais intensivo, e atualmente todas as placas de interface de
rede já saem de fábrica com esse suporte. Leia o artigo Novos negócios baseado em internet
das coisas e reflita sobre como a Internet das coisas pode promover o aumento de dispositivos
conectados, demandando mais endereços IP. Disponível em:
https://revistafae.fae.edu/revistafae/article/view/402. Acesso em: 17 jan. 2020.

Após o entendimento dos formatos de endereços IPv4 e IPv6, veremos como próximo tema o
endereçamento de sub-redes, que ajuda a trazer uma maior organização para a alocação de
endereços IP.

Endereçamento de Sub-Redes

A fim de flexibilizar e obter um melhor aproveitamento dos endereços IP, através da divisão
desses em diversas partes para uso interno, é proposto o uso da subdivisão de redes,
conhecida como sub-redes. Essa divisão é possível pelo uso de máscaras de sub-rede, em que a
parte de rede é mapeada com bits ‘1’ e a parte de host com bits ‘0’. Por exemplo,
considerando as conhecidas classes A, B e C de endereços:

Classe

Máscara de sub-rede

255.0.0.0

255.255.0.0

255.255.255.0

Tabela 3.3 - Máscaras de sub-rede

Fonte: Elaborada pelo autor.

Na classe A, a máscara 255.0.0.0 identifica o primeiro octeto como sendo de rede, pois
apresenta todos os seus bits em ‘1’, resultando no valor decimal 255. Os três demais octetos
são utilizados para host, considerando os endereços de rede e broadcast. No caso da classe B,
temos os dois octetos (255.255) utilizados para rede, assim como em endereços classe C são
utilizados três octetos (255.255.255).

Pode-se representar a máscara de sub-rede através da notação “/x”, o qual x representa o


número de bits referente à parte de rede do endereço IP. Por exemplo, no endereço de classe
A teríamos a máscara /8, na classe B a máscara /16, e classe C a máscara /24.
A máscara de sub-rede apresenta uma flexibilidade para ampliar a quantidade de bits para
representação da parte de rede, não se limitando às classes A, B e C com suas máscaras fixadas
em /8, /16 e /24. Temos, então, o conceito de VLSM (Variable Length Subnet Mask), em que a
máscara de sub-rede pode “emprestar” bits da parte de host aplicando como sendo integrante
da rede e utilizando esses bits para identificação da sub-rede. Isso permite que, a partir de um
endereço IP, possamos criar diferentes sub-redes, para uma melhor segmentação.

Exemplo:

A partir do endereço IP classe C, 192.168.0.1/24, criar quatro sub-redes que serão utilizadas
cada uma para um departamento diferente: sub-rede 1 para o departamento de finanças, sub-
rede 2 para o departamento de RH, sub-rede 3 para o departamento de vendas e sub-rede 4
para o departamento de suprimentos.

O endereço classe C 192.168.0.1/24 também pode ser representado assim: 192.168.0.1,


máscara de sub-rede: 255.255.255.0. Isso indica que o último octeto é utilizado para host. Para
criar quatro sub-redes, são necessários dois bits (00, 01, 10, 11). Esses dois bits serão
emprestados da parte de host e utilizados na parte de rede, mudando a máscara para /26 ou
255.255.255.192. Assim, teremos:

Tabela 3.4 - Endereços alocados para cada departamento

Fonte: Elaborada pelo autor.

Departamento

Sub-rede

Endereço de rede

Endereço de broadcast
Endereços de hosts

Finanças

192.168.0.0/26

192.168.0.63

192.168.0.1 a 192.168.0.62

RH

192.168.0.64/26

192.168.0.127

192.168.0.65 a 192.168.0.126

Vendas
2

192.168.0.128/26

192.168.0.191

192.168.0.129 a 192.168.0.190

Suprimentos

192.168.0.192/26

192.168.0.255

192.168.0.193 a 192.168.0.254

Assim, por meio da variação dos bits da máscara de sub-rede, é possível criar sub-redes que
venham a otimizar o uso de endereços IP em função da quantidade de hosts necessários para
cada segmento de rede. No endereçamento IPv6, o mesmo conceito de máscara de sub-rede
através da notação “/x” pode ser aplicado para a criação de sub-redes.

Protocolos de Roteamento
O roteador utiliza a tabela de roteamento para buscar as rotas pelos quais o pacote pode ser
encaminhado na rede. Essa tabela pode ser construída de forma manual, ou seja, um
administrador de rede pode montar e configurar em cada roteador a tabela que relaciona
endereços IP com as rotas para encaminhamento. Entretanto, em uma rede muito ampla, com
uma quantidade expressiva de roteadores, esse trabalho pode se tornar muito dispendioso,
pois, sendo a rede dinâmica, mudanças podem acontecer a qualquer momento, necessitando
atualizar a tabela de roteamento em todos os roteadores da rede.

Para reduzir o trabalho de atualização da configuração da tabela de roteamento nos


roteadores, algoritmos foram elaborados para que, através de protocolos de comunicação,
possam atuar de forma automática na rede. Assim, quando um roteador tem alguma mudança
que impacte no roteamento, esses dados são atualizados na tabela e repassados para os
outros roteadores sem a necessidade de intervenção humana. Esses algoritmos ficaram
conhecidos como algoritmos de roteamento. Os algoritmos mais conhecidos são o algoritmo
de estado de enlace e o vetor distância.

Algoritmo Estado de Enlace

O algoritmo estado de enlace é baseado no conhecimento dos roteadores da topologia da


rede. Os roteadores estabelecem uma relação com os vizinhos chamada de adjacência. Cada
roteador envia informações sobre seus enlaces para os vizinhos, por meio da mensagem LSA
(Link State Advertisement). Essa mensagem é repassada roteador a roteador na rede,
construindo um banco de dados topológico e criando um mapa de toda a rede.

A partir da análise desse banco de dados topológico e utilizando o algoritmo de Dijkstra, é


determinado o menor caminho (melhor custo) na tabela de roteamento para os endereços IP.
Até que todos os roteadores estejam com o mesmo banco de dados topológico, ocorre o
processo de convergência.

Exemplo de protocolo que utilizam o algoritmo de estado de enlace: OSPF (Open Shortest Path
First).

Algoritmo Vetor Distância

O algoritmo vetor distância consiste no envio periódico da tabela de roteamento para os


roteadores vizinhos, sendo utilizados mecanismos como split horizon, para evitar loops de
roteamento, que consiste em não enviar para o roteador vizinho rotas aprendidas a partir dele
mesmo. As tabelas de roteamento são construídas a partir de troca de mensagens (PERES,
LOUREIRO, SCHMITT, 2014).
Inicialmente, o roteador só conhece somente as redes conectadas diretamente a ele. Tendo
sido feita a transmissão dessas informações e das rotas aprendidas pelos outros vizinhos, as
tabelas de roteamento dos roteadores chegarão a um estado consistente em um processo de
convergência. São utilizadas métricas para identificar os melhores caminhos, por exemplo, o
número de saltos na rede.

Exemplos de protocolos de roteamento que utilizam o algoritmo de vetor distância: RIP


(Routing Information Protocol), RIPv2 e IGRP (Internal Gateway Routing Protocol) da Cisco.

Protocolos ICMP

O protocolo ICMP (Internet Control Message Protocol) é um protocolo da camada de rede


utilizado para relatar eventos inesperados ao transmissor relacionado ao processamento de
pacotes pelo roteador ou equipamento interligado na rede. As mensagens ICMP podem ser
divididas em duas categorias: mensagens de relatório de erro e mensagens de consulta. As
mensagens de relatório de erro são utilizadas para relatar erros que podem ocorrer no
processamento de datagramas IP. Já as mensagens de consulta são utilizadas para testar ou
verificar a disponibilidade de estações ou roteadores na Internet (FOROUZAN; MOSHARRAF,
2013). Na Figura 3.20, a seguir, temos o formato do cabeçalho das mensagens ICMP:

Figura 3.20 - Cabeçalho das mensagens ICMP

Figura 3.20 - Cabeçalho das mensagens ICMP

Fonte: Forouzan e Mosharraf (2013, p. 293).

O campo tipo de mensagem identifica a mensagem ICMP, enquanto o campo código


representa a razão particular para o tipo de mensagem. Segundo Tanenbaum e Wetherall
(2011), são definidos 12 tipos de mensagens ICMP, e cada uma é transportada de forma
encapsulada em um pacote IP. Na Tabela 3.5, a seguir, temos os principais tipos de mensagem
ICMP:

Tipo de mensagem

Descrição

Destination unreachable

O pacote não pode ser entregue


Time exceeded

O campo TTL atinguiu 0

Parameter problem

Campo de cabeçalho inválido

Source quench

Restringe o envio de pacotes

Redirect

Ensina uma rota a um roteador

Echo e Echo reply

Verificam se uma máquina está ativa

Timestamp request/reply

O mesmo que echo, mas com registro de tempo


Router advertisement/solicitation

Encontra um roteador próximo

Tabela 3.5 - Principais tipos de mensagem ICMP

Fonte: Tanenbaum e Wetherall (2011, p. 292).

Alguns exemplos de aplicações que utilizam os mecanismos de mensagem de consulta do


protocolo ICMP são o ping e traceroute. O ping é utilizado para checar se uma estação está
ativa com base no seu endereço IP através de solicitações e respostas de eco. Na Figura 3.21, a
seguir, temos um exemplo de execução do comando ping:

Figura 3.21 - Execução de comando ping

Figura 3.21 - Execução de comando ping

Fonte: Forouzan e Mosharraf (2013, p. 295).

Na resposta do comando ping, são devolvidos o endereço IP da máquina que responde ao eco,
o número de saltos TTL e o tempo de ida e volta. Já o comando traceroute é utilizado para
rastrear o caminho de um pacote da origem até o seu destino. A seguir, temos um exemplo de
retorno do traceroute:

Figura 3.22 - Resposta de um comando traceroute

Figura 3.22 - Resposta de um comando traceroute

Fonte: Forouzan e Mosharraf (2013, p. 296).

Vemos na resposta apresentada quatro saltos na rede para atingir o destino. Por meio desse
comando traceroute, é possível identificar o enlace na rede que pode estar apresentando
problemas quando o pacote não atinge seu destino.

Tendo visto os principais aspectos dos protocolos na camada de rede, podemos ir para o
próximo tópico relacionado às camadas mais baixas: física e enlace.

praticar

Vamos Praticar

O endereço IPv4 é ainda muito utilizado nas redes, apesar do crescimento da adoção do
protocolo IPv6. Com seus 32 bits, o endereço IPv4 é dividido em duas partes: rede e host. Na
parte de host, nem todos os endereços possíveis podem ser alocados, pois dois deles são
especiais para outros propósitos.

Com base nesse contexto do IPv4, assinale a alternativa que apresenta o endereço especial na
rede em que todos os bits de host estão com valor “1”:

a) Endereço de rede.

b) Endereço físico.

c) Endereço de servidor.

d) Endereço de broadcast.

e) Endereço de multicast.

Protocolos na Camada de Enlace/Física

Após a aplicação fazer uso da camada de transporte para criar uma comunicação entre
máquinas através de serviços orientados ou não à conexão e, posteriormente, utilizar a
camada de rede para criar o endereçamento lógico para o encaminhamento ao longo da rede,
chega a vez da camada de enlace e física, que, no modelo TCP/IP, é conhecida como acesso ao
meio.

Segundo Loureiro et al. (2014), no nível de enlace temos a coordenação da comunicação


realizada no nível físico da rede, controlando o acesso e identificando problemas durante a
transmissão dos sinais que representam os dados entre dois equipamentos conectados
diretamente. Durante o processo de transmissão de dados, o enlace recebe os datagramas IP
(pacotes) da camada de rede e os organiza em formato de quadros (frames), preparando-os
para a transmissão no meio físico. Os quadros são organizados de tal forma que no fluxo de
bits possam ser identificados pelo lado receptor, sendo o mais comum a adoção de inserção de
bytes de flags que delimitam o início e fim de um quadro. Também são inseridos nos quadros
mecanismos para a detecção e correção de erros, com o uso de códigos de detecção de erros,
como paridade, checksums e verificações de redundância cíclica (CRC) e códigos de correção
de erros, tendo como exemplos os códigos de Hamming, códigos de convolução binários,
código de Reed Solomon e códigos de verificação de paridade de baixa densidade
(TANENBAUM; WETHERALL, 2011).

Figura 3.23 - Transmissão de pacotes em quadros

Figura 3.23 - Transmissão de pacotes em quadros

Fonte: Tanenbaum e Wetherall (2011, p. 121).

Um enlace é formado pelo compartilhamento do meio físico entre duas interfaces (placa) de
rede. Para que haja comunicação através desse enlace, é necessário que os mesmos
protocolos de nível de enlace e físico sejam utilizados. Devido à arquitetura em camadas, é
possível selecionar o nível de enlace e físico mais apropriado para compor a infraestrutura da
rede, como a adoção de enlaces de fibras ópticas para a conexão física entre dois
equipamentos ou o uso de enlaces via radiofrequência para dispositivos móveis em redes sem
fio.

Tipos de Acesso ao Meio Físico

Tendo em vista a possibilidade de duas estações na rede transmitirem simultaneamente no


mesmo meio físico compartilhado, podem ocorrer as chamadas colisões. Para tanto, é
importante que o nível de enlace faça um controle sobre o acesso ao meio físico, para evitar
interferências mútuas nos sinais transmitidos.

As redes de acesso ao meio ordenado promovem um controle sobre o momento que


determinada estação passa a ter o privilégio de transmissão, ou seja, cada estação tem um
momento específico para transmitir um quadro de enlace. Para esse tipo de acesso, existe um
tempo máximo que uma estação deve aguardar para transmitir, conhecido como retardo
máximo conhecido (LOUREIRO et al., 2014).

Alguns exemplos de redes com acesso ao meio ordenado:

Redes token bus: redes que utilizam um quadro especial denominado token, estabelecendo
uma ordem de acesso em uma topologia de rede em barramento. Uma das estações cria o
token e o transmite para a próxima estação na fila. Ao receber o token, essa estação pode
transmitir um quadro de dados. O token, ao chegar à última estação da fila, repassa para a
primeira.

Redes token ring: atuam de forma similar a rede token bus, porém em uma topologia de
rede em anel. Nessa rede, a estação que recebe um token livre e possui um quadro de dados
para transmissão envia um token ocupado e esse quadro. Após o envio do quadro, é criado um
novo token livre para o anel.

Redes FDDI (Fiber Distributed Data Interface): estão estruturadas em anéis duplos, utilizando
o processo de acesso ao meio similar à rede token bus, em que é criada uma fila e passagem
de bastão entre as estações. Esse tipo de rede é muito utilizado em backbones de
comunicação.

Redes bluetooth: utilizadas para redes pessoais sem fio, a transmissão é realizada com um
subcanal por apenas um slot de tempo e salta entre subcanais de forma pseudoaleatória. A
coordenação dos saltos é feita por meio de uma estação master.

Outro tipo de acesso é o realizado pelas redes de acesso ao meio compartilhado, em que não
há uma ordem específica para a transmissão. Nesse tipo de acesso, podem ocorrer colisões, e
o meio de enlace deve detectar e corrigir essa situação por meio de retransmissões. A
vantagem está no fato de não ser necessária a estação aguardar um token para poder
transmitir. Uma técnica utilizada para o acesso ao meio compartilhado é o CSMA (Carrier
Sense Multiple Access), no qual a estação identifica se há alguma transmissão em andamento
antes de transmitir.

O algoritmo CSMA 1-persistent indica que a estação que detectou uma transmissão
permanece escutando o meio até que fique livre. Na Figura 3.24, a seguir, temos que a estação
C fica no aguardo do término da transmissão que está em andamento pela estação A, para
transmitir assim que o meio estiver livre. Porém, no caso de duas estações transmitirem
simultaneamente, uma colisão ainda pode ocorrer.

Figura 3.24 - CSMA 1-persistent

Figura 3.24 - CSMA 1-persistent

Fonte: Loureiro et al. (2014, p. 14).

Outra alternativa de acesso ao meio compartilhado é o CSMA p-persistent, em que a estação,


ao perceber que o meio está livre, realiza um cálculo probabilístico (probabilidade p) para
decidir se transmite ou não. Se o resultado do cálculo indicar que não deve transmitir, a
estação aguarda um tempo predefinido para tentar a transmissão novamente.

Como exemplos de redes que utilizam o acesso ao meio compartilhado, temos (LOUREIRO et
al., 2014):

Redes Ethernet: padronizadas no documento IEEE 802.3, são as redes locais mais utilizadas
atualmente. Utilizam o protocolo CSMA/CD (Carrier Sense Multiple Access/Collision
Detection), com 1-persistent.

Redes Wi-Fi: redes locais sem fio padronizadas pelo documento IEEE 802.11. Foram
definidas com base no padrão Ethernet, utilizando o protocolo CSMA/CA (Carrier Sense
Multiple Access/Collision Avoidance) com p-persistent.

No próximo sub-tópico, falaremos sobre o padrão Ethernet, o mais utilizado nas redes locais
atualmente.

Ethernet

O padrão Ethernet, definido no documento IEEE 802.3, é aplicado nas redes locais com cabos.
Para a interconexão dos computadores nessa rede, eram utilizados equipamentos
concentradores, conhecidos como hubs, que foram substituídos pelos equipamentos switches.
Os switches realizam a comutação de quadros entre os enlaces que estão neles conectados e
podem operar nos modos full duplex e half duplex.
As redes Ethernet oferecem um serviço não orientado à conexão e não apresentam
mensagens de erro. O quadro Ethernet suporta no mínimo 46 bytes e no máximo 1500 bytes,
vindos da camada de rede. Incluindo o cabeçalho, o quadro Ethernet pode ter o tamanho de
desde 64 bytes até 1518 bytes. O formato desse quadro está apresentado na Figura 3.25, a
seguir:

Figura 3.25 - Formato do quadro Ethernet

Figura 3.25 - Formato do quadro Ethernet

Fonte: Loureiro et al. (2014, p. 24).

O preâmbulo permite sincronizar o emissor e o receptor no nível de enlace. SFD (Start Frame
Delimiter) delimita o início de um quadro. O campo endereço de destino refere-se ao endereço
físico da estação de destino, enquanto o endereço de origem refere-se ao endereço físico da
estação de origem. O tipo indica o protocolo no nível de rede que está sendo transportado
pelo quadro (ex.: IP). A seguir, temos o campo de dados e o campo CRC, esse último para a
detecção de erros.

Endereços Físicos

Nas redes Ethernet, os endereços utilizados são conhecidos como endereços MAC (Media
Access Control) e são os endereços físicos atribuídos às placas de interface de rede (NIC –
Network Interface Card). São endereços únicos e exclusivos globalmente, sendo representados
por octetos hexadecimais separados por dois pontos ou traço simples. Exemplo:
08:00:27:7D:A1:85.

A primeira parte do endereço MAC (3 bytes) representa a identificação do fabricante de


hardware. A segunda parte identifica a interface propriamente dita, sendo controlada pelo
fabricante de hardware.

Existem três tipos de endereços Ethernet:

Unicast: identifica uma interface de rede (oitavo bit é sempre igual a zero).

Multicast: identifica várias interfaces de rede (oitavo bit é sempre igual a um)

Broadcast: identifica todas as interfaces da rede (todos os bits estão em um). O endereço de
broadcast é FF:FF:FF:FF:FF:FF.

Os equipamentos switches associam a cada porta que tem um equipamento conectado o seu
endereço físico. Para realizar a consulta da relação entre os endereços físicos (MAC) e
endereços lógicos (IP), é utilizado o protocolo ARP (Address Resolution Protocol). Nesse
protocolo, é enviada uma mensagem em broadcast solicitando o endereço MAC relacionado a
um endereço IP.

CSMA/CD

As redes Ethernet utilizam o protocolo CSMA/CD (Carrier Sense Multiple Access/Collision


Detection) para realizar o controle de acesso ao meio.

Nesse protocolo, antes de uma estação transmitir, ela escuta a rede para verificar se há
alguma transmissão em andamento (carrier sense). Se o canal estiver livre, é feita a
transmissão, do contrário, é aguardado. É possível que, mesmo que o meio esteja livre, duas
estações decidam transmitir simultaneamente, podendo ocasionar uma colisão.

Quando ocorre a colisão, as estações escolhem um tempo aleatório para tentar uma nova
transmissão. Esse tempo de espera aleatório é calculado pelo algoritmo de backoff, que
determina o momento em que a estação poderá tentar enviar suas mensagens novamente,
sendo que, após 10 tentativas, o quadro é descartado.

Nomenclatura Ethernet no Nível Físico

O Ethernet apresenta alguns padrões relacionados à largura de banda, significativa no nível


físico. Esses padrões estão representados na Tabela 3.6, a seguir:

Padrão

Tipo de cabeamento

Velocidade

Alcance do cabo

10Base5
Cabo coaxial grosso

10 Mbps

500 m

10Base2 (1985)

Cabo coaxial fino

10 Mbps

185 m

10Base-T (1990)

Cabo UTP Cat 3

10 Mbps

100 m
10Base-F (1993)

Fibra óptica

10 Mbps

2000 m

100Base-T

Cabo UTP

100 Mbps

100 m

100Base-TX

Cabo UTP Cat 5 ou STP

100 Mbps
100 m

100Base-FX

Fibra óptica

100 Mbps

100 m

1000Base-FX

Fibra óptica

1 Gbps

550 m

1000Base-LX

Fibra óptica monomodo

1 Gbps
5000 m

1000Base-CX

Cabo STP

1 Gbps

25 m

1000Base-T

Cabo UTP Cat 5

1 Gbps

100 m

1000Base-TX

Cabo UTP Cat 6


1 Gbps

100 m

10GBase-S

Fibra óptica multimodo

10 Gbps

300 m

10GBase-L

Fibra óptica monomodo

10 Gbps

10000 m

10GBase-E
Fibra óptica monomodo

10 Gbps

40000 m

10GBase-R

Cabo UTP Cat 6a ou STP

10 Gbps

100 m

Tabela 3.6 - Meios físicos utilizados no Ethernet

Fonte: Loureiro et al. (2014, p. 29).

O padrão de 10 Mbps é conhecido por Ethernet. Já os padrões 100 Mbps são denominados
Fast Ethernet e 1 Gbps é tratado como Gigabit Ethernet.

No próximo subtópico, trataremos do padrão Wi-Fi, utilizado para as redes sem fio, e que teve
como base o padrão Ethernet.

Wi-FI

As redes Wi-Fi são redes sem fio cuja terminologia vem do inglês wireless (sem fio) e fidelity
(fidelidade), tendo a interoperabilidade de equipamentos controlada pela Wi-FI Alliance. O
padrão utilizado para as redes sem fio é a IEEE 802.11.
O controle de acesso ao meio realizado pelas redes Wi-Fi é o CSMA/CA (Carrier Sense Multiple
Access/Collision Avoidance). Os passos desse protocolo são (LOUREIRO et al., 2014):

Após verificar que o canal está livre, a estação aguarda um tempo denominado DIFS (DCF
Interframe Space).

Se o meio continua livre após esse tempo, é escolhida uma janela de contenção baseada em
fatias de tempo, similar ao algoritmo de backoff das redes Ethernet. A cada fatia da janela de
contenção, o meio é testado. Se estiver ocupado, o tempo é congelado, caso contrário a fatia é
decrementada.

Após o término da janela de contenção, a estação envia um pedido de transmissão RTS


(Request To Send).

Ao receber a mensagem RTS, a estação destino aguarda um intervalo de tempo SIFS (Short
Interframe Space) e envia uma confirmação para a origem CTS (Clear To Send).

Após também aguardar o intervalo de tempo SIFS, a estação origem envia os dados para a
estação destino.

Após um tempo SIFS, a estação destino envia uma confirmação para o recebimento correto
dos dados através da mensagem ACK.

Na Figura 3.26, a seguir, temos uma representação da troca de mensagens e temporização


utilizadas no CSMA/CA:

Figura 3.26 - Temporização do protocolo CSMA/CA

Figura 3.26 - Temporização do protocolo CSMA/CA

Fonte: Loureiro et al. (2014, p. 35).

Outro método para controle de acesso ao meio, porém pouco utilizado, é o PCF, em que o AP
(Access Point) utiliza um processo de varredura para identificar as estações que estão
aguardando para transmitir.

O formato do quadro IEEE 802.11 utilizado para a troca de informações via redes sem fio está
apresentado na Figura 3.27, a seguir:

Figura 3.27 - Formato quadro IEEE 802.11

Figura 3.27 - Formato quadro IEEE 802.11

Fonte: Loureiro et al. (2014, p. 36).


Nesse quadro, temos delimitadores e detecção de erros, como no quadro Ethernet, além dos
endereços utilizados. Esses endereços também utilizam o mesmo padrão do Ethernet, ou seja,
são os endereços MAC (endereço físico) das placas de interface de rede sem fio.

VLAN

Os switches, que realizam a comutação no nível de enlace, podem apresentar uma


funcionalidade que pode ser muito útil para o gerenciamento de redes, a VLAN (Virtual Local
Area Network). Segundo Loureiro et al. (2014), o recurso da VLAN permite que o switch tenha
diferentes redes lógicas que não se conectam entre si dentro do mesmo equipamento. Na
Figura 3.28, a seguir, temos um switch com a configuração de duas redes VLAN, uma destinada
ao departamento de RH e outras para o departamento de produção.

Figura 3.28 - VLAN

Figura 3.28 - VLAN

Fonte: Loureiro et al. (2014, p. 60).

Para essa funcionalidade, é preciso definir uma marca (tag) para a VLAN para as portas às quais
as máquinas que farão parte dessa rede lógica estão conectadas. É possível configurar VLANs
em portas de diferentes switches, como mostrado na Figura 3.29. Nesse caso, é necessário o
uso do modo VLAN trunk nas interfaces entre os switches.

Figura 3.29 - VLAN em diferentes switches

Figura 3.29 - VLAN em diferentes switches

Fonte: Loureiro et al. (2014, p. 61).

O uso de VLAN traz uma flexibilidade muito grande para uma melhor administração da rede,
principalmente quando seja interessante dividir a rede local em diferentes redes lógicas.

No próximo subtópico, falaremos sobre alguns aspectos do nível físico de comunicação.

Codificação e Sinalização no Nível Físico

No nível físico de transmissão, é importante que o lado transmissor esteja alinhado com o lado
receptor de uma comunicação de dados, de forma a gerar e interpretar corretamente os bits
enviados pelo meio. Em função disso, diferentes mecanismos de codificação podem ser
utilizados para sinalizar a representação dos níveis lógicos “0” e “1” realizados em uma
transmissão digital. Três grupos se destacam: codificação polar, codificação bipolar e
codificação multinível.

Codificação Polar
Na codificação polar, o sinal elétrico oscila entre um valor positivo e negativo. Podemos ter a
codificação NRZ-L, em que valores positivos representam o bit “0” e valores negativos o bit
“1”. Na codificação NRZ-I, são detectadas as inversões de polaridade, que representam o bit
“1” e as não inversões para o bit “0”. Essas codificações estão representadas na Figura 3.30, a
seguir:

Figura 3.30 - Codificação NRZ

Figura 3.30 - Codificação NRZ

Fonte: Loureiro et al. (2014, p. 151).

Um problema nesse tipo de codificação é a constância da potência do sinal, que pode


prejudicar o alinhamento entre transmissor e receptor. Na codificação RZ, podemos contornar
esse problema, com o sinal mudando durante a transmissão do bit e não entre cada um. Isso
está refletido na Figura 3.31.

Figura 3.31 - Codificação RZ

Fonte: Loureiro et al. (2014. p. 152).

Outro tipo de codificação polar é o Manchester e o Manchester diferencial. No Manchester, os


bits são definidos pela transição do sinal, enquanto no Manchester diferencial a transição é
feita no início do sinal apenas para o bit “0”.

Figura 3.32 - Codificação Manchester e Manchester diferencial

Figura 3.32 - Codificação Manchester e Manchester diferencial

Fonte: Loureiro et al. (2014, p. 152).

Além da codificação polar, podemos ter mais polaridades que podem ser utilizadas, como na
codificação bipolar.

Codificação Bipolar

Na codificação bipolar, são utilizados três níveis de polaridade (tensão): positivo, negativo e
zero. Nesse caso, teremos o valor de um bit na tensão zero e outro bit nos outros dois níveis
de tensão. Um dos exemplos é a codificação AMI, retratada na Figura 3.33, a seguir:

Figura 3.33 - Codificação AMI e pseudoternária

Figura 3.33 - Codificação AMI e pseudoternária

Fonte: Loureiro et al. (2014, p. 153).

Nessa codificação, o bit “0” é representado pelo nível zero, enquanto o bit “1” é sinalizado
pelas outras polaridades negativa e positiva de forma alternada. No modo pseudoternário, o
bit “1” é representado pelo nível 0 de sinal, enquanto o bit “0” é representado pela sinalização
das outras polaridades (negativa e positiva), de forma alternada.

Codificação Multinível

A codificação multinível apresenta mais bits para a mesma sinalização. Um exemplo é a


codificação 2B1Q, conforme mostrado na Figura 3.34, a seguir:

Figura 3.34 - Codificação multinível

Figura 3.34 - Codificação multinível

Fonte: Loureiro et al. (2014, p. 154).

Nessa codificação, temos a representação de dois bits para um nível de sinal. Assim,
dependendo do nível, dois bits devem ser reconhecidos no lado receptor.

É possível também o uso de sinalização analógica para uma transmissão digital. Nesse caso, é
utilizado o processo de modulação, em que dois tipos de sinais são “misturados”. Alguns
exemplos de sinalização analógica estão apresentados no Quadro 3.4, a seguir:

Sigla

Significado

Descrição

ASK

Modulação por chaveamento de amplitude

Os valores 0 e 1 são representados por amplitudes de sinal diferentes.


FSK

Modulação por chaveamento de frequência

Os valores 0 e 1 são representados por frequências de sinal diferentes.

PSK

Modulação por chaveamento de fase

Os valores 0 e 1 são representados por fases de portadora do sinal diferentes.

Quadro 3.4 - Modulações para transmissão digital

Fonte: Loureiro et al. (2014, p. 155).

Para o nível de transmissão, devem ser consideradas as taxas de transmissão (bps), tendo em
vista que transmissor e receptor devem estar alinhados. Logo, a mesma taxa deve ser utilizada
em ambos os lados, além da mesma forma de sinalização e codificação no meio físico.

praticar

Vamos Praticar

O Ethernet é o padrão mais utilizado para redes locais, atuando principalmente na camada de
acesso ao meio. Apresenta um padrão de formato de quadros utilizado na camada de enlace,
em que endereços são utilizados para enviar os quadros.

Assinale a alternativa correta que apresenta o endereço utilizado no quadro Ethernet na


camada de enlace:

a) Endereço de socket.

b) URL.

c) Endereço IP.
d) Endereço MAC.

e) Endereço lógico.

indicações

Material Complementar

Livro

Redes de computadores – Uma abordagem top-down

Editora: Bookman

Autor: Behrouz A. Forouzan e Firouz Mosharraf

ISBN: 978-85-8055-169-3

Comentário: Os capítulos 2, 3, 4 e 5 dessa obra apresentam de uma forma didática os assuntos


abordados nesta unidade, complementando os conceitos apresentados. Possui uma estrutura
de tópicos bastante interessante, fazendo uma ligação do conteúdo com os temas voltados
para a maior rede de computadores, a Internet.

Filme

Internet – Redes de computadores

Ano: 2012

Comentário: Esse vídeo apresenta em um formato animado como os pacotes de dados são
gerados e transmitidos pela rede Internet, através de roteadores e em redes locais nos
switches. Também apresenta alguns conceitos como proxy, firewall, largura de banda, meios
de transmissão, servidores web e portas de comunicação, complementando os conceitos
vistos nesta unidade.

Trailer

conclusão

Conclusão

Neste tópico, foram abordados os principais protocolos e particularidades utilizados nas redes
de comunicação de dados. Na camada de aplicação, protocolos são utilizados para suportar as
aplicações em sistemas computacionais para comunicação em rede. Essas fazem uso dos
serviços de protocolos de transporte, nos quais são utilizadas portas para comunicação das
aplicações. Os protocolos de transporte recorrem à camada de rede para que os dados sejam
enviados através de pacotes com endereços lógicos conhecidos pela rede, a fim de alcançar
seu destino. E, para assegurar a correta transmissão pelo meio físico, os dados pacotes de
dados são preparados pelas camadas de enlace e física.

referências

Referências Bibliográficas

COLOURIS, G.; DOLLIMORE, J.; KINDBERG, T.; BLAIR, G. Sistemas distribuídos: conceito e
projeto. 5. ed. Porto Alegre: Bookman, 2013.

FOROUZAN, B. A. Comunicação de dados e redes de computadores. 4. ed. Porto Alegre:


AMGH, 2010.

FOROUZAN, B. A.; MOSHARRAF, B. Redes de computadores: uma abordagem top-down. Porto


Alegre: AMGH, 2013.

INSTITUTE OF ELECTRICAL AND ELECTRONICS ENGINEERS. IEEE std 802.3: standard for local
and metropolitan area networks – carrier sense multiple access with collision detection
(CSMA/CD) access method and physical layer specifications. Nova Iorque, 2002.

INSTITUTE OF ELECTRICAL AND ELECTRONICS ENGINEERS. IEEE std 802.11: Wireless LAN
Medium Access Control (MAC) and Physical Layer (PHY) Specifications. Nova Iorque, 2007.

KUROSE, J. F.; ROSS, K. W. Redes de computadores e a Internet: uma abordagem top-down. 5.


ed. São Paulo: Addison Wesley, 2010.

LOUREIRO, C. A. H.; SCHMITT, M. A. R.; PERES, A.; OLIVEIRA, A. M. Redes de computadores III:
níveis de enlace e físico. Porto Alegre: Bookman, 2014.

MAIA, L.P. Arquitetura de redes de computadores. 2. ed. Rio de Janeiro: LTC, 2013.

PERES, A.; LOUREIRO, C. A. H.; SCHMITT, M. A. R. Redes de computadores II: níveis de


transporte e rede. Porto Alegre: Bookman, 2014.
TANENBAUM, A. S.; WETHERALL, D. Redes de computadores. 5. ed. São Paulo: Pearson
Prentice Hall, 2011.

© 2020 - LAUREATE - Todos direitos reservados

Você também pode gostar