3G基站切换时TCP连接会发生什么?

8
我在使用3G网络上传数据时,Django的POST处理程序随机发生"IOError: request data read error"异常。关于为什么Django会引发这种特定的异常已经有了答案(总结:据说是客户端断开TCP连接时发生),但在我的情况下,我正在尝试解决潜在的问题。
从我的尝试来缩小问题范围,我发现:
  • 在WiFi上无法重现
  • 在仅使用GPRS时无法重现
  • 可以在各种类型的手机(包括Android和iPhone)和多个运营商上重现
  • 似乎在某些位置没有发生过
  • 似乎在其他位置发生过,尤其是当我看到数据速度指示器在3GHH+(UMTS、HSDPA和HSPA+)之间切换时
我的猜测是那里发生了基站切换。那么当3G在基站之间切换时,TCP连接会发生什么?

我不确定,但我相当肯定PDP上下文会被丢弃并重新建立,就像降级到旧技术(如EDGE和GPRS)时一样。新的PDP上下文会带来一个新的PPP会话,很可能也会有一个新的IP地址,因此这当然会中断TCP连接。 - Celada
@Celada:好的,但你说的是从3G切换到2G或反之,而不是在不同速度的3G之间切换。 - vartec
1个回答

4
在性能良好的网络中进行移交时,TCP连接本身通常不应看到任何连通性中断,即使出现了中断,TCP通常也会简单地退后并重试。实际上,在3G网络中,根据您正在移动的“基站”在运营商接入网络中连接到什么以及接入节点依次连接到运营商核心网络中的内容,有不同类型的移交。这也取决于核心网络的配置-有些网络将在访问节点和核心节点之间建立一对一映射,而有些网络将允许访问节点池共享核心节点,这将减少必须在一个核心节点和另一个核心节点之间转移的可能性。以下指南概述了3G网络中的移交类型:http://www.3g4g.co.uk/Tutorial/ZG/zg_handover.html

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接