Wie rekonstruiere ich einen TCP-Stream aus mehreren IP-Paketen?

Ich arbeite an einem TUN-basierten VPN-Server, dessen Ziel es ist, empfangene Pakete zu analysieren, bevor sie an ihr Ziel weitergeleitet werden. Momentan empfange ich die IP-Pakete von einer TUN-Schnittstelle und sende sie einfach unverändert an ihr Ziel.

Ich verstehe, dass das Analysieren des Inhalts von UDP-Paketen so einfach wie das Entfernen der IP- und UDP-Header sein würde. Um jedoch den Inhalt des TCP-Verkehrs zu analysieren, müsste ich die Nachricht aus mehreren IP-Paketen rekonstruieren. Gibt es eine einfache Möglichkeit, dies zu tun, ohne TCP erneut zu implementieren? Gibt es für diese Aufgabe leicht zugängliche C / C ++ - Bibliotheken? Ich würde Linux-Systembibliotheken und / oder Open-Source-Bibliotheken bevorzugen, die nicht viral und nicht copyleft sind.

Ich habe bereits darüber nachgedacht, von jedem IP-Paket eine Kopie zu erstellen und die Ziel-IP der Kopie in localhost zu ändern, damit ein anderer Teil meines Servers diese TCP-Anforderungen und -Antworten möglicherweise vollständig rekonstruiert und ohne Header empfängt. Ich wäre jedoch nicht in der Lage, Ziel-IPs mit dem Verkehrsinhalt zu verknüpfen, was ich mir wünsche.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage