Ground Sunlight

Windowsで作る - PHPプログラミングの開発環境

ユーザ用ツール

サイト用ツール


wsl2:interop

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
wsl2:interop [2020/12/27 17:51]
y2sunlight [WLS2のリスニングポート]
wsl2:interop [2020/12/27 20:17] (現在)
y2sunlight [WLS2の仮想ネットワーク]
行 89: 行 89:
 > 複数のWSL2ディストリビューションは同じネットワーク名前空間を使用し、ネットワークの分離はありません。''参考'' https://github.com/microsoft/WSL/issues/4304 > 複数のWSL2ディストリビューションは同じネットワーク名前空間を使用し、ネットワークの分離はありません。''参考'' https://github.com/microsoft/WSL/issues/4304
  
-\\+=== WSL2のリスニングポート ===
  
 +WSL2では、仮想マシン側でリスニングされているポート番号と同じポート番号を、ホスト側で動作しているwslhost.exeがリスニングします。
  
-==== 仮想マシンのリスニングポート ====+例えば、仮想マシン側でポート80をリスニングしていると、ホスト側でも wslhost.exe がポート80をリスニングします。そして、 wslhost.exe は、受け取ったパケットを仮想ホスト側同じポート番号に転送します。つまり、ホスト側がlocalhostの(仮想ホスト側がリスニングしていると同じ)ポート番号にアクセスすると、仮想ホスト側のネットワークサービスからは、eth0からのアクセスのように見えます。
  
-ポート番号を指定して待ち受けするには、そのためのAPIを利用して、ポート番号を確保する必要がある。逆にいうとシステムは、どのポート番号が待ち受けに使われているのかを把握できる。+=== localhost ===
  
 +IPv4では、ネットワークアドレス ''127.0.0.0'' が localhost の数値表現として扱われ、慣例的に末尾 1 の ''127.0.0.1'' を自分自身のIPアドレスの名前として使用されます。localhostという名前は、どんな名前解決システムも使うことなく 127.0.0.1 に解決で出来ます。IPv6では、''::1'' だけが localhost の数値表現として扱われ、IPv4のようにlocalhostはホスト名でありネットワークの表現ではありません。
  
-WSL2側で待ち受け行われているポート番号をト側で動作しているwslhost.exeが代わっ確保して待ち受けする。+WSL2が稼働しているとき、仮想マシン上の特定のポート番号をニングしている、HTTPサーバなどのTCP/IPアプリケーションに対し、ホストマシン側からは、localhost を接続先として指定すれば( http://localhost:<ポート番号>/ )、そのアプリケーションにアクセスすることが出来ます
  
- WSL2側でPort Xで待ち受けを行うと、win32側でもwslhost.exeがPort XをListen Portに指定して待ち受けする。つまり、localhostのPortXに対する接続はすべてwslhost.exeが受けることになる。wslhost.exeは、受け取ったパケットをなんらかの方法でWSL2側に転送する。WSL2の挙動をみるに、仮想ネットワーク経由での転送ではなく、WSL2側のネットワークサービスからは、localhostからのアクセスのように見える。 
 \\ \\
 +
  
  
行 115: 行 117:
 \\ \\
  
-==== localhost ==== 
- 
-> TODO: 
- 
-\\ 
  
 ===== WindowsからのLinuxコマンドを実行する ===== ===== WindowsからのLinuxコマンドを実行する =====
wsl2/interop.1609059091.txt.gz · 最終更新: 2020/12/27 17:51 by y2sunlight