linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
  • Введение
  • Уроки
  • How it works
  • Симулятор
  • База знаний
  • Собеседование
Index
Categories
All entries
Footer
linuxlab-УчебникиЦеныО платформеКонфиденциальность и куки
Copyright © 2026 LinuxLab. Все права защищены.
home/linux/kb/Сеть: L2 / L3/ethernet-frame

kb/network-l2-l3 ── Сеть: L2 / L3 ── intermediate

Ethernet frame

Ethernet-frame - единица передачи на L2: dst-MAC, src-MAC, ethertype, payload (обычно IP-пакет), FCS-checksum. Стандартный MTU = 1500 байт.

view as markdownaka: ethernet, ethernet-header, frame

Структура frame'а

[ Preamble ] [ Dst MAC ] [ Src MAC ] [ EtherType ] [    Payload    ] [ FCS ]
     7+1         6           6            2          46 - 1500          4
  • Preamble + SFD (8 байт) - синхронизация на физическом уровне; редко видно в tcpdump'е, его обычно отрезают
  • Dst MAC / Src MAC - см. mac-address
  • EtherType - что в payload:
    • 0x0800 - IPv4
    • 0x0806 - arp
    • 0x86DD - IPv6
    • 0x8100 - 802.1Q VLAN tag
  • Payload - собственно содержимое (IP-пакет в большинстве случаев)
  • FCS - Frame Check Sequence (CRC32) для контроля целостности; железо проверяет автоматически, в tcpdump обычно не видно

MTU и фрагментация

MTU (Maximum Transmission Unit) - максимальный payload-размер frame'а. Стандартный Ethernet - 1500 байт. Внутри:

  • 20 байт IPv4 header
  • 20 байт TCP header (без options)
  • 1460 байт доступно под TCP-payload - это MSS (Maximum Segment Size)

Если IP-пакет больше MTU и DF (Don't Fragment) не выставлен - роутер фрагментирует его на куски. В IPv6 фрагментация только на источнике (ICMP «Packet Too Big» → отправитель уменьшит размер).

Меньший MTU - VPN-туннели (IPSec/Wireguard ~1420), PPPoE (~1492), Jumbo - 9000 байт (внутри ДЦ для уменьшения header overhead).

Знать свой MTU критично для производительности - пакеты больше MTU дропаются без явной ошибки приложения (особенно через VPN).

VLAN tagging

Если frame идёт по transit-link'у с несколькими VLAN'ами, между Src MAC и EtherType вставляется 4-байтный 802.1Q-tag - VLAN ID + priority. EtherType становится 0x8100, реальный EtherType (0x0800 для IP) идёт после tag'а.

Видно как eth0.100 (VLAN 100 на eth0) или явно через tcpdump -e:

vlan 100, p 0, ethertype IPv4 (0x0800), 10.0.0.1 > 10.0.0.2: ...

Где увидеть

В arp-таблице - пары IP↔MAC. В выводе [[#cmd-tcpdump|tcpdump]] с флагом -e - header'ы frame'а. В /sys/class/net/<iface>/mtu - текущий MTU.

§ команды

bash
ip link show eth0 | awk '/mtu/ {print}'

MTU интерфейса

bash
sudo ip link set eth0 mtu 9000

Поменять MTU (jumbo frames внутри ДЦ); требует поддержки коммутаторов и обоих сторон

bash
sudo tcpdump -nei eth0 -c 5

tcpdump с -e показывает MAC-адреса source/destination в каждом frame'е

bash
ping -M do -s 1500 8.8.8.8

-M do: Don't Fragment; -s 1500: payload 1500 байт. Если упрётся - увидишь ICMP «frag needed»

bash
tracepath 8.8.8.8

Найти Path MTU - минимальный MTU на маршруте до цели

§ см. также

  • mac-addressMAC addressMAC - 48-битный аппаратный адрес сетевой карты, формат `aa:bb:cc:dd:ee:ff`. Уникален в пределах L2-сегмента, используется в [[ethernet-frame]] для адресации L2.
  • arpARP - Address Resolution ProtocolARP отвечает на вопрос «у кого MAC = ?» для конкретного IP в одной сети. Linux хранит результат в neighbor-таблице (`ip neigh`).
  • vlan-and-trunkVLAN и trunk - 802.1QVLAN - логическое разделение одного физического свитча на несколько L2. Tag 802.1Q добавляет 4 байта в Ethernet-frame с VLAN-ID (12 бит, до 4094 VLAN). Trunk = много VLAN на порте, access = один.
  • linux-bridgeLinux bridge - программный свитчBridge - программный L2-свитч в ядре Linux. Учит MAC в FDB, форвардит фреймы между интерфейсами. Основа Docker default network, KVM bridge, libvirt. С vlan_filtering эмулирует управляемый свитч.
  • mtu-and-pmtudMTU и Path MTU Discovery (PMTUD)MTU - максимум байт IP-пакета на интерфейсе. PMTUD ищет минимум на пути через ICMP "Fragmentation Needed". Если ICMP режут - blackhole больших пакетов. MSS clamping в iptables/nftables - стандартный фикс на туннелях VXLAN/IPsec.
Footer
linuxlab-
Copyright © 2026 LinuxLab. Все права защищены.
Учебники
Цены
О платформе
Конфиденциальность и куки