
De acordo coma mesa aqui, diz que MTU = 1.500 bytes e que a parte da carga útil é 1.500 - 42 bytes ou 1.458 bytes (<- isso está realmente errado!). Agora, além disso, você deve adicionar cabeçalhos IPv4 e UDP, que têm 28 bytes (20 IP + 8 UDP). Isso deixa minha mensagem de aplicativo máxima possível com 1430 bytes! Mas, ao procurar esse número na Internet, vejo 1472. Estou fazendo esse cálculo errado aqui?
Tudo o que quero descobrir é a mensagem máxima do aplicativo que posso enviar sem o risco de fragmentação. Definitivamente não é 1500 porque inclui os cabeçalhos dos quadros. Alguém pode ajudar?
A confusão é que o PAYLOAD pode, na verdade, ter até 1.500 bytes e esse é o MTU. Então agora qual é o tamanho da transmissão para uma carga útil de 1.500? Nessa tabela, pode ter até 1542 bytes.
Portanto, o máximo de mensagens de aplicativo que posso enviar é 1472 (1500 - 20 (ip) - 8 (udp)) para um máximo no tamanho do fio de 1542. Fico surpreso como as coisas podem ficar tão complicadas quando na verdade são simples. E não tenho ideia de como alguém surgiu com o número 1518 se a tabela diz 1542.
Responder1
O diagrama na Wikipedia é horrível. Espero que o que estou prestes a escrever esteja mais claro.
O máximocarga útilna Ethernet 802.3 tem 1.500 bytes.
Esses são os dados que você está tentando enviar pela rede (e aos quais o MTU está se referindo).
[payload]
<- 1500 bytes
A carga útil é encapsulada em umQuadro Ethernet(que adiciona o MAC de origem/destino, tag VLAN, comprimento e soma de verificação CRC. Isso é um total de 22 bytes de "coisas" adicionais
[SRC+DST+VLAN+LENGTH+[payload]+CRC]
<- 1522 bytes
O quadro é transmitido pelo fio - antes que sua placa Ethernet faça isso, ela basicamente se levanta e grita bem alto para garantir que ninguém mais esteja usando o fio (CSMA/CD) - Este é oPreâmbuloeDelimitador de início de quadro(SFD) – mais 8 bytes, então agora temos:
[Preamble+SFD+[Ethernet Frame]]
<- 1530 Bytes
Finalmente, quando um transceptor Ethernet termina de enviar um quadro, o 802.3 exige que ele 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 uma estrutura de suporte para o próprio protocolo Ethernet.
O MTU se aplica à carga útil – é a maior unidade de dados que você pode inserir no pacote. Assim, um pacote Ethernet com um MTU de 1.500 bytes será, na verdade, um quadro de 1.522 bytes e 1.542 bytes no fio (assumindo que haja uma tag vLAN).
Então a resposta à sua pergunta -Qual é o maior pacote que posso enviar pela Ethernet 802.3 sem fragmentação?- é1.500 bytes de dados de carga útil.
NO ENTANTOa camada Ethernet pode não ser seu fator limitante. Para descobrir se algo ao longo do caminho está restringindo o MTU a ser menor que 1.500 bytes de dados de carga útil, use um dos seguintes:
- Windows:
ping hostname -f -l sizeofdata
(técnica mencionada por John K) - BSD:
ping -D -s sizeofdata hostname
- Linux:
ping -M do -s sizeofdata hostname
O maior valor sizeofdata
disso é o MTU (no caminho específico que seus dados estão percorrendo).
Responder2
Depende da quantidade de dados que você coloca no quadro. Se você colocar 1.500 bytes de dados em um quadro, o tamanho total do quadro será de 1.518 bytes. Com 1.472 bytes de dados, você terá um tamanho total de quadro de 1.500.
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 velho ping com alguns sinalizadores:
ping nome do host -f -l tamanho dos dados
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 1.500, começará a fragmentar à medida que ultrapassar 1.500 bytes. Porém, diminua para 1472 (1500 - a sobrecarga de 18 bytes) e você verá os pings passarem.
Responder3
Para o quadro Ethernet_II básico, o tamanho do quadro é de 1518 bytes (ligado ou desligado). Isso é composto de 6 bytes para cada endereço de destino e origem, 2 bytes para o campo de tipo entre 46 e 1500 bytes para a carga útil (no seu caso, o pacote IP inteiro com seu cabeçalho IP e cabeçalho UDP) e 4 bytes para o FCS. Além disso, há uma restrição quanto ao 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 múltiplas vlans e você precisar marcar o quadro com uma tag vlan, um campo extra será adicionado antes do campo type. Isto é 4 bytes. Isso agora 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 é escrito 1500-42 não significa 1500 menos 42, significa que qualquer coisa entre 1500 e 42 bytes é válida. No fio, esse quadro marcado pode ter até 1.522 bytes (se apenas uma tag for usada, ou 1.526 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 deveria ouvir alguma parte dele. Para sinalizar o fim do preâmbulo, um dos últimos 8 bits enviados é invertido para que em vez de 10101010 ele se torne 10101011. Este byte é chamado de Delimitador de início de quadro (SDF). Isso não é tecnicamente útil para capturar fora do fio, portanto, os 7 bytes do preâmbulo e o SDF de 1 byte normalmente não são contados, mas se fossem, nosso 1518 original seria agora 1526. Ainda não é 1542.
Após o envio de um quadro, há um silêncio forçado no fio, que é chamado de intervalo entre quadros. Isso equivale a uma transmissão de 12 bytes. Isso também não é contado ou capturado, mas se fosse, chegaríamos a 1538 bytes. A única maneira de chegar a 1542 a partir de 1538 é dizer que o quadro está marcado (ou seja, ele contém a tag de plano de 4 bytes). Ufa, 1542 finalmente.
Está tudo na terminologia. Um quadro padrão tem 1518 bytes por fio (no que diz respeito a qualquer dispositivo de captura). Um quadro etiquetado (etiqueta única) tem 1522 bytes no fio. Eles ocupam 1.538 bytes ou 1.542 bytes de espaço de transmissão no fio.
Espero que ajude a esclarecer ..
Responder4
não, você quer que a fragmentação ocorra, é por isso que o pacote precisa ser fragmentado, mas df set considere assim uma rodovia de mão dupla com um monte de semifinais versus a mesma rodovia com um monte de carros pequenos e inteligentes que vão para os mesmos semi-reboques de destino transportam mais carga útil, mas são mais lentos e podem congestionar mais facilmente, carros menores transportam menos, mas viajam mais rápido MSS também não é o mesmo que MTU