Сбой маршрутизатора NAT и P2P

Итак, у меня был этот спор с моим учителем сетей. Он сказал, что некоторые люди жалуются на сбой маршрутизатора из-за большого количества записей в таблицах NAT на маршрутизаторе.

Я не понял и спросил: "Если приложение использует один и тот же порт, почему происходит сбой маршрутизатора? У него должна быть только одна запись (pc-ip,pcport;public-ip,public-port)". И он сказал: "Неважно, использует ли он один и тот же порт".

Я понял, что NAT создает запись для каждого пакета, который проходит через него. Я предполагаю, что NAT с перегрузкой, как вы уже догадались.

Итак, вопросы:

  1. Как создаются записи nat? На основе пакета или соединения? Я имею в виду: предположим, я отправляю пакет udp. Маршрутизатор создает запись?

  2. Когда я запускаю TCP-соединение, маршрутизатор создает постоянную запись nat, пока соединение не закроется?

  3. Был ли мой учитель прав? Таблицу NAT можно перегружать, предполагая, что приложение на том же порту отправляет пакеты?

Заранее спасибо.

1 ответ

Решение
  1. За соединение (или за поток UDP)
  2. да
  3. Да. Например, ваш веб-браузер на одном внутреннем ПК может иметь несколько одновременных TCP-соединений, открытых одновременно для каждого из нескольких различных внешних веб-серверов. Для каждого соединения порт источника будет меняться (выбирается случайным образом), но порт назначения и IP-адрес назначения могут быть идентичны для нескольких соединений. Маршрутизатор, предназначенный для обслуживания двух или трех компьютеров в доме, может не справиться с количеством одновременных подключений, необходимых (например) в школе с сотнями очень загруженных компьютеров. Маршрутизаторы должны быть рассчитаны на ожидаемую нагрузку.

Если вы посмотрите на пример C source для TCP-клиента, описанный в Howto, вы увидите, что API "сокетов" не предоставляет средств для клиента, инициирующего соединение, для указания исходного порта.

Другие вопросы по тегам