考虑这样的场景,设备使用NB-IoT发送CoAP数据包到服务器,服务器是Linux,作为服务器的Linux通常只有命令行。在这样的场景下想要捕获CoAP数据包进行分析。首先在设备端捕获是不现实了,只能在Linux服务器端捕获,只有命令行的情况下不能直接使用WireShark捕获分析数据包,那么就需要分两步走,第一步:使用tcpdump捕获数据并保存为文件,第二步:使用WireShark打开捕获的数据文件进行分析。
tcpdump捕获CoAP数据包
tcpdump -i eth1 -w coap.pcap "udp port 5683"
- -i eth1 指定捕获的网口
- -w coap.pcap 指定保存的文件名
- “udp port 5683” 过滤表达式,表示仅存储协议为UDP,端口为5683的数据包,丢弃其他数据包
scp拷贝文件到本地
scp [email protected]:~/coap.pcap ~/wireshark
- [email protected]:~/coap.pcap 服务器的ssh用户名,域名,文件路径
- ~/wireshark 本地存储路径
WireShark分析CoAP数据包
用WireShark打开拷贝到本地的coap.pcap文件。最新版(我用的v2.2.2)可以正确解析出CoAP协议的各个部分。