
ネットワーク、特にp2pシステムを操作するためのさまざまなプログラムを作成する場合、プログラムからコンピューターの外部IP(ビッグインターネットからコンピューターにアクセスできるアドレス)を見つける必要がある場合があります。 多くの場合、簡単な方法で外部Webサービスを使用する誘惑があります。httpを介してIPを返すか、自分で展開します。 この問題を解決する方法は実行可能ですが、それでも多くの欠点があります。
- 独自のサーバーを使用する場合は、対応するドメイン名と同時に、どこかでそれを保持および維持する必要があります。 障害が発生した場合、またはドメインを強制的に失効させた場合、p2pネットワーク全体に障害が発生します。
- 外部サーバーを使用する場合、システムの操作性と応答形式の両方に依存します。これらはまったく標準化されておらず、サーバー所有者はいつでも変更できます。 ネットワークにも同じ影響があります。
- 使用することをお勧めするhttp-tcpに基づいています。つまり、プロトコルは比較的重いため、接続などが必要です。 一般的には使用できますが、コンピューターとネットワークの両方のリソースオーバーランは明らかです。
上記に基づいて、サイトの所有者の自発性に依存せず、一般的にリソースを効率的に使用するために、外部IPを取得するための軽量で標準化されたプロトコルが必要であることが明らかになります。
WWW生成は非常に驚くでしょうが、そのようなプロトコルは長い間存在し、標準化されており、IPテレフォニー、および他のマルチメディアサービスのいくつかの場所で広く使用されています。 プロトコルはSTUNと呼ばれ、 rfc5389で指定されています 。
これはUDPに基づく軽量プロトコルであり、使用する場合、STUNを介して外部IPを取得するためにTCP接続などを確立する必要はありません。 これはwwwと比較して、コンピューティングリソースの負荷を軽減し、アドレスを決定する時間を短縮します。 それぞれ約50バイトの2つのパケットのみ-アドレスは既知です。
実際、STUNを使用すると、外部IPを特定できるだけでなく、現在のNATバリアの動作を調査することもできます。これは、複数の連続したNATデバイスで構成される場合があります。 しかし、STUNの高度な機能は、IPアドレスの取得に関するこの記事の範囲を超えているため、主なことに集中しましょう。
したがって、簡単で標準的なプロトコルがあることがわかります。 ここで、プログラムがリクエストを送信するSTUNサーバーが必要です。 幸いなことに、そのようなサーバーがあり、すべての自尊心のあるVOIP会社が1つを所有しています。 このようなサーバーは数百台ありますが、これは同様の目的のパブリックWebサーバーよりもはるかに多くなっています。 そしてすべてが標準であり、それぞれが答えを解読する際に「特別なアプローチ」を持つ必要はありません。 以下は、私たちに知られている公開STUNサーバーのリストです。
プロトコルとサーバーを決定したので、プログラムに簡単に統合できるSTUNクライアントをどこかで見つけることが残っています。 ここでは、 Emercoinプロジェクトからstun.cppファイルを取得することをお勧めします。 このファイルには、STUNを介して外部IPを決定するための完全なサブシステムが含まれています。 幸いなことに、このプロジェクトはオープンソースであり、GPLの下でライセンスされています。
このファイルにはGetExternalIPbySTUN()関数が含まれています。この関数は、定義済みのSTUNサーバーのリストを、それらのいずれかから応答を受信するまでループで擬似ランダムにポーリングします。 したがって、一部のサーバーで障害が発生すると、サブシステムの速度が低下しますが、サービス拒否は発生しません。 また、リストには200を超えるサーバーが含まれているため、すべてのサーバーが同時に障害を起こす可能性は無視できるようです。
リストをクロールする擬似ランダムな順序により、すべてのクライアントの速度が同時に低下する一部のサーバーの障害に対して、このような構成がないことが保証されます。 さらに、このアルゴリズムは複数のサーバーにリクエストを分散するため、専用サーバーの過負荷が解消されます。 つまり、負荷はサーバープール全体に均等に分散されます。
リクエストごとにランダムIDを生成することで、リクエストを匿名化する手段も講じられています。 サーバーの分散と組み合わせて、サーバーの所有者がp2pネットワークを「計算」することはほとんど不可能になります。 受信するリクエストは0.5%未満であり、リクエストをIPテレフォニー機器からのリクエストと明確に区別することはできません。
以下は、私たちに知られている形式のパブリックSTUNサーバーのリストです。
サーバー:ポート iphone-stun.strato-iphone.dehaps478
numb.viagenie.cahaps478
sip1.lakedestiny.cordiaip.comhaps478
stun.12connect.com {478
stun.12voip.com {478
stun.1cbit.rureg478
stun.1und1.dehaps478
stun.2talk.co.nzhaps478
stun.2talk.comhaps478
stun.3clogic.com {478
stun.3cx.com {478
stun.726.comhaps478
stun.a-mm.tv {478
stun.aa.net.ukhaps478
stun.aceweb.com {478
stun.acrobits.czhaps478
stun.acronis.com opin478
stun.actionvoip.com {478
stun.advfn.com {478
stun.aeta-audio.com {478
stun.aeta.com {478
stun.allflac.com opin478
stun.anlx.net liver478
stun.antisip.com {478
stun.avigora.comhaps478
stun.avigora.frreg478
stun.b2b2c.cahaps478
stun.bahnhof.net REG478
stun.barracuda.com {478
stun.bcs2005.netverse478
stun.beam.proreg478
stun.bitburger.dehaps478
stun.bluesip.netpany4747
stun.bomgar.com {478
stun.botonakis.com ∗ 478
stun.budgetphone.nl {478
stun.budgetsip.com {478
stun.cablenet-as.nethaps478
stun.callromania.rohaps478
stun.callwithus.comhaps478
stun.cheapvoip.com {478
stun.cloopen.com {478
stun.cognitoys.com {478
stun.comfi.com {478
stun.commpeak.com {478
stun.communigate.com {478
stun.comrex.com {478
stun.comtube.comhaps478
stun.comtube.rureg478
stun.connecteddata.com {478
stun.cope.eshaps478
stun.counterpath.com {478
stun.counterpath.nethaps478
stun.crimeastar.net {478
stun.dcalling.dehaps478
stun.demos.rureg478
stun.demos.su {478
stun.dls.net ∗ 478
stun.dokom.net opin478
stun.dowlatow.rureg478
stun.duocom.eshaps478
stun.dus.net
stun.e-fon.chhaps478
stun.easemob.com {478
stun.easycall.plreg478
stun.easyvoip.com {478
stun.eibach.dehaps478
stun.ekiga.net ∗ 478
stun.ekir.dehaps478
stun.elitetele.com {478
stun.emu.ee {478
stun.engineeredarts.co.ukhaps478
stun.eoni.com {478
stun.epygi.com {478
stun.faktortel.com.auhaps478
stun.fbsbx.com {478
stun.fh-stralsund.dehaps478
stun.fmbaros.rureg478
stun.fmo.dehaps478
stun.freecall.com {478
stun.freeswitch.org {478
stun.freevoipdeal.com {478
stun.genymotion.com {478
stun.gmx.dehaps478
stun.gmx.net {478
stun.gnunet.org {478
stun.gradwell.com {478
stun.halonet.plhaps478
stun.highfidelity.iohaps478
stun.hoiio.comhaps478
stun.hosteurope.dehaps478
stun.i-stroy.rureg478
stun.ideasip.com {478
stun.imweb.iohaps478
stun.infra.net ∗ 478
stun.innovaphone.comhaps478
stun.instantteleseminar.comhaps478
stun.internetcalls.comhaps478
stun.intervoip.com {478
stun.ipcomms.net {478
stun.ipfire.org opin478
stun.ippi.com {478
stun.ippi.frreg478
stun.it1.hrrouble478
stun.ivao.aerorouble478
stun.jabbim.czhaps478
stun.jumblo.comhaps478
stun.justvoip.com {478
stun.kaospilot.dk {478
stun.kaseya.com {478
stun.kaznpu.kzhaps478
stun.kiwilink.co.nzause478
stun.kuaibo.com {478
stun.l.google.com:19302
stun.lamobo.orghaps478
stun.levigo.dehaps478
stun.lindab.com {478
stun.linphone.org opin478
stun.linx.net {478
stun.liveo.frreg478
stun.lowratevoip.com {478
stun.lundimatin.fr {478
stun.maestroconference.com {478
stun.mangotele.com {478
stun.mgn.ru {478
stun.mit.dehaps478
stun.miwifi.com ∗ 478
stun.mixer.com ∗ 478
stun.modulus.grreg478
stun.mrmondialisation.org opin478
stun.myfreecams.comhaps478
stun.myvoiptraffic.com {478
stun.mywatson.ithaps478
stun.nacsworld.com {478
stun.nas.net {478
stun.nautile.nchaps478
stun.netappel.com {478
stun.nextcloud.com {478
stun.nfon.net opin478
stun.ngine.dehaps478
stun.noblogs.orghaps478
stun.node4.co.ukhaps478
stun.nonoh.netreg478
stun.nottingham.ac.ukhaps478
stun.nova.ishaps478
stun.onesuite.com opin478
stun.onthenet.com.auhaps478
stun.ooma.com {478
stun.oovoo.com {478
stun.ozekiphone.comhaps478
stun.personal-voip.dehaps478
stun.petcube.com {478
stun.pexip.com {478
stun.phone.com opin478
stun.pidgin.imhaps478
stun.pjsip.org {478
stun.planete.net ∗ 478
stun.poivy.com {478
stun.powervoip.com {478
stun.ppdi.comhaps478
stun.rackco.comreg478
stun.redworks.nl {478
stun.ringostat.com {478
stun.rmf.plrouble478
stun.rockenstein.dehaps478
stun.rolmail.net ∗ 478
stun.rudtp.ru ∗ 478
stun.russian-club.net ∗ 478
stun.rynga.com {478
stun.sainf.ru ∗ 478
stun.schlund.dehaps478
stun.sigmavoip.com {478
stun.sip.ushaps478
stun.sipdiscount.com {478
stun.sipgate.net:10000
stun.sipgate.netreg478
stun.siplogin.dehaps478
stun.sipnet.net {478
stun.sipnet.rureg478
stun.siportal.itrouble478
stun.sippeer.dkhaps478
stun.siptraffic.com {478
stun.sma.dehaps478
stun.smartvoip.com {478
stun.smsdiscount.com {478
stun.snafu.dehaps478
stun.solcon.nl {478
stun.solnet.chhaps478
stun.sonetel.com {478
stun.sonetel.net {478
stun.sovtest.rureg478
stun.speedy.com.arhaps478
stun.spoiltheprincess.com {478
stun.srce.hrreg478
stun.ssl7.net {478
stun.stunprotocol.org {478
stun.swissquote.com {478
stun.t-online.dehaps478
stun.talks.byhaps478
stun.tel.lu {478
stun.telbo.comhaps478
stun.telefacil.com {478
stun.threema.chhaps478
stun.tng.dehaps478
stun.trueconf.ru {478
stun.twt.itrouble478
stun.ucsb.edu {478
stun.ucw.czhaps478
stun.uiscom.rureg478
stun.uls.co.zahaps478
stun.unseen.isreg478
stun.up.edu.phhaps478
stun.usfamily.net opin478
stun.uucall.comhaps478
stun.veoh.com ∗ 478
stun.vipgroup.net REG478
stun.viva.grreg478
stun.vivox.com ∗ 478
stun.vline.com ∗ 478
stun.vmi.sehaps478
stun.vo.lu {478
stun.vodafone.rohaps478
stun.voicetrading.com {478
stun.voip.aebc.comhaps478
stun.voip.blackberry.com {478
stun.voip.eutelia.ithaps478
stun.voiparound.com {478
stun.voipblast.com {478
stun.voipbuster.com {478
stun.voipbusterpro.com {478
stun.voipcheap.co.ukhaps478
stun.voipcheap.com {478
stun.voipdiscount.com {478
stun.voipfibre.com {478
stun.voipgain.com {478
stun.voipgate.com {478
stun.voipinfocenter.com {478
stun.voipplanet.nl {478
stun.voippro.com {478
stun.voipraider.com {478
stun.voipstunt.com {478
stun.voipwise.com {478
stun.voipzoom.com {478
stun.voxgratia.org opin478
stun.voxox.com {478
stun.voztele.com {478
stun.wcoil.com {478
stun.webcalldirect.com {478
stun.whc.nethaps478
stun.whoi.edu {478
stun.wifirst.netpany4747
stun.wtfismyip.com {478
stun.wwdl.nethaps478
stun.xn ---- 8sbcoa5btidn9i.xn-p1ai:3478
stun.xten.com ∗ 478
stun.xtratelecom.eshaps478
stun.yy.com {478
stun.zadarma.com {478
stun.zepter.rureg478
stun.zoiper.com opin478
stun1.faktortel.com.auhaps478
stun2.faktortel.com.auhaps478
stun1.l.google.com:19302
stun2.l.google.com:19302
stun3.l.google.com:19302
stun4.l.google.com:19302