-2

Я прочитал ответ в этой ссылке:

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

И я задал себе вопрос - если «переадресация портов» передает определенный пакет на определенный компьютер через определенный порт, то почему то же самое не может быть достигнуто путем привязки программного обеспечения к порту?

Например. Почему следующий код в Python:

 soc = socket.socket()
 soc.bind(('0.0.0.0', 80))
 soc.listen(1)
 client_soc, address = soc.accept()

Разве это не то же самое, что переадресация портов на порт 80 для моего компьютера в локальной сети?

2 ответа2

2

Привязка процесса к порту - это то, что происходит внутри хоста, так что процесс будет получать данные, отправленные хосту через этот порт.

Переадресация портов связана с промежуточным узлом в пути, чтобы добраться до хоста. Если пакеты имеют свои адреса, измененные промежуточным узлом из-за NAPT, то узел за пределами промежуточного узла не может напрямую отправлять пакеты узлу на другой стороне узла, выполняющего NAPT. Промежуточный узел должен знать, что любой трафик, направленный на его адрес с определенным портом, должен быть отправлен на хост назначения. Это переадресация портов, которая на самом деле является просто способом сделать постоянную запись в таблице NAT.

0

Это не то же самое, что сделать перенос порта на порт 80 моего компьютера в локальной сети

Это абсолютно не то же самое.

Код, который вы указали, связывает порт на локальной машине. Это действие не зависит от пересылки всего трафика через порт конкретному клиенту. Вы можете привязать порт к каждому клиенту в вашей сети, но вы можете перенаправлять трафик с этого порта только одному клиенту в сети.

Привязка порта происходит на стороне клиента, но когда вы перенаправляете порт конкретному клиенту, вы не обязательно привязываете этот порт на клиенте. Клиент все еще должен иметь приложение или службу, установленную и настроенную для этого.

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