UDPとTCP一般に)の違いをかなり知っています(たとえば http:// www .onsip.com/about-voip/sip/udp-versus-tcp-for-voip )
質問は、トランスポートがTCP VOiP通信の下で特に利点があるので、どのような状況でSIPを使用するでしょうか?
多くの人は一般にUDPをvoipに関連付け、おそらくそのままにしておきますが、簡単に言えばvoipには2つの部分があります-接続と音声データ転送です。
SIPは非常に軽量なプロトコルです。接続が確立されると、誰かが電話をかけるというまれなイベントまで事実上アイドル状態のままになります。 TCP(UDPとは異なり)は、実際にサーバーへのトラフィックを減らす必要性をなくすことにより、
SIP over TCPを実行し、RTPにUDPを使用することをお勧めします).
私は仕方がありませんでしたが、私が見た明らかなことも指摘しました。例えば。サーバーに接続するデバイスの数。数が増えるにつれて、方程式はUDPに有利になります。ただし、その後、SIPユーザーエージェントが複数のコーデック、マルチメディア、ビデオ、および画面共有をカバーするように拡大することも考慮する必要があります。INVITEパケットは大きくなり始め、UDPシングルデータグラムサイズで実行される可能性がありますこれにより、TCPを優先して式が再び傾きます。
言われたことはすべて、あなたが答えを探していた質問に答えるのに十分な情報を持っていることを望みます。
お役に立てれば。
クレジット:onSipでの素晴らしい議論: https://www.onsip.com/blog/sip-via-udp-vs-tcp
SIP over TCPは、モバイルデバイスでUDPに比べて大きな利点があります。理由は、NATの使用と、ワイヤレスルーターのテーブルエントリの方法NATまたは、セルプロバイダーのルーターは、UDPとTCPの場合、一般にはるかに速くタイムアウトします。同じNATテーブルエントリを維持することは、呼び出しを確実に受信するために必要です。SIPキープアライブを定期的に送信して、NATテーブルエントリを維持する必要があります。キープアライブに必要な頻度は、UDPの場合(30秒ごとに)はるかに高いvs vs TCP(おそらく15分ごと)により、モバイルデバイスのバッテリー使用量が著しく増加します。VOIPクライアントを使用しているときにバッテリー使用量が大ヒットすることについて不満を言う人がいるのは、クライアントがUDPを使用しているためです。
したがって、TCPは、モバイルデバイスのUDPハンドダウンに勝ちます。
上記では、モバイルデバイスで確実に通話を受信できることを前提としていることに注意してください。あなたがしたいことが電話をかけることができるなら、それは別の話です。
メッセージが大きい場合(MTUサイズが200バイト以内)、RFC 3261セクション18.1.1では、TCPの使用が義務付けられています(正確には、「輻輳制御トランスポートプロトコル、 TCPとして)」。実際に、大量のヘッダーと複雑なリクエストURIを含む最初のINVITE
を送信するときにヒットしました。
TCPベースのプロトコルからのオーディオストリームを確実にアセンブルすることはできません。オーディオでは、パケットドロップのためにパケットを再送するよりも、パケットを失う方がはるかに優れています。音声はリアルタイムであり、正しく動作するためにUDPなどのプロトコルが必要です。パケット損失は音声を中断せず、品質を低下させるだけです。TCPの完全な配信は、音声を一切助けません。パケットを100%取得しても品質はありませんが、リアルタイムではありませんオーディオでは、データの整合性よりも品質を決定するのはタイミング(遅延、ジッター)です。
このsipは動作します[〜#〜] best [〜#〜]信号と制御が終わったときTCPしかし、音声データはUDP上にあります。
私は、1987年に日本で新しく登場したデジタルセルラーネットワーク用に最初のスマートフォンの1つを設計して以来、ネットワークプロトコルを介したデジタル音声の伝送に取り組んできました。 1987年以来、デジタル音声伝送の唯一の変更されていない側面は、ここで説明することです。オーディオ(音声)伝送のリアルタイムの性質と、それがシステム設計に与える影響は、私が生まれた恐竜の時代とまったく同じです。