Você está na página 1de 130

Introduo s Redes e

Protocolos TCP/IP
Sesso n6
Jorge Gomes
jorge@lip.pt

MTU
Os frames do nvel de ligao possuem um tamanho mximo para a
quantidade de informao til que podem transportar.
No caso de uma rede Ethernet a carga til de um frame pode ser 1492
ou 1500 bytes dependendo do tipo de encapsulamento.
Pode ser maior com Jumbo frames
Pode ser mais pequeno se tivermos de transportar informao sobre
VLANs

O tamanho mximo da carga til de um frame designa-se por MTU


(Maximum Transmission Unit).
O nvel de transporte TCP divide a informao a transmitir por
segmentos de acordo com o MTU.
Se o nvel de rede IP receber um pacote para transmisso com
tamanho superior ao MTU mximo esse pacote partido em
datagramas IP de modo a caber no MTU mximo.
Infiniband
65532
Token ring 16Mbits/s 17914
FDDI
4352
Ethernet Jumbo 8000/9000

Ethernet
IEEE 802.3/802.2
loopback
PPP (baixo atraso)

1500
1492
16436
296

MTU
Quando duas maquinas ligadas mesma rede local comunicam
entre si o MTU relevante o MTU da rede local.
No entanto quando duas maquinas ligadas a redes diferentes
comunicam entre si os datagramas IP podem ter de atravessar
varias redes com MTUs diferentes.
Neste ultimo caso o MTU relevante o MTU mais pequeno de entre
todos os MTUs das varias redes que o datagrama atravessar.
Uma vez que o encaminhamento de trfego numa rede IP
dinmico o MTU de uma ligao tambm pode variar no tempo.

O RFC 1191 define um mecanismo para determinar o MTU de um


dado caminho de forma a eliminar a necessidade de fragmentao.
Path MTU discovery

MTU
O MTU tem impacto directo no desempenho:
da rede switches / routers etc
dos hosts

Quanto menor for o MTU maior ser:

O numero de frames a processar


O numero de operaes de comutao
Interrupts nos hosts
Processamento de headers IP

Em redes rapidas 1GbE ou 10GbE:


O Impacto dos interrupts e processamento de headers IP no
consumo de CPU pode ser muito elevado
Em 10GbE para se obter bons desempenhos importante usar
Jumbo frames (MTU 8000 ou 9000)
Tambm em redes de armazenamento (iSCSI) o uso de Jumbo
frames pode ter impacto positivo no desempenho

MTU
Em algumas circunstncias os MTUs pequenos podem ser
recomendveis por reduzirem a latncia.
Numa linha srie RS232 a 9600bits/s um MTU baixo pode melhorar
a resposta interactiva.
9600bits/s com 8 bits por byte mais 1 start bit e 1 stop bit = 960bytes/s
Se no mesmo link estiver a ser usado por uma aplicao interactiva e
por uma aplicao de transferncia de ficheiros (FTP) que transmite
grandes pacotes de dados (1024 bytes por pacote).
Ento temos de esperar cerca de 533ms em media antes de podermos
enviar um pequeno pacote da aplicao interactiva.
Estudos efectuados mostram que respostas superiores a 100-200ms
so mal toleradas pelos humanos.
Uma reduo do MTU da linha para 256 bytes reduz o tempo mximo
de espera para 266ms e o tempo mdio para 133ms.
O valor de MTU apresentado para o PPP 296bytes = 256 data + 40
headers.

Protocolo IP
(Nvel de rede)

IP
O IP (RFC 791) o protocolo de rede do TCP/IP.
O IP usado por protocolos como o TCP,UDP, ICMP e IGMP entre
outros
O IP fornece um servio no garantido:
No garante a chegada dos datagramas ao destino.
No garante a sequencia de chegada.

Quando algo corre mal os datagramas so deitados fora:


Uma mensagem de erro ICMP pode ser enviada para a origem.

Exemplos de problemas que levam perda de datagramas:


Um router pode esgotar os buffers.
Corrupo do datagrama.
Fragmentao pode ser necessria mas o router pode no possuir a
essa funcionalidade ou estar simplesmente inibida.
Fragmentao pode ser necessria mas o datagrama IP pode ter o bit
de no fragmentao activo.
Uma lista de acesso / firewall pode bloquear a passagem de
datagramas.

O cabealho IP
O tamanho mnimo de um cabealho IP 20 bytes (5 * 32bits).
O cabealho pode ter mais de 20 bytes se forem usadas opes.
O tamanho mximo do cabealho 60 bytes (15 * 32bits).
O cabealho est dividido em palavras de 32 bits.
Cada palavra de 32 bits transferida em formato big endian.
Ordem de transmisso bits 0-7, 8-15, 16-23, 24-31.

Todos os inteiros binrios so transferidos em big endian.


Sistemas com hardware little endian tem de proceder converso
de formato antes da transmisso.
Por esta razo este formato conhecido por Network byte order.

O cabealho IP
Os campos do cabealho IP so:
Verso: a verso de IP mais usada a verso 4 (existe a 6).
Tamanho: tamanho do cabealho em palavras de 32 bits.
Tipo de servio (TOS):
3 bits de precedncia: indicam a importncia do datagrama.
4 bits TOS: tipo de servio, cada um dos 4 bits define um tipo de
servio. S um dos 4 bits pode estar activo.

Minimizar os atrasos.
Maximizar debito de transferncia.
Maximizar fiabilidade.
Minimizar o custo monetrio.

1 bit no usado.

Tamanho total: tamanho total do datagrama IP em bytes. O


tamanho mximo de um datagrama IP 65535 bytes. Nenhum
sistema obrigado a aceitar datagramas IP superiores a 576
bytes. O limite mais habitual nas implementaes 8192 bytes.
Identificao: identifica cada datagrama. incrementado cada
vez que um datagrama enviado.

O cabealho IP

Os campos do cabealho IP so: (continuao)


Tempo de vida: limita o numero de routers pelos quais o
datagrama pode passar. inicializado a um dado valor
normalmente 64 e decrementado por cada router atravessado.
Quando chega a zero o pacote deitado fora.
Protocolo: identifica o tipo de protocolo que entregou dados ao IP
para transmisso.
Checksum do cabealho: complemento para um da soma do
cabealho dividido em palavras de 16 bits com o campo de
checksum a zero.
Endereos IP: O cabealho contm ainda um endereo IP de
origem e um endereo IP de destino.
Opes: o cabealho IP pode conter campos opcionais:

Restries de utilizao e segurana.


Registo de rota. Regista os endereos IP dos routers por onde passa.
Registo de tempo. Regista o tempo para cada router atravessado.
loose source routing
strict source routing

O cabealho IP
verso
(4)

tamanho
(4)

Tipo de servio
(8)

identificao
(16)
tempo de vida
(8)

tamanho total em bytes


(16)
flags
(3)

protocolo
(8)

offset do fragmento
(13)
checksum do cabealho
(16)

endereo IP de origem
(32)
endereo IP de destino
(32)

opes

dados

Precedncia e TOS
Originalmente o campo de 8 bits de TOS eram
divididos em:
3 bits de precedncia
4 bits de tipo de servio (TOS)
1 bit reservado

Precedncia
(3)
0

Tipo de servio
(4)
3

Reservado
(1)
7

Precedncia
3 bits de precedncia:
Usados para definir a politica de queueing
No afecta a escolha da rota apenas a prioritizao
Os valores de precedncia so geralmente ignorados pois
podem ser usados indevidamente
111
110
101
100
010
001
000

Network control
Internetwork control
CRITIC-ECP
Flash override
Immediate
Priority
Routine

TOS
O campo de tipo de servio (ToS) usado como indicao para os
routers e hosts para tratamento diferenciado na escolha da rota
Requer configurao explicita dos equipamentos caso contrario
ignorado
Num dado pacote apenas um bit pode estar activo
Tipos de servio originais usados por algumas aplicaes
Aplicao

telnet
rlogin
FTP
control
data
TFTP
SMTP
comando
data
SNMP
NNTP
BGP

Minimizao
de atrasos
Bit 3

Maximizar
Transferncia
Bit 4

Maximizar
Fiabilidade
Bit 5

Minimizar
Custos
Bit 6

Valor
Hex

1
1

0
0

0
0

0
0

0x10
0x10

1
0
1

0
1
0

0
0
0

0
0
0

0x10
0x08
0x10

1
0
0
0
0

0
1
0
0
0

0
0
1
0
1

0
0
0
1
0

0x10
0x08
0x04
0x02
0x04

Diff Serv
No final dos anos 90 o IETF redefiniu o bits de tipo de servio.
O novo esquema designa-se por servios diferenciados:
Differentiated Services Code Point (DSCP).
Codepoint
6 bits

No Usado
2 bits

O esquema define 6 bits que podem ser usados como ponteiros


para tipos diferentes de servios que so interpretados pelos
dispositivos de encaminhamento de trfego (routers).
Quando os ltimos 3 bits do codepoint esto a zero os primeiros 3 bits
assumem o significado do campo original de precedncia, mantendo
assim compatibilidade com o campo de precedncia.
Codepoint
xxxxx0
xxxx11
xxxx01

Atribudo por
Interpretaes pr-definidas pelo IETF
Para uso local ou testes
Para uso local ou testes (por enquanto)

Opes IP (RFC 791)

8 bits option type (RFC 791)


Flag
0 no copiar esta opo para os fragmentos
1 copiar esta opo para os fragmentos

Class
0 controlo (maioria das opes)
2 debug e medies (internet timestamp)

Number
Identifica a opo

Opes IP
Number:
0: fim da lista de opes, no tem campo data
1: No operation, no tem campo data
usado p/ alinhamento a 32 bits
2: Security, 11 bytes de data
classificao de segurana (DoD, agencias de segurana)
3: Loose source routing (desaconselhado)
4: Internet timestamp
7: Record route
8: Stream ID, 4 bytes de data (obsoleto)
9: Strict source routing (desaconselhado)
18: enhanced traceroute (RFC 1393)

Option length:
Tamanho do campo options data em octetos

Subnets
Um endereo IP possui duas componentes endereo
de rede e endereo de sistema (host).
possvel partir a componente de sistema em:
Endereo de sub-rede (subnet).
Endereo de sistema (host).

Todos os sistemas possuem obrigatoriamente suporte


para subnets.
da responsabilidade do administrador a deciso de dividir o espao
de endereamento para sistemas em subnets.
tambm sua responsabilidade escolher quantos bits usar para criar
subnets.

As subnets so transparentes para os routers


exteriores rede.
A utilizao de subnets esconde os detalhes da topologia interna de
uma rede IP, mantendo o tamanho das tabelas de encaminhamento.

Subnets

Exemplo com uma rede /24 (antiga classe C).


Net 193.137.55

254 Hosts

24 bits

8 bits

Net 193.137.55

24 bits

Net 193.137.55

16 SubNets

4 bits

24 bits

4 bits

64 SubNets

24 bits

Net 193.137.55

14 Hosts

2 Hosts

6 bits

4 SN
2 bits

2 bits

62 Hosts
6 bits

Subnets
Exemplo com uma rede /24 (antiga classe C).
Subnet de 3 bits d 8 subnets
Net 193.137.55

24 bits

8 SN

3 bits

30 Hosts

5 bits

Endereo IP(2)

Endereo IP(10)

Endereo IP das subnets (10)

00000000
00100000
01000000
01100000
10000000
10100000
11000000
11100000

0
32
64
96
128
160
192
224

193.137.55.0
193.137.55.32
193.137.55.64
193.137.55.96
193.137.55.128
193.137.55.160
193.137.55.192
193.137.55.224

Subnets
Net 193.137.55

8 SN

24 bits

3 bits

30 Hosts
5 bits

Router

Internet

Router

193.137.55.160
10100000(2)

Router
193.137.55.16
00100000(2)

Router

193.137.55.128
10000000(2)

Router
193.137.55.64
01000000(2)

193.137.55.96
01100000(2)

Subnets e mascaras
Para configurar uma interface IP necessrio saber:
o endereo IP atribudo interface.
quantos bits so usados para definir a rede e subnet caso exista.

Para definir o numero de bits usados para definir a rede + subnet usase uma mascara de 32 bits em que os bits de rede so representados
por 1 e os bits de host por 0 (zero).
Para o exemplo anterior a representao ser:
24 bits de rede + 3 bits de subnet + 5 bits de host
27 bits para definir a componente de rede + 5 bits para a componente
hosts
11111111 11111111 11111111 11100000(2)
0xffffffe0
255.255.255.224
x.x.x.x /27

Subnets e mascaras
Com base no endereo IP da interface e sua mascara um host
pode terminar se um datagrama se destina:
a um host na mesma rede IP
a um host noutra rede IP (o datagrama ter de ser enviado para um
router)
ou se o datagrama um broadcast

Ainda com base no exemplo anterior:


Endereo IP
Net 193.137.55

8 SN

24 bits

3 bits

30 Hosts
5 bits

Mascara
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 111 1
27 bits

0 0

0 0

5 bits

Subnets
Continuando o exemplo de subnets numa rede /24
Usando os 3 primeiros bits do host para definir subnets
Endereo IP(2)

Endereo IP(10)

Mascara(2)

Mascara(10)

00000000
00100000
01000000
01100000
10000000
10100000
11000000
11100000

0
32
64
96
128
160
192
224

11100000
11100000
11100000
11100000
11100000
11100000
11100000
11100000

224
224
224
224
224
224
224
224

Subnets
Exemplo com uma rede /24 (antiga classe C).
Subnet de 3 bits d 8 subnets
Net 193.137.55

24 bits

8 SN

3 bits

30 Hosts

5 bits

Endereo IP das subnets (10)

Mascara (10)

193.137.55.0 /27
193.137.55.32 /27
193.137.55.64 /27
193.137.55.96 /27
193.137.55.128 /27
193.137.55.160 /27
193.137.55.192 /27
193.137.55.224 /27

255.255.255.224
255.255.255.224
255.255.255.224
255.255.255.224
255.255.255.224
255.255.255.224
255.255.255.224
255.255.255.224

Endereos IP especiais
Na tabela seguinte:
0 significa um campo com todos os bits a zero.
1 significa um campo com todos os bits a um.
netid, hostid significam um valor que no todo 0 ou todo 1.
Endereo IP
Net
0
0
127
1
netid
netid
netid

Pode aparecer como

Subnet

Host

origem

destino

subnetid
1

0
hostid
qualquer
1
1
1
1

OK
OK
OK
nunca
nunca
nunca
nunca

nunca
nunca
OK
OK
OK
OK
OK

Descrio

Este host nesta net


O hostid especificado nesta net
Endereo de loopback
Broadcast limitado subnet local
Broadcast directo net netid
Broadcast directo netid,subnetid
Broadcast directo a todas as SN

Endereos IP especiais
Exemplos:
0.0.0.0
255.255.255.255
0.0.0.7/24
193.136.97.255/24
127.0.0.1/8

um host na rede local (source)


broadcast para todos os hosts na rede local
host 7 na rede local
broadcast directo para todos os hosts na rede 193.136.97
o prprio host na rede de loopback

Endereo IP
Net
0
0
127
1
netid
netid
netid

Pode aparecer como

Subnet

Host

origem

destino

subnetid
1

0
hostid
qualquer
1
1
1
1

OK
OK
OK
nunca
nunca
nunca
nunca

nunca
nunca
OK
OK
OK
OK
OK

Descrio

Este host nesta net


O hostid especificado nesta net
Endereo de loopback
Broadcast limitado subnet local
Broadcast directo net netid
Broadcast directo netid,subnetid
Broadcast directo a todas as SN

Subnet Zero
A primeira subnet tem todos os digitos binarios a 0
designada por subnet zero

Tradicionalmente desaconselhado usar esta subnet


Exemplo:
Em classfull a rede: 193.137.55.0
No sabendo a mascara a rede 193.137.55.0 pode ser
interpretado como sendo uma rede 255.255.255.0
Ou seja no possvel pelo endereo de rede inferir que o
espao 193.137.55.0 possui subnets

possvel usar a subnet zero mas preciso ter cuidado


Pode criar confuses
Muito cuidado com as mascaras de rede !!!

Em alguns equipamentos necessrio habilitar a


utilizao da subnet zero
CISCO IOS e similares:

ip subnet-zero

Subnet All-Ones
A ltima subnet tem todos os digitos binarios a 1
por vezes designada por subnet All-Ones

Tradicionalmente desaconselhado o seu uso


Exemplo:
A subnet 193.137.55.224 tem o endereo de broadcast
193.137.55.255
No sabendo a mascara 193.137.55.255 pode ser interpretado
como sendo o endereo de broadcast da rede 193.137.55.0/24
Ou seja olhando simplesmente para 193.137.55.255 no
possvel inferir que o espao 193.137.55.0 possui subnets
Tanto pode ser o broadcast de 193.137.55.0/24 como de 193.137.55.224/27

possvel usar a subnet All-ones:


preciso ter muito cuidado com a correcta especificao das
mascaras
Em casos limite pode mesmo criar loops de trfego na rede

Subnets variveis
O RFC1009 permite que uma rede dividida em subnets
possa usar mascaras de diferentes tamanhos.
O RFC sobre novos requisitos de routing veio tornar
o suporte de subnets de tamanho varivel um
requisito.
O uso de mascaras de tamanho varivel permite uma
gesto mais eficiente do espao de endereamento.
O maior problema com as subnets de tamanho varivel
a falta de suporte em alguns protocolos de routing
para o envio das mascaras de subnet juntamente com
os endereos das subnets.
Os protocolos de routing mais recentes no possuem
este problema.

Subnets variveis
Exemplo de subnets de tamanho varivel usando uma
rede /24 :
Endereo IP(2)
00000000
00100000
01000000
01000000
01001000
01010000
01011000
01100000
10000000
10100000
10100000
10110000
11000000
11100000

Endereo IP(10)
0
32
64
64
72
80
88
96
128
160
160
176
192
224

Mascara(2)
11100000
11100000
11100000
11111000
11111000
11111000
11111000
11100000
11100000
11100000
11110000
11110000
11100000
11100000

Mascara(10)
224
224
224
248
248
248
248
224
224
224
240
240
224
224

Encaminhamento IP
ou routing IP
(Nvel de rede)

Encaminhamento IP
O encaminhamento efectuado pelo nvel IP.
Todos os sistemas com IP fazem encaminhamento

Encaminhamento (routing) consiste em:


a) Procurar na tabela de routing um endereo de host ou rede
que coincida com o endereo de destino do datagrama
b) Desta forma determinar qual a interface pela qual o
datagrama deve ser enviado e qual o prximo passo

Politica de encaminhamento (routing)


o conjunto de regras que determina que entradas devem de
existir na tabela de routing.
A politica de encaminhamento determinada atravs de
criao manual de entradas na tabela de encaminhamento ou
atravs de um processo de routing.

Encaminhamento IP
Encaminhamento de datagramas IP quando se trata da
comunicao entre sistemas na mesma rede IP:
Envio directo

Quando se pretende enviar um datagrama para um sistema


numa rede IP diferente
O datagrama enviado para um router ligado na rede local.

Note-se que estamos a falar de redes IP:


Numa mesma rede fsica podem coexistir mltiplas redes IP
Sistemas em redes IP diferentes mesmo estando fisicamente no
mesmo domnio de broadcast Ethernet precisam de um router para
comunicar
Router R

IP orig: A dest: B
MAC orig: A dest: B

R1

IP orig: A dest: B
MAC orig: A dest: R1

R2

IP orig: A dest: B
MAC orig: R2 dest: B

Encaminhamento IP
A maior parte dos sistemas existentes podem ser
configurados para funcionarem eles mesmo como routers.
A diferena entre um sistema normal (host) e um router:
ao contrario de um host um router reenvia datagramas entre as suas
interfaces.

Cada vez que um router recebe um datagrama destinado a


um outro sistema:
o router percorre a sua tabela de encaminhamento para determinar
por qual interface deve enviar o datagrama para o seu destino.

Encaminhamento IP
Nvel de transporte
(TCP, UDP etc.)
Sim
Endereo IP de destino
um endereo de
multicast ou broadcast,
ou endereo de uma
interface local ?

No

No
O sistema
um router

Datagrama
eliminado

Sim
IP

Nvel de ligao
(driver de rede)

Rede

Funo
IP de sada
Consulta da
tabela de
encaminhamento

Para onde ou por


onde enviar o
datagrama IP ?

Tabela de encaminhamento
Uma tabela de encaminhamento IP contm:
Endereo IP de destino: pode ser um endereo de um host, ou
o endereo de uma rede.
Um endereo de rede possui a poro do endereo reservada para o host
a zero.

Endereo IP do prximo passo:


Endereo IP de um router que d acesso ao IP de destino

Flags que especificam se:


O endereo de destino o endereo de uma rede ou de um host.
O endereo de destino est numa rede directamente ligada ou
alcanvel atravs de um router.

Interface: especifica a interface local a usar para enviar o


datagrama IP para o endereo de destino.

Tabela de encaminhamento
Exemplo de tabela de routing:

Destination
10.0.0.0

Gateway
0.0.0.0

Genmask
255.0.0.0

Flags
U

Iface
eth0

Nenhum router conhece o caminho completo para os destinos.


Cada router s conhece:
Quais as redes directamente ligadas a si.
Quais os endereos relevantes de outros routers nas redes directamente
ligadas (routers vizinhos) e quais as redes a que estes routers do acesso.

Tabela de encaminhamento
O encaminhamento IP efectua as seguintes operaes:
1. Procura na tabela de encaminhamento uma linha que corresponda
completamente ao endereo IP de destino.

Se encontrar envia o datagrama para o router correspondente ou para


uma rede local directamente ligada dependendo das flags.

2. Procura na tabela de encaminhamento uma linha que corresponda


ao endereo da rede de destino.

Se encontrar envia o datagrama para o router correspondente ou para


uma rede local directamente ligada dependendo das flags.

3. Procura na tabela de encaminhamento uma linha que corresponda


ao default router.

Se encontrar envia o datagrama para o router correspondente.

Se nenhum destas operaes resultar o datagrama no poder


ser entregue e uma mensagem de erro ICMP host unreachable
ou network unreachable enviada para a origem.

Tabela de encaminhamento
Quando uma interface inicializada uma rota directa
automaticamente adicionada:
Para redes partilhadas (Ethernet) a rota para a rede IP.
Para uma ligao ponto a ponto a rota para o host no outro
extremo da ligao.

Outras rotas podem ser adicionadas:


Manualmente (rotas estticas)
atravs de comandos

Automaticamente atravs de:


um processo de routing
mensagens de redireco ICMP.

Tabela de encaminhamento
O endereo, mascara e broadcast da interface eth0 :
inet addr:10.1.1.101

Bcast:10.255.255.255

Mask:255.0.0.0

A configurao da interface com os parmetros acima descritos d


automaticamente origem a uma entrada na tabela de routing:

Destination
10.0.0.0

Gateway
0.0.0.0

Genmask
255.0.0.0

Flags
U

Iface
eth0

Default route
A default route a rota usada:
Quando no existe nenhuma outra rota mais apropriada para chegar ao
destino pretendido.
Ou seja quando a comparao do endereo IP de destino com cada uma das
outras rotas existentes na tabela de routing falha.

Cada maquina pode ter zero, uma ou mais default routes.


O RFC de host requirements especifica que todas as maquinas devem
suportar mais de uma default route.
No entanto existem muitas implementaes que suportam apenas uma default
route.

Quando mais de uma default route existe:


O comportamento normal enviar os datagramas em round-robin para os
vrios routers.
Desta forma pode ser implementada uma forma de balanceamento.
Se as rotas possurem prioridades diferentes uma ser escolhida e a segunda
ser usada caso a primeira rota desaparea

Flags de routing
Existem 5 flags que podem aparecer em tabelas de
routing:
U a rota est UP.
H a rota aponta para uma maquina. Se esta flag no estiver
presente a rota aponta para uma rede.
G a rota indirecta atravs de um router. Se esta flag no
estiver presente a rede ou maquina de destino esto numa
rede directamente ligada a uma interface da maquina local.
D a rota foi criada por uma mensagem de ICMP redirect.
M a rota foi modificada por uma mensagem de ICMP redirect.

Flags de routing
A flag G distingue uma rota directa de uma rota
indirecta:
Rota directa: a maquina de destino encontra-se numa rede
directamente ligada maquina local:
Tratando-se de uma rede partilhada o endereo MAC de destino a usar no
envio do frame ser o endereo MAC da maquina de destino.
O endereo MAC ter de ser obtido por ARP a partir do endereo IP.

Rota indirecta: a maquina de destino s acessvel atravs de


um router:
Tratando-se de uma rede partilhada o endereo MAC de destino do frame
a enviar ser o endereo MAC do router a obter via ARP.
O endereo IP ser o endereo IP da maquina de destino.

Uma tabela de routing simples


Em Linux uma tabela de routing pode ser listada atravs do
comando netstat usando a opo -r.
Destination
193.136.90.67
193.136.90.0
127.0.0.0
0.0.0.0

Gateway
0.0.0.0
0.0.0.0
0.0.0.0
193.136.90.254

Genmask
255.255.255.255
255.255.255.0
255.0.0.0
0.0.0.0

Flags
UH
U
U
UG

MSS
0
0
0
0

Window
0
0
0
0

irtt
0
0
0
0

Iface
eth0
eth0
lo
eth0

Destino 193.136.90.67

Router para esta rota 0.0.0.0 a prpria maquina.


Mascara 255.255.255.255 significa que devemos considerar para comparao
todos os bits do destino (193.136.90.67).
Flags: U a rota est UP, H a rota para uma maquina.
Interface: interface por onde os datagramas devem ser enviados (Ethernet 0).

Destino 193.136.90.0

Router para esta rota 0.0.0.0 a prpria maquina.


Mascara 255.255.255.0 significa que devemos considerar para comparao os
primeiros 24 bits do destino (193.136.90).
Flags: U a rota est UP.
Interface: interface por onde os datagramas devem ser enviados (Ethernet 0).

Uma tabela de routing simples


Destination
193.136.90.67
193.136.90.0
127.0.0.0
0.0.0.0

Gateway
0.0.0.0
0.0.0.0
0.0.0.0
193.136.90.254

Genmask
255.255.255.255
255.255.255.0
255.0.0.0
0.0.0.0

Flags
UH
U
U
UG

MSS
0
0
0
0

Window
0
0
0
0

irtt
0
0
0
0

Iface
eth0
eth0
lo
eth0

Destino 127.0.0.0

Router para esta rota 0.0.0.0 a prpria maquina.


Mascara 255. 0.0.0 significa que devemos considerar para comparao os
primeiros 8 bits do destino (127).
Flags: U a rota est UP.
Interface: interface por onde os datagramas devem ser enviados (loopback).

Destino 0.0.0.0

Router para esta rota 193.136.90.254 .


Mascara 0.0.0.0 nenhum bit do endereo de destino deve ser usado para
comparao. Todos os endereos comparados com esta rota retornam
verdade.
Flags: U a rota est UP, G a rota aponta para um router.
Interface: interface por onde os datagramas devem ser enviados (Ethernet 0).

Tabela de encaminhamento
Para o destino 172.30.1.0 mascara 255.255.255.0

Esta a rede IP local onde este host est ligado


A gateway 0.0.0.0 ou seja a rede est directamente ligada
A interface a que a rede 172.30.1.0/24 est ligada a eth1
Flags (U route is UP)

Para o destino 0.0.0.0 mascara 0.0.0.0 (default route)

0.0.0.0/0 um wildcard para qualquer outra rede


A gateway o router 172.30.1.254
Sabemos que um router pela presena da flag G
A interface para chegar ao router a eth1

# netstat -rn
Kernel IP routing table
Destination
Gateway
172.30.1.0
0.0.0.0
0.0.0.0
172.30.1.254

Genmask
255.255.255.0
0.0.0.0

Flags
U
UG

MSS Window
0 0
0 0

irtt Iface
0 eth1
0 eth1

Tabela de encaminhamento
Para o destino 193.136.75.0 mascara 255.255.255.0
A gateway o router 10.193.1.254 (flag G)
A interface para chegar ao router a eth0

Para o destino 10.193.0.0 mascara 255.255.0.0


A gateway 0.0.0.0 ou seja a rede est directamente ligada
A interface a que a rede 10.193.0.0/16 est ligada a eth0

Para o destino 10.0.0.0 mascara 255.0.0.0


A gateway o router 10.193.1.254 (flag G)
A interface para chegar ao router a eth0

Para o destino 0.0.0.0 mascara 0.0.0.0 (default route)


0.0.0.0/0 um wildcard para qualquer outra rede
A gateway o router 10.193.1.253 (flag G)
A interface para chegar ao router a eth0
Destination
193.136.75.0
10.193.0.0
10.0.0.0
0.0.0.0

Gateway
10.193.1.254
0.0.0.0
10.193.1.254
10.193.1.253

Genmask
255.255.255.0
255.255.0.0
255.0.0.0
0.0.0.0

Flags
UG
U
UG
UG

MSS
0
0
0
0

Window
0
0
0
0

irtt
0
0
0
0

Iface
eth0
eth0
eth0
eth0

Tabela de encaminhamento

Para o destino 10.193.1.2 mascara 255.255.255.255 ( um host flag H)


No tem gateway e a interface para chegar ao host a tun0 (um tunel)

Para o destino 193.136.75.240 mascara 255.255.255.240 ( uma rede)


A interface a que a rede est ligada a eth2

Para o destino 10.193.0. 0 mascara 255.255.0. 0 ( uma rede)


A interface a que a rede est ligada a eth3

Para o destino 0.0.0.0 mascara 0.0.0.0 (default route)


0.0.0.0/0 um wildcard para qualquer outra rede
A gateway o router 193.136.75.254 (flag G)
A interface para chegar ao router a eth2

Destination
10.193.1.2
193.136.75.240
10.193.0.0
0.0.0.0

Gateway
0.0.0.0
0.0.0.0
0.0.0.0
193.136.75.254

Genmask
255.255.255.255
255.255.255.240
255.255.0.0
0.0.0.0

Flags
UH
U
U
UG

MSS
0
0
0
0

Window
0
0
0
0

irtt
0
0
0
0

Iface
tun0
eth2
eth3
eth2

Tabela de encaminhamento
Em verses mais actuais do Linux a rede 127.0.0.0 no
aparece nas tabelas de routing
A rede 127.0.0.0 tratada como local e por isso no
precisa de aparecer nas tabelas
As redes de scope local no aparecem nas tabelas de
routing

# /sbin/ip addr ls
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:23:7d:db:ca:42 brd ff:ff:ff:ff:ff:ff
inet 10.1.1.101/8 brd 10.255.255.255 scope global eth0
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
link/ether 00:23:7d:db:ca:43 brd ff:ff:ff:ff:ff:ff

Tabela de encaminhamento
O comando ip tambm pode ser usado para listar e
manipular as tabelas de routing

# /sbin/ip route list


10.0.0.0/8 dev eth0 proto kernel
default via 10.0.0.254 dev eth0

scope link

src 10.1.1.101

Tabela de encaminhamento

Para o destino 0.0.0.0 mascara 0.0.0.0 (default route)


0.0.0.0/0 um wildcard para qualquer outra rede
A gateway o router 172.16.1.1 interface VLAN 31
Rota esttica (introduzida mo)

Para o destino 10.0.0.0 mascara 255.0.0.0


A interface a que a rede est ligada a VLAN 10

Para o destino 172.16.1.0 mascara 255.255.255.0


A interface a que a rede est ligada a VLAN 31

Para o destino 192.168.75.0 mascara 255.255.255.0


A gateway o router 172.16.1.75 interface VLAN 31
Rota esttica (introduzida mo)

*S
C
C
S

Destination
----------0.0.0.0/0
10.0.0.0/8
172.16.1.0/24
192.168.75.0/24

Gateway
------via 172.16.1.1, Vl 31
Direct, Vl 10
Direct, Vl 31
via 172.16.1.75, Vl 31

Dist/Metric Last Change


----------- ----------1/0
17w4d
0/0
17w4d
0/0
17w4d
1/0
17w4d

Encaminhamento
Exemplos para RedHat Linux:
As rotas para as redes locais so criadas automaticamente
quando a interface de rede configurada
A configurao da interface de rede pode ser vista em:

/etc/sysconfig/network-scripts/ifcfg-eth0
Se a interface de rede for a eth3 ento ser ifcfg-eth3
IPADDR=10.78.45.1
NETMASK=255.255.0.0
NETWORK=10.78.0.0

A rota por defeito 0.0.0.0/0 pode ser configurada em


/etc/sysconfig/network
GATEWAY=10.78.0.254

Pode-se adicionar rotas via uma interface em:

/etc/sysconfig/network-scripts/route-eth0
GATEWAY0=10.78.0.100
ADDRESS0=193.136.31.0
NETMASK0=255.255.255.0

Encaminhamento
Para criar rotas tambm se pode usar o comando /sbin/route
As rotas criadas desta forma desaparecem com reboot
Exemplos:
/sbin/route add net 0.0.0.0 netmask 0.0.0.0 gw 193.136.73.4 dev eth0

/sbin/route add net 10.0.0.0 netmask 255.0.0.0 gw 193.136.73.9 dev eth0

/sbin/route del net 10.0.0.0 netmask 255.0.0.0 gw 193.136.73.9 dev eth0

Encaminhamento
Adicionar rotas estticas num router com IOS (CISCO) ou similar

Exemplos:
ip route 0.0.0.0 0.0.0.0 193.135.9.5
ip route 10.78.0.0 255.255.0.0 186.65.12.46
ip route 10.50.23.0 255.255.255.0 187.158.35.92
ip route 10.50.24.0 255.255.255.0 Null0

show ip route
show ip route static
show ip route connected

Fragmentao IP
O nvel de ligao impe um limite mximo no tamanho dos
frames. Este limite corresponde ao MTU do IP:
Quando o IP necessita de enviar um datagrama, primeiro obtm o
MTU da interface por onde o datagrama vai ser transmitido.
O tamanho de cada datagrama comparado ao MTU da interface.
Se um datagrama for superior ao MTU ento tem de ser fragmentado
antes de ser transmitido.

A fragmentao pode ocorrer no sistema de origem do datagrama


ou em qualquer router ao longo do trajecto.
Um fragmento pode ser fragmentado mltiplas vezes de acordo com
o MTU das interfaces por onde transmitido.

A desfragmentao s ocorre quando os fragmentos chegam ao


destino final.
Quando um datagrama fragmentado cada fragmento torna-se
um pacote com o seu prprio cabealho IP.

Fragmentao IP
Os campos do cabealho IP que so usados na fragmentao
so:
Identificao: identifica cada datagrama logo tem de ser copiada
para cada fragmento de um mesmo datagrama.
Flags:
Bit 0: no usado
Bit 1: bit dont fragment usado para indicar que um datagrama nunca
deve ser fragmentado. Se este bit estiver activo e o recurso
fragmentao for necessrio o datagrama deitado fora e uma mensagem
de erro enviada para a origem.
Bit 2: more fragments bit usado num fragmento para indicar que se
seguem mais fragmentos. O ultimo fragmento tem este bit a zero.

Offset do fragmento: posio do inicio do fragmento a contar a partir


do inicio do datagrama original (multiplos de 8 bytes).
Os fragmentos possuem um tamanho em mltiplos de 8 bytes

Tamanho total: Para um fragmento contm o seu tamanho.

Fragmentao IP
Se um fragmento for perdido todo o datagrama do qual faz parte
ter de ser transmitido novamente.
No existe qualquer possibilidade de retransmitir um fragmento
perdido.
A fragmentao aumenta probabilidade de todo um pacote ter de
ser retransmitido
A fragmentao pode levar a ocupao da rede por fragmentos
que tm de voltar a ser todos retransmitidos caso um nico se
perca

Fragmentao IP
Quando um primeiro fragmento de um datagrama recebido
lanado um temporizador durante o qual o sistema espera pela
chegada dos restantes fragmentos.
Este temporizador dura entre 30 e 60 segundos por fragmento.
Se no chegarem todos os fragmentos ento os fragmentos que
chegaram so deitados fora.
Se os fragmentos tiverem de ser deitados fora ento:
Se o primeiro fragmento do datagrama j tiver chegado, uma
mensagem de erro (ICMP time exceeded) enviada para a maquina
de origem do datagrama.
A mensagem de erro inclui os primeiros 8 bytes de dados do
datagrama.
Se o primeiro fragmento ainda no tiver chegado, ento nenhuma
mensagem de erro enviada porque no existem disponveis os
primeiros bytes de dados do datagrama.

Fragmentao IP
Um datagrama pode ser fragmentado por qualquer
router ao longo do caminho:
O host de origem nunca chega a saber da fragmentao
Se um fragmento se perde todo o datagrama tem de ser
repetido
Pssimo em redes congestionadas

Como os fragmentos secundrios no possuem informao dos


headers de transporte (TCP, UDP etc)
Levanta problemas de segurana
Obriga reassemblagem na firewall

Para evitar a fragmentao envia-se os datagramas


entre redes com o default MTU mximo de 576 bytes
Actualmente evita-se a fragmentao atravs do
mecanismo de path MTU discovery

Fragmentao IP
Path MTU discovery:
RFC 1191 de 1990 mas com adopo pratica a partir de 2002
Os datagramas IP so enviados com o bit de dont fragment 1
Se a fragmentao for necessria o router:
Ter de deitar fora o fragmento
Gerar mensagem de erro ICMP do tipo: Fragmentation needed but dont
fragment bit is set
A mensagem ICMP contm o MTU mximo permitido

Como funciona:
Envia-se o maior datagrama possivel
Se receber uma mensagem de erro ICMP
Reenviar o datagrama mas usando como tamanho
o valor de MTU contido na mensagem ICMP recebida

Cuidado com as firewalls que bloqueiam mensagens ICMP !!!


No bloquear as mensagens de fragmentation needed

Protocolo ARP
(Nvel de ligao)

ARP
Os endereos IP s fazem sentido para o nvel de rede
do TCP/IP
Os protocolos de ligao usados em redes partilhadas como a
Ethernet, etc usam os seus prprios endereos de hardware
MAC address

As ligaes ponto-a-ponto no usam endereos de hardware.

As interfaces no nvel de ligao


No utilizam endereos IP para determinar o destino de um frame
Utilizam os endereos de hardware (MAC address).

A resoluo de endereos
Efectua o mapeamento entre endereos IP e os endereos de
hardware usados no nvel de ligao.

O ARP (Address Resolution Protocol) (RFC 826)


Converte dinamicamente endereos IP em endereos de
hardware.

Formato de um frame ARP


Encapsulamento Ethernet (RFC 894)
endereo
Destino
(6)

Tipo
hard
(2)

Tipo
proto
(2)

endereo
Origem
(6)

tipo
0x0806
(2)

Compr.
hard
(1)

Compr.
proto
(1)

DADOS

trailer
CRC
(4)

(46-1500)

Oper
(2)

Endereo
hard origem
(6)

Endereo
proto origem
(4)

Endereo
hard destino
(4)

Endereo
proto destino
(6)

Tipo hard: tipo de endereo de hardware. Para redes Ethernet o valor 1.


Tipo proto: tipo de endereo de protocolo. Para o IP o valor 0x0800.
Compr. hard: comprimento do endereo de hardware. Para Ethernet o valor 6.
Compr. Proto: comprimento do endereo de protocolo. Para IP o valor 4.
Oper: Operao: 1 ARP request; 2 ARP reply; 3 RARP request; 4 RARP reply.
Endereo hard origem: Endereo de hardware da interface que enviou.
Endereo proto origem: Endereo de protocolo da interface que enviou.
Endereo hard de destino: Endereo de hardware da interface de destino.
Endereo proto de destino: Endereo de protocolo da interface de destino.

Funcionamento do ARP

Uma aplicao num sistema pretende comunicar com


outro sistema.
A aplicao traduz o nome do sistema remoto num endereo
IP usando a funo gethostbyname() que traduz o nome
usando:
DNS (Domain Name system).
Uma tabela num ficheiro local.
NIS, etc

A aplicao pede ao protocolo de transporte TCP o


estabelecimento de uma ligao.
TCP envia um segmento de estabelecimento de ligao para o
nvel IP.
O IP determina se o endereo IP de destino:
Est numa rede IP diferente (caso em que o datagrama enviado
a um router)
Est na mesma rede (caso em que contactvel directamente)

Em qualquer dos casos o endereo Ethernet (do router ou do


host) tem de ser determinado.

Funcionamento do ARP

O ARP usado para obter do endereo Ethernet a partir do


endereo IP.
O ARP envia um broadcast (ARP request) que recebido por
todos os hosts da rede local Ethernet. O pedido ARP contm:
O endereo IP que se pretende traduzir.
Um campo de operao que indica que se pretende traduzir o
endereo.

Todos os sistemas recebem o pedido ARP e comparam o seu


endereo IP com o endereo contido no pedido ARP.
O sistema ao qual o endereo pertence :
responde directamente ao sistema de onde o pedido foi originado.
cria uma entrada na sua cache de ARP para o sistema de origem
do pedido.

O sistema que efectuou o pedido recebe um ARP reply com o


endereo Ethernet do sistema que pretende contactar.
O datagrama IP pode agora ser enviado.
A correspondncia endereo IP endereo Ethernet
guardada numa cache.

Funcionamento do ARP
Quero falar com
193.145.9.2

Ser que o 193.145.9.2


est na minha cache de ARP ?
NO
Adiciono minha cache de ARP
193.145.9.2 00:AA:C1:FE:B7:FE
Agora j posso enviar datagramas
Ethernet directamente para ele
Sou eu mas primeiro
Adiciono minha cache ARP
193.145.9.1 00:BB:D1:A3:F0:01

193.145.9.1

193.145.9.2

193.145.9.3

00:BB:D1:A3:F0:01

00:AA:C1:FE:B7:FE

00:CD:D1:00:1C:AB

Broadcast ARP-request
Enviado para o broadcast Ethernet
Sou o 193.145.9.1
Tenho o MAC 00:BB:D1:A3:F0:01
Pergunto quem tem o 193.145.9.2 ?

Unicast ARP-reply
Para 00:BB:D1:A3:F0:01 IP 193.145.9.1
Eu sou o 193.145.9.2
E o meu MAC 00:AA:C1:FE:B7:FE

Funcionamento do ARP
A existncia da cache ARP fundamental ao bom
desempenho do protocolo.
As entradas da cache expiram alguns minutos aps a
sua criao.
O TTL das entradas depende do sistema
Num host tipicamente 20 minutos
$ /sbin/arp -a
monica.lip.pt
stlip02.lip.pt
ns01.lip.pt
nbjorge.lip.pt
swlip01-lan.lip.pt
lnlip01.lip.pt

(10.1.1.50)
(10.1.160.2)
(10.226.1.1)
(10.31.1.1)
(10.0.0.254)
(10.1.1.101)

at 00:11:d8:5c:75:b9 [ether] on eth0


at 00:1b:21:39:a9:62 [ether] on eth0
at 00:22:19:19:f7:e5 [ether] on eth0
at 00:1a:80:d9:06:1b [ether] on eth0
at 00:01:e8:56:08:3d [ether] on eth0
at 00:e0:81:5a:e9:83 [ether] on eth0

Proxy ARP
O Proxy ARP permite que um router responda a pedidos ARP
provenientes de uma rede em beneficio de um sistema ligado a
outra rede.
Este comportamento leva o sistema que efectua o pedido a
considerar o router como sendo o detentor do endereo IP.
Todos os datagramas IP so assim enviados para o router que os
encaminha para o verdadeiro destino.

193.137.55.20
255.255.255.0

193.137.55.19
255.255.255.0

193.137.55.18
255.255.255.0

Host

Proxy ARP
On behalf of the PPP hosts

PPP

Host

Host

Router
ARP
Reply

193.137.55.17
255.255.255.0

193.137.55.0
255.255.255.0

host
ARP
Req
Broadcast

193.137.55.78
255.255.255.0

ARP Gratuito
Um ARP gratuito o envio de um pedido ARP por um
sistema para traduo o seu prprio endereo IP.
Um ARP gratuito possui o endereo de protocolo de
origem igual ao endereo de protocolo de destino.
As vantagens do ARP gratuito so:
Pode ser usado durante o boot de um sistema para determinar
se algum outro sistema possui o mesmo endereo IP.
Permite actualizar o endereo de hardware nas caches dos
vrios sistemas caso o endereo de hardware seja alterado:
Porque a placa de rede foi substituda.
Porque um servidor de backup com o mesmo endereo IP tomou o
lugar do servidor principal aps uma falha deste.

Quando um sistema recebe um broadcast com um


pedido ARP cujo endereo IP j se encontra em cache,
esta entrada da cache actualizada.

ARP Linux
O comando ARP pode ser usado para criar entradas
estticas de ARP
[root@lnsys01 jorge]# arp -s 10.0.0.112 00:22:19:21:fe:e8
[root@lnsys01 jorge]# arp a
swlip01-lan.lip.pt (10.0.0.254) at 00:01:e8:56:08:3d [ether] on eth0
? (10.0.0.112) at 00:22:19:21:fe:e8 [ether] PERM on eth0
monica.lip.pt (10.1.1.50) at 00:11:d8:5c:75:b9 [ether] on eth0

Atravs de uma entrada esttica um sistema pode


responder a pedidos ARP em beneficio de outros
Proxy ARP
[root@lnsys01 jorge]# arp i eth0 -s 10.0.0.112 00:22:19:21:fe:e8 pub
[root@lnsys01 jorge]# arp a
swlip01-lan.lip.pt (10.0.0.254) at 00:01:e8:56:08:3d [ether] on eth0
? (10.0.0.112) at 00:22:19:21:fe:e8 [ether] PERM PUP on eth0
monica.lip.pt (10.1.1.50) at 00:11:d8:5c:75:b9 [ether] on eth0

Protocolo RARP
(Nvel de ligao)

RARP
Os endereos IP das interfaces so normalmente obtidos a
partir de ficheiros de configurao locais.
Em alguns sistemas como terminais X, impressoras ou
estaes de trabalho sem disco, o endereo IP obtido a
partir da rede como base no endereo de hardware.
Cada interface de rede possui um endereo de hardware
nico atribudo pelo fabricante.
O RARP (RFC 903) envia um broadcast para a rede com o
endereo de hardware da interface, um servidor de RARP
responde directamente com o endereo IP correspondente.
O formato de um pacote RARP idntico ao ARP, com a
diferena do frame type que no caso do RARP 0x8035. O
campo de operao 3 para um pedido e 4 para uma
resposta.

RARP
A implementao de um cliente RARP bastante simples,
mas a implementao de um servidor RARP bastante mais
complicada.
Um servidor RARP precisa de manter uma lista de endereos IP e
endereos de hardware correspondentes.
Como os kernels no podem ler ficheiros directamente a
funcionalidade de um servidor RARP tem de ser implementada como
um processo.
O RARP usa um tipo especifico de frame no nvel de ligao o que
implica que seja capaz de receber e enviar frames deste tipo.
Logo as implementaes de servidores RARP encontram-se bastante
ligadas a sistemas operativos especficos.

O RARP no permite o envio de outras informaes de


configurao importantes como a mascara de rede, o
default router, os servidores de DNS etc.
Actualmente usa-se o DHCP em vez do RARP.

Protocolo ICMP
(Nvel de rede)

ICMP
O ICMP (RFC 950) usado para transmitir mensagens de erro.
As mensagens de erro ICMP so produzidas pelas camadas IP,
TCP ou UDP.
As mensagens ICMP so transmitidas dentro de datagramas IP.
Como o ICMP encapsulado em datagramas IP tem as mesmas
propriedades:
No oferece garantias de que chegue um datagrama chegue ao
destino.
connectionless ou seja no mantida qualquer informao de
estado sobre datagramas sucessivos. Cada datagrama tratado
independentemente.
Datagrama IP
Cabealho
IP
(20)

Mensagem
ICMP

Formato de mensagem
ICMP
tipo
(8)

cdigo
(8)

checksum
(16)

Contedo dependendo do tipo e cdigo


.
.

Os primeiros 4 bytes de todos as mensagens ICMP so comuns.


O restante depende do tipo e cdigo de cada mensagem.
Existem 15 tipos principais de mensagens.
Alguns tipos de mensagem usam cdigos para especificar com
mais detalhe o tipo de condio que levou ao envio da mensagem.
O checksum cobre toda a mensagem ICMP e calculado usando
o mesmo mtodo do checksum IP.
As mensagens de erro ICMP contm:
O cabealho IP do datagrama IP que causou o erro.
Os primeiros 8 bytes de dados do datagrama IP que causou o erro.
Os 8 bytes de dados devem conter a maioria do cabealho L4 (TCP, UDP, etc)

ICMP
Para evitar broadcast storms as mensagens de erro
ICMP nunca so produzidas nas seguintes condies:
Em resposta a outra mensagem de erro ICMP.
Em resposta a um datagrama destinado a um endereo de
broadcast ou multicast IP.
Em resposta a um datagrama enviado como broadcast do nvel
de ligao.
Em resposta a um fragmento que no seja o primeiro.
Em resposta um datagrama cujo endereo de origem no
defina um sistema especifico.

Tipos de mensagens ICMP


Tipo

Cdigo

3
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Descrio
Resposta de eco (usado pelo Ping)
Destino no alcanvel
Rede no alcanvel
Sistema no alcanvel
Protocolo no alcanvel
Porta no alcanvel
Fragmentao necessria mas bit DF activo
Falha de source routing
Rede de destino desconhecida
Sistema de destino desconhecido
Sistema de origem isolado (obsoleto)
Rede de destino proibida administrativamente
Sistema de destino proibido administrativamente
Rede no alcanvel para o TOS especificado
Sistema no alcanvel para o TOS especificado
Comunicao administrativamente proibida
Precedncia de sistema violada
Cutoff de precedncia em efeito

Query

Erro

x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x

Tipos de mensagens ICMP


Tipo

Cdigo

Descrio

Source quench (router ou sistema em sobrecarga)

0
1
2
3

Redireco
Redireco para rede
Redireco para sistema
Redireco para tipo de servio e rede
Redireco para tipo de servio e sistema

x
x
x
x

Pedido de eco (Usado pelo Ping)

9
10

0
0

Anuncio de router
Pedido de router

x
x

0
1

Tempo excedido
Tempo de vida igual a zero durante transito
Tempo de vida igual a zero na reassemblagem

x
x

0
1

Problema de parmetros
Cabealho IP errado
Opo necessria no est presente

x
x

11

12

Query

Erro

Tipos de mensagens ICMP


Tipo

Cdigo

Descrio

Query

13
14

0
0

Pedido de acerto de tempo (timestamp)


Resposta de acerto de tempo (timestamp)

x
x

15
16

0
0

Pedido de informao (obsoleto)


Resposta de informao (obsoleto)

x
x

17
18

0
0

Pedido de mascara
Resposta de mascara

x
x

Erro

Existem outros tipos de mensagens ICMP:

Para o IPv6
Para mobilidade
Para traceroute experimental com IP options
Para aplicao experimental em protocolos de segurana AH
e ESP para autenticidade e encriptao
etc

Pedido de mascara e
resposta
Tipo 17 ou 18
(8)

Cdigo 0
(8)

Identificador
(16)

checksum
(16)
Numero de sequncia
(16)

Mascara de rede
(32)

usado para obter a mascara de rede.


O pedido enviado como um broadcast, varias respostas podem
ser obtidas.
O identificador e numero de sequncia podem ser qualquer valor
e so usados pelo cliente para poder emparelhar pedidos com
respostas.

Pedido de acerto de tempo e


resposta
Tipo 13 ou 14
(8)

Cdigo 0
(8)

Identificador
(16)

checksum
(16)
Numero de sequncia
(16)

Timestamp de partida no cliente


(32)
Timestamp de recepo no servidor
(32)
Timestamp de transmisso no servidor
(32)

usado para obter o tempo corrente a partir de outros sistemas.


Retorna o tempo em milissegundos deste a meia noite em tempo
universal coordenado (UTC). No fornece a data.
Infelizmente varias implementaes possuem problemas em
termos de preciso.
prefervel usar o protocolo NTP para acertar o tempo.

Destino no alcanvel
Tipo 3
(8)

Cdigo 0-15
(8)
Identificador
(16)

checksum
(16)
Numero de sequncia
(16)

No usado contedo sempre 0


(32)

Cabealho IP incluindo opes


do datagrama IP que originou a mensagem ICMP
mais os primeiros 8 bytes de dados do datagrama IP

As mensagens de destino no alcanvel incluem parte do


datagrama IP original, para que seja possvel determinar qual o
processo que originou o datagrama que provocou o erro de modo
a entregar-lhe o diagnostico de erro.
Os bytes 9 e 10 pode ser usados pelas mensagens cdigo 4 para
indicar o MTU da interface (fragmentation needed but DF bit set)

Ping
O Ping um programa que serve para determinar se outro
sistema est acessvel na rede IP.
Usualmente se um sistema no for capaz de responder a um
Ping tambm no ser capaz de responder a protocolos de
nvel mais alto:
Esta afirmao pode no ser verdade para sistemas protegidos por
firewalls.
A resposta a pedidos de echo ICMP pode estar inibida
Existem tambm alguns sistemas que carregam dinamicamente o
suporte para TCP/IP (antigo MacOS).

A componente de server do Ping implementada dentro do


kernel.
O cliente Ping usa mensagens ICMP de pedido de eco
dirigidas a um servidor.
O servidor responde a cada pedido de eco com uma
resposta de eco ICMP.
O Ping permite tambm obter o round trip time entre dois
sistemas

Eco ICMP
Tipo 0 ou 8
(8)

Cdigo 0
(8)

Identificador
(16)

checksum
(16)
Numero de sequncia
(16)

Dados opcionais

O identificador serve para identificar o processo cliente para o


caso de existirem vrios pings em execuo simultnea.
O nmero de sequncia incrementado em cada instancia para
cada mensagem de pedido de eco enviada.
O numero de sequncia permite saber quando as mensagens so
perdidas, duplicadas ou chegam fora de ordem.

Ping
O Ping pode ser usado de varias formas:
Para testar se um sistema est alcanvel enviando um nico
pedido de eco.
Para testar a conectividade medindo a perda de pacotes e o
RTT enviando pedidos de eco segundo a segundo.
Para testar a conectividade medindo a perda de pacotes e o
RTT mnimo, mximo e mdio enviando novos pedidos de eco
logo que as respostas aos anteriores chegam.
Verificar o MTU gerando pacotes de diferentes tamanhos

frequente que o RTT para a primeira mensagem de


ping seja mais lento devido:
necessidade de usar ARP para obter o endereo de
hardware do sistema de destino ou router.
Ao estabelecimento de entradas em tabelas de switches.
Ao estabelecimento de circuitos.
abertura de linhas dialup.

Opo de registo de rota


A opo IP de registo de rota (RR) faz com que cada router ao
longo do percurso adicione o seu endereo IP da interface de
sada a uma lista na rea do datagrama reservada s opes.
O comando ping possui geralmente uma opo que permite
activar a opo de registo de rota.
Quando o datagrama chega ao destino a lista de endereos IP
copiada para o datagrama de resposta de eco.
Infelizmente existem alguns problemas:
A suporte para a opo RR opcional nos clientes, routers e
servidores.
O numero de endereos podem ser registados de apenas 9.

Estas insuficincias tornam a opo RR pouco til.


Cdigo
7
(1)

Compr.
39
(1)

Ptr
4 - 40
(1)

Ender
IP 1
(4)

Ender
IP 2
(4)

Ender
IP 3
(4)

...............

Ender
IP 9
(4)

Opo de registo de tempo


A opo IP de registo de tempo similar opo de registo
de rota.
Cdigo
0x44
(1)

Compr.
36 - 40
(1)

Ptr
4 - 40
(1)

OF FL
(1)

Tempo
1
(4)

Tempo
2
(4)

Tempo
3
(4)

. . . . . . . . . . . .. .

Tempo
9
(4)

O campo FL (flags) tem o seguinte significado:


0 regista apenas o tempo por cada router que atravessado.
1 regista o tempo e o endereo IP de cada router.
3 os campos so inicializados com 4 pares de endereos IP.
Cada router compara o seu endereo com os endereos da
lista, se for igual preenche o campo de tempo correspondente.
Se a lista encher, cada router incrementa o campo OF.
O formato do tempo o numero de milissegundos desde a meia
noite UTC

Traceroute
O comando traceroute uma ferramenta de debugging para
redes IP que permite ver qual a rota que o trfego segue entre
dois sistemas.
O traceroute no usa a opo IP de registo de rota.
O comando traceroute funciona:
Enviando datagramas UDP para o host de destino usando uma porta
UDP de destino potencialmente livre ( > 30000).
O que faz gerar um ICMP porta no alcanvel quando chega ao
destino.

O traceroute determina os routers que so atravessados:


Enviando 3 datagramas UDP com TTL comeando em 1 e que so
incrementado para cada conjunto de 3 datagramas.
Cada router decrementa o TTL e caso este seja 0 deita fora o
datagrama enviando uma mensagem ICMP de tempo excedido.
assim possvel obter os endereos dos routers pois estes so os
endereo de origem das mensagem ICMP de tempo excedido.

Traceroute
O traceroute permite tambm obter o RTT entre o sistema de
origem e cada router intermedirio at ao sistema de destino,
atravs da cronometragem do envio de cada datagrama UDP at
recepo da mensagem de erro ICMP correspondente.
Ateno:
Como o routing IP dinmico no existe nenhuma garantia que todos
os datagramas usados num traceroute sigam o mesmo percurso.
O percurso que as mensagens ICMP seguem pode ser diferente do
percurso dos datagramas UDP (routing assimtrico).
Por estas razes no se pode tirar concluses sobre o tempo de
demora a alcanar um determinado router, porque no sabemos o
tempo de cada um dos trajectos mas sim o somatrio da ida e volta.
Para se determinar o caminho no sentido contrario preciso:
pedir a algum que esteja do outro lado para efectuar um traceroute no
sentido inverso.
Usar loose source routing

Traceroute
$ traceroute www.google.com
traceroute to www.google.com (74.125.77.147), 30 hops max, 60 byte packets
1 swlip01-lan.lip.pt (10.0.0.254) 0.522 ms 0.613 ms 0.702 ms
2 gtlip-routers.lip.pt (172.16.1.1) 2.352 ms 2.385 ms 2.412 ms
3 193.137.1.233 (193.137.1.233) 3.960 ms 3.998 ms 4.035 ms
4 ROUTER4.10GE.Lisboa.fccn.pt (193.137.0.20) 4.077 ms 4.115 ms 4.153 ms
5 fccn.rt1.mad.es.geant2.net (62.40.124.97) 13.460 ms 13.617 ms 13.716 ms
6 so-7-2-0.rt1.gen.ch.geant2.net (62.40.112.25) 36.140 ms 35.973 ms 36.536 ms
7 so-3-3-0.rt1.fra.de.geant2.net (62.40.112.70) 44.363 ms 42.977 ms 43.082 ms
8 TenGigabitEthernet7-3.ar1.FRA4.gblx.net (207.138.144.45) 43.478 ms 42.763 ms 42.832 ms
9 67.16.133.34 (67.16.133.34) 43.892 ms 44.030 ms 44.167 ms
10 google-1.ar4.fra3.gblx.net (64.208.110.14) 43.931 ms 43.483 ms 43.617 ms
11 209.85.255.172 (209.85.255.172) 51.503 ms 50.539 ms 209.85.255.170 (209.85.255.170) 55.306 ms
12 72.14.232.208 (72.14.232.208) 72.901 ms 209.85.248.182 (209.85.248.182) 74.347 ms 75.180 ms
13 64.233.175.246 (64.233.175.246) 83.199 ms 78.545 ms 78.182 ms
14 209.85.255.143 (209.85.255.143) 78.961 ms 72.14.239.197 (72.14.239.197) 79.665 ms 79.587 ms
15 209.85.255.110 (209.85.255.110) 79.509 ms 209.85.255.106 (209.85.255.106) 79.238 ms 79.644 ms
16 ew-in-f147.1e100.net (74.125.77.147) 80.580 ms 81.603 ms 81.060 ms

mtr

O mtr similar ao traceroute mas melhor


Combina a funcionalidade do traceroute e do ping numa nica ferramenta
Usa datagramas ICMP de eco
Requer previlegios de root

[root@pcjorge jorge]# mtr --report -c4 www.google.com


HOST: pcjorge.lip.pt
Loss% Snt Last Avg Best Wrst StDev
1. swlip01-lan.lip.pt
0.0% 4 0.4 0.5 0.4 0.5 0.0
2. gtlip-routers.lip.pt
0.0% 4 0.2 0.3 0.2 0.3 0.0
3. 193.137.1.233
0.0% 4 0.6 1.1 0.6 2.5 1.0
4. ROUTER4.10GE.Lisboa.fccn.pt
0.0% 4 0.5 0.5 0.5 0.5 0.0
5. fccn.rt1.mad.es.geant2.net
0.0% 4 12.3 12.3 12.3 12.4 0.0
6. so-7-2-0.rt1.gen.ch.geant2.n
0.0% 4 34.5 34.4 34.3 34.5 0.1
7. so-3-3-0.rt1.fra.de.geant2.n
0.0% 4 42.5 42.5 42.4 42.5 0.0
8. TenGigabitEthernet7-3.ar1.FR
0.0% 4 42.8 42.7 42.6 42.8 0.1
9. 67.16.133.34
0.0% 4 42.9 42.9 42.9 43.0 0.1
10. google-1.ar4.fra3.gblx.net
0.0% 4 42.8 42.9 42.8 42.9 0.1
11. 209.85.255.170
0.0% 4 49.8 45.3 43.0 49.8 3.1
12. 72.14.232.208
0.0% 4 75.5 76.7 73.9 81.8 3.5
13. 64.233.175.246
0.0% 4 162.6 99.9 77.8 162.6 41.8
14. 72.14.239.197
0.0% 4 78.9 79.3 76.5 83.9 3.2
15. 209.85.255.102
0.0% 4 79.0 81.0 75.8 91.6 7.2
16. ew-in-f99.1e100.net
25.0% 4 80.4 78.5 77.1 80.4 1.7

Opo de source routing


O routing IP dinmico com cada router a decidir qual o prximo
router para onde enviar um determinado datagrama.
As aplicaes no interferem no mecanismo normal de routing.
O source routing permite que seja o processo que envia os dados
a especificar o caminho que deve ser percorrido at ao destino.
Existem duas formas de source routing:
Strict source routing: especificado o caminho exacto a percorrer.
Se um router encontrar na opo de source routing um prximo
router que no esteja numa rede directamente conectada o
datagrama deitado fora e uma mensagem ICMP de falha de source
routing enviada.
Loose source routing: so especificados alguns dos routers pelos
quais o datagrama tem de passar. O datagrama pode passar por mais
routers do que os especificados e entre estes usado routing normal.

Alguns verses de traceroute permitem o uso de source routing.

Opo de source routing


Cdigo
0x83 0x89
(1)

Compr.
39
(1)

Ptr
4 - 40
(1)

Ende
r IP 1
(4)

Ende
rIP 2
(4)

Ende
r IP 3
(4)

...............

Ende
r IP 9
(4)

O formato da opo IP de source routing idntico ao formato da


opo RR. O cdigo 0x83 para loose 0x89 para strict.
Com funciona:
O host de origem remove a primeira entrada da lista e usa-a como
endereo de destino. Toda a lista movida para a esquerda uma
posio. O endereo de destino original guardado na ultima posio
da lista direita.
Cada router verifica se o destino do datagrama. Se no for o destino
e a opo for strict o datagrama deitado fora e um erro enviado,
se for loose o datagrama enviado seguindo as regras normais de
encaminhamento.
Se o router for o destino a posio da lista indicada pelo ponteiro
usada como prximo destino. O endereo da interface de sada do
router guardada na posio indicada pelo ponteiro, e finalmente o
ponteiro incrementado 4 bytes.

Traceroute
Anteriormente foi dito que para verificar o trajecto no
sentido inverso se podia usar loose source routing
juntamente com o traceroute.
O truque consiste em usar o endereo do host remoto
a partir do qual pretendemos efectuar o traceroute
como um endereo da lista de loose routers e o
endereo da maquina de origem como destino final.
1
2
3

Origem

R1

R2

Destino

Fragmentao requerida
Tipo 3
Cdigo 4
checksum
(8)
(8)
(16)
Campo no usado (zero)
MTU da interface causadora
(16)
(16)
Cabealho IP incluindo opes
do datagrama IP que originou a mensagem ICMP
mais os primeiros 8 bytes de dados do datagrama IP

Esta mensagem de erro enviada quando se conjuga:


datagrama com o bit de dont fragment activo
datagrama demasiadamente grande para ser enviado sem
fragmentao.

Este tipo de mensagem pode ser usado para determinar o


MTU mximo suportado entre duas maquinas.
Alguns routers no preenchem o MTU da interface
causadora.
Dificulta o uso do Path MTU discovery

MTU de um trajecto
Existe um mtodo de ajuste dinmico do MTU (RFC 1191)
que permite enviar datagramas com um tamanho mximo
que no ultrapasse o MTU de um trajecto:
O mtodo consiste em enviar datagramas com o bit de dont
fragment activo.
O primeiro datagrama possui uma tamanho igual ao MTU da interface
da maquina de origem.
Se o datagrama ultrapassar o MTU de alguma interface ao longo do
trajecto ento uma mensagem de erro de fragmentao requerida
recebida.
Se mensagens de erro forem recebidas o tamanho dos datagramas
diminudo para o MTU especificado na mensagem de erro.
Caso o campo MTU da mensagem de erro esteja a zero o tamanho do
datagrama diminudo de acordo com uma tabela.
O MTU recalculado para cada trajecto de 10 em 10 minutos.

Router ou host em sobrecarga


Tipo 4
(8)

Cdigo 0
(8)

checksum
(16)

Campo no usado (zero)


(32)
Cabealho IP incluindo opes
do datagrama IP que originou a mensagem ICMP
mais os primeiros 8 bytes de dados do datagrama IP

Esta mensagem de erro enviada quando um sistema (host ou


router) recebe datagramas IP a um ritmo demasiado elevado para
poderem ser processados.
Um sistema no obrigado a enviar este tipo de mensagem.
Usualmente o TCP diminui o ritmo de envio de datagramas
quando recebe esta mensagem.
Algumas implementaes UDP passam a mensagem aplicao
que est a gerar os datagramas (o BSD original no o faz).

Redireco ICMP
Uma mensagem de redireco ICMP enviada por um router para
o endereo IP de origem de um datagrama, quando o datagrama
deveria ter sido enviado para outro router.
Por exemplo:
Uma maquina envia um datagrama para o default router.
O default router verifica a sua tabela de routing e determina
que o datagrama dever ser encaminhado para outro router.
Se o default router determina que a interface que deve usar
para enviar o datagrama para o outro router a mesma
interface pela qual o datagrama foi recebido ento:
O datagrama encaminhado para o router.
Uma mensagem de ICMP redirect enviada para o endereo IP da
maquina de origem indicando que futuros datagramas devem ser
enviados directamente para o outro router. Esta mensagem d
origem adio de uma nova rota na maquina de origem.

Redireco ICMP
A

Router X

Router Y

O sistema A possui uma default route atravs do router X


O sistema A envia um pacote IP para B atravs do router X
O router X recebe o pacote e percebe que ele prprio no a melhor rota
porque :
Existe um router Y que anuncia melhor conectividade para a rota
O router Y acessvel atravs da interface pela qual o pacote foi recebido

O router X envia uma mensagem de ICMP redirect para A indicando que o


router correcto para a rota em questo e o router Y
O sistema A recebe a mensagem ICMP e actualiza a sua tabela de routing

Encaminhamento IP
Nvel de transporte
(TCP, UDP etc.)

ICMP

Comando
netstat
ou route

Sim
Endereo IP de destino
um endereo de
No
multicast ou broadcast,
?
ou endereo de uma
interface local ?

Funo
IP de sada
determinar
prximo
router

Tabela de
encaminhamento

Processamento
de opes IP

Nvel de ligao
(driver de rede)

Rede

Processos
de routing

Comandos
de routing

Redireco ICMP
Tipo 5
(8)

Cdigo 0-3
(8)

checksum
(16)

Endereo IP do novo router a ser usado


(32)
Cabealho IP incluindo opes
+
os 8 primeiros bytes dos dados transportados pelo datagrama

Existem 4 tipos de mensagens de redireco:

0 redireco para uma rede


1 redireco para um host
2 redireco para tipo de servio mais rede
3 redireco para tipo de servio mais host

Descoberta de routers com


ICMP
Usando as mensagens ICMP de pedido e anuncio de router
possvel definir automaticamente o default router nas
maquinas de uma rede:
Quando o sistema faz boot envia um broadcast ou multicast 224.0.0.2
(all routers) pedindo aos routers da rede que enviem o endereo da
sua interface.
Os routers respondem com mensagens de anuncio de router via
broadcast ou multicast para 224.0.0.1 (all hosts).
Cada mensagem pode incluir vrios endereos e cada endereo
possui associado um valor de preferncia.
Os valores de preferncia devem ser configurados pelos
administradores de sistema.
O sistema escolhe a rota com maior valor de preferncia

Este sistema permite implementar uma forma simples de


redundncia na default route
Se um router for abaixo deixa de anunciar e outra rota anunciada por
outro router poder ser escolhida
O sistema pode verificar se a rota valida atravs de informao
proveniente do nvel TCP, respostas ARP, ping etc.

Descoberta de routers com


ICMP
Periodicamente e de forma aleatria os routers enviam para
a rede estas mesmas mensagens
Permite garantir que todos os sistemas possuem as suas tabelas de
routing actualizadas
Permite que caso um router desaparea outro seja escolhido
Permite que caso surja uma melhor rota esta seja escolhida
TTL de cada router aprendido 30 de minutos
Os anncios so enviados aproximadamente de 7 em 7 minutos
Anuncio por broadcast ou multicast para o grupo 224.0.0.1 (all hosts)

Do lado dos hosts a funcionalidade deve ser implementada


por um processo que deve correr permanentemente.
No praticamente usado pois o DHCP permite efectuar a
configurao do default router

Descoberta de routers com


ICMP

Solicitao de router
Tipo 10
(8)

Cdigo 0
(8)

checksum
(16)

No usado (valor zero)


(32)

Anuncio de router
Tipo 9
(8)
N de endereos
(8)

Cdigo 0
(8)
Tama. de endereo
(8)

checksum
(16)
Tempo de vida em segundos
(16)

Endereo IP do router
(32)
Nvel de preferncia
(32)

Protocolo UDP
(Nvel de transporte)

Protocolo UDP
O UDP um protocolo de transporte simples que no oferece
garantia de chegada ao destino e sequncia de chegada dos seus
datagramas.
Em UDP cada operao de output de um programa gera
exactamente um nico datagrama UDP.
Os programas que utilizam UDP devem preocupar-se com o
tamanho dos datagramas IP que so gerados a partir dos
datagramas UDP de forma a no ultrapassar o MTU.

Se o MTU for excedido o datagrama ser fragmentado.

Encapsulamento UDP
Cabealho
IP
(20)

Cabealho
UDP
(8)

DADOS
UDP

Protocolo UDP
Qual ento o tamanho mximo de dados que pode ser
enviado num datagrama UDP:
Teoricamente o tamanho maximo de datagrama IP 65535
bytes
Retirando o header IP (20 bytes) e o header UDP (8 bytes)
sobram 65507 bytes para dados
Se o datagrama IP for superior ao MTU vai ocorrer
fragmentao (deve-se evitar a fragmentao !!!)
Na prtica:
O tamanho mximo de buffer UDP limita frequentemente a recepo dos
segmentos. O tamanho mximo dos pacotes NFS so frequentemente o
limite (8192 bytes em NFSv2, 32KB ou 54KB em verses mais recentes).
Deve-se ser muito cuidado com o tamanho dos datagramas especialmente
em ligaes WAN onde o MTU pode ser mais pequeno que na LAN.
Muitas aplicaes limitam os dados UDP a 512 bytes ou menos para ficarem
dentro do tamanho de datagrama IP garantido 576 bytes

Protocolo UDP
Porta de origem
(16)

Porta de destino
(16)

Tamanho
(16)

Checksum UDP
(16)
Dados

As portas identificam os processos de origem e destino.


O tamanho corresponde ao tamanho do cabealho UDP e dados.
O checksum UDP opcional e cobre o cabealho e dados.
Como os dados podem ter um tamanho impar um byte a zero pode ser
adicionado se necessrio para efeitos de calculo de checksum.
O UDP (e TCP) incluem no calculo do checksum alguns campos do
protocolo IP (IP pseudo header) para garantir a integridade do
datagrama.

Protocolo UDP
O facto de o protocolo IP e UDP poderem suportar datagramas de
um determinado tamanho no quer dizer que todas as aplicaes
suportem esse tamanho.
Os APIs UDP permitem s aplicaes definir qual o tamanho
mximo de datagrama que desejam receber.
Quando um datagrama superior ao mximo que uma aplicao
deseja receber o resultado depende da implementao do API.
BSD: o datagrama truncado e o excesso deitado fora. As verses
mais recentes permitem notificar a aplicao da ocorrncia da
truncagem (Linux).
SVR4 socket API: No trunca o datagrama e o excesso retornado
em chamadas subsequentes. A aplicao no notificada.
TLI API: No trunca o datagrama e o excesso retornado em
chamadas subsequentes. Uma flag indica ao programa que deve
efectuar mais reads para obter o resto do datagrama.

Servidores UDP
Para receber ou transmitir datagramas UDP um programa tem de
se associar (efectuar o bind) a uma ou mais portas UDP.
Em sistemas com mltiplos endereos IP possvel especificar num programa
qual o endereo utilizar para receber datagramas
Usualmente um programa quando efectua o bind este feito sobre todos os
endereos IP do sistema.

Os servidores UDP so normalmente iterativos ou seja processam


um pedido de cada vez.

Associada a cada porta UDP em uso existe um fila de tamanho


limitado para receber datagramas que depois so entregues ao
processo.
Desta forma se vrios clientes enviarem pedidos a um servidor estes ficam em
fila de onde o servidor os vais ler.
Se muitos pedidos chegarem simultaneamente a fila enche, os prximos
pedidos a chegar so perdidos e uma mensagem ICMP de sobrecarga
enviada para as maquinas que os originaram.

Servidores UDP
Normalmente um programa servidor pode receber
datagramas UDP de qualquer endereo IP.
possvel definir qual o endereo IP remoto e porta
UDP remota dos quais um programa aceita receber
datagramas UDP.
Resumindo:
Local

Remoto

IP.porta

IP.porta

IP.porta

*.*

*.porta

*.*

Descrio da restrio de acesso


Acesso restrito a um cliente
Restrito a datagramas que cheguem a um endereo
fixo
Aceita todos os datagramas

Servidores UDP
Processos UDP:

$ netstat --udp -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address
Foreign Address
udp
0
0
*:syslog
*:*
udp
0
0
*:snmp
*:*
udp
0
0
*:sunrpc
*:*
udp
0
0
*:ipp
*:*
udp
0
0
*:ntp
*:*

Servidores UDP
Restrio de acesso:
Proto Recv-Q Send-Q Local Address
udp
0
0
127.0.0.1:ntp

Foreign Address
*:*

Proto Recv-Q Send-Q Local Address


udp
0
0
*:ntp

Foreign Address
197.44.67.51:*

Proto Recv-Q Send-Q Local Address


udp
0
0
*:ntp

Foreign Address
197.44.67.51:123

Tambm valido para o TCP


Implica que o programa tenha sido escrito para permitir este tipo
de restrio
Na pratica as restries so implementadas:
Nas firewalls
Por bibliotecas como o libwrap (TCP wrapper) nos processos servidores

TFTP
(Trivial File Transfer
Protocol)

TFTP
O TFTP frequentemente usado para transferir o
sistema operativo e ficheiros de configurao
Ex. durante o boot de dispositivos de rede.

O TFTP usa UDP para ser simples e compacto de modo


a poder ser facilmente incorporado em BOOT ROMs.
Os comandos que um cliente pode enviar ao servidor
so:
Leitura de um ficheiro
Escrita de um ficheiro

O TFTP no possui qualquer forma de autenticao ou


segurana.
A maior parte dos servidores TFTP possuem a possibilidade de
definir qual o directrio ou directrios que podem ser
acedidos remotamente.

TFTP
Mensagem TFTP
Header
IP
(20)

Opcodes
1 - Leitura
2 - Escrita
3 - dados
4 - ACK
5 - Erro

Header
UDP
(8)

opcode
1 ou 2
(2)

Nome do ficheiro
(n)

opcode
3
(2)

Numero
de bloco
(2)

opcode
4
(2)

Numero
de bloco
(2)

opcode
5
(2)

Numero
de erro
(2)

Zero
0
(1)

modo
(n)

Dados
(0-512)

Mensagem
de erro
(n)

Zero
0
(1)

Zero
0
(1)

TFTP
Cada transferncia entre cliente e servidor comea com o cliente
enviando um pedido de leitura ou escrita de um ficheiro.
Na maior parte dos casos a transferncia uma leitura.
Os primeiros dois bytes de uma mensagem tftp possuem um
cdigo de operao que indica tambm qual o restante formato
da mensagem.
Para uma leitura ou escrita segue-se o nome do ficheiro
terminado por um byte contendo zero.
Segue-se o modo de codificao dos dados que consiste numa
sequencia de caracteres terminando num byte contendo zero. As
duas possibilidades so:
octet : sequencia binria sem interpretao.
netascii : sequencia de linhas de texto ASCII terminadas por CRLF.

Cada pacote de dados contm um numero de bloco que usado


posteriormente para efectuar a notificao da chegada.

TFTP
O protocolo funciona em modo start-and-wait
o transmissor envia um pacote de dados e espera pela
confirmao de chegada (ACK) desse pacote antes de enviar
o prximo.

Uma vez que o TFTP usa o protocolo UDP necessria


a existncia de um mecanismo de timeout e
retransmisso
Os dados so transferidos em blocos de 512 bytes de
cada vez.
As mensagens de erro causadas por problemas de
acesso aos ficheiros contm:
um numero de erro
uma mensagem explicativa terminando num byte com zero.

TFTP
De modo a poder lidar com vrios clientes simultaneamente o
protocolo TFTP prev que:
O primeiro datagrama UDP contendo o pedido de leitura ou escrita
seja enviado pelo cliente para a porta UDP 69 do servidor.
O servidor aloca para esta ligao uma porta efmera e responde ao
cliente usando a porta efmera em vez da porta 69.
O cliente detecta que o servidor mudou de porta e est a usar uma
porta efmera, a partir deste momento o cliente passa a enviar os
datagramas para o servidor nesta nova porta UDP.

Cliente

Servidor

51357

69

51357

1039

51357

1039

51357

1039

BOOTP
(Bootstrap Protocol)

BOOTP
Tal como RARP o BOOTP permite que um sistema que no
conhea o seu endereo IP, o possa obter atravs da rede.
O BOOTP possui vantagens sobre o RARP:
Permite obter informao adicional para alm do endereo IP.
Como funciona sobre UDP pode atravessar varias redes fsicas, o
RARP no encaminhado por routers e por isso precisa de um
servidor em cada rede fsica.

O BOOTP funciona sobre UDP e frequentemente usado em


combinao com o TFTP.
O BOOTP obtm informao para efectuar a configurao de rede e o
nome do ficheiro de boot.
O TFTP usado para transferir o ficheiro de boot.

Header
IP
(20)

Header
UDP
(8)

Pedido / Resposta BOOTP


(300)

BOOTP
Opcode
(8)

Tipo de Hardware
Comp.end. hardw
Contador de salto
(8)
(8)
(8)
Identificador de transaco
(32)
Numero de segundos
No usado
(16)
(16)
Endereo IP do cliente
(32)
Endereo IP resposta
(32)
Endereo IP do servidor
(32)
Endereo IP do router
(32)
Endereo de hardware do cliente
(16bytes)
Nome do servidor
(64bytes)
Nome do ficheiro de boot
(128bytes)
Outra informao
(64bytes)

BOOTP
Os campos de uma mensagem BOOTP so:
Opcode: Tipo de mensagem (1 pedido, 2 resposta).
Tipo de hardware: Tipo de rede local (1 ethernet).
Comp.end. Hardw: Comprimento do endereo de hardware (6 para ethernet).
Contador de salto: Inicializado a zero pode ser usado por um proxy.
Identificador de transaco: inicializado pelo cliente e retornado pelo
servidor.
Numero de segundos: inicializado pelo cliente quando inicializa o processo
de boot. Pode ser usado por um servidor secundrio para que responda aps
um determinado intervalo de tempo em que no haja resposta do servidor
primrio.
Endereo IP do cliente: Se o cliente conhecer o seu endereo preenche-o caso
contrario inicializa-o a zero.
Endereo IP reposta: Preenchido pelo servidor com o endereo IP do cliente
quando o campo Endereo IP do cliente chega com valor zero.
Endereo IP do servidor: Endereo do servidor que responde.
Endereo IP do router: Se um proxy for usado deve preencher este campo com
o seu endereo.
Endereo de hardware do cliente: Preenchido pelo cliente.

BOOTP
Os campos de uma mensagem BOOTP so (continuao):
Nome do servidor: Opcionalmente preenchido pelo servidor.
Nome do ficheiro de boot: Opcionalmente preenchido pelo servidor.
Outra informao: Suporte para varias extenses.

O endereo de origem de um datagrama BOOTP usualmente


0.0.0.0 e o endereo de destino 255.255.255.255.
O BOOTP usa duas portas UDP
67 para o servidor
68 para o cliente (o cliente no usa uma porta efmera).

A utilizao de uma porta fixa pelo cliente deve-se ao facto de a


resposta UDP poder ser um broadcast (embora usualmente no
seja):
logo outras aplicaes em outros sistemas usando a mesma porta poderiam
receber a resposta BOOTP.
O cliente tambm no pode partilhar a porta do servidor porque nesse caso
todos os servidores receberiam as respostas enviadas por outros servidores.

BOOTP
O cliente BOOTP normalmente disponibilizado na memoria ROM
de dispositivos de rede sem disco.
Descrio do funcionamento do servidor :
Escuta por datagramas UDP com pedidos BOOTP na porta 67.
Consulta uma tabela local contendo informao sobre os clientes
BOOTP.
A tabela indexada atravs do endereo de hardware do cliente.

A resposta ao cliente apresenta um problema:


Normalmente para um datagrama ser enviado para o destino necessrio
obter o endereo de hardware do destino atravs de uma traduo ARP.
Neste caso o destinatrio do datagrama ainda no conhece o seu
endereo IP.
A primeira soluo consiste em responder com um broadcast em vez de
responder directamente ao cliente. O cliente identifica que a resposta
para si atravs do Identificador de transaco.
A segunda soluo consiste em usar o endereo de hardware do cliente
contido no pedido, e criar uma entrada na tabela local de ARP do servidor
com os endereos de hardware e IP do cliente.

BOOTP
As mensagens BOOTP podem atravessar routers desde que esta
funcionalidade seja suportada pelo router:
Um pedido BOOTP um broadcast logo no atravessa redes IP.
Se o router suportar a funcionalidade de BOOTP proxy, ento quando
receber um pedido BOOTP na sua porta 67:
Aceita o pedido como se fosse um servidor.
Actualiza o campo do pedido correspondente ao Endereo IP do router.
Envia-o directamente para o servidor BOOTP em modo unicast. Podendo
assim atravessar outros routers de forma transparente.

O verdadeiro servidor BOOTP recebe o pedido enviado pelo router e


responde ao cliente indirectamente atravs do router.
O router recebe a resposta do servidor de BOOTP e envia-a ao
cliente.

O BOOTP possui um campo de 64 bytes para a transmisso de


informao complementar opcional.
Os primeiros 4 bytes deste espao so inicializados com o
endereo 99.130.83.99 para indicar que existem opes validas.

BOOTP
Fim da lista
de opes

Tipo=255
(1)

Pad

Tipo=0
(1)

Mascara de
Subnet

Tipo=1
(1)

Tam.=4
(1)

Mascara de subnet
(4)

Offset
temporal

Tipo=2
(1)

Tam.=4
(1)

Tempo
(4)

Router

Tipo=3
(1)

Tam.=n
(1)

Router preferido
(4)

2 router
(4)

...

O campo tipo identifica o contedo da opo.


Podem existir mltiplas opes numa nica resposta.
O tipo 255 indica o fim da lista de opes.
O tipo 0 usado para alinhar as opes.

BOOTP
Existem varias opes possveis incluindo:

Mascara de subnet.
Offset temporal em segundos da rede do cliente em relao ao UTC.
Lista de routers na rede do cliente por o ordem de preferncia.
Lista por ordem de preferncia de servidores de tempo.
Lista por ordem de preferncia de servidores de DNS.
Lista por ordem de preferncia de servidores de logging.
Lista por ordem de preferncia de servidores de impresso.
Nome do cliente.
Tamanho do ficheiro de boot.
Nome do domnio DNS do cliente.
Endereo do servidor de swap.
Pathname para um directrio contendo a root do cliente.
Endereo de broadcast.
Etc.

O espao de 64 bytes demasiado curto para algumas aplicaes


um novo protocolo baseado no BOOTP e designado DHCP foi criado.
O DHCP possui um espao de 312 bytes para opes.

Você também pode gostar