apostila tcp/ip

Propaganda
Aula 07 – 24/03/2008 - Laboratório de Redes – 7ª Fase
Universidade do Contestado - UnC
Sistemas de Informação
Prof. Carlos Guerber
APOSTILA TCP/IP
1. HISTÓRICO .............................................................................................................................. 3
2. O MODELO DE REFERÊNCIA TCP/IP.................................................................................... 6
2.1
A CAMADA INTER-REDES ................................................................................... 6
2.2
A CAMADA DE TRANSPORTE ............................................................................. 8
2.3
A CAMADA DE APLICAÇÃO ................................................................................. 9
2.4
A CAMADA HOST/REDE....................................................................................... 9
2.5
POSICIONAMENTO DO NÍVEL OSI ................................................................... 10
2.6
EXEMPLOS DE APLICAÇÃO DE REDES COM ARQUITETURA TCP/IP.......... 11
2.7
COMPARAÇÃO ENTRE OS MODELOS DE REFERÊNCIA OSI E TCP/IP ....... 14
2.8
UMA CRÍTICA AO MODELO DE REFERÊNCIA TCP/IP .................................... 17
3. IPv4 - A VERSÃO ATUAL DO IP........................................................................................... 19
3.1
O DATAGRAMA IPV4 .......................................................................................... 19
4. ENDEREÇAMENTO IP........................................................................................................... 27
4.1
IDENTIFICADORES UNIVERSAIS ...................................................................... 27
4.2
TRÊS CLASSES PRIMÁRIAS DE ENDEREÇO .................................................. 27
4.3
ENDEREÇO DE UMA REDE E ENDEREÇO DE DIFUSÃO (BROADCAST) ..... 29
4.4
DIFUSÃO LOCAL................................................................................................. 29
4.5
ENDEREÇOS DE REFERÊNCIA À PRÓPRIA REDE E AO PRÓPRIO HOST. . 30
4.6
ENDEREÇO DE MULTICAST.............................................................................. 30
4.7
FRAQUEZAS DO ENDEREÇAMENTO IP........................................................... 31
4.8
NOTAÇÃO DECIMAL........................................................................................... 32
4.9
ENDEREÇO DE LOOPBACK .............................................................................. 33
4.11
ENDEREÇAMENTO DE SUB-REDE................................................................... 33
4.11.1
Distribuição Geográfica de Endereços................................................................ 34
4.11.2
Implementação de Sub-redes com Máscara....................................................... 35
4.11.3
Super-redes ......................................................................................................... 35
4.11.4
Exemplo de Redes .............................................................................................. 36
4.12
SUB-REDES......................................................................................................... 38
4.13
PLANEJAMENTO DE UM ESQUEMA DE ENDEREÇAMENTO......................... 41
5. PROTOCOLOS DE ROTEAMENTO ...................................................................................... 43
5.1
CONCEITO........................................................................................................... 43
5.2
RIP........................................................................................................................ 45
5.3
RIP II..................................................................................................................... 46
5.4
OSPF .................................................................................................................... 47
5.5
COMPARAÇÃO ENTRE OS PROTOCOLOS DE ROTEAMENTO RIP E OSPF 47
5.6
EGP ...................................................................................................................... 48
6. PROTOCOLO ARP E RARP .................................................................................................. 50
6.1
INTRODUÇÃO ..................................................................................................... 50
6.2
PROBLEMA DE CONVERSÃO............................................................................ 50
6.2.1
Conversão Através do Mapeamento Direto: ........................................................ 51
6.2.2
Conversão Através de Vinculação Dinâmica: ...................................................... 51
6.2.3
Cache de Conversão de Endereço: ..................................................................... 51
6.3
APRIMORAMENTO DE ARP ............................................................................... 52
6.3.1
Definição ARP ...................................................................................................... 52
6.3.2
Implementação ARP............................................................................................. 52
6.3.3
Encapsulamento e Identificação ARP .................................................................. 53
6.3.4
Formato do Protocolo ARP................................................................................... 53
6.4
PROTOCOLO RARP............................................................................................ 54
6.4.1
Introdução............................................................................................................. 54
7. PROTOCOLO ICMP ............................................................................................................... 56
7.1
MENSAGEMS ICMP ............................................................................................ 57
7.1.1
Echo Request e Echo Reply................................................................................. 57
7.1.2
Destination Unreacheable .................................................................................... 58
7.1.3
Source Quench..................................................................................................... 59
7.1.4
Redirect ................................................................................................................ 60
7.1.5
TTL Expired .......................................................................................................... 62
7.1.6
ICMP Router Solicitation/Advertisement .............................................................. 63
7.1.7
Aquisição de informações de Roteamento........................................................... 64
8. PROTOCOLOS DA CAMADA DE TRANSPORTE ............................................................... 66
8.1
CAMADA DE TRANSPORTE............................................................................... 66
8.2
PROTOCOLO UDP .............................................................................................. 67
8.2.1
Formato da Mensagem UDP................................................................................ 69
8.2.2
Encapsulamento de UDP e Colocação de Protocolos em Camadas .................. 69
8.2.3.1
Organização em camadas.................................................................................... 71
8.2.4
Multiplexação e Demultiplexação UDP e Portas.................................................. 71
8.2.4.1
Números de portas UDP reservadas e disponíveis ............................................. 73
8.3
PROTOCOLO TCP .............................................................................................. 75
8.3.1
Serviços TCP........................................................................................................ 79
8.3.1.1
Serviços TCP: transferência de dados................................................................. 79
8.3.1.2
Serviços TCP: confiabilidade................................................................................ 81
8.3.1.4
Serviços TCP: controle de fluxo ........................................................................... 82
8.3.1.5
Serviços TCP: multiplexação................................................................................ 82
8.3.1.6
Serviços TCP: conexão ........................................................................................ 82
8.3.1.7
Estabelecimento de conexão ............................................................................... 83
8.3.2
Transferência de Dados ....................................................................................... 85
8.3.3
Encerramento da Conexão................................................................................... 86
8.3.4
Desempenho TCP ................................................................................................ 87
3
1
HISTÓRICO
A história do TCP/IP está intimamente interligada com a da Internet. O
conjunto de protocolos TCP/IP resultou de pesquisas fundadas pelo ARPA
(Advanced Research Projects Agent) para conectar redes dos seus
departamentos de pesquisas, a esta rede denominou-se ARPANET. Os
primeiros projetos de pesquisas originaram-se da idéia de comutação de
pacote, considerada radical na época, em meados de 1960.
No final da década de 60, precisamente em dezembro de 69, entrou no
ar uma rede experimental com quatro nós interligando as instituições UCLA
(Universidade de Los Angeles), UCSB (Universidade de Santa Barbara), SRI
(Instituto de Pesquisa de Stanford) e Universidade de Utah. Através da
experiência conseguida nesta rede, alavancou-se grandes pesquisas sobre
protocolos, culminando com a criação dos protocolos e do modelo TCP/IP.
Em 1983 o TCP/IP tornou-se o protocolo oficial da ARPANET, levando a
uma das primeiras definições de Internet, como sendo um conjunto de rede
conectadas via TCP/IP; nessa mesma época foi feita na Universidade de
Berkeley, a implantação do protocolo ao sistema operacional Unix, conhecido
como BSD . Em adição aos protocolos foram oferecidas um conjunto de
aplicações que passaria a expandir os serviços do Unix a mais de uma
máquina. Com esta implantação o protocolo aumentou sua popularidade.
Conjuntamente a estas aplicações, o BSD ofereceu uma abstração ao
seu sistema operacional que permitia acesso aos protocolos TCP/IP, chamada
sockets. Isto aumentou a utilização dos protocolos pelos programadores que
passaram a enxergá-los num mais alto nível que antes. A partir daí pesquisas
foram alavancadas e novas aplicações foram surgindo.
Em 1985 a entidade americana NSF ( National Science Foundation)
interligou os supercomputadores de seus centros de pesquisas em rede, que
passaram a ser conhecida como NSFNET. Em 1986 esta rede conectou-se a
ARPANET. O conjunto de todos os computadores desta rede e sua espinha
dorsal passaram a ser conhecidas oficialmente como Internet.
4
Em 1988 a NSFNET passou a ser mantida pela IBM, MCI ( empresa de
telecomunicações americana) e MERIT ( instituição responsável por uma rede
pertencente a instituições de Michigan, EUA) estas criaram a ANS ( Advanced
Network and Services).
Em 1990 o backbone ( espinha dorsal) ARPANET deixou de existir e no
seu lugar foi criado uma outra espinha dorsal conhecida como DRI ( Defense
Research Internet ). Em 1990/1993 a ANS criou a ANSNET, que passou a ser
a nova espinha dorsal da Internet; paralelamente foi criado a espinha dorsal
européia (EBONE), que interligou alguns países da Europa a Internet. A partir
de 1993 a rede deixou de ser puramente acadêmica para ser explorada
comercialmente.
Desde 1991, membros da IETF ( Internet Engineering Task Force )
chegaram a conclusão que o crescimento exponencial da rede levaria em
poucos anos a exaustão dos endereços utilizados para identificar os
computadores na Internet. Isto se os equipamentos da época não esgotassem
toda a sua capacidade. Soluções paliativas então foram criadas para resolver
temporariamente este problema.
Foi criado um grupo de trabalho pela IETF, para definir uma nova versão
do IP ( Internet Protocol ), protocolo utilizado para endereçar e enviar dados
que trafegam pela rede. O intuito deste grupo era criar uma nova versão mais
eficiente e flexível, e que fosse capaz de resolver os problemas relacionados
com a questão do esgotamento de endereços e outros mais. Os principais
objetivos foram :
•
aceitar bilhões de hosts, mesmo com alocação de espaço de endereço
ineficiente;
•
reduzir o tamanho das tabelas de roteamento;
•
simplificar o protocolo de modo a permitir que os roteadores processem
os pacotes com mais rapidez;
•
oferecer mais segurança ( autenticidade e privacidade ) do que o IP
atual;
•
dar mais importância ao tipo de serviço, particularmente para os dados
em tempo real;
5
•
permitir multicast, possibilitando a especificação de escopos;
•
permitir que um host mude de lugar sem precisar mudar de endereço;
•
permitir que o protocolo evolua no futuro;
•
permitir a coexistência entre o novo e o antigo protocolo durante anos.
Foram submetidos 21 trabalhos ao grupo, estes propuseram desde
pequenos ajustes do IP, até a eliminação completa com o surgimento de um
novo protocolo. Três propostas foram utilizadas como base, e uma versão
ajustada foi criada e manteve características da versão atual, possuindo ainda
uma transição melhor. Depois de muita discussão, revisão e disputas, foi
produzida a recomendação para a nova versão do IP em novembro de 1994,
chamada de SIPP ( Simple Internet Protocol Plus), e lhe foi atribuída a
designação de Ipv6.
6
2
O MODELO DE REFERÊNCIA TCP/IP
Vamos deixar de lado temporariamente o modelo de referência OSI para
nos concentrarmos no modelo de referência usado na "avó" de todas as redes
de computadores, a ARPANET, e sua sucessora, a Internet.
A ARPANET era uma rede de pesquisa que foi criada pelo
Departamento de Defesa dos Estados Unidos. Pouco a pouco, centenas de
universidades e repartições públicas foram sendo conectadas a ela através de
linhas telefônicas privadas. Quando foram criadas as redes de rádio e satélite,
começaram a surgir problemas com os protocolos então existentes, o que
forçou a criação de uma nova arquitetura de referência. Seu objetivo era
conectar várias redes ao mesmo tempo. Essa arquitetura veio a ficar conhecida
como o Modelo de Referência TCP/IP, graças a seus dois principais protocolos.
Esse modelo foi definido pela primeira vez por Cerf e Kahn, 1974. Uma nova
perspectiva foi oferecida em Leiner et aI-, 1985. A filosofia de projeto na qual se
baseia o modelo é discutida em Clark, 1988.
Diante da preocupação do Pentágono de que seus preciosos hosts,
roteadores e gateways de inter-rede fossem destruídos de uma hora para
outra, definiu-se também que a rede fosse capaz de sobreviver à perda de
hardwares da sub-rede, impedindo que as conversas que estivessem sendo
travadas 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. Por essa
razão, era preciso criar uma arquitetura flexível, capaz de se adaptar a
aplicações com necessidades divergentes, como por exemplo a transferência
de arquivos e a transmissão de dados de voz em tempo real.
2.1
A CAMADA INTER-REDES
Todas essas necessidades levaram à escolha de uma rede de
comutação de pacotes baseada em uma camada de ligação inter-rede. Esse
7
camada, chamada de camada inter-redes, 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). É
possível, inclusive, que esses pacotes cheguem em outra ordem diferente
daquela em que foram enviados, obrigando as camadas superiores a
reorganizá-los, caso a entrega tenha de respeitar algum tipo de ordem.
Observe que, nesse caso, a expressão inter-rede é usada no sentido genérico,
muito embora essa camada esteja presente na Internet, analogia usada nesse
caso diz respeito ao sistema do correio. Uma pessoa pode soltar uma
seqüência de cartas internacionais em uma caixa de correio em um pais e, com
um pouco de sorte, a maioria delas será entregue no endereço correto no pais
de destino. Provavelmente as cartas atravessarão um ou mais gateways
internacionais, mas esse processo é transparente para os usuários. Por essa
razão, cada pais (ou seja, cada rede) tem seus próprios selos, tamanhos de
envelope preferidos e regras de entrega escondidas dos usuários. A camada
inter-redes define um formato de pacote oficial e um protocolo chamado de 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. Por essas razões, é
razoável dizer que a função da camada inter-redes TCP/IP é muito parecida
com a da camada de rede OSI.
Host A
Host A
Mensagem
idêntica
Aplicação
Aplicação
Pacote
idêntico
Transporte
Transporte
Roteador
Inter-Rede
Datagrama
idêntico
Inter-rede
Rede
Rede
Quadro
idêntico
Rede Física 1
Datagrama
idêntico
Rede
Inter-Rede
Rede
Quadro
idêntico
Rede Física 2
8
2.2
A CAMADA DE TRANSPORTE
No modelo TCP/IP, a camada localizada acima da camada inter-redes é
chamada de camada de transporte. A finalidade dessa camada é permitir que
as entidades par (peer entity) dos hosts de origem e de destino mantenham
uma conversação, exatamente como acontece na camada de transporte OSI.
Dois protocolos fim a fim foram definidos aqui. 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 uma
determinada máquina em qualquer computador 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 no fluxo de saída. 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 seqüência das mensagens
enviadas. Ele é amplamente usado em aplicações em que a entrega imediata é
mais importante do que a entrega precisa, como a transmissão de dados de
voz ou de vídeo. Desde que o modelo foi desenvolvido, o IP foi implementado
9
em muitas outras redes.
2.3
A CAMADA DE APLICAÇÃO
O modelo TCP/IP não tem as camadas de sessão e de apresentação.
Como não foi percebida qualquer necessidade, elas não foram incluídas. A
experiência com o modelo OSI provou a seguinte tese: elas são pouco usadas
na maioria das aplicações.
Acima da camada ,de transporte, está a camada de aplicação Ela
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), como mostra a Figura 1 anterior o protocolo do
terminal virtual permite que um usuário de um Computador estabeleça login em
uma máquina remota e trabalhe nela. O protocolo de transferência de arquivos
permite
mover
dados
com
eficiência
de
uma
máquina
para
outra.
Originalmente, o correio eletrônico era um tipo de transferência de arquivo. No
entanto, posteriormente um protocolo especializado foi desenvolvido para essa
função. 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, o protocolo usado para mover novos
artigos, e o HTTP, o protocolo usado para buscar páginas na WWW (World
Wide Wcb). entre outros.
2.4
A CAMADA HOST/REDE
Abaixo da camada inter-redes, encontra-se um grande vácuo. O modelo
de referência T'CP/IP não especifica coisa alguma, exceto pelo fato de que o
host tem de se conectar com a rede utilizando um protocolo, para que seja
possível enviar pacotes. Esse protocolo não é definido e varia de host para
host e de rede para rede. Os livros e a documentação que tratam do modelo
TCP/IP raramente descrevem esse protocolo.
10
2.5
POSICIONAMENTO DO NÍVEL OSI
A arquitetura TCP/IP possui uma série de diferenças em relação à
arquitetura OSI. Elas se resumem principalmente nos níveis de aplicação e
Inter-rede da arquitetura TCP/IP.
Como principais diferenças pode-se citar:
• OSI trata todos os níveis, enquanto TCP/IP só trata a partir do nível de Rede
OSI
• OSI tem opções de modelos incompatíveis. TCP/IP é sempre compatível
entre as várias implementações
• OSI oferece serviços orientados a conexão no nível de rede, o que necessita
de inteligência adicional em cada equipamento componente da estrutura de
rede. Em TCP/IP a função de roteamento é bem simples e não necessita de
manutenção de informações complexas
• TCP/IP tem função mínima (roteamento IP) nos nós intermediários
(roteadores)
• Aplicações TCP/IP tratam os níveis superiores de forma monolítica, Desta
forma OSI é mais eficiente pois permite reaproveitar funções comuns a
diversos tipos de aplicações. Em TCP/IP, cada aplicação tem que
implementar suas necessidades de forma completa.
A Figura 22 ilustra a comparação entre TCP/IP e OSI. Note que a
camada
Inter-rede
de
TCP/IP
apresenta
uma
altura
menor
que
o
correspondente nível de Rede OSI. Isto representa o fato de que uma das
funções do nível de Rede OSI é realizada pelo nível de Rede TCP/IP. Esta
função é a entrega local de mensagens dentro da mesma rede. O IP só trata a
entrega e a decisão de roteamento quando o origem e o destino da mensagem
estão situados em redes distintas.
11
Arquitetura TCP/IP
Arquitetura OSI
Aplicação
Apresentação
Aplicação
Sessão
Transporte
Inter-rede
Transporte
Rede
Enlace
Rede
Físico
Figura 22- OSI e TCP/IP
A Figura 23 abaixo ilustra um posicionamento geral de diversos
protocolos nas arquiteturas OSI, TCP/IP e Novell Netware:
Aplicação
DS, MHS
FTAM
Shell
DNS
S
M
T
P
F
T
P
ping
H
T
T
P
Apresentação
ISO
Presentation
Sessão
ISO Session
Transporte
ISO
Transport
C4
SPX
TCP, UDP
Rede
X.25
SNDCP
IPX
IP, ICMP
NCP
Winsock
Enlace
Físico
LLC
IEEE 802.2
IEEE 802.3
IEEE 802.5
DD MLID
Binding A
R
DD NDIS P
Ethernet
Ethernet
LSL
N
F
S
socket
POP
T
e
l
n
e
t
TLI
Unix
PPP
X.25
Ethernet
Serial
Figura 23 – Posicionamento protocolos
2.6
EXEMPLOS DE APLICAÇÃO DE REDES COM ARQUITETURA TCP/IP
Seguem abaixo, alguns exemplos de aplicações da arquiteturas distintas
de rede baseadas em TCP/IP, como por exemplo, redes internas de empresas
12
baseadas em transporte TCP/IP, serviços de redes de empresas conectados à
Internet, provedores de acesso à Internet.
Exemplo 1: Redes internas à empresa utilizando protocolos TCP/IP para
formar a estrutura de comunicação e a base das aplicações de rede (correioeletrônico), compartilhamento de arquivos, distribuição de informação via
hipertexto, etc… e chamadas de intranet:
M
M
Roteador B
M
M
Hub ou switch
Roteador
principal
Servidor HTTP
Servidor DNS
Servidor NFS, NIS
Servidor LPD
Servidor SMTP
POP3/ IMAP4
Servidor FTP
Servidor News
Gerência SNMP
Exemplo 2: Uma estrutura de rede TCP/IP conectada à Internet de forma
segura, através da utilização de um firewall, que realiza o filtro de pacotes IP e
o transporte de protocolo de aplicações por meio de um gateway (proxy):
Servidor Externo
HTTP, FTP, DNS
Roteador
Firewall
Filtros, NAT
Proxy HTTP, FTP, Telnet
Gateways seguros
Acesso Remoto
Clientes
Servidor
Proxy
Servidor HTTP
DNS, FTP
Servidor SMTP/POP3
Correio corporativo
13
Exemplo 3: Um provedor de acesso à Internet, fornecendo serviços de
conexão a usuários discados e empresas por meio de ligação dedicada, além
de oferecer os serviços básicos de Internet como HTTP, SMTP, POP3, FTP,
etc…
M
Roteador B
Roteador A
M
M
M
Internet
Acesso IP
Dedicado
Hub ou switch
Servidor HTTP
Servidor DNS
Gerência
Servidor SMTP
POP3/ IMAP4
Radius/Tacacs
Servidor FTP
Servidor News
Acesso IP
Discado
M M M M
... M
Sistema
Telefônico
M
14
2.7
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. Além disso,
as camadas têm praticamente as mesmas funções. Em ambos os modelos, por
exemplo, estão presentes as camadas que englobam até a camada de
transporte. Nesses modelos, 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. Essas camadas formam o provedor de transporte. Mais uma
vez em ambos os modelos, as camadas acima da camada de transporte dizem
respeito aos usuários orientados à aplicação do serviço de transporte. Apesar
dessas semelhanças
fundamentais, os dois modelos também têm muitas
diferenças.
É importante notar que estamos comparando modelos de referência,
independente das pilhas de protocolos correspondentes. O modelo OSI tem
três conceitos fundamentais, que são os seguintes:
1. Serviços
2. Interfaces
3. Protocolos
Provavelmente a maior contribuição do modelo OSI é tornar explicita a
distinção entre esses três conceitos. 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.
Finalmente, 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 (ou seja, forneçam os
15
serviços oferecidos). Ela também pode alterar esses protocolos sem influenciar
o software das camadas superiores. Essas idéias se adaptam perfeitamente
aos novos conceitos da programação orientada a objetos. Um objeto, assim
como uma camada, tem um conjunto de métodos (operações) que processos
externos ao objeto podem ativar. A semântica desses métodos define o
conjunto de serviços que o objeto oferece. Os parâmetros e os resultados do
método formam a interface do objeto. O código interno do objeto e seu
protocolo, que não e visível nem interessa aos elementos que estão fora do
objeto. 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 exemplo, os únicos serviços reais oferecidos
pela camada inter-redes são SEND IP PACKET (enviar pacote IP) e RECEIVE
IP PACKET (receber pacote IP). 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, acompanhando as tendências dos
eventuais avanços tecnológicos. Um dos principais objetivos das diversas
camadas de protocolo são as possibilidades que elas oferecem no que diz
respeito a essas mudanças.
O modelo de referência OSI foi concebido antes de os protocolos terem
sido inventados. Conseqüentemente, 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 deve ser
colocada em cada camada.
Por exemplo, a camada de enlace de dados originalmente lidava com
redes ponto a ponto. Quando surgiram as redes de difusão, uma nova camada
teve de ser criada no modelo. Quando as pessoas começaram a criar redes
com base no modelo OSI e nos protocolos existentes, elas perceberam que as
especificações de serviço obrigatórias não eram compatíveis. Portanto, foi
necessário enxertar no modelo sub-camadas de convergência que permitissem
atenuar as diferenças. Como acreditava que cada país teria uma rede,
controlada pelo governo e baseada nos protocolos OSI, o comitê não se
preocupou com as conexões inter-redes. Resumindo: na prática, foi tudo muito
16
diferente.
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 adaptar ao modelo. Foi um casamento perfeito. O único
problema foi o seguinte: o modelo não se adaptava às outras pilhas de
protocolos. Conseqüentemente, ele não era de muita utilidade quando havia
necessidade de se escrever redes que não faziam uso do protocolo TCP/IP.
Deixando a filosofia de lado e entrando em questões mais práticas, 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. Ambos têm as camadas de
inter-rede, transporte e aplicação, mas as outras são diferentes.
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, onde ela de fato é mais importante (pois o
serviço de transporte é visível para os usuários). 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
solicitação/resposta.
importante
para
os
protocolos
simples
de
17
2.8
UMA CRÍTICA AO MODELO DE REFERÊNCIA TCP/IP
Os protocolos e o modelo TCP/IP também tiveram os seus problemas.
Em primeiro lugar, o modelo não diferencia com a necessária clareza os
conceitos de serviço, interface e protocolo. A boa prática da engenharia de
software exige uma diferenciação entre especificação e implementação, o que,
ao contrário do que acontece com o OSI, não acontece com o TCP/IP.
consequentemente, o modelo TCP/IP não é o melhor dos guias para se
estruturar novas redes com base em novas tecnologias.
Em segundo lugar, o modelo TCP/IP não é nem um pouco abrangente e
não consegue descrever outras pilhas de protocolos que não a TCP/IP. Seria
praticamente impossível, por exemplo, tentar descrever a SNA usando o
modelo TCP/IP.
Em terceiro lugar, a camada host/rede não é realmente uma camada no
sentido em que o termo é usado no contexto dos protocolos hierarquizado.s
Trata-se, na verdade, de uma interface (entre as camadas de rede e de enlace
de dados). A distinção entre uma interface e uma camada é crucial e você deve
considerá-la com cuidado.
Em quarto lugar, o modelo TCP/IP não faz distinção (nem menciona)
entre as camadas física e de enlace de dados. Elas são complemente
diferentes. A camada física está relacionada às características de transmissão
do fio de cobre, dos cabos de fibra óptica e da comunicação sem fio. A tarefa
da camada de enlace de dados é delimitar o início e o final dos quadros e
enviá-los de um lado a outro com o grau de confiabilidade desejado. Um
modelo mais adequado incluiria as duas camadas como elementos distintos. O
modelo TCP/IP não faz isso.
Por fim, apesar de os protocolos IP e TCP terem sido cuidadosamente
projetados e bem implementados, o mesmo não aconteceu com muitos outros
protocolos produzidos pela comunidade acadêmica. As implementações
desses protocolos eram gratuitamente distribuídas, o que acabava difundindo
seu uso de tal forma que acabava ficando difícil substituí-las- A fidelidade a
esse produtos é, atualmente, motivo de alguns embaraços. O protocolo de
18
terminal virtual, o TELNET, por exemplo, foi projetado para um vídeo TTY
mecânico, capaz de processar 10 caracteres por segundo. Ele não reconhece
mouses e interfaces gráficas No entanto, esse protocolo é usado em larga
escala ainda hoje, 25 anos depois de seu surgimento.
Em resumo, apesar de seus problemas, o modelo OSI (menos as
camadas de sessão e apresentação) mostrou-se excepcionalmente útil para a
discussão das redes de computador. Por outro lado, os protocolos OSI jamais
conseguiram se tornar populares. É exatamente o contrário o que acontece
com o TCP/IP: o modelo é praticamente ignorado, mas os protocolos são
usados cm larga escala.
19
3
IPv4 - A VERSÃO ATUAL DO IP
O protocolo IP foi projetado tendo como principal objetivo a ligação interredes. Por isto ele é considerado como elemento integrador da Internet, através
dele é possível a conexão de diversas sub-redes. A internet é composta de
diversos backbones construídos através linhas de alta velocidades de diversos
tipos de tecnologia. A cada um destes backbones estão conectados várias
redes locais de muitas outras instituições cada uma com suas características
de sub-rede. Em muitas empresas é comum utilizar o IP, e outros protocolos de
sua família, para interligar computadores de tecnologia diferentes.
O protocolo IP providencia duas importantes definições de serviço. Uma
define a unidade básica de transferência de dados chamada de datagrama IP.
A outra define uma função de roteamento, preocupando-se como os pacotes
são endereçados e quais caminhos terão que seguir para chegarem a seu
destino.
3.1
O DATAGRAMA IPV4
Antes de começar a desenvolver sobre o Protocolo IP propriamente dito,
explicar-se-á sobre o conceito do termo datagrama.
Como foi visto anteriormente, existem dois tipos de serviços a serem
disponibilizado em uma rede: o orientado a conexão e o não orientado. No
primeiro, o fluxo de dados é feito como se existisse um duto, onde uma vez
feito a conexão inicial, os dados são colocados neste, garantindo assim uma
entrega confiável dos dados e a sua seqüencialização. Para a camada de rede,
um serviço equivalente a este tipo, costuma ser chamado de circuito virtual, em
analogia aos sistemas telefônicos. Neste serviço é necessário , então, uma
configuração obrigatória do circuito e a rota por onde os pacotes fluem é
escolhida previamente. Cada pacote é endereçado através da identificação do
circuito virtual, seguindo esta rota. No segundo, temos um fluxo de pacotes
independes chamados de datagramas. No serviço de datagrama, nenhuma
rota é preestabelecida e cada pacote é enviado independentemente. Neste
20
caso, cada pacote contém os endereços completos da origem e do destino sem
se preocupar com a ordem de chegada dos mesmos. Uma outra característica
inerente ao serviço de datagrama é que este limita o tamanho dos dados a
serem transmitidos.
Um datagrama IP consiste em duas partes: o cabeçalho e a área útil de
dados. O cabeçalho, como já foi mencionado, inclui campos adicionais a
mensagem a ser transmitida de maneira que o protocolo IP possa ser
executado. Este é composto de uma parte fixa e uma parte opcional variável. A
Figura 4 mostra o formato de um datagrama IP. Logo a seguir é feita uma
descrição de cada um dos campos que formam o seu cabeçalho.
21
32 BITS
VERSIO
N
TYPE
IHL
OF
SERVICE
IDENTIFICATION
TOTAL LENGTH
D M
F F
TIME
TO
LIVE
PROTOCO
L
FRAGMENT
OFFSET
HEADER CHECKSUM
SOURCE ADDRESS
DESTINATION ADDRESS
OPTIONS
DATA
Figura 4 - Formato do datagrama IPv4
O campo VERSION ( 4 bits) contém a versão do IP que foi usado para
criar o datagrama. Desta maneira checa-se a versão antes de processá-lo,
evitando-se que formato de pacotes diferentes sejam usados.
O campo HLEN ( header length ) possui quatro bits que indicam o
comprimento do datagrama em palavras de 32 bits. O seu valor mínimo é 5, o
que indica um cabeçalho variando de 20 octetos ( sem o campo OPTIONS que
é opcional ) a 60 octetos.
O TYPE OF SERVICE ( 8 bits) indica o tipo de serviço de rede que se
deseja. Como pode ser visto na Figura 5, o campo pode ser quebrado em 5 (
cinco) sub-campos. Os três primeiros bits correspondem ao sub-campo
PRECEDENCE que diz a prioridade de cada datagrama àquele que enviará os
22
dados. O valor 1 indica prioridade normal, e 7 a mais alta prioridade que é
utilizada para pacotes de controle de rede. Os bits D, T e R especificam
respectivamente, o que é mais importante no envio do pacote: retardo, taxa de
envio e confiabilidade. Desta maneira pode-se escolher prioridades de tipos de
links diferentes de acordo com o desejado. Os dois últimos bits não são
utilizados. Na prática os roteadores ( equipamentos utilizados para especificar
rotas aos datagramas ) ignoram totalmente todas as opções do campo TYPE
OF SERVICE, pois é necessário um conhecimento prévio da tecnologia dos
links utilizados.
0
1
PRECEDENCE
2
3
4
5
6
D
T
R
Não Usados
Figura 5 - Os cinco sub-campos do campo SERVICE TYPE
O campo TOTAL LENGTH indica o tamanho total do datagrama,
incluindo cabeçalho e dados, em octetos. O valor máximo que lhe é atribuído é
de 65.535 bytes. Nas tecnologias de redes existentes este valor é suficiente,
porém, com a utilização de redes de altíssima velocidade é um fator limitante.
Antes de falar sobre os próximos campos, seria interessante visualizar
como os datagrama relacionam-se com os quadros da sub-rede.
Verificou-se anteriormente que o datagrama poderia ter um tamanho de
até 65.535 octetos, porém na prática, existem outros limites fundamentais.
Sabe-se que os datagramas, movem-se de uma máquina para outra, e que
estes devem ser transportados pela camada de sub-rede. Para fazer um
transporte eficiente é preciso que cada datagrama seja transportado em um
quadro distinto desta camada. Este processo denomina-se encapsulamento.
Ao tamanho máximo do quadro suportado por uma camada de sub-rede
denomina-se MTU ( maximum transfer unit ).
O protocolo IP implementa uma maneira dos datagramas trafegarem em
meios físicos que não podem contê-lo completamente. O datagrama é
fragmentado em pedaços menores que serão logo depois remontados, com
7
23
isto, ele não fica limitado a pedaços pequenos de acordo com a tecnologia de
hardware utilizada. Cada fragmento contém a duplicação dos campos do
cabeçalho que o originou, exceto pelos que dizem tratar-se de um fragmento.
Para fazer isto, ele utiliza os campos IDENTIFICATION, MF, DF e
FRAGMENT OFFSET, como é explicado a seguir.
O campo IDENTICATION (16 bit's), permite no caso de uma
fragmentação, o destino identificar a qual datagrama pertence o fragmento,
utilizando-se deste e do endereço daquele que o originou.
O bit DF indica que o Datagrama não deve ser fragmentado. Garantindo
que isto não ocorrerá, mesmo que se tenha um desempenho baixo se o
mesmo for forçado a passar por uma rede lenta.
O bit MF indica que existem mais fragmentos a seguir. Todos os
fragmentos devem tê-los setados, menos o último.
O campo FRAGMENT OFFSET indica a que ponto do Datagrama
original o fragmento pertence. Todos os fragmentos devem ser múltiplos de 8
bytes.
O campo TIME TO LIVE representa o tempo de processamento dos
pacotes em segundos. Cada roteador ao processar o datagrama decrementa o
tempo gasto para este processamento, se alcançar zero o datagrama é
descartado. Com a dificuldade dos roteadores saberem detalhes do tempo de
transmissão sub-redes, na prática ao passar pelos mesmos, este campo é
decrementado de 1. Garantindo, assim, que um datagrama não trafegue
indefinidamente pela rede caso haja uma rota em loop, ou seja, um caminho
que seja cíclico.
O campo PROTOCOL especifica qual protocolo de transporte foi
utilizado para criar os dados transportados pelo datagrama. É utilizado para
entregar o dados diretamente ao tipo do protocolo que o criou.
O campo HEADER CHECKSUM garante a integridade do cabeçalho.
Este processo é feito considerando o cabeçalho como uma seqüência de
inteiros de 16 bits, onde soma-se eles utilizando aritmética de complemento de
1 e depois calcula-se o complemento de 1 do resultado. Se o valor der 0, não
houve erro no cabeçalho.
24
Os campos SOURCE IP ADDRESS e DESTINATION IP ADDRESS (32
bits), contém respectivamente os endereços do host de origem e do host de
destino. Apesar destes passarem por muitos equipamentos intermediários (
roteadores) os mesmos não se modificam. Discutiremos as formas de
endereçamento nos capítulos seguintes.
O campo OPTIONS não é requerido em todos os datagramas. Foi criado
inicialmente para permitir novas implementações ao projeto original. O
comprimento deste campo depende de quais opções foram selecionadas.
Algumas possuem somente 1 octeto, outras possuem comprimentos variáveis.
Quando presentes no datagrama, as opções aparecem de forma contígua e
sem separadores. Cada opção consiste de 1 octeto simples que representa o
OPTION CODE, que pode ser seguido de um outro octeto LENGTH e um
conjunto de octetos de dados.
O OPTION CODE é dividido em 3 sub-campos, como pode ser visto na
Figura 6. O primeiro campo, o COPY, controla como os roteadores devem
tratar as opções durante a fragmentação. Quando tem o seu valor 1 especifica
que a opção será copiada em todos os fragmentos, quando 0, somente no
primeiro. O OPTION CLASS indica as várias classes de opções. Os outros dois
representam as várias sub-opções dentro desta mesma classe.
0
COPY
1
2
OPTION CLASS
3
4
5
OPTION NUMBER
Figura 6 – Sub-campos do OPTION CODE
OPTION
Classes
CLASS
0
Controle de datagrama ou de rede
1
Reservado para uso futuro
2
Medidas e depuração
3
Reservado para uso futuro
6
7
25
OPTIO
N CODE
0
OPTION
NUMBER
Comprimento
Descrição
da opção
0
--------------------------
Fim das opções.
Indica que as opções
Terminaram, a partir daí
é colocado bytes para
completar o cabeçalho.
0
1
--------------------------
Sem
Usados
operação.
para
alinhar
octetos em uma lista de
opções
0
2
11
palavras
de 32 bit’s
Security.
para
Usado
implementar
segurança.
0
3
Variável
Loose
Route.
Usado
encaminhar
Source
para
um
datagrama ao longo de
um
caminho
especificado.
0
7
Variável
Record
Route.
Usado para registrar as
rotas.
0
9
Variável
Strict
Route.
Usado
encaminhar
Source
para
um
datagrama ao longo de
um
especificado.
caminho
26
2
4
Variável
Intert
Timestamp.
Usado para registrar o
tempo em cada roteador.
A opção Record Route permite a criação de uma lista vazia de endereço
IP e cada roteador anexa seu endereço nesta. É utilizada para fins de
depuração de endereços.
O Source Route provê uma maneira de indicar o caminho que deve ser
seguido pelo datagrama, isto é feito para verificar taxa de envio de dados de
uma rede obrigando-a a seguir por um caminho a ser testado, para enviar
pacotes de emergência ou evitar rotas por questões políticas ou econômicas.
Existem duas variações desta opção, o Strict e o Loose. No Stict é
fornecido um caminho completo a ser seguido e o datagrama é obrigado a
passar por ele. No Loose, o pacote percorre por uma lista de roteadores
específicos e é permitido que ele passe por outros intermediários.
Timestamp trabalha como o Record Option .Cria uma lista vazia que é
preenchida com o roteador e um tempo relativo a ele. Esta opção elimina a
ambigüidade, pois, o registro do roteador e seu timestamp permite que se
possa saber exatamente qual caminho o datagrama seguiu.
Security informa o nível da segurança da informação. Não utilizado na
prática, pois informa justamente quais informações são mais interessantes para
alguém com más intenções.
27
4
ENDEREÇAMENTO IP
4.1
IDENTIFICADORES UNIVERSAIS
Diz-se que um sistema provê um serviço de comunicação universal
quando é possível a quaisquer dos elementos deste sistema se comunicarem
arbitrariamente. Para tornar um sistema de comunicação universal, devemos
estabelecer um método globalmente aceito para identificação dos componentes
a ele conectados.
Nas redes TCP/IP, a entidade que atua como identificador universal é o
endereço IP, um número de 32 dígitos binários. A idéia básica de seus
mentores era a de tornar o roteamento simples e eficiente. É verdade que a
manipulação deste tipo de número traz grande facilidade para o nível de
software, mas seu tratamento não é tão simples para um humano.
4.2
TRÊS CLASSES PRIMÁRIAS DE ENDEREÇO
Podemos
pensar
na
Internet
como
uma
gigantesca
rede
de
computadores como qualquer outra rede física. A grande diferença, entretanto,
está no fato de que a Internet é uma estrutura virtual, concebida por seus
desenhistas e implementada inteiramente em software. Assim, os projetistas
tiveram liberdade de arbitrar o tamanho e formato dos pacotes, endereços,
técnicas de roteamento, etc. Nada é ditado pelo hardware. Na questão do
endereçamento,
optou-se
por
um
esquema
análogo
ao
das
redes
convencionais, onde a cada host é atribuído um número inteiro que será seu
endereço - no caso o endereço IP. A grande vantagem no esquema de
endereçamento da Internet é que ele foi cuidadosamente concebido para
simplificar a tarefa de roteamento.
Cada máquina ligada à Internet possui um endereço de 32 bits, que se
divide em duas partes: uma primeira que identifica a rede a qual esse
computador está fisicamente conectado e uma segunda parte que identifica o
computador propriamente dito. Observe que todas as máquinas conectadas a
28
uma mesma rede irão compartilhar essa primeira parte, que se convencionou
chamar net id (identificador da rede). Analogamente, à segunda porção do
endereço IP chamamos host id (identificação da máquina).
Em termos práticos, cada endereço IP deverá estar contido em uma das
cinco categorias representadas na Figura 7. A classe de um endereço pode ser
identificada através do exame dos quatro bits de mais alta ordem, sendo que
as três classes básicas (A, B e C) podem ser distinguidas apenas pelos dois
primeiros. A classe A, usada para um pequeno número de redes que contêm
mais de 65.535 hosts, reserva 7 bits para o net id e 24 bits para o host id. Os
endereços da classe B se destinam a redes de tamanho intermediário (entre
256 e 65535 máquinas) e reservam 14 bits para o net id e 16 bits para o host
id. Finalmente, a classe C, apropriada para pequenas redes, aloca 21 bits para
o net id e apenas 8 bits para o host id. Observe que os endereços IP são
estruturados de forma a permitir uma rápida extração da identificação da rede
(net id) e da máquina a ela conectada (host id). Os gateways dependem da
extração eficiente do net id para realizar o roteamento dos pacotes IP.
Figura 7 – Categorias IP
Ainda há pouco, dissemos que os endereços IP identificam um host.
Essa afirmativa simplifica o tratamento do assunto mas não é estritamente
correta. Considere um gateway que conecta duas redes. Como poderemos
atribuir a essa máquina um único endereço IP, contendo uma identificação da
rede e do host? Na verdade, não podemos. Máquinas como a deste exemplo,
possuem não um, mas múltiplos endereços IP (dois, no caso). Cada um de
seus endereços identifica uma conexão de rede. Numa definição mais precisa,
29
portanto, endereços IP não definem hosts, mas conexões a uma rede.
Máquinas conectadas a n redes, possuirão n endereços IP.
4.3
ENDEREÇO
DE
UMA
REDE
E
ENDEREÇO
DE
DIFUSÃO
(BROADCAST)
Já mencionamos a maior vantagem em codificar informação sobre a
rede num endereço Internet: possibilitar um roteamento eficiente. Outra
vantagem, é que os endereços IP podem se referir tanto a hosts quanto a
redes. Por convenção, um host id 0 nunca é atribuído a uma máquina. Ao invés
disso, esse endereço com os bits do host id todos zerados irá se referir à rede
propriamente dita.
Outra vantagem do esquema de endereçamento da Internet é que ele
permite que se faça referência a todos os hosts de uma determinada rede
através do chamado endereço de difusão. Um endereço de broadcast é aquele
em que os bits do host id são todos 1. Nem todas as redes suportam a difusão,
algumas irão precisar de implementação de software e outras não permitirão
esta facilidade nem mesmo a nível de software.
4.4
DIFUSÃO LOCAL
O endereço de broadcast que acabamos de descrever é chamado de
Endereço de Difusão Direcionada já que contém um net id válido (isto é, um
endereço de uma rede existente) e um host id indicando broadcast. O endereço
de difusão permite que um sistema remoto mande um pacote para todos os
nós de uma determinada rede.
Do ponto de vista do endereçamento, a grande desvantagem deste
esquema é que ele requer o conhecimento do endereço de rede. Outra forma
de endereço de difusão de pacotes é chamada endereço de difusão limitada ou
endereço de difusão local. Este endereço consiste de 32 bits iguais a 1. Esse
mecanismo possibilita a referência a todas as máquinas de uma rede local sem
que os endereços IP reais sejam conhecidos.
30
4.5
ENDEREÇOS DE REFERÊNCIA À PRÓPRIA REDE E AO PRÓPRIO
HOST.
Já podemos perceber que campos de endereço preenchidos somente
com 1's indicam "todos". Um endereço com 32 bits 1, indica todas as máquinas
desta rede e um endereço com todos os bits do host id iguais a 1 indica todas
as máquinas de uma determinada rede (especificada no net id). Analogamente,
campos preenchidos com 0's são geralmente interpretados como significando
"este". Assim, um endereço com 32 bits 0, indica o próprio host (este host) e
um endereço com todos os bits do net id iguais a zero, se refere à rede local
(esta rede).
4.6
ENDEREÇO DE MULTICAST
Muitas tecnologias de rede contêm mecanismos que permitem o envio
simultâneo (ou quase simultâneo) de pacotes a múltiplos destinatários. Até
agora, abordamos um destes mecanismos, conhecido com difusão. Na difusão
é enviada uma cópia de um pacote para todos os nós de uma rede. Em redes
de barramento (como a Ethernet) isso pode ser alcançado com o envio de um
único pacote (capturado por todos os hosts). Em outras topologias, com
conexões ponto-a-ponto, esse pacote deverá ser replicado para alcançar todos
os hosts.
Algumas redes suportam um segundo tipo de comunicação ponto multiponto, conhecido com multicast. Ao contrário do broadcast, a técnica de
multicast permite que cada host "escolha" se deseja ou não participar daquele
"canal". Quando um grupo de máquinas decide se comunicar, elas selecionam
um endereço de multicast que será, então, o seu canal de comunicação.
Na Internet, quando um determinado grupo de máquinas (que podem
estar conectadas a redes distintas) deseja criar um grupo de multicast, elas
devem todas "sintonizar", isto é, configurar suas interfaces para receber
pacotes enviados para um mesmo endereço. Esse endereço deverá pertencer
31
à Classe D. Assim, cada endereço entre 224.0.0.0 e 239.255.255.255 (mais de
268 milhões de alternativas!) pode ser usado por um determinado grupo de
multicast.
A idéia é que hosts podem, a qualquer momento, conectar-se ou
desconectar-se de um grupo de multicast. A técnica de multicasting traz, como
vantagem sobre a difusão, uma melhor seletividade. Isto é, os dados só serão
enviados aos hosts necessários. E mais, os hosts alcançados não precisam
pertencer a uma mesma rede física. Entretanto, sua implementação é mais
complexa pois necessita de hardware especializado.
4.7
FRAQUEZAS DO ENDEREÇAMENTO IP
Um das desvantagens do esquema de endereçamento da Internet é
que, como um endereço IP se refere a uma conexão de rede (e não a um host),
quando uma máquina muda de uma rede para outra, ela deve mudar de
endereço IP. Isso traz uma grande barreira à conexão de hosts móveis (como
computadores portáteis) que precisem de IPs fixos à Internet.
Uma limitação menos importante está no fato de que redes classes C
que crescam para além de 255 hosts devem ser realocadas para a classe B. O
que implica uma mudança de todos os endereços.
A maior fraqueza, entretanto, surge quando analisamos cuidadosamente
uma situação especial de roteamento de pacotes na Internet. Já dissemos que
as decisões de roteamento (i.e. para que canal entre diversas possibilidades
um pacote deve ser mandado) dependem da extração do net id. Considere
uma máquina conectada a duas redes (Rede 1 e Rede 2). Como o roteamento
de pacotes para este host será determinado pelo seu net id (e ele possui dois
distintos), o caminho tomado por um pacote que se destina a essa máquina irá
depender do endereço usado pelo remetente. Assim, parâmetros, como o
tempo de resposta na comunicação, irão variar de acordo com a interface que
seja endereçada. Essa multiplicidade de caminhos pode trazer consequências
pouco óbvias. Um host pode deixar de ser acessível por um de seus endereços
IP, caso haja algum impedimento físico em uma das redes a que ele está
32
conectado. Uma outra máquina que conheça apenas esse endereço
(desativado) e se comunique com este host através dele não poderá mais fazêlo, embora o host ainda esteja ligado a Internet.
4.8
NOTAÇÃO DECIMAL
Números de 32 bits não são facilmente manipuláveis por seres
humanos, e mesmo os programas da camada de aplicação não tratam
diretamente com este tipo de representação. Uma forma mais inteligível de
representar endereços IP é a de particioná-lo em quatro octetos convertidos
para a notação decimal e separados por pontos.
Desta forma, o binário
11000000 11000110 00001011 10000001
passa a ser tratado como
192.198.11.129
Pode-se também atribuir nomes alfabéticos a hosts, facilitando ainda
mais sua memorização. Esta tradução é apoiada por um protocolo específico
que atua sobre uma imensa base de dados distribuída conhecida como Domain
Name System. O DNS é um assunto de complexidade, que merece um curso
exclusivamente dedicado a ele.
Por questões de simplificação pode-se representar um endereço IP de
32 bits agrupando-os em grupos de 8 bits e representando estes grupos em
valores
decimais.
Por
exemplo
o
endereço
11001000100010011000001100000010 representado em forma de ponto
decimal seria 200.137.131.2.
Classe A
1.0.0.0 até 127.255.255.255
33
4.9
Classe B
128.0.0.0 até 191.255.255.255
Classe C
192.0.0.0 até 223.255.255.255
Classe D
224.0.0.0 até 239.255.255.255
Classe E
240.0.0.0 até 247.255.255.255
ENDEREÇO DE LOOPBACK
O endereço 127.0.0.0 é reservado à aplicação de loopback. Isto é,
qualquer pacote enviado a este endereço não deve trafegar na rede, mas
retornar ao próprio remetente (isto equivale a dizer que o pacote retornará da
própria interface de rede do host). O endereço de loopback se presta a testes e
comunicação entre processos que rodam numa mesma máquina.
4.11
ENDEREÇAMENTO DE SUB-REDE
Uma técnica que permite que se partilhe um mesmo endereço de rede
entre diversas redes é o endereçamento de sub-rede. Vamos imaginar uma
instituição a qual foi atribuído um endereço classe C mas que possui diversas
redes interconectadas em suas instalações. Como partilhar este endereço
entre estas diversas redes?
A adição de sub-redes implica uma nova subdivisão do endereço IP. O
sufixo designador do host (host id) é dividido em duas partes: a primeira
designará uma sub-rede, e a segunda um host a ela conectado.
O problema básico que surge quando realizamos esta nova divisão é
que o esquema convencional de roteamento, que procura extrair a porção que
designa a rede, deixa de funcionar. Para suplantar esta dificuldade, introduz-se
no sistema de roteamento uma nova entidade: a máscara de sub-rede.
A máscara de sub-rede é um número de 32 bits que, aplicado (através
de um "e" lógico) a um determinado endereço, permite a extração de sua
34
"porção de rede". Isto é, ele possui bits 1 nas posições correspondentes a esta
"porção de rede". Para uma rede classe C sem sub-redes a máscara seria:
11111111 11111111 11111111 00000000
que em notação decimal corresponde a:
255.255.255.0
Qual seria a máscara de sub-rede usada para extrair a "porção de rede"
num classe C partilhado entre quatro redes? Observe que, para podermos
realizar a partilha, os dois bits mais significativos do último octeto irão ser
usados para determinar a sub-rede. A máscara deverá então extrair os três
primeiros octetos e estes dois bits adicionais. A máscara seria:
11111111 11111111 11111111 11000000
correspondente a:
255.255.255.192
Esse é o número que aplicado a um determinado endereço IP irá
resultar na extração da porção deste endereço sobre a qual iremos "resolver" o
roteamento.
A utilização de máscaras é tão importante na Internet, que qualquer
administrador de redes, independente de utilizar ou não sub-redes, irá lidar
com esse parâmetro quando configurar seus gateways.
4.11.1
Distribuição Geográfica de Endereços
Além de utilizar as classes de redes vistas anteriormente, os endereços
classes C, por serem em grande quantidade, são divididos geograficamente.
Cada região recebe uma faixa destes que visa facilitar a tarefa de designação
das rotas até o destino ( roteamento ).
35
Faixa de endereços
Localidade
194.0.0.0 a 195.255.255.255
Europa
198.0.0.0 a 199.255.255.255
América do Norte
200.0.0.0 a 201.255.255.255
América Central e América do Sul
202.0.0.0 a 203.255.255.255
Ásia e a região do Pacífico
Por exemplo, um roteador americano que recebe um pacote cujo destino
é Londres, o envia ao roteador padrão europeu, que terá mais detalhes sobre
como encontrar o destino. Esta técnica impede que os roteadores tenham de
saber a localização de todos os endereços classe C na rede mundial.
4.11.2
Implementação de Sub-redes com Máscara
Os bits 1 representa a parte correspondente a rede + sub-rede. Os bits 0
representa o pedaço que será utilizado para identificar cada um dos hosts. Na
rede especificada no exemplo anterior, tem-se os primeiros 22 bits para
representar rede + sub-rede, e os dez últimos para endereçar os hosts nesta
rede. A máscara de sub-rede também, pode ser especificada utilizando a
mesma notação decimal por ponto, que no exemplo daria 255.255.252.0 . Dado
um endereço completo do host e sua máscara de sub-rede uma função AND
entre os dois, indicará a porção de rede deste. Por exemplo, um certo host, que
utiliza esta mascara é endereçado por 186. 183.174.2 , aplicando um AND
lógico entre este e a sua mascara obtém-se o endereço da sub-rede:
186.183.174.0. A faixa de endereço completa é de 186. 183.174.0 até 186.
183.177.255 excluindo os mesmos.
4.11.3
Super-redes
36
Como pode-se notar a divisão de redes utilizando classes, tem como
diferença a grande quantidade de endereços entre as classes. A "C" é pequena
demais para a maioria das empresas e a "B" muito grande.
Em oposição ao esquema de divisão do IP em classes, surge o CIDR (
Classless Inter-Domain Routing). Este esquema de endereçamento consiste
em alocar as redes classes "C" restante em blocos de tamanhos variáveis.
Sendo assim, se um site precisar de 2.000 endereços receberá um bloco de
2048 correspondente a oito blocos classe "C" de maneira contígua, ao invés de
uma classe "B" completa. O endereço então é representado pelo par: (rede,
numero).
Por exemplo a rede (192.20.8.0,4) possui a faixa de endereços
correspondente as redes 192.20.8.0, 192.20.9.0, 192.21.0.0 e 192.21.1.0
possuindo como máscara de super-rede 255.255.252.0.
4.11.4
Exemplo de Redes
As Figuras 8 e 9 respectivamente abaixo mostram exemplos de
endereçamento de máquinas situadas na mesma rede e em redes diferentes.
Pode ser observado que como o endereço começa por 200 (ou seja, os dois
primeiros bits são 1 e o terceiro 0), eles são de classe C. Por isto, os três
primeiros bytes do endereço identificam a rede. Como na Figura 8, ambas as
estações tem o endereço começando por 200.18.171, elas estão na mesma
rede. Na Figura 9, as estações estão em redes distintas e uma possível
topologia é mostrada, onde um roteador interliga diretamente as duas redes.
Estação A
Estação B
200.18.171.37
200.18.171.148
Rede = 200.18.171.0
37
Estação A
Estação B
Roteador
200.18.171.148
200.18.180.10
200.18.171.37
200.18.180.200
200.18.171.0
200.18.180.0
A Figura 10 abaixo ilustra um diagrama de rede com o endereçamento
utilizado. Note que não há necessidade de correlação entre os endereços
utilizados nas redes adjacentes. O mecanismo para que uma mensagem
chegue na rede correta é o roteamento. Cada elemento conectando mais de
uma rede realiza a função de roteamento IP, baseado em decisões de rotas.
Note que mesmo os enlaces formados por ligações ponto-a-pontos são
também redes distintas.
Neste diagrama existem 6 redes, identificadas por 200.1.2.0, 139.82.0.0,
210.200.4.0, 210.201.0.0, 10.0.0.0 e 200.1.3.0.
200.1.2.0
200.1.2.1
139.82.5.14
139.82.5.0
200.1.2.20
139.82.5.3
139.82.5.15
139.82.5.129
210.200.4.3
200.1.3.2
200.1.3.0
210.200.4.0
210.201.0.1
210.201.0.0
200.1.3.1
10.0.0.1
200.1.2.35
210.201.0.3
10.0.0.2
210.200.4.57
210.200.4.56
38
4.12
SUB-REDES
Existem casos em que é necessário subdividir uma rede em redes
menores. Imagine o administrador de uma rede classe A: como montar e
administrar uma rede com 16 milhões de equipamentos?
Mesmo redes classe C algumas vezes têm de ser sub-dividida em mais
de uma rede física. Para esses casos, em que é preciso subdividir uma
determinada rede em sub-redes, foi criada a máscara de rede (subnet mask). A
máscara de rede define quantos bits são utilizados para o endereço de rede e
quantos bits são utilizados para especificar o endereço de equipamento, dentro
dessa sub-rede.
Além do endereço IP cada equipamento passa a ter também uma
máscara de rede. A máscara de rede tem o mesmo formato do endereço IP
(número de 32 bits, representado por quatro números decimais, separados por
ponto). Quando não são utilizadas sub-redes, informa-se a máscara default da
rede classe A, B ou C, conforme o caso.
Por exemplo, para subdividir uma rede classe A em 256 sub-redes,
utiliza-se a máscara 255.255.0.0. A rede 15.0.0.0, com a máscara 255.255.0.0,
passa a ser dividida nas seguintes sub-redes: 15.0.0.0, 15.1.0.0, 15.2.0.0, e
assim por diante, até 15.255 0.0.
Pode ser necessário subdividir uma rede classe C. Como nesse caso
não é possível utilizar um byte inteiro para endereço de sub-rede, utilizam-se
alguns bits do último byte do endereço IP para endereçar a sub-rede.
Se precisarmos subdividir a rede 200.245.29.0 em quatro sub-redes,
utilizamos a máscara 255.255.255.192, pois "192" corresponde ao número
39
"1100 0000" em binário, o que indica que os dois primeiros bits endereçam a
sub-rede, e que as sub-redes possíveis são "0000 0000" (0), "0100 0000" (64),
"1000 0000" ( 128) e "1100 0000" (192).
Ou seja, com a máscara de rede 255.255.255.192 é possível subdividir a
rede 200.245.29.0 nas seguintes sub-redes: 200.245.29.0, 200.245.29.64,
200.245.29.128 e 200.245.29.192. Cada sub-rede pode endereçar até 62
equipamentos (lembrando que um endereço é usado para identificar a ede e
outro para a comunicação em broadcast).
40
A tabela abaixo relaciona as máscaras de rede possíveis para subdividir
uma rede classe C, com o número de sub-redes e o número de equipamentos
que cada máscara permite endereçar.
Por exemplo, para dividirmos uma rede classe C em seis sub-redes de
quinze
equipamentos
cada,
a
solução
é
utilizarmos
a
máscara
255.255.255.224, que divide uma rede classe C em oito sub-redes com até
trinta endereços válidos para cada rede.
A máscara também pode ser representada como o número de bits
utilizados para endereçar a parte de rede, após o endereço IP (endereço_IP/
número_de_bits). Exemplo :
Essa notação é utilizada por alguns fabricantes, e é conhecida como
CIDR, de Classless Inter-Domain Routing.
41
4.13
PLANEJAMENTO DE UM ESQUEMA DE ENDEREÇAMENTO
Normalmente, o provedor de backbone (ou a empresa pela qual sua
empresa se conecta à Internet) fornece uma faixa de endereços IP . Após a
definição dessa faixa, deve ser feito um planejamento da utilização dos
endereços IP . Caso seja necessário utilizar sub-redes, define-se o número de
sub-redes e o número de hosts para cada sub-rede. Em seguida, divide-se o
último byte do endereço IP em duas partes, uma para a sub-rede e outra para o
host. Depois disso, determina-se a máscara de rede a ser utilizada. Para a
máscara 255.255.255.240 divide-se o Ultimo byte em duas partes :
Nesse exemplo, para cada um desses valores de sub-rede, somente
catorze endereços são disponíveis para hosts, pois somente a parte direita do
byte pode ser usada, e o primeiro e o último endereço de cada sub-rede têm
significado especial.
42
O primeiro endereço de cada sub-rede indica o endereço da própria subrede, portanto não pode ser utilizado para endereçar um host.
O último endereço de cada sub-rede é o endereço de broadcast (esse
endereço é utilizado quando se deseja enviar informações a todos os
equipamentos da subrede), portanto esse endereço também não pode ser
utilizado para endereçar um host.
Assim, a sub-rede 192.67.32.16 (máscara 255.255.255.240) poderá
conter hosts nas faixas de endereço de 192.67.32.17 até 192.67.32.30 e a subrede 192.67.32.32 poderá conter hosts na faixa de 192.67.32.33 até
192.67.32.46, etc.
43
5. PROTOCOLOS DE ROTEAMENTO
5.1
CONCEITO
As redes locais podem interligar-se por meio de nós comuns, que são
chamados de roteadores. Ou, ainda, a conexão entre duas redes locais pode
ser um enlace entre dois roteadores, sendo cada roteador um nó de uma das
redes.
Se um pacote de dados tiver que ser encaminhado a um nó situado em
outra rede local, ele passará por um ou mais roteadores no caminho. Cada
roteador decidirá apenas a qual dos seus enlaces encaminhará o pacote. Esta
parte do trajeto total do pacote é um hop. O hop seguinte no trajeto do pacote
será decidido pelo roteador existente na outra extremidade do enlace.
Para executar o roteamento de um pacote, o roteador precisa de uma
tabela de roteamento que, para cada nó da rede a ser alcançado, indique o
próximo hop que o pacote deve seguir.
Por exemplo, consideremos a rede cujos roteadores, respectivos
enlaces e seus custos aparecem na Figura 11. A tabela de roteamento do
roteador R1 , construída pelo critério de menor custo, é dada a seguir.
44
Figura 11 – Tabela de Roteamento
As rotas da tabela de roteamento podem ser estáticas ou dinâmicas. As
rotas estáticas são configuradas pelo administrador da rede. Na ocorrência de
falhas ou na ampliação da rede é necessário reconfigurar manualmente as
tabelas de roteamento de todos os roteadores vizinhos.
Já as rotas dinâmicas são constantemente atualizadas por protocolos de
roteamento. Nesse caso, na ocorrência de falhas ou na ampliação da rede, o
protocolo de roteamento detecta a mudança de topologia da rede e atualiza as
tabelas de roteamento nos roteadores envolvidos. Esse processo é muito mais
rápido do que a reconfiguração manuaI.
Os protocoIos de roteamento classificam-se, de acordo com o algoritmo
de mapeamento das rotas, em distance vector e link state.
Além disso, os protocolos de roteamento podem ser classificados de
acordo com a sua cobertura da rede ou de acordo com as "regiões
administrativas", que podem ser internas (Interior Gateway Protocols) ou
externas (Exterior Gateway Protocols).
Tendo em vista essa última classificação, convém definir o conceito de
sistema autônomo. Um sistema autônomo é uma coleção de roteadores e de
redes sujeitos a um único controle administrativo, por exemplo, um backbone.
•
Algoritmos distance vector
Os algoritmos do tipo distance vector difundem a informação de
roteamento para os roteadores na rede.
45
Os roteadores que usam aIgoritmos desse tipo mantêm apenas uma
tabela de roteamento com a informação necessária para atingir o próximo
roteador na direção de cada um dos roteadores existentes na rede. Cada elo
até o roteador mais próximo numa dada direção chama- se next hop.
Esses roteadores trocam periodicamente informações a respeito das
suas tabelas de roteamento mesmo que elas não tenham sido alteradas desde
a última troca de informações.
•
Algoritmo link state
Os algoritmos do tipo link state geram e mantêm um mapa lógico de
toda a rede . Um roteador desse tipo realiza essa tarefa por meio do envio de
um pacote com informações sobre todos os seus enlaces (conexões para
redes e conexões para outros roteadores) para todos os outros roteadores link
state existentes na rede.
Esse procedimento é chamado de flooding. Cada roteador usa essas
informações para construir um mapa da rede, sendo concluído quando todos
os roteadores atingirem o mesmo mapa da rede. Os roteadores link state
somente retransmitem informações entre si quando ocorre uma mudança na
rota ou no serviço.
5.2
RIP
O Routing Infonoation Protocol (RIP) é um protocolo do tipo distance
vector usado nas redes TCP/IP.
Um roteador com protocolo RIP habilitado transmite periodicamente uma
mensagem de atualização de roteamento, que possui um dado para cada rede
que pode alcançar, representando o custo de acesso a ela. Os roteadores RIP
"escutam" todas as mensagens de broadcast do protocolo RIP .
Cada dado recebido numa mensagem de atualização de roteamento é
incorporado à tabela de roteamento. O roteador que enviou a mensagem de
46
atualização é identificado como o próximo roteador (next hop router) da rota
para o destino, cuja distância de acesso é representada pelo dado em questão.
Se um roteador for informado da existência de duas rotas de acesso a uma
mesma rede, ele mantém na tabela de roteamento apenas o próximo hop e a
distância da rota de caminho mais curto. O RIP usa como distância a contagem
dos hops, ou seja, o número de roteadores existentes no caminho até o
destino. essa, distância está limitada em quinze hops.
A partir do momento em que uma rota é memorizada na tabela de
roteamento, sua existência precisa ser verificada a intervalos regulares. Os
roteadores RIP normalmente transmitem uma mensagem de atualização de
roteamento contendo todas as rotas a cada 30 segundos. Sempre que uma
rota é atualizada em conseqüência de uma mensagem de atualização de
roteamento, dispara-se um temporizador. Se não for recebida nenhuma
mensagem de atualização da rota dentro de 180 segundos, a rota é
considerada inativa em decorrência de uma falha de rede ou de nó (métrica 16,
usada para esse fim), retirada da tabela de roteamento e divulgada (como
removida) para os vizinhos por 120 segundos.
5.3
RIP II
O RIP II é um aprimoramento do RIP que inclui máscara de rede nas
suas rotas. A falta de máscara de rede limita o RIP I (ou simplesmente RIP) à
divulgação de rotas de rede apenas ou leva os roteadores RIP a fazer
hipóteses sobre a máscara de rede. Quando o RIP I é usado numa rede com
sub-redes, todas as sub-redes são forçadas a usar a mesma máscara. O RIP II
pode ser utilizado em topologias de rede que exijam o uso de máscaras de
rede com comprimentos variáveis, podendo suportar a sub-rede zero. Porém,
nem todos os roteadores RIP suportam o RIP II. O RIP II também suporta
autenticação de seus pacotes por password, evitando a adulteração destes em
seu trajeto pela rede.
47
5.4
OSPF
Open Shortest Path First (OSPF) é um protocolo de roteamento interno
do tipo, link state (Dijkstra link state), que faz parte do conjunto de protocolos
TCP/IP .
Os roteadores do tipo link state trocam informações sobre a topologia da
rede, incluindo o estado de funcionamento de cada enlace e a distância
associada entre seus roteadores. Com esses dados trocados, cada roteador
constrói o seu mapa da rede, que utiliza para a extração dos dados
necessários para o roteamento.
Os protocolos do tipo distance vector demandam dos roteadores
vizinhos a troca das distâncias de cada um a todos os outros roteadores da
rede.
Para cada destinatário, os roteadores OSPF consultam a sua base de
dados de link state e selecionam a rota que proporcione o caminho mais curto.
Na seqüência, as informações de link state são compartilhadas com
outros roteadores em diferentes áreas, de acordo com a relação que guardam
entre si.
Para fins administrativos, a rede OSPF pode ser subdividida em várias
regiões ou áreas. Todos os roteadores da mesma área trocam entre si todas as
informações sobre o estado completo dos enlaces. As informações trocadas
entre roteadores de áreas diferentes consistem apenas em um resumo da
topologia.
5.5
COMPARAÇÃO ENTRE OS PROTOCOLOS DE ROTEAMENTO RIP E
OSPF
A tabela a seguir resume os principais aspectos dos protocolos RIP, RIP
11 e OSPF comparando-os entre si.
48
O RIP, apesar de sua facilidade de configuração, é recomendado
apenas para pequenas redes (algo em torno de quarenta ou cinqüenta
roteadores no máximo).Sua grande vantagem é que, por ser um protocolo
simples, é implementado pela grande maioria de roteadores e sistemas
operacionais, o que não ocorre com o OSPF que é bem mais complicado de se
configurar que o RIP, porém apresenta várias vantagens em relação a este,
tais como: organização hierárquica, segurança contra ataques de informações
de roteamento, redução de overhead, convergência de rotas mais rápida e
maior tolerância a falhas. Embora apresente maior dificuldade inicial de
aprendizado, e sua configuração seja mais complexa, OSPF é o protocolo ideal
para ambientes mais complexos ou com previsão de crescimento.
5.6
EGP
O Exterior Gateway Protocol (EGP) troca informações de acesso entre
sistemas autônomos. Ele faz parte do conjunto de protocolos TCP/IP .
49
Escolhem-se alguns roteadores em cada sistema autônomo para
intermediar a comunicação com o mundo externo, em geral pela Intemet.
Esses roteadores são denominados roteadores externos.
Os roteadores externos tomam-se vizinhos EGP. Os vizinhos EGP
trocam informações sobre as redes que podem ser alcançadas no interior dos
seus respectivos sistemas autônomos.
50
6. PROTOCOLO ARP E RARP
6.1
INTRODUÇÃO
Foi mencionado anteriormente que os endereços IP’s possuem 32 bits e
são endereços virtuais (endereço de um ponto na rede).
Apartir de agora iremos verificar como é feito o endereçamento de um
pacote apartir de um ponto físico (endereço de máquina).
Inicialmente devemos entender o que MAC (Controle de Acesso ao
Meio).
Uma placa de rede possui um endereço único gravado no hardware,
feito pelo fabricante.
Os endereços MAC são representados por números em hexadecimal.
Cada a;gorismo em hexadecimal equivale a um número de 4 bits. Desta forma,
um byte é representado por dois algarismo em hexadecimal e, com isso, o
endereço MAC é sempre representado como m conjunto de 12 algarismo em
hexadecimal.
Foi padronizado que os endereços MAC utilizam os 3 primeiros bytes
para o código do fabricante, este código é chamado de OUI (Organizationally
Unique Identifier). Os 3 últimos bytes se referem ao número de série da placa,
número definido pelo fabricante.
6.2
PROBLEMA DE CONVERSÃO
Como máquinas somente conseguem se comunicar através de
endereços de interligação (endereços físicos), se torna necessário a conversão
dos endereços de alto nível (camada de rede acima) para endereços de baixo
nível (endereço físico do dispositivo de comunicação).
51
6.2.1 Conversão Através do Mapeamento Direto:
Em alguns tipo de rede como : proNet token ring, o endereço físico é
maleável e pode ser configurado pelo usuário. Neste casa se torna fácil a
comversão do endereço de rede com o endereço a nível físico.
6.2.2 Conversão Através de Vinculação Dinâmica:
Em uma rede IP utilizando Ethernet, todo dispositivo de rede possui um
endereço MAC vinculado ao IP. Se um destes dispositivos falham, ele deve ser
trocado, logo o equipamento pode ser o mesmo, porem com outro dispositivo e
com o mesmo IP.
Para solucionar este tipo de problema foi criado o protocolo ARP
(Address Resolution Protocol), utilizando a seguinte idéia:
A deseja descobrir o endereço de B
Envia um pacote de broadcast para todas as máquinas, porem com o
endereço IP de destino o da B
Somente B responde esta solicitação
A recebe esta resposta e envia a B os dados de usuário a serem
transmitidos
6.2.3 Cache de Conversão de Endereço:
Porque não é passado o pacote de usuário por difisão ? Devido ao
tráfego da rede.
52
Para poder solucionar este problema de sempre perguntar o endereço, é
mantido em toda máquina na rede uma cache interno (arquivo) que contem
uma vinvulação entre o endereço físico e o endereço IP.
6.3
APRIMORAMENTO DE ARP
1o Quando B recebe o pacote de A, ele retira o MAC de A e quarda em seu
cache
2o Quando A envia por difusão um pedido para B, todas as máquinas recebem
este pedido porem só B responde, mas estas máquinas retiram o MAC de A
e quarda em suas tabelas ARP
3o Quando B trocar sua interface, seu MAC será alterado.
Porem
quando B entrar no ar novamento ele informará por difusão que seu MAC foi
alterado.
6.3.1 Definição ARP
ARP é um protocolo de baixo nível que absrai o endereçamento físico,
permitindo que seja atribuído um endereço IP para cada máquina. Idealizamos
ARP como a parte física do sistema de redes, e não como a parte do protocolo
de interligação em redes.
6.3.2 Implementação ARP
Ao enviar um pacote, deverá ser consultado a tabela ARP para saber se
o existe um MAC para o IP de destino. Se não houver, será enviado um pacote
por difusão para todas as máquinas na rede. Se a máquina de destino estiver
muito ocupado ou desativada a resposta pode demorar. Enquanto isto, a
máquina de origem, deve manter o pacote de usuário de forma a envia-lo o
mais rápido possível, assim que a resposta chegue. Porem, o canal de
cmunicação deve ser mantido livre para ser utilizado com outros destinos.
53
Podemos considerar, em outro caso, quando A mantem comunicação B
(o MAC de B está gravado na cache de A), e derrepente a placa de
comunicação de B falha e a mesma é substituída. O que aconteceria com A se
B voltasse com outro MAC. Para esta solução foi criado um timer na Cache da
tabela ARP, onde um registro deverá ser atualizado, substituído ou mesmo
excluído após um determinado tempo. Este procedimento mantem a segurança
na comunicação entre dois hosts.
Podemos ter dois tipos de tratamento para os pacotes ARP. Quando A
envia uma solicitação de endereçamento para B. B envia uma resposta para A
e A deverá acrescentar/atualizar em sua tabela ARP o endereço de B. Porem
se o pacote de resposta de B não coincidir com o IP solicitado por A, o pacote
deverá ser descartado.
6.3.3 Encapsulamento e Identificação ARP
MENSAGEM ARP
CABEÇALHO QUADRO
MENSAGEM ARP
Quando uma mensagem ARP é enviada, a mesma possui uma valor
especial no campo TIPO, isto faz com seja realizado uma tratamento
especial/urgente para as mensagens ARP.
6.3.4 Formato do Protocolo ARP
As mensagens ARP não possuem um cabeçalho fixo, fazendo com que
esta mesagens possua uma boa adaptação em diferentes tecnologias. Para a
rede Ethernet a mensagem Arp possui 28 octetos.
54
TIPO
HLE
TIPO
H
OPERAÇÃO
SENDER HA ( octetos 0-3 )
SENDER HA
SENDER IP
SENDER IP
TARGET HA
TARGET HA (octetos 2-5 )
TARGET IP (octetos 0-3 )
TIPO DE HARDWARE : Tipo de interface de hardware do destino
TIPO DE PROTOCOLO : tipo do protocolo da camada de enlace (Ex.
Ethernet = 080016)
OPERAÇÃO : Solicitação ARP (1); resposta ARP (2); solicitação RARP
(3) e resposta RARP (4)
HLEN : extensão do endereço de hardware
PLEN : extensão do endereço de protocolo
SENDER HA : endereço de hardware da origem
SENDER IP : endereço IP da origem
TARGET HA : endereço de hardware de destino (RARP)
TARGET IP : endereço IP do destino
6.4
PROTOCOLO RARP
6.4.1 Introdução
Normalmente o endereço IP de uma máquina é mantido em um arquivo
de configuração. Mas como máquinas sem disco irão conseguir verificar este
arquivo?
Máquinas sem disco, tentam contatar um servidor na rede que possua o
seu endereço IP, através de uma comunicação utilizando o endereço físico
55
(MAC). É enviado uma solicitação a um servidor, o qual possui um banco de
dados com tais informações, e aguardado sua resposta. Porem esta máquina,
não sabe qual é o endereço físico do servidor. Ela apenas envia um broadcast
para a rede e solicita a todas as máquinas que enviem o seu endereço IP.
Somente o servidor responderá.
Este mesmo procedimento, pode ocorrer no caso de uma máquina
solicitar o endereço IP de uma terceira.
O RARP é uma adaptação do protocolo ARP, e utiliza o mesmo formato
de endereçamento, sendo a única necessidade é a troca do campo tipo para
803516, para identificar o conteúdo do quadro como mensagem RARP.
56
7. PROTOCOLO ICMP
O protocolo ICMP é um protocolo auxiliar ao IP, que carrega
informações de controle e diagnóstico, informando falhas como TTL do pacote
IP expirou, erros de fragmentação, roteadores intermediários congestionados e
outros.
Uma mensagem ICMP é encapsulada no protocolo IP, conforme
ilustrado na Figura 12 abaixo. Apesar de encapsulado dentro do pacote IP, o
protocolo ICMP não é considerado um protocolo de nível mais alto.
Cabeçalho ICMP
Cabeçalho IP
Dados ICMP
Mensagem ICMP
Datagrama IP
Figura 12 – Encapsulamento ICMP
A mensagem ICMP é sempre destinada ao host origem da mensagem,
não existindo nenhum mecanismo para informar erros aos roteadores no
caminho ou ao host destino.
As mensagens ICMP possuem um identificar principal de tipo (TYPE) e
um identificador de sub-tipo (CODE), conforme pode ser visto no formato de
mensagem ilustrado abaixo:
0
7
15
Octeto 1
Octeto 2
TYPE
CODE
23
Octeto 3
31
Octeto 4
CHECKSUM
MENSAGEM ICMP ESPECÍFICA
57
Os tipos de mensagem ICMP são listados na tabela abaixo:
Mensagem ICMP
Tipo
Categoria
0
Echo Reply
Controle
3
Destination Unreachable
4
Source Quench
Controle
5
Redirect
Controle
8
Echo Request
Controle
9
Router Advertisement (RFC 1256)
Controle
10
Router Solicitation (RFC 1256)
Controle
11
Time Exceeded for a Datagram
Erro
12
Parameter Problem on a Datagram
Erro
13
Timestamp Request
Controle
14
Timestamp Reply
Controle
15
Information Request (obsoleto)
Controle
16
Information Reply (obsoleto)
Controle
17
Address Mark Request
Controle
18
Address Mark Reply
Controle
Erro
As mensagens ICMP são listadas abaixo:
7.1
MENSAGEMS ICMP
7.1.1 Echo Request e Echo Reply
Utilizada pelo comando ping, a mensagem Echo Request enviada para
um host causa o retorno de uma mensagem Echo Reply. É utilizada
principalmente para fins de testes de conectividade entre as duas máquinas.
0
7
15
Octeto 1
Octeto 2
TYPE (8 ou 0)
CODE (0)
23
Octeto 3
31
Octeto 4
CHECKSUM
IDENTIFIER
SEQUENCE NUMBER
OPTIONAL DATA
...
58
7.1.2 Destination Unreacheable
Esta mensagem possui diversos sub-tipos para identificar o motivo da
não alcançabilidade: os sub-tipos utilizados atualmente são:
0 : Network Unreachable - Rede destino inalcançável
1 : Host Unreachable (ou falha no roteamento para subnet) Máquina destino inalcançável
2 : Protocol Unreachable - Protocolo destino desativado ou aplicação
inexistente
3 : Port Unreachable - Porta destino sem aplicação associada
4 : Fragmentation Needed and DNF set - Fragmentação necessária
mas bit DNF setado. Alterado também pela RFC 1191 para
suporta o protocolo Path MTU Discovery
5 : Source Route Failed - Roteamento por rota especificada em opção
IP falhou
6 : Destination Network Unknown
7 : Destination Host Unknown
8 : Source Host Isolated
9 : Communication with destination network administratively
prohibited
10
:
Communication
with
destination
host
administratively
prohibited
O sub-tipo Fragmentation Needed and DNF set é utilizado como forma
de um host descobrir o menor MTU nas redes que serão percorridas entre a
origem e o destino. Por meio desta mensagem, é possível enviar pacotes que
não precisarão ser fragmentados, aumentando a eficiência da rede. Esta
técnica, que forma um protocolo é denominado de ICMP MTU Discovery
Protocol, definido na RFC 1191.
A operação é simples. Todo pacote IP enviado é marcado com o bit DNF
(Do Not Fragment), que impede sua fragmentação nos roteadores. Desta
59
forma, se uma pacote IP, ao passar por um roteador para chegar a outra rede
com MTU menor, deva ser fragmentado, o protocolo IP não irá permitir e
enviará uma mensagem ICMP Destination Unreacheable para o destino. Para
suportar esta técnica, a mensagem ICMP foi alterada para informar o MTU da
rede que causou o ICMP. Desta forma, a máquina origem saberá qual o valor
de MTU que causou a necessidade de fragmentação, podendo reduzir o MTU
de acordo, nos próximos pacotes. Esta mensagem está ilustrada abaixo:
0
7
15
Octeto 1
Octeto 2
TYPE (3)
CODE (4)
23
Octeto 3
31
Octeto 4
CHECKSUM
Não usado (deve ser 0)
MTU of next HOP
IP HEADER + FIRST 64 BITS OF DATAGRAM
...
7.1.3 Source Quench
Esta mensagem é utilizada por um roteador para informar à origem, que
foi obrigado a descartar o pacote devido a incapacidade de roteá-lo devido ao
tráfego.
0
7
15
Octeto 1
Octeto 2
TYPE (4)
CODE (0)
23
Octeto 3
31
Octeto 4
CHECKSUM
UNUSED (MUST BE ZERO)
IP HEADER + FIRST 64 BITS OF DATAGRAM
...
60
7.1.4 Redirect
Esta mensagem, uma das mais importantes do protocolo IP, é utilizada
por um roteador para informar ao host origem de uma mensagem que existe
uma rota direta mais adequada através de outro roteador. O host, após receber
a mensagem ICMP, instalará uma rota específica para aquele host destino:
0
7
15
Octeto 1
Octeto 2
TYPE (5)
CODE (0-3)
23
Octeto 3
31
Octeto 4
CHECKSUM
GATEWAY INTERNET ADDRESS
IP HEADER + FIRST 64 BITS OF DATAGRAM
...
0 : Redirect datagrams for the Net (obsoleto)
1 : Redirect datagrams for the Host
2 : Redirect datagrams for the Type of Service and Net
3 : Redirect datagrams for the Type of Service and Host
A operação do ICMP Redirect ocorre conforme os diagramas abaixo.
Note que a rota instalada é uma rota específica para host, com máscara
255.255.255.255, não servindo para outras máquinas na mesma rede. Se uma
máquina se comunica com 10 máquinas em outra rede e se basear em ICMP
Redirect para aprender as rotas, ele instalará pelo menos 10 entradas na
tabela de rede, uma para cada máquina
61
139.82.16.33
139.82.17.22
139.82.16.1
139.82.17.1
139.82.18.44
139.92.18.1
139.92.17.2
139.82.16.2
139.82.19.1
Datagrama IP
Origem: 139.82.17.22
Destino: 139.82.19.55
139.82.19.55
139.82.16.33
139.82.17.22
139.82.18.44
139.92.18.1
139.92.17.2
139.82.16.1
139.82.17.1
139.82.16.2
139.82.19.1
Mensagem ICMP
5
1
CHECKSUM
139.82.17.1
139.82.19.55
IP HEADER + FIRST 64 BITS OF DATAGRAM
Figura 13 - ICMP
Na Figura 13 acima, a estação 139.82.17.22 instalou, após a mensagem
ICMP, a seguinte rota na tabela de rotas:
Rede Destino
Máscara
139.82.19.55
255.255.255.255
Roteador (Gateway) Hops
139.82.17.1
0
62
7.1.5 TTL Expired
Esta mensagem ICMP originada em um roteador informa ao host de
origem que foi obrigado a descartar o pacote, uma vez que o TTL chegou a
zero.
0
7
15
Octeto 1
Octeto 2
TYPE (11)
CODE (0-1)
23
Octeto 3
31
Octeto 4
CHECKSUM
UNUSED (MUST BE ZERO)
IP HEADER + FIRST 64 BITS OF DATAGRAM
...
Esta mensagem é utilizada pelo programa traceroute (ou tracert no
Windows) para testar o caminho percorrido por um pacote. O programa
funciona da seguinte forma:
1. É enviada uma mensagem ICMP Echo Request para um endereço IP
destino. Esta mensagem é enviada com TTL = 1.
2. Quando chega ao primeiro roteador, este decrementa o valor de TTL da
mensagem IP e retorna uma mensagem ICMP TTL Expired. O programa
armazena o endereço IP do roteador que enviou a mensagem TTL Expired.
3. O programa envia outra mensagem ICMP Echo Request para o endereço IP
destino. Esta mensagem é enviada desta vez com TTL=2.
4. A mensagem atravessa o primeiro roteador e tem o TTL decrementado para
1. Quando chega ao segundo roteador, o TTL torna-se 0 e este roteador
envia uma mensagem ICMP TTL Expired para a máquina origem. Esta
armazena o endereço do segundo roteador.
5. Esta operação prossegue até que a máquina destino responda. Todos os
roteadores no caminho são registrados.
63
Note, entretanto, que devido à diferenças de rotas seguidas pelos
diversos pacotes, o caminho obtido não necessariamente é único. A execução
do programa traceroute mais de uma vez pode revelar rotas diferentes
seguidas pelos pacotes.
7.1.6 ICMP Router Solicitation/Advertisement
Esta variação de ICMP, definido na RFC 1256 foi projetada para permitir
que um roteador possa divulgar sua existência para as máquinas existentes na
rede. O objetivo desta função é evitar a necessidade de se configurar
manualmente todas as estações da rede com a rota default e permitir que uma
estação conheça outros roteadores além do default que possam rotear no caso
de falha do principal.
A mensagem é composta de duas formas: a solicitação de divulgação de
uma roteador e o anúncio de um roteador. O roteador pode ser configurado
para enviar automaticamente as mensagens de anúncio ou fazê-lo apenas
comandado por uma mensagem de solicitação.
A mensagem ICMP Router Solicitation é mostrada abaixo:
0
7
15
Octeto 1
Octeto 2
TYPE (10)
CODE (0)
23
Octeto 3
31
Octeto 4
CHECKSUM
RESERVADO
64
A mensagem ICMP Router Solicitation é mostrada abaixo:
0
7
15
Octeto 1
Octeto 2
TYPE (9)
CODE (0)
23
Octeto 3
NUM ADDR 2 (Tam Reg)
31
Octeto 4
CHECKSUM
LIFETIME (seg)
ROUTER ADDRESS 1
PREFERENCE LEVEL 1
...
Esta mensagem pode conter a divulgação de diversos roteadores
iniciada a partir de um que seja configurado para divulgá-los. O número de
preferência é a ordem de preferência que estes roteadores podem ser
utilizados pelas estações.
7.1.7 Aquisição de informações de Roteamento
Em uma estação e em um roteador, as informações constantes na
tabela de rotas podem ser obtidas de diversas formas.
As rotas podem ser obtidas por uma estação ou em um roteador de
diversas formas, com limitações dependendo da implementação do TCP/IP em
cada sistema operacional:
1. Estação sem nenhuma rota. Neste caso, a estação vai precisar de pelo
menor um roteador default. A estação pode obter um roteador default
através de:
• protocolo ICMP Router Advertisement
• Protocolo BOOTP ou DHCP durante a etapa de boot ou após ela.
• Escuta dos protocolos de roteamento como RIP e outras para
descobrir roteadores
65
• outras, sempre não respeitando a divisão em camadas
2. Estação com somente um roteador default. Com um roteador, a estação já
pode operar corretamente. No caso de existir rotas melhores através de
outros roteadores, o roteador default informará rotas específicas através de
ICMP Redirect, sempre específica para uma estação destino.
3. Estação com mais de um roteador default, poderá utilizar os diversos
roteadores default, no caso de falha do primeiro.
4. Estação com rotas específicas para outras redes configuradas de forma
manual.
5. Estação executando algum protocolo de roteamento, geralmente na forma
SOMENTE ESCUTA. Desta forma, a estação pode aprender informações de
rotas trocadas entre os roteadores sem divulgar rotas.
É possível inclusive ocorrer o recebimento de informações conflitantes
ou não idênticas de rotas para determinadas redes. O roteador resolve estes
conflitos com a adoção de prioridades para rotas aprendidas por meios
diferentes. Geralmente, a ordem de prioridade da forma de aprendizagem das
rotas é da seguinte forma:
1. Rotas configuradas estaticamente tem maior prioridade, exceto se houver
outra rota mais específica (com máscara mais longa). P. exemplo, um
roteador possui uma rota para a rede 200.0.0.0 mas aprende uma rotas
específica para 200.0.0.123. Esta última terá maior prioridade
2. Rotas específicas aprendidas por meio de ICMP Redirect e rotas default
aprendidas por meio de ICMP Router Advertisement
3. Rotas aprendidas por meio dos protocolos OSPF e BGP
4. Rotas aprendidas por meio do protocolo RIP
66
8.
PROTOCOLOS DA CAMADA DE TRANSPORTE
A Figura 14 ilustra a divisão em camadas da arquitetura TCP/IP:
Aplicação
Mensagens da aplicação
Transporte
Inter-rede
Datagramas IP
Rede
HDLC, X.25, PPP, SLIP,
Ethernet, Token-Ring, FDDI,
ATM, LLC, NDIS, ...
Figura 14 – Divisão em Camadas
8.1
CAMADA DE TRANSPORTE
Esta camada reúne os protocolos que realizam as funções de transporte
de dados fim-a-fim, ou seja, considerando apenas a origem e o destino da
comunicação, sem se preocupar com os elementos intermediários. A camada
de transporte possui dois protocolos que são o UDP (User Datagram Protocol)
e TCP (Transmission Control Protocol).
O protocolo UDP realiza apenas a multiplexação para que várias
aplicações possam acessar o sistema de comunicação de forma coerente.
O protocolo TCP realiza além da multiplexação, uma série de funções
para tornar a comunicação entre origem e destino mais confiável. São
responsabilidades do protocolo TCP o controle de fluco, o controle de erro, a
sequenciação e a multiplexação de mensagens.
A camada de transporte oferece para o nível de aplicação um conjunto
de funções e procedimentos para acesso ao sistema de comunicação de modo
a permitir a criação e a utilização de aplicações de forma independente da
implementação. Desta forma, as interfaces socket (ambiente Unix) e Winsock
67
(ambiente Windows) fornecem um conjunto de funções-padrão para permitir
que as aplicações possam ser desenvolvidas independentes do sistema
operacional no qual rodarão.
8.2
PROTOCOLO UDP
O protocolo UDP fornece uma forma simples de acesso ao sistema de
comunicação, provendo um serviço sem conexão, sem confiabilidade e sem
correção de erros. A principal função do nível de transporte implementada em
UDP é a capacidade de multiplexação de acesso ao sistema de comunicação.
Esta função permite que vários processos ou programas executando em um
computador possam acessar o sistema de comunicação e o tráfego de dados
respectivo a cada um deles seja corretamente identificado, separado e utilize
buffers individuais.
Um processo é o programa que implementa uma aplicação do sistema
operacional, e que pode ser uma aplicação do nível de aplicação TCP/IP.
A forma de identificação de um ponto de acesso de serviço (SAP) do
modelo OSI é a porta de protocolo em TCP/IP. A porta é a unidade que
permite identificar o tráfego de dados destinado a diversas aplicações. A
identificação única de um processo acessando os serviços TCP/IP é, então, o
endereço IP da máquina e a porta (ou portas) usadas pela aplicação. Cada
processo pode utilizar mais de uma porta simultâneamente, mas uma porta só
pode ser utilizada por uma aplicação em um dado momento. Uma aplicação
que deseje utilizar os serviços de comunicação deverá requisitar uma ou mais
portas para realizar a comunicação. A mesma porta usada por uma aplicação
pode ser usada por outra, desde que a primeira tenha terminado de utilizá-la.
A forma de utilização de portas mostra uma distinção entre a parte
cliente e a parte servidora de uma aplicação TCP/IP. O programa cliente pode
utilizar um número de porta qualquer, já que nenhum programa na rede terá
necessidade de enviar uma mensagem para ele. Já uma aplicação servidora
deve utilizar uma número de porta bem-conhecido (Well-known ports) de modo
68
que um cliente qualquer, querendo utilizar os serviços do servidor, tenha que
saber apenas o endereço IP da máquina onde este está executando.
Se não houvesse a utilização de um número de porta bem conhecido, a
arquitetura TCP/IP deveria possuir um mecanismo de diretório para que um
cliente pudesse descobrir o número da porta associado ao servidor. Para evitar
este passo intermediário, utiliza-se números de porta bem conhecidos e o
cliente já possui pré programado em seu código o número de porta a ser
utilizado.
Os números de porta de 1 a 1023 são números bem-conhecidos para
serviços (aplicações) atribuídos pela IANA (Internet Assigned Numbers
Authority). Os números de 1024 a 65535 podem ser atribuídos para outros
serviços e são geralmente utilizados pelas programas-cliente de um protocolo
(que podem utilizar um número de porta qualquer). Este conjunto de números
tem ainda a atribuição de alguns serviços de forma não oficial, já que os
primeiros 1024 números não conseguem comportar todos os protocolos TCP/IP
existentes.
A Figura 15 abaixo ilustra a multiplexação/demultiplexação realizada
pelo protocolo UDP, camada de transporte:
Aplicação 1
Porta 126
Aplicação 2
Porta 34
Porta 22
UDP
IP
Figura 15 – Multiplexação e Demultiplexação
69
8.2.1 Formato da Mensagem UDP
0
7
Octeto 1
15
Octeto 2
23
Octeto 3
31
Octeto 4
UDP SOURCE PORT
UDP DESTINATION PORT
UDP MESSAGE LENGTH
UDP CHECKSUM
DATA
...
Opcional (campo=0)
Figura 16 – Formato da Mensagem UDP
A mensagem UDP é representada pela Figura 16. O dado carregado é o
pacote de nível de aplicação. UDP acrescenta apenas mais 8 bytes que são a
porta de protocolo origem a porta de protocolo destino, o tamanho da
mensagem UDP e um checksum para averiguar a correção dos dados do
cabeçalho UDP.
8.2.2 Encapsulamento de UDP e Colocação de Protocolos em Camadas
O UDP situa-se na camada acima da camada de rede. Em tese, os
programas aplicativos acessam o UDP, que usa o IP para enviar e receber
datagramas.
Aplicativo
Datagrama de Usuário (UDP)
Internet (IP)
Enlace
Colocação Conceitual em Camadas
70
Posicionar o UDP acima do IP significa que uma mensagem UDP
completa, incluindo o cabeçalho UDP e os dados, está encapsulada em um
datagrama IP, enquanto é transportada através de uma interligação em redes.
A idéia de encapsulamento não é somente para o protocolo UDP, na
verdade todas as camadas tem um certo encapsulamento dos dados. Desde a
camada de mais baixo nível, até a de mais alto nível. O que acontece é que
quando alguém envia dados para outra pessoa, primeiramente os dados estão
na camada de mais alto nível, e para que exista o transporte dos dados na
rede, os dados passam por todas as camadas, e com isso existe o
encapsulamento de uma camada para outra, e depois quando a pessoa recebe
os dados, antes passa pelo processo inverso, e volta a ter as mesmas
características,
mais
detalhadamente
pegando-se
o
protocolo
UDP:
Para os protocolos que já foram examinados, encapsulamento significa que o
UDP anexa inicialmente um cabeçalho aos dados que o usuário envia e passao ao IP. A camada de rede (IP) inicialmente anexa um cabeçalho ao que ele
recebe de UDP. Finalmente, a camada de enlace embute o datagrama em um
quadro antes de enviá-lo de uma máquina a outra. O formato do quadro
depende da tecnologia básica da rede. Normalmente os quadros de rede
incluem um cabeçalho adicional.
Na entrada, um pacote chega à camada mais baixa e inicia sua
ascenção através de camadas sucessivamente mais altas. Cada camada
remove um cabeçalho antes de passar a mensagem adiante, de modo que,
quando o nível mais alto repassar os dados para o processo receptor, todos os
cabeçalhos já tenham sido removidos. Assim, o cabeçalho mais externo
corresponde à camada mais baixa de protocolo, enquanto o cabeçalho mais
interno corresponde à camada mais alta de protocolo. Quando se considerar o
modo como os cabeçalhos são inseridos e removidos, é importante lembrar o
princípio de colocação em camadas.
Deve-se observar que o princípio de colocação em camadas aplica-se
ao UDP, assim, o datagrama UDP recebido pelo IP na máquina de destino é
idêntico ao que o UDP passou ao IP na máquina de origem. Por sua vez, os
dados que o UDP entrega a um processo de usuário na máquina receptora
71
serão exatamente os mesmos que um processo de usuário que passou ao
UDP na máquina transmissora.
Desse modo, apenas o cabeçalho IP identifica os hosts de origem e
destino, apenas a camada UDP identifica as portas de origem e destino em um
host.
Figura 17– Encapsulamento em camadas
8.2.3.1
Organização em camadas
Existe uma forte interação enrte UDP e IP, e isso viola a permissa
básica de que a colocação em camadas reflete separação de funcionalidade; O
UDP tem estado estreitamente integrado ao protocolo IP. É claramente um
compromisso de simples separação feito por razões inteiramente práticas.
Estamos dispostos a deixar passar a violação da colocação em camadas,
poque é impossível identificar inteiramente um programa aplicativo de destino
sem especificar a máquina de destino; e queremos tornar eficiente o
mapeamento entre os endereços usados por UDP e aqueles usados por IP.
8.2.4 Multiplexação e Demultiplexação UDP e Portas
Cada software colocado em cada camada de uma hierarquia de
protocolo deve ser capaz de multiplexar ou demultiplexar múltiplos objetos da
camada seguinte. O software UDP apresenta multiplexação e demultiplexação,
72
ele aceita datagramas do protocolo UDP de muitos programas aplicativos, e os
passa ao IP, para transmissão, e aceita datagramas UDP recebidos de ip e pos
passa ao programa aplicatrivo apropriado.
Conceitualmente, toda multiplexação e demultiplexação entre o software
UDP e o programa aplicativo ocorre através do mecanismo da porta. Cada
programa aplicativo deve negociar com o sistema operacional a fim de obter
uma porta de protocolo e um número de porta correspondente, antes que ele
possa enviar um datagrama UDP. Uma vez que a porta tenha sido atribuída,
qualquer datagrama que o programa aplicativo enviar através da porta terá
aquele número de porta em seu campo Porta de origem UDP.
Enquanto está processando a entrada, o UDP aceita datagramas
recebidos do IP e procede à demultiplexação tendo como base a porta de
destino do UDP.
Figura 18 - Exemplo de demultiplexação de uma camada acima do IP.
O UDP usa o número da porta de destino UDP para selecionar uma
porta de destino apropriada para os datagramas recebidos
O modo mais simples de conceber uma porta UDP é uma fila. Na
maioria doas implementações, quando um programa aplicativo negocia com o
sistema operacional para usar determinada porta, o sistema operacional cria
uma fila interna que pode reter as mensagens que estão chagando.
Freqüentemente, o aplicativo pode especificar ou mudar o tamanho da fila.
Quando o UDP recebe um datagrama, vreifica se o número de porta de destino
73
confere com uma das portas atualmente em uso. Se não conferir, envia uma
mensagem de erro ICMP de porta não-atingida descarta o datagrama. Se for
encontrada uma dorrespondência, o UDP enfilera o novo datagrama na porta
onde o programa aplicativo pode acessá-lo. Naturalmente ocorrerá um erro se
a porta estiver cheia e o UDP descartar o datagrama recebido.
8.2.4.1
Números de portas UDP reservadas e disponíveis
Uma pergunta importante é como deverão ser atribuídos números de
porta de protocolo? O problema é que dois computadores precisam equipararse pelos números de porta, antes que possam se comunicar. Por exemplo,
quando um computador A deseja obter um arquivo do computador B, ele
precisa saber qual a porta usada no computador B pelo programa de
transferência de arquivos. Existe duas abordagens fundamentais para a
atribuição de portas. A primeira usa a autoridade central. Todos concordam em
permitir que uma autoriddae central atribua números de portas, de acordo com
a necessidade, e publique a lista de todas as atribuições. A seguir, todo o
software é criado de acordo com a lista. Essa abordagem é algumas vezes
chamada atribuições univresais; as atribuições de porta, especificadas pela
autoridade, são chamadas atribuições de portas identificadas.
A segunda abordagem para atribuição de portas usa atribuição
dinâmica. Nesse tipo de abordagem de atribuição, as portas não são
totalmente identificadas. Em vez disso, sempre que um programa necessita de
uma porta, o software da rede atribui uma. Para aprender sobre a atribuição
atual de porta em outro computador, é preciso enviar um pedido que façauma
pergunta. A máquina-alvo responde, dando o número de porta correto.
Os projetistas do TCP/IP adotaram uma abordagem híbrida que atribui
alguns números de porta, mas deixa disponíveis para sites locais ou pragramas
aplicativos. Os números de porta atribuídos começam com valores baixos e
vão se elevando, deixando valores inteiros grandes disponíveis para atribuição
dinâmica.
74
Decima
Senha
Senha UNIX
Descrição
0
-
-
Reserved
7
ECHO
echo
Echo
9
DISCARD
discard
Discard
11
USERS
sytat
Active Users
13
DAYTIME
daytime
Daytime
15
-
netstat
17
QUOTE
qotd
19
CHARGEN
chargen
37
TIME
time
42
NAMESERVER
name
43
NICNAME
whois
53
DOMAIN
nameserver
67
BOOTPS
bootps
68
BOOTPC
bootpc
69
TFTP
tftp
111
SUNRPC
sunrpc
123
NTP
ntp
Who is up or
NETSTAT
Quote of the
Day
Character
Generator
Time
Host
Name
Server
Who is
Domain Name
Server
Bootstrap
Protocol Server
Bootstrap
Protocol Client
Trivial
File
Transfer
Sun
Microsystems RPC
Network Time
Protocol
75
8.3
SNMP
net
161
-
snmp
162
-
snmp-trap
SNMP traps
512
-
biff
UNIX comsat
513
-
who
514
-
syslog
system log
525
-
timed
Time daemon
monitor
UNIX
rwho
daemon
PROTOCOLO TCP
O protocolo TCP trabalha no mesmo nível que o protocolo UDP, mas
oferece serviços mais complexos, que incluem controle de erros e fluxo, serviço
com conexão e envio de fluxo de dados. TCP utiliza o mesmo conceito de porta
de UDP. Para TCP, uma conexão é formada pelo par (End. IP. Origem, Porta
Origem) e (End. IP Destino, Porta Destino).
O protocolo TCP oferece as seguintes características:
• Controle de Fluxo e Erro fim-a-fim
• Serviço confiável de transferência de dados
• Comunicação full-duplex fim-a-fim
• A aplicação basta enviar um fluxo de bytes
• Desassociação entre qtd. de dados enviados pela aplicação e pela camada
TCP
• Ordenação de mensagens
• Multiplexação de IP, através de várias portas
• Opção de envio de dados urgentes
A conexão TCP é ilustrada na Figura 19:
76
Porta 22
Porta 2340
TCP
TCP
IP
IP
Host 139.82.17.10
Inter-rede
TCP/IP
Host 139.82.55.3
Figura 19 – Conexão TCP
Uma conexão TCP é formada por três fases: o estabelecimento de
conexão, a troca de dados e o finalização da conexão, conforme ilustrado na
Figura 20:
SYN/ACK
ACK
Transmite dados
Recebe dados
Fecha conexão
DADOS
ACK
DADOS
ACK
FIN
ACK
FIN
ACK
Recebe dados
Transmite dados
Fecha conexão
Figura 20 – Conexão em três fases
A fase inicial de estabelecimento de conexão é formada de três
mensagens, formando o three-way-hanshaking, conforme a Figura 21:
77
SEQ
21
ACK
-
SEQ
152
SEQ
-
ACK
22
ACK
153
Figura 21 – Three Way Handshake
O pacote TCP é formado pela mensagem mostrada abaixo:
0
7
15
Octeto 1
Octeto 2
23
31
Octeto 3
TCP SOURCE PORT
Octeto 4
TCP DESTINATION PORT
SEQUENCE NUMBER
ACKNOWLEDGEMENT NUMBER
HLEN
RESERVED
CODE BITS
WINDOW
CHECKSUM
URGENT POINTER
OPTIONS (IF ANY)
PADDING
DATA
...
Estes campos são definidos da seguinte forma:
TCP SOURCE PORT: Porta origem da mensagem
TCP DESTINATION PORT: Porta destino da mensagem
SEQUENCE NUMBER: número de sequência dos dados sendo
transmitidos face ao conjunto total de dados já transmitidos. Este número indica
a posição do primeiro byte de dados sendo transmitido em relação ao total de
bytes já transmitidos nesta conexão. O primeiro número de sequência utilizado
78
não é zero ou um, mas começa de um valor aleatório. Logo se um pacote está
trasmitindo do 1234o. byte até o 2000o. byte de uma conexão e o SEQUENCE
NUMBER inicial utilizado nesta conexão foi 10000, o campo SEQUENCE
NUMBER conterá o valor 11234. O sequence number em um sentido da
conexão (máquina A para B) é diferente do seuqnece number do sentido
inverso, já que os dados transmitidos por um e outro lado são completamente
distintos.
ACKNOWLEDGE NUMBER: número que significa o reconhecimento
dos dados recebidos até então no sentido inverso. O ACK de um sentido é
transmitido em piggy-backing no outro sentido. O ACK contém o número do
próximo byte do fluxo de dados recebido, que a origem deste pacote espera
receber da outra máquina. Este valor leva em consideração o número de
SEQUENCE NUMBER inicial praticado pela outra máquina. O valor de ACK
informa sempre o próximo byte ainda não recebido do conjunto contíguo de
bytes recebidos do transmissor.
CODE BITS: São formados por seis bits, URG, ACK, PSH, RST, SYN e
FIN, cuja utilização é descrita abaixo:
URG: bit de Urgência: significa que o segmento sendo carregado
contém dados urgentes que devem ser lidos com prioridade pela aplicação. A
aplicação origem é responsável por acionar este bit e fornecer o valor do
URGENT POINTER que indica o fim dos dados urgentes. Um exemplo da
utilização desta facilidade é o aborto de uma conexão (por exemplo por
Control-C), que faz com que a aplicação destino examine logo o pacote até o
fim da área de urgência, descubra que houve um Control-C e termine a
conexão.
ACK: bit de Reconhecimento: indica que o valor do campo de
reconhecimento está carregando um reconhecimento válido.
PSH: bit de PUSH: Este mecanismo que pode ser acionado pela
aplicação informa ao TCP origem e destino que a aplicação solicita a
transmissão rápida dos dados enviados, mesmo que ela contenha um número
baixo de bytes, não preeenchendo o tamanho mínimo do buffer de
transmissão.
79
RST: bit de RESET: Informa o destino que a conexão foi abortada neste
sentido pela origem
SYN: bit de Sincronismo: ë o bit que informa que este é um dos dois
primeiros segmentos de estabelecimento da conexão.
FIN: bit de Terminação: indica que este pacote é um dos dos pacotes de
finalização da conexão
WINDOW: Este campo informa o tamanho disponível em bytes na janela
de recepção da origem deste pacote. Por meio deste valor, o TCP pode realizar
um controle adequando de fluxo para evitar a sobrecarga do receptor. Quando
este valor é igual a zero, o transmissor não envia dados, esperando receber um
pacote com WINDOW maior que zero. O transmissor sempre vai tentar
transmitir a quantidade de dados disponíveis na janela de recepção sem
aguardar um ACK. Enquanto não for recebido um reconhecimento dos dados
transmitidos e o correspondente valor de WINDOW > 0, o transmissor não
enviará dados.
OPTIONS: O campo de opções só possui uma única opção válida que é
a negociação do MSS (Maximum Segment Size) que o TCP pode transmitir. O
MSS é calculado através do MTU ou através do protocolo ICMP Path MTU
Discovery.
8.3.1 Serviços TCP
O principal propósito do TCP é garantir a trnsferência confiável de
dados, para isto o protocolo deve fornecer alguns serviços, tais como:
8.3.1.1
Serviços TCP: transferência de dados
A transferência de dados entre usuários pode ser feita tanto no modo
full-duplex commo no modo half-duplex, sendo que a unidade básica de
transferência entre o TCP e as estações é chamada de segmento.
Em cada conexão é o protocolo que determina o momento mais conveniente
80
de bloquear ou liberar o dados para transmissão. O processo de ajuste dos
intervalos enrte liberações é feito dinamicamente, para poder acomodar as
constantes mudanças no tempo decorrido entre o instante de segmento, a
diferença é comparada com valores correntes, sendo então feitos os ajustes
necessários.
Em cada conexão é o protocolo que determina o momento mais
conveniente de bloquear ou liberar o dado para transmissão.O processo de
ajuste dos intervalos entre liberações é feito dinamicamente, para poder
acomodar as constantes mudanças no tempo de propagação do ambiente
Internet. O mecanismo consiste na verificação do tempo decorrido entre o
instante de transmissão de um segmento e o instante de chegada do
reconhecimento associado a este segmento, a diferença é comparada com os
valores correntes, sendo então feitos os ajustes necessários.
O TCP também determina o número de octetos a serem incluídos em
um determinado segmento, visando otimizar o uso do meio de transmissão.
Após o estabelecimento da conexão o tamanho de cada segmento pode variar,
ou seja, os segmentos não vão necessariamente conter o mesmo número de
octetos.
Exitem ainda dois mecanismos especiais : a sinalização de "push data"
e de dados urgentes. O primeiro caso é usado quando o emissor quer
especificar para o protocolo um conjunto de dados que devem ser transmitidos
no mesmo segmento, para isto cada dado pertencente a este conjunto tem o
seu flag ativado. O TCP separa todos os dados marcados com o flag, junta
com os dados que já estavam no buffer e monta um segmento, transmitindo-o
imediatamente. O protocolo do lado receptor ao perceber a existência de dados
marcados com o push flag pega todos os dados do seu buffer e os entrega ao
usuário.
O segundo mecanismo é empregado nos casos em que é interessante
sinalizar ao processo destinatário a existência de dados cujo atendimento seja
prioritário. Neste caso é o processo destinatário que fica responsável pelo
tratamento adequado destes dados. Um exemplo de sistema onde a aplicação
deste conceito é útil, é o de sistemas de automação e controle.
81
8.3.1.2
Serviços TCP: confiabilidade
TCP garante a correção dos dados nos casos de alteração, perda, duplicação
ou entrega fora de sequência. Para manter este controle, o TCP se apoia
basicamente no número de seqüência. A cadeia de bytes recebida da
aplicação é vista como um conjunto de octetos. A cada octeto é associado um
único número de seqüência, incrementado de um em um a cada octeto
formado. A utilização deste dado e dos mecanismos de reconhecimento e
checksum, visa manter a confiabilidade, sendo feita da seguinte forma :
1. perda de dados : o TCP associa um número de seqüência para cada
octeto (byte) transmitido pela conexão, solicitando ao TCP destinatário o
envio de um reconhecimento positivo (ACK). Este ACK contém o número de
seqüência do próximo elemento esperado pela recepção, e representa uma
confirmação de todos os números anteriores a ele. Se o
ACK não é
recebido dentro do tempo especificado para entrega (ocorrência de
timeout), o receptor solicita ao
transmisssor que os dados sejam
retransmitidos;
2. ordenação : o mesmo número de sequência é usado pela estação
receptora como forma de verificação da correta ordenação dos dados
recebidos;
3. duplicação : algumas vezes pode ocorrer a perda de algum ACK, o que
implicaria na duplicação do segmento associado. O número de sequência
permite a identificação do segmento duplicado de forma que este possa ser
descartado pelo receptor;
4. erros de conteúdo : dados recebidos possuem campo contendo um valor
de checksum. O processo receptor recalcula o checksum com base no
algoritmo de soma em complemento a um, e compara com o valor deste
campo, caso o erro seja confirmado o receptor descarta os segmentos
alterados. Para estes segmentos o receptor não envia o sinal de ACK, o
que provoca a sua retransmissão.
82
8.3.1.4
Serviços TCP: controle de fluxo
O TCP fornece um mecanismo, chamado de janela deslizante de
tamanho variável ou janela de crédito, que permite a estação receptora
controlar a quantidade de dados enviados pela estação transmissora. O
receptor junto com cada ACK, envia um dado chamado janela de recepção
com uma indicação da quantidade de octetos adicionais que podem ser aceitos
pelo seu buffer. Normalmente a medida que o buffer vai enchendo este valor
vai sendo reduzido, evitando o seu transbordamento. Quando os dados são
passados do buffer para a aplicação, o valor da janela de recepção volta a
aumentar, indicando que o tamanho da janela de transmissão pode aumentar
também.
8.3.1.5
Serviços TCP: multiplexação
O TCP usa a idéia de portas para identificar o destino final dentro da
máquina. Cada máquina possui um conjunto de portas e isto permite que vários
processos dentro de uma mesma máquina façam uso simultâneo dos serviços
de comunicação do protocolo. Os soquetes representam o ponto terminal de
todo o tráfego IP entre duas máquinas, sendo que um mesmo soquete pode
ser usado para mais de uma conexão.
8.3.1.6
Serviços TCP: conexão
O protocolo TCP é orientado à conexão, o que caracteriza três fases de
funcionamento : estabelecimento da conexão, transferência de dados e
liberação da conexão. Quando dois processos desejam se comunicar, o
processo TCP associado a cada máquina deve primeiro estabelecer uma
conexão. O processo de início da conexão faz com que as informações de
status sejam iniciadas em ambos os lados de circuito virtual, garantindo a
sincronização entre os números de seqüência iniciais de cada um dos lados.
83
Parâmetros especificando a segurança e precedência dos segmentos de dados
a serem transferidos são fechados pelos usuários nesta fase.
Durante a transferência de dados o processo TCP de cada máquina
deve verificar a recepção correta dos dados. No caso de falhas devido a
problemas na rede de comunicações, ambas as máquinas devem detectar a
falha e notificá-la ao programa de aplicação. Após a troca de dados a conexão
deve ser fechada para liberar recursos para outros usuários. O estabelecimento
e o fechamento de uma conexão são realizados em três níveis distintos, com
dois níveis de confirmação para evitar situações de erro.
8.3.1.7
Estabelecimento de conexão
Um pedido de abertura de conexão pode ser feito de dois modos
diferentes : passivo ou ativo. No modo de abertura passiva, o processo usuário
fica em estado de espera aguardando a chegada pela rede de um pedido de
início de conexão. O modo passivo pode ser do tipo completamente
especificado ou não especificado. No primeiro caso o usuário fixa um soquete
remoto pelo qual os pedidos de conexão serão aceitos. Um processo servidor
que deseja fornecer serviços para outros processos deve fazer uma abertura
passiva e aceitar aberturas ativas de qualquer processo chamador.
Na abertura ativa, o usuário necessita estabelecer uma conexão com um
processo servidor remoto, ele cria então um processo cliente para iniciar o
circuito e faz um pedido de abertura ativa. Neste caso o processo na outra
extremidade já deve ter feito a abertura passiva e estar esperando pelas
chamadas de entrada.
O estabelecimento de conexão possui quatro funções principais:
1. assegurar a cada extremidade da conexão a existência da outra pela troca
de pacotes de pedido de conexão e resposta associada;
2. possibilitar a troca de parâmetros opcionais tais como o tamanho de pacote,
o tamanho da janela e a qualidade de servico;
84
3. alocar recursos tais como o espaço em buffer;
4. criar uma entrada na tabela de conexão.
Para cumprir as funções citadas acima os processos servidor e cliente
devem primeiro definir o conteúdo da estrutura de dados local conhecida como
TCB (Transport Connection Block), com o estabelecimento dos seguintes
dados : tipo da conexão, número da porta remota e local, endereço Ip remoto e
local, estado da conexão, ponteiro para o buffer de entrada.
O estabelecimento da conexão é dividido em três fases para evitar a
ocorrência de problemas como a duplicação da mensagem ou a perda da
mensagem de confirmação do estabelecimento da conexão.
A primeira fase consiste no envio do pedido de conexão, onde a
máquina solicitante informa o número de seqüência inicial dos dados que serão
enviados. Ao receber a solicitação o destinatário envia além do reconhecimento
do pedido de abertura do solicitante, o seu número de sequência inicial. Após
receber a confirmação do seu pedido o solicitante envia o reconhecimento
desta resposta. O mecanismo de troca de números de sequência entre os
processos, evita que dados retransmitidos ou mesmo dados atrasados sejam
interpretados como um novo pedido de abertura de conexão, uma vez que não
podem ser estabelecidas duas conexões consecutivas com o mesmo número
de sequência. No caso de um dos processos interpretar um pedido de conexão
anterior como sendo novo, o outro processo vai responder com uma indicação
de rejeição do pedido.
85
Exemplo de estabelecimento de conexão bem sucedido
8.3.2 Transferência de Dados
A transferência de dados começa logo após o término da operação de
estabelecimento de conexão.
O mecanismo de janela deslizante aumenta a eficiência da transmissão,
permitindo ao TCP enviar vários pacotes antes que um reconhecimento
chegue. O tamanho da janela deve ser escolhido com cuidado, pois uma janela
maior apesar de aumentar a taxa de transmissão implica na necessidade de
uma capacidade de armazenamento de dados maior em ambos os lados.
No caso da conexão full-duplex pode-se usar o mecanismo de
piggybacking
para
reduzir
o
tráfego
relativo
ao
reconhecimento. Esta técnica usa o recurso de colocar os reconhecimentos
dentro dos segmentos de dados enviados para o outro lado, evitando assim o
envio do reconhecimento em um segmento isolado.
86
8.3.3 Encerramento da Conexão
Existem duas formas para encerrar a conexão, uma normal e outra
abrupta. Na terminação normal cada um dos lados só é efetivamente
desconectado após a entrega dos seus respectivos dados. O processo de
liberação é negociado, ou seja, o usuário remoto tem a opção de concordar ou
não com a desconexão.
A conexão TCP permite a transferência de dados full-duplex, isto
significa que existem cadeias de dados independentes, fluindo em cada uma
das direções da conexão. Para liberar as duas direções da conexão ambos os
lados devem ser fechados, no entanto, caso desejado, pode-se encerrar só
uma delas .
Algumas vezes pode ocorrer um evento que force o programa de
aplicação ou o software de comunicação a abortar a conexão, caracterizando
uma terminação abrupta. No caso da terminação abrupta, a transferência de
dados cessa imediatamente em ambas as direções, podendo ocorrer perda dos
dados ainda em trânsito.
87
Exemplo de fim de conexão normal
8.3.4 Desempenho TCP
O TCP é um protocolo complexo que promove a comunicação através
de uma grande variedade de tecnologias de rede básica. Muitas pessoas
supõem que, como o TCP desempenha uma tarefa muito mais complexa que
outros protocolos de transporte, o código precisa ser inepto e ineficaz.
Surpreendentemente, a generalidade sua generalidade não parece interferir no
desempenho do TCP. As experiências em Berkeley comprovaram que o
mesmo TCP que opera eficazmente em uma Internet global pode entregar
garantidamente 8 Mbps de troughput de dados de usuário enrte duas estações
de trabalho em uma Ethernet de 10 Mbps.
Download