Який розмір «внутрішнього проводника» кадру Ethernet? 1518 чи 1542?


22

Згідно з даною таблицею, тут сказано, що MTU = 1500 байт і що частина корисного навантаження становить 1500 - 42 байти або 1458 байт (<- це насправді неправильно!). Тепер на додаток до цього слід додати заголовки IPv4 та UDP, які є 28 байтами (20 IP + 8 UDP). Це залишає моє максимально можливе повідомлення програми до 1430 байт! Але шукаючи цей номер в Інтернеті, я бачу замість цього 1472. Чи я роблю цей розрахунок неправильно тут?

Все, що я хочу дізнатися, - це максимальне повідомлення програми, яке я можу надсилати по дроту без ризику фрагментації. Це, безумовно, не 1500, оскільки це включає заголовки кадру. Може хтось допоможе?


Плутанина в тому, що PAYLOAD насправді може становити 1500 байт, і це MTU. Отже, який розмір провідного пристрою для корисного навантаження 1500? З цієї таблиці вона може бути великою, як 1542 байти.

Таким чином, максимальний розмір повідомлень програми, що я можу надіслати, становить 1472 (1500 - 20 (ip) - 8 (udp)), максимум - розмір дроту 1542. Мене дивує, як все може настільки ускладнитися, коли вони насправді прості. І я не знаю, як хтось придумав число 1518, якщо таблиця говорить 1542.


Справжнє питання тут - що ви маєте на увазі під "розміром дроту" і що ви будете робити з цією інформацією? Ви намагаєтеся обчислити пакети в секунду?
Майк Пеннінгтон

@MikePennington Спроба визначити час транзиту в мережі. За допомогою розміру пакету та швидкості Ethernet (10 гігабіт) ви можете це обчислити.
chrisapotek

Відповіді:


26

Діаграма у Вікіпедії жахлива. Сподіваюся, те, що я збираюся написати, зрозуміліше.


Максимальна корисна навантаження в 802.3 Ethernet - 1500 байт.
Це дані, які ви намагаєтеся надсилати по дроту (і на що йдеться в MTU).
[payload]<- 1500 байт

Корисне навантаження інкапсульовано в кадр Ethernet (який додає вихідну / цільову MAC, тег VLAN, довжину та контрольну суму CRC. Це загалом 22 байти додаткових "матеріалів"
[SRC+DST+VLAN+LENGTH+[payload]+CRC]<- 1522 байт

Кадр передається по дроту - перш ніж ваша карта Ethernet зробить це, в основному, встає і кричить по-справжньому голосно, щоб переконатися, що ніхто більше не використовує провід (CSMA / CD) - Це роздільник преамбули та початкового кадру (SFD) - додаткові 8 байт, тому зараз ми маємо:
[Preamble+SFD+[Ethernet Frame]]<- 1530 байт

Нарешті, коли трансивер Ethernet передає кадр, йому потрібно 802.3 передати 12 байт мовчання ("Міжфреймовий проміжок"), перш ніж йому буде дозволено відправити наступний кадр.
[Preamble+SFD+[Ethernet Frame]+Silence]<- 1542 байти, передані на дроті.


Преамбула, SFD та Interframe Gap не враховуються як частина кадру. Вони є структурою підтримки самого протоколу Ethernet.

MTU застосовується до корисного навантаження - це найбільша одиниця даних, яку можна забити в пакет. Таким чином, пакет Ethernet з MTU 1500 байтів насправді буде кадром 1522 байта і 1542 байтом на дроті (якщо вважати, що є тег vLAN).

Отже, відповідь на ваше запитання - Який найбільший пакет, який я можу надсилати за 802.3 Ethernet без фрагментації? - це 1500 байт даних корисного навантаження .

ЯКЩО шар Ethernet може не бути вашим обмежуючим фактором. Щоб виявити, чи щось на цьому шляху обмежує MTU менше 1500 байт даних корисного навантаження, використовуйте одне з наступних:

  • Windows: ping hostname -f -l sizeofdata(техніку згадав Джон К)
  • BSD: ping -D -s sizeofdata hostname
  • Linux: ping -M do -s sizeofdata hostname

Найбільше значення, sizeofdataщо працює, - це MTU (над певним шляхом, який проходять ваші дані).


Однак я повинен виключати заголовки IP та UDP з цього 1500, правда? Отже, максимальна довжина повідомлення програми - 1472 для UDP.
chrisapotek

@chrisapotek Правильно - заголовки IP та UDP (або TCP, GRE тощо) є частиною корисного навантаження, яке потрапляє в рамку Ethernet
voretaq7

2
traceroute --mtu {target} у Linux також відобразить max mtu
Rqomey

ми повинні отримати трохи більше "фізичного"? en.wikipedia.org/wiki/8b/10b_encoding
SaveTheRbtz

@SaveTheRbtz о, будь ласка, ні - спуск на бінарне представництво досить болить мені в голові :-)
voretaq7

2

Це залежить від кількості даних, які ви вводите в кадр. Якщо ви помістите 1500 байт даних у кадр, ваш загальний розмір кадру становитиме 1518 байт. З 1472 байтами даних ви отримаєте загальний розмір кадру 1500 ..

http://en.wikipedia.org/wiki/Ethernet_frame

Якщо говорити, якщо ви справді зацікавлені в тестуванні фрагментації, хороший спосіб перевірити це - старий добрий пінг з кількома прапорами:

ping ім'я хоста -f -l sizeofdata

Прапор -f призведе до виходу з ладу ping, якщо пакет буде фрагментований. Ключовим для розуміння тут є "sizeofdata" - це кількість даних, яку ви можете помістити в повідомлення без фрагментації - тому, якщо ви надішлите корисний вантаж 1500, ви почнете фрагментацію, коли ви перейдете понад 1500 байт. Зверніть це на 1472, хоча (1500 - 18 байт накладних витрат), і ви побачите, як пінг проходить.


Вибачте, 1542 байти набагато вище стандартного кадру Ethernet, визначеного IEEE 802.3. Немальований навантаження 1500-байтної ефірної мережі становить 1518 байт (не враховуючи SFD / придатний для використання). Кадр, позначений 802,1q, має 1522 байти (ті ж застереження)
Майк Пеннінгтон,

Це дуже заплутано. MTU = 1500, але розмір кадру - 1542 ??? Тож MTU - це просто корисне навантаження, іншими словами, це розмір кадру 1542 за мінусом 42 додаткових матеріалів. Це правильно?
chrisapotek

Вибачте, я ввів це неправильно - я просто оновив відповідь, але якщо я все-таки помиляюся, просто дайте мені знати - це математика, яку я пам’ятаю: S
Univ426,

Вибачте, я мушу помилятися - я думав, що це зрозумів, але я чітко вимкнув свої номери, схоже, його 1518: Вибачте з цього приводу
Univ426

Ви не плутаєтеся не ви, а всі. Тож мої запитання тривають. Яка біса є різниця між розміром кадру MTU та Ethernet? Корисна навантаження становить 1500 чи менше?
chrisapotek

0

Для базового кадру Ethernet_II розмір кадру становить 1518 байт (увімкнено або вимкнено провід). Складається з 6 байт для кожної адреси призначення та джерела, 2 байти для поля типу між 46 та 1500 байтами для корисного навантаження (у вашому випадку весь IP-пакет з його IP-заголовком та заголовком UDP) та 4 байти для ФКС. На додаток до цього існує обмеження на те, наскільки невеликим може бути кадр (64 байти). Ось чому діапазон становить від 46 байт (додайте це до двох адрес і типу та FCS, і ви отримаєте 64 байти - 46 + 6 + 6 + 2 + 4 = 64).

Якщо кадр знаходиться в мережі, яка підтримує декілька vlans, і вам потрібно позначити кадр тегом vlan, перед полем типу додається ще одне додаткове поле. Це 4 байти. Це означає, що діапазон розмірів корисної навантаження може бути зменшений на 4 байти в нижній частині і все одно мати 64 байти як мінімум. Звідси 42. (Отже, 42 + 6 + 6 + 2 + 4 + 4 для тегу vlan = 64)

Отже, коли діапазон написано 1500-42 не означає 1500 мінус 42, це означає, що що-небудь від 1500 до 42 байтів є дійсним. Один провід, цей позначений кадр може бути розміром до 1522 байтів (якщо використовується лише один тег, або 1526, якщо використовуються два теги). Нічого з цього не пояснює число 1542.

Щоб дістатися до цього номера, потрібно розглянути можливість передачі кадру на Ethernet. В Ethernet LAN немає годин, тому передавач кадру надсилає серію 1 і 0, щоб встановити годинник. Це називається преамбулою. Не кожен слухач чує всю преамбулу, але більшість повинна чути якусь частину. Щоб сигналізувати про закінчення преамбули, один з останніх 8 бітів, що надсилаються, перегортається так, що замість 10101010 він стає 10101011. Цей байт називається початком роздільника кадру (SDF). Це технічно не корисно для зйомки з дроту, тому 7 байт преамбули та 1 байт SDF, як правило, не рахуються, але якби вони були нашими оригінальними 1518, це було б 1526. Ще не 1542.

Після того, як кадр був надісланий, на дроті виникає насильницька тиша, яка називається міжкадровим зазором. Це еквівалентно передачі в 12 байт. Це також не враховується і не фіксується, але якби воно було, ми отримали б 1538 байт. Єдиний спосіб перейти до 1542 року з 1538 року - це сказати, що кадр позначений тегами (тобто він містить 4-байтний тег плану). Phew, нарешті 1542 року.

Це все в термінології. Стандартний кадр - 1518 байт на дроті (що стосується будь-якого пристрою захоплення). Позначений кадр (один тег) становить 1522 байти на дроті. Вони займають 1538 байт або 1542 байти простору передачі на дроті.

Сподіваюся, що допоможе уточнити ..


-1

ні, ви не хочете, щоб траплялася фрагментація. Тому вам потрібно отримати фрагментарний пакет, але df встановити це так, як двостороння шосе з цілою купою напівпрозорів проти того ж шосе з цілою купою маленьких розумних автомобілів, які обидва збираються ті ж самі напівпризнаки несуть більше корисного навантаження, але вони повільніші і можуть спрощувати легші менші автомобілі, які перевозять менше, але швидше їздити MSS - це не те, що й MTU


1
Ця відповідь майже, але не зовсім, повністю не пов'язана з питанням.
kasperd
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.