また、ある時間まで考えました。 それから疑いが忍び込んだ...そしてその後、私は多くの
ただし、Skype、ファイル転送用ICQ、トレントは、最終的に何らかの方法で直接接続を使用します。
どうやって? これについて話したいです。
すべての偶然の一致はランダムであり、数字は元々発明されました。
実際、外部サーバーがなければ、これは本当に非現実的です。 しかし、私たちを助ける「ハック」と「改造」があります。
私は一生懸命かみます。 私の説明のいくつかは現実と一致しないかもしれませんが、実際にはこの知識で十分なので、これはどのようにそして何が機能するかを理解するために行われます。
理論
NATは、IPv4を使用してインターネットに接続する能力を私たち一人一人に与えるものです。 IPv4アドレスを各コンピューターに配布する場合、それらは十分ではありません。
NATを使用すると、ネットワークに対してのみ特定のサービスを非表示にできます。ほとんどの場合、インターネットからコンピューターにアクセスできないのは、まさにそのためです。
パッシブモードでFTPサーバーに接続しているとします。
あなたの外部アドレス:43.12.102.14
あなたの内部アドレス:192.168.0.2
NATアドレス:192.168.0.1
IP 192.168.0.2からTCP接続を作成し、21ポートのアドレスの要求を作成します。
次に、要求はNATに分類され、その小さなテーブルにTCP接続内部IP 192.168.0.2、ポート21の通信が作成されます。
外向きに、ポート(たとえば、アドレスを持つ54321)も作成します。
そして、リクエストをポート21のFTPサーバーに転送します。
リクエストを受信したFTPサーバーは、リクエストがIP 43.12.102.14およびポート54321でインストールされていることを確認します。
これで、接続期間中、このポートはコンピューターのTCP接続のポート21へのフォワーダーになります。
接続を閉じるとすぐに、ポートは3〜10秒ハングし、NATテーブルから削除されます。
プログラム内のほとんどのUDP接続とTCP接続は、これらのハッキングによって作成され、常に接続を維持します。
練習する
たとえば、ICQに座っているときにコンピューター間の接続を作成する方法を説明します。
最初にICQサーバーへの接続を作成します。これにより、コンピューター上のポート(5191など)が開きます。他のコンピューターでは、番号5191のポートも開きます。
NATのこれらのユーザーのIPとポートは、たとえば次のようになります。
1ユーザー:12/43 / 102.14.146742
2ユーザー:12/23 / 102.15:61782
その後、ICQサーバーは各クライアントに外部IPアドレスと外部ポートを通知します。
ユーザー1は、この外部IP:ポート(43.12.102.15:61782)に接続し、内部ポート5191に接続します。
ユーザー2はIPへの接続に同意します。ユーザー1のポート(43.12.102.15:61782)は、NATからポート5191でユーザー1に転送されます。次に、ファイルが転送され、接続が閉じられます。 しばらくすると、外部ポートと内部ポートが使用されなくなり、接続が閉じられたことを確認したNATは、他の接続に使用するためにこのポートを削除します。
写真では次のようになります。
実装方法
もちろん、私たちのキャリアの最初に、各ユーザーに外部IPアドレスとポートを通知する外部サーバーがなかったわけではありません。
しかし、これらのソリューションには、たとえば、世界中に公開されているSTUNサーバーなどの実装があります。
ほとんどの場合、同じトレントで使用されるUDPプロトコル用に作成されます。 ただし、TCPプロトコルを実装するためのSTUNTサーバーがあります。
作成、作成、すべてがあなたの手にあります。
PS:すべてのNATがそのような接続を提供できるわけではありませんが、IP接続を監視するほとんどの閉じられたNATはISPサービスの提供には使用されません。
UDP:このコンテキストでは、動的IPは外部ではないが、優れたNATによって発行されるIPアドレスです。