Ground Sunlight

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

ユーザ用ツール

サイト用ツール


wsl2:interop

差分

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

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
次のリビジョン 両方とも次のリビジョン
wsl2:interop [2020/12/27 17:51]
y2sunlight [WLS2のリスニングポート]
wsl2:interop [2020/12/27 19:28]
y2sunlight [WSL2のリスニングポート]
行 92: 行 92:
  
  
-==== 仮想マシンのリスニングポート ====+=== WSL2のリスニングポート ===
  
-ポート番号を指定して待ち受けするには、そのためのAPIを利用しポート番号を確保する必要がある。逆にいうシステムは、どのポート番号が待ち受けに使われているのかを把握できる+WSL2では、仮想マシン側でリスニングされいるポート番号と同じポート番号を、ホスト側で動作しているwslhost.exeがリスニングします
  
 +例えば、仮想マシン側でポート80をリスニングしていると、ホスト側でも wslhost.exe がポート80をリスニングします。そして、 wslhost.exe は、受け取ったパケットを仮想ホスト側の同じポート番号に転送します。つまり、ホスト側がlocalhostの(仮想ホスト側がリスニングしていると同じ)ポート番号にアクセスすると、仮想ホスト側のネットワークサービスからは、eth0からのアクセスのように見えます。
  
-WSL2側で待ち受けが行われているポート番号をホスト側で動作しているwslhost.exeが代わって確保して待ち受けする。 
- 
- WSL2側でPort Xで待ち受けを行うと、win32側でもwslhost.exeがPort XをListen Portに指定して待ち受けする。つまり、localhostのPortXに対する接続はすべてwslhost.exeが受けることになる。wslhost.exeは、受け取ったパケットをなんらかの方法でWSL2側に転送する。WSL2の挙動をみるに、仮想ネットワーク経由での転送ではなく、WSL2側のネットワークサービスからは、localhostからのアクセスのように見える。 
-\\ 
  
  
行 118: 行 115:
  
 > TODO: > TODO:
 +
 + IPv4では、単独のアドレスではなく、127.0.0.0という特殊なネットワーク全てがlocalhostで、慣例的に「127.0.0.1」を自分自身のIPアドレスの数値表現として使う(ただし「127.0.0.0」に属するIPアドレスは全て自分自身を表す)。基本的にどんなシステムでも、localhostという名前は、DNSサーバなどの外部の名前解決プロトコルを使わずに「127.0.0.1」に解決できる。IPv6では、「::1」(下位1ビットのみが「1」で後は「0」のアドレス)が単独でlocalhostとして指定されており、IPv4のようにlocalhostはネットワークになっていない。
 +
 + 通常のIPアドレスやドメイン名を指定できるところであれば、localhostは指定可能だ。例えば、Webサーバが動作しているマシンで、Webブラウザから「http://localhost/」とすれば、同じマシンで動作しているWebサーバにアクセスできる。
 +
 + WSL 2が稼働しているとき、特定のポート番号で待ち受け(リッスン)している、HTTPサーバなどのTCP/IPアプリケーションに対しては、Win32側(ホストWindows側)からは、localhostを接続先として指定できる。「http://localhost:<ポート番号>/」でWSL 2側のHTTPサーバにアクセスが可能になる。
  
 \\ \\
wsl2/interop.txt · 最終更新: 2020/12/27 20:17 by y2sunlight