私の場合、OS Xでは、
Ruby on Rails server on port 80(using RVM)
rvmsudo Rails -p 80
Lsofを使用して、ポート80で実行されているものを確認します
Sudo lsof -i:80
次に、出力に「Ruby」、「firefox」、「Google」が表示されます。
ポートでリッスンできるプロセスは1つだけだといつも聞いています。これらすべてが同時にポート80を使用するにはどうすればよいですか? FirefoxとChromeがポートを使用する方法は、Railsがポートを使用する方法とどのように異なりますか?
Sudo lsof -i
とSudo lsof -iTCP
について学び、試してみて、 "Webブラウザーはタブごとに異なる送信ポートを使用しますか?" を読んだ後、私は次の出力を読んでいるだけだと思います。 lsof
が正しくありません。
次に例を示します。
$ Sudo lsof -iTCP:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
...
firefox xxxx user xxxxxx IPv4 xxxxxxxxx xxxxxx TCP 192.168.0.100:12345->stackoverflow.com:http (ESTABLISHED)
この例とSudo lsof -i
からの他の出力を見ると、Firefoxがリモートサーバーのtoポート80に接続しているため、Firefoxからのこの行が出力に表示されることはかなり明らかだと思いますfromローカルポート12345。Firefoxがリモートサーバーに接続していませんfromローカルポート80。
ローカルサーバーがポート80でリッスンしているときに、Firefoxのようなクライアントがポート80から接続できるかどうかはわかりませんが、少なくともここで起こっていることは、その考えに異議を唱えるものではないようです。 Firefoxがやっています。
Sudo lsof -i:80 -s TCP:^LISTEN
は、ローカルクライアントがローカルポート80を使用して何かに接続しない限り、リモートコンピューターのポート80への接続を示します。どのローカルポートが使用されているかをリストするだけのオプションがないように見えるのは奇妙です。
通常、すべてのブラウザ(クライアント側)はWebサーバー(サーバー側)のポート80に接続します。したがって、サーバー側では、ポート80のみがリスニング状態になります。ブラウザは、Webサーバーのポート80への任意のTCP接続を使用します。