在TCP数据包结构中计算有效负载

时间:2018-12-16 20:16:25

标签: c sockets

当我想分割一个TCP数据包并分别打印每个部分(eth / ip / tcp / payload)时,如何计算有效载荷的结束时间?

E2BIG

我尝试过

PrintData(Buffer, iphdrlen);
PrintData(Buffer + iphdrlen, tcpheader->data_offset*4);
PrintData(Buffer + iphdrlen + tcpheader->data_offset*4, ??? );

,但所有数据包均被截断。我要在这里传递哪个值?

问候

2 个答案:

答案 0 :(得分:1)

IP头包含IP头和有效负载大小的长度。 IP标头还包含IP标头大小字段,该字段等于32位字的数量

PrintData(Buffer + (iphdrlen * 4) + tcpheader->data_offset * 4, iplen - (iphdrlen * 4 + tcpheader->data_offset * 4));

我不理解,您忘记了将 iphdrlen 乘以4的偏移量

答案 1 :(得分:0)

TCP format给出了TCP头中每个字段的含义,包括诸如分组数据的起始位置和分组数据长度之类的详细信息。

请注意,TCP数据包标头中的每个字段均使用“网络顺序”