Tamanho máximo do cabeçalho IPv4

8

Cabeçalho IPv4


Eu sei que o comprimento do cabeçalho IP é de no mínimo 20 bytes e no máximo 60 bytes. Mas por que? Por que o comprimento do cabeçalho IP é limitado a 60 bytes? Existe alguém aqui que possa me explicar? Obrigado.

ebyrock
fonte
11
Alguma resposta o ajudou? Nesse caso, você deve aceitar a resposta para que a pergunta não apareça para sempre, procurando uma resposta. Como alternativa, você pode fornecer e aceitar sua própria resposta.
Ron Maupin

Respostas:

14

O protocolo Internet (IP) é definido na RFC 791 . O RFC especifica o formato do cabeçalho IP. No cabeçalho, há o campo IHL ( Internet Header Length ), que tem 4 bits de comprimento e especifica o comprimento do cabeçalho em palavras de 32 bits . O campo IHL pode conter valores de 0 (binário 0000) a 15 (binário 1111).

Portanto, o tamanho mais longo do cabeçalho da Internet (cabeçalho IP) pode ser de 15 * 32 bits = 480 bits = 60 bytes . É por isso que o cabeçalho tem um tamanho máximo de 60 bytes.

O tamanho mais curto do cabeçalho é 20 bytes, onde o campo IHL possui o valor 5 (0101). Isso ocorre porque todos os campos obrigatórios no cabeçalho precisam de 20 bytes de espaço. Portanto, enquanto em teoria você poderia definir o DIH para um valor <5, esse sempre seria um valor incorreto e, portanto, um cabeçalho de pacote inválido.

Sebastian Wiesinger
fonte
Muito obrigado Sebastian. Esta é a resposta que eu estava procurando. Agora eu entendi exatamente. Então, minha analogia também estava correta. :)
ebyrock
Mas o menor valor seria 5 porque está definido na RFC 791? Portanto, não pode ser definido como 0 (0000)?
ebyrock
11
Mínimo de 5 dwords (20 bytes) porque essas são as partes necessárias do cabeçalho. Pode haver zero ou mais opções, portanto, 20 a 60 bytes.
Ricky feixe
11
Eu adicionei a explicação para o tamanho mínimo para completá-lo.
Sebastian Wiesinger
11
significa que conta o comprimento do cabeçalho em incrementos de 32 bits.
Sebastian Wiesinger
3

De acordo com o RFC 791, onde está definido, consulte a página 12, onde ele discute datagramas:

Comprimento total é o comprimento do datagrama, medido em octetos, incluindo dados e cabeçalho da Internet. Este campo permite que o comprimento de um datagrama seja de até 65.535 octetos. Esses datagramas longos são impraticáveis ​​para a maioria dos hosts e redes. Todos os hosts devem estar preparados para aceitar datagramas de até 576 octetos (se eles chegam inteiros ou em fragmentos). Recomenda-se que os hosts enviem datagramas apenas maiores que 576 octetos se tiverem certeza de que o destino está preparado para aceitar os datagramas maiores.

O número 576 é selecionado para permitir que um bloco de dados de tamanho razoável seja transmitido além das informações de cabeçalho necessárias. Por exemplo, esse tamanho permite que um bloco de dados de 512 octetos mais 64 octetos de cabeçalho se encaixe em um datagrama. O cabeçalho máximo da Internet é de 60 octetos, e um cabeçalho típico da Internet é de 20 octetos, permitindo uma margem para cabeçalhos de protocolos de nível superior. "

Basicamente, o comprimento foi definido entre 20 e 60 para permitir diferentes usos de protocolo e ajustar-se ao tamanho de datagrama recomendado.

Mike Naylor
fonte
11
Obrigado Mike novamente, mas eu não entendo direito. Na sua resposta, ele diz que "O cabeçalho máximo da Internet é de 60 octetos", mas não explica o porquê? Eu inseri uma foto na minha pergunta. O tamanho do cabeçalho IP é definido no DIH (comprimento do cabeçalho da Internet), que possui 4 a 7 bits, o que significa 4 bits. se definirmos todos os bits, será 1 na Base2 (1111) que seria 15 na Base10. E o comprimento do cabeçalho da Internet é de 32 bits. Multiplicamos 15 x 32 = 480 bits, o que é igual a 60 bytes (480/8). Não tenho certeza de que seja uma analogia correta. :(
ebyrock
Não tentando ser curto, mas o 'porquê' é: é assim que é definido. Todos os protocolos da internet têm definições. Essas definições são os padrões que todos os protocolos de tráfego da Internet seguem.
Mike Naylor