Является ли TCP Communication двусторонней связью? - PullRequest
4 голосов
/ 09 ноября 2011

Это действительно новый вопрос, касающийся связи TCP.

Является ли связь TCP двусторонней связью?

Позвольте мне привести сценарий: одна программа прослушивает порт TCP, скажем, порт 25. Внешняя программа подключается к IP-адресу первой программы (порт 25) через произвольный исходящий порт, например, порт 45000 * 1005.*

Поскольку первая программа просто прослушивает, означает ли это, что

  1. Первая программа может только получать данные и не отправлять обратно какие-либо данные через порт 25?
  2. Если этоможет отправлять данные, что защищает исходящий порт 45000 второго компьютера от вредоносных атак с первой программы через порт 25?Как я правильно знаю, брандмауэры предназначены только для входящих портов.

Любые ответы высоко ценятся

1 Ответ

6 голосов
/ 09 ноября 2011

TCP всегда двусторонний. Там нет «отправить и забыть», как с UDP. Первая программа должна открыть серверный сокет. Это означает, что он прослушивает порт 25 для SYN TCP (флаг, который сигнализирует об открытии соединения). Если ваша вторая программа подключается к порту 25 (от порта 45000), это соединение идентифицируется 4 значениями: IP вашего хоста, порт вашего хоста, IP удаленного хоста, порт удаленного хоста. В этот момент, когда выполняется трехстороннее рукопожатие (SYN, SYN ACK, ACK), первая программа получает клиентский сокет из возвращенного сокета сервера, который подключен к вашей второй программе. Так что да, как только соединение установлено, это двусторонняя связь, и вы уязвимы.

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

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

...