「Session Traversal Utilities for NAT (STUN)」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
 
(同じ利用者による、間の2版が非表示)
20行目: 20行目:
  
 
# ゲームサーバーになる人がSTUNクライアントとしてSTUNサーバーに接続する
 
# ゲームサーバーになる人がSTUNクライアントとしてSTUNサーバーに接続する
#* この際にTCP接続ではルーターはサーバーからの応答を受信するために一時的にポートを開放しサーバーに通知している。
+
#* この際にTCPやUDPなどのIP接続では[[ルーター]]は[[サーバー]]からの応答を受信するために一時的にポートを開放しサーバーに通知しています。これを転用するのがSTUNの最終目的です。
 
# STUNサーバーはSTUNクライアントにルーターが一時的に開放したIPアドレスとポート番号を返す。
 
# STUNサーバーはSTUNクライアントにルーターが一時的に開放したIPアドレスとポート番号を返す。
#* これによりSTUNクライアントは自分自身のIPアドレスとポート番号を知ることができる
+
#* これによりSTUNクライアントは自分自身のIPアドレスとポート番号を知ることができます。
 
# STUNクライアントは自分自身のIPアドレスとポート番号でゲームサーバーを起動する
 
# STUNクライアントは自分自身のIPアドレスとポート番号でゲームサーバーを起動する
# TCPセッション中でTCPは使えないのでTCPセッション中にUDPのパケットを流すことで通信する
+
#* ただし外部からゲームサーバー(STUNクライアント)にTCPでは接続はできない。
#* UDPでは不便なのでUDPでTCP風の通信をする「SCTP」などが考案された。
+
#* しかたがないのでゲームサーバー(STUNクライアント)にはUDPで接続する(一方的にパケットを送りつける)
 +
#* ぶっちゃけUDPでは不便なのでUDPでTCP風の通信を実現する「[[SCTP]]」などが考案された。
  
 
== 外部リンク ==
 
== 外部リンク ==
 
* https://datatracker.ietf.org/doc/html/rfc8489
 
* https://datatracker.ietf.org/doc/html/rfc8489

2023年10月17日 (火) 03:24時点における最新版

Session Traversal Utilities for NAT (STUN)とは、NATトラバーサルを扱う上で、他のプロトコルのツールの役割を果たすプロトコルです。

STUNはエンドポイントがNATによって割り当てられたIPアドレスとポートを決定するために使用することができます。 また、2つのエンドポイント間の接続性をチェックしたり、NATバインディングを維持するためのキープアライブ・プロトコルとしても使用できます。 STUNは、既存の多くのNATで動作し、NATに特別な動作を要求することはありません。

概要[編集 | ソースを編集]

STUNは別々のNAT(ルーター)の内側にいる端末同士で通信する方法として考案されたものです。

2000年頃のサーバーが貧弱だったころのオンラインゲームで人気になりました。 2000年ごろのオンラインゲームではゲーム会社の予算の関係で、 ゲーム会社が用意するロビーサーバーで人集めをし、 ゲームが開始するとロビーに集まった誰か1人のPCがサーバー(兼クライアント)になり、他のメンバーはそこに接続する方式が主流でした。 いわゆるWinMXやWinnyなどのファイル共有ソフトと類似した技術です。

ここで問題になったのが「サーバーになるPCのルーターのポート開放」でした。 ファイル共有ソフトと同じですね。

この問題を解決する方法として人気になったのがTCPの特性を利用したSTUNでした。

  1. ゲームサーバーになる人がSTUNクライアントとしてSTUNサーバーに接続する
    • この際にTCPやUDPなどのIP接続ではルーターサーバーからの応答を受信するために一時的にポートを開放しサーバーに通知しています。これを転用するのがSTUNの最終目的です。
  2. STUNサーバーはSTUNクライアントにルーターが一時的に開放したIPアドレスとポート番号を返す。
    • これによりSTUNクライアントは自分自身のIPアドレスとポート番号を知ることができます。
  3. STUNクライアントは自分自身のIPアドレスとポート番号でゲームサーバーを起動する
    • ただし外部からゲームサーバー(STUNクライアント)にTCPでは接続はできない。
    • しかたがないのでゲームサーバー(STUNクライアント)にはUDPで接続する(一方的にパケットを送りつける)
    • ぶっちゃけUDPでは不便なのでUDPでTCP風の通信を実現する「SCTP」などが考案された。

外部リンク[編集 | ソースを編集]