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.

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

O cabealho IP
verso (4) tamanho (4) Tipo de servio (8) flags (3) protocolo (8) tamanho total em bytes (16) offset do fragmento (13) checksum do cabealho (16) identificao (16) tempo de vida (8)

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 1 2

Tipo de servio (4) 3 4 5 6

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 Minimizao de atrasos Bit 3
1 1 1 0 1 1 0 0 0 0

Maximizar Transferncia Bit 4


0 0 0 1 0 0 1 0 0 0

Maximizar Fiabilidade Bit 5


0 0 0 0 0 0 0 1 0 1

Minimizar Custos Bit 6


0 0 0 0 0 0 0 0 1 0

Valor Hex
0x10 0x10 0x10 0x08 0x10 0x10 0x08 0x04 0x02 0x04

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

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.

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


Net 193.137.55 24 bits 254 Hosts 8 bits

Subnets

Net 193.137.55

16 SubNets

14 Hosts

24 bits

4 bits

4 bits

Net 193.137.55 24 bits

64 SubNets 6 bits

2 Hosts 2 bits

Net 193.137.55 24 bits

4 SN 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 8 SN 30 Hosts

24 bits

3 bits

5 bits

Endereo IP(2) 00000000 00100000 01000000 01100000 10000000 10100000 11000000 11100000

Endereo IP(10) 0 32 64 96 128 160 192 224

Endereo IP das subnets (10) 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 24 bits 8 SN 3 bits 30 Hosts 5 bits

Internet

Router

Router
193.137.55.16 00100000(2)

Router

193.137.55.160 10100000(2)

Router
193.137.55.64 01000000(2)

Router
193.137.55.96 01100000(2)

193.137.55.128 10000000(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 24 bits 8 SN 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 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) 00000000 00100000 01000000 01100000 10000000 10100000 11000000 11100000 Endereo IP(10) 0 32 64 96 128 160 192 224 Mascara(2) 11100000 11100000 11100000 11100000 11100000 11100000 11100000 11100000 Mascara(10) 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 8 SN 30 Hosts

24 bits

3 bits

5 bits

Endereo IP das subnets (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

Mascara (10) 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 Subnet Host 0 hostid qualquer 1 1 1 1 Pode aparecer como origem OK OK OK nunca nunca nunca nunca destino nunca nunca OK OK OK OK OK 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 Descrio

subnetid 1

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 Subnet Host 0 hostid qualquer 1 1 1 1

Pode aparecer como origem OK OK OK nunca nunca nunca nunca destino nunca nunca OK OK OK OK OK

Descrio

subnetid 1

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

R1

R2

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

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

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 ? IP

No O sistema um router Sim

No

Datagrama eliminado

Nvel de ligao (driver de rede)

Funo IP de sada Consulta da tabela de encaminhamento

Para onde ou por onde enviar o datagrama IP ?

Rede

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

Para o destino 0.0.0.0 mascara 0.0.0.0 (default route)

# 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) endereo Origem (6) tipo 0x0806 (2) DADOS (46-1500) trailer CRC (4)

Tipo hard (2)

Tipo proto (2)

Compr. hard (1)

Compr. proto (1)

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.

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

Funcionamento do ARP

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.

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.

Funcionamento do ARP

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
00:BB:D1:A3:F0:01

193.145.9.2
00:AA:C1:FE:B7:FE

193.145.9.3
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

Host

Proxy ARP On behalf of the PPP hosts

193.137.55.19 255.255.255.0

PPP

Host

Router
ARP Reply

193.137.55.17 255.255.255.0

host
ARP Req Broadcast

193.137.55.78 255.255.255.0

193.137.55.18 255.255.255.0

Host

193.137.55.0 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 0 3 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Cdigo 0 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 x x x x x x x x x x x x x x x x x Erro

Tipos de mensagens ICMP


Tipo 4 5 0 1 2 3 8 0 Cdigo 0 Descrio Source quench (router ou sistema em sobrecarga) Redireco Redireco para rede Redireco para sistema Redireco para tipo de servio e rede Redireco para tipo de servio e sistema Pedido de eco (Usado pelo Ping) x Query Erro x x x x x

9 10
11

0 0
0 1

Anuncio de router Pedido de router


Tempo excedido Tempo de vida igual a zero durante transito Tempo de vida igual a zero na reassemblagem Problema de parmetros Cabealho IP errado Opo necessria no est presente

x x
x x x x

12 0 1

Tipos de mensagens ICMP


Tipo 13 14 15 16 Cdigo 0 0 0 0 Descrio Pedido de acerto de tempo (timestamp) Resposta de acerto de tempo (timestamp) Pedido de informao (obsoleto) Resposta de informao (obsoleto) Query x x x x Erro

17 18

0 0

Pedido de mascara Resposta de mascara

x x

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) checksum (16) Numero de sequncia (16) Mascara de rede (32) Identificador (16)

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) checksum (16) Numero de sequncia (16) Identificador (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) checksum (16) Numero de sequncia (16) Dados opcionais Identificador (16)

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) 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 checksum (16)

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

Comando netstat ou route

Tabela de encaminhamento

Processamento de opes IP

Nvel de ligao (driver de rede)

Processos de routing

Comandos de routing

Rede

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

Solicitao de router
Tipo 10 (8)

Descoberta de routers com ICMP


Cdigo 0 (8) No usado (valor zero) (32) checksum (16)

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) Tamanho (16) Dados Porta de destino (16) Checksum UDP (16)

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 IP.porta IP.porta *.porta Remoto IP.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 Proto Recv-Q Send-Q Local Address udp 0 0 *:ntp Proto Recv-Q Send-Q Local Address udp 0 0 *:ntp Foreign Address *:* Foreign Address 197.44.67.51:* 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) Header UDP (8) opcode 1 ou 2 (2) Nome do ficheiro (n) Zero 0 (1) modo (n) Zero 0 (1)

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

opcode 3 (2)

Numero de bloco (2)

Dados (0-512)

opcode 4 (2)

Numero de bloco (2)

opcode 5 (2)

Numero de erro (2)

Mensagem de erro (n)

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 51357 51357 51357 51357

Servidor 69 1039 1039 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) Tipo=0 (1) Tipo=1 (1) Tipo=2 (1) Tipo=3 (1) Tam.=4 (1) Tam.=4 (1) Tam.=n (1) Mascara de subnet (4) Tempo (4) Router preferido (4) 2 router (4)

Pad
Mascara de Subnet Offset temporal Router

...

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