当我想分割一个TCP数据包并分别打印每个部分(eth / ip / tcp / payload)时,如何计算有效载荷的结束时间?
E2BIG
我尝试过
PrintData(Buffer, iphdrlen);
PrintData(Buffer + iphdrlen, tcpheader->data_offset*4);
PrintData(Buffer + iphdrlen + tcpheader->data_offset*4, ??? );
,但所有数据包均被截断。我要在这里传递哪个值?
问候
答案 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数据包标头中的每个字段均使用“网络顺序”