我在TCP连接中面临非常奇怪的行为。 使用以下命令创建了侦听器:
ncat -4 -l 10000
发送数据:
telnet公共IP 10000
使用tcpdump
分析数据,并使用netstat
检查连接状态。当我发送数据包时(1、2、3、4、5 ....等等)。在服务器端仅接收到4或5个数据包,则什么也没有发生。
当netstat显示“已建立”连接状态时,tcpdump不显示任何即将到来的数据包。
ncat public-ip 10000
命令也会发生同样的情况,请使用它作为客户端。
当我将使用telnet命令wih ^] and quit
退出时,则telnet无法与服务器连接(错误:远程主机拒绝连接)。如果我将杀死ncat -4 -l 10000
命令并再次重新启动,则将从客户端(远程登录)建立连接,而服务器将仅接收4-5个数据包。
我已经通过this url
交叉检查了所有tcp参数任何人都可以知道服务器端发生了什么以及如何调试它吗?
编辑:1:
客户端计算机上的TCPDUMP
//Data-pkt-3
13:26:55.844538 IP (tos 0x10, ttl 64, id 37219, offset 0, flags [DF], proto TCP (6), length 55)
10.240.8.230.53839 > PUBLIC-IP.PORT: Flags [P.], cksum 0x9660 (correct), seq 9:12, ack 4, win 229, options [nop,nop,TS val 301276907 ecr 436759593], length 3
//Data-pkt-4
13:26:59.916512 IP (tos 0x10, ttl 64, id 37220, offset 0, flags [DF], proto TCP (6), length 55)
10.240.8.230.53839 > PUBLIC-IP.PORT: Flags [P.], cksum 0x8035 (correct), seq 12:15, ack 4, win 229, options [nop,nop,TS val 301277925 ecr 436763991], length 3
13:27:00.179644 IP (tos 0x10, ttl 64, id 37221, offset 0, flags [DF], proto TCP (6), length 55)
10.240.8.230.53839 > PUBLIC-IP.PORT: Flags [P.], cksum 0x7ff3 (correct), seq 12:15, ack 4, win 229, options [nop,nop,TS val 301277991 ecr 436763991], length 3
13:27:00.443650 IP (tos 0x10, ttl 64, id 37222, offset 0, flags [DF], proto TCP (6), length 55)
10.240.8.230.53839 > PUBLIC-IP.PORT: Flags [P.], cksum 0x7fb1 (correct), seq 12:15, ack 4, win 229, options [nop,nop,TS val 301278057 ecr 436763991], length 3
答案 0 :(得分:0)
确保iptables不会阻止您的连接:
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
还要验证您是否在tcpdump中捕获了正确的接口
运行以下命令以获取与tcpdump一起使用的接口的列表:
# ip a|grep :|egrep -v 'link|inet'|awk '{print $2}'|sed 's/://'
lo
enp0s31f6
wlp2s0
因此,您要尝试的dcpdump命令将被(有线)连接:
# tcpdump -i enp0s31f6
或(wifi):
# tcpdump -i wlp2s0
Linux上的接口名称可能不同。