Наскільки я розумію, мережевий комутатор обробляє трафік "розумно" таким чином, що він лише розповсюджує пакети до свого порту, де він знає, що розташований приймач (на відміну від Hub, який грубою силою надсилає всі дані до всіх портів).
Так, це правильно.
Отже, комутатору потрібно пам'ятати всі адреси хостів, підключених до нього. Якщо хост не знайдений, пакет надсилається до маршруту за замовчуванням (як правило, вгору посилання на більш широку мережу)
Ну, не зовсім. Це правда, що комутатор запам’ятовує, які хости підключені до якого порту (зазвичай, спостерігаючи за MAC-адресами пакетів, що надходять на порти). Однак перемикач зазвичай не знає про "маршрут за замовчуванням", оскільки це концепція від більш високого мережевого рівня. Перемикачі працюють на шарі 2 моделі OSI (шар зв’язку даних). "Маршрут за замовчуванням" - це концепція, що використовується для маршрутизації, що відбувається на рівні 3 (мережевий рівень).
Тому комутатор не має "маршруту за замовчуванням". Якщо він не знає MAC-адресу призначення, він просто відправляє пакет у всі порти (принаймні на початку, це все, що він може зробити - це відомо як "затоплення"). У будь-якому випадку в ефірній мережі кожен пакет повинен бути адресований на локальну MAC-адресу, інакше він ніколи не надійде. Пакети, надіслані "в Інтернет", як і раніше отримують місцеве призначення MAC-адреси, а саме адресу шлюзу за замовчуванням у мережі. Перемикач просто передає цей пакет до шлюзу за замовчуванням, а шлюз (який працює на рівні 3) потім зчитує "справжнє" призначення з IP-адреси, вбудованої в пакет, і відправляє його на своєму шляху.
Чи пам'ятає комутатор IP-адреси або MAC-адреси для обчислення своїх рішень?
Як було пояснено вище, комутатор є IP-агностичним, оскільки працює на нижньому рівні абстракції. Таким чином, тільки MAC-адреси.
Одне ускладнення: Як пояснено у відповіді wolfgangsz, є комутатори, які також працюють на рівні 3 (так звані багатошарові комутатори ). Це трохи складніше, і вони можуть обробляти IP-адреси та інше.