Um segmento TCP pode ser fragmentado em mais datagramas IP?

3

Em materiais de aprendizagem, muitas vezes é uma imagem de um segmento TCP que está dentro de um datagrama IP que está em um quadro de camada de enlace.

Este é sempre o caso?

Existe garantia de que o segmento TCP é atômico e está contido em um datagrama IP?

O mesmo se aplica ao datagrama e ao quadro?

O que quero dizer é isto:

1.

TCP |Segment 1| Segment 2 | Segment 3 |
IP  |Datagram 1   |  Datagram 2 | Datagram 3 |

Então, basicamente, o IP tratando a entrada da camada de transporte como simplesmente bytes (como a camada de transporte trata os dados da camada de aplicação)

2. Ou o caso possível, quando os limites IP e TCP coincidem, mas mais segmentos TCP estão dentro de um datagrama IP que tem como alvo o mesmo host, mas os segmentos TCP contidos fazem parte de conexões TCP diferentes.

TCP |Segment 1 | Segment 2 | Segment 3| Segment 4| Segment 5 | Segment 6|
IP  |Datagram 1            |Datagram 2|Datagram 3                       |
    
por Arkonix 07.12.2014 / 01:41

2 respostas

1

A resposta curta é não.

As camadas da pilha IP devem ser agnósticas das outras camadas. A camada IP pode estar sendo executada pela Ethernet, ou 802.11 ou qualquer outro protocolos da camada de enlace de dados . Essas camadas são livres para fragmentar os dados de qualquer maneira que eles precisem para fazer o protocolo funcionar. Em teoria, eles poderiam olhar para o cabeçalho do protocolo de nível superior e ajustar sua fragmentação para corresponder, mas não há requisitos para isso.

    
por 07.12.2014 / 02:43
1

Suponho que você esteja perguntando se um fluxo de dados semelhante a isso pode ocorrer:

 TCP:       |     SEGMENT 1          |   SEGMENT 2    |   ...
 IP:        |  FRAGMENT 1   |   FRAGMENT 2   |   FRAGMENT 3    | ...

... isto é, o fragmento IP 1 contém a primeira parte do segmento 1 do TCP; O fragmento IP 2 contém a última porção do segmento 1 do TCP e a primeira porção do segmento 2 do TCP; etc.

Você pode recebê-lo? Sim. O que impede isso? Se você está construindo uma implementação de recebimento, você deve estar preparado para qualquer coisa que o mundo possa lançar em você.

É válido? Sim também. Os pacotes IP podem ser fragmentados em trânsito , enquanto a segmentação TCP deve ocorrer apenas nos pontos de extremidade. Eu acho que é muito improvável que um único sistema operacional de transmissão jamais transmita dados segmentados e fragmentados, mas se uma implementação TCP segmenta dados em tudo e transmite através de uma rede IP, então os dados IP podem ser fragmentado em trânsito, e o comportamento acima observado.

Mais informações no RFC 791, link , consulte a seção Fragmentação.

Em relação ao pacote e ao quadro, existem considerações semelhantes, embora eu não tenha material para citar. Uma implementação de IP não deve se importar com o recebimento de pacotes IP, desde que possa restabelecer os limites dos pacotes, o que pode e deve fazer sem as informações de limite da camada de enlace.

Em muitos casos, há benefícios em garantir que as cargas de dados se encaixem em um único bloco de transmissão. Se você conhece a MTU (unidade transmissível máxima) entre você e seu destino, você pode maximizar a taxa de transferência de dados para sobrecarga de protocolo, ajustando seus dados à MTU. Mas esse é o melhor cenário, não o caso geral.

    
por 07.12.2014 / 02:47