2015-04-15 4 views
-1

У меня есть этот сценарий: IP (например, 192.168.0.109). Можно выполнить некоторые запросы с одного и того же IP-адреса, но через разные порты? Больше, каждый порт должен быть из другой зоны. Что-то вроде прокси, но для портов.Как сделать несколько запросов с одного и того же IP-адреса, но с разными портами (каждый из другого места)

Итак, я хотел бы добиться чего-то вроде этого:

192.168.0.109:20000 -> Париж
192.168.0.109:20457 -> Лион
192.168.0.109:21341 -> Сидней

я прочитал кое-что о TCP Proxy, но я не уверен, что если это именно то, что я ищу.

Может ли кто-нибудь объяснить мне, если это возможно, и если да, расскажите мне весь процесс и каковы будут шаги, чтобы иметь что-то вроде этого?

+0

Должно быть задано в [Network Engineering] (http://networkengineering.stackexchange.com/). – nouney

+0

Я также отправлю вопрос там. Спасибо за голову ups –

+1

@Alexander, это по умолчанию. Если вы не привязываетесь при создании сокета, а просто «подключаетесь», как это делает большинство приложений, исходный порт всегда будет отличаться и быть случайным над определенным номером. Это необходимо для обеспечения уникальной сессии каждый раз. – Matt

ответ

2

Каждому новому TCP-соединению автоматически присваивается локальный IP-адрес и номер случайного порта из пула ephemeral ports ядра. Вы можете опционально установить bind(2) сокет на требуемый локальный IP-адрес и/или порт до connect -ий на сервер. Вы можете использовать bind() для желаемого IP-адреса и позволить ядру выбрать порт для вас.

+0

Итак, это может быть достигнуто, правильно? Не могли бы вы быть приятными и добавить некоторые подробности к вашему ответу? Например, что понадобится, если я хочу, чтобы это произошло на моем собственном IP-адресе? Нужен ли мне VPS? VPN? –

+0

Вам не нужно ничего особенного вне обычной маршрутизации в Интернет. Я предполагаю, что вы спрашиваете о программировании. Если да, прочитайте о программировании сокета. Если это касается конфигурации сети/устройства, вы должны перенести вопрос на http://networkengineering.stackexchange.com/, как было предложено. –

+0

@Remy, спасибо за редактирование. –

2

Попросите клиента создать socket и позвонить connect с информацией о сервере IP: Порт. В этом случае ОС автоматически предоставляет локальный IP-порт, к которому привязан клиент. Это поведение по умолчанию.

Если вы хотите, вы можете связать клиент с определенным IP-вызовом bind до connect. Вы можете оставить установленный порт Port равным 0, поэтому ОС по-прежнему будет выбирать для вас случайный локальный порт.

Теперь, когда вы хотите сделать другое соединение, просто выполните то же самое, что и выше. Больше ничего не требуется.

Итак, вы продолжаете создавать столько сокетов, сколько хотите, и создавать для них соединения. Они будут автоматически из выбранных «зон», к которым они привязаны.

+0

@Remy, спасибо, что сделал мой ответ намного лучше. – Prabhu