В следующей статье рассказывается о трансляции сетевых адресов (NAT) и переадресации портов.

Что такое перенаправление портов и для чего оно используется?

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

1 ответ1

0

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

Предположим, что у нас с тобой будет телефонный разговор. Я могу позвонить вам, или вы можете позвонить мне. В любом случае мы сможем отправлять сообщения (предложения) туда и обратно, но есть разница в том, кто начинает вызов. Если я позвоню вам, это исходящее соединение для меня и входящее соединение для вас. Чтобы это было возможно, мне нужно сначала узнать ваш номер телефона. Когда вы берете трубку, вы получаете мой номер звонящего (это мой номер телефона). В целях объяснения позвольте нам сделать вид, что вам нужно знать мой номер телефона, чтобы поговорить со мной.

Теперь представьте, что наши телефонные звонки маршрутизируются через два других телефона (маршрутизатора), которые связаны со многими людьми:

You <----> Router 1 <----> Router 2 <----> Me
              ^               ^
              |               |
              v               v
             Many            Many
            Others          Others

Чтобы усложнить ситуацию, я знаю только номер телефона маршрутизатора 1, а не ваш личный номер. И наоборот, вы знаете только номер телефона маршрутизатора 2, а не мой личный номер. Когда я звоню тебе, у нас две проблемы:

  1. Маршрутизатор 1 каким-то образом должен знать, что вызов должен идти к вам, а не к одному из множества других, с которыми он соединяется.
  2. Маршрутизатор 2 каким-то образом должен знать, что когда вы отвечаете, предложение должно быть отправлено мне, а не кому-то другому.

Переадресация порта решает проблему 1. Вызов Super User - это услуга, которая по соглашению осуществляется через порт 42. Вы говорите маршрутизатору 1 переадресовывать вам все вызовы о суперпользователе, поэтому, когда я вызываю маршрутизатор 1 через порт 42, я могу поговорить с вами. Если вы не указали явно Маршрутизатору 1 сделать это, мы не сможем позвонить.

NAT решает проблему 2. Маршрутизатор 2 притворяется вызывающим абонентом, потому что ни вы, ни Маршрутизатор 1 не займитесь телефоном, если идентификатор звонящего неизвестен (мой номер телефона). Затем он вспоминает, что я фактический вызывающий абонент, поэтому, когда маршрутизатор 2 получает ответ от маршрутизатора 1, он знает, чтобы отправить его мне.

Ситуация в интернете практически такая же. Вам просто нужно мысленно заменить телефоны компьютерами, номера телефонов и идентификаторы звонящих по IP-адресам, а неизвестные номера телефонов зарезервированными IP-адресами (например, 192.168.*.* спектр).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .