CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
Redes - Parte III PROTOCOLO TCP/IP _______________________________________ 91
1
ENDEREÇO IP _______________________________________________________ 91
1.1 MÁSCARA DE REDE _____________________________________________________ 92
1.2 ENDEREÇO DE BROADCAST._____________________________________________ 93
1.3 ENDEREÇOS DE REDES ESPECIAIS: ______________________________________ 94
1.4 OUTRAS NOTAÇÔES DE ENDEREÇAMENTO ______________________________ 95
2
SUB-REDES E SUPER-REDES _________________________________________ 96
2.1 EXERCÍCIOS ____________________________________________________________ 98
2.2 Exercícios para Laboratório: ________________________________________________ 98
3
PROTOCOLOS ARP E RARP ___________________________________________ 98
3.1 ARP (Address Resolution Protocol)___________________________________________ 99
3.2 RARP (Reverse Address Resolution Protocol) __________________________________ 99
3.3 A FORMA DA MENSAGEM ARP ou RARP _________________________________ 100
3.4 EXERCÍCIOS: __________________________________________________________ 101
4
PROTOCOLO IP _____________________________________________________ 101
4.1 O FORMATO DE UM DATAGRAMA IP ____________________________________ 102
4.2 FRAGMENTAÇÃO E REMONTAGEM DOS DATAGRAMAS _________________ 106
5
ROTEAMENTO IP ___________________________________________________ 107
5.1 ENVIO DIRETO _________________________________________________________ 107
5.2 ENVIO INDIRETO_______________________________________________________ 110
5.3 ROTEAMENTO IP POR TABELAS ________________________________________ 110
5.4 ROTEAMENTO TIPO "NEXT-HOP"_______________________________________ 110
5.5 ROTA PADRÃO _________________________________________________________ 112
5.6 ROTAS ESPECIFICAS DE HOSTS _________________________________________ 112
5.7 ROTEAMENTO ENVOLVENDO SUB-REDES E SUPER-REDES ______________ 113
5.8 ALGORITMO DE ROTEAMENTO_________________________________________ 115
5.9 EXERCÍCIOS ___________________________________________________________ 116
6
PROTOCOLO ICMP __________________________________________________ 116
6.1 FINALIDADE ___________________________________________________________ 116
6.2 FORMATO DA MENSAGEM ICMP________________________________________ 116
89
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
7
PROTOCOLO DE PORTAS ____________________________________________ 118
8
PROTOCOLO UDP ___________________________________________________ 119
8.1 FORMA DAS MENSAGENS UDP __________________________________________ 119
8.2 QUANDO UTILIZAMOS O UDP? __________________________________________ 121
8.3 Exercícios: ______________________________________________________________ 121
9
PROTOCOLO TCP ___________________________________________________ 121
9.1 PROPORCIONANDO A CONFIABILIDADE NO ENVIO E RECEBIMENTO ____ 122
9.2 A IDENTIFICAÇÃO DAS CONEXÕES _____________________________________ 124
9.3 A FORMA DOS SEGMENTOS TCP ________________________________________ 124
9.4 INICIO E TÉRMINO DAS CONEXÕES - "THREE WAY HANDSHAKE" _______ 126
9.5 EXEMPLOS DE SERVIÇOS TCP: _________________________________________ 127
9.6 QUANDO UTILIZAMOS O TCP? __________________________________________ 127
9.7 EXERCÍCIOS: __________________________________________________________ 127
ANEXO: ____________________________________________________________________ 128
TESTE 1:_______________________________________________________________________ 128
TESTE 2:_______________________________________________________________________ 128
TESTE 3:_______________________________________________________________________ 129
TESTE 4:_______________________________________________________________________ 129
TESTE 5:_______________________________________________________________________ 130
TESTE 6:_______________________________________________________________________ 131
TESTE 7:_______________________________________________________________________ 131
TESTE 8:_______________________________________________________________________ 132
CONCLUSÕES DOS TESTES______________________________________________________ 132
90
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
Redes - Parte III
PROTOCOLO TCP/IP
Denominamos de TCP/IP um conjunto de protocolos encontrados em todas as camadas do
modelo TCP/IP. Todos, de alguma forma, usam endereços IPs. Mesmo aqueles
encontrados na camada de interface (ARP e RARP) associam o endereço físico ao
endereço IP.
Neste capítulo veremos alguns detalhes do TCP/IP, seus protocolos e respectivos
cabeçalhos e detalhes de funcionamento e configuração de algumas aplicações.
1 ENDEREÇO IP
No protocolo TCP/IP, um nó com ou sem identidade física pode possuir sua identidade
lógica IP. Esta identidade é um Número IP ou endereço IP. Este número tem um tamanho
de 32 bits e é representado, normalmente, na forma decimal de cada byte separado por um
"." (ponto).
Ao receber um datagrama IP o software TCP/IP de um equipamento compara o endereço
de destino existente no cabeçalho do protocolo de rede com seu endereço IP. Se o
resultado desta operação coincidir com seu endereço IP (ou um conjunto deles associado
àquela máquina), então a máquina de destino é ela mesma. Caso o endereço não coincida
então o datagrama é descartado.
Um endereço IP é constituído por uma tripla (bits de identificação da classe, identificação da
rede - netid, identificação do nó lógico daquela rede - hostid). Quando aplicamos a máscara,
tratamos o endereço IP como uma dupla (identificação de rede, que envolve os bits da
classe e o netid, e o hostid). Identificamos as classes de endereçamento como mostra a
figura:
Assim, no formato decimal byte-a-byte, temos as seguintes faixas de endereçamento:
91
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
Classe
A
B
C
D
E
Início
0.0.0.0
128.0.0.0
192.0.0.0
224.0.0.0
240.0.0.0
até
até
até
até
até
Final
127.255.255.255
191.255.255.255.
223.255.255.255
239.255.255.255
255.255.255.255
Algumas faixas de endereçamento e endereços individuais são reservadas para
endereçamento específico. É o caso do endereço 0.0.0.0 que, dependendo do objetivo da
implementação TCP/IP (software de roteamento ou usado por uma estação) representa o
endereço de uma máquina gateway ou mesmo um endereço global.
O endereço 255.255.255.255 representa um endereço coringa. Se não fosse pelas
restrições de roteamento, um pacote enviado para este endereço alcançaria TODAS as
máquinas de uma rede, por maior que ela fosse.
Cada rede tem, portanto, um endereço que a identifica, ou endereço de rede, que
representa a identificação da rede; e um endereço coringa ou endereço de broadcast. que
representa todos os nós lógicos daquela rede.
Com as classes de rede, temos um pequeno número de redes lógicas que admitem um
grande número de endereços de nós lógicos (redes da Classe A) e um grande número de
redes lógicas com um pequeno número de nós lógicos (redes da Classe E).
As classes D e E são muito especiais. São representam endereços lógicas de multicast e
experimentais, respectivamente. Reparem que um endereço IP representa, neste caso, uma
"rede" de máquinas.
1.1
MÁSCARA DE REDE
Como se identifica a rede?
Uma vez que o endereçamento IP possui 32 bits isto significa 4Giga-endereços diferentes o
que exigiria uma tabela de igual tamanho para ser tratada caso o roteamento fosse por
endereço absoluto. Separando em redes as tabelas são reduzidas. Para isto, usamos o
endereço de máscara. Operando logicamente (AND) tais máscaras sobre o endereço IP
o resultado fornece a identificação da rede. Um exemplo de máscara válida para uma
rede que contém a maquina de número IP 192.168.45.10 é: máscara = 255.255.255.0 , cuja
representação binária é:
11111111 11111111 11111111 00000000.
Relembrando, a tabela verdade da função lógica E (AND):
92
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
0 AND 0 = 0
0 AND 1 = 0
1 AND 0 = 0
1 AND 1 = 1
Assim, na forma binária, considerando o endereço 192.168.45.10,
11000000 10101000 00101101 00001010
11111111 11111111 11111111 00000000
11000000 10101000 00101101 00000000
(192.168.45.10)
(255.255.255.0)
(192.168.45.0 )
AND
=
número IP de identificação
da rede)
ou, na representação decimal:
192.168.45.10
255.255.255.0
192.168.45.0
(número IP da máquina) AND
(máscara) =
(número IP de identificação da rede)
De forma genérica:
ID da Rede = #IP .AND. #MÁSCARA
1.2
ENDEREÇO DE BROADCAST.
E quanto ao endereço de broadcast?
Como dito anteriormente, o Endereço IP de broadcast é um endereço coringa, ou seja,
todas as máquinas de uma mesma rede IP também se reconhecem por este endereço que
tem os bits do hostid em 1, e pode ser calculado por:
(end. broadcast) = (ID da rede) + (NOT.máscara)
(NOT) é uma operação lógica e apresenta a seguinte tabela:
NOT 1 = 0
NOT 0 = 1
Assim, se a máscara é: 11111111 11111111 11111111 00000000
(NOT)11111111 11111111 11111111 00000000 = 00000000 00000000 00000000 11111111
Somando entre este resultado ao endereço da rede temos o endereço de broadcast.
11000000 10101000 00101101 00000000 . (192.168.45.0) +
00000000 00000000 00000000 11111111 (0.0.0.255) =
11000000 10101000 00101101 11111111 (192.168.45.255) (endereço de broadcast)
Visto a necessidade das máscaras, as classes de rede receberam as máscaras
padronizadas:
93
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
Classe
A
B
C
D
E
Máscara Padrão
255.0.0.0
255.255.0.0
255.255.255.0
255.255.255.255
255.255.255.255
Com isto, a classe A possui 256 redes e cada rede (256*256*256) 16777216 endereços.
Tirando o endereço IP da rede e o endereço de broadcast, uma rede classe A permite
16777214 nós válidos (teoricamente). Por que teoricamente? Porque o endereço 0.0.0.0 não
foi desconsiderado. Porque, apesar de válido, a classe A inicia em 0.1.0.0 que também não
foi desconsiderado.
A Classe B permite 65536 redes e cada rede com este mesmo valor de nós Tirando o
endereço de rede e o endereço de broadcast temos 65534 endereços válidos por rede.
A Classe C permite 16777216 redes e cada rede com 256 nós (teóricos). Tirando o
endereço de rede e o endereço de broadcast temos 254 endereços válidos por rede.
As Classe D e E representam redes de um único nó lógico. Estas redes não possuem
endereço de broadcast.
Assim, podemos generalizar para quaisquer redes oriundas das classes A, B e C as regras
de Identificação de Rede e do endereço de broadcast.
1.3
ENDEREÇOS DE REDES ESPECIAIS:
O IANA (Internet Address Number Authority) selecionou alguns espaços de endereçamento
para fins especiais (RFC1597, RFC1700). Estes espaços de endereçamento atendem às
redes públicas, privativas, multicast e redes lógicas puramente virtuais (rede local - interna
ao equipamento).
Os espaços de endereçamento de redes públicas são para aquelas interligadas à Internet.
Os espaços de endereçamento de redes privadas não devem ser conectadas diretamente à
Internet usando tais endereços (elas já existem lá!). As redes lógicas puramente virtuais
fazem parte de todo e qualquer implementação TCP/IP (qualquer equipamento com TCP/IP
ativo). As redes destinadas à multicast (propagação controlada de serviços dedicados),
associam faixas de endereçamento para alguma atividade envolvendo um grupo específico
de máquinas. Exemplo: videoconferência (áudio/vídeo). Todas as máquinas que farão parte
da aplicação de videoconferência também se identificam com algum endereço do espaço IP
224.2.0.0 até 224.2.255.255 (Multimedia Conference Calls).
Os valores das redes privativas são:
94
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
CLASSE
Blocos de Endereços
A
10.0.0.0
B
172.16.0.0 - 172.31.0.0
C
192.168.0 - 192.168.255.0
Faixa de endereçamento
10.0.0.0 -> 10.255.255.255
172.16.0.0 -> 172.16.255.255
172.17.0.0 -> 172.17.255.255,
...
172.31.0.0 -> 172.31.255.255
192.168.0.0 -> 192.168.0.255,
192.168.1.0 -> 192.168.1.255,
...
192.168.255.0 -> 192.168.255.255
Rede Interna
Classe A
127.0.0.0
Redes Públicas
Todas as outras do espaço de endereçamento das Classes A, B e C
Redes de Multicast Compreende os endereços a classe D.
Redes Reservadas Classe E
OBSERVAÇÔES: Estas atribuições de números podem sofrer alterações sem qualquer
aviso prévio do IANA. É altamente recomendável manter atualizado sobre as RFCs. A última
modificação ocorreu em outubro de 1994 (RFC1597 e RFC1700).
1.4
OUTRAS NOTAÇÔES DE ENDEREÇAMENTO
Com o aparecimento de endereçamento genérico (classless addressing [CIDR1, CIDR2]), a
parte do número de identificação da rede pode ter qualquer tamanho, e toda a noção de
classes de endereços torna-se sem importância.
Há casos especiais para o endereçamento IP que podem ser resumidos usando as recentes
notações de endereçamento IP:
Endereço IP ::= { <Número da Rede>, <Número do Nó> }
ou
Endereço IP ::= { <Número da Rede>, <Número da Subnet>,<Número do Nó> }
Também usarmos a notação "-1" para indicar que o campo contém todos os bits em 1
Seguem alguns casos especiais comuns:
(a)
{0, 0}
Este nó da rede. Pode ser usado como um endereço de origem.
95
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
(b)
{0,<Número do Nó>}
Nós especificado na mesma rede. Pode ser usado como um endereço de origem.
(c)
{ -1, -1}
Propagação Limitada (Limited broadcast). Pode ser usado como um endereço de
destino, e um datagrama como este endereço nunca pode ser redirecionado para
rede externas.
(d)
{<Número da Rede>, -1}
Broadcast Direcionado para uma rede (todas as máquinas conectadas àquela rede)
Pode ser usado como um endereço de destino. D
(e)
{<Número da Rede>, <Número da Sub-Rede>, -1}
Ídem ao anterior, porém direcionado para a Sub-Rede especificada.
(f)
{<Número de Rede>, -1, -1}
Broadcast Direcionado a todas as sub-redes naquela rede. Somente pode ser usado
como um endereço de destino.
(g)
{127, <any>}
Endereço de Nó de Loopback Interno. Nunca deve aparecer fora do nó.
Exemplos:
1) Considerando os padrões de classes, identificar as classes e as redes dos endereços
IPs:
a) 120.1.2.3.4
b) 199.5.255.4
c) 160.255.255.8
d) 224.0.0.1
e) 150.163.128.16
2) Escreva os endereços acima considerando a notação de classless.
2 SUB-REDES E SUPER-REDES
Como vimos a máscara aplicada em um endereço IP de um nó, identifica a rede lógica que
aquele nó pertence. Vimos também a existência de máscaras padrões segundo as classes
de rede. O uso de máscaras independe da classe que aquele bloco (ou blocos) pretence(m)
A capacidade de endereçamento IP da Internet pode alcançar seus limites em breve. Isto foi
previsto em 1994, e foi pedido aos integrantes da Internet para adotar técnicas de
segmentação de redes. Com o crescimento da grande rede as tabelas de rotas também se
ampliaram gerando atrasos sensíveis nos sistemas de roteamento. Para contornar estes
problemas adota-se a técnica de segmentação (sub-redes) e fusão de redes contíguas
permitindo as super-redes.
Segmentar logicamente uma rede é dividi-la em novas redes lógicas aplicando máscaras
não convencionais, habilitando bits de menor ordem. Em outras palavras segmentar redes
96
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
significa habilitar bits (estado 1 à direita da máscara padrão) e fundir redes em desabilitar os
bits (estado 0 - zero - à esquerda da máscara padrão).
Exemplo:
1) Segmentar uma rede classe B em 2 sub-redes. Fornecer a nova máscara.
Partindo da máscara padrão para uma rede Classe B:
255.255.0.0
Dividindo a rede em 2 sub-redes, ou "deslocamento à direita de 1 bit"
(máscara padrão)
11111111 11111111 00000000 00000000
(máscara
após 11111111 11111111 10000000 00000000
segmentação)
=255.255.0.0
= 255.255.128.0
2) Qual o valor da máscara para uma super-rede resultante de 2 redes classe B
(contíguas)?
Partindo da máscara padrão para uma rede Classe B:
255.255.0.0
Unir as 2 redes em 1 super-rede ou "deslocar à esquerda o último bit da máscara"
(máscara padrão)
11111111 11111111 00000000 00000000
(máscara
após 11111111 11111110 00000000 00000000
união)
=255.255.0.0
= 255.254.0.0
Cabe lembrar a condição de endereço de identificação da rede e de broadcast não podem
ser esquecidos quando tratamos de redes que correspondem às classes A, B e C. Isto limita
a segmentação de redes até o bit 2 (inclusive) da máscara. Vamos considerar a máscara
padrão para a classe C.
255.255.255.0
Escrevendo o byte com o valor 0 na forma binária:
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
0
Para dividir em dois segmentos, este último byte apresenta-se:
7
1
6
0
5
0
4
0
3
0
2
0
1
0
0
0
7
1
6
1
5
0
4
0
3
0
2
0
1
0
0
0
Para 4 segmentos
Para 8 segmentos:
97
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
7
1
6
1
5
1
4
0
3
0
2
0
1
0
0
0
Ou seja, o número de segmentos está associado ao número de bits que estamos
preenchendo com valor 1. Assim, é possível deduzir que o número de segmentos (S) e o
número de bits deslocados (N) estão relacionados, por:
S = 2N
Isto é valido até que seja alcançado o bit 2 do último byte. Partindo da máscara padrão de
uma única rede da classe A , N < 23 (4194304 sub-redes com 2 nós); partindo da máscara
padrão de rede classe B, N<15 (16384 sub-redes com 2 nós), e para rede classe C : N<7
(64 sub-redes com 2 nós).
7
1
2.1
6
1
5
1
4
1
3
1
2
1
1
0
0
0
EXERCÍCIOS
3) Fazer o mesmo do exercício 1 para uma rede classe C
4) Idem ao 2 para uma rede classe C.
5) Identificar a máscara para segmentar uma rede classe C em 4 sub-redes
6) Identificar a máscara para criar uma super-rede de 4 redes contíguas da classe C.
7) Identificar os novos endereços de rede e broadcast para cada segmento de sub-rede e
das super-redes.
2.2
Exercícios para Laboratório:
Considere um conjunto de 4 máquinas que fazem parte de uma rede classe C.
1) Teste a conectividade destas máquinas (use o comando ping)
2) Calcule a máscara necessária para dividir a rede em 2 segmentos. Modifique a máscara
de duas das máquinas de modo que cada uma das selecionadas façam parte de uma subrede. Avise ao professor destas mudanças para que ele tome outras providencias de
configuração. Teste a conectividade lógica entre as máquinas de segmentos diferente e
entre uma máquina da rede padrão e a do segmento.
Descreva e explique os fatos ocorridos?
3 PROTOCOLOS ARP E RARP
Para explicar os protocolos ARP e RARP formulando duas perguntas:
98
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
•
•
Se 2 máquinas compartilham da mesma rede física, como é que uma conhecerá o
endereço ethernet da outra se a primeira só conhece o endereço Internet (IP) da
segunda?
Como uma máquina diskless consegue determinar seu endereço IP?
Para resolver estes problemas foram inseridos no TCP/IP dois protocolos de baixo nível.
Estes protocolos estão no limite inferior da camada IP e são conhecidos como ARP e RARP.
3.1
ARP (Address Resolution Protocol)
Uma forma de estabelecer o mapeamento entre endereço IP e endereço físico é o que
denominamos de mapeamento direto. Uma solução é tomar o hostid do endereço IP como
índice de uma tabela contendo o endereço físico da interface correspondente. Esta tabela
estaria armazenada em memória (permanente ou não) e seria carregada em memória em
tempo de boot.
Mas isto tem alguns inconvenientes, pois não é raro a atualização de placas de rede ou
mesmo o transporte de uma máquina para redes físicas diferentes, exigindo uma solução
mais dinâmica. Para resolver este problema os projetistas buscaram uma solução bem
simples, que lembra a capacidade de broadcast das redes Ethernet, e que evita problemas
de centralização de serviços e manutenção das tabelas de mapeamento. O protocolo
projetado denomina-se ARP (Address Resolution Protocol) e está fundamentado na
seguinte idéia:
Quando um Host A quer conhecer o Endereço físico de um Host B cujo endereço Internet
(IP) é conhecido, ele (Host A) envia um frame especial para a rede questionando qual o
endereço físico Fb do Host de endereço IPb. Todos os hostes receberão o pacote, mas
somente o próprio Host de endereço IPb responderá à solicitação com seu endereço
Ethernet. A partir de então, o host A poderá enviar pacotes diretamente para o host B
usando o endereço físico informado.
Desta idéia elementar, surgiram otimizações:
-
-
3.2
Ao enviar um pacote para o host de destino em frames de broadcast, o transmissor já
envia as informações sobre si mesmo, prevendo a continuidade da comunicação,
evitando a solicitação em sentido contrário.
Todas as respostas são armazenadas em memória. Assim, antes de enviar um novo
frame ARP, o host verifica o IP do destinatário em suas tabelas. O pacote com frame de
broadcast só será enviado caso não encontre qualquer referencia ou associação entre
endereço IP e endereço ethernet.
RARP (Reverse Address Resolution Protocol)
99
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
A resposta da segunda pergunta está no uso de máquinas que prestam serviço de RARP. A
idéia é a mesma do ARP, ou seja, por broadcast. Uma estação diskless (sem disco) envia
para o meio físico um frame tipo broadcast solicitando seu IP. Todas as máquinas que
compartilham daquela rede física recebem o frame. Apenas as que prestam serviço RARP
responderão a solicitação. A resposta estará em função do endereço ethernet informado. Há
serviços alternativos ao RARP, conhecidos como BOOTP e DHCP.
3.3
A FORMA DA MENSAGEM ARP ou RARP
Uma mensagem ARP tem a forma apresentada pela figura abaixo. Os números indicam a
ordem do campo no frame e não a identificação do bit do campo.
Onde
HARDWARE TYPE
Especifica o tipo da interface de onde se busca a informação.
Para interface Ethernet o valor é 1.
PROTOCOL TYPE
é o tipo de endereço do protocolo de maior nível. O valor é
080016 para o protocolo IP.
HLEN
é o tamanho do endereço de hardware (físico)
PLEN
É o tamanho do endereço IP. Com estes dois campos HLEN e
PLEN, é possível coletar informações de qualquer tipo de rede.
OPERATION
Define o tipo de operação:
1 - Requisição ARP,
2 - Resposta ARP,
3 - Solicitação RARP,
4- Resposta RARP.
SENDER HA
É o endereço de hardware do solicitante
SENDER IP
É o endereço IP do solicitante
100
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
TARGET HA
É o endereço de hardware da máquina de destino (RARP)
TARGET IP
É o endereço IP da máquina de destino (RARP).
Quando o frame (quadro) chega ao destino, esta máquina lê a informação dos campos
correspondentes ao emissor e retorna o pacote com suas informações.
3.4
EXERCÍCIOS:
1) Ao ligar o seu equipamento, verifique a tabela de endereços físicos através do comando
" arp -a" (sem as aspas).
2) Selecione uma outra máquina da mesma rede física e repita o comando. Agora, de uma
destas máquinas mande um pacote ICMP (PING) para a outra máquina. Verifique as
tabelas de ARP das duas máquinas.
3) Pesquise as RFCs que comentam sobre o ARP e RARP.
4 PROTOCOLO IP
O protocolo IP é um mecanismo utilizado para o envio de datagramas. Este mecanismo
apresenta as seguintes características:
•
•
•
É não confiável (não há garantias de recebimento). Um pacote pode ser
pedido, se atrasar, ser enviado fora de ordem, sem que exista uma forma de
detectar este tipo de condição nesta camada.
É não orientado à conexão, pois cada datagrama é tratado de forma
independente um do outro;
É dito "best-effort delivery" porque o software se esforça no envio do
datagrama, ou seja, somente descartará o datagrama após tentar todos os
recursos possíveis.
O protocolo IP proporciona 3 definições importantes:
•
•
•
A unidade de transferencia de dados, os datagramas, tem uma forma exata.
Realiza a função de roteamento
Informa, de alguma forma, como os nós (hosts e roteadores) devem tratar o
datagrama, quando as mensagens de erro devem ser geradas, e em quais
condições um datagrama deve ser descartado.
101
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
4.1
O FORMATO DE UM DATAGRAMA IP
Considerando a ordem de envio dos bits, o formato do datagrama IP é:
onde:
VER
versão do protocolo IP. Este campo de 4 bits tem o valor
=4 (IPv4)
HLEN
Tamanho do cabeçalho em palavras de 32 bits. O
menor valor é 5 (sem opções IP ou padding)
SERVICE TYPE
Ou TOS (Type of Service), é um campo de 8 bits
composto por:
0
1
2
3
4
5
PREFER
D
T
R
6
7
SEM USO
PREFER - Especifica a preferencia/prioridade do
datagrama sobre outros. Admite os seguintes valores:
111 - Network Control (Controle de rede local)
110 - Controle de Internetwork
101 - CRITIC/ECP (É um datagrama Crítico)
100 - Flash Override (mais rápido apagando o pacote
anterior)
011 - Flash (mais rápido)
010 - Imediato
001 - Alguma Prioridade
000 - Rotina (Normal)
102
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
Esta preferencia deve ser tratada adequadamente. O
controle destas preferencias deve ser feito localmente.
D: 0 = Normal , 1 = Reduzir o atraso.
T: 0 = Throughput Normal, 1 = Alto Throughput.
R: 0 = Confiabilidade Normal , 1 = Alta Confiabilidade.
Bit 6-7: Reservado para uso futuro (não informado).
Selecionar os BITS D,R e T não significa melhorar o
desempenho geral daquela rede. Em alguns casos,
selecionar um deles implica na deterioração de outro
recurso.
TOTAL LENGTH
É o tamanho daquele datagrama, incluindo os dados.
(não se trata do tamanho de um datagrama original,
caso tenha sido fragmentado)
IDENTIFICATION
É uma identificação do datagrama. No caso de uma
fragmentação do datagrama, esta ID é COPIADA para
cada fragmento
FLAGS
É um conjunto de flags de fragmentação:
BIT
0
1
2
VALOR
0
DF
MF
O bit 0 é sempre 0. É reservado.
DF = 0, datagrama pode ser fragmentado,
= 1, o datagrama não pode ser fragmentado
MF =0, sinaliza que este datagrama é o último de uma
fragmentação;
=1, sinaliza que há mais fragmentos em relação
ao datagrama original.
FRAGMENT OFFSET
é medido em unidades de 8 octetos (64 bits). O primeiro
fragmento tem offset=0. Representa a posição do
primeiro octeto de dados no pacote de referencia
(original). Exemplo: Tamanho de dados de um
datagrama é 1500 e seja necessário atravessar uma
rede com MTU de 700. Primeiro fragmento contém 700
(OFFSET = zero), o segundo contém os próximos 700
(OFFSET = 700) e o último contém 100 (OFFSET =
1400)
TIME TO LIVE
Este campo indica o tempo máximo de vida do
datagrama tem para permanecer no sistema. Se contém
um valor zero, então o datagrama deve ser destruído e
103
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
deve ser enviado para a origem do datagrama uma
mensagem de erro . Este campo tem seu valor reduzido
de pelo menos 1 unidade todas as vezes que for
processado, mesmo que o tempo de processamento de
roteamento seja inferior a 1 segundo. O TTL é um limite
superior de tempo de vida de um datagrama. O objetivo
é descartar o datagrama no caso dele não conseguir ser
enviado para o destino.
PROTOCOL
Especifica o tipo do protocolo que contém os dados,
conforme os valores definidos em RFC1700 ou mais
atual (Assigned Numbers)
HEADER CHECKSUM
Considerando este valor inicialmente zero, tratando o
cabeçalho como uma seqüência de 16 bits. Ver RFCs
1071, 1624 e 1141
SOURCE IP ADDRESS
Endereço IP de origem
DESTINATION IP ADDRESS
Endereço IP de destino
IP OPTIONS
O campo IP OPTIONS tem um tamanho variável e
depende das opções selecionadas. Algumas opções
tem um tamanho de 1 octeto enquanto outras tem um
tamanho variável. Quando as OPÇÕES IP estão
presentes no datagrama, elas aparecem de forma
contínua, sem qualquer separador entre elas. Cada
opção consiste de um simples octeto que pode ser
seguido por um ou mais octetos de dados daquela
opção. O octeto de código de opções é dividido em 3
campos:
BIT
0
CAMPO
CP
CP
1
2
CLASSE
3
4
5
6
7
NÚMERO OPÇÃO
É um flag que controla como os roteadores
tratarão as opções durante a fragmentação. se
CP =1 então o a opção deve ser copiada em
todos os fragmentos, Se 0 (zero), então a opção
é copiada somente para o primeiro fragmento.
CLASSE
DE
OPÇÃO
104
N.º da
Opção
N.º de
octetos
Descrição
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
0
0
-
0
1
-
0
2
11
0
3
variável
0
7
variável
0
8
4
0
9
variável
2
4
variável
Fim da lista de opções.
Usado se as "opções"
não terminarem no
final do cabeçalho (Ver
PADDING)
Sem operação (usado
para alinhamento dos
octetos numa lista de
opções).
Restrições de
segurança e
tratamento (para
aplicações militares)
Roteamento livre.
Usado para rotear um
datagrama através de
um caminho
específico.
Neste caso, a rota
fornecida deve ser
seguida, mas pode
acontecer de existir
alguns roteadores
intermediários que não
constam na lista.
Registro de rota.
Usado para traçar rota.
(Obsoleto) Era usado
em redes SATNET
como um identificador.
Roteamento forçado.
Usado para rotear um
datagrama através de
um caminho
especificado. Neste
caso, o roteamento
deve seguir a lista de
rotas com rigor.
Internet Timestamp.
Usado para registrar
os tempos dos
roteamentos
Um exemplo de campo de Opções:
ROTEAMENTO
Registro de rota livre - Cada roteador deve inserir seu IP
na lista, após verificar se existe campo livre para isto,
através dos campos de comprimento e do apontador.
105
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
Estas e outras opções podem ser encontradas com
detalhes nas RFCs 760 e 791
PADDING
O campo PADDING é preenchido com ZEROS até
completar os 32 bits quando o campo IP OPTIONS
apresentar um tamanho inferior.
DATA
O campo DATA possui o pacote do protocolo de
transporte usado (UDP, TCP, ICMP, etc)
Os campos IP OTIONS e PADDING não são necessários em todos os datagramas IP.
4.2
FRAGMENTAÇÃO E REMONTAGEM DOS DATAGRAMAS
O tamanho de um datagrama depende da tecnologia empregada no meio físico. Uma rede
Ethernet, por exemplo, limita o tamanho dos dados de um frame em 1500 octetos. Quando
usando com um cabeçalho SNAP o padrão é 1492 octetos. Uma rede FDDI permite 4470
octetos de dados por frame. Estes limites são denominamos de MTU (Maximum Transfer
Unit). Ao atravessar redes físicas diferentes com MTUs diferentes, o datagrama deve ser
divido em partes ou fragmentos. O processo de dividir o datagrama é conhecido por
FRAGMENTAÇÂO.
106
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
Uma vez que um datagrama foi fragmentado, os fragmentos continuarão isoladamente até o
destino e será remontado lá (só no destino!)
Na fragmentação, cada parte receberá um cabeçalho próprio, podendo conter campos do
cabeçalho original e acrescido de informações que permitirão a sua remontagem. Estas
informações consistem dos campos IDENTIFICATION, FRAGMENT OFFSET, e FLAGS
bem definidos. Caso o flag de "não fragmentar" estiver definido (DF=1) e for necessário uma
fragmentação, o datagrama é descartado e o remetente receberá uma mensagem de erro
(normalmente via ICMP).
5 ROTEAMENTO IP
Denominamos de ROTEAMENTO o mecanismo de escolha de um caminho usado para
enviar pacotes. Roteador é um equipamento com capacidade de realizar esta função. Uma
máquina pode ser um roteador. Encontramos, também roteadores dedicados.
Como vimos, o datagrama IP contém em seu cabeçalho, dentre outras informações, o
endereço IP de destino. Vimos, também, que um endereço IP pode ser desmembrado em
um endereço de rede e endereço do nó naquela rede através da uma operação lógica
envolvendo uma máscara. Vimos, ainda, que o cabeçalho de um frame encontramos os
endereços físicos de um nó.
O Roteamento IP é, portanto, o mecanismo utilizado para transferir datagramas IP entre
interfaces após uma análise dos cabeçalhos destes datagramas selecionando um melhor
caminho (sob algum aspecto). A implementação de roteamento se localiza na camada de
rede.
Sob este ponto de vista, qualquer máquina conectada à rede física estabelece algum tipo de
roteamento. Vejamos o por quê!
5.1
ENVIO DIRETO
Para definir Envio Direto, Comer (1995, Vol.1, página 111) resume:
Transmission of an IP datagram between two machines on a single physical
network does not involve routers. The sender encapsulates the datagram in
a physical frame, binds the destination IP address to a physical hardware
address, and sends the resulting frame directly to the destination.
Ou seja,
A transmissão de um datagrama IP entre 2 máquinas em uma única rede física não envolve
roteadores. A máquina responsável pelo envio, encapsula o datagrama num frame físico,
acopla o endereço IP de destino ao endereço físico do hardware, e envia o frame resultante
diretamente para o destino.
107
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
Apesar de não ser um especialista de expressão como o Dr. Comer, que certamente
explicaria esta afirmação de melhor modo que será apresentada aqui, gostaria de tecer
alguns comentários sobre esta afirmação. Isto não é uma crítica! É apenas um ponto de
vista.
A afirmação do Dr. Comer é válida desde que naquela rede física exista apenas uma rede
lógica IP e que o envio use recursos diretos da camada de interface. Vejamos o porquê. A
grande maioria das máquinas com TCP/IP implementam algum algoritmo de roteamento
baseado na rede de destino. O princípio básico do roteamento, neste caso, consiste na
análise do endereço IP de destino (parcela de rede de destino) em relação ao endereço IP
de origem (parcela de rede da origem). Caso estas partes resultem em valores diferentes, o
datagrama IP deve ser enviado para um roteador. Assim, de uma forma genérica (qualquer
tipo de roteamento) não basta só o compartilhamento da mesma rede física. É preciso uma
condição mais ampla e a afirmação deve ser interpretada na forma:
A transmissão de um datagrama IP entre 2 máquinas em uma única rede (física + lógica IP)
não envolve roteadores. A máquina responsável pelo envio, encapsula o datagrama num
frame físico, acopla o endereço IP de destino ao endereço físico do hardware, e envia o
frame resultante diretamente para o destino.
OBS: Uma aplicação que trabalha com acesso direto para envio em baixo nível (frame)
estabelece um "by-pass" da pilha IP. Desta forma, a possibilidade de envio direto
torna-se possível, mesmo em redes lógicas diferentes. As aplicações "normais" não
são capazes disto pois estariam fazendo um by-pass na camada de rede e
transporte.
O protocolo ARP carrega os endereços físicos que pertencem à mesma rede física. A
questão não está na montagem do frame, mas antes da montagem do datagrama IP para o
envio. Assim, dispensar roteadores em redes lógicas diferentes em uma mesma rede física
requer "truques" de máscara na inicialização de um sistema. Este "truque" era possível em
sistemas mais antigos baseados no BSD4.2. O "truque" consiste na modificação da máscara
de rede, em tempo de inicialização do sistema, para um valor tal que as duas redes lógicas
diferentes possam ser consideradas uma única rede lógica, e depois, retornar a máscara
para os valores "nominais" (padrão). Exemplo: Sejam as redes A e B com da classe C,
192.168.254.0 e 192.168.128.0. Em condições normais as máquinas de uma rede não são
capazes de enviar um datagrama IP diretamente para máquinas de outra rede. Porém,
modificando a máscara padrão para 255.255.0.0 temporariamente, isto torna possível, pois
estas duas redes teriam o mesmo IP de identificação de rede (em caso de dúvida rever item
2)
Uma outra forma, bem mais simples, é explorar a capacidade de roteamento encontrado no
TCP/IP, definindo a segunda rede lógica na Tabela de Roteamento. Neste caso todas as
máquinas usam a capacidade de roteamento (tabelas), embora não possam agir como um
roteador.
Foi realizado alguns testes de envio direto. O teste consiste em estabelecer a conexão entre
máquinas de redes lógicas diferentes que compartilham da mesma rede física em uso e
roteadores externos.
108
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
Foram usadas máquinas com hardware semelhantes, compatível com o IBM-PC,
executando Windows NT Server 4, Windows NT Workstation 4 (os dois com ServicePack
6a), e Linux (Kernel 2.2.13, distribuição RedHat). Todas as máquinas executavam somente
o protocolo de rede TCP/IP. Um mesmo teste foi repetido para as várias combinações de
Sistemas Operacionais. As condições de configuração para os testes estão resumidas no
anexo deste capítulo.
CONCLUSÕES DOS TESTES
1. O ARP não é usado para decisões de roteamento
2. O "envio direto" está sujeito ao procedimento que implementa algum roteamento
interno.
O envio direto, literalmente, só existe na conexão lógica entre as máquinas quando o
roteamento interno contém informação adequada da tabela de rotas, quer seja por rota
default ou de rede específica.
No envio de um datagrama IP, o roteamento USA a tabela de ARP para a criação do frame,
embora isto só ocorra depois de um roteamento interno. No recebimento, a interface
reconhece o endereço MAC mas não é capaz de entregar o datagrama IP para a camada de
rede.
O envio direto sem roteadores (qualquer tipo) não é aplicável em condições normais (sem
uso de rotas) ou seja, somente considerando a rede física.
O roteamento IP interno existe e é o responsável pelo funcionamento adequado do TCP/IP
no envio e recebimento de datagramas IP. Sem ele, o envio direto é impossível, exceto em
aplicações especiais que pulam o roteamento IP.
Portanto, se EXISTE roteamento interno então existe roteador interno e é usado tanto no
recebimento quanto no envio de um datagrama IP (Os detalhes de como isto é
implementado será discutido em CAP312), ou seja, qualquer máquina com TCP/IP contém
algoritmos de roteamento e agem como um roteador interno.
PROPOSTAS:
1)
Isto é válido para outras implementações do TCP/IP (outros sistemas operacionais),
tipo SunOS, OpenVMS com pilhas TCP/IP UCX e Multinet, AIX, HP-UX?
2)
Uma aplicação para o "envio realmente direto", pulando o roteamento teria sucesso?
109
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
5.2
ENVIO INDIRETO
O envio indireto resume no fato de exigir a identificação de um roteador para onde o
datagrama deverá ser enviado. O roteador, então, redirecionará aquele datagrama para a
rede de destino. Neste caso, como um roteador saberá para onde enviar o datagrama?
5.3
ROTEAMENTO IP POR TABELAS
Também conhecida como Tabela de Roteamento Internet, este tipo de roteamento consiste
na busca da rede de destino em tabelas de rotas, e está presente em hosts e em
computadores "normais". Estas tabelas consistem de um número de rotas de, no mínimo,
equivalente ao número de redes lógicas conectadas ao roteador. A tabela não armazena
"todas as rotas possíveis" (host por host), apenas a parcela de identificação da rede
do endereço IP dos nós daquele segmento lógico e as máscaras correspondentes, ou
seja (rede por rede).
Surge, daí, uma nova questão: Como as tabelas são criadas ou mantidas?
A tabela de rotas é mantida manualmente (rota estática) ou através de protocolos especiais:
RIP (Routing Information Protocol), BGP (Border Gateway Protocol), GGP (Gateway-ToGateway Protocol), EGP (Exterior Gateway Protocol), OSPF (Open Shortest Path First); ou
mesmo através de protocolo mais simples: ICMP (Internet Control Message Protocol). Cada
um desses protocolos são específicos para certas situações. Não vamos entrar em detalhes
de cada um destes protocolos. Estudaremos técnicas que permitirão analisar as
especificações deles e casos de roteamento, cuja solução pode ser o uso de um ou um
conjunto destes protocolos.
No envio direto fizemos uma observação sobre o uso de tabelas quando temos duas (ou
mais) redes lógicas numa mesma rede física. Conforme a afirmação do Dr. Comer, e os
comentários seguintes, o envio direto torna-se possível sem uso de roteadores externos,
mas com o uso da capacidade de roteamento embutida no TCP/IP em cada máquina,
alimentando a tabela de rotas manualmente e usando o endereço IP da interface existente
como gateway. Neste caso não estamos usando "roteadores externos", mas estamos
usando o sistema de roteamento interno. Eis um relatório deste teste.
5.4
ROTEAMENTO TIPO "NEXT-HOP"
A idéia consiste em enviar o datagrama para o roteadores conectados diretamente naquela
rede.
110
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
O roteador R1 trabalha com as seguintes informações:
Para alcançar nós
na rede
192.168.30.0
192.168.50.0
192.168.127.0
192.168.160.0
Enviar o datagrama para
este endereço
Enviar direto
Enviar direto
192.168.30.91
192.168.50.200
Ou seja, decidir caminhos usando somente a identificação da rede reduz o tamanho das
tabelas e traz algumas conseqüências:
1. Todo o tráfego destinado para uma dada rede usa o mesmo caminho. Num caso
onde existe um segundo caminho, eles não podem ser usados concorrentemente,
mesmo que existam atrasos ou diferenças de velocidade do meio físico entre tais
caminhos.
2. Somente o roteador final é capaz de enviar o datagrama diretamente para o host de
destino e verificar se o host está operacional ou não. Neste caso, este roteador deve
possuir mecanismos para avisar a origem do datagrama sobre eventuais problemas
de conexão (se host de destino não existe ou não está operacional). Como veremos,
este mecanismo pode ser estabelecido pelo protocolo ICMP.
3. Na presença de mais de uma rota, e neste caso elas não podem ser concorrentes,
podemos ter caminhos diferentes para um datagrama enviado por um host A para
um B e um datagrama enviado do host B para o host A. Assim, os roteadores devem
garantir a comunicação nos dois sentidos. Olhando para a figura anterior, podemos
questionar: Como fica a tabela dos roteadores R2 e R3? As máquinas das redes
192.168.160.0 e 192.168.127.0 apontam para onde?
111
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
5.5
ROTA PADRÃO
A idéia é ter um software de roteamento que, primeiro, procure a rede de destino na tabela
de rotas. Caso não a encontre, as rotinas de roteamento enviam o datagrama para uma
porta do roteador padrão.
Este roteador agirá da mesma forma. Ele buscará em suas tabelas de rotas a rede de
destino. Caso não encontre o datagrama IP é enviado para o roteador posterior (ou o seu
roteador padrão). Isto vai acontecer até que ou o datagrama alcance o seu destino ou seja
descartado por algum roteador intermediário. Antes de descartar o datagrama este roteador
enviará à origem do datagrama um "recado" dizendo que aquela rede ou nó não foi
alcançado.
Tal rota pode ser aprendida (propagada) através de protocolos tidos como protocolos de
roteamento (RIP, RIP2, OSPF, BGP, etc).
5.6
ROTAS ESPECIFICAS DE HOSTS
O uso de rotas baseando "por nó" dá um maior controle administrativo sobre o uso da rede,
mas aumenta o tamanho das tabelas. Há alguns casos que este tipo de roteamento torna-se
absolutamente necessário. É quando uma máquina (H1) estabelece o roteamento entre a
rede física contínua e uma segunda máquina.
Neste caso, a tabela de R1 será :
112
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
Para alcançar hosts na rede
192.168.30.0
192.168.50.0
192.168.127.0
192.168.160.0
192.168.50.21
5.7
Enviar o datagrama para este endereço
Enviar direto (interf. 192.168.30.140)
Enviar direto (interf. 192.168.50.87)
192.168.30.91
192.168.50.200
192.168.50.10
ROTEAMENTO ENVOLVENDO SUB-REDES E SUPER-REDES
Até então, neste estudo de roteamento IP, consideramos as redes seguindo as respectivas
classes (A, B, C). Contudo, ao considerar o roteamento entre sub-redes e super-redes, as
informações constantes da tabela acima não são suficientes. A informação que falta é,
justamente, a máscara da rede. No caso de um roteamento para um Host especifico,
usamos a máscara de host (255.255.255.255).
A tabela de rotas deve ser escrita, na forma:
Para alcançar
hosts na rede
Net-IPd
192.168.30.0
192.168.50.0
192.168.127.0
192.168.160.0
192.168.50.21
192.168.75.0
192.168.75.128
Máscara de Rede
NETMASK
255.255.255.0
255.255.255.0
255.255.255.0
255.255.255.0
255.255.255.255
255.255.255.128
255.255.255.128
113
Enviar o datagrama
para este endereço
(hop)
Enviar direto
Enviar direto
192.168.30.91
192.168.50.200
192.168.50.10
Enviar direto
Enviar direto
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
Para o roteamento é OBSERVADO o endereço IP do destino. Vamos entender este
OBSERVADO. Digamos que uma máquina da rede 192.168.50.22 (M-50-22) queira enviar
um datagrama IP para a máquina 192.168.127.10 (M-127-10). Vamos viajar com este
pacote para entendermos como isto "funciona". A tabela acima é propagada de alguma
forma (protocolo RIP, por exemplo) para todas as redes diretamente conectadas à R-1. A
máquina M-50-22 faz parte da rede 192.168.50, que recebe esta informação e armazena em
sua memória. Agora ela quer enviar um pacote para M-127-10. Ao consultar a tabela, ela
reconhece que o datagrama IP deve seguir para o roteador R-1. Imaginemos o seguinte
diálogo de laboratório:
Qual endereço IP de destino ela vai inserir no datagrama IP?
É o endereço de destino do pacote! De M-127-10 (192.168.127.10).
Como ela enviará para o destino se ela não sabe onde isto fica?
Uma das formas, sem ajuda de outros protocolos, é o envio do pacote para a rede
(lembram do ARP?) com endereço de broadcast num frame (que carregará aquele
datagrama). Ou seja TODAS as máquinas vão ler o frame.
Uma oura forma é questionar "quem tem o endereço ethernet de M-127-10?"
Neste caso a resposta não será atendida pois a máquina M-127-10 está muito além dos
roteador R-1. Mas R-1 tem uma interface na mesma rede física de M-50-22. Ele também
recebe o datagrama IP encapsulado num frame com endereço ethernet de destino contendo
um valor de broadcast. Ele, R-1, não sabe interpretar o Ethernet, mas sim o IP. Então, R-1,
leva o pacote para a camada IP e identifica o destino (M-127-10).
Será que ele, R-1, possui informações sobre a rede 192.168.127.0?
Ele consulta sua tabela e lá está ela. No caso no terceiro registro.
Para onde ele deve enviar?
Pela tabela ele obtém o endereço 192.168.30.91.
E R-1 pergunta: " Eu, R-1, tenho a rota para 192.168.30.91?".
O software de roteamento responde: "Para a máquina não, mas para a rede 192.168.30.0
sim! Pela tabela, basta enviar aquele datagrama diretamente para a interface
correspondente à rede 192.168.30.0". Caso ele saiba o endereço Ethernet da máquina
192.168.30.91 então está resolvido! Basta inserir o datagrama IP, que veio de M-50-22, num
frame contendo o endereço ethernet de destino de 192.168.30.91 e enviar para a rede física
(Envio direto).
E se R-1 não sabe?
Ele pergunta: "Quem tem o endereço de ..." e aí ele fica sabendo (via ARP, lembram?
192.168.30.91 está na mesma rede física que uma de suas interfaces). Este frame viaja
114
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
para 192.168.30.91 e lá, em R-2, repete-se o procedimento (perguntas). Só que, agora, R-2
tem uma interface conectada diretamente à rede 192.168.127 e a máquina de destino, cujo
endereço consta no datagrama IP, faz parte de uma das redes físicas onde R-2 está
conectado. Então, numa rede, o ARP de broadcast estará presente enquanto as máquinas
que estabelecem uma comunicação não conhecerem TODOS os endereços (IP e MAC) da
outra.
O que? Isto gera tráfego demais, não?
Sim! Gera! Mas reparem que é só para o primeiro datagrama IP. Até ele chegar ao destino
pela "primeira vez". Quando houver uma resposta daquele datagrama ou seguir uma nova
solicitação nenhuma pergunta será feita, pois são conhecidos os endereços (MAC e IP) dos
roteadores e máquinas vizinhas usadas no envio e recebimento dos datagramas.
Tudo isto pode ser observado quando usamos aplicações tipo TCPDUMP. Então? Gostaram
da viagem? Mais uma perguntinha para não ficar, assim, no "vazio"!!!!
E como é o procedimento de busca das rotas no roteamento?
5.8
ALGORITMO DE ROTEAMENTO
Considerando tudo o que já foi visto até então, o algoritmo de roteamento IP é:
ROTEAMENTOIP(DATAGRAMA, TABELA_DE_ROTAS)
1. EXTRAIR O ENDEREÇO IP DO DESTINATÁRIO, IPD, DO DATAGRAMA.
2. CALCULAR O NETID CORRESPONDENTE, NET-IPD USANDO MÁSCARA PADRÃO.
3. SE NET-IPD É IDENTICO AO ENDEREÇO DE ALGUMA REDE CONECTADA
DIRETAMENTE AO ROTEADOR ENTÃO ENVIAR O DATAGRAMA PARA AQUELA
REDE (ISTO REPRESENTA TRADUZIR O ENDEREÇO IP PARA O ENDEREÇO FÍSICO,
ENCAPSULAR O DATAGRAMA NO FRAME E ENVIAR O FRAME)
4. SE A TABELA CONTÉM UMA ROTA ESPECIFICA PARA IPD ENTÃO ENVIAR O
DATAGRAMA PARA O ENDEREÇO IP ESPECIFICADO NA TABELA
5. PARA CADA ENTRADA NA TABELA DE ROTAS FAÇA:
I. CALCULAR, IPDM,FUNÇÃO LÓGICA AND ENTRE O IPD E A NETMASK
II. SE IPDM É IGUAL AO CAMPO NET-IPD DA TABELA ENTÃO ENVIAR O
DATAGRAMA PARA O IP ESPEFICIADO (OU DIRETAMENTE PARA A REDE)
6. SE NÃO FOR ENCONTRADO NENHUMA ROTA ENVIAR PARA A ROTEADOR PADRÃO
(ROTA DEFAULT)
7. NÃO EXISTINDO ROTA DEFAULT DECLARAR ERRO DE ROTEAMENTO.
Leituras recomendadas: RFC1009, RFC1102, RFC1104, RFC1124 e RFC1716.
115
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
5.9
EXERCÍCIOS
1) Veja as rotas na tabela de seu computador usando o comando "route" (Unix). No
Windows, comande "route print" para ver a tabela de rotas.
2) Faça um teste de roteamento envolvendo duas redes lógicas diferentes compartilhando
uma mesma rede física.
6 PROTOCOLO ICMP
Será que tudo está funcionando bem? Nenhum sistema funciona bem todo o tempo.
Acontecem falhas de processamento, falhas nas linhas de comunicação, tráfego excessivo.
etc.
6.1
FINALIDADE
O ICMP (Internet Control Message Protocol) é um mecanismo de reportagem de erro que
acontece entre uma máquina (nó ou roteador) e o nó de origem que tomará alguma ação
corretiva.
O ICMP não é considerado um protocolo de transporte, embora use o IP para alcançar um
destino (o ICMP está encapsulado no IP), atravessando várias redes físicas. Conforme
veremos, ele não apresenta um protocolo de portas, mas se tratarmos os campos TIPO +
CÓDIGO como uma "espécie de protocolo de porta" (porta de destino) poderíamos
considerá-lo como um protocolo de transporte realizando sua finalidade de suporte ao
protocolo IP. O ICMP é necessário para que o IP funcione corretamente.
6.2
FORMATO DA MENSAGEM ICMP
O cabeçalho ICMP tem um formato específico para cada tipo de mensagem. Contudo, todo
cabeçalho tem os 3 primeiros campos com o mesmo tamanho em bits. Os valores dos dois
primeiros campos definem o objetivo da mensagem ICMP.
116
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
CAMPO TIPO:
Este campo define o objetivo da mensagem e o formato dos campos: "campo 1", "campo 2"
e "campo 3".
As RFCs 1122 (atualização) e 792 descrevem, em detalhes, os campos para cada um dos
tipos citados. Os diagramas e as descrições serão revistas em detalhes no curso de
programação (CAP312).
Caramba! Este protocolo é do tipo "macabro"! Só leva/traz noticias ruins! (:(((
Não! Nem tudo é terror (quando bem usado, evidentemente!). Através do ICMP é possível
atualizar rotas e reconhecer o caminho feito por um datagrama IP até o destino final. Veja a
tabela:
VALOR DO
CAMPO
TIPO
0
3
OBJETIVO DA
MENSAGEM
Replicar Eco
Destino Não Alcançável
VALOR DO CAMPO
CÓDIGO
0
0
1
2
3
4
5
6
7
8
9
10
11
12
4
Source Quench
0 (Ver RFC 896 e 1016)
0
5
8
11
Redirecionamento
(mudança de rota)
Requisitar Eco
Tempo do Datagrama
Excedeu
Rede Não Alcançável
Nó Não Alcançável
Protocolo Não Alcançável
Porta Não Alcançável
É necessário Fragmentação e DF=1
Falha na Rota de origem
Rede de Destino Desconhecida
Nó de Destino Desconhecido
Rota de Origem Isolada
Comunicação com a rede de destino está
proibida administrativamente
Comunicação com o nó de destino está
proibida administrativamente
Rede Não Alcançável para o TOS
informado
Nó Não Alcançável para o TOS informado
1
2
3
0
0
1
117
Redirecionar Datagrama por Rede
(obsoleto)
Redirecionar Datagrama por Nó
Redirecionar Datagrama por TOS e Rede
Redirecionar Datagrama por TOS e Nó
Contador TTL excedido
Tempo de remontagem de fragmento
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
0
12
13
14
15
16
17
18
Problema de Parâmetros
no Datagrama
Requisita Timestamp
Resposta de Timestamp
Requisita Informação
(obsoleto)
Resposta de Informação
(obsoleto)
Requisitar Endereço de
Máscara usada
Resposta da requisição do
endereço de máscara
1
0
0
excedido
O Apontador mostra o problema do
cabeçalho IP
Problema desconhecido com o Cabeçalho
IP
(RFCs: 956, 967 e 1305)
0 ( RFC 950)
0
7 PROTOCOLO DE PORTAS
Quando pressionamos o botão do mouse sobre um ícone numa janela, ou mesmo
acionamos um programa digitando seu nome, é como se estivéssemos estabelecendo um
canal de comunicação entre o computador e o operador. No caso de um ícone, por exemplo,
não é óbvio a identificação do programa (nome do aplicativo) que será executado, mas a
finalidade sim. (O objetivo é este!)
Temos a impressão de que o ícone da aplicação está ali esperando para ser acionado,
como uma porta para aquela aplicação.
Em termos de protocolo de transporte TCP/IP, estamos associando "atividades" às portas de
serviços, ou seja, estamos usando portas para identificar "um conjunto de atividades" num
mesmo protocolo de transporte. Denominamos esta abstração de protocolo de portas.
Da mesma forma que em um sistema "janelado" quando abrimos uma aplicação tipo "linha
de comando" ela fica aguardando a entrada das instruções pelo teclado, as aplicações
TCP/IP, com recursos disponíveis pelo Sistema Operacional, implementam o aceso às
portas de forma síncrona. Ou seja , o S.O. bloqueia a execução daquela aplicação até que
os pacotes cheguem. Normalmente as portas representam filas ou regiões temporárias de
memória (buffers), porém os dados serão perdidos caso cheguem antes que um processo
esteja pronto para recebe-los. Para reter tais pacotes, o software envia aqueles dados para
uma porta específica (associada àquela uma aplicação) até que eles sejam extraídos. De
uma forma mais técnica o protocolo de portas corresponde à filas de execução e cada fila
representa uma atividade, ou uma aplicação, que processará os dados daquela fila. Assim,
podemos ter 2 aplicações diferentes usando uma mesma porta, mas usando protocolos de
transporte diferentes.
118
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
Para que seja possível uma resposta, é preciso conhecer a porta de onde partiu aquele
dado, assim como o endereço IP. Assim, para que uma comunicação se estabeleça e a
transferencia de dados ocorra, cada mensagem deve carregar as portas de destino e de
origem. Os endereços de destino e de origem já estão embutidos no datagrama IP enquanto
as portas nos cabeçalhos do protocolo de transporte.
Sob um ponto de vista técnico, os protocolos de transporte UDP e TCP implementam o
conceito de multiplexação e demultiplexação das aplicações baseado nas portas.
Quando o protocolo de transporte (TCP ou UDP) recebe um datagrama, ele verifica se
aquele número de porta está em uso (se existe alguma aplicação correspondente associada
àquela porta). Caso exista ele envia o datagrama para aquela fila. Caso contrário, ele envia
uma mensagem ICMP tipo "porta não alcançável" (port unreachable, ICMP campo=3,
código=3) para o remetente e descarta o datagrama. No caso da fila estar cheia o pacote é,
simplesmente, descartado.
8 PROTOCOLO UDP
O protocolo UDP (User Datagram Protocol) usa o IP para transportar mensagens
implementando, apenas, o recurso de portas. Ou seja, uma aplicação que usa UDP aceita
toda a responsabilidade para manipular e controlar problemas de confiabilidade de envio,
ordenação de pacotes, controle de duplicação, ou perda de conectividade. Normalmente, ao
desenvolvermos alguma aplicação que usa o UDP testamo-la em um ambiente de rede
local. Uma aplicação UDP aplicável para a grande rede (a Internet), deve implementar os
mecanismos de controle e manipulação, caso contrário ela está sujeita à falhas.
8.1
FORMA DAS MENSAGENS UDP
As mensagens UDP são denominadas datagramas de usuário (user datagram). Um
datagrama UDP consiste de 2 partes: cabeçalho UDP e dados UDP. O cabeçalho UDP
contém 4 campos onde são informadas as portas de origem e destino, o tamanho da
mensagem e o checksum UDP, conforme a figura abaixo:
119
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
A porta UDP de origem é opcional. Esta porta é usada para a aplicação de destino retorne
alguma informação para a aplicação da máquina de origem e deve ser zero quando não for
usada. (Pensando nisso é que o protocolo ICMP poderia ser considerado um protocolo de
transporte)
O tamanho da mensagem UDP é medido em número de octetos (número de bytes). A
contagem envolve o cabeçalho UDP e a área de DADOS. Assim, o valor mínimo é 8.
O Checksum é calculado usando um pseudo-cabeçalho. Este é constituído pelos
endereços IP da origem e de destino, o código do tipo de protocolo IP (UDP tem o código
17), e o tamanho do datagrama UDP (não incluir o pseudo-cabeçalho), conforme a figura
abaixo:
Reparem que este pseudo-cabeçalho não está incluso no datagrama UDP. Os endereços
IPs de origem e destino são obtidos do cabeçalho IP. Isto mostra uma forte interação entre o
protocolo UDP e o IP.
Exemplos de serviços UDP:
- TFTP (porta 69),
- NTP (porta 123),
- DOMAIN(DNS) (porta 53, protocolo UDP),
- SYSLOG (porta 514)
Cada um destes serviços tem uma porta padronizada. Outras portas podem ser usadas
desde que não exista um outro serviço (aplicação) usando a mesma porta. As associação
das portas são definidas em arquivo denominado SERVICES na implementação do TCP/IP
de cada sistema operacional. As padronizações são conhecidas como well-known port
assignments e regidas por RFC (até o momento a RFC1700 é quem define estas
associações).
120
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
8.2
QUANDO UTILIZAMOS O UDP?
Usamos o protocolo UDP nas seguintes condições:
8.3
•
A aplicação de serviço transferindo informações "dispensáveis" para uma
aplicação local. Para justificar, tomemos o próprio serviço de tradução de nomes,
o DNS. Há outras formas de implementar ou realizar a tradução de nomes sem o
uso deste serviço.
•
Quando há restrições quanto ao tamanho do código gerado. Na partida de
sistemas (rede local), precisamos de um código pequeno (armazenamento em
memória permanente, vide o TFTP).
•
Aplicação estará restrita à rede local. Caso contrário, o programador deve prever
condições de controle dos datagramas UDP (tempos, ordenação, etc) para evitar
falhas.
Exercícios:
1) Usando um tcpdump para monitorar o trafego de uma rede, verifique o envio de
mensagens UDP de diversos tamanhos (64,128,256,512,1024, 2048, 4096 bytes).
2) Uma conexão UDP é confiável? Explique. Descreva um procedimento de teste que
confirme sua resposta usando o serviço que utilize o UDP.
9 PROTOCOLO TCP
Os protocolos IP e UDP não apresentam recursos para certificar o envio e recebimento de
um datagrama ou mensagem. Para proporcionar esta garantia foi projetado o protocolo TCP
(Transmission Control Protocol). Assim como o UDP, o TCP usa informações do
datagrama IP para seu próprio controle. Melhor ainda, o TCP incorpora recursos de controle
de fluxo, controle envio e recebimento das mensagens, uma forma de prioridade de
mensagens urgentes, enfim, um conjunto de características:
Orientado à Cadeia
(Stream Orientation)
O máquina de destino recebe exatamente a mesma seqüência de
bytes que o remetente enviou.
Conexão em
Circuito Virtual
Antes de enviar a mensagem TCP, as aplicações se certificam se
estão prontas para transferir a mensagem. Uma vez estabelecida a
conexão e autorizada, as aplicações iniciam a transferencia.
Durante a transferencia, as mensagens trocadas são verificadas
quanto ao recebimento. Caso ocorra alguma falha, as duas
máquinas envolvidas detectam a falha e informam às respectivas
aplicações sobre o ocorrido. Dizemos que o TCP implementa um
121
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
circuito virtual pois, sob o ponto de vista da aplicação, tudo se
"parece" como se existisse um circuito de hardware dedicado.
Transferência
Buferizada
O tamanho da mensagem pode ser qualquer. Mesmo que seja um
simples byte. O receptor verá os dados na mesma ordem que a
aplicação (do emissor) enviou. O protocolo de software é livre para
dividir a mensagem em blocos de menor tamanho. Para maximizar
(sob algum aspecto), o tráfego da rede, os dados são mantidos em
buffers até que estes alcancem um nível de preenchimento
suficiente para o envio. Por outro lado, há aplicações que exigem o
envio da informação de forma urgente. Para isto o serviço de envio
disponibiliza um mecanismo push forçando o envio, sem atrasos. O
mecanismo push garante apenas o envio, e não estipula limites de
preenchimento.
Cadeia
não-estruturada
O serviço de envio não honra uma estrutura dos dados. Contudo,
esta estrutura será restaurada na aplicação do receptor. Os dados
são transferidos!
Conexão
Full-Duplex e
Half-Duplex
As conexões proporcionadas pelo TCP permitem transferência nas
duas direções, denominadas Full duplex. Exemplo: FTP (comandos
numa direção e fluxo de dados no sentido oposto). O serviço de
envio também permite que uma aplicação suspenda o fluxo numa
direção enquanto se processa a transferência num sentido oposto
(ou half duplex).
9.1
PROPORCIONANDO A CONFIABILIDADE NO ENVIO E RECEBIMENTO
Embora o protocolo IP não forneça recursos que garantam o envio/recebimento dos
datagramas, o TCP implementa sua confiabilidade baseando-se na técnica de
reconhecimento positivo com retransmissão (positive acknowledgment with retransmission).
A técnica consiste na resposta contendo uma mensagem de ACK para cada mensagem de
dados.
122
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
Caso ocorra a perda do pacote (exemplo: ver pacote 2), o que representará o não
recebimento do ACK do pacote, o mecanismo de envio aguarda por um intervalo de tempo
e, findo este prazo, o pacote é retransmitido.
Para otimizar o desempenho do mecanismo de envio, o TCP implementa o conceito de
janelas deslizantes (sliding window). A idéia é deslizar uma janela de tamanho fixo sobre
uma seqüência de pacotes que devem ser enviados. O desempenho depende do tamanho
da janela, ou seja, quantos pacotes serão enviados sem o recebimento dos respectivos
ACKs. O tamanho ideal é aquele que cobrirá o tempo de espera pelo retorno da resposta do
ACK do primeiro pacote, conforme a figura:
123
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
A figura acima mostra uma janela deslizante de 5 pacotes. O pacote 6 será transmitido após
o recebimento do ACK do pacote 1. No caso de falha de algum pacote (ACK não recebido),
somente aquele pacote será retransmitido. O mecanismo de janela deslizante mantém a
rede completamente saturada com pacotes. Obtém-se, com isto, um troughtput mais alto
quando comparamos com o envio isolado de um pacote e a espera da respectiva resposta
de ACK.
Uma janela de tamanho fixo pode não ser adequada assim como gerar problemas como
buffer-overflow. Para evitar isto, o tamanho das janelas pode variar acomodando o envio e
recebimento dos pacotes. Para que o software reconheça este problema, o pacote de ACK
disponibiliza um "anúncio de janela" ajustando o tamanho dos buffers para acomodar o
tamanho das janelas. Procedimento semelhante é aplicável para o controle de fluxo de
dados evitando congestionamentos.
9.2
A IDENTIFICAÇÃO DAS CONEXÕES
As conexões TCP são identificadas através da dupla (Endereço IP, número da porta) tanto
do emissor quanto do receptor. Desta forma podemos ter várias conexões para um mesmo
serviço. Este tipo de controle também é aplicável ao protocolo UDP.
9.3
A FORMA DOS SEGMENTOS TCP
As mensagens TCP são denominadas segmentos. Um segmento TCP consiste de 2 partes:
um cabeçalho e dados. O cabeçalho TCP contém 12 campos onde são informadas as
portas de origem e destino, número de seqüência dos dados, número de ACK, tamanho da
janela, checksum, bits de código, tamanho do cabeçalho, apontadores de urgência, e outras
opções. Estas informações são localizadas no cabeçalho TCP, conforme a figura abaixo:
A porta de origem e porta de destino são fundamentais, pois serão usadas para o envio
de mensagens de controle. No início da comunicação (pelo solicitante) a porta de origem é
selecionada pelo sistema segundo algum algoritmo e a porta de destino corresponde à porta
124
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
da aplicação no sistema remoto. Na resposta, ou na transferencia inversa, as portas são
comutadas.
O número de seqüência identifica a posição do byte da cadeia naquele segmento.
O número de ACK identifica o número do octeto que a origem espera receber no próxima
resposta ack.
HLEN é o tamanho do cabeçalho do segmento TCP, medido em múltiplos de 32-bits (longword). Isto é necessário pois as campo OPÇÕES tem um tamanho variável.
RESERV. é um campo reservado para uso futuro e ocupa 6 bits. O valor é zero.
CÓDIGO define a finalidade do segmento. Apresenta a seguinte estrutura:
10
11
12
13
14
15
URG
ACK
PSH
RST
SYN
FIN
Segmento tipo urgente.
O emissor
O apontador de urgência
Este
Sincroniza alcançou o
é válido. Com este bit
ReSegmento segmento
o número
final da
em 1 e um valor definido
inicializa a
tipo ACK
requer um
de
cadeia
no apontador de
conexão
PUSH
seqüência (mensagem
urgência define-se o
)
OOB (Out-Of-Band)(*)
(*) Os detalhes de como o TCP informa um programa de aplicação sobre dados urgentes
depende do sistema operacional do computador. Há algum tempo este tipo de opção
gerava transtornos em vários sistemas operacionais.
O Checksum é calculado usando um pseudo-cabeçalho. Este é constituído pelos
endereços IP da origem e de destino, o código do tipo de protocolo IP (TCP tem o código 6),
e o tamanho do segmento TCP (não incluir o pseudo-cabeçalho, mas incluir os dados),
conforme a figura abaixo:
Reparem que este pseudo-cabeçalho não está incluso no datagrama TCP. Os endereços
IPs de origem e destino são obtidos do cabeçalho IP.
OBS.: A seqüência de segmentos envolvidos numa conexão TCP pode ser estudada
através de um modelo denominado máquina de estado finito. Este modelo será
estudado em CAP312.
125
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
9.4
INICIO E TÉRMINO DAS CONEXÕES - "THREE WAY HANDSHAKE"
O protocolo TCP é classificado como "orientado à conexão". Isto quer dizer que ele
implementa mecanismos que variam com o estado da conexão. Tal mecanismo segue uma
máquina de estado finita (Finite State Machine). Ou seja, o estado da conexão varia
conforme um "handshake" envolvendo os tipos do segmento TCP (campo CÓDIGO do
cabeçalho TCP).
Vamos admitir que a máquina A quer estabelecer uma conexão com a máquina B para a
troca de dados usando o protocolo TCP. Muito antes de ocorrer a transferencia dos dados
entre as aplicações TCP, elas trocam segmentos específicos. Tais segmentos são
identificados como segmentos de sincronismo (SYN) e segmento de confirmação de
recebimento (ACK). A finalidade do segmento tipo SYN é informar à outra máquina o
"desejo" da conexão. A finalidade do segmento ACK é dizer que foi recebido algum
segmento TCP devidamente identificado.
Assim a Máquina A envia para B um
segmento tipo SYNA, informando que
A quer estabelecer a conexão. No
momento do envio é disparado um
cronometro cujo alarme deve forçar
uma nova transmissão caso a
máquina A não receba uma
confirmação de recebimento. As
retransmissões vão acontecer por um
número de vezes previamente
definido em variáveis do TCP/IP.
Caso a máquina B receber o
segmento SYNA ela responderá para
A com o segmento de confirmação
ACKB.
Se houver recursos para aceitar aquele "convite" de conexão então a máquina B também
enviará um segmento SYNB para a máquina A que, seguindo as mesmas condições,
responderá com um segmento ACKA. Normalmente, os sinais de ACKB e SYNB seguem
num mesmo segmento. Esta troca de sincronismos e confirmações de recebimento,
denominamos de Three-way-handshake.
Somente após este tratamento é que os segmentos de dados serão transferidos, mas
sempre que for enviado algum segmento de dado para a outra máquina, esta responderá
com um segmento ACK correspondente ao segmento recebido.
Isto sucederá até que uma das máquinas sinalize a intenção de término (por intervenção do
usuário ou no término da aplicação). O término da conexão só acontecerá após o
encerramento da aplicação (em condições normais, é claro!).
Para encerrar a conexão são trocados segmentos tipo FIN (substituindo o segmento tipo
SYN) repetindo a mesma sequencia inicial.
126
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
A máquina de estado finita não se resume nestas transições. Ela é muito mais completa e
complexa e será vista em detalhes em CAP-312.
9.5
EXEMPLOS DE SERVIÇOS TCP:
- HTTP (porta 80, protocolo TCP),
- FTP (porta 21, protocolo TCP),
- FTP-DATA (porta 20, protocolo TCP),
- DOMAIN(DNS-XFER) (porta 53, protocolo TCP)
Cada um destes serviços tem uma porta padronizada. Outras portas podem ser usadas
desde que não exista um outro serviço (aplicação) usando a mesma porta naquela máquina.
As associação das portas são definidas em arquivo denominado SERVICES na
implementação do TCP/IP de cada sistema operacional. As padronizações são conhecidas
como well-known port assignments e regidas por RFC
9.6
QUANDO UTILIZAMOS O TCP?
Usamos o protocolo TCP nas seguintes condições:
9.7
•
A informação a ser transferida é fundamental. Queremos certificar do
recebimento e do envio da mensagem.
•
A máquina de destino ultrapassa a rede local.
•
Os atrasos gerados pelo controle e procedimentos do TCP (controle e
notificação), não prejudicam a atividade da aplicação. Aplicações de tempo-real,
por exemplo, devem evitar o uso deste protocolo de transporte.
•
Não há restrições de tamanho de código nem de uso da CPU e memória. Para
garantir alguns recursos o TCP requer uma reservas contínuas de memória.
EXERCÍCIOS:
1) Usando um tcpdump para monitorar o trafego de uma rede, verifique o envio de
segmentos TCP de diversos tamanhos (64,128,256,512,1024, 2048, 4096 bytes).
2) Compare o protocolo TCP com o UDP? Implementar todos os recursos de controle do
TCP no UDP é suficiente para garantir o envio/recebimento de forma confiável através
do UDP?
127
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
ANEXO:
Resultado de testes de roteamento
A pequena rede em topologia em barramento (10Mbps). O teste consiste em enviar 4
pacotes ICMP ECHO_REQUEST (ping) com 32 bytes cada um, da máquina 1 para a
máquina 2, e vice-versa.
Máquina 1: Endereço MAC: 00:40:95:E0:37:D6
Máquina 2: Endereço MAC: 00:C0:DF:42:11:19
TESTE 1:
Máquina 1:
Endereço IP: 192.168.254.1
máscara: 255.255.255.0
Tabela de rotas:
Rota padrão não especificada.
Rota para a rede 127.0.0.0 especificada, gw=127.0.0.1
Rota para a rede 192.168.254.0 especificada, gw=192.168.254.1
Tabela ARP inicial: sem entrada
Tabela ARP final: contém endereços MAC e IP da máquina 2
Máquina 2:
Endereço IP: 192.168.254.10
máscara: 255.255.255.0
Tabela de rotas:
Rota padrão não especificada.
Rota para a rede 127.0.0.0 especificada, gw=127.0.0.1
Rota para a rede 192.168.254.0 especificada, gw=192.168.254.10
Tabela ARP inicial: sem entrada
Tabela ARP final: contém endereços MAC e IP da máquina 1
Resultado:
Conectividade confirmada. Comprova que a conectividade entre as máquinas tanto
lógica quanto física. Tabela de ARP contém o MAC da máquina remota.
TESTE 2:
Máquina 1:
Endereço IP: 192.168.254.1
máscara: 255.255.255.0
Tabela de rotas:
Rota padrão não especificada.
Rota para a rede 127.0.0.0 especificada, gw=127.0.0.1
Rota para a rede 192.168.254.0 especificada, gw=192.168.254.1
Tabela ARP inicial: vazia
Tabela ARP final: permaneceu vazia
128
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
Máquina 2:
Endereço IP: 192.168.253.10
máscara: 255.255.255.0
Tabela de rotas:
Rota padrão não especificada.
Rota para a rede 127.0.0.0 especificada, gw=127.0.0.1
Rota para a rede 192.168.253.0 especificada, gw=192.168.253.10
Tabela ARP inicial: vazia
Tabela ARP final: permaneceu vazia
Resultado:
Sem conectividade. Resposta ao ECHO_REPLY: Destination host unreachable. Isto
significa que nem o datagrama IP nem o frame ethernet foram enviados ou
recebidos. Este último pelo fato da tabela ARP permanecer vazia
TESTE 3:
Máquina 1:
Endereço IP: 192.168.254.1
máscara: 255.255.255.0
Tabela de rotas:
Rota padrão não especificada.
Rota para a rede 127.0.0.0 especificada, gw=127.0.0.1
Rota para a rede 192.168.254.0 especificada, gw=192.168.254.1
Tabela ARP inicial: endereço MAC e IP da máquina 2 (entrada manual)
Tabela ARP final: endereço MAC e IP da máquina 2
Máquina 2:
Endereço IP: 192.168.253.10
máscara: 255.255.255.0
Tabela de rotas:
Rota padrão não especificada.
Rota para a rede 127.0.0.0 especificada, gw=127.0.0.1
Rota para a rede 192.168.253.0 especificada, gw=192.168.253.10
Tabela ARP inicial: endereço MAC e IP da máquina 1 (entrada manual)
Tabela ARP final: endereço MAC e IP da máquina 1
Resultado:
Sem conectividade. Resposta ao ECHO_REPLY: Destination host unreachable. Isto
significa que o datagrama IP embutido no frame ethernet não foi enviado e o
endereço ARP não foi utilizado.
TESTE 4:
Máquina 1:
Endereço IP: 192.168.254.1
máscara: 255.255.255.0
Tabela de rotas:
Rota padrão não especificada.
Rota para a rede 127.0.0.0 especificada, gw=127.0.0.1
129
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
Rota para a rede 192.168.254.0 especificada, gw=192.168.254.1
Rota para a rede 192.168.253.0 especificada, gw=192.168.254.1 (entrada
manual)
Tabela ARP inicial: vazia
Tabela ARP final: contém endereço MAC da máquina 2
Máquina 2:
Endereço IP: 192.168.253.10
máscara: 255.255.255.0
Tabela de rotas:
Rota padrão não especificada.
Rota para a rede 127.0.0.0 especificada, gw=127.0.0.1
Rota para a rede 192.168.253.0 especificada, gw=192.168.253.10
Tabela ARP inicial: vazia
Tabela ARP final: contém endereço MAC da máquina 1
Resultado:
Sem conectividade, com resposta de "Request timed out". Significa que o datagrama
IP (consequentemente o frame ethernet) foi enviado, mas para não houve resposta.
O fato da máquina 2 conter o MAC da máquina 1, significa que 2 recebeu o frame
ethernet, mas não conseguiu enviá-lo para a camada IP. Houve o retorno de frame
(máquina 1 contém o endereço MAC da máquina 2), mas, provavelmente, sem
encapsulamento IP.
TESTE 5:
Máquina 1:
Endereço IP: 192.168.254.1
máscara: 255.255.255.0
Tabela de rotas:
Rota padrão não especificada.
Rota para a rede 127.0.0.0 especificada, gw=127.0.0.1
Rota para a rede 192.168.254.0 especificada, gw=192.168.254.1
Rota para a rede 192.168.253.0 especificada, gw=192.168.254.1
Tabela ARP inicial: vazia
Tabela ARP final: contém endereço MAC da máquina 2
Máquina 2:
Endereço IP: 192.168.253.10
máscara: 255.255.255.0
Tabela de rotas:
Rota padrão não especificada.
Rota para a rede 127.0.0.0 especificada, gw=127.0.0.1
Rota para a rede 192.168.253.0 especificada, gw=192.168.253.10
Rota para a rede 192.168.254.0 especificada, gw=192.168.253.10
Tabela ARP inicial: vazia
Tabela ARP final: contém endereço MAC da máquina 1
Resultado: Conectividade confirmada. Isto indica que o uso da capacidade de
roteamento embutido no TCP/IP.
130
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
TESTE 6:
Máquina 1:
Endereço IP: 192.168.254.1
máscara: 255.255.255.0
Tabela de rotas:
Rota padrão : 0.0.0.0 especificada, gw=192.168.254.1.
Rota para a rede 127.0.0.0 especificada, gw=127.0.0.1
Rota para a rede 192.168.254.0 especificada, gw=192.168.254.1
Tabela ARP inicial: vazia
Tabela ARP final: contém endereço MAC da máquina 2
Máquina 2:
Endereço IP: 192.168.253.10
máscara: 255.255.255.0
Tabela de rotas:
Rota padrão: 0.0.0.0 especificada, gw=192.168.253.10
Rota para a rede 127.0.0.0 especificada, gw=127.0.0.1
Rota para a rede 192.168.253.0 especificada, gw=192.168.253.10
Tabela ARP inicial: vazia
Tabela ARP final: contém endereço MAC da máquina 1
Resultado:
Conectividade confirmada. Isto indica que o uso da capacidade de roteamento
embutido no TCP/IP usando a rota padrão.
TESTE 7:
Máquina 1:
Endereço IP: 192.168.254.1
máscara: 255.255.0.0
Tabela de rotas:
Rota para a rede 127.0.0.0 especificada, gw=127.0.0.1
Rota para a rede 192.168.0.0 especificada, gw=192.168.254.1
Tabela ARP inicial: vazia
Tabela ARP final: contém endereço MAC da máquina 2
Máquina 2:
Endereço IP: 192.168.253.10
máscara: 255.255.0.0
Tabela de rotas:
Rota padrão: não especificada
Rota para a rede 127.0.0.0 especificada, gw=127.0.0.1
Rota para a rede 192.168.0.0 especificada, gw=192.168.253.10
Tabela ARP inicial: vazia
Tabela ARP final: contém endereço MAC da máquina 2
131
04/05/01
Ulisses Thadeu V Guedes
CAP 258 - REDES E COMUNICAÇÃO DE DADOS
Redes - PROTOCOLO TCP/IP
Resultado:
Conectividade confirmada. Isto indica que a máscara aplicada retrata que as duas
máquinas estão na mesma rede lógica e que há rota para ela. Este teste é
equivalente ao TESTE 1.
TESTE 8:
Máquina 1:
Endereço IP: 192.168.254.1
máscara: 255.255.255.0
Tabela de rotas:
Rota para a rede 127.0.0.0 especificada, gw=127.0.0.1
Tabela ARP inicial: endereço MAC e IP da máquina 2 (entrada manual)
Tabela ARP final: endeereço MAC e IP da máquina 2
Máquina 2:
Endereço IP: 192.168.254.10
máscara: 255.255.255.0
Tabela de rotas:
Rota padrão: não especificada
Rota para a rede 127.0.0.0 especificada, gw=127.0.0.1
Tabela ARP inicial: endereço MAC e IP da máquina 1 (entrada manual)
Tabela ARP final: endereço MAC e IP da máquina 1
Resultado: Sem Conectividade e estamos numa mesma rede lógica e rede física.
CONCLUSÕES DOS TESTES
1. O ARP não é usado para decisões de roteamento IP (teste 3)
2. Dos testes 4, 5, 6 e 7 conclui-se que o "envio direto" está sujeito ao procedimento
que implementa algum roteamento interno.
132
04/05/01
Ulisses Thadeu V Guedes
Download

CAP258 - Redes de Computadores e Comunicação de