Существует ли простой способ маршрутизации IP-пакетов из пользовательского приложения Windows в сеть? - PullRequest
2 голосов
/ 18 ноября 2010

Я работаю над проектом, включающим USB-устройство, через которое мы будем получать ip-пакеты с удаленного компьютера.Мы назначаем удаленному ПК его IP-адрес.Я экспериментировал с отправкой необработанных ip-пакетов несколькими способами:

1 - необработанные сокеты: ping работает нормально, проблемы с отправкой tcp

2 - tun / tap W32: мне удалось добиться этогоДостаточно, чтобы отправить пинги и получить пинги обратно на устройство phy ethernet, но не смог прочитать их, используя ReadFile (...) в guid драйвера.

3 - winpcap: ping работает, выходит, tcp обнаруживаетсяна wireshark (так что я предполагаю, что он покидает компьютер), но я никогда не получаю подтверждения от моего syn.Я также обеспокоен тем, что если я получу подтверждение, стек Windows TCP отправит первое.

Наша цель - прозрачный проход от клиентского ПК к сети.Client <-wrapped ip packet-> [device] <-wrapped ip packet-> WinPC <- IP -> IpNetwork

Возможно, что я иду по этому поводу неправильно, кажется, это должно быть проще.

Я понимаю, что Windows, вероятно, не идеальная ОС для этого, однако я не могу контролировать ОС.

заранее спасибо

1 Ответ

1 голос
/ 19 ноября 2010

Исправлена ​​ошибка, из-за которой пакеты Syn Syn не были заблокированы. Оказалось, что я забыл включить псевдо-заголовок при вычислении контрольной суммы заголовка TCP.Теперь похоже, что рукопожатие TCP завершено, поэтому я называю эту проблему решенной.Если кто-то захочет рекомендовать лучший способ сделать это, не стесняйтесь отвечать.На данный момент похоже, что мы будем использовать метод winpcap.

Обновление: чтобы это работало без постоянных подключений по протоколу RST для Windows, необходимо включить общий доступ к Интернет-подключению (ICS) на адаптере, который вы отправляете пакетыиз.Кроме того, это сработало для нас.

...