Não é exatamente assim. A fragmentação
dos datagramas acontece por que ele é maior que o MTU de uma rede
que ele tem que passar. Então o roteador quebra ele em pedaços
copiando grande parte do header para todos os fragmentos, que serão
pacotes IP menores, com o header quase igual, com a diferenç no
campo FLAGS que é setado alguns bits, o campo OFFSET DE FRGAMENTO,
usado para saber a posição daquele dado dentro do pacote
IP original que foi fragmentado.
Um pacote pequeno não é um pacote
fragmentado. Existe um MTU mínino permitido, sendo que dessa forma
existirão datagramas que nunca serão fragmentados, como datagramas
de controle e etc. Originalmente, quem remonta esses datagramas fragmentados
é o host destino. Com o nagle, segundo me consta (essa parte eu
não tenho total certeza), um roteador no caminho, que vai jogar
para uma rede com MTU maior que o que está chegando, pega todos
os pacotes que foram fragmentados (só os que foram fragmentados)
e remonta-os antes de repassar para a próxima rede, afim de melhorar
a performance, o que exige um roteador bem robusto. Porém, hoje
em dia, acredito que o mais comun seja o path MTU discovery, que faz com
que as duas pontas que conversam, descubram o MTU minimo usado no caminho
e utilizem este para melhorar a performance. Porque?
Porque quando o destino começa a receber
os fragmentos ele inicia um contador, e se esse contador esgota antes de
chegar todos os fragmentos, ele infelizmente descarta o pacote que está
sendo remontado inteirinho (mesmo que ele já tenha recebido grande
parte deste), e aí o grande problema da fragmentação
que causa impacto na performance. A remontagem dos pacotes também
geram uma perda significativa de performance. Essa é a motivação
na procura de algoritimos para cuidar das fragmentações,
de onde vieram o Nagle e o path MTU discovery.
"Silveira, Jorge" wrote:
Lista de Discussão Rede Wan - http://www.networkdesigners.com.brJulio, Não sei se te entendi. O que quis dizer é que, como o exemplo: Possuo, por exemplo, um pacote de "keep-alive" de 10 bytes e este não pode ser segmentado. Se eu habilitar o nagle, o equipamento armazena os dados até o tamanho máximo da MTU, para melhor aproveitamento da rede!!??? Agora, imagine que no buffer já está armazenado 1495bytes e o buffer recebe o keep alive ==>1495+5=1500bytes(1º pacote enviado) e depois, os outros 5bytes do keepalive serão armazenados no buffer para a próxima transmissão. No outro end-point, a aplicação recebe o keep-alive fragmentado e minha aplicação está programada para discartar keep-alives fragmentados. Dependendo dos parâmetros da programação, a aplicação poderá "derrubar" a conexão!! Espero ter sido claro, agora. Se vi isto acontecer, inclusive usando analisador.
--
--------------------------------------------------------------
Denys Sene dos Santos - [EMAIL PROTECTED]
Diretor Técnico - System and Network Administrator
Onlinet - Afiliado do Universo Online - O Melhor da Internet
http://www.onlinet.com.br/
To unsubscribe, write to [EMAIL PROTECTED]
