Vous êtes sur la page 1sur 5

Redes TCP/IP - Aula 13

Fragmentação Datagrama IP

1. Fragmentação

a) Formado de Cabeçalho + Dados

0 4 8 16 24 31
VERSÃO HLEN TIPO DE SERVIÇO COMPRIMENTO TOTAL
IDENTIFICAÇÃO FLAGS DESLOCAMENTO
(0,DF,MF) FRAGMENTO
TEMPO DE VIDA PROTOCOLO VERIFICAÇÃO SOMA DO CABEÇALHO
ENDEREÇO IP DE ORIGEM
ENDEREÇO IP DE DESTINO
OPÇÕES IP PADDING
DADOS
...
DF-Bit don’t fragment=quando ligado, o datagrama não pode ser fragmentado.
MF-Bit More (mais) fragmentos=quando ligado, indica que há fragmentos a seguir.

b) Um pacote IP pode ter um tamanho de até 64 Kbytes, já que o comprimento total tem 2bytes. Entretanto
o nível de enlace geralmente tem um tamanho máximo menor que 64K. Por exemplo, uma rede Ethernet
pode transmitir uma mensagem de até 1500 bytes. Este valor é chamado de MTU - Maximum
Transmission Unit - para este tipo de rede. A camada IP deve então ser capaz de dividir um pacote IP
maior que 1500 bytes em diversos fragmentos de até 1500 bytes cada um.

Limites dos quadros de enlace : Ethernet (1500), FDDI (4.770)

c) Exemplo quadro Ethernet:

End.enlace End.enlace Tipo Dados do quadro Ethernet FCS


destino origem

6 6 2 De 46 até 1500bytes 4 bytes

Datagrama IP

(Cabeçalho IP, Dados IP)

d) A fragmentação do pacote IP pode ocorrer na máquina origem ou em algum roteador que possua uma
rede com MTU menor que o tamanho do pacote IP sendo roteado. Durante o percurso até o destino, um
fragmento pode ser novamente fragmentado se o MTU da rede seguinte for ainda menor que o tamanho
do fragmento.

A remontagem do pacote só é realizada pela máquina destino, baseado nas informações de


IDENTIFICAÇÃO, FRAGMENT OFFSET (deslocamento) e do bit MF (More(mais) fragments). A perda de
um fragmento inutiliza o datagrama inteiro.

Redes TCP/IP Em 20/09/2005 Página 13- 1


Redes TCP/IP - Aula 13
Fragmentação Datagrama IP

e) O campo FRAGMENT OFFSET (deslocamento) identifica a posição em bytes do fragmento face ao


datagrama IP completo, conforme pode ser visto nas figuras abaixo, em um exemplo com a fragmentação
de um pacote original de 4020 bytes.

4 5 00000000 4020
Tam.cabeçalho=20
63784 000 0 Tamanho total=4020 octetos
8 UDP 01F5 Tamanho área de dados=4000
139.82.17.20 Deslocamento=0
208.12.68.23
Abcdefghijklmnopqroqoqoamajjajjaja.....(4000 bytes)
Resultado da fragmentação

Area de dados total=4000

Cabeçalho Dados Tamanho Total dados dos Dados restantes Deslocamento


total fragmentos

Fragmento 1 20 1480 1500 1480 4000-1480=2520 0

Fragmento 2 20 1480 1500 2960 4000-2960=1040 1480

Fragmento 3 20 1040 1060 4000 0 2960

O campo de deslocamento é a posição da área de dados em relação ao datagrama original, conforme


exemplo abaixo:

Posição Posição Posição Posição Posição Posição


0 1479 1480 2959 2960 3999

Primeiros 1480 bytes Próximos 1480 bytes Últimos 1040 bytes

Fragmento 1 Fragmento 2 Fragmento 3

Redes TCP/IP Em 20/09/2005 Página 13- 2


Redes TCP/IP - Aula 13
Fragmentação Datagrama IP

f) Datagramas resultantes da fragmentação :

Fragmento 1

4 5 00000000 1500 Tam.cabeçalho=20


63784 001 0 Tamanho total=1500 octetos
8 UDP 0756 Tamanho área de dados=1480
139.82.17.20 Deslocamento=0
208.12.68.23
Primeiros 1480 bytes

Fragmento 2

4 5 00000000 1500
Tam.cabeçalho=20
63784 001 1480
Tamanho total=1500
8 UDP 0FD0 Tamanho área de dados=1480
139.82.17.20 Deslocamento=1480
208.12.68.23
Próximos 1480 bytes

Fragmento 3

4 5 00000000 1060 Tam.cabeçalho=20


63784 000 2960 Tamanho total=1060
8 UDP 4AFF Tamanho área de dados=1040
Deslocamento=0
139.82.17.20
208.12.68.23
Últimos 1040 bytes

Redes TCP/IP Em 20/09/2005 Página 13- 3


Redes TCP/IP - Aula 13
Fragmentação Datagrama IP

g) Exemplo 2:

0 4 8 16 24 31
VERSÃO HLEN TIPO DE SERVIÇO COMPRIMENTO TOTAL
IDENTIFICAÇÃO FLAGS DESLOCAMENTO
FRAGMENTO
TEMPO DE VIDA PROTOCOLO VERIFICAÇÃO SOMA DO CABEÇALHO
ENDEREÇO IP DE ORIGEM
ENDEREÇO IP DE DESTINO
OPÇÕES IP PADDING
DADOS
...

Layout

0000 00 02 55 89 0a 54 00 0f 20 2f 6b 5d 08 00 VH TS ..U..T.. /k]..E.


0010 CO MP ID EN FD ES TL PR VE RI IP OR IG EM IP DE ..._ ... …..0..
0020 ST IN 08 00 eb 13 02 00 1d 00 61 62 63 64 65 66 . .. ... ..abcdef

Exemplo de fragmentação de uma datagrama de 3428 bytes


Para tanto, podemos dar o comando ping x.x.x.x – l 3400

Use o comando dado o comand ping 10.200.0.1 –l 3400


O comando acima gera um pacote, cujo tamanho deveria ser conforme abaixo:

Cab.IP Dados IP (3408 bytes) Tamanho total


Cab.ICMP Dados ICMP
20 8 3400 3428

Como o tamanho do datagrama é maior que 1500, o mesmo vai ser fragmentado em 3 datagramas,
conforme se segue:

Cabeçalho Dados Tamanho Total dados dos Dados restantes Deslocamento


total fragmentos

Fragmento 1 20 1480 1500 1480 3408-1480=1928 0

Fragmento 2 20 1480 1500 2960 3408-2960=448 1480

Fragmento 3 20 448 468 3408 0 2960

Redes TCP/IP Em 20/09/2005 Página 13- 4


Redes TCP/IP - Aula 13
Fragmentação Datagrama IP

Fragmento 1

0000 00 02 55 89 0a 54 00 0f 20 2f 6b 5d 08 00 45 00 ..U..T.. /k]..E.


0010 05 dc 09 5f 20 00 80 01 f3 01 0a c8 03 30 0a c8 ..._ ... …..0..
0020 00 01 08 00 eb 13 02 00 1d 00 61 62 63 64 65 66 . .. ... ..abcdef

Tamanho cabeçalho=5=> 5x4=20 bytes


Tamanho do pacote=05dc(hexa)=1500(decimal)
Flags=2(decimal)=0010(binário)---O bit MF-More (mais) fragments) está ligado
Deslocamento=0
Tamanho da área de dados=1500-20 (tamanho cabeçalho)=1480bytes

O Ethereal detalha assim o cabeçalho IP:


Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
Total Length: 1500
Identification: 0x095f
Flags: 0x02
0... = Reserved bit: Not set
.0.. = Don't fragment: Not set
..1. = More fragments: Set
Fragment offset: 1480
Time to live: 128
Protocol: ICMP (0x01)
Header checksum: 0xf301 (correct)
Source: 10.200.3.48 (10.200.3.48)
Destination: 10.200.0.1 (10.200.0.1)

Fragmento 2
0000 00 02 55 89 0a 54 00 0f 20 2f 6b 5d 08 00 45 00 ..U..T.. /k]..E.
0010 05 dc 09 5f 20 b9 80 01 f2 48 0a c8 03 30 0a c8 ..._ ... .H...0.
0020 00 01 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e ..abcdef ghijklmn

Tamanho cabeçalho=5=> 5x4=20 bytes


Tamanho do pacote=05dc(hexa)=1500(decimal)
Flags=2(decimal)=0010(binário)---O bit MF-More (mais) fragments) está ligado
Deslocamento=00b9(hexa)=185(decimal)====185x8=1480
Tamanho da área de dados=1500-20 (tamanho cabeçalho)=1480bytes

Fragmento 3
0000 00 02 55 89 0a 54 00 0f 20 2f 6b 5d 0B 00 45 00 ..U..T.. /k]..E.
0010 01 d4 09 5f 01 72 80 01 15 98 0a c8 03 30 0a c8 ..._.r.. .....0.
0020 00 01 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 ..ijklmn opqrstuv
Tamanho cabeçalho=5=> 5x4=20 bytes
Tamanho do pacote=01d4(h)=468(decimal)
Tamanho da área de dados=468-20 (tamanho cabeçalho)=448bytes
Flags=000
Deslocamento=0172(h)=370(decimal)= 370x8=2960

Redes TCP/IP Em 20/09/2005 Página 13- 5

Vous aimerez peut-être aussi