Deaktivieren Sie die UDP-Prüfsummenvalidierung beim Empfang

603
Micah Hunsberger

Ich habe eine Quelle, die UDP-Pakete mit ungültigen Prüfsummen-Headern sendet, und ich habe keine Kontrolle über die Quelle. Ich kann auf Wireshark sehen, dass diese Pakete den Ziel-Host erreichen, aber die Anwendung nimmt sie wegen der ungültigen udp-Prüfsumme nicht in Empfang. Ich möchte, dass eine Anwendung auf dem Host (Windows Server 2012) diese Pakete empfängt und mit einer gültigen Prüfsumme erneut sendet, damit die Anwendung die Pakete aufnimmt.

Ich habe versucht, das .NET-Socket-Objekt mit SocketType RAW und ProtocolType IP zu verwenden, aber es ignoriert auch die Pakete.

0

1 Antwort auf die Frage

0
Austin Hemmelgarn

Ihr Ansatz bei der Verwendung von RAW-Steckdosen ist tatsächlich nicht zu weit von dem entfernt, was Sie brauchen.

Höchstwahrscheinlich hat Ihr System UDP-Prüfsummen auf die Netzwerkkarte übertragen, was bedeutet, dass die Netzwerkkarte die Prüfsummenprüfung durchführt, bevor das Betriebssystem das Paket überhaupt erkennt . Dies ist aus Leistungsgründen großartig, bedeutet aber in Ihrem Fall, dass Sie buchstäblich keine Option haben, um auf diese Pakete zuzugreifen.

Leider ist es bei jedem Betriebssystem etwas anders, zu erfahren, ob diese Option aktiviert ist. Unter Linux können Sie ethtooldie Befehlszeile überprüfen (es gibt keine mir bekannte GUI-Methode). Unter Windows ist es auf der Registerkarte "Erweitert" der Treibereigenschaften für die Netzwerkkarte verborgen (Sie können es jedoch möglicherweise nicht dort sehen oder steuern, je nach Treiber).

Ich ging auf die erweiterten Konfigurationsoptionen für den Adapter ein und deaktivierte das Abladen von UDP-Prüfsummen sowie das Abladen von IP-Prüfsummen. Ich bekomme keine anderen Ergebnisse. Ich kann die Pakete immer noch in Wireshark sehen, aber ich kann nicht von PowerShell oder einer anderen Anwendung abgerufen werden. Micah Hunsberger vor 6 Jahren 0