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