Introdução ao Protocolo Internet - IP

Esse artigo é uma introdução (detalhada!) do protocolo IP - Internet Protocol. Necessário para o bom entendimento do funcionamento de uma rede.

[ Hits: 149.893 ]

Por: Perfil removido em 02/06/2008


Fragmentação



Teoricamente o tamanho do pacote IP pode variar até o limite máximo de 64 KB dependendo da carga útil e das opções incluídas. Todavia, no caminho até seu destino um pacote pode atravessar diferentes tipos de redes. As redes são heterogêneas admitindo diferentes tamanhos de quadros (frames). Então, na prática, o tamanho máximo do pacote IP também é definido em função do hardware de rede por onde o pacote irá transitar. O tamanho máximo que um quadro pode ter é chamado de MTU - Maximum Transmission Unit - Unidade Máxima de Transmissão. Cada padrão de rede irá possuir um valor de MTU diferente.

Quando um pacote, de certo tamanho, necessita atravessar uma rede que lida somente com pacotes de menor tamanho é necessário dividir a carga do pacote em vários quadros, adequados ao tamanho da MTU dessa rede. O processo de adequar a carga do pacote IP ao tamanho da MTU é chamado de fragmentação de pacotes. Em alguns textos a fragmentação de pacotes é definida como segmentação. O conceito é o mesmo, mas se tratando do protocolo IP, prefira o termo fragmentação.

A princípio, um pacote é encaminhado e entregue com o mesmo tamanho que foi gerado na origem (fragmentação local). Mas, como a rota até o destino é uma escolha do roteador, um pacote pode seguir por uma rede que necessite de mais fragmentação (fragmentação na Inter-rede). A fragmentação que ocorre na inter-rede é invisível para o módulo IP do host que enviou o pacote. Caso um pacote seja fragmentado, transmitido e remontado entre dois roteadores o módulo IP não será informado disto.

Assim, havendo necessidade de fragmentação na inter-rede os roteadores poderão fazê-la, já que atuam na camada de rede do modelo TCP/IP. Neste caso, os roteadores ficam obrigados a remontar os pacotes antes de entregá-los ao destino. A fragmentação da inter-rede é chamada de fragmentação transparente.

A fragmentação de pacotes que acontece no módulo IP é chamada de não-transparente. Isso significa que o IP pode enviar tanto fragmentos de pacotes quanto pacotes sem fragmentação. Na prática, isso significa também que cada roteador receberá e transmitirá tanto pacotes completos, adequados ao tamanho da MTU, quanto fragmentos de pacotes ajustados a MTU. Tecnicamente um fragmento é apenas um pacote idêntico aos demais. Na fragmentação não-transparente o protocolo IP é "consciente" de que ocorreu fragmentação no encaminhamento, sendo também responsável pela remontagem dos fragmentos no destino.

Para tanto, o protocolo IP fornece alguns campos que garantem que os pacotes fragmentados sejam montados corretamente. Os campos que estão diretamente envolvidos na operação de fragmentação e remontagem de pacotes são: Identification, Fragment Offset e os sinalizadores binários Don't Fragment e More Fragment.

Havendo necessidade de fragmentação um mecanismo de fragmentação será usado para criar os fragmentos. Por exemplo, suponha um pacote que será fragmentado em dois fragmentos. Esse processo ocorre do seguinte modo: basicamente são criados dois novos datagramas, o conteúdo do cabeçalho do datagrama original é copiado para os cabeçalhos dos novos datagramas. Os campos identificação, endereço de origem e destino e o número do protocolo de transporte (para o qual a carga útil será entregue) permanecem inalterados independente do número de fragmentos.

A carga útil do datagrama original é dividida em blocos de oito octetos (64 bits). Cada fragmento poderá carregar múltiplos blocos de 64 bits, limitados ao tamanho da MTU. Teoricamente um único pacote com 64 KB poderia ser dividido em até 8.192 fragmentos com 64 bits cada.

Entretanto, como os valores de MTU são superiores ao tamanho mínimo do fragmento dificilmente esse número de fragmentos é alcançado. O último fragmento não necessita ter uma carga útil múltipla de 8 bytes.

Por exemplo, suponha um pacote com 113 bytes que será encaminhado em dois fragmentos. O primeiro fragmento terá 56 bytes enquanto o último terá 57.

Este processo ocorrerá da seguinte maneira: a primeira porção dos dados (56 bytes) é inserida no primeiro fragmento, o campo Total Lenght é ajustado para o novo tamanho do datagrama, enquanto o sinalizador MF - More Fragment - é configurado em 1 então o fragmento é enviado.

A porção restante dos dados (57 bytes) é inserida no segundo fragmento, o campo Total Lenght é ajustado. O sinalizador MF permanece inalterado (zero), indicando que este é o último fragmento do pacote.

O campo Fragment Offset do primeiro pacote é configurado como zero. No segundo fragmento o valor de Fragment Offset será o valor do Fragment Offset do pacote anterior (0) somado ao valor do NFB - Number of Fragment Block - Número de Blocos dos Fragmentos (7). Neste exemplo, o valor do NFB é 7, pois a cada fragmento foram enviados sete bytes de carga útil (exceto no último que serão enviados oito bytes). O NFB é um índice utilizado para remontar o pacote.

A importância da fragmentação, é que ela torna as redes mais homogêneas. Entretanto, fragmentação gera um maior volume de tráfego (overhead) na rede, pois multiplica cabeçalhos e gera um número maior de pacotes para serem tratados por um roteador. O gerenciamento da fragmentação pode ser necessário nos casos em que seja observada uma sobrecarga de carga em relação à largura de banda da rede.

Além disto, fragmentação mal gerenciada pode ser um ponto de vulnerabilidade na segurança da rede. Diversos ataques a segurança das redes utilizam a fragmentação para serem realizados. São exemplos de ataques de fragmentação: o ataque de pequenos fragmentos e o ataque de sobreposição de fragmentos. A filtragem de fragmentos por um filtro de pacotes, como Iptables, pode ser importante para a segurança do sistema, veja a RFC 1858 para mais informações sobre ataques que usam fragmentação.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução ao Protocolo Internet - IP
   2. Endereçamento IP
   3. Endereços IP especiais
   4. Criação de subredes IP
   5. Máscara de subrede
   6. CIDR - Classless InterDomain Routing
   7. Endereços IP privativos
   8. O cabeçalho IPv4
   9. Fragmentação
   10. QoS - Qualidade do Serviço
   11. ToS - Type of Service no protocolo IP
   12. Referências e conclusões
Outros artigos deste autor

Sylpheed - Cliente de e-mail para terminais leves

Sistemas de arquivos para GNU/Linux

Site Survey Plan

Introduzindo prazerosamente aos poucos... o shell script

XFree86 - Um pouco da história deste poderoso ambiente gráfico para UNIX

Leitura recomendada

Para quem não conhece, eis o LMDE e umas palavras sobre Refisefuquis

Windows é mais fácil que Linux!? Tá louco!? Você sabe ler!?

Viva o Linux adere à moda Orkut

Viva o Linux - mas sem muletas

Diferentes distribuições GNU/Linux e diferentes usuários

  
Comentários
[1] Comentário enviado por roberto_espreto em 02/06/2008 - 12:37h

Cara, muito legal seu artigo! Ainda não tive tempo de ler adequadamente, mas assim que possível irei!
Tanembaum é de tirar o chapéu!
Um autor que gosto muito tbm é o Kurose e o Douglas Comer!
Continue com seus artigos assim!



®

[2] Comentário enviado por eduardo em 02/06/2008 - 13:57h

Parece ser bem interessante e completo.

Favoritei para ler depois ;)

[3] Comentário enviado por albertguedes em 02/06/2008 - 14:47h

Eita trabalhera hein ? Esse é um dos artigos mais completos que já li aqui no VOL, tenho que parabenizar pela esforço, valeu mesmo Unasi.

[4] Comentário enviado por maykonhammer em 02/06/2008 - 23:23h

parabéns pelo artigo..
flw

[5] Comentário enviado por elgio em 03/06/2008 - 10:55h

Muito bom!
Parabéns mesmo pelo excelente e completo artigo!

Em tempo: o task force Ipv6 elegeu 2008 como o "ano da virada". Será? hehehehe

[6] Comentário enviado por removido em 03/06/2008 - 11:59h

Excelente artigo!

[7] Comentário enviado por eng_ividal em 03/06/2008 - 18:07h

muito bom mesmo o artigo!!!

[8] Comentário enviado por stephannie em 04/06/2008 - 20:27h

Parabéns, muito bom!

[9] Comentário enviado por DavidNS em 28/08/2008 - 13:44h

valeu me ajudo a entender um pouco mais!!!

[10] Comentário enviado por leoh em 16/02/2010 - 23:54h

Texto de altíssima qualidade. Você tem talento para escrever. Parabéns.

[11] Comentário enviado por IanVilar em 01/11/2012 - 17:49h

Esse foi um dos artigos mais completos e bem explicados que já vi. Parabéns ao autor e que continue fazendo esse excelente trabalho!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts