<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Guten Ip&amp;amp;Tcpheader-struct]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich verwende in meinem Programm bis jetzt erfolgreich einen WinPCap Packet-sniffer um eingehende Signale zu verarbeiten.<br />
Bis jetzt muss ich mich aber mühsam in einer Schleife durch den header-tastet um bis an das daten-segment zu kommen. Dabei ist die größe des headers ja im ip-header und tcp-header gespeichert! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Es wäre viel sauberer und schöner einfach die beiden werte auf den Teil mit den MAC Adressen draufzuaddieren.</p>
<p>Leider finde ich keinen vernünftigen struct der funktioniert.</p>
<p>Hier mal mein code:</p>
<pre><code class="language-cpp">struct iphdr // structure IP Header
{
	// little-endian
	unsigned char ihl:4; // IP header length
	unsigned char version:4;

	unsigned char tos; // Type of service
	unsigned short tot_len; // Total length
	unsigned short id; // Identification
	unsigned short frag_off; // Fragment Offset + Flags
	unsigned char ttl; // Time to life
	unsigned char protocol;
	unsigned short check; // Checksum
	unsigned int saddr; // Source address
	unsigned int daddr; // Destination address
};

struct tcphdr // structure TCP Header
{
	// little-endian
	unsigned short source; // port 
	unsigned short dest; // port 
	unsigned int seq; // Sequence number
	unsigned int ack_seq; // acknowledge sequence

	unsigned short res1:4, // Reserved 1 : 4 bits
					doff:4, // Data Offset
					fin:1, // Flag FINISH
					syn:1, // Flag SYNCHRONIZE
					rst:1, // Flag RESET
					psh:1, // Flag PUSH
					ack:1, // Flag ACKNOLEDGE
					urg:1, // Flag URGENT
					res2:2; // Reserved 2 : 2 bits (res1 + res2 = 6 bits reserved)

	unsigned short window;
	unsigned short check; // checksum
	unsigned short urg_ptr; // urgent
};

//Das waren die structs, hier der code

theIpHeader  = (iphdr*)(pkt_data+0xE);
theTcpHeader = (tcphdr*)(pkt_data+0xE+theIpHeader-&gt;ihl);
int zTotalHeaderLen = 0xE+theIpHeader-&gt;ihl+theTcpHeader-&gt;doff; 

&lt;- Funktioniert leider nicht, die header größe wird viel zu klein angegeben :-(
</code></pre>
<p>Natürlich sollte die Lösung portabel sein. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
<p>Vielen Dank schonmal!<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/209822/guten-ip-amp-tcpheader-struct</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Apr 2026 04:53:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/209822.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 03 Apr 2008 17:05:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Guten Ip&amp;amp;Tcpheader-struct on Thu, 03 Apr 2008 17:05:32 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich verwende in meinem Programm bis jetzt erfolgreich einen WinPCap Packet-sniffer um eingehende Signale zu verarbeiten.<br />
Bis jetzt muss ich mich aber mühsam in einer Schleife durch den header-tastet um bis an das daten-segment zu kommen. Dabei ist die größe des headers ja im ip-header und tcp-header gespeichert! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Es wäre viel sauberer und schöner einfach die beiden werte auf den Teil mit den MAC Adressen draufzuaddieren.</p>
<p>Leider finde ich keinen vernünftigen struct der funktioniert.</p>
<p>Hier mal mein code:</p>
<pre><code class="language-cpp">struct iphdr // structure IP Header
{
	// little-endian
	unsigned char ihl:4; // IP header length
	unsigned char version:4;

	unsigned char tos; // Type of service
	unsigned short tot_len; // Total length
	unsigned short id; // Identification
	unsigned short frag_off; // Fragment Offset + Flags
	unsigned char ttl; // Time to life
	unsigned char protocol;
	unsigned short check; // Checksum
	unsigned int saddr; // Source address
	unsigned int daddr; // Destination address
};

struct tcphdr // structure TCP Header
{
	// little-endian
	unsigned short source; // port 
	unsigned short dest; // port 
	unsigned int seq; // Sequence number
	unsigned int ack_seq; // acknowledge sequence

	unsigned short res1:4, // Reserved 1 : 4 bits
					doff:4, // Data Offset
					fin:1, // Flag FINISH
					syn:1, // Flag SYNCHRONIZE
					rst:1, // Flag RESET
					psh:1, // Flag PUSH
					ack:1, // Flag ACKNOLEDGE
					urg:1, // Flag URGENT
					res2:2; // Reserved 2 : 2 bits (res1 + res2 = 6 bits reserved)

	unsigned short window;
	unsigned short check; // checksum
	unsigned short urg_ptr; // urgent
};

//Das waren die structs, hier der code

theIpHeader  = (iphdr*)(pkt_data+0xE);
theTcpHeader = (tcphdr*)(pkt_data+0xE+theIpHeader-&gt;ihl);
int zTotalHeaderLen = 0xE+theIpHeader-&gt;ihl+theTcpHeader-&gt;doff; 

&lt;- Funktioniert leider nicht, die header größe wird viel zu klein angegeben :-(
</code></pre>
<p>Natürlich sollte die Lösung portabel sein. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
<p>Vielen Dank schonmal!<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1485963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1485963</guid><dc:creator><![CDATA[Listing]]></dc:creator><pubDate>Thu, 03 Apr 2008 17:05:32 GMT</pubDate></item><item><title><![CDATA[Reply to Guten Ip&amp;amp;Tcpheader-struct on Fri, 04 Apr 2008 11:48:41 GMT]]></title><description><![CDATA[<p>Das ist mir wirklich wichtig.<br />
Eine andere Lösung konnte ich bis jetzt auch leider nicht finden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1486395</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1486395</guid><dc:creator><![CDATA[Listing]]></dc:creator><pubDate>Fri, 04 Apr 2008 11:48:41 GMT</pubDate></item></channel></rss>