我正面临 RabbitMQ 服务器的奇怪行为(在 ubuntu 服务器 14.04.3 LTS 下)。
客户端是基于微型 MCU (Cortex-M3) 上的 lwip v1.3.2 的 MQTT 实现。当我的客户端使用其 IPv4 地址连接服务器时,它可以工作并且客户端-服务器 TCP 套接字具有正确的 [PSH+ACK]、[ACK] 序列。
但是当客户端通过我的路由器(端口 1883 上的 NAT 活动)连接时,我得到以下序列(在服务器端)。
服务器 tcpdump 端口 1883:
7 2015-10-01 12:24:30.962080 192.168.1.1 192.168.1.97 TCP 121 55061→1883 [PSH, ACK] Seq=1 Ack=1 Win=2920 Len=67
8 2015-10-01 12:24:30.962101 192.168.1.97 192.168.1.1 TCP 54 1883→55061 [ACK] Seq=1 Ack=68 Win=29200 Len=0
11 2015-10-01 12:24:30.968867 192.168.1.97 192.168.1.1 TCP 58 1883→55061 [PSH, ACK] Seq=1 Ack=68 Win=29200 Len=4
12 2015-10-01 12:24:30.971556 192.168.1.1 192.168.1.97 TCP 60 55061→1883 [ACK] Seq=68 Ack=5 Win=2916 Len=0
13 2015-10-01 12:24:30.989599 192.168.1.1 192.168.1.97 TCP 92 55061→1883 [PSH, ACK] Seq=68 Ack=5 Win=2916 Len=38
14 2015-10-01 12:24:31.171216 192.168.1.97 192.168.1.1 TCP 58 [TCP Retransmission] 1883→55061 [PSH, ACK] Seq=1 Ack=68 Win=29200 Len=4
15 2015-10-01 12:24:31.171411 192.168.1.1 192.168.1.97 TCP 60 [TCP Dup ACK 12#1] 55061→1883 [ACK] Seq=106 Ack=5 Win=2916 Len=0
请注意,它只发生在基于lwip的客户端上;我已经使用 node.js 下的 mqtt 模块成功测试了。
有人知道发送的数据包格式有什么问题吗?
谢谢,丹。