Você está na página 1de 3

INSTITUTO FEDERAL DE EDUCAO, CINCIA E TECNOLOGIA CAMPUS NATAL - CENTRAL DIRETORIA DE EDUCAO E TECNOLOGIA DA INFORMAO

Av. Sen. Salgado Filho, 1559, Natal/RN, 59015-000. Fone/FAX (084) 4005-2637 E-mail: dietinf@ifrn.edu.br - Site: http://www.ifrn.edu.br/dietinf Curso: - Superior de Tecnologia em Anlise e Desenvolvimento de Sistemas - Superior de Tecnologia em Redes de Computadores Disciplina: - Algoritmos e Tcnicas de Programao - Introduo Programao Professor: Fabiano Papaiz

TRABALHO Fragmentao de Datagramas TCP/IP


A internet trabalha com vrios tipos de protocolos na camada de enlace (logo abaixo da camada de rede) onde os comprimentos dos datagramas variam. A capacidade de receber o datagrama de um determinado tamanho se chama Maximum Transfer Unit (MTU). Quando um roteador recebe um datagrama e percebe que o roteador de destino tem um MTU menor que o comprimento do datagrama (cabealho + dados), ele tem que fragment-lo em vrios datagramas menores, chamados de fragmentos, para poder transmit-lo. A figura abaixo representa um datagrama IP com todos os seus campos especificados em bits:

O tamanho do cabealho ocupa 20 bytes e a rea dos dados deve possuir no mximo 65.534 bytes. Quando um fragmento criado ele recebe um nmero de identificao (ID), este nmero ser utilizado para identificar todos os fragmentos que pertenam a um mesmo datagrama. O campo flag identifica se o fragmento o ltimo a ser transmitido (0) ou no (1). O campo deslocamento (offset) indica a poro de dados enviado neste fragmento em relao ao datagrama original. Todos os fragmentos possuem o cabealho igual ao do datagrama original (de 20 bytes).

Veja abaixo um exemplo de fragmentao de um datagrama de 4000 bytes para um MTU de 1500 bytes. Este exemplo foi gerado pelo aplicativo disponvel no site: http://media.pearsoncmg.com/aw/aw_kurose_network_2/applets/ip/ipfragmentation.html:

Algoritmo para obteno dos dados:


ID: gerado automaticamente pelo programa Flag: ser 0 (zero) somente no ltimo fragmento, nos demais ser sempre 1. rea de dados: ser o tamanho da MTU subtrado de 20 bytes (referentes ao cabealho). O valor obtido representa o tamanho mximo de dados transmitidos em cada fragmento. No exemplo acima, a MTU 1500 e, calculando a rea de dados mxima, chegamos a 1480 (150020). Perceba que no ltimo fragmento foi necessrio transmitir apenas os ltimos 1020 bytes restantes (e no 1480). Offset: deve-se primeiro calcular seu valor atravs da frmula (TAM_AREA_DADOS/8). O valor obtido dever ser utilizado para calcular o offset de cada fragmento, atravs da frmula: [VALOR_OFFSET * (NUMERO_FRAGMENTO 1)]. No exemplo, o valor obtido foi 185 (1480/8), dai calcula-se o offset de cada fragmento. Desenvolva um programa em C++ que represente, atravs de uma estrutura de dados

(registro), os fragmentos do datagrama IP e realize o processo de fragmentao conforme especificado. Dados de Entrada:

Tamanho do datagrama com valor maior que 30 e menor que 2 16 - 1 (65.535) bytes, j incluindo os 20 bytes do cabealho; MTU da rede.

Sada: Para cada fragmento devero ser exibidas as seguintes informaes:


nmero do fragmento; Identificao (ID) Quantidade de dados transmitida Offset Flag

Você também pode gostar