Щоб завершити відповідь Девіда, комутатор дізнається, хто стоїть за портом, переглянувши MAC-адреси пакетів, отриманих на цьому порту. Коли вимикач включений, він нічого не знає. Після того, як пристрій A посилає пакет з порту 1 на пристрій B, комутатор дізнається, що пристрій A знаходиться за портом 1, і передає пакет у всі порти. Після того як пристрій B відповідає на A з порту 2, комутатор надсилає пакет лише на порт 1.
Це відношення MAC до порту зберігається в таблиці в комутаторі. Звичайно, багато пристроїв можуть стояти за одним портом (якщо приклад підключений до порту як приклад), тому може бути багато MAC-адрес, пов'язаних з одним портом.
Цей алгоритм порушується, коли таблиця недостатньо велика, щоб зберігати всі відносини (недостатньо пам'яті в комутаторі). У цьому випадку комутатор втрачає інформацію і починає відправляти пакети у всі порти. Це легко зробити (тепер ви знаєте, як зламати вашу мережу), підробляючи багато пакетів з різним MAC з одного порту. Це також можна зробити, підробляючи пакет з MAC пристрою, який ви хочете шпигувати, і комутатор почне надсилати вам трафік для цього пристрою.
Керовані комутатори можуть бути налаштовані на прийняття єдиного MAC від порту (або фіксованого номера). Якщо на цьому порту виявлено більше MAC, комутатор може відключити порт для захисту мережі або надіслати повідомлення адміністратору адміністратору.
Редагувати:
Щодо трафіку на YouTube, описаний вище алгоритм працює лише на одноадресному трафіку. Ефірне мовлення (ARP як приклад) та IP-трансляція (використовується іноді для потокової передачі) обробляються по-різному. Я не знаю, чи youtube використовує багатоадресну передачу, але це може бути випадок, коли ви можете нюхати трафік, який не належить вам.
Щодо трафіку веб-сторінок, це дивно, оскільки рукостискання TCP повинно було правильно встановити MAC на таблицю портів. Або мережева топологія каскадує безліч дуже дешевих комутаторів з невеликими столами, які завжди наповнені, або хтось возиться з мережею.