После запроса запроса TCP-соединения к серверу, может ли клиент получить ответ на другом порту, сгенерированном сервером в его конце - PullRequest
0 голосов
/ 20 января 2012

Когда TCP-клиент запрашивает conn'n на порту прослушивания сервера, сервер принимает его и создает новый порт, предназначенный для этого conn'n с этим клиентом.Следовательно, клиент будет связываться с сервером по этому новому порту.

, если приведенное выше утверждение верно и возможно, то, как сервер передает вновь созданный порт клиенту.В ответ на запрос conn'n пакет от сервера к клиенту будет иметь какой порт в качестве исходного порта (порт прослушивания сервера ИЛИ новый порт, сгенерированный сервером для клиента).Примет ли клиент этот порт и вступит в силу или он выдаст ошибку?Мне нужно это для реализации архитектуры с двумя клиентами и одним сервером во встроенной системе, использующей стек lwip.

regards, ED

Ответы [ 2 ]

1 голос
/ 20 января 2012

Когда вы подключаетесь к серверу, вы получаете номер порта, который присваивается вам системой (если только вы не bind сокет перед подключением). Когда сетевой стек сервера отвечает на ваш запрос на подключение, «исходный» порт - это новый номер порта сервера, а «целевой» порт сообщения - ваш порт. Вот как сетевой стек на стороне клиента знает, какой порт имеет сервер.

Новый номер порта на сервере, используемый для вашего соединения, не может быть установлен или изменен реальной серверной программой, это сетевой стек на сервере, который просто захватывает доступный номер порта.

Редактировать : Вы также можете прочитать немного о том, как установлены соединения , например, трехстороннее рукопожатие.

1 голос
/ 20 января 2012

Сервер не создает новый порт.Он создает новое TCP соединение и отправляет свои ответные пакеты на IP-адрес и порт, с которого клиент отправил запрос на подключение.(Соединение TCP имеет IP-адрес и порт на каждой стороне.)

...