GPRS/3Gネットワークを介してモバイルスマートフォンで実行する必要があるアプリを構築しています。私はビット操作を行っているので、HTTPヘッダーを介して無駄になっているすべてのバイトis悪いです。私の地域のモバイルプロバイダーは、プロキシなどを多用しています。 1つのWebSocketは機能しません。
ポート80と443のHTTPは常に動作しているように見えますが、それは私がTCPソケット接続を行い、双方向通信を開始しますか?WhatsApp、ViberなどのモバイルアプリはHTTP接続を使用しないと思いますが、実装の詳細はわかりません。そして、彼らがネットワークを3G上で完璧に機能させるために何かをするのか、それともそのまま機能するのか。
TCPとHTTPは別物です。
TCPはトランスポート層です。定義上、アプリケーション層プロトコル(あなたの場合はHTTP)を引き継ぐ責任があります。 TCPはポート上で実行されません。これはポートのアービトレーターです。つまり、HTTPサーバーに接続するときは、TCPポートで接続します。 80. HTTPSに接続すると、TCPポート443を介して接続します。
HTTPとHTTPSは、任意のTCPポートで実行できます。80と443は一般的なポートです。必要に応じて、これらのポートで任意のアプリケーションをリッスンさせることができます。そうです。サーバーに接続できます。 HTTPの代わりに他のプロトコルを使用してポート80を介して、ただしサーバーが他のプロトコルを使用してそのポートでリッスンするように構成されている場合、およびHTTPまたはHTTPSがnotこれらのポートを使用するように構成されている場合のみ(その上でWebサーバーを実行しています)。
さて、あなたはあなたのプロバイダーがプロキシを利用していると言いました。ポート80または443を介して非HTTP/HTTPS接続を確立できますか?それはプロキシがどれだけ賢いかによります。パケット検査を実行している場合は、HTTPヘッダーを検証して、それらのポートを通過するトラフィックが実際にHTTPトラフィックであることを確認している可能性があります。偽造する方法はいくつかありますが、プロキシがトラフィックをどれだけ深く検査しているかによって異なります。プロキシがHTTP/HTTPSポートで非HTTP/HTTPSトラフィックをブロックしている場合、プロバイダーでのスクォーク以外にできることはほとんどありません(または場合によってはより高い価格を支払う)。
さまざまなモバイルアプリケーションがどのように通信するかということになると、それはすべてベンダーがそれらをどのように書いたかに依存します。ほとんどのモバイルアプリはスキンされたWebアプリであるため、ほとんどの場合、ポート80または443を介してHTTPまたはHTTPSをそれぞれ使用します。しかし、そうしなければならないという規則はなく、何らかの方法でパケットを盗聴しない限り、実際に知る方法はありません。
私はあなたの質問に答えたと思います。
あなたの質問を正しく理解していれば、次のように言い換えることができます。「ネットワークインフラストラクチャでHTTPトラフィックが特定のポートを通過できる場合、純粋なTCPも許可されますか(完全なHTTP準拠の操作や偽のHTTPヘッダーなし) )そのポートを渡すには?」
残念ながら、その答えは、「問題のネットワークがトラフィックをフィルタリングする方法に関して、まだ発見していない詳細に依存します」です。ポート番号だけに基づいてトラフィックをフィルタリングするネットワークインフラストラクチャは確かに存在するため、TCPペイロードがHTTPのように見えるかどうかに関係なく、ポート80または443を介したTCPトラフィックは機能する可能性があります。
ただし、HTTPプロキシを挿入したり、トラフィックに実際にHTTPヘッダーがあるかどうかを確認するためにディープパケットインスペクションを実行したりするネットワークは他にもあります。これらの種類のネットワークは、適切なHTTPではないトラフィックをブロックします。偽物を置くことで、これらのフィルターのいくつかを回避できるかもしれません…
GET / HTTP/1.0\r\n\r\n
…各クライアントからサーバーへのTCPストリームの先頭、および偽物…
HTTP/1.0 200 OK\r\n\r\n
…各サーバーからクライアントへのTCPストリームの先頭。しかし、そのような偽物は、完全なHTTPプロキシを介して機能させるには十分ではない可能性があります。