2017-10-05 19 views
0

私はインターネット経由で2つのデバイス間の直接TCP \ IP接続を確立するアプリを書いてみたいです。 IPアドレスとポートを交換するサーバーがありますが、接続するだけで十分ですか?直接TCP IP接続には何が必要ですか?

両方のデバイスが1つのIP(同じWi-Fiホットスポットに接続されている)上にあるケースを処理するにはどうすればよいですか?

また、ホットスポットのポート転送設定なしでデバイス上のオープンポートにアクセスできるようになったことはわかりませんか?アプリの使用にポートが開いていますか?

答えて

1

ほとんどの場合、ポート転送については正しいです。

TCP/IPは、OSI Layer 4プロトコルです。既知のIPアドレスとポート番号を使用してサーバーアプリケーションにデータを送信できる必要があります。インターネット上では、通常、インターネットの残りの部分があなたに届くIPアドレスと直接インターフェースしないため、これはより複雑になります。これはあなたのパブリックIPアドレスです。 ISPから入手したモデムにはNAT が実装されているため、プライベートアドレスがパブリックアドレスに変換されます。モデムは、専用の転送ルールがない限り、すべてのTCP SYN要求をブロックします。

これは典型的なケースです。モデムをDMZモードに設定し、nginxのような独自のリバースプロキシを実装することもできます。

+0

素晴らしいですが、VoIPアプリケーションはどのように機能しますか?サーバーを通じてすべてのデータを転送するわけではありません。 –

+1

実装によって異なります。 VOIPは通常、レイヤ5プロトコルである[SIP](https://en.wikipedia.org/wiki/Session_Initiation_Protocol)を使用しています。したがって、TCPを使用する必要はなく、必要なレイヤ3プロトコルを使用できます。 TCPであっても、実装できる多くの異なるアーキテクチャがあります。その中には、電話機がTCPサーバ、クライアント、またはその両方であるものもあります。詳細については、オープンソースのVOIPサーバー[Asterisk](https://wiki.asterisk.org/wiki/display/AST/Asterisk+Architecture%2C+The+Big+Picture)をご覧ください。 –

+0

SIP!それが私が探していた言葉です!ちょうど1つの単語、そして今私は深く掘るべき場所を知っている!ありがとう –

0

Firebaseの上にWebRTCビルドが終了しました。

私の質問への実際の答え - STUN。

関連する問題