Как восстановить поток TCP из нескольких IP-пакетов?

Я работаю на VPN-сервере на основе TUN, целью которого является анализ пакетов, которые он получает, прежде чем пересылать их по назначению. В настоящее время я получаю IP-пакеты от интерфейса TUN и просто отправляю их по назначению без изменений.

Я понимаю, что анализ содержимого пакетов UDP будет так же прост, как удаление заголовков IP и UDP. Однако для анализа содержимого трафика TCP мне необходимо восстановить сообщение из нескольких IP-пакетов. Есть ли простой способ сделать это без повторной реализации TCP? Существуют ли легкодоступные библиотеки C / C ++, предназначенные для этой задачи? Я бы предпочел системные библиотеки Linux и / или библиотеки с открытым исходным кодом, не вирусные / без авторского лева.

Одна вещь, которую я уже рассмотрел, - это создание копии каждого IP-пакета и изменение целевого IP-адреса копии на localhost, чтобы другая часть моего сервера могла получать эти TCP-запросы и ответы полностью восстановленными и без заголовков. Однако я не смог бы связать IP-адреса назначения с содержимым трафика, что мне и нужно.

Ответы на вопрос(2)

Ваш ответ на вопрос