PHP 侦听器未捕获 TCP 数据包

PHP 侦听器未捕获 TCP 数据包

我有一个设备(GPS 定位器),它通过给定的 IP 地址和给定的端口向我的服务器发送 TCP(我认为是)数据包。由于我只能通过 SSH 访问该服务器,因此我打开了两个会话并tcpdump在其中一个会话中运行(使用适当的参数),在第二个会话中运行我自己的侦听器(用 PHP 编写)。

当我从任何浏览器连接到该 IP 和端口时,我清楚地看到这两个 IPtcpdump和我自己监听器捕获的流量。因此,我认为一切正常。

然而,当我强制我的定位器向该 IP/端口发送数据时,它只tcpdump响应,显示他已经捕获了某物,而我自己的听众的输出仍然是空的。

我是网络和 TCP 方面的新手,所以我可能误以为这是 TCP 连接。有经验的人可以通过查看tcpdump捕获的内容来确认这一点吗:

10:43:37.028958 IP 87.111.103.7.2020 > 192.168.1.2.7777: Flags [S], seq 1457768261, win 5120, options [mss 1360,nop,wscale 0,nop,nop,TS[|tcp]>
10:43:37.029564 IP 192.168.1.2.7777 > 87.111.103.7.2020: Flags [S.], seq 1118512962, ack 1457768262, win 5792, options [mss 1460,nop,nop,TS[|tcp]>
10:43:37.526145 IP 87.111.103.7.2020 > 192.168.1.2.7777: Flags [.], ack 1, win 5200, options [nop,nop,TS val 79 ecr 35113125], length 0
10:43:37.526934 IP 192.168.1.2.7777 > 87.111.103.7.2020: Flags [P.], ack 1, win 362, options [nop,nop,TS val 35113175 ecr 79], length 152
10:43:38.225678 IP 87.111.103.7.2020 > 192.168.1.2.7777: Flags [.], ack 153, win 5048, options [nop,nop,TS val 80 ecr 35113175], length 0
10:43:43.765708 IP 87.111.103.7.2020 > 192.168.1.2.7777: Flags [P.], ack 153, win 5200, options [nop,nop,TS val 89 ecr 35113175], length 119
10:43:43.765768 IP 192.168.1.2.7777 > 87.111.103.7.2020: Flags [.], ack 120, win 362, options [nop,nop,TS val 35113799 ecr 89], length 0
10:43:44.445757 IP 87.111.103.7.2020 > 192.168.1.2.7777: Flags [P.], ack 153, win 5200, options [nop,nop,TS val 91 ecr 35113175], length 119
10:43:44.446014 IP 192.168.1.2.7777 > 87.111.103.7.2020: Flags [.], ack 120, win 362, options [nop,nop,TS val 35113867 ecr 91], length 0
10:47:38.675424 IP 192.168.1.2.7777 > 87.111.103.7.2020: Flags [F.], seq 153, ack 120, win 362, options [nop,nop,TS val 35137290 ecr 91], length 0
10:47:41.636064 IP 87.111.103.7.2020 > 192.168.1.2.7777: Flags [.], ack 154, win 5200, options [nop,nop,TS val 568 ecr 35137290], length 0
10:47:41.655520 IP 87.111.103.7.2020 > 192.168.1.2.7777: Flags [R.], seq 120, ack 154, win 5200, length 0

这真的是 TCP 连接(数据包类型)吗?如果是,那么有人知道为什么我的侦听器没有响应,而它在浏览器的 TCP 连接上正确响应?如果这不是 TCP 连接,那它是什么?我的侦听器应该侦听什么来捕获这种流量?

编辑:这里最让我困扰的是,来自我的本地化器的每个连接都标有tcpdumplength 0而响应总是有一定的长度)。但我注意到,浏览器连接也标有length 0,所以这可能不是一个真正的问题。

答案1

只回答最后一点(你说这是最令人担心的)

这是我所看到的:所有数据都有长度,所有没有数据(syn、ack、fin、rst)的长度为 0。看起来还不错。

87.111.103.7 port 2020      --      192.168.1.2 port 7777
                        syn ->
                        <- syn ack
                        ack ->

                        <-data
                        ack ->

                        data ->
                        <- ack 

                        data ->
                        <- ack 

                        <- fin

                        fin ->
                        rst ->

答案2

您的转储看起来不错。您的设备(我假设它是 192.168.1.2)发送长度大于 0 的数据包,并且您的服务器通过 0 字节 ACK 数据包确认收到。将它包含在 tcpdump 命令行中肯定会对您有所帮助-XX

tcpdump -XX port 2020

相关内容