TCP ist ein Byte-Stream-Protokoll ist. Die Bytefolge, die von Ihrer HTTP-Anwendung gesendet wird, ist in TCP-Datensegmenten gekapselt, und der Bytedatenstrom wird neu erstellt, bevor die Daten an die Anwendung auf der anderen Seite übermittelt werden. Da Sie mit winpcap auf die TCP-Datensegmente zugreifen, müssen Sie zum Datenbereich des Segments gehen. Der Header von tcp hat eine feste Länge von 20 Bytes + ein optionaler Teil, den Sie mithilfe der winpcap-API ermitteln müssen.
Die Länge des Datenteils im TCP-Segment wird durch Subtraktion der tcp-Headerlänge (aus einem Feld im TCP-Segment) und der IP-Headerlänge (aus einem Feld im IP-Datagramm, das das TCP-Segment einkapselt) ermittelt. von der Gesamtlänge (von einem anderen Feld im IP-Datagramm erhalten).
Jetzt haben Sie also die gesamte Segmentlänge und die Länge des Datenteils innerhalb des Segments. Sie wissen also, wo die HTTP-Anfrage beginnt.
der Offset
total length-length of data part
or
length of ip-header + length of tcp header
i nicht winpcap verwendet haben. Sie müssen also herausfinden, wie Sie diese Felder mithilfe der API erhalten.
auch IP-Datagramme können weiter fragmentiert werden, aber ich erwarte, dass Sie nur neu zusammengestellten Datagramme mit dieser API zur Verfügung gestellt werden. Du bist startklar!