Recentemente, fiquei sabendo que a carga útil da Ethernet é de no máximo 1500 bytes (mtu).
A primeira coisa que me veio à mente foi que podemos pingar com muito mais tamanho do que isso. Então eu pensei que talvez o pacote de ping estivesse sendo fragmentado de alguma forma. Então verifiquei no wireshark e vi que é apenas um pacote, mesmo quando faço ping com tamanho de 10.000 bytes.
Qual é a explicação por trás disso?
Atualizar:
Mesmo se forem usados quadros Ethernet Jumbo, que suportam até 9.000 bytes, ainda posso pingar com 17.000 bytes, que ainda é maior que 9.000.
Baseado no comentário @ColtonCat
A resposta é simplesmente porque ocorre a fragmentação do IP.
Exemplo: ping com tamanho de 2000 bytes e o mtu é no máximo 1518, você pode ver no wireshark que tanto a solicitação de ping quanto a resposta são fragmentadas em pacotes de 1518 e 566 bytes.
O cálculo é o seguinte: 18 bytes para cabeçalho Ethernet (src mac 6, dst mac 6 , type 2, FCS 4), 20 bytes para cabeçalho IP, 8 bytes para ICMP >> 46. O mtu é 1518, então deixa 1472 bytes de dados (1518 - 46).
Os mesmos cálculos são feitos para o segundo pacote fragmentado.
Nota: O Wireshark não mostra os bytes FCS. Então você só precisa subtrair 4. Além disso, tudo isso pode acontecer para o IPv4, já que no IPv6 não é permitida a fragmentação.