I know (see https://en.wikipedia.org/wiki/Ethernet_frame) that an Ethernet frame includes a 7 byte preamble of 0x55s and a one byte start frame delimiter (SFD) 0xD5, for a total of 8 bytes before the start of the message. At the same time, it looks like the 64b/66b encoding on a 10Gb network (I've found this page helpful https://www.fmad.io/blog/10g-ethernet-layer1-64b-66b) will indicate the start of packet via setting the control bits 10 and setting the block type field to 0x78. It will then have 7 extra bytes of valid data in that control bits packet.
However, from what I understand these extra 7 bytes will actually be 6 bytes of preamble, followed by the SFD. This makes sense so that the Destination Mac can then be sent as the first bytes of the next 64 bit chunk (the first one with control bits 01), but it seems to break the Ethernet protocol of having a 7 byte preamble. Am I understanding this correctly or am I missing something? Is there any official documentation on this?
Moreover, the above case is only for when the start of packet is indicated by block type field 0x78. It can also be indicated by block type field to 0x33 or 0x66, both of which are followed by only 3 valid bytes in the control section. So what is the length of the Ethernet preamble in this case? Is it only 2 bytes so that the start of the Mac lines up correctly, 6 bytes like the above example, or the 7 bytes that I thought it should have been all along?
What's confusing me is that it seems like the packet control bits and control data should be totally independent from the Ethernet preamble, but it seems like they have been mixed together. Any documentation on this would be much appreciated.
Thanks!