Существует большое сообщение здесь о различиях между двумя от члена команды IIS.
Один протест, которому я советовал бы, состоит в том, что для WebForms, необходимо быть осторожными при использовании Маршрутизации. Я записал демонстрационную реализацию того, как Вы использовали бы маршрутизация с WebForms, который обращается к этим проблемам и надо надеяться помогает ответить на Ваш вопрос.
Вы не говорите, на какой платформе вы работаете, но если вы работаете на Linux, я бы открыл интерфейс tun / tap и получил IP-пакеты обратно в ядро в качестве реального сетевого интерфейса, чтобы ядро могло делать все эти хитрые вещи TCP.
Вот как (например) OpenVPN работает - он получает необработанные IP-пакеты по UDP или TCP и туннелирует их обратно в ядро через интерфейс tun / tap.
Я думаю, что теперь есть интерфейс tun / tap для Windows, который был разработан для порта OpenVPN в Windows.
Я знаю, что это напрямую не связано с Python, но если вы хотите выполнять тяжелую сетевую обработку, вам следует рассмотреть Erlang вместо Python. Просто предложение ... вы всегда можете попробовать сделать это с Twisted ... если вы любите приключения (и у вас много времени на вашей стороне); -)
Возможно, вы сможете использовать модуль ctypes для импорта lwip и его повторного использования.
Взглянув на Scapy , похоже, что он может справиться с этими низкоуровневыми ситуациями. Я сам не использовал его, поэтому не могу подтвердить, что он выполняет то, что вы объяснили; Я только просмотрел документацию.
Если вы уже настроены на использование программного обеспечения на другом конце сокета, которое пересылает вам TCP-пакеты, то, возможно, TCPWatch покажет вам, как получить SYN-пакеты. SCAPY, безусловно, отлично подходит для отправки именно тех пакетов, которые вам нужны, но я не уверен, что он будет работать как прокси.
http://hathawaymix.org/Software/TCPWatch
Однако, если вы не привязаны к тому, что находится на отправляющем конце, затем рассмотрите возможность использования Twisted Conch или Paramiko для перенаправления SSH. Даже если вам не нужно шифрование, вы все равно можете использовать его с blowfish, который мало влияет на ваш процессор. Это не означает, что вам нужен Conch на другом конце, поскольку SSH стандартизирован, поэтому любое программное обеспечение SSH должно работать. В мире SSH это обычно называется «перенаправление портов». и люди используют терминальный клиент SSH для входа на сервер SSH и настройки туннеля переадресации портов. Конч и Парамико позволяют встроить это в приложение Python, так что нет необходимости в терминальном клиенте SSH.