在尝试使 Java RMI 运行时,我遇到了一些令我困惑的网络行为。
我使用 netcat 连接到本地机器:
[my_machine]$ nc -w 1 192.168.0.100 60000 && echo success
success
我尝试对我的服务器执行同样的事情:
[my_machine]$ nc -w 1 my-servers-ip 60000 && echo success
除非我明确监听服务器套接字,否则这是行不通的:
[amazon_ec2]$ nc -l 60000
[my_machine]$ nc -w 1 my-servers-ip 60000 && echo success
success
对于失败的版本,SYN
数据包将收到一个RST, ACK
响应。
我对此不太了解,目前我只有问题中提到的那些荒诞理论。有什么想法吗?
可能有用的细节:
Local Machine (192.168.0.100) - Macbook
Remote Machine (Amazon EC2) - Amazon Linux AMI 2012.03
Security Group Settings:
22 (SSH) 0.0.0.0/0
1099 0.0.0.0/0
49152-65535 0.0.0.0/0
"iptables -L" shows no rules set
答案1
不是,对于本地或远程(路由)服务器,TCP 连接的工作方式相同。三次握手是相同的。
您可以检查
- 某些服务实际上正在监听端口 60000(
netstat
) - 该服务未配置为以某种方式拒绝非本地客户端
- 没有防火墙阻止流量