Android网络问题-有线以太网可以传递ICMP ping,但无法建立TCP连接?当连接到2个网络时,未使用正确的网络

gk7wooem  于 2023-05-05  发布在  Android
关注(0)|答案(1)|浏览(218)

Android平板电脑配置有有线以太网连接(通过USB集线器)到路由器w/out互联网连接,并且还从不同的路由器连接到WLAN,在该路由器上可以获得互联网。在此配置中,我们将获得良好的互联网连接,可以ping路由器(以及其LAN上的其他设备),但不能与路由器建立TCP连接,例如,拉出路由器的网页。(网络之间没有地址冲突。)
所有的连接工作(当然除了互联网),如果我们把平板电脑上的路由器的WiFi.我还被告知(但要到明天才能测试),将路由器的空WAN端口连接到互联网连接的有线LAN,可以使Android连接到路由器的LAN。
当连接没有互联网时,Android如何路由的一些问题?在什么情况下ICMP ping可以工作,但TCP连接不可能?(这似乎不是MSS/MTU的问题。
编辑:注意到traceroute确实显示了发送给有线路由器的数据包在无线路由器上死亡。
具体来说,Android显示
Enet:IP192.168.8.239网关192.168.8.1掩码255.255.255.0
WiFi:IP10.2.234.131网关10.2.234.1掩码255.255.255.0
但看起来Android一次只有一个“网络”处于活动状态。而且这两个网络都有路由规则,可以将所有流量发送到它们的方式。我想指定一个跨接口的路由规则,比如将Wifi网络设置为活动状态,并添加一个路由,如192.168.8.0/24-〉eth0:0.0.0.0,但文档说如果我添加一个具有不同接口的路由,它会抛出IllegalArgumentException。
我看到的唯一替代方案是在CAPABILITY_INTERNET和TRANSPORT_ETHERNET之间来回切换活动网络,并试图组织应用程序流量,以便在时间上永远不会有任何重叠??
感谢任何见解!

svgewumm

svgewumm1#

我将标记这是一个答案,即使在这种情况下,Android的网络行为仍然有一些方面我仍然不明白。
如上所述,Android只允许两个网络中的一个在任何给定时间处于活动状态。我还没有找到系统用于决定在任何给定时间依赖哪个网络的指标的详细说明,尽管在我的示例中,Android确定的互联网连接的缺乏在系统不愿意使用硬连线互联网连接中起着重要作用。系统API确实允许应用强制使用特定网络,因此在上述方案中,请求TRANSPORT_ETHERNET网络可以强制应用连接到硬连线连接上。但Android是否可以通过设备的WiFi和以太网保持同步TCP连接的基本答案似乎是:没有。
剩下的问题是,为什么ICMP ping在不支持TCP连接的非活动Android网络上工作。也许激活是在传输层介导的,这样可以在任何时刻唤醒的非活动接口对连接的设备来说都是活动的?

相关问题