Fragmentação IP + ICMP

 

 Fragmentação IP

1) Os pacotes IP são fragmentados de acordo com a MTU da rede. A fragmentação dos pacotes afeta
os campos tamanho total, flags, offset e cheksum dos fragmentos IP gerados.

Exercício: usando o comando ping e um sniffer de rede (tcpdump ou ethereal):

               a) gere e monitore datagramas fragmentados;
               b) analise quais as informações permanecem iguais no header dos
                   fragmentos do datagrama e as que foram alteradas, identificando os seus valores.
               c) descreva como o host destino deverá utilizar as informações para a remontagem do datagrama
                   original

2) O tamanho máximo de um pacote IPv4 é de 64Kbytes. Um antiga vulnerabilidade explorada em relação
a este limite de tamanho e o processo de fragmentação e remontagem de datagramas é conhecida como
Ping da Morte. Esta vulnerabilidade consiste em causar um estouro de buffer no host destino, enviando-se
vários datagramas fragmentados, cujo tamanho total exceda 64 Kbytes.

Exercício: utilize o comando ping para gerar pacotes fragmentados maiores que 64 Kbytes, e então:
            
               a) monitore com um sniffer de rede os fragmentos gerados, verifique se os fragmentos estão sendo
                   realmente enviados;

               b) verifique se há resposta ou algum evento "diferente" ocorrendo no host destino.

3) No processo de remontagem de datagramas, o host destino recebe os fragmentos e os coloca em um buffer
à espera do recebimento dos demais fragmentos de um mesmo datagrama para posterior remontagem. Mas
a espera não ocorre por tempo indeterminado, assim quando ocorrer timeout na espera dos fragmentos, este
serão descartados e uma mensagem ICMP poderá ser gerada para o host origem indicando que o datagrama
não foi remontado. Essa mensagem será gerada pelo host caso o datagrama de offset 0 (zero) esteja na
lista de fragmentos descartados.

Exercício: utilize o seu programa de socket RAW para envio de datagramas e adicione a ele os procedimentos
necessário para enviar datagramas IP fragmentados. Teste as seguintes situações:

               a) fragmente um datagrama em 3 partes, envie apenas 2 fragmentos para o host destino,
                   incluindo o datagrama de offset zero;

               b) usando um sniffer de rede verifique que tipo de mensagem ICMP foi gerada (se for gerada) para o
                   host origem;

               c) repita os experimentos das letras a e b, apenas observando que na item a) o fragmento de offset
                  
zero não deve ser enviado.