Linux: как отправить TCP-пакет с определенного порта? - PullRequest
2 голосов
/ 17 января 2011

Как открыть необработанный сокет для отправки с определенного порта TCP? Я хочу, чтобы все мои соединения всегда проходили через ряд портов ниже временных.

Ответы [ 2 ]

6 голосов
/ 17 января 2011

Если вы используете raw сокетов, просто введите правильный исходный порт TCP в заголовок пакета.

Если вместо этого вы используете интерфейс сокетов TCP (socket(), connect() и друзья), то вы можете установить порт источника, вызвав системный вызов bind() для клиента. сокет - точно так же, как вы устанавливаете порт прослушивания для сокета сервера.

1 голос
/ 17 января 2011

Создание TCP-соединения с использованием необработанных сокетов находится где-то между трудным и невозможным; вам нужно будет реализовать весь протокол tcp в вашей программе AND , также не позволяя ядру отправлять свои собственные ответы на пакеты (если у ядра есть IP-адрес, связанный с этим адресом на этом интерфейсе).

Это, вероятно, не то, что вы хотите. Однако, если вы этого захотите, отправлять кадры tcp с любого порта источника, который вам нужен, тривиально, так как вы можете указать его в заголовке tcp, что, конечно, если вы реализуете свой собственный уровень TCP, надо понимать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...