De acordo com a ordenação de bytes big endian ou a ordem de bytes da rede, os bits são transmitidos nesta ordem: bits 0-7 primeiro, depois bits 8-15, depois 16-23 e bits 24-31 por último. Isso significa que os bits da versão, identificação, TTL etc vão primeiro e depois os próximos campos?
Há uma confusão aqui. A ordem dos bytes da rede não especifica como os bits são transmitidos pela rede. Ele especifica como os valores são armazenados nos campos de vários bytes.
Exemplo :
O campo Comprimento total é composto por dois bytes. Ele especifica em bytes o tamanho do pacote.
Digamos que temos o valor 500 para esse campo. Usando a Ordem de Bytes da Rede, ela será vista através do fio, transmitindo a transmissão da esquerda para a direita:
00000001 11110100
Se usássemos o formato little endian, ele seria visto através do fio da seguinte maneira:
11110100 00000001
Após a construção do pacote inteiro, os bits serão enviados começando com o bit mais baixo endereçado do cabeçalho (bit 0), para que a transmissão comece com o campo Versão .
Um ponto final a ser destacado aqui é que a ordem de bytes da rede é, como você mencionou, a Big Endian Order. Foi escolhido arbitrariamente para ter um formato comum para todos os protocolos e implementações de rede.
Portanto, caso o primeiro campo a ser ligado seja a versão, HL, Tipo, Comprimento total, Identificação e assim por diante. Big endian e little endian determinam apenas como os bits são armazenados nos campos do cabeçalho.
MUSR
Sim, você entendeu :)
dragosb
@MUSR: não, eles determinam a ordem em que os bytes em um campo de vários bytes são transmitidos.
EML
3
É muito fácil pensar que os pacotes da Internet são conectados de uma maneira muito simples "porta serial". Na prática, não há nada inerentemente serial sobre isso.
Se você pensar em alguns detalhes da interface, isso pode ficar mais claro:
O 100baseTX real embaralha blocos de 4 bits e os envia como 5 bits em série, mas os dados originais não são visíveis na saída; portanto, a pergunta sobre em que ordem eles vão não tem resposta. https://en.wikipedia.org/wiki/4B5B
Quando você envia um pacote através de uma interface de loopback, ele pode ser copiado no barramento do computador de 64 bits por vez; ou, de fato, apenas pelo remapeamento da memória, que seria realmente um pacote inteiro em paralelo.
É claro que o IP da porta paralela não é comum, mas ilustra o ponto; os outros dois são onipresentes.
Outros protocolos podem ser diferentes, mas a Ethernet transmite a maioria dos octetos / bytes significativos primeiro e dentro de cada byte menos significativo primeiro . Portanto, um campo de 16 bits é transmitido 8-9-10-11-12-13-14-15 - 0-1-2-3-4-5-6-7 (0 = bit menos significativo, 15 = mais bit significativo). Verifique as cláusulas 3.1.1, 3.2.6 e 3.3 da IEEE 802.3.
(Isso é para Ethernet puramente serial - dependendo da camada física, até oito bits podem ser transferidos simultaneamente. Além disso, a ordem dos bits é válida apenas para a camada não codificada 1).
O IPv4 também usa o octeto mais significativo primeiro, verifique a RFC 791. No entanto, a numeração nas RFCs do IETF está na ordem de transmissão com a numeração de bits inversa à Ethernet : Bit 0 = bit mais significativo = transmitido primeiro (quando não definido de outra forma).
Você confundiu octetos e a ordem dos bits deve ser: 7-6-5-4-3-2-1 15-14-13-12-11-10-9-8 o primeiro octeto é 0-7, o sétimo bit sendo o menor significativo.
Gopoi 8/10/19
@Gopoi Se você numerar os bits dessa maneira, estará certo. No entanto, geralmente "0" é o bit menos significativo (último na forma escrita humana) e "15" é o bit mais significativo (primeiro na forma escrita humana) - de acordo com o poder de dois valores.
Zac67 # 9/19
Eu sempre pensei na numeração de bits como a ordem de transmissão, pois os cabeçalhos de RFCs são mostrados dessa maneira. Quanto mais você sabe!
É muito fácil pensar que os pacotes da Internet são conectados de uma maneira muito simples "porta serial". Na prática, não há nada inerentemente serial sobre isso.
Se você pensar em alguns detalhes da interface, isso pode ficar mais claro:
É claro que o IP da porta paralela não é comum, mas ilustra o ponto; os outros dois são onipresentes.
espero que ajude
Jonathan.
fonte
Outros protocolos podem ser diferentes, mas a Ethernet transmite a maioria dos octetos / bytes significativos primeiro e dentro de cada byte menos significativo primeiro . Portanto, um campo de 16 bits é transmitido 8-9-10-11-12-13-14-15 - 0-1-2-3-4-5-6-7 (0 = bit menos significativo, 15 = mais bit significativo). Verifique as cláusulas 3.1.1, 3.2.6 e 3.3 da IEEE 802.3.
(Isso é para Ethernet puramente serial - dependendo da camada física, até oito bits podem ser transferidos simultaneamente. Além disso, a ordem dos bits é válida apenas para a camada não codificada 1).
O IPv4 também usa o octeto mais significativo primeiro, verifique a RFC 791. No entanto, a numeração nas RFCs do IETF está na ordem de transmissão com a numeração de bits inversa à Ethernet : Bit 0 = bit mais significativo = transmitido primeiro (quando não definido de outra forma).
fonte