缘起 我们知道 一般网路中 以太网的帧长度不超过 1500字节(MTU),所以单个 tcp segment 最大为1460; 如果我们业务报文超过 1420 字节(tcp payload),就会被分成多个 segment。 那么如何在 编写 wireshark 插件时,拿到一个完整的业务报文呢? 解决办法 通过goolge,发现解决办法非常简单,只需要为pinfo.desegment_len 还需要的字节长度即可。 1 2 3 4 5 6 7 8 9 10 11 -- 在入口处 function slicer.dissector(tvb, pinfo, tree) ... local pdu_length = get_pdu_length(...) if pdu_length > tvb:len() then pinfo.desegment_len = pdu_length - tvb:len() else do_dissection(tvb, pifo, tree) end return end 如果不知道明确的长度,那我们也可以: 1 pinfo.desegment_len = DESEGMENT_ONE_MORE_SEGMENT 总结 通过 wireshark lua 插件的编写,发现很……

阅读全文