I understand the concept of Endianess regarding numbers because there the bit significance is well defined. But when applied to things like Ethernet frame or Mac address, things are so clear to me, because here we have only a sequence of bits, not a number. Yet terms like first byte, most significance byte or network byte ordering get thrown around without clarification.
My question actually composes of several but related questions, because I can't think of a better way to formulate it:
How is byte significance defined for an Ethernet frame? Does we count the byte starting from the MAC destination the most significance byte? I think that should be the case because I read that network byte ordering is big Endian, so the most significance byte gets transmitted first, which should be the MAC destination address.
How is byte significance defined for MAC address? Given a MAC address written as 00-14-22-01-23-45 , then I assume going from most significant byte to least significant byte is going from left to right? What counts as the first byte? If we say the first of something, does it mean we say the most significant of something?
If my computer is using Little Endian and the above Mac address is stored in the memory, then if my assumption is right, the memory offset 0x00 should store 45, because that's what Little Endian means, am I right?
Now if the above address is transmitted over the wire, because of Big-Endian, the memory offset 0x05 gets transmitted first, because it stores the most signicant byte of the address? That seems a little weird for me because I initially thought that we just transmit sequentially from the lowest memory offset to the highest memory offset.
When it comes to transmitting a bit within a byte, we should have two options: we transmit the least significant bit first, or the most transmit the most significant bit first. So shouldn't bit endianess play a role here?
How does the header look like at the recieving end? Does the recieving computer just store the first byte it received at the lowest memory address and so on and so forth, or does it know about byte significance automatically flip the bytes around? For example in this case if the first byte it recieved is 0x45, then does it store the value at 0x00, or knowing 0x45 should be the most signifant byte, automatically store the value at 0x05? ( Assuming the recieving end also uses little endian)