为什么提供http、raw和base64等不同模式显示TCP数据包的Payload

发布时间:2024-04-24 23:47:00

无论是Easy TCP Analysis还是Wireshark,分析TCP抓包文件都是基于TCP协议分析的,不管我们使用的七层协议是HTTP还是其它, 由于七层协议的数据包到了四层TCP协议后,如果七层协议的数据包过大,就可能会被拆成多个TCP数据包去发送,即使用TCP协议存在七层协议数据包被拆包和出现粘包的情况。

假设我们使用的七层协议是http协议,那么一个TCP数据包可能包含一个完整的http协议的数据包,也可能只包含一个完整http协议数据包的一部分(拆包), 也可能是一个http数据包的尾巴+另一个http数据包的开头(粘包)。

所以当我分析TCP数据包的时候,我们会看到,有些数据包能识别出是http协议,能识别出来往往是因为这个TCP数据包的Payload装的是http协议数据包的开头, 我们使用Wireshark分析单个TCP数据包也是如此。只不过Wireshark提供Follow Http Stream来使用七层的http协议编解码整个流。

Wireshark Follow Http Stream

Easy TCP Analysis如果能够识别出数据包的Payload是http协议,那么默认就会以http协议高亮显示Payload,当然,未来可能也会支持WebSocket协议, 以及提供Follow Http Stream、Follow WebSocket Stream功能。

如果识别不出,或者不是http协议,那么默认会以raw模式显示,raw模式指的是把Payload当成字符串显示。同时也会提供base64模式的的支持, 因为有一些用户自定义的七层协议,例如rpc框架的Dubbo协议,这些协议的数据包是一堆二进制,以raw模式显示就会是一堆乱码,提供base64模式可以将二进制转为base64字符串, 这样方便当我们有需要的时候,能够拷贝base64字符串,然后自己通过代码decode这个base64字符串获取二进制数组,然后就可以使用自定义协议的解码器解码出想要的信息,便于排查问题。

Easy TCP Analysis TCP chat package