De acordo com a tabela aqui , diz que MTU = 1500 bytes e que a parte da carga útil é de 1500 a 42 bytes ou 1458 bytes (<- isso está realmente errado!). Além disso, você deve adicionar cabeçalhos IPv4 e UDP, com 28 bytes (20 IP + 8 UDP). Isso deixa minha mensagem máxima possível de aplicativo como 1430 bytes! Mas, ao procurar esse número na Internet, vejo 1472. Estou fazendo este cálculo errado aqui?
Tudo o que quero descobrir é a mensagem máxima do aplicativo que posso enviar por cabo sem o risco de fragmentação. Definitivamente não é 1500, porque isso inclui os cabeçalhos do quadro. Alguém pode ajudar?
A confusão é que o PAYLOAD pode ter até 1500 bytes e esse é o MTU. Então, agora, qual é o tamanho do fio para uma carga útil de 1500? A partir dessa tabela, ele pode ter até 1542 bytes.
Portanto, o máximo de mensagens de aplicativos que posso enviar é 1472 (1500 - 20 (ip) - 8 (udp)) para um tamanho máximo de fio de 1542. Surpreende-me como as coisas podem ficar tão complicadas quando são realmente simples. E eu não tenho idéia de como alguém surgiu com o número 1518 se a tabela diz 1542.
Respostas:
O diagrama na Wikipedia é horrível. Espero que o que estou prestes a escrever seja mais claro.
A carga útil máxima na Ethernet 802.3 é de 1500 bytes.
Estes são os dados que você está tentando enviar por cabo (e a que o MTU está se referindo).
[payload]
<- 1500 bytesA carga útil é encapsulada em um quadro Ethernet (que adiciona o MAC de origem / destino, o rótulo da VLAN, o comprimento e a soma de verificação CRC. É um total de 22 bytes de "material" adicional
[SRC+DST+VLAN+LENGTH+[payload]+CRC]
<- 1522 bytesO quadro é transmitido por fio - antes que sua placa ethernet faça isso, ele se levanta e grita muito alto para garantir que ninguém mais esteja usando o fio (CSMA / CD) - este é o delimitador de preâmbulo e início de quadro (SFD) - mais 8 bytes, agora temos:
[Preamble+SFD+[Ethernet Frame]]
<- 1530 bytesFinalmente, quando um transceptor Ethernet termina o envio de um quadro, é exigido pelo 802.3 que transmita 12 bytes de silêncio ("Interframe Gap") antes de poder enviar seu próximo quadro.
[Preamble+SFD+[Ethernet Frame]+Silence]
<- 1542 bytes transmitidos no fio.O Preâmbulo, SFD e Interframe Gap não contam como parte do quadro. Eles são estrutura de suporte para o próprio protocolo Ethernet.
A MTU se aplica à carga útil - é a maior unidade de dados que você pode empilhar no pacote. Assim, um pacote ethernet com uma MTU de 1500 bytes será na verdade um quadro de 1522 bytes e 1542 bytes no fio (assumindo que exista uma etiqueta de vLAN).
Portanto, a resposta para sua pergunta - Qual é o maior pacote que posso enviar pela Ethernet 802.3 sem fragmentação? - é de 1500 bytes de dados de carga útil .
NO ENTANTO, a camada ethernet pode não ser seu fator limitante. Para descobrir se algo no caminho está restringindo o MTU a ser menor que 1500 bytes de dados de carga útil, use um dos seguintes:
ping hostname -f -l sizeofdata
(técnica que John K mencionou)ping -D -s sizeofdata hostname
ping -M do -s sizeofdata hostname
O maior valor
sizeofdata
disso funciona é o MTU (no caminho específico que seus dados estão seguindo).fonte
Depende da quantidade de dados que você coloca no quadro. Se você colocar 1500 bytes de dados em um quadro, o tamanho total do quadro será 1518 bytes. Com 1472 bytes de dados, você terá um tamanho total de quadro de 1500.
http://en.wikipedia.org/wiki/Ethernet_frame
Dito isto, se você estiver realmente interessado em testar a fragmentação, uma boa maneira de testar isso é com um bom e antigo ping com algumas bandeiras:
ping hostname -f -l sizeofdata
O sinalizador -f fará com que o ping falhe se o pacote estiver fragmentado. A chave para entender aqui é "sizeofdata" é a quantidade de dados que você pode colocar em uma mensagem sem fragmentar - portanto, se você enviar uma carga útil de 1500, começará a fragmentar conforme ultrapassar 1500 bytes. Abaixe isso para 1472 (1500 - a sobrecarga de 18 bytes) e você verá os pings passarem.
fonte
Para o quadro Ethernet_II básico, o tamanho do quadro é 1518 bytes (ligado ou desligado). É composto de 6 bytes para cada um dos endereços de destino e de origem, 2 bytes para o campo de tipo entre 46 e 1500 bytes para a carga (no seu caso, todo o pacote IP com seu cabeçalho IP e cabeçalho UDP) e 4 bytes para o FCS. Além disso, há uma restrição sobre o tamanho de um quadro (64 bytes). É por isso que o intervalo é de 46 bytes (adicione isso aos dois endereços e ao tipo e ao FCS e você obterá 64 bytes - 46 + 6 + 6 + 2 + 4 = 64).
Se o quadro estiver em uma rede que suporta várias vlans e você precisar marcar o quadro com uma tag vlan, um campo extra será adicionado antes do campo de tipo. Isso é de 4 bytes. Agora, isso significa que o intervalo de tamanhos da carga útil pode ser reduzido em 4 bytes na extremidade inferior e ainda ter 64 bytes no mínimo. Daí o 42. (Então 42 + 6 + 6 + 2 + 4 + 4 para a tag vlan = 64)
Portanto, quando o intervalo é gravado 1500-42, não significa 1500 menos 42, significa que algo entre 1500 e 42 bytes é válido. Um fio, esse quadro marcado pode ter até 1522 bytes (se apenas uma tag for usada ou 1526 se duas tags forem usadas). Nada disso explica o número 1542.
Para chegar a esse número, você precisa considerar como um quadro pode ser enviado na Ethernet. Não há relógio em uma LAN Ethernet; portanto, uma série de 1 e 0 é enviada pelo transmissor de um quadro para definir um relógio. Isso é chamado de preâmbulo. Nem todo ouvinte 'ouvirá' todo o preâmbulo, mas a maioria deve ouvir parte dele. Para sinalizar o final do preâmbulo, um dos últimos 8 bits enviados é invertido para que, em vez de 10101010, ele se torne 10101011. Esse byte é chamado de Início do Delimitador de Quadro (SDF). Tecnicamente, isso não é útil para capturar a conexão, portanto os 7 bytes do preâmbulo e o SDF de 1 byte normalmente não são contados, mas se eles fossem nosso 1518 original agora seriam 1526. Ainda não 1542.
Depois que um quadro é enviado, há um silêncio forçado no fio, chamado de gap entre quadros. Isso é equivalente a uma transmissão de 12 bytes. Isso também não é contado ou capturado, mas, se fosse, chegaria a 1538 bytes. A única maneira de chegar a 1542 a partir de 1538 agora é dizer que o quadro está marcado (ou seja, contém a etiqueta do plano de 4 bytes). Ufa, 1542, finalmente.
Está tudo na terminologia. Um quadro padrão tem 1518 bytes no fio (no que diz respeito a qualquer dispositivo de captura). Um quadro marcado (etiqueta única) tem 1522 bytes no fio. Eles ocupam 1538 bytes ou 1542 bytes de espaço de transmissão no fio.
Espero que ajude a esclarecer ..
fonte
não, você quer que a fragmentação ocorra, é por isso que você precisa que os pacotes sejam fragmentados, mas o df set toma como uma rodovia de duas vias com um monte de semifinais vs a mesma rodovia com um monte de pequenos carros inteligentes que vão as mesmas semis de destino carregam mais carga útil, mas são mais lentas e podem congestionar carros menores e mais fáceis, mas viajam mais rápido. O MSS também não é o mesmo que o MTU
fonte