8

3G ネットワークにデータをアップロードしているときに、ランダムIOError: request data read errorに Django の POST ハンドラーに入ります。Django が特定の例外を発生させる理由については、既に回答済みです (要約: クライアントが TCP 接続を切断したときに発生するとされています)。ただし、私の場合、根本的な問題を解決しようとしています。

問題を絞り込む試みから、次のことがわかりました。

  • WiFiでは再現できません
  • GPRS のみで再現性がない
  • さまざまな種類のハンドセット (Android と iPhone の両方) と複数のキャリアで再現可能
  • 一部の場所では発生していないようです
  • 特にデータ速度インジケータがと(UMTS、HSDPA、および HSPA+)の間3Gで切り替わるのを見ることができたとき、他の場所で発生したようですHH+

私の勝手な推測では、そこで何が起きているかというと、タワーの切り替えです。では、3G がタワー間で切り替わると、TCP 接続はどうなるでしょうか?

4

1 に答える 1

4

通常、TCP 接続自体は、正常に動作しているネットワークでハンドオーバーするときに接続の中断を認識しないはずです。たとえ中断されたとしても、TCP は通常、単純にバックオフして再試行します。

移動元の「タワー」が事業者のアクセス ネットワークで接続されているものと、アクセス ノードが事業者のコア ネットワークで接続されているものに応じて、3G ネットワークには実際にはさまざまなタイプのハンドオーバーがあります。また、コア ネットワークの構成方法にも依存します。ネットワークによっては、アクセス ノードとコア ノードの間で 1 対 1 のマッピングが行われるものもあれば、アクセス ノードのプールがコア ノードを共有できるようになるものもあり、1 つのコア ノード間で転送する必要が生じる可能性が低くなります。そしてもう一つ。

次のガイドは、3G ネットワークでのハンドオーバー タイプの概要を説明しています。 http://www.3g4g.co.uk/Tutorial/ZG/zg_handover.html

于 2013-05-09T19:04:41.210 に答える