Parsen von IPv6-Erweiterungsheadern, die unbekannte Erweiterungen enthalten

Schreibe ich eine sehr einfache Netto-filter, und immer, wo ich will, um zu analysieren IPv6-Header übereinstimmen Dinge wie ICMPv6-Typen, TCP/UDP-port-Nummern, etc.

So, ich bin beim Lesen über die IPv6 Paket format in die Tiefe, und ich bin ein bisschen wie... naja... ich habe irgendwie gelesen hatte, es über und über erneut, um sicherzustellen, dass ich war tatsächlich Lesen es richtig.
Es scheint mir, dass Sie mit zu beginnen haben die 40-byte fixed-header und einen Blick auf seine next header-Feld. Dann haben Sie Blick auf das next header - Feld Nächster header, und so weiter, wie eine verknüpfte Liste, bis Sie das Ende erreichen. Wenn es die Nutzlast, wird es Folgen.

Das problem ist, dass es gibt keine Länge-Feld entweder in den festen Kopf oder das extension-Header. Sie haben eine Tabelle der extension header Typen und deren Größen, so dass Sie jagen diese Link-Liste am Ende.

Dies erscheint mir als eine seltsame, vielleicht auch eigenwilligen design. Was ist, wenn ich auf eine unbekannte extension-header geben? Was muss ich tun? Ich weiß nicht, seine Länge. Ich glaube, ich habe zu werfen das Paket aus und blockieren es, da in ein Netz-filter, so dass das Paket durch die ein Angreifer zu entziehen, das Netz filtern, indem Sie eine gefälschte header-Typ. Aber das bedeutet, dass, wenn das Protokoll wird immer erweitert, jedes einzelne Stück des IPv6-header-parsing-software, die jemals geschrieben werden müssen gleichzeitig aktualisiert, wenn die neue Erweiterung verwendet werden.

Also, wie kann ich analysieren, IPv6-Header, wenn ich nicht weiß die Erweiterungen Sie verwenden? Wie kann ich direkt einen header für eine unbekannte Erweiterung, da ich nicht weiß, seine Länge?

Kommentar zu dem Problem
Basierend auf dieser Frage, wie es aussieht bin ich nicht dumm, und ja ich lese diese Recht: es ist (in der realen Welt) unmöglich zum hinzufügen einer neuen extension header in IPv6. stackoverflow.com/questions/9847923/... Kommentarautor: AdamIerymenko
Und ja, es auch scheint, dass computing-header-Länge erfordert eine verknüpfte Liste traversal: stackoverflow.com/questions/14762193/... versteh mich nicht falsch. IPv6 ist genial und dringend erforderlich. Aber das scheint immer noch Knochen-geleitet. Kommentarautor: AdamIerymenko
Die Skillung (der Link im oberen Kommentar) sagt-Router sind eigentlich nicht Blick auf den Header, so sollte sich keine Gedanken, was Headern, die Sie hinzufügen. Nur die Ziel-Knoten Aussehen soll auf dem Header. Kommentarautor: Anders E. Andersen
Nur eine Anmerkung: "Haar-brained" ist eine ziemlich verwirrende Schreibweise, und "hare-brained" bevorzugt werden sollten (Quelle: tfd) Kommentarautor: pzkpfw
Soweit gibt es nur eine richtige Schreibweise, die "hare-brained'. Kommentarautor: Alan B

InformationsquelleAutor der Frage AdamIerymenko | 2013-07-08

Schreibe einen Kommentar