【问题标题】:Will mobile device network switch affect http communication?移动设备网络切换会影响http通信吗?
【发布时间】:2017-05-07 17:30:59
【问题描述】:
对于移动应用程序,可以假设网络可能是间歇性的,或者随着用户不断移动,网络可能会从一个切换到另一个。例如,您的设备已连接到 startbucks wifi,并且您在拿起咖啡走出商店之前正在使用该应用程序 -> 您的移动设备网络可能会从 wifi 切换到运营商网络、3G/4G/LTE。即使使用运营商网络本身,它也可能根据您所在位置的覆盖范围在 3G/4G/LTE 之间切换。
问题,
这种断断续续的网络,或者频繁的网络切换会影响http通信吗?
例如,通过 Wifi 发送了一个 http 请求,而在服务器处理请求时,设备已经切换到 4G。设备是否仍能收到响应?
如果是,Http 或 TCP 是如何设计来支持这种情况的?
如果否,我们是否应该尝试从应用层解决问题?以及如何?
【问题讨论】:
标签:
http
networking
mobile
tcp
【解决方案1】:
设备还能收到响应吗?
对于目前的做法,没有。切换网络后:
- 设备的公共 IP 地址已更改。
- TCP 连接是基于 IP 协议的,所以当前所有的 TCP 连接都会被破坏。
- HTTP 是基于 TCP 连接的,所以也会被销毁。
其实,你可以做一个简单的实验来验证这一点:把一个网页放到互联网上,让网络服务器延迟30秒的页面传递。在等待响应的同时访问此页面并切换网络。
然而,这是移动世界的一个经典问题,因此正在做一些工作来为移动设备提供一个恒定 IP,当设备从一个网络到另一个网络。您可以查看维基百科中的Mobile IP,了解有关各种技术和协议的更多信息。
如果否,我们是否应该尝试从应用层解决问题?
这取决于您是否可以容忍应用程序的网络中断。如果是静态网页的话,我觉得完全可以不用管这个问题,等Mobile IP以后的技术改进吧。如果是高度依赖网络的应用,比如在线视频或者股市应用,我觉得这个问题应该在应用层解决。
怎么做?
有 3 种方法可以修复/解决此问题(可能更多):
- 缓存。预取资源,以便在 TCP 连接被破坏并重新连接时,设备可以使用缓存的资源。这适用于在线音频/视频应用,但不适用于无法预取任何资源(例如实时股市数据)时。
- 将 TCP 重新连接作为第一优先级。检查您的代码,当 HTTP 因 TCP 连接被破坏而失败时,请尽早重新发送 HTTP 请求。
- 在发生网络中断时改善用户体验。