質問: インターネットのhttpの仕組みについて ネットワークの勉強で困ってます。 ホームページを見るときには、サーバのipと80番ポートで通信をするんだと思ってました。 そして、自分のパソコンにネットワーク監視ツールを入れて観察したところ 家からサーバには、サーバのipと80番ポート指定でリクエストしている事がわかりました。 でも、こちらのパソコンの受け口ポートが80番では無く、1331番ポートなど様々なポートで来ます。 サーバが家のパソコンに送信する場合は、家のパソコンのipと80番で返送するわけでなくて 家のパソコンが指定したポート番号で送信するのでしょうか? 今、家にはルータが動いているので、その為なのでしょうか? もしくは、普通に80番ポートで通信をしていてパソコン上だけが1331などのポートを使っているのでしょうか? どうか、よろしくお願いいたします。
回答: 私はネットワーク構築を仕事にしているものです。 一般的なwebサーバは80/tcpで待ち受けをしており、サーバ側のポートは常に固定されています。 #1でご回答の方はポートが動的であるような書かれ方をされていますが、私が普段触っているapache(unix/linuxの著名webサーバ)やiis(win2000やwinsv2003)で、通常設定のサーバがそのような動的動作をすることはありません。 一方クライアント側は、自分が使えるポートの中(1024番以降/tcp)で動的に開いているポートを使用して、webサーバの80/tcpへ接続しています。 これは、tcp/ip上でサービスを受ける側としては一般的な手法の1つで(アプリによってクライアント側もポートを固定する場合もあります)、#2の方が書かれていますがnatを使用する場合でもしない場合でも同様の動作をします。 結果、 webサーバip:80 --- クライアントip:1024以降で不定 という接続になっています。 なお、http通信では必ずクライアントが先にセッションを張るので、セッション確立の際にこちらの使用ポートをwebサーバに通知しています。なので、不定でもちゃんとセッションが確立します。