Ethernet — это широко используемая сетевая технология, составляющая основу большинства локальных сетей (LAN). Кадры Ethernet являются основными единицами передачи данных в сетях Ethernet. В этой статье мы углубимся в компоненты кадра Ethernet и уделим особое внимание тому, что следует сразу за начальным разделителем кадра (SFD). Мы рассмотрим различные методы и предоставим примеры кода, которые помогут вам понять структуру кадра Ethernet.
Что такое фреймы Ethernet.
Кадры Ethernet состоят из ряда полей, в которых инкапсулируются данные для передачи. Разделитель начального кадра (SFD) служит первым полем в кадре Ethernet. Это уникальная битовая последовательность, которая отмечает начало кадра. После идентификации SFD следующее поле зависит от типа кадра Ethernet.
- Кадр Ethernet II (DIX):
Ethernet II, также известный как формат кадра DIX (Digital, Intel, Xerox), является наиболее часто используемым типом кадра Ethernet. Следующим полем в кадре Ethernet II после SFD является MAC-адрес назначения, который указывает предполагаемого получателя кадра. Следующее поле — это MAC-адрес источника, указывающий отправителя кадра. После MAC-адресов следует поле типа кадра, указывающее тип полезной нагрузки. Наконец, полезная нагрузка кадра и последовательность проверки кадра (FCS) завершают кадр Ethernet II.
Вот пример фрагмента кода на Python для извлечения упомянутых выше полей из кадра Ethernet II:
eth_frame = "SFD+DestinationMAC+SourceMAC+FrameType+Payload+FCS"
sfd = eth_frame[0:8]
destination_mac = eth_frame[8:24]
source_mac = eth_frame[24:40]
frame_type = eth_frame[40:48]
payload = eth_frame[48:-4]
fcs = eth_frame[-4:]
- Кадр IEEE 802.3.
Другим форматом кадра Ethernet является IEEE 802.3, который обычно используется в старых сетях Ethernet. В кадре IEEE 802.3 за SFD следуют поля MAC-адрес назначения и MAC-адрес источника. После этого поле Длина/Тип указывает длину поля данных или тип используемого протокола. Поле данных и последовательность проверки кадра (FCS) дополняют кадр IEEE 802.3.
Вот пример фрагмента кода на Python для извлечения полей из кадра IEEE 802.3:
eth_frame = "SFD+DestinationMAC+SourceMAC+LengthType+Data+FCS"
sfd = eth_frame[0:8]
destination_mac = eth_frame[8:24]
source_mac = eth_frame[24:40]
length_type = eth_frame[40:48]
data = eth_frame[48:-4]
fcs = eth_frame[-4:]
В этой статье мы исследовали компоненты кадров Ethernet и сосредоточились на том, что следует сразу за начальным разделителем кадра (SFD). Мы обсудили два распространенных типа кадров Ethernet: Ethernet II (DIX) и IEEE 802.3, а также предоставили примеры кода на Python для извлечения соответствующих полей из каждого типа кадров. Понимание структуры кадров Ethernet необходимо сетевым инженерам и разработчикам, работающим с системами на базе Ethernet.