Tamanho mínimo da parte de dados do segmento TCP

3

Minha pergunta tem duas partes:

  1. Eu sei que a parte de "dados" de um quadro Ethernet pode ter de 46 a 1500 bytes. Considerando o cabeçalho IP de 20 bytes + cabeçalho TCP de 20 bytes, o tamanho mínimo de "dados" de um segmento TCP deve ser (46-20-20) = 6 bytes . Considerando o cabeçalho UDP de 8 bytes, o tamanho mínimo de "dados" de um segmento UDP deve ser (46-8-20) = 18 bytes . Então, alguém pode explicar por que o limite inferior do tamanho dos dados do aplicativo se torna um valor alto como 6 bytes ou 18 bytes; não é um valor pequeno, como 1 byte? Eu acredito que estou perdendo alguma coisa.

  2. Encontrei algumas explicações [1] [2] que o O tamanho mínimo de um pacote IP deve ser de 64 bytes. Acho que a explicação nos links acima está correta. Nesse caso, por que não é o tamanho mínimo de "dados" de um quadro Ethernet (64-20-20) = 24 bytes ?

Alguém pode explicar isso com mais clareza?

    
por Adrian 27.02.2012 / 05:16

2 respostas

5

O tamanho mínimo do quadro para Ethernet é ditado em 64 bytes (como também descrito em suas referências).

DMAC + SMAC + EtherType + Payload + CRC  
 6   +  6   +     2     +    46   +  4  = 64

Na camada 4 (TCP ou UDP), o 'comprimento' cobre o cabeçalho da camada 4 e é rastreado no cabeçalho IP.
Isso significa que, para UDP, o mínimo esperado é de 8 bytes (para o cabeçalho). E, para TCP, é 20 bytes (o cabeçalho TCP mínimo).

A parte que parece estar desaparecida começa agora .
Embora seja necessário que o comprimento dos dados Ethernet seja de no mínimo 46 bytes, o comprimento IP não precisa ser 46-20 bytes. Pode ser muito menor que isso.

Portanto, se tivéssemos um pacote UDP de 8 bytes sem dados, seu comprimento de IP seria 20+8 , mas o comprimento da carga de Ethernet ainda seria 46 bytes. O que acontece com o buraco de bytes 18 ? Ele é preenchido para tornar o quadro Ethernet no fio 64 bytes (por razões que você já conhece).

[Eth: DMAC + SMAC + EtherType + [IP: Hdr + [UDP: Hdr + 0data ]] + PAD + CRC ]

Bottomline: O que você chama de application data size não tem expectativas mínimas com base nesse requisito de 64 byte Ethernet. O PAD compensará as diferenças.

    
por 27.02.2012 / 06:15
4

Resposta curta:
O comprimento mínimo da parte de dados de um segmento TCP é zero. O comprimento mínimo da parte de dados de um datagrama UDP é zero.

Se uma pilha IP precisar passar um datagrama de menos de 46 bytes para a Ethernet, a Ethernet a enviará para 46 bytes, adicionando bytes de preenchimento. O cabeçalho IP possui seu próprio campo de comprimento (assim como os cabeçalhos TCP e UDP), portanto, esses protocolos nunca se confundem e tentam interpretar o preenchimento da camada de link como parte de suas próprias cargas.

Informações adicionais:
A Ethernet é apenas um dos muitos protocolos de camada de enlace de dados nos quais o IP pode ser executado. A Ethernet tem um comprimento de pacote mínimo de 64 bytes por motivos técnicos legados (para que as "colisões" possam ser detectadas em redes Ethernet de diâmetro máximo, quando as redes Ethernet eram CSMA / CD e poderiam ter colisões - as redes Ethernet modernas usam switches em todos os lugares e são full-duplex em todos os segmentos, então o CSMA / CD e as colisões são praticamente uma coisa do passado).

Como muitas vezes usamos IP sobre Ethernet, é fácil esquecer que Ethernet e IP são duas tecnologias de rede separadas criadas por duas instituições separadas. A Ethernet, padronizada pelo IEEE (Instituto de Engenheiros Elétricos e Eletrônicos) foi projetada para lidar com um número desconhecido de protocolos de rede (camada 3) além de IP, e IP, criado pela IETF (Internet Engineering Task Force) foi projetado para trabalhar em um número desconhecido de protocolos Data Link (camada 2) além da Ethernet. O IP não altera seu tamanho mínimo ou máximo do datagrama apenas por causa de um protocolo popular de camada de enlace. Se o protocolo da camada de enlace não gostar de um pequeno datagrama, ele precisa ser preenchido. E, no caso oposto, se o IP não gostar do MTU que o link de dados atual oferece, ele precisa fragmentar.

    
por 27.02.2012 / 07:17